From 3541b0f330159d5a700543a18a9f19040f91e4fc Mon Sep 17 00:00:00 2001 From: "aao-release-bot[bot]" <280565558+aao-release-bot[bot]@users.noreply.github.com> Date: Fri, 22 May 2026 22:48:29 +0000 Subject: [PATCH] chore: snapshot docs for v3.0.13 --- dist/docs/3.0.13/aao/aao-admins.mdx | 60 + dist/docs/3.0.13/aao/addie-tools.mdx | 1708 +++++++++++++++ dist/docs/3.0.13/aao/connect-addie.mdx | 156 ++ dist/docs/3.0.13/aao/directory-api.mdx | 245 +++ dist/docs/3.0.13/aao/org-admins.mdx | 76 + dist/docs/3.0.13/aao/users.mdx | 64 + dist/docs/3.0.13/accounts/overview.mdx | 238 ++ .../accounts/tasks/get_account_financials.mdx | 233 ++ .../3.0.13/accounts/tasks/list_accounts.mdx | 215 ++ .../3.0.13/accounts/tasks/report_usage.mdx | 189 ++ .../3.0.13/accounts/tasks/sync_accounts.mdx | 397 ++++ .../3.0.13/accounts/tasks/sync_governance.mdx | 293 +++ dist/docs/3.0.13/ai-disclosure.mdx | 101 + .../docs/3.0.13/brand-protocol/brand-json.mdx | 880 ++++++++ .../brand-protocol/building-a-brand-agent.mdx | 390 ++++ .../3.0.13/brand-protocol/for-advertisers.mdx | 78 + .../brand-protocol/for-rights-holders.mdx | 123 ++ dist/docs/3.0.13/brand-protocol/index.mdx | 107 + .../3.0.13/brand-protocol/key-concepts.mdx | 298 +++ .../brand-protocol/tasks/acquire_rights.mdx | 309 +++ .../tasks/get_brand_identity.mdx | 215 ++ .../brand-protocol/tasks/get_rights.mdx | 176 ++ .../brand-protocol/tasks/update_rights.mdx | 148 ++ .../tasks/verify_brand_claim.mdx | 392 ++++ .../tasks/verify_brand_claims.mdx | 159 ++ .../3.0.13/brand-protocol/ui-guidance.mdx | 163 ++ .../walkthrough-rights-licensing.mdx | 575 +++++ dist/docs/3.0.13/building/build-an-agent.mdx | 209 ++ .../3.0.13/building/by-layer/L0/a2a-guide.mdx | 1025 +++++++++ .../by-layer/L0/a2a-response-extraction.mdx | 277 +++ .../by-layer/L0/a2a-response-format.mdx | 822 +++++++ .../3.0.13/building/by-layer/L0/index.mdx | 28 + .../3.0.13/building/by-layer/L0/mcp-guide.mdx | 880 ++++++++ .../by-layer/L0/mcp-response-extraction.mdx | 163 ++ .../3.0.13/building/by-layer/L0/schemas.mdx | 236 ++ .../3.0.13/building/by-layer/L1/index.mdx | 24 + .../building/by-layer/L1/request-signing.mdx | 749 +++++++ .../3.0.13/building/by-layer/L1/security.mdx | 1943 +++++++++++++++++ .../by-layer/L1/webhook-verifier-tuning.mdx | 149 ++ .../building/by-layer/L2/account-state.mdx | 249 +++ .../by-layer/L2/accounts-and-agents.mdx | 527 +++++ .../building/by-layer/L2/authentication.mdx | 349 +++ .../building/by-layer/L2/context-sessions.mdx | 299 +++ .../3.0.13/building/by-layer/L2/index.mdx | 26 + .../building/by-layer/L3/async-operations.mdx | 347 +++ .../by-layer/L3/comply-test-controller.mdx | 756 +++++++ .../building/by-layer/L3/error-handling.mdx | 901 ++++++++ .../3.0.13/building/by-layer/L3/index.mdx | 32 + .../building/by-layer/L3/task-lifecycle.mdx | 270 +++ .../3.0.13/building/by-layer/L3/webhooks.mdx | 584 +++++ .../building/by-layer/L4/build-a-caller.mdx | 228 ++ .../building/by-layer/L4/build-an-agent.mdx | 218 ++ .../building/by-layer/L4/choose-your-sdk.mdx | 150 ++ .../3.0.13/building/by-layer/L4/index.mdx | 17 + .../by-layer/L4/migrate-from-hand-rolled.mdx | 224 ++ .../3.0.13/building/compliance-catalog.mdx | 228 ++ .../building/concepts/adcp-vs-openrtb.mdx | 122 ++ .../concepts/how-agents-communicate.mdx | 180 ++ dist/docs/3.0.13/building/concepts/index.mdx | 108 + .../building/concepts/industry-landscape.mdx | 140 ++ .../building/concepts/protocol-comparison.mdx | 236 ++ .../building/concepts/security-model.mdx | 311 +++ dist/docs/3.0.13/building/conformance.mdx | 160 ++ .../cross-cutting/known-ambiguities.mdx | 80 + .../building/cross-cutting/sdk-stack.mdx | 340 +++ .../cross-cutting/version-adaptation.mdx | 203 ++ dist/docs/3.0.13/building/get-test-ready.mdx | 199 ++ dist/docs/3.0.13/building/grading.mdx | 83 + .../a2a-response-extraction.mdx | 277 +++ .../implementation/async-operations.mdx | 347 +++ .../implementation/comply-test-controller.mdx | 742 +++++++ .../implementation/error-handling.mdx | 578 +++++ .../3.0.13/building/implementation/index.mdx | 102 + .../implementation/known-ambiguities.mdx | 80 + .../mcp-response-extraction.mdx | 163 ++ .../implementation/orchestrator-design.mdx | 527 +++++ .../building/implementation/security.mdx | 1695 ++++++++++++++ .../implementation/seller-integration.mdx | 327 +++ .../storyboard-troubleshooting.mdx | 94 + .../implementation/task-lifecycle.mdx | 269 +++ .../implementation/transport-errors.mdx | 696 ++++++ .../webhook-verifier-tuning.mdx | 149 ++ .../building/implementation/webhooks.mdx | 495 +++++ dist/docs/3.0.13/building/index.mdx | 73 + .../3.0.13/building/integration/a2a-guide.mdx | 1019 +++++++++ .../integration/a2a-response-format.mdx | 822 +++++++ .../building/integration/account-state.mdx | 249 +++ .../integration/accounts-and-agents.mdx | 501 +++++ .../building/integration/authentication.mdx | 316 +++ .../building/integration/context-sessions.mdx | 299 +++ .../3.0.13/building/integration/index.mdx | 70 + .../3.0.13/building/integration/mcp-guide.mdx | 866 ++++++++ .../3.0.13/building/operating-an-agent.mdx | 128 ++ .../building/operating/operating-an-agent.mdx | 128 ++ .../operating/orchestrator-design.mdx | 528 +++++ .../building/operating/seller-integration.mdx | 329 +++ .../operating/storyboard-troubleshooting.mdx | 132 ++ .../building/operating/transport-errors.mdx | 701 ++++++ .../docs/3.0.13/building/schemas-and-sdks.mdx | 339 +++ .../understanding/adcp-vs-openrtb.mdx | 122 ++ .../understanding/how-agents-communicate.mdx | 180 ++ .../3.0.13/building/understanding/index.mdx | 108 + .../understanding/industry-landscape.mdx | 140 ++ .../understanding/protocol-comparison.mdx | 236 ++ .../building/understanding/security-model.mdx | 275 +++ .../3.0.13/building/validate-your-agent.mdx | 262 +++ .../building/verification/aao-verified.mdx | 305 +++ .../verification/addie-socket-mode.mdx | 196 ++ .../verification/compliance-catalog.mdx | 354 +++ .../building/verification/conformance.mdx | 225 ++ .../building/verification/get-test-ready.mdx | 202 ++ .../3.0.13/building/verification/grading.mdx | 83 + .../verification/how-grading-works.mdx | 134 ++ .../verification/storyboards-vs-scenarios.mdx | 71 + .../validate-with-mock-fixtures.mdx | 138 ++ .../verification/validate-your-agent.mdx | 270 +++ dist/docs/3.0.13/community/joining-slack.mdx | 40 + dist/docs/3.0.13/community/working-group.mdx | 44 + .../contributing/storyboard-authoring.md | 324 +++ .../contributing/testable-examples-demo.md | 87 + .../3.0.13/contributing/testable-snippets.md | 339 +++ .../contributing/x-entity-annotation.md | 148 ++ dist/docs/3.0.13/creative/accessibility.mdx | 201 ++ .../3.0.13/creative/ai-creative-overview.mdx | 104 + dist/docs/3.0.13/creative/asset-types.mdx | 491 +++++ .../creative/canonical-formats-migration.mdx | 573 +++++ .../3.0.13/creative/canonical-formats.mdx | 1269 +++++++++++ dist/docs/3.0.13/creative/catalog-schemas.mdx | 518 +++++ dist/docs/3.0.13/creative/catalogs.mdx | 1166 ++++++++++ dist/docs/3.0.13/creative/channels/audio.mdx | 295 +++ .../3.0.13/creative/channels/broadcast.mdx | 268 +++ .../3.0.13/creative/channels/carousels.mdx | 686 ++++++ dist/docs/3.0.13/creative/channels/ctv.mdx | 645 ++++++ .../docs/3.0.13/creative/channels/display.mdx | 746 +++++++ dist/docs/3.0.13/creative/channels/dooh.mdx | 254 +++ dist/docs/3.0.13/creative/channels/print.mdx | 436 ++++ .../creative/channels/social-native.mdx | 184 ++ dist/docs/3.0.13/creative/channels/video.mdx | 887 ++++++++ .../3.0.13/creative/creative-libraries.mdx | 341 +++ .../3.0.13/creative/creative-manifests.mdx | 471 ++++ dist/docs/3.0.13/creative/formats.mdx | 790 +++++++ .../3.0.13/creative/generative-creative.mdx | 602 +++++ .../creative/implementing-creative-agents.mdx | 680 ++++++ dist/docs/3.0.13/creative/index.mdx | 179 ++ dist/docs/3.0.13/creative/key-concepts.mdx | 197 ++ .../creative/multi-agent-orchestration.mdx | 346 +++ dist/docs/3.0.13/creative/private-assets.mdx | 209 ++ dist/docs/3.0.13/creative/provenance.mdx | 530 +++++ .../sales-agent-creative-capabilities.mdx | 316 +++ dist/docs/3.0.13/creative/specification.mdx | 477 ++++ .../sponsored-placement-adapter-contracts.mdx | 77 + .../task-reference/build_creative.mdx | 1270 +++++++++++ .../task-reference/get_creative_delivery.mdx | 400 ++++ .../task-reference/list_creative_formats.mdx | 681 ++++++ .../task-reference/list_creatives.mdx | 338 +++ .../preview_creative-advanced.mdx | 319 +++ .../task-reference/preview_creative.mdx | 424 ++++ .../task-reference/sync_creatives.mdx | 711 ++++++ .../3.0.13/creative/template-format-ids.mdx | 583 +++++ .../docs/3.0.13/creative/universal-macros.mdx | 677 ++++++ dist/docs/3.0.13/curation/coming-soon.mdx | 41 + dist/docs/3.0.13/faq.mdx | 356 +++ .../governance/annex-iii-obligations.mdx | 119 + .../governance/campaign/audit-trail.mdx | 317 +++ .../docs/3.0.13/governance/campaign/index.mdx | 242 ++ .../governance/campaign/safety-model.mdx | 143 ++ .../governance/campaign/specification.mdx | 1073 +++++++++ .../campaign/tasks/check_governance.mdx | 483 ++++ .../campaign/tasks/get_plan_audit_logs.mdx | 281 +++ .../governance/campaign/tasks/index.mdx | 22 + .../campaign/tasks/report_plan_outcome.mdx | 242 ++ .../governance/campaign/tasks/sync_plans.mdx | 238 ++ .../3.0.13/governance/collection/index.mdx | 166 ++ .../collection/tasks/collection_lists.mdx | 345 +++ .../content-standards/artifacts.mdx | 337 +++ .../implementation-guide.mdx | 424 ++++ .../governance/content-standards/index.mdx | 396 ++++ .../tasks/calibrate_content.mdx | 232 ++ .../tasks/create_content_standards.mdx | 126 ++ .../tasks/get_content_standards.mdx | 88 + .../tasks/get_media_buy_artifacts.mdx | 285 +++ .../tasks/list_content_standards.mdx | 70 + .../tasks/update_content_standards.mdx | 104 + .../tasks/validate_content_delivery.mdx | 184 ++ .../creative/get_creative_features.mdx | 175 ++ .../docs/3.0.13/governance/creative/index.mdx | 212 ++ .../creative/provenance-verification.mdx | 437 ++++ .../governance/embedded-human-judgment.mdx | 550 +++++ dist/docs/3.0.13/governance/overview.mdx | 304 +++ .../3.0.13/governance/policy-attribution.mdx | 163 ++ .../governance/policy-registry-sync.mdx | 113 + .../3.0.13/governance/policy-registry.mdx | 359 +++ .../3.0.13/governance/property/adagents.mdx | 1017 +++++++++ .../property/authorized-properties.mdx | 280 +++ .../docs/3.0.13/governance/property/index.mdx | 285 +++ .../governance/property/managed-networks.mdx | 629 ++++++ .../governance/property/specification.mdx | 637 ++++++ .../governance/property/tasks/index.mdx | 151 ++ .../property/tasks/property_lists.mdx | 699 ++++++ .../tasks/validate_property_delivery.mdx | 401 ++++ dist/docs/3.0.13/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.0.13/intro.mdx | 713 ++++++ .../3.0.13/learning/failure-mode-scope.mdx | 218 ++ .../foundations/a1-agentic-advertising.mdx | 98 + .../foundations/a2-protocol-architecture.mdx | 95 + .../a2b-testing-your-first-agent.mdx | 279 +++ .../foundations/a3-ecosystem-governance.mdx | 110 + .../3.0.13/learning/instructional-design.mdx | 301 +++ dist/docs/3.0.13/learning/overview.mdx | 113 + .../3.0.13/learning/policies/complaints.mdx | 60 + .../policies/conflict-of-interest.mdx | 39 + .../policies/intellectual-property.mdx | 43 + .../learning/policies/learner-records.mdx | 56 + .../learning/policies/nondiscrimination.mdx | 36 + .../policies/personnel-qualifications.mdx | 42 + dist/docs/3.0.13/learning/policies/refund.mdx | 33 + .../3.0.13/learning/specialist/creative.mdx | 184 ++ .../3.0.13/learning/specialist/governance.mdx | 182 ++ .../3.0.13/learning/specialist/media-buy.mdx | 151 ++ .../3.0.13/learning/specialist/security.mdx | 103 + .../3.0.13/learning/specialist/signals.mdx | 157 ++ .../specialist/sponsored-intelligence.mdx | 127 ++ dist/docs/3.0.13/learning/test-personas.md | 521 +++++ dist/docs/3.0.13/learning/tracks/buyer.mdx | 263 +++ dist/docs/3.0.13/learning/tracks/platform.mdx | 226 ++ .../docs/3.0.13/learning/tracks/publisher.mdx | 246 +++ dist/docs/3.0.13/measurement/taxonomy.mdx | 227 ++ .../advanced-topics/accountability.mdx | 232 ++ .../advanced-topics/accounts-and-security.mdx | 61 + .../agentic-execution-engine.mdx | 425 ++++ .../advanced-topics/billing-authority.mdx | 182 ++ .../media-buy/advanced-topics/index.mdx | 121 + .../advanced-topics/pricing-models.mdx | 877 ++++++++ .../media-buy/advanced-topics/sandbox.mdx | 250 +++ .../media-buy/advanced-topics/targeting.mdx | 855 ++++++++ .../implementing-standard-formats.mdx | 490 +++++ .../media-buy/capability-discovery/index.mdx | 84 + dist/docs/3.0.13/media-buy/commerce-media.mdx | 670 ++++++ .../media-buy/conversion-tracking/index.mdx | 698 ++++++ .../docs/3.0.13/media-buy/creatives/index.mdx | 180 ++ dist/docs/3.0.13/media-buy/index.mdx | 258 +++ .../3.0.13/media-buy/media-buys/index.mdx | 569 +++++ .../3.0.13/media-buy/media-buys/lifecycle.mdx | 277 +++ .../media-buys/optimization-reporting.mdx | 1138 ++++++++++ .../media-buys/policy-compliance.mdx | 210 ++ .../product-discovery/brief-expectations.mdx | 396 ++++ .../collections-and-installments.mdx | 1015 +++++++++ .../product-discovery/example-briefs.mdx | 271 +++ .../media-buy/product-discovery/index.mdx | 132 ++ .../product-discovery/media-products.mdx | 1237 +++++++++++ .../product-discovery/refinement.mdx | 287 +++ dist/docs/3.0.13/media-buy/specification.mdx | 558 +++++ .../task-reference/create_media_buy.mdx | 1397 ++++++++++++ .../task-reference/get_media_buy_delivery.mdx | 790 +++++++ .../task-reference/get_media_buys.mdx | 412 ++++ .../media-buy/task-reference/get_products.mdx | 1363 ++++++++++++ .../3.0.13/media-buy/task-reference/index.mdx | 165 ++ .../media-buy/task-reference/log_event.mdx | 532 +++++ .../provide_performance_feedback.mdx | 396 ++++ .../task-reference/sync_audiences.mdx | 550 +++++ .../task-reference/sync_catalogs.mdx | 266 +++ .../task-reference/sync_event_sources.mdx | 450 ++++ .../task-reference/update_media_buy.mdx | 868 ++++++++ dist/docs/3.0.13/protocol/architecture.mdx | 122 ++ .../docs/3.0.13/protocol/calling-an-agent.mdx | 135 ++ .../3.0.13/protocol/capabilities-explorer.mdx | 245 +++ .../3.0.13/protocol/design-principles.mdx | 148 ++ .../3.0.13/protocol/format-references.mdx | 113 + .../3.0.13/protocol/get_adcp_capabilities.mdx | 958 ++++++++ dist/docs/3.0.13/protocol/required-tasks.mdx | 207 ++ .../docs/3.0.13/protocol/snapshot-and-log.mdx | 184 ++ dist/docs/3.0.13/quickstart.mdx | 304 +++ dist/docs/3.0.13/reference/changelog.mdx | 12 + .../3.0.13/reference/experimental-status.mdx | 120 + dist/docs/3.0.13/reference/glossary.mdx | 440 ++++ dist/docs/3.0.13/reference/gmsf-reference.mdx | 167 ++ .../docs/3.0.13/reference/implementor-faq.mdx | 328 +++ .../3.0.13/reference/known-limitations.mdx | 80 + .../reference/media-channel-taxonomy.mdx | 792 +++++++ .../reference/migration/attribution.mdx | 104 + .../3.0.13/reference/migration/audiences.mdx | 136 ++ .../reference/migration/brand-identity.mdx | 125 ++ .../3.0.13/reference/migration/catalogs.mdx | 366 ++++ .../3.0.13/reference/migration/channels.mdx | 165 ++ .../3.0.13/reference/migration/creatives.mdx | 368 ++++ .../reference/migration/geo-targeting.mdx | 204 ++ .../docs/3.0.13/reference/migration/index.mdx | 124 ++ .../reference/migration/media-buy-status.mdx | 92 + .../migration/optimization-goals.mdx | 193 ++ .../migration/prerelease-upgrades.mdx | 227 ++ .../3.0.13/reference/migration/pricing.mdx | 227 ++ .../3.0.13/reference/migration/signals.mdx | 177 ++ .../reference/migration/v3-readiness.mdx | 162 ++ .../reference/privacy-considerations.mdx | 125 ++ dist/docs/3.0.13/reference/release-notes.mdx | 1313 +++++++++++ dist/docs/3.0.13/reference/roadmap.mdx | 111 + .../3.0.13/reference/schema-extensions.mdx | 135 ++ .../reference/specification-lifecycle.mdx | 124 ++ .../3.0.13/reference/test-vectors/index.mdx | 56 + .../3.0.13/reference/url-canonicalization.mdx | 66 + dist/docs/3.0.13/reference/v2-sunset.mdx | 71 + .../reference/verifying-protocol-tarballs.mdx | 124 ++ dist/docs/3.0.13/reference/versioning.mdx | 219 ++ dist/docs/3.0.13/reference/versions.mdx | 84 + .../3.0.13/reference/whats-new-in-3-1.mdx | 242 ++ .../docs/3.0.13/reference/whats-new-in-v3.mdx | 952 ++++++++ dist/docs/3.0.13/registry/index.mdx | 698 ++++++ .../3.0.13/registry/registering-an-agent.mdx | 116 + dist/docs/3.0.13/signals/data-providers.mdx | 647 ++++++ dist/docs/3.0.13/signals/ecosystem.mdx | 523 +++++ dist/docs/3.0.13/signals/key-concepts.mdx | 149 ++ dist/docs/3.0.13/signals/overview.mdx | 212 ++ dist/docs/3.0.13/signals/specification.mdx | 202 ++ .../3.0.13/signals/tasks/activate_signal.mdx | 537 +++++ .../docs/3.0.13/signals/tasks/get_signals.mdx | 837 +++++++ dist/docs/3.0.13/spec-guidelines.md | 350 +++ .../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 | 196 ++ .../sponsored-intelligence/overview.mdx | 254 +++ .../product-spectrum.mdx | 163 ++ .../si-chat-protocol.mdx | 496 +++++ .../sponsored-intelligence/specification.mdx | 524 +++++ .../sponsored-intelligence/tasks/index.mdx | 123 ++ .../tasks/si_get_offering.mdx | 313 +++ .../tasks/si_initiate_session.mdx | 189 ++ .../tasks/si_send_message.mdx | 214 ++ .../tasks/si_terminate_session.mdx | 288 +++ .../sponsored-intelligence/workflow.mdx | 211 ++ dist/docs/3.0.13/trust.mdx | 125 ++ .../3.0.13/trusted-match/ai-mediation.mdx | 189 ++ .../docs/3.0.13/trusted-match/buyer-guide.mdx | 246 +++ .../trusted-match/context-and-identity.mdx | 231 ++ .../trusted-match/data-protection-roles.mdx | 239 ++ .../3.0.13/trusted-match/execution-gap.mdx | 93 + .../identity-match-implementation.mdx | 116 + .../impression-tracker-implementation.mdx | 302 +++ dist/docs/3.0.13/trusted-match/index.mdx | 245 +++ .../trusted-match/migration-from-axe.mdx | 105 + .../trusted-match/privacy-architecture.mdx | 182 ++ .../trusted-match/router-architecture.mdx | 294 +++ .../3.0.13/trusted-match/specification.mdx | 698 ++++++ .../trusted-match/surfaces/ai-assistants.mdx | 179 ++ .../3.0.13/trusted-match/surfaces/ctv.mdx | 209 ++ .../3.0.13/trusted-match/surfaces/mobile.mdx | 268 +++ .../trusted-match/surfaces/retail-media.mdx | 129 ++ .../3.0.13/trusted-match/surfaces/web.mdx | 227 ++ dist/docs/3.0.13/verification/overview.mdx | 260 +++ 357 files changed, 117727 insertions(+) create mode 100644 dist/docs/3.0.13/aao/aao-admins.mdx create mode 100644 dist/docs/3.0.13/aao/addie-tools.mdx create mode 100644 dist/docs/3.0.13/aao/connect-addie.mdx create mode 100644 dist/docs/3.0.13/aao/directory-api.mdx create mode 100644 dist/docs/3.0.13/aao/org-admins.mdx create mode 100644 dist/docs/3.0.13/aao/users.mdx create mode 100644 dist/docs/3.0.13/accounts/overview.mdx create mode 100644 dist/docs/3.0.13/accounts/tasks/get_account_financials.mdx create mode 100644 dist/docs/3.0.13/accounts/tasks/list_accounts.mdx create mode 100644 dist/docs/3.0.13/accounts/tasks/report_usage.mdx create mode 100644 dist/docs/3.0.13/accounts/tasks/sync_accounts.mdx create mode 100644 dist/docs/3.0.13/accounts/tasks/sync_governance.mdx create mode 100644 dist/docs/3.0.13/ai-disclosure.mdx create mode 100644 dist/docs/3.0.13/brand-protocol/brand-json.mdx create mode 100644 dist/docs/3.0.13/brand-protocol/building-a-brand-agent.mdx create mode 100644 dist/docs/3.0.13/brand-protocol/for-advertisers.mdx create mode 100644 dist/docs/3.0.13/brand-protocol/for-rights-holders.mdx create mode 100644 dist/docs/3.0.13/brand-protocol/index.mdx create mode 100644 dist/docs/3.0.13/brand-protocol/key-concepts.mdx create mode 100644 dist/docs/3.0.13/brand-protocol/tasks/acquire_rights.mdx create mode 100644 dist/docs/3.0.13/brand-protocol/tasks/get_brand_identity.mdx create mode 100644 dist/docs/3.0.13/brand-protocol/tasks/get_rights.mdx create mode 100644 dist/docs/3.0.13/brand-protocol/tasks/update_rights.mdx create mode 100644 dist/docs/3.0.13/brand-protocol/tasks/verify_brand_claim.mdx create mode 100644 dist/docs/3.0.13/brand-protocol/tasks/verify_brand_claims.mdx create mode 100644 dist/docs/3.0.13/brand-protocol/ui-guidance.mdx create mode 100644 dist/docs/3.0.13/brand-protocol/walkthrough-rights-licensing.mdx create mode 100644 dist/docs/3.0.13/building/build-an-agent.mdx create mode 100644 dist/docs/3.0.13/building/by-layer/L0/a2a-guide.mdx create mode 100644 dist/docs/3.0.13/building/by-layer/L0/a2a-response-extraction.mdx create mode 100644 dist/docs/3.0.13/building/by-layer/L0/a2a-response-format.mdx create mode 100644 dist/docs/3.0.13/building/by-layer/L0/index.mdx create mode 100644 dist/docs/3.0.13/building/by-layer/L0/mcp-guide.mdx create mode 100644 dist/docs/3.0.13/building/by-layer/L0/mcp-response-extraction.mdx create mode 100644 dist/docs/3.0.13/building/by-layer/L0/schemas.mdx create mode 100644 dist/docs/3.0.13/building/by-layer/L1/index.mdx create mode 100644 dist/docs/3.0.13/building/by-layer/L1/request-signing.mdx create mode 100644 dist/docs/3.0.13/building/by-layer/L1/security.mdx create mode 100644 dist/docs/3.0.13/building/by-layer/L1/webhook-verifier-tuning.mdx create mode 100644 dist/docs/3.0.13/building/by-layer/L2/account-state.mdx create mode 100644 dist/docs/3.0.13/building/by-layer/L2/accounts-and-agents.mdx create mode 100644 dist/docs/3.0.13/building/by-layer/L2/authentication.mdx create mode 100644 dist/docs/3.0.13/building/by-layer/L2/context-sessions.mdx create mode 100644 dist/docs/3.0.13/building/by-layer/L2/index.mdx create mode 100644 dist/docs/3.0.13/building/by-layer/L3/async-operations.mdx create mode 100644 dist/docs/3.0.13/building/by-layer/L3/comply-test-controller.mdx create mode 100644 dist/docs/3.0.13/building/by-layer/L3/error-handling.mdx create mode 100644 dist/docs/3.0.13/building/by-layer/L3/index.mdx create mode 100644 dist/docs/3.0.13/building/by-layer/L3/task-lifecycle.mdx create mode 100644 dist/docs/3.0.13/building/by-layer/L3/webhooks.mdx create mode 100644 dist/docs/3.0.13/building/by-layer/L4/build-a-caller.mdx create mode 100644 dist/docs/3.0.13/building/by-layer/L4/build-an-agent.mdx create mode 100644 dist/docs/3.0.13/building/by-layer/L4/choose-your-sdk.mdx create mode 100644 dist/docs/3.0.13/building/by-layer/L4/index.mdx create mode 100644 dist/docs/3.0.13/building/by-layer/L4/migrate-from-hand-rolled.mdx create mode 100644 dist/docs/3.0.13/building/compliance-catalog.mdx create mode 100644 dist/docs/3.0.13/building/concepts/adcp-vs-openrtb.mdx create mode 100644 dist/docs/3.0.13/building/concepts/how-agents-communicate.mdx create mode 100644 dist/docs/3.0.13/building/concepts/index.mdx create mode 100644 dist/docs/3.0.13/building/concepts/industry-landscape.mdx create mode 100644 dist/docs/3.0.13/building/concepts/protocol-comparison.mdx create mode 100644 dist/docs/3.0.13/building/concepts/security-model.mdx create mode 100644 dist/docs/3.0.13/building/conformance.mdx create mode 100644 dist/docs/3.0.13/building/cross-cutting/known-ambiguities.mdx create mode 100644 dist/docs/3.0.13/building/cross-cutting/sdk-stack.mdx create mode 100644 dist/docs/3.0.13/building/cross-cutting/version-adaptation.mdx create mode 100644 dist/docs/3.0.13/building/get-test-ready.mdx create mode 100644 dist/docs/3.0.13/building/grading.mdx create mode 100644 dist/docs/3.0.13/building/implementation/a2a-response-extraction.mdx create mode 100644 dist/docs/3.0.13/building/implementation/async-operations.mdx create mode 100644 dist/docs/3.0.13/building/implementation/comply-test-controller.mdx create mode 100644 dist/docs/3.0.13/building/implementation/error-handling.mdx create mode 100644 dist/docs/3.0.13/building/implementation/index.mdx create mode 100644 dist/docs/3.0.13/building/implementation/known-ambiguities.mdx create mode 100644 dist/docs/3.0.13/building/implementation/mcp-response-extraction.mdx create mode 100644 dist/docs/3.0.13/building/implementation/orchestrator-design.mdx create mode 100644 dist/docs/3.0.13/building/implementation/security.mdx create mode 100644 dist/docs/3.0.13/building/implementation/seller-integration.mdx create mode 100644 dist/docs/3.0.13/building/implementation/storyboard-troubleshooting.mdx create mode 100644 dist/docs/3.0.13/building/implementation/task-lifecycle.mdx create mode 100644 dist/docs/3.0.13/building/implementation/transport-errors.mdx create mode 100644 dist/docs/3.0.13/building/implementation/webhook-verifier-tuning.mdx create mode 100644 dist/docs/3.0.13/building/implementation/webhooks.mdx create mode 100644 dist/docs/3.0.13/building/index.mdx create mode 100644 dist/docs/3.0.13/building/integration/a2a-guide.mdx create mode 100644 dist/docs/3.0.13/building/integration/a2a-response-format.mdx create mode 100644 dist/docs/3.0.13/building/integration/account-state.mdx create mode 100644 dist/docs/3.0.13/building/integration/accounts-and-agents.mdx create mode 100644 dist/docs/3.0.13/building/integration/authentication.mdx create mode 100644 dist/docs/3.0.13/building/integration/context-sessions.mdx create mode 100644 dist/docs/3.0.13/building/integration/index.mdx create mode 100644 dist/docs/3.0.13/building/integration/mcp-guide.mdx create mode 100644 dist/docs/3.0.13/building/operating-an-agent.mdx create mode 100644 dist/docs/3.0.13/building/operating/operating-an-agent.mdx create mode 100644 dist/docs/3.0.13/building/operating/orchestrator-design.mdx create mode 100644 dist/docs/3.0.13/building/operating/seller-integration.mdx create mode 100644 dist/docs/3.0.13/building/operating/storyboard-troubleshooting.mdx create mode 100644 dist/docs/3.0.13/building/operating/transport-errors.mdx create mode 100644 dist/docs/3.0.13/building/schemas-and-sdks.mdx create mode 100644 dist/docs/3.0.13/building/understanding/adcp-vs-openrtb.mdx create mode 100644 dist/docs/3.0.13/building/understanding/how-agents-communicate.mdx create mode 100644 dist/docs/3.0.13/building/understanding/index.mdx create mode 100644 dist/docs/3.0.13/building/understanding/industry-landscape.mdx create mode 100644 dist/docs/3.0.13/building/understanding/protocol-comparison.mdx create mode 100644 dist/docs/3.0.13/building/understanding/security-model.mdx create mode 100644 dist/docs/3.0.13/building/validate-your-agent.mdx create mode 100644 dist/docs/3.0.13/building/verification/aao-verified.mdx create mode 100644 dist/docs/3.0.13/building/verification/addie-socket-mode.mdx create mode 100644 dist/docs/3.0.13/building/verification/compliance-catalog.mdx create mode 100644 dist/docs/3.0.13/building/verification/conformance.mdx create mode 100644 dist/docs/3.0.13/building/verification/get-test-ready.mdx create mode 100644 dist/docs/3.0.13/building/verification/grading.mdx create mode 100644 dist/docs/3.0.13/building/verification/how-grading-works.mdx create mode 100644 dist/docs/3.0.13/building/verification/storyboards-vs-scenarios.mdx create mode 100644 dist/docs/3.0.13/building/verification/validate-with-mock-fixtures.mdx create mode 100644 dist/docs/3.0.13/building/verification/validate-your-agent.mdx create mode 100644 dist/docs/3.0.13/community/joining-slack.mdx create mode 100644 dist/docs/3.0.13/community/working-group.mdx create mode 100644 dist/docs/3.0.13/contributing/storyboard-authoring.md create mode 100644 dist/docs/3.0.13/contributing/testable-examples-demo.md create mode 100644 dist/docs/3.0.13/contributing/testable-snippets.md create mode 100644 dist/docs/3.0.13/contributing/x-entity-annotation.md create mode 100644 dist/docs/3.0.13/creative/accessibility.mdx create mode 100644 dist/docs/3.0.13/creative/ai-creative-overview.mdx create mode 100644 dist/docs/3.0.13/creative/asset-types.mdx create mode 100644 dist/docs/3.0.13/creative/canonical-formats-migration.mdx create mode 100644 dist/docs/3.0.13/creative/canonical-formats.mdx create mode 100644 dist/docs/3.0.13/creative/catalog-schemas.mdx create mode 100644 dist/docs/3.0.13/creative/catalogs.mdx create mode 100644 dist/docs/3.0.13/creative/channels/audio.mdx create mode 100644 dist/docs/3.0.13/creative/channels/broadcast.mdx create mode 100644 dist/docs/3.0.13/creative/channels/carousels.mdx create mode 100644 dist/docs/3.0.13/creative/channels/ctv.mdx create mode 100644 dist/docs/3.0.13/creative/channels/display.mdx create mode 100644 dist/docs/3.0.13/creative/channels/dooh.mdx create mode 100644 dist/docs/3.0.13/creative/channels/print.mdx create mode 100644 dist/docs/3.0.13/creative/channels/social-native.mdx create mode 100644 dist/docs/3.0.13/creative/channels/video.mdx create mode 100644 dist/docs/3.0.13/creative/creative-libraries.mdx create mode 100644 dist/docs/3.0.13/creative/creative-manifests.mdx create mode 100644 dist/docs/3.0.13/creative/formats.mdx create mode 100644 dist/docs/3.0.13/creative/generative-creative.mdx create mode 100644 dist/docs/3.0.13/creative/implementing-creative-agents.mdx create mode 100644 dist/docs/3.0.13/creative/index.mdx create mode 100644 dist/docs/3.0.13/creative/key-concepts.mdx create mode 100644 dist/docs/3.0.13/creative/multi-agent-orchestration.mdx create mode 100644 dist/docs/3.0.13/creative/private-assets.mdx create mode 100644 dist/docs/3.0.13/creative/provenance.mdx create mode 100644 dist/docs/3.0.13/creative/sales-agent-creative-capabilities.mdx create mode 100644 dist/docs/3.0.13/creative/specification.mdx create mode 100644 dist/docs/3.0.13/creative/sponsored-placement-adapter-contracts.mdx create mode 100644 dist/docs/3.0.13/creative/task-reference/build_creative.mdx create mode 100644 dist/docs/3.0.13/creative/task-reference/get_creative_delivery.mdx create mode 100644 dist/docs/3.0.13/creative/task-reference/list_creative_formats.mdx create mode 100644 dist/docs/3.0.13/creative/task-reference/list_creatives.mdx create mode 100644 dist/docs/3.0.13/creative/task-reference/preview_creative-advanced.mdx create mode 100644 dist/docs/3.0.13/creative/task-reference/preview_creative.mdx create mode 100644 dist/docs/3.0.13/creative/task-reference/sync_creatives.mdx create mode 100644 dist/docs/3.0.13/creative/template-format-ids.mdx create mode 100644 dist/docs/3.0.13/creative/universal-macros.mdx create mode 100644 dist/docs/3.0.13/curation/coming-soon.mdx create mode 100644 dist/docs/3.0.13/faq.mdx create mode 100644 dist/docs/3.0.13/governance/annex-iii-obligations.mdx create mode 100644 dist/docs/3.0.13/governance/campaign/audit-trail.mdx create mode 100644 dist/docs/3.0.13/governance/campaign/index.mdx create mode 100644 dist/docs/3.0.13/governance/campaign/safety-model.mdx create mode 100644 dist/docs/3.0.13/governance/campaign/specification.mdx create mode 100644 dist/docs/3.0.13/governance/campaign/tasks/check_governance.mdx create mode 100644 dist/docs/3.0.13/governance/campaign/tasks/get_plan_audit_logs.mdx create mode 100644 dist/docs/3.0.13/governance/campaign/tasks/index.mdx create mode 100644 dist/docs/3.0.13/governance/campaign/tasks/report_plan_outcome.mdx create mode 100644 dist/docs/3.0.13/governance/campaign/tasks/sync_plans.mdx create mode 100644 dist/docs/3.0.13/governance/collection/index.mdx create mode 100644 dist/docs/3.0.13/governance/collection/tasks/collection_lists.mdx create mode 100644 dist/docs/3.0.13/governance/content-standards/artifacts.mdx create mode 100644 dist/docs/3.0.13/governance/content-standards/implementation-guide.mdx create mode 100644 dist/docs/3.0.13/governance/content-standards/index.mdx create mode 100644 dist/docs/3.0.13/governance/content-standards/tasks/calibrate_content.mdx create mode 100644 dist/docs/3.0.13/governance/content-standards/tasks/create_content_standards.mdx create mode 100644 dist/docs/3.0.13/governance/content-standards/tasks/get_content_standards.mdx create mode 100644 dist/docs/3.0.13/governance/content-standards/tasks/get_media_buy_artifacts.mdx create mode 100644 dist/docs/3.0.13/governance/content-standards/tasks/list_content_standards.mdx create mode 100644 dist/docs/3.0.13/governance/content-standards/tasks/update_content_standards.mdx create mode 100644 dist/docs/3.0.13/governance/content-standards/tasks/validate_content_delivery.mdx create mode 100644 dist/docs/3.0.13/governance/creative/get_creative_features.mdx create mode 100644 dist/docs/3.0.13/governance/creative/index.mdx create mode 100644 dist/docs/3.0.13/governance/creative/provenance-verification.mdx create mode 100644 dist/docs/3.0.13/governance/embedded-human-judgment.mdx create mode 100644 dist/docs/3.0.13/governance/overview.mdx create mode 100644 dist/docs/3.0.13/governance/policy-attribution.mdx create mode 100644 dist/docs/3.0.13/governance/policy-registry-sync.mdx create mode 100644 dist/docs/3.0.13/governance/policy-registry.mdx create mode 100644 dist/docs/3.0.13/governance/property/adagents.mdx create mode 100644 dist/docs/3.0.13/governance/property/authorized-properties.mdx create mode 100644 dist/docs/3.0.13/governance/property/index.mdx create mode 100644 dist/docs/3.0.13/governance/property/managed-networks.mdx create mode 100644 dist/docs/3.0.13/governance/property/specification.mdx create mode 100644 dist/docs/3.0.13/governance/property/tasks/index.mdx create mode 100644 dist/docs/3.0.13/governance/property/tasks/property_lists.mdx create mode 100644 dist/docs/3.0.13/governance/property/tasks/validate_property_delivery.mdx create mode 100644 dist/docs/3.0.13/governance/rfc-process.mdx create mode 100644 dist/docs/3.0.13/governance/working-group-charter.mdx create mode 100644 dist/docs/3.0.13/images/guides/creator-economy/content-commerce-creative.png create mode 100644 dist/docs/3.0.13/images/guides/creator-economy/convergence.png create mode 100644 dist/docs/3.0.13/images/guides/creator-economy/episode-products.png create mode 100644 dist/docs/3.0.13/images/guides/creator-economy/play-button-progression.png create mode 100644 dist/docs/3.0.13/images/guides/creator-economy/three-stages.png create mode 100644 dist/docs/3.0.13/images/pr-screenshots/event-speakers-admin-modal.png create mode 100644 dist/docs/3.0.13/intro.mdx create mode 100644 dist/docs/3.0.13/learning/failure-mode-scope.mdx create mode 100644 dist/docs/3.0.13/learning/foundations/a1-agentic-advertising.mdx create mode 100644 dist/docs/3.0.13/learning/foundations/a2-protocol-architecture.mdx create mode 100644 dist/docs/3.0.13/learning/foundations/a2b-testing-your-first-agent.mdx create mode 100644 dist/docs/3.0.13/learning/foundations/a3-ecosystem-governance.mdx create mode 100644 dist/docs/3.0.13/learning/instructional-design.mdx create mode 100644 dist/docs/3.0.13/learning/overview.mdx create mode 100644 dist/docs/3.0.13/learning/policies/complaints.mdx create mode 100644 dist/docs/3.0.13/learning/policies/conflict-of-interest.mdx create mode 100644 dist/docs/3.0.13/learning/policies/intellectual-property.mdx create mode 100644 dist/docs/3.0.13/learning/policies/learner-records.mdx create mode 100644 dist/docs/3.0.13/learning/policies/nondiscrimination.mdx create mode 100644 dist/docs/3.0.13/learning/policies/personnel-qualifications.mdx create mode 100644 dist/docs/3.0.13/learning/policies/refund.mdx create mode 100644 dist/docs/3.0.13/learning/specialist/creative.mdx create mode 100644 dist/docs/3.0.13/learning/specialist/governance.mdx create mode 100644 dist/docs/3.0.13/learning/specialist/media-buy.mdx create mode 100644 dist/docs/3.0.13/learning/specialist/security.mdx create mode 100644 dist/docs/3.0.13/learning/specialist/signals.mdx create mode 100644 dist/docs/3.0.13/learning/specialist/sponsored-intelligence.mdx create mode 100644 dist/docs/3.0.13/learning/test-personas.md create mode 100644 dist/docs/3.0.13/learning/tracks/buyer.mdx create mode 100644 dist/docs/3.0.13/learning/tracks/platform.mdx create mode 100644 dist/docs/3.0.13/learning/tracks/publisher.mdx create mode 100644 dist/docs/3.0.13/measurement/taxonomy.mdx create mode 100644 dist/docs/3.0.13/media-buy/advanced-topics/accountability.mdx create mode 100644 dist/docs/3.0.13/media-buy/advanced-topics/accounts-and-security.mdx create mode 100644 dist/docs/3.0.13/media-buy/advanced-topics/agentic-execution-engine.mdx create mode 100644 dist/docs/3.0.13/media-buy/advanced-topics/billing-authority.mdx create mode 100644 dist/docs/3.0.13/media-buy/advanced-topics/index.mdx create mode 100644 dist/docs/3.0.13/media-buy/advanced-topics/pricing-models.mdx create mode 100644 dist/docs/3.0.13/media-buy/advanced-topics/sandbox.mdx create mode 100644 dist/docs/3.0.13/media-buy/advanced-topics/targeting.mdx create mode 100644 dist/docs/3.0.13/media-buy/capability-discovery/implementing-standard-formats.mdx create mode 100644 dist/docs/3.0.13/media-buy/capability-discovery/index.mdx create mode 100644 dist/docs/3.0.13/media-buy/commerce-media.mdx create mode 100644 dist/docs/3.0.13/media-buy/conversion-tracking/index.mdx create mode 100644 dist/docs/3.0.13/media-buy/creatives/index.mdx create mode 100644 dist/docs/3.0.13/media-buy/index.mdx create mode 100644 dist/docs/3.0.13/media-buy/media-buys/index.mdx create mode 100644 dist/docs/3.0.13/media-buy/media-buys/lifecycle.mdx create mode 100644 dist/docs/3.0.13/media-buy/media-buys/optimization-reporting.mdx create mode 100644 dist/docs/3.0.13/media-buy/media-buys/policy-compliance.mdx create mode 100644 dist/docs/3.0.13/media-buy/product-discovery/brief-expectations.mdx create mode 100644 dist/docs/3.0.13/media-buy/product-discovery/collections-and-installments.mdx create mode 100644 dist/docs/3.0.13/media-buy/product-discovery/example-briefs.mdx create mode 100644 dist/docs/3.0.13/media-buy/product-discovery/index.mdx create mode 100644 dist/docs/3.0.13/media-buy/product-discovery/media-products.mdx create mode 100644 dist/docs/3.0.13/media-buy/product-discovery/refinement.mdx create mode 100644 dist/docs/3.0.13/media-buy/specification.mdx create mode 100644 dist/docs/3.0.13/media-buy/task-reference/create_media_buy.mdx create mode 100644 dist/docs/3.0.13/media-buy/task-reference/get_media_buy_delivery.mdx create mode 100644 dist/docs/3.0.13/media-buy/task-reference/get_media_buys.mdx create mode 100644 dist/docs/3.0.13/media-buy/task-reference/get_products.mdx create mode 100644 dist/docs/3.0.13/media-buy/task-reference/index.mdx create mode 100644 dist/docs/3.0.13/media-buy/task-reference/log_event.mdx create mode 100644 dist/docs/3.0.13/media-buy/task-reference/provide_performance_feedback.mdx create mode 100644 dist/docs/3.0.13/media-buy/task-reference/sync_audiences.mdx create mode 100644 dist/docs/3.0.13/media-buy/task-reference/sync_catalogs.mdx create mode 100644 dist/docs/3.0.13/media-buy/task-reference/sync_event_sources.mdx create mode 100644 dist/docs/3.0.13/media-buy/task-reference/update_media_buy.mdx create mode 100644 dist/docs/3.0.13/protocol/architecture.mdx create mode 100644 dist/docs/3.0.13/protocol/calling-an-agent.mdx create mode 100644 dist/docs/3.0.13/protocol/capabilities-explorer.mdx create mode 100644 dist/docs/3.0.13/protocol/design-principles.mdx create mode 100644 dist/docs/3.0.13/protocol/format-references.mdx create mode 100644 dist/docs/3.0.13/protocol/get_adcp_capabilities.mdx create mode 100644 dist/docs/3.0.13/protocol/required-tasks.mdx create mode 100644 dist/docs/3.0.13/protocol/snapshot-and-log.mdx create mode 100644 dist/docs/3.0.13/quickstart.mdx create mode 100644 dist/docs/3.0.13/reference/changelog.mdx create mode 100644 dist/docs/3.0.13/reference/experimental-status.mdx create mode 100644 dist/docs/3.0.13/reference/glossary.mdx create mode 100644 dist/docs/3.0.13/reference/gmsf-reference.mdx create mode 100644 dist/docs/3.0.13/reference/implementor-faq.mdx create mode 100644 dist/docs/3.0.13/reference/known-limitations.mdx create mode 100644 dist/docs/3.0.13/reference/media-channel-taxonomy.mdx create mode 100644 dist/docs/3.0.13/reference/migration/attribution.mdx create mode 100644 dist/docs/3.0.13/reference/migration/audiences.mdx create mode 100644 dist/docs/3.0.13/reference/migration/brand-identity.mdx create mode 100644 dist/docs/3.0.13/reference/migration/catalogs.mdx create mode 100644 dist/docs/3.0.13/reference/migration/channels.mdx create mode 100644 dist/docs/3.0.13/reference/migration/creatives.mdx create mode 100644 dist/docs/3.0.13/reference/migration/geo-targeting.mdx create mode 100644 dist/docs/3.0.13/reference/migration/index.mdx create mode 100644 dist/docs/3.0.13/reference/migration/media-buy-status.mdx create mode 100644 dist/docs/3.0.13/reference/migration/optimization-goals.mdx create mode 100644 dist/docs/3.0.13/reference/migration/prerelease-upgrades.mdx create mode 100644 dist/docs/3.0.13/reference/migration/pricing.mdx create mode 100644 dist/docs/3.0.13/reference/migration/signals.mdx create mode 100644 dist/docs/3.0.13/reference/migration/v3-readiness.mdx create mode 100644 dist/docs/3.0.13/reference/privacy-considerations.mdx create mode 100644 dist/docs/3.0.13/reference/release-notes.mdx create mode 100644 dist/docs/3.0.13/reference/roadmap.mdx create mode 100644 dist/docs/3.0.13/reference/schema-extensions.mdx create mode 100644 dist/docs/3.0.13/reference/specification-lifecycle.mdx create mode 100644 dist/docs/3.0.13/reference/test-vectors/index.mdx create mode 100644 dist/docs/3.0.13/reference/url-canonicalization.mdx create mode 100644 dist/docs/3.0.13/reference/v2-sunset.mdx create mode 100644 dist/docs/3.0.13/reference/verifying-protocol-tarballs.mdx create mode 100644 dist/docs/3.0.13/reference/versioning.mdx create mode 100644 dist/docs/3.0.13/reference/versions.mdx create mode 100644 dist/docs/3.0.13/reference/whats-new-in-3-1.mdx create mode 100644 dist/docs/3.0.13/reference/whats-new-in-v3.mdx create mode 100644 dist/docs/3.0.13/registry/index.mdx create mode 100644 dist/docs/3.0.13/registry/registering-an-agent.mdx create mode 100644 dist/docs/3.0.13/signals/data-providers.mdx create mode 100644 dist/docs/3.0.13/signals/ecosystem.mdx create mode 100644 dist/docs/3.0.13/signals/key-concepts.mdx create mode 100644 dist/docs/3.0.13/signals/overview.mdx create mode 100644 dist/docs/3.0.13/signals/specification.mdx create mode 100644 dist/docs/3.0.13/signals/tasks/activate_signal.mdx create mode 100644 dist/docs/3.0.13/signals/tasks/get_signals.mdx create mode 100644 dist/docs/3.0.13/spec-guidelines.md create mode 100644 dist/docs/3.0.13/sponsored-intelligence/implementing-si-agents.mdx create mode 100644 dist/docs/3.0.13/sponsored-intelligence/implementing-si-hosts.mdx create mode 100644 dist/docs/3.0.13/sponsored-intelligence/measurement.mdx create mode 100644 dist/docs/3.0.13/sponsored-intelligence/monetizing-ai.mdx create mode 100644 dist/docs/3.0.13/sponsored-intelligence/networks.mdx create mode 100644 dist/docs/3.0.13/sponsored-intelligence/overview.mdx create mode 100644 dist/docs/3.0.13/sponsored-intelligence/product-spectrum.mdx create mode 100644 dist/docs/3.0.13/sponsored-intelligence/si-chat-protocol.mdx create mode 100644 dist/docs/3.0.13/sponsored-intelligence/specification.mdx create mode 100644 dist/docs/3.0.13/sponsored-intelligence/tasks/index.mdx create mode 100644 dist/docs/3.0.13/sponsored-intelligence/tasks/si_get_offering.mdx create mode 100644 dist/docs/3.0.13/sponsored-intelligence/tasks/si_initiate_session.mdx create mode 100644 dist/docs/3.0.13/sponsored-intelligence/tasks/si_send_message.mdx create mode 100644 dist/docs/3.0.13/sponsored-intelligence/tasks/si_terminate_session.mdx create mode 100644 dist/docs/3.0.13/sponsored-intelligence/workflow.mdx create mode 100644 dist/docs/3.0.13/trust.mdx create mode 100644 dist/docs/3.0.13/trusted-match/ai-mediation.mdx create mode 100644 dist/docs/3.0.13/trusted-match/buyer-guide.mdx create mode 100644 dist/docs/3.0.13/trusted-match/context-and-identity.mdx create mode 100644 dist/docs/3.0.13/trusted-match/data-protection-roles.mdx create mode 100644 dist/docs/3.0.13/trusted-match/execution-gap.mdx create mode 100644 dist/docs/3.0.13/trusted-match/identity-match-implementation.mdx create mode 100644 dist/docs/3.0.13/trusted-match/impression-tracker-implementation.mdx create mode 100644 dist/docs/3.0.13/trusted-match/index.mdx create mode 100644 dist/docs/3.0.13/trusted-match/migration-from-axe.mdx create mode 100644 dist/docs/3.0.13/trusted-match/privacy-architecture.mdx create mode 100644 dist/docs/3.0.13/trusted-match/router-architecture.mdx create mode 100644 dist/docs/3.0.13/trusted-match/specification.mdx create mode 100644 dist/docs/3.0.13/trusted-match/surfaces/ai-assistants.mdx create mode 100644 dist/docs/3.0.13/trusted-match/surfaces/ctv.mdx create mode 100644 dist/docs/3.0.13/trusted-match/surfaces/mobile.mdx create mode 100644 dist/docs/3.0.13/trusted-match/surfaces/retail-media.mdx create mode 100644 dist/docs/3.0.13/trusted-match/surfaces/web.mdx create mode 100644 dist/docs/3.0.13/verification/overview.mdx diff --git a/dist/docs/3.0.13/aao/aao-admins.mdx b/dist/docs/3.0.13/aao/aao-admins.mdx new file mode 100644 index 0000000000..f4ff37856d --- /dev/null +++ b/dist/docs/3.0.13/aao/aao-admins.mdx @@ -0,0 +1,60 @@ +--- +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.0.13/aao/users). For org-admin docs see [AAO for Org Admins](/dist/docs/3.0.13/aao/org-admins). For the full list of Addie's tools see the [Addie Tool Reference](/dist/docs/3.0.13/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. + +## 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.0.13/aao/addie-tools.mdx b/dist/docs/3.0.13/aao/addie-tools.mdx new file mode 100644 index 0000000000..356344b15d --- /dev/null +++ b/dist/docs/3.0.13/aao/addie-tools.mdx @@ -0,0 +1,1708 @@ +--- +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. Do NOT use when the user has a specific issue number — use get_github_issue. Allowed repos: any `adcontextprotocol/*` or `prebid/*`. + +*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. + +*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 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. 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, 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 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, 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. 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`* + +### `probe_adcp_agent` + +Check if an AdCP agent is online and list its advertised capabilities. This only verifies connectivity (the agent responds to HTTP requests) - it does NOT verify the agent implements the protocol correctly. Use evaluate_agent_quality to verify actual protocol compliance. + +*Source: `server/src/addie/mcp/member-tools.ts`* + +### `check_publisher_authorization` + +Check if a publisher domain has authorized a specific agent. + +*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 RFC 9421 request-signing conformance grader against an 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). Live-side-effect vectors (real `create_media_buy`, replay-cap flood) are skipped by default — pass `allow_live_side_effects: true` to run them, and only do that against a sandbox endpoint. + +*Source: `server/src/addie/mcp/auth-grader-tools.ts`* + +### `diagnose_agent_auth` + +Diagnose an 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. + +*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`* + +## 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` + +Save an agent URL to the organization's context and add it to the dashboard for compliance monitoring. New agents land in the dashboard with `members_only` visibility — discoverable to fellow Professional-tier (or higher) members, but not publicly listed in the directory or brand.json. To list publicly, the caller promotes the agent via the dashboard publish flow; that flow gates on an API-access subscription tier. Optionally store credentials securely (encrypted, never shown in conversations). Three auth modes, any of which may be combined with a new or existing save: (1) static bearer/basic via `auth_token`, (2) OAuth 2.0 client credentials (RFC 6749 §4.4, machine-to-machine) via `oauth_client_credentials`. Use this when users want to connect their agent, set up compliance monitoring, save their agent for testing, or provide credentials. + +*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`* + +### `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. + +*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 committee co-leaders - add or remove co-leaders for committees you lead (working groups, councils, chapters, 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`* + +## 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. + +*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`* + +### `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, or list 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`* + +### `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`* + +## 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. + +*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 (S1-S5, 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 a specialist deep dive module (S1: Media Buy, S2: Creative, S3: Signals, S4: Governance, S5: Sponsored Intelligence). The learner must hold the Practitioner credential. Returns the capstone format, lab exercises, and assessment criteria. You (Addie) will conduct the combined hands-on lab and adaptive exam. + +*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 of a specific RFC, epic, or PR. Returns title, body, state, labels, author, and optionally recent comments. Works on any `adcontextprotocol/*` or `prebid/*` repo. PR review-thread comments (on specific diff lines) are NOT included — only issue-style comments. Do NOT use for keyword search — use list_github_issues. Do NOT use fetch_url on github.com/.../issues URLs; this tool returns structured fields and labels. + +*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` + +Reject pending content with a reason. Only committee leads (for their committees) and admins can reject content. The proposer will see the rejection reason. + +*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`* + +### `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_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`* + +### `upload_brand_logo` + +Upload a logo file for a brand in the registry. The logo will be pending review. + +*Source: `server/src/addie/mcp/brand-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`* + +### `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.0.13/aao/connect-addie.mdx b/dist/docs/3.0.13/aao/connect-addie.mdx new file mode 100644 index 0000000000..bdbfccc224 --- /dev/null +++ b/dist/docs/3.0.13/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.0.13/aao/users) and the [Addie Tool Reference](/dist/docs/3.0.13/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 https://agenticadvertising.org/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.0.13/aao/directory-api.mdx b/dist/docs/3.0.13/aao/directory-api.mdx new file mode 100644 index 0000000000..e2f3625e76 --- /dev/null +++ b/dist/docs/3.0.13/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.0.13/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.0.13/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.0.13/governance/property/adagents) — the trust root. +- [Managed Network Deployment](/dist/docs/3.0.13/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.0.13/aao/org-admins.mdx b/dist/docs/3.0.13/aao/org-admins.mdx new file mode 100644 index 0000000000..2ab49bd21d --- /dev/null +++ b/dist/docs/3.0.13/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.0.13/aao/users). For Addie's full tool list, see the [Addie Tool Reference](/dist/docs/3.0.13/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. +- **Probe a sales agent.** *"Probe [agent URL]"* runs `probe_adcp_agent` to confirm the agent responds, returns capabilities, and is registered. +- **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.0.13/aao/users.mdx b/dist/docs/3.0.13/aao/users.mdx new file mode 100644 index 0000000000..d4348b25ff --- /dev/null +++ b/dist/docs/3.0.13/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.0.13/aao/org-admins). For the full list of Addie's tools, see the [Addie Tool Reference](/dist/docs/3.0.13/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.0.13/aao/addie-tools), she's probably wrong — push back and ask her to verify. diff --git a/dist/docs/3.0.13/accounts/overview.mdx b/dist/docs/3.0.13/accounts/overview.mdx new file mode 100644 index 0000000000..08941757c2 --- /dev/null +++ b/dist/docs/3.0.13/accounts/overview.mdx @@ -0,0 +1,238 @@ +--- +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 + +Six 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 the account model: `true` means explicit accounts (operator credentials required, discover via `list_accounts`), `false` means implicit accounts (agent trusted, declare via `sync_accounts`) | +| Who gets billed? | Buyer declaration | Buyer passes `billing` in `sync_accounts` — `operator`, `agent`, or `advertiser`. Seller accepts or rejects. | +| 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.0.13/protocol/get_adcp_capabilities) via `require_operator_auth`. When `true` (**explicit accounts**), operators authenticate independently and the buyer discovers accounts via [`list_accounts`](/dist/docs/3.0.13/accounts/tasks/list_accounts). When `false` (**implicit accounts**), the agent is trusted and the buyer declares brand/operator pairs via [`sync_accounts`](/dist/docs/3.0.13/accounts/tasks/sync_accounts) to provision accounts. + +An **ad network** may use both models simultaneously — implicit accounts on the buyer-facing side (the network is agent-trusted) and explicit accounts with each underlying platform (the network authenticates as an operator). See the [Sponsored Intelligence guide — account model for networks](/dist/docs/3.0.13/sponsored-intelligence/networks#account-model-for-networks) for the full account chain: `buyer agent → network (implicit) → AI platform (explicit)`. + +After delivery, the orchestrator calls [`report_usage`](/dist/docs/3.0.13/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-assigned `account_id` (explicit accounts, `require_operator_auth: true`) or a natural key — `brand` + `operator` (implicit accounts, `require_operator_auth: false`). For sandbox, the path depends on the account model: explicit accounts discover pre-existing test accounts via `list_accounts`, while implicit accounts declare sandbox via `sync_accounts` with `sandbox: true`. See [Account references](/dist/docs/3.0.13/building/by-layer/L2/accounts-and-agents#account-references) for details. + +## 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 + +## 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 + Explicit (require_operator_auth: true): + list_accounts() → find existing account_id for this brand/operator + Implicit (require_operator_auth: false): + sync_accounts({ accounts: [{ brand, operator, billing, billing_entity? }] }) → status, billing terms + +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.0.13/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` 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` (explicit accounts, `require_operator_auth: true`) or `sync_accounts` (implicit accounts, `require_operator_auth: false`). An agent MAY implement both. See [Required tasks by protocol](/dist/docs/3.0.13/protocol/required-tasks#any-agent-accepting-accounts). + +| Task | Purpose | +|------|--------| +| [`sync_accounts`](/dist/docs/3.0.13/accounts/tasks/sync_accounts) | Declare brand/operator pairs and billing; provision accounts (implicit accounts, `require_operator_auth: false`) | +| [`list_accounts`](/dist/docs/3.0.13/accounts/tasks/list_accounts) | Discover existing accounts (explicit accounts, `require_operator_auth: true`); poll status on pending accounts | +| [`get_account_financials`](/dist/docs/3.0.13/accounts/tasks/get_account_financials) | Query spend, credit, and invoice status for operator-billed accounts | +| [`sync_governance`](/dist/docs/3.0.13/accounts/tasks/sync_governance) | Sync governance agent endpoints to accounts for seller-side validation | +| [`report_usage`](/dist/docs/3.0.13/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.0.13/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.0.13/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.0.13/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.0.13/accounts/tasks/get_account_financials.mdx b/dist/docs/3.0.13/accounts/tasks/get_account_financials.mdx new file mode 100644 index 0000000000..531a098896 --- /dev/null +++ b/dist/docs/3.0.13/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.0.13/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.0.13/account/get-account-financials-request.json`](https://adcontextprotocol.org/schemas/3.0.13/account/get-account-financials-request.json) +**Response Schema**: [`/schemas/3.0.13/account/get-account-financials-response.json`](https://adcontextprotocol.org/schemas/3.0.13/account/get-account-financials-response.json) + +## Quick start + +Check remaining credit before launching a campaign: + + + +```javascript JavaScript +import { testAgent } from "@adcp/client/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.0.13/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. | +| `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/client/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/client/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` | 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` | Account does not exist or is not accessible | Check account reference or re-sync | + +## Next steps + +- [list_accounts](/dist/docs/3.0.13/accounts/tasks/list_accounts) -- Discover accounts and check their status +- [get_adcp_capabilities](/dist/docs/3.0.13/protocol/get_adcp_capabilities) -- Check `account_financials` before calling this task +- [Accounts and agents](/dist/docs/3.0.13/building/by-layer/L2/accounts-and-agents) -- Billing models and account references diff --git a/dist/docs/3.0.13/accounts/tasks/list_accounts.mdx b/dist/docs/3.0.13/accounts/tasks/list_accounts.mdx new file mode 100644 index 0000000000..1055a53cba --- /dev/null +++ b/dist/docs/3.0.13/accounts/tasks/list_accounts.mdx @@ -0,0 +1,215 @@ +--- +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 retrieve `account_id` values for use in protocol operations. + +`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**: [`/schemas/3.0.13/account/list-accounts-request.json`](https://adcontextprotocol.org/schemas/3.0.13/account/list-accounts-request.json) +**Response Schema**: [`/schemas/3.0.13/account/list-accounts-response.json`](https://adcontextprotocol.org/schemas/3.0.13/account/list-accounts-response.json) + +## Quick Start + +List all accounts this agent can operate: + + + +```javascript JavaScript +import { testAgent } from "@adcp/client/testing"; +import { ListAccountsResponseSchema } from "@adcp/client"; + +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. + +| Parameter | Type | Required | Description | +|-----------|------|----------|-------------| +| `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 or omitted, return only production accounts. Primarily used with explicit accounts (`require_operator_auth: true`) where sandbox accounts are pre-existing test accounts on the platform. | +| `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` | Vendor agent's identifier. Pass this to protocol tasks: `create_media_buy`, `get_signals`, `activate_signal`, `report_usage`, and other operations. May be absent when `status: "rejected"`. | +| `name` | Vendor agent's display name for the account | +| `brand` | Brand reference object: `domain` (the [brand registry](/dist/docs/3.0.13/brand-protocol/brand-json) house domain) and optional `brand_id` (sub-brand within the house) | +| `operator` | Operator domain. Always present — when the brand operates directly, `operator` equals the brand's domain. | +| `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.0.13/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.0.13/accounts/tasks/sync_governance). | +| `setup` | Present when `status: "pending_approval"`. Contains `url` for completing setup and `message` explaining what's needed. | + +## Common Scenarios + +### Poll until account becomes active + +After `sync_accounts` returns `pending_approval`, poll until the account is ready: + + + +```javascript JavaScript +import { testAgent } from "@adcp/client/testing"; +import { ListAccountsResponseSchema } from "@adcp/client"; + +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") +``` + + + +### Filter active accounts only + + + +```javascript JavaScript +import { testAgent } from "@adcp/client/testing"; +import { ListAccountsResponseSchema } from "@adcp/client"; + +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` | No accounts found for this agent | Run `sync_accounts` first to establish a buying relationship | + +## Next Steps + +- [sync_accounts](/dist/docs/3.0.13/accounts/tasks/sync_accounts) — Sync advertiser accounts with a seller +- [sync_governance](/dist/docs/3.0.13/accounts/tasks/sync_governance) — Sync governance agents to accounts +- [Accounts and agents](/dist/docs/3.0.13/building/by-layer/L2/accounts-and-agents) — Billing models, trust models, and authorized operators +- [Brand protocol](/dist/docs/3.0.13/brand-protocol/brand-json) — How vendor agents resolve brand identity from the brand's `domain` diff --git a/dist/docs/3.0.13/accounts/tasks/report_usage.mdx b/dist/docs/3.0.13/accounts/tasks/report_usage.mdx new file mode 100644 index 0000000000..5e36d6bb0d --- /dev/null +++ b/dist/docs/3.0.13/accounts/tasks/report_usage.mdx @@ -0,0 +1,189 @@ +--- +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. + +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. + +**Request Schema**: [`/schemas/3.0.13/account/report-usage-request.json`](https://adcontextprotocol.org/schemas/3.0.13/account/report-usage-request.json) +**Response Schema**: [`/schemas/3.0.13/account/report-usage-response.json`](https://adcontextprotocol.org/schemas/3.0.13/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.0.13/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`, `list_creatives`, `list_content_standards`, `list_property_lists`) or execution response (`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 | +| `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. | +| `property_list_id` | string | Property lists: Yes | Property list identifier from `list_property_lists`. Links usage to a specific property list for billing verification. | + +## 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. + +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` | Account reference in a usage record not found or not accessible | Verify via `list_accounts`; re-run `sync_accounts` if needed | +| `INVALID_USAGE_DATA` | A usage record has missing or invalid fields | Check required fields for your vendor type | +| `INVALID_PRICING_OPTION` | `pricing_option_id` not found on this account | Verify `pricing_option_id` from the vendor's discovery response | +| `DUPLICATE_REQUEST` | Request with this `idempotency_key` was already accepted | Safe to ignore — original response is returned unchanged | + +## Next Steps + +- [sync_accounts](/dist/docs/3.0.13/accounts/tasks/sync_accounts) — Sync advertiser accounts with a seller before reporting +- [Accounts Protocol](/dist/docs/3.0.13/accounts/overview) — How account establishment and settlement fit together +- [Accounts and agents](/dist/docs/3.0.13/building/by-layer/L2/accounts-and-agents) — Billing hierarchy and operator model diff --git a/dist/docs/3.0.13/accounts/tasks/sync_accounts.mdx b/dist/docs/3.0.13/accounts/tasks/sync_accounts.mdx new file mode 100644 index 0000000000..c6241e21bd --- /dev/null +++ b/dist/docs/3.0.13/accounts/tasks/sync_accounts.mdx @@ -0,0 +1,397 @@ +--- +title: sync_accounts +description: "sync_accounts provisions or links advertiser accounts with an AdCP seller agent for one or more brand/operator pairs. Supports explicit and implicit account models with sandbox mode." +"og:title": "AdCP — sync_accounts" +testable: false +--- + +Sync advertiser accounts with a seller for one or more brand/operator pairs. The seller provisions or links accounts, returning per-account status and any setup instructions. Brands are identified by a `brand` object containing `domain` + optional `brand_id`, resolved via `/.well-known/brand.json`. + +`sync_accounts` is used across all seller protocols: media buy agents, signals agents, governance agents, and creative agents. It declares the buyer's intent — the seller provisions or links accounts internally. For implicit accounts (`require_operator_auth: false`), use natural keys (`brand` + `operator`) on subsequent requests. For explicit accounts (`require_operator_auth: true`), discover seller-assigned account IDs via [`list_accounts`](/dist/docs/3.0.13/accounts/tasks/list_accounts). For sandbox on implicit accounts, include `sandbox: true` in the account entry — the seller provisions a test account with no real spend. For explicit accounts, sandbox accounts are pre-existing test accounts discovered via [`list_accounts`](/dist/docs/3.0.13/accounts/tasks/list_accounts). + +**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.0.13/account/sync-accounts-request.json`](https://adcontextprotocol.org/schemas/3.0.13/account/sync-accounts-request.json) +**Response Schema**: [`/schemas/3.0.13/account/sync-accounts-response.json`](https://adcontextprotocol.org/schemas/3.0.13/account/sync-accounts-response.json) + +## Quick start + +Sync a single advertiser account and check the resulting status: + + + +```javascript JavaScript +import { testAgent } from "@adcp/client/testing"; +import { SyncAccountsResponseSchema } from "@adcp/client"; + +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 | +|-------|------|----------|-------------| +| `brand` | object | Yes | Brand reference identifying the advertiser. Contains `domain` (house domain where brand.json is hosted) and optional `brand_id` (for multi-brand houses). See [brand-ref](/dist/docs/3.0.13/brand-protocol/brand-json). | +| `operator` | string | Yes | 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. | +| `billing` | string | Yes | Who should be invoiced: `operator`, `agent`, or `advertiser`. Check `get_adcp_capabilities` for `supported_billing` to see what the seller accepts. The seller must either accept this billing model or reject the request. | +| `billing_entity` | object | No | Structured business entity details for the party responsible for payment. 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. See [billing entity and invoice recipient](/dist/docs/3.0.13/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 implicit accounts (`require_operator_auth: false`). For explicit accounts, sandbox accounts are pre-existing test accounts discovered via `list_accounts`. | + +**Natural key**: The tuple `(brand, operator, sandbox)` uniquely identifies an account relationship. `{brand: {domain: "acme-corp.com"}, operator: "acme-corp.com"}` (direct) is a different account from `{brand: {domain: "acme-corp.com"}, operator: "pinnacle-media.com"}` (via agency). Adding `sandbox: true` provisions a sandbox account for the same brand/operator pair — no real platform calls or billing. + +## 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` | Echoed from request. Object with `domain` and optional `brand_id`. | +| `operator` | Echoed from request. | +| `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` | Business entity details for the invoiced party, echoed from the request. Sellers may add fields the agent omitted (e.g., `registration_number` from a credit check) but must not return data from a different entity. Bank details are omitted (write-only). | +| `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` (the agent's default account). See [account scope](/dist/docs/3.0.13/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 implicit accounts. | + +### Account status + +| Status | Meaning | Next step | +|--------|---------|-----------| +| `active` | Ready to use | Use [account reference](/dist/docs/3.0.13/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` 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`). + +The notification payload includes the `(brand, operator)` natural key so the buyer can correlate it to the original sync request. For explicit accounts (`require_operator_auth: true`), the notification also includes the seller-assigned `account_id` once provisioned. + +```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.0.13/accounts/tasks/list_accounts) to check for status changes. + +## Common scenarios + +### Agency syncing multiple brands + + + +```javascript JavaScript +import { testAgent } from "@adcp/client/testing"; +import { SyncAccountsResponseSchema } from "@adcp/client"; + +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/client/testing"; +import { SyncAccountsResponseSchema } from "@adcp/client"; + +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/client/testing"; +import { SyncAccountsResponseSchema } from "@adcp/client"; + +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` | Referenced account does not exist or is not accessible | Check `account_id` or re-sync | +| `BILLING_NOT_SUPPORTED` | Seller does not support the requested billing model | Check `get_adcp_capabilities` for `supported_billing`, adjust or omit `billing` | +| `PAYMENT_TERMS_NOT_SUPPORTED` | Seller does not accept the requested payment terms | Omit `payment_terms` to accept the seller's default, or negotiate offline | +| `PAYMENT_REQUIRED` | Account has reached its credit limit | Add funds or route to another account | +| `ACCOUNT_SUSPENDED` | Account is suspended | Contact seller to resolve | +| `BRAND_REQUIRED` | Billable operation attempted without brand reference | Include `brand` in the request | + +## Next steps + +- [list_accounts](/dist/docs/3.0.13/accounts/tasks/list_accounts) -- Poll for status changes on pending accounts +- [sync_governance](/dist/docs/3.0.13/accounts/tasks/sync_governance) -- Sync governance agents to accounts +- [Accounts and agents](/dist/docs/3.0.13/building/by-layer/L2/accounts-and-agents) -- Billing models, trust models, and authorized operators +- [Brand protocol](/dist/docs/3.0.13/brand-protocol/brand-json) -- How seller agents resolve brand identity from the `brand.domain` +- [get_adcp_capabilities](/dist/docs/3.0.13/protocol/get_adcp_capabilities) -- Discover `supported_billing` and `require_operator_auth` before syncing accounts diff --git a/dist/docs/3.0.13/accounts/tasks/sync_governance.mdx b/dist/docs/3.0.13/accounts/tasks/sync_governance.mdx new file mode 100644 index 0000000000..4f150ef210 --- /dev/null +++ b/dist/docs/3.0.13/accounts/tasks/sync_governance.mdx @@ -0,0 +1,293 @@ +--- +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 governance agent endpoints to specific accounts. The seller persists these agents and calls them via `check_governance` during media buy lifecycle events. Each account entry pairs an [account reference](/dist/docs/3.0.13/building/by-layer/L2/accounts-and-agents#account-references) with the governance agents for that account, supporting both explicit accounts (`account_id`) and implicit accounts (`brand` + `operator`). + +This uses **replace semantics** — each call replaces any previously registered agents on the specified accounts. Accounts not included in the request keep their existing configuration. + +**Response Time**: ~1s. + +**Request Schema**: [`/schemas/3.0.13/account/sync-governance-request.json`](https://adcontextprotocol.org/schemas/3.0.13/account/sync-governance-request.json) +**Response Schema**: [`/schemas/3.0.13/account/sync-governance-response.json`](https://adcontextprotocol.org/schemas/3.0.13/account/sync-governance-response.json) + +## Quick Start + +Sync a budget governance agent to an explicit account: + + + +```javascript JavaScript +import { testAgent } from "@adcp/client/testing"; +import { SyncGovernanceResponseSchema } from "@adcp/client"; + +const result = await testAgent.syncGovernance({ + accounts: [ + { + account: { account_id: "acct-social-001" }, + governance_agents: [ + { + url: "https://governance.pinnacle-media.com/budget", + authentication: { + schemes: ["Bearer"], + credentials: "gov-token-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + }, + categories: ["budget_authority"] + } + ] + } + ] +}); + +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} agents 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/budget", + "authentication": { + "schemes": ["Bearer"], + "credentials": "gov-token-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + }, + "categories": ["budget_authority"] + } + ] + } + ] + ) + + 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)} agents 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.0.13/building/by-layer/L2/accounts-and-agents#account-references): `{account_id}` for explicit accounts or `{brand, operator}` for implicit accounts. | +| `governance_agents` | array | Yes | Governance agent endpoints for this account (1–10 per account). | + +**Each 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). | +| `categories` | array | No | Governance categories this agent handles (e.g., `["budget_authority", "geo_compliance"]`). When omitted, the agent handles all categories. Max 20 categories, each max 64 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 + + + +```javascript JavaScript +import { testAgent } from "@adcp/client/testing"; +import { SyncGovernanceResponseSchema } from "@adcp/client"; + +const result = await testAgent.syncGovernance({ + accounts: [ + { + account: { account_id: "acct-social-001" }, + governance_agents: [ + { + url: "https://governance.pinnacle-media.com/budget", + authentication: { + schemes: ["Bearer"], + credentials: "gov-token-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + }, + categories: ["budget_authority"] + } + ] + }, + { + account: { account_id: "acct-social-002" }, + governance_agents: [ + { + url: "https://governance.pinnacle-media.com/compliance", + authentication: { + schemes: ["Bearer"], + credentials: "gov-token-yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy" + }, + categories: ["geo_compliance"] + } + ] + } + ] +}); + +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/budget", + "authentication": { + "schemes": ["Bearer"], + "credentials": "gov-token-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + }, + "categories": ["budget_authority"] + } + ] + }, + { + "account": {"account_id": "acct-social-002"}, + "governance_agents": [ + { + "url": "https://governance.pinnacle-media.com/compliance", + "authentication": { + "schemes": ["Bearer"], + "credentials": "gov-token-yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy" + }, + "categories": ["geo_compliance"] + } + ] + } + ] + ) + + 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()) +``` + + + +### Implicit accounts (brand + operator) + + + +```json Request +{ + "$schema": "https://adcontextprotocol.org/schemas/3.0.13/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/compliance", + "authentication": { + "schemes": ["Bearer"], + "credentials": "gov-token-yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy" + }, + "categories": ["geo_compliance", "strategic_alignment"] + } + ] + } + ] +} +``` + + + +### Rotate governance agent credentials + +Call `sync_governance` again with updated `authentication`. Replace semantics means the new credentials overwrite the previous configuration. + +## Error Handling + +| Error Code | Description | Resolution | +|------------|-------------|------------| +| `ACCOUNT_NOT_FOUND` | Referenced account does not exist or is not accessible | Verify account reference via `list_accounts` or `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.0.13/accounts/tasks/list_accounts) — Discover accounts and their current governance agents +- [sync_accounts](/dist/docs/3.0.13/accounts/tasks/sync_accounts) — Provision or link advertiser accounts +- [check_governance](/dist/docs/3.0.13/governance/campaign/tasks/check_governance) — How sellers call governance agents during media buy events +- [Accounts and agents](/dist/docs/3.0.13/building/by-layer/L2/accounts-and-agents) — Account models, billing, and trust diff --git a/dist/docs/3.0.13/ai-disclosure.mdx b/dist/docs/3.0.13/ai-disclosure.mdx new file mode 100644 index 0000000000..90c7c3362b --- /dev/null +++ b/dist/docs/3.0.13/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 AAO, with human editorial oversight: + +- **Addie** — AAO'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 AAO; 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. AAO 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 AAO'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 AAO 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 AAO 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 appeals SLA.** Because AAO is both the issuer and the AI grader of its certifications, every grading appeal gets a documented human-review path: + +- **Acknowledgement: 72 hours** from receipt at [help@agenticadvertising.org](mailto:help@agenticadvertising.org). +- **Decision: 10 business days** from acknowledgement, by an AAO staff reviewer who did not participate in the original grading. +- **Outcome on upheld appeals**: the credential is granted (if the appeal is for a denied attempt) or the assessment fee is refunded (if the appeal is for a graded attempt the learner does not want re-credentialed). +- **Escalation**: appeals that the staff reviewer cannot resolve are escalated to the AAO certification committee, which meets monthly. +- **Annual transparency report**: AAO 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, email [help@agenticadvertising.org](mailto:help@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 [Slack](https://join.slack.com/t/agenticads/shared_invite/zt-3c5sxvdjk-x0rVmLB3OFHVUp~WutVWZg). 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 AAO publishes carries an embedded [C2PA](https://c2pa.org/) manifest signed by AAO: + +- **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). AAO 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 AAO 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 AAO — but it is a deliberate choice, not an oversight. + +If you find an AAO-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 AAO intersect with AAO's broader governance in ways readers should know: + +- AAO is both the issuer and the grader of its certifications (Addie evaluates coursework and grants credentials AAO sells). +- AAO's founder's other company (Scope3) contributed funding and foundational IP — see the [FAQ entry](/dist/docs/3.0.13/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 AAO will be reflected on this page. diff --git a/dist/docs/3.0.13/brand-protocol/brand-json.mdx b/dist/docs/3.0.13/brand-protocol/brand-json.mdx new file mode 100644 index 0000000000..b66e2b0052 --- /dev/null +++ b/dist/docs/3.0.13/brand-protocol/brand-json.mdx @@ -0,0 +1,880 @@ +--- +title: brand.json Specification +description: "brand.json specification for AdCP. File format, variants (portfolio, redirect, agent, authoritative location), brand definition fields, visual guidelines, colorways, type scale, restrictions, 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 four mutually exclusive variants to accommodate different use cases. + + +`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.0.13/registry/index). + + +## 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 four mutually exclusive variants: + +### 1. Authoritative Location Redirect + +Points to a hosted brand.json at another URL: + +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.0.13/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 + +### 2. House Redirect + +Points to the house domain that contains the full brand portfolio: + +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.0.13/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") +- `note`: Explanation text + +Use this when: +- Brand domain is owned by a larger house +- Regional/localized domains point to main house +- Legacy domains redirect to canonical + +### 3. Brand Agent + +Designates an MCP agent that provides brand information: + +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.0.13/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 + +Contains the full brand hierarchy with all brands and properties: + +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.0.13/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} + ] + } + ] +} +``` + +## 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 + +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`, `attributes`, `dos`, `donts`) | +| `tagline` | string | No | Brand tagline or slogan | +| `visual_guidelines` | object | No | Structured visual rules for generative creative systems | + +### 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). + +### 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` | + +### 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" + ] +} +``` + +## 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`. Matches `delegation_type` in adagents.json for bilateral verification. See [ad networks](/dist/docs/3.0.13/sponsored-intelligence/networks). | + +### Property types + +Matches AdCP property-type enum: +- `website` +- `mobile_app` +- `ctv_app` +- `desktop_app` +- `dooh` +- `podcast` +- `radio` +- `streaming_audio` + +### 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. The publisher confirms by setting the matching `delegation_type` on the agent's authorization in their [adagents.json](/dist/docs/3.0.13/governance/property/adagents). See [ad networks](/dist/docs/3.0.13/sponsored-intelligence/networks) for the bilateral verification pattern. + +## 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 (agent provides brand info) + - **house** (object) + **brands**: Search for domain in properties +3. For house portfolio, find the brand whose properties contain the query domain +4. Return canonical brand information + +Maximum redirect depth: 3 hops. + +## Complete examples + +### Small Business + +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.0.13/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.0.13/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.0.13/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.0.13/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" + } + ], + "brand_agent": { + "url": "https://rights.lotientertainment.com/mcp", + "id": "loti_entertainment" + }, + "rights_agent": { + "url": "https://rights.lotientertainment.com/mcp", + "id": "loti_entertainment", + "available_uses": ["likeness", "voice", "endorsement"], + "right_types": ["talent"], + "countries": ["NL", "BE", "DE"] + } + } + ] +} +``` + +The `rights_agent` field tells crawlers what's licensable without any MCP calls — available uses, rights type, and countries. 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.0.13/brand.json", + "house": "nikeinc.com", + "region": "CN" +} +``` + +## Caching + +Recommended cache TTLs: +- Canonical files: 24 hours +- Redirect files: 24 hours +- Failed lookups: 1 hour + +## 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.0.13/brand-protocol/building-a-brand-agent.mdx b/dist/docs/3.0.13/brand-protocol/building-a-brand-agent.mdx new file mode 100644 index 0000000000..3e360f9c1f --- /dev/null +++ b/dist/docs/3.0.13/brand-protocol/building-a-brand-agent.mdx @@ -0,0 +1,390 @@ +--- +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.0.13/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 | +| Rights manager | `get_rights` + `acquire_rights` | Pinnacle Agency licensing talent | +| Both | All three | Nova Talent managing identity 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.0.13/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. + +## 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.0.13/core/push-notification-config.json)) so buyers can submit creatives for review. See the [acquire_rights task reference](/dist/docs/3.0.13/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: "rejected", + 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: "rejected", + 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: "acquired", /* ... */ }; +} +``` + +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.0.13/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.0.13/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.0.13/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: "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" }, + valid_from: "2026-03-15T00:00:00Z", + valid_until: "2026-06-15T23:59:59Z", + uses: ["likeness"], + countries: ["NL"], + impression_cap: 100000, + approval_status: "approved", + }, +}; +``` + +### How buyers use these + +The buyer's orchestrator passes `generation_credentials` to their creative agent, which uses them with the AI provider. The `rights_constraint` is embedded in the creative manifest's `rights` array — it travels with the creative through the supply chain so every system in the chain knows the usage terms. + +```typescript +// Buyer-side: passing rights to a creative agent +const creative = await creativeAgent.callTool({ + name: "build_creative", + arguments: { + brand: { domain: "bistro-oranje.nl" }, + format_id: { agent_url: "https://ads.example.com", id: "video_social_1080x1920" }, + brief: "15-second vertical video featuring Daan Janssen endorsing Bistro Oranje", + generation_credentials: acquireResponse.generation_credentials, + rights: [acquireResponse.rights_constraint], + }, +}); +``` + +The creative agent uses the `generation_credentials` to authenticate with the AI provider (Midjourney, ElevenLabs, etc.) and produces the asset. The `rights` array becomes part of the creative manifest metadata — downstream systems (ad servers, verification vendors) can inspect it to confirm the creative is properly licensed. + +For the full creative manifest specification, see [creative manifests](/dist/docs/3.0.13/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 + +## Related + +- [Brand protocol overview](/dist/docs/3.0.13/brand-protocol/index) — How brand discovery works +- [brand.json spec](/dist/docs/3.0.13/brand-protocol/brand-json) — File format for brand declaration +- [get_brand_identity](/dist/docs/3.0.13/brand-protocol/tasks/get_brand_identity) — Identity task reference +- [get_rights](/dist/docs/3.0.13/brand-protocol/tasks/get_rights) — Rights discovery task reference +- [acquire_rights](/dist/docs/3.0.13/brand-protocol/tasks/acquire_rights) — Rights acquisition task reference +- [Accounts overview](/dist/docs/3.0.13/accounts/overview) — How account linking works diff --git a/dist/docs/3.0.13/brand-protocol/for-advertisers.mdx b/dist/docs/3.0.13/brand-protocol/for-advertisers.mdx new file mode 100644 index 0000000000..1279342097 --- /dev/null +++ b/dist/docs/3.0.13/brand-protocol/for-advertisers.mdx @@ -0,0 +1,78 @@ +--- +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" +--- + +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 travels with the ad through the supply chain, proving the content is licensed and describing its boundaries. +- **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.0.13/brand-protocol/for-rights-holders.mdx b/dist/docs/3.0.13/brand-protocol/for-rights-holders.mdx new file mode 100644 index 0000000000..b6b9ebe508 --- /dev/null +++ b/dist/docs/3.0.13/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.0.13/brand-protocol/tasks/get_rights) and [rights acquisition](/dist/docs/3.0.13/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.0.13/brand-protocol/index.mdx b/dist/docs/3.0.13/brand-protocol/index.mdx new file mode 100644 index 0000000000..fdbe48d0f9 --- /dev/null +++ b/dist/docs/3.0.13/brand-protocol/index.mdx @@ -0,0 +1,107 @@ +--- +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.0.13/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.0.13/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. + + + 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.0.13/brand-protocol/key-concepts.mdx b/dist/docs/3.0.13/brand-protocol/key-concepts.mdx new file mode 100644 index 0000000000..0cec2e9916 --- /dev/null +++ b/dist/docs/3.0.13/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 addresses buy-side identity in advertising, providing the same clarity that the Property Protocol provides for the sell-side: + +| 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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/registry/index#brand-resolution) | Fetches from Brandfetch, saves identity to registry | No `brand.json` available, need enrichment | +| [Registry lookup](/dist/docs/3.0.13/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. For v1, rights constraints are informational metadata. + +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.0.13/brand-protocol/tasks/acquire_rights.mdx b/dist/docs/3.0.13/brand-protocol/tasks/acquire_rights.mdx new file mode 100644 index 0000000000..a948bd4690 --- /dev/null +++ b/dist/docs/3.0.13/brand-protocol/tasks/acquire_rights.mdx @@ -0,0 +1,309 @@ +--- +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`, `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.0.13/reference/experimental-status) for the full contract. + + +Binding contractual request to acquire rights from a brand agent. Parallels `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.0.13/brand/acquire-rights-request.json) +- **Response**: [`acquire-rights-response.json`](https://adcontextprotocol.org/schemas/3.0.13/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_ids": [ + { "agent_url": "https://creative.adcontextprotocol.org", "id": "video_social_1080x1920" } + ], + "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", + "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" }, + "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", + "verification_url": "https://agent.lotientertainment.com/rights/rts_abc123/verify" + }, + "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", + "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", + "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", + "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` | +| `pricing_option_id` | string | Yes | Selected pricing option | +| `buyer` | brand-ref | Yes | Buyer's brand identity | +| `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_ids` | format-id[] | No | Creative formats that will be produced | +| `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.0.13/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.0.13/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` 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. + +Unlike [`create_media_buy`](/dist/docs/3.0.13/media-buy/task-reference/create_media_buy), which supports an `any_of` past-start auto-adjust pattern (a flight can be time-shifted forward without re-licensing), rights grants are not time-shiftable: 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 + +When the buyer's request carries an intent-phase `governance_context` token on the [protocol envelope](/dist/docs/3.0.13/building/by-layer/L1/security) (the buyer's plan is governed — see [Buyer-side governance invocation](/dist/docs/3.0.13/governance/campaign/specification#buyer-side-governance-invocation)) 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 a `governance_context` is present, 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. + +Requests without a `governance_context` token 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 [Buyer-side governance invocation](/dist/docs/3.0.13/governance/campaign/specification#buyer-side-governance-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 constraint for creative manifests. Contains validity period, country restrictions, and impression cap from agreed terms. Embed directly in the manifest'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 directly into the creative manifest's `rights` array. The rights agent pre-builds this constraint with the correct validity period, country restrictions, and impression cap from the agreed terms. +3. **Approve**: POST a [`creative-approval-request`](https://adcontextprotocol.org/schemas/3.0.13/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.0.13/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**: Place approved creative via `create_media_buy`, respecting country and date restrictions +5. **Report**: Use [`report_usage`](/dist/docs/3.0.13/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.0.13/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.0.13/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.0.13/building/by-layer/L3/webhooks#signature-verification) — RFC 9421 by default (rights agent signs with its `adcp_use: "webhook-signing"` key published at its brand.json `agents[]` entry), 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` 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.0.13/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.0.13/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.0.13/brand-protocol/tasks/get_brand_identity.mdx b/dist/docs/3.0.13/brand-protocol/tasks/get_brand_identity.mdx new file mode 100644 index 0000000000..2ad4ef6994 --- /dev/null +++ b/dist/docs/3.0.13/brand-protocol/tasks/get_brand_identity.mdx @@ -0,0 +1,215 @@ +--- +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.0.13/brand/get-brand-identity-request.json) +- **Response**: [`get-brand-identity-response.json`](https://adcontextprotocol.org/schemas/3.0.13/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.0.13/accounts/overview)) 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.0.13/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", + "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`) | +| `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.0.13/brand-protocol/tasks/get_rights.mdx b/dist/docs/3.0.13/brand-protocol/tasks/get_rights.mdx new file mode 100644 index 0000000000..5cf1f24315 --- /dev/null +++ b/dist/docs/3.0.13/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`, `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.0.13/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.0.13/brand/get-rights-request.json) +- **Response**: [`get-rights-response.json`](https://adcontextprotocol.org/schemas/3.0.13/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` | +| `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` | +| `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` 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.0.13/brand-protocol/tasks/get_brand_identity) for the selected brand's full identity data +2. Call [`acquire_rights`](/dist/docs/3.0.13/brand-protocol/tasks/acquire_rights) with the `rights_id` and `pricing_option_id` diff --git a/dist/docs/3.0.13/brand-protocol/tasks/update_rights.mdx b/dist/docs/3.0.13/brand-protocol/tasks/update_rights.mdx new file mode 100644 index 0000000000..2aaeb044c0 --- /dev/null +++ b/dist/docs/3.0.13/brand-protocol/tasks/update_rights.mdx @@ -0,0 +1,148 @@ +--- +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`, `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.0.13/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`. Only the fields you provide are updated; omitted fields remain unchanged. + +## Schema + +- **Request**: [`update-rights-request.json`](https://adcontextprotocol.org/schemas/3.0.13/brand/update-rights-request.json) +- **Response**: [`update-rights-response.json`](https://adcontextprotocol.org/schemas/3.0.13/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" }, + "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", + "verification_url": "https://agent.lotientertainment.com/rights/rts_abc123/verify" + }, + "implementation_date": "2026-06-28T14:30:00Z" +} +``` + + +## Parameters + +### Request + +| Field | Type | Required | Description | +|-------|------|----------|-------------| +| `rights_id` | string | Yes | Rights grant identifier from `acquire_rights` | +| `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` 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 constraint for re-embedding in creative manifests | +| `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` should replace the constraint in any active creative manifests so downstream systems see the current terms. + +## Next steps + + + + The initial rights acquisition flow. + + + Report impressions against rights grants. + + diff --git a/dist/docs/3.0.13/brand-protocol/tasks/verify_brand_claim.mdx b/dist/docs/3.0.13/brand-protocol/tasks/verify_brand_claim.mdx new file mode 100644 index 0000000000..d51ef3865a --- /dev/null +++ b/dist/docs/3.0.13/brand-protocol/tasks/verify_brand_claim.mdx @@ -0,0 +1,392 @@ +--- +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` reads. + +For high-volume verification (portfolio refresh, creative-clearance batches, crawler scans), use the bulk variant [`verify_brand_claims`](/dist/docs/3.0.13/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 rejections (`disputed` / `not_ours`) are authoritative on a single signed response** — a brand has standing to refuse association unilaterally. + +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.0.13/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.0.13/brand/verify-brand-claim-request.json) +- **Response**: [`verify-brand-claim-response.json`](https://adcontextprotocol.org/schemas/3.0.13/brand/verify-brand-claim-response.json) + +## Capability discovery + +The brand-agent advertises this task in its `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_CLAIM_TYPE` (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_CLAIM_TYPE` cleanly. + +## Authorization tiers + +The public/authorized split per claim type: + +| Tier | What the agent returns | +|---|---| +| **Public** (no linked account) | `claim_type`, `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.0.13/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, no reciprocation 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 | 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 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 | 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: + +```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`, `streaming_audio`. | +| `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 | status ∈ {`owned`, `transferring`} | `owned` / `direct` / `delegated` / `ad_network` — mirrors brand.json's `properties[].relationship`. | +| `brand_id` | Public | status ∈ {`owned`, `transferring`} | The brand within the house that owns this property. | +| `regions` | Public | 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: + +```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 status is `owned`, `licensed_in`, `licensed_out`, or `transferring`. | +| `licensor_domain` | Public | Domain of the licensor when 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.0.13/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 at signing time; it is not a non-repudiation receipt and does not bind the brand to assertions beyond the direction-asymmetric semantics below. Replay protection ([#4716](https://github.com/adcontextprotocol/adcp/issues/4716)), per-brand JWK uniqueness ([#4717](https://github.com/adcontextprotocol/adcp/issues/4717)), and tenant binding on the envelope ([#4718](https://github.com/adcontextprotocol/adcp/issues/4718)) are tracked for 3.2 hardening — until then, verifiers SHOULD treat captured signed responses as freshness-unbound. + +The trust model is **direction-asymmetric**: + +- **Rejection direction** (agent says `disputed` / `not_ours`) is authoritative. A 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.0.13/brand-protocol/brand-json#mutual-assertion-trust-model). + +See [`brand.json` § Agent-augmented verification](/dist/docs/3.0.13/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`. + +## Error handling + +| Error code | Cause | +|---|---| +| `AUTH_INVALID` | Caller's signed envelope did not verify. | +| `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_CLAIM_TYPE` | The agent does not implement the requested `claim_type`. Check `supported_claim_types` via `get_adcp_capabilities`. | +| `INVALID_INPUT` | Required `claim` fields are missing or malformed (e.g., `subsidiary_domain` not a valid hostname). | +| `AMBIGUOUS_MATCH` | For `claim_type: "trademark"` — multiple registrations match. Narrow with `registry`, `number`, or `countries`. | + +```json +{ + "errors": [ + { + "code": "UNSUPPORTED_CLAIM_TYPE", + "message": "claim_type 'property' is not supported by this agent. Supported: subsidiary, parent, trademark." + } + ] +} +``` diff --git a/dist/docs/3.0.13/brand-protocol/tasks/verify_brand_claims.mdx b/dist/docs/3.0.13/brand-protocol/tasks/verify_brand_claims.mdx new file mode 100644 index 0000000000..257116f958 --- /dev/null +++ b/dist/docs/3.0.13/brand-protocol/tasks/verify_brand_claims.mdx @@ -0,0 +1,159 @@ +--- +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.0.13/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.0.13/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.0.13/brand/verify-brand-claims-request.json) +- **Response**: [`verify-brand-claims-response.json`](https://adcontextprotocol.org/schemas/3.0.13/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_CLAIM_TYPE` for one of many claims, an `AMBIGUOUS_MATCH` on one 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": "AMBIGUOUS_MATCH", "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_CLAIM_TYPE`, `INVALID_INPUT` for one item, `AMBIGUOUS_MATCH` | +| Batch-level | top-level `errors[]` | `AUTH_INVALID`, `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.0.13/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` 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: rejections (`disputed` / `not_ours`) are authoritative on a single signed response; assertions (`owned` / `pending_review` / `transferring` / `licensed_*`) require reciprocation before extending positive trust. + +**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.0.13/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.0.13/brand-protocol/ui-guidance.mdx b/dist/docs/3.0.13/brand-protocol/ui-guidance.mdx new file mode 100644 index 0000000000..b4daa79b9d --- /dev/null +++ b/dist/docs/3.0.13/brand-protocol/ui-guidance.mdx @@ -0,0 +1,163 @@ +--- +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.0.13/brand-protocol/tasks/verify_brand_claim) returns `disputed` or `not_ours`, the rejection is authoritative — a brand has standing to refuse association unilaterally. But 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 `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. +- **`status`**, **`context_note`**, and the `claim` payload that triggered it. +- **Cache validity window** (`Cache-Control: max-age`) so you know when the record could be stale. + +A signed envelope is durable evidence. If a buyer is challenged for excluding a property based on a Nike rejection, the signed envelope from Nike's brand-agent at that moment in time 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.0.13/brand-protocol/tasks/verify_brand_claim) — The task this guidance applies to +- [Building a brand agent](/dist/docs/3.0.13/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.0.13/brand-protocol/brand-json#agent-augmented-verification) — The asymmetric trust model that makes rejections authoritative diff --git a/dist/docs/3.0.13/brand-protocol/walkthrough-rights-licensing.mdx b/dist/docs/3.0.13/brand-protocol/walkthrough-rights-licensing.mdx new file mode 100644 index 0000000000..a1494fcfb1 --- /dev/null +++ b/dist/docs/3.0.13/brand-protocol/walkthrough-rights-licensing.mdx @@ -0,0 +1,575 @@ +--- +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.0.13/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_ids": [ + { "agent_url": "https://creatives.pinnaclemedia.com", "id": "video_16x9_30s" }, + { "agent_url": "https://creatives.pinnaclemedia.com", "id": "display_300x250" } + ], + "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", + "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" + }, + "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", + "verification_url": "https://rights.lotientertainment.com/verify/loti_dj_talent_2026" + } +} +``` + + + +--- + +## 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", + "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", + "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", + "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 in its manifest — the buyer does not construct it manually. A single ad can combine talent likeness from one rights holder and music from another, each with different validity periods and geographic restrictions. Downstream participants (SSPs, verification vendors) hit the `verification_url` to confirm the grant is still active before serving. + +### 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.0.13/building/build-an-agent.mdx b/dist/docs/3.0.13/building/build-an-agent.mdx new file mode 100644 index 0000000000..57f239dc29 --- /dev/null +++ b/dist/docs/3.0.13/building/build-an-agent.mdx @@ -0,0 +1,209 @@ +--- +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.0.13/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/client +``` + +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/client) +- [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`, `sales-proposal-mode` | +| `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` | + +Building a **brand rights** agent (licensing talent, music, stock media)? There's no skill today — see the [Brand Protocol docs](/dist/docs/3.0.13/brand-protocol) and claim `brand-rights` under the `brand` domain. + +See the [Compliance Catalog](/dist/docs/3.0.13/building/verification/compliance-catalog) for every domain and specialism with its storyboard and status (stable, preview, deprecated). + +## 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/client@latest storyboard run http://localhost:3001/mcp media_buy_seller --json + +# Python agent +python agent.py & +npx @adcp/client@latest storyboard run http://localhost:3001/mcp media_buy_seller --json + +# Go agent +go run main.go & +npx @adcp/client@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 + ✓ list_creative_formats + ✓ 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.0.13/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/client@latest storyboard list` to see all available storyboards. + + +See **[Validate Your Agent](/dist/docs/3.0.13/building/verification/validate-your-agent)** for the full testing workflow — debugging failing steps, running compliance checks, and validating interactively through Addie. + +## 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/client/docs/llms.txt` | Full protocol in one file — tools, types, error codes, examples | +| Server guide | `node_modules/@adcp/client/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.0.13/building/verification/validate-your-agent)** — Storyboards, compliance checks, and the build-validate-fix loop +- **[Operating an Agent](/dist/docs/3.0.13/building/operating/operating-an-agent)** — What sits behind the protocol layer, and whether to partner, self-host, or build +- **[Schemas and SDKs](/dist/docs/3.0.13/building/by-layer/L0/schemas)** — Schema access, CLI tools, and SDK package exports +- **[MCP integration guide](/dist/docs/3.0.13/building/by-layer/L0/mcp-guide)** — Transport, sessions, and auth details +- **[Task lifecycle](/dist/docs/3.0.13/building/by-layer/L3/task-lifecycle)** — Status values, transitions, and polling +- **[Error handling](/dist/docs/3.0.13/building/by-layer/L3/error-handling)** — Error categories, codes, and recovery diff --git a/dist/docs/3.0.13/building/by-layer/L0/a2a-guide.mdx b/dist/docs/3.0.13/building/by-layer/L0/a2a-guide.mdx new file mode 100644 index 0000000000..2c836ec8e3 --- /dev/null +++ b/dist/docs/3.0.13/building/by-layer/L0/a2a-guide.mdx @@ -0,0 +1,1025 @@ +--- +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.0.13/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.0.13/building/by-layer/L0/a2a-response-extraction)) accept both shapes during the compatibility period. + +## A2A Client Setup + +### 1. Initialize A2A Client + +```javascript +const a2a = new A2AClient({ + endpoint: 'https://adcp.example.com/a2a', + auth: { + type: 'bearer', + token: process.env.ADCP_API_KEY + }, + agent: { + name: "AdCP Media Buyer", + version: "1.0.0" + } +}); +``` + +### 2. Verify Agent Card + +```javascript +// Check available skills +const agentCard = await a2a.getAgentCard(); +console.log(agentCard.skills.map(s => s.name)); +// ["get_products", "create_media_buy", "sync_creatives", ...] +``` + +### 3. Send Your First Task + +```javascript +const response = await a2a.send({ + message: { + role: "ROLE_USER", + parts: [{ + text: "Find video products for 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) + +### Multi-Part Messages + +A2A's key advantage is multi-part messages combining text, data, and files: + +```javascript +// Text + structured data + file +const response = await a2a.send({ + message: { + role: "ROLE_USER", + parts: [ + { + text: "Create campaign with these assets" + }, + { + data: { + skill: "create_media_buy", + parameters: { + packages: ["pkg_001"], + total_budget: 100000 + } + } + }, + { + url: "https://cdn.example.com/hero-video.mp4", + filename: "hero_video_30s.mp4", + mediaType: "video/mp4" + } + ] + } +}); +``` + +### Skill Invocation Methods + +#### Natural Language (Flexible) +```javascript +// Agent interprets intent +const task = await a2a.send({ + message: { + role: "ROLE_USER", + parts: [{ + text: "Find premium CTV inventory under $50 CPM" + }] + } +}); +``` + +#### Explicit Skill (Deterministic) +```javascript +// Explicit skill with exact parameters +const task = await a2a.send({ + message: { + role: "ROLE_USER", + parts: [{ + data: { + skill: "get_products", + parameters: { + max_cpm: 50, + channels: ["ctv"], + tier: "premium" + } + } + }] + } +}); +``` + +#### Hybrid Approach (Recommended) +```javascript +// Context + explicit execution for best results +const task = await a2a.send({ + message: { + role: "ROLE_USER", + parts: [ + { + text: "Looking for inventory for spring campaign targeting millennials" + }, + { + data: { + skill: "get_products", + parameters: { + audience: "millennials", + season: "Q2_2024", + max_cpm: 45 + } + } + } + ] + } +}); +``` + +**Status Handling**: See [Task Lifecycle](/dist/docs/3.0.13/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. + +### Canonical 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. + +```json +{ + "status": "completed", // AdCP unified status (see Core Concepts) + "taskId": "task-123", // A2A task identifier + "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": { + "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.0.13/building/by-layer/L0/a2a-response-format).** + +### A2A-Specific Fields +- **taskId**: A2A task identifier for streaming updates +- **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.0.13/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?.find(isData)?.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.0.13/building/by-layer/L0/a2a-response-format).** + +## Push Notifications (A2A-Specific) + +A2A defines push notifications natively via `PushNotificationConfig`. When you configure a webhook URL, the server will POST task updates directly to your endpoint instead of requiring you to poll. + +### Correlation: payload field, not URL + +Correlate incoming notifications using `operation_id` (and `task_type`) from the payload body — **never** by parsing `pushNotificationConfig.url`. The URL is opaque to the server; the wire-level source of truth for correlation is the payload field. See [Webhooks — Operation IDs and URL templates](/dist/docs/3.0.13/building/by-layer/L3/webhooks#operation-ids-and-url-templates) for the full normative wire contract (it applies to both MCP and A2A — every comparable async-notification protocol in ad tech makes the URL opaque to the firing entity). + +Buyers MAY encode `operation_id` in the URL path or query as a routing aid for their own HTTP server — many web frameworks dispatch on path segments before parsing the body — but that's a buyer-side server design choice, not part of the wire contract. A buyer's server-routing template is not visible to the seller; the seller reads `operation_id` only from the buyer-supplied `pushNotificationConfig.operation_id` field and echoes it verbatim in the payload. + +**URL templates (buyer-side server routing only):** + +```javascript +// Path parameters +url: `https://buyer.com/webhooks/a2a/${taskType}/${operationId}` + +// Query parameters +url: `https://buyer.com/webhooks/a2a?task=${taskType}&op=${operationId}` + +// Or fully opaque — the seller doesn't care about URL shape +url: `https://buyer.com/webhooks/${randomToken}` +``` + +**Example Configuration:** + +```javascript +const operationId = "op_nike_q1_2025"; +const taskType = "create_media_buy"; + +await a2a.send({ + message: { + role: "ROLE_USER", + parts: [{ + data: { + skill: "create_media_buy", + parameters: { /* task params */ } + } + }] + }, + pushNotificationConfig: { + url: `https://buyer.com/webhooks/a2a/${taskType}/${operationId}`, + operation_id: operationId, // canonical correlation channel — seller echoes verbatim + token: "client-validation-token", // Optional: for client-side validation + authentication: { + schemes: ["bearer"], + credentials: "shared_secret_32_chars" + } + } +}); +``` + +For webhook payload formats, protocol comparison, and detailed handling examples, see [Webhooks](/dist/docs/3.0.13/building/by-layer/L3/webhooks). + +## SSE Streaming (A2A-Specific) + +A2A's key advantage is real-time updates via Server-Sent Events: + +### Task Monitoring + +```javascript +class A2aTaskMonitor { + constructor(taskId) { + this.taskId = taskId; + this.events = new EventSource(`/a2a/tasks/${taskId}/events`); + + this.events.addEventListener('status', (e) => { + const update = JSON.parse(e.data); + this.handleStatusUpdate(update); + }); + + this.events.addEventListener('progress', (e) => { + const data = JSON.parse(e.data); + console.log(`${data.percentage}% - ${data.message}`); + }); + } + + handleStatusUpdate(update) { + switch (update.status) { + case 'input-required': + // Handle clarification/approval needed + this.emit('input-required', update); + break; + case 'completed': + this.events.close(); + this.emit('completed', update); + break; + case 'failed': + this.events.close(); + this.emit('failed', update); + break; + } + } +} +``` + +### Real-Time Updates Example + +```javascript +// Start long-running operation +const response = await a2a.send({ + message: { + role: "ROLE_USER", + parts: [{ + data: { + skill: "create_media_buy", + parameters: { packages: ["pkg_001"], total_budget: 100000 } + } + }] + } +}); + +// Monitor in real-time via SSE +if (response.status === 'working' || response.status === 'submitted') { + const monitor = new A2aTaskMonitor(response.taskId); + + monitor.on('progress', (data) => { + updateUI(`${data.percentage}%: ${data.message}`); + }); + + monitor.on('completed', (final) => { + // Extract last DataPart from the artifact — don't assume a positional index. + const parts = final.artifacts[0].parts; + const dataParts = parts.filter(p => p.data != null || p.kind === 'data'); + const payload = dataParts[dataParts.length - 1]?.data; + console.log('Created:', payload?.media_buy_id); + }); +} +``` + +### 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": [{ + "name": "task_result", + "parts": [ + { + "text": "Media buy created successfully" + }, + { + "data": { + "media_buy_id": "mb_12345", + "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 `tasks/get` 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": { + "role": "ROLE_AGENT", + "parts": [ + { "text": "Campaign budget $150K requires VP approval" }, + { + "data": { + "reason": "BUDGET_EXCEEDS_LIMIT" + } + } + ] + }, + "timestamp": "2026-01-22T10:15:00.000Z" + } + } +} +``` + +**All status payloads use AdCP schemas**: Both final statuses (completed/failed) and interim statuses (working, input-required, submitted) have corresponding AdCP schemas referenced in [`async-response-data.json`](https://adcontextprotocol.org/schemas/3.0.13/core/async-response-data.json). Note that interim status schemas are evolving and may change in future versions, so implementors may choose to handle them more loosely. + +### 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` | Status transitions during execution (`working`, `input-required`, `auth-required`, `submitted`) | Lightweight status change 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 (e.g., `tasks/get`) 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. **`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 +- `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) | +| `submitted` | `[task]-async-response-submitted.json` | Acknowledgment (usually minimal) | + +Schema reference: [`async-response-data.json`](https://adcontextprotocol.org/schemas/3.0.13/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?.find(isDataPart) + ?? 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) + +**Key Advantage**: A2A handles context automatically - no manual context_id management needed. + +### Automatic Context + +```javascript +// First request - A2A creates context automatically +const response1 = await a2a.send({ + message: { + role: "ROLE_USER", + parts: [{ text: "Find premium video products" }] + } +}); + +// Follow-up - A2A remembers context automatically +const response2 = await a2a.send({ + message: { + role: "ROLE_USER", + parts: [{ text: "Filter for sports content" }] + } +}); +// System automatically connects this to previous request +``` + +### Explicit Context (Optional) + +```javascript +// When you need explicit control +const response2 = await a2a.send({ + contextId: response1.contextId, // Optional - A2A tracks this anyway + message: { + role: "ROLE_USER", + parts: [{ text: "Refine those results" }] + } +}); +``` + +**vs. MCP**: Unlike MCP's manual context_id management, A2A handles session continuity at the protocol level. + +## Multi-Modal Messages (A2A-Specific) + +A2A's unique capability - combine text, data, and files in one message: + +### Creative Upload with Context + +```javascript +// Upload creative with campaign context in single message +const response = await a2a.send({ + message: { + role: "ROLE_USER", + parts: [ + { + text: "Add this hero video to the premium sports campaign" + }, + { + data: { + skill: "sync_creatives", + parameters: { + media_buy_id: "mb_12345", + action: "upload_and_assign" + } + } + }, + { + url: "https://cdn.example.com/hero-30s.mp4", + filename: "sports_hero_30s.mp4", + mediaType: "video/mp4" + } + ] + } +}); +``` + +### Campaign Brief + Assets + +```javascript +// Submit comprehensive campaign brief +await a2a.send({ + message: { + role: "ROLE_USER", + parts: [ + { + text: "Campaign brief and assets for Q1 launch" + }, + { + url: "https://docs.google.com/campaign-brief.pdf", + filename: "Q1_campaign_brief.pdf", + mediaType: "application/pdf" + }, + { + data: { + budget: 250000, + kpis: ["reach", "awareness", "conversions"], + target_launch: "2026-01-15" + } + } + ] + } +}); +``` + +## 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.0.13/building/by-layer/L3/webhooks). + +### Skill Structure +```javascript +// Standard pattern for explicit skill invocation +await a2a.send({ + message: { + role: "ROLE_USER", + parts: [{ + data: { + skill: "skill_name", // Exact name from Agent Card + parameters: { // Task-specific parameters + // See task documentation for parameters + } + } + }] + } +}); +``` + +### Available Skills +- **Protocol**: `get_adcp_capabilities` (start here to discover agent capabilities) +- **Media Buy**: `get_products`, `list_creative_formats`, `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.0.13/media-buy) and [Signals](/dist/docs/3.0.13/signals/overview) documentation for complete parameter specifications. + +## Agent Cards + +A2A agents advertise capabilities via Agent Cards at `.well-known/agent.json`. + +### Discovering Agent Cards +```javascript +// Get agent capabilities +const agentCard = await a2a.getAgentCard(); + +// List available skills +const skillNames = agentCard.skills.map(skill => skill.name); +console.log('Available skills:', skillNames); + +// Get skill details +const getProductsSkill = agentCard.skills.find(s => s.name === '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": { + "type": "http", + "scheme": "bearer" + } + }, + "security": [{"bearerAuth": []}], + "supportedInterfaces": [ + { + "url": "https://sales.example.com/a2a/jsonrpc", + "protocolBinding": "JSONRPC", + "protocolVersion": "1.0" + } + ], + "defaultInputModes": ["text/plain", "application/json"], + "defaultOutputModes": ["application/json"], + "capabilities": { + "streaming": true, + "pushNotifications": true, + "extendedAgentCard": false + }, + "skills": [ + { + "name": "get_products", + "description": "Discover available advertising products", + "examples": [ + "Find premium CTV inventory for sports fans", + "Show me video products under $50 CPM" + ] + } + ], + "extensions": [ + { + "uri": "https://adcontextprotocol.org/extensions/adcp", + "description": "AdCP media buying protocol support", + "required": false, + "params": { + "adcp_version": "2.6.0", + "protocols_supported": ["media_buy"], + "extensions_supported": ["sustainability"] + } + } + ] +} +``` + +### 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 + + +**Recommended**: Use [`get_adcp_capabilities`](/dist/docs/3.0.13/protocol/get_adcp_capabilities) for runtime capability discovery. The agent card extension provides static metadata for agent registries and discovery services. + + +Include the AdCP extension in your agent card's `extensions` array to declare AdCP support programmatically. + +The A2A protocol uses an `extensions` array where each extension has: +- **`uri`**: Extension identifier (use `https://adcontextprotocol.org/extensions/adcp`) +- **`description`**: Human-readable description of how you use AdCP +- **`required`**: Whether clients must support this extension (typically `false` for AdCP) +- **`params`**: AdCP-specific configuration (see schema below) + +```javascript +// Check if agent supports AdCP +const agentCard = await fetch('https://sales.example.com/.well-known/agent.json') + .then(r => r.json()); + +// Find the AdCP extension in the extensions array +const adcpExt = agentCard.extensions?.find( + ext => ext.uri === 'https://adcontextprotocol.org/extensions/adcp' +); + +if (adcpExt) { + console.log('AdCP Version:', adcpExt.params.adcp_version); + console.log('Supported domains:', adcpExt.params.protocols_supported); + // ["media_buy", "creative", "signals"] + console.log('Typed extensions:', adcpExt.params.extensions_supported); + // ["sustainability"] +} +``` + +**Extension Params**: The `adcp-extension.json` schema was used in v2 to describe these params, but was removed in v3. For v3+ agents, use the `get_adcp_capabilities` task for runtime capability discovery instead. The extension `params` object above shows the typical structure. + +:::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.0.13/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.0.13/reference/versioning#version-negotiation) for the full contract. +::: + +**Benefits**: +- Clients can discover AdCP capabilities without making test calls +- Declare which protocol domains you implement (media_buy, creative, signals) +- Enable compatibility checks based on version + +## Integration Example + +```javascript +// Initialize A2A client +const a2a = new A2AClient({ /* config */ }); + +// Use unified status handling (see Core Concepts) +async function handleA2aResponse(response) { + switch (response.status) { + case 'input-required': + // Handle clarification (see Core Concepts for patterns) + const input = await promptUser(response.message); + return a2a.send({ + contextId: response.contextId, + message: { + role: "ROLE_USER", + parts: [{ text: input }] + } + }); + + 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: { + role: "ROLE_USER", + parts: [ + { text: "Find luxury car inventory" }, + { data: { skill: "get_products", parameters: { audience: "luxury car intenders" } } } + ] + } +}); + +const finalResult = await handleA2aResponse(result); +``` + +## 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.0.13/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.0.13/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.0.13/building/by-layer/L3/task-lifecycle) for status handling and workflows +- **Task Reference**: See [Media Buy Tasks](/dist/docs/3.0.13/media-buy) and [Signals](/dist/docs/3.0.13/signals/overview) +- **Protocol Comparison**: Compare with [MCP integration](/dist/docs/3.0.13/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.0.13/building/by-layer/L3/task-lifecycle) - this guide focuses on A2A transport specifics only.** \ No newline at end of file diff --git a/dist/docs/3.0.13/building/by-layer/L0/a2a-response-extraction.mdx b/dist/docs/3.0.13/building/by-layer/L0/a2a-response-extraction.mdx new file mode 100644 index 0000000000..6c031e9983 --- /dev/null +++ b/dist/docs/3.0.13/building/by-layer/L0/a2a-response-extraction.mdx @@ -0,0 +1,277 @@ +--- +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.0.13/building/by-layer/L0/a2a-response-format). For error-specific extraction, see [Transport Error Mapping](/dist/docs/3.0.13/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. + +## 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. + +**Streaming envelope.** A2A 1.0 wraps streaming responses and push-notification payloads in a `StreamResponse` oneof with exactly one of the keys `task`, `message`, `statusUpdate`, or `artifactUpdate` (A2A 1.0 §3.2.3, §4.3.3). Non-streaming responses (e.g., `tasks/get`, or v0.3 over HTTP) deliver the bare object. Extraction unwraps a 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 (1.0) | `.artifacts[0].parts[]` | Last DataPart (carries `adcp_error` for policy/validation rejections) | +| `working` | Interim | `status.message.parts[]` | First DataPart | +| `submitted` | Interim | `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. Rejected tasks are expected to carry an `adcp_error` DataPart describing why the request was rejected (tier/policy/validation). + +## Extraction Algorithm + +Clients MUST extract AdCP data from A2A responses using these steps: + +0. **Unwrap stream 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 (A2A 1.0 `StreamResponse` oneof). Bare `Task` / `TaskStatusUpdateEvent` objects — non-streaming responses 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 (out-of-band agent messages) MUST be ignored by task-oriented extractors — step 1 returns null when the unwrapped object has no `status.state`. Webhook/SSE handlers MUST NOT return a `200 OK` acknowledgment for unrecognized `{ message }` envelopes; return `400 Bad Request` or silently discard at the transport layer to avoid acting as a presence oracle for attackers probing endpoints. +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). +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.0.13/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.0.13/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.0.13/building/by-layer/L0/a2a-response-format) — canonical response structure for sellers +- [Transport Error Mapping](/dist/docs/3.0.13/building/operating/transport-errors) — error extraction from MCP and A2A +- [MCP Response Extraction](/dist/docs/3.0.13/building/by-layer/L0/mcp-response-extraction) — equivalent spec for MCP +- [A2A Guide](/dist/docs/3.0.13/building/by-layer/L0/a2a-guide) — A2A transport integration diff --git a/dist/docs/3.0.13/building/by-layer/L0/a2a-response-format.mdx b/dist/docs/3.0.13/building/by-layer/L0/a2a-response-format.mdx new file mode 100644 index 0000000000..6a08663b48 --- /dev/null +++ b/dist/docs/3.0.13/building/by-layer/L0/a2a-response-format.mdx @@ -0,0 +1,822 @@ +--- +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.0.13/building/by-layer/L0/a2a-guide#a2a-protocol-versions) for a side-by-side with v0.3. + +AdCP's top-level unified `status` field (returned by `@adcp/sdk`) continues to use the lowercase shorthand (`"completed"`, `"failed"`, `"working"`, `"input-required"`, `"submitted"`). That is an AdCP abstraction over `status.state` — not an A2A wire value. + +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 pattern:** + +```json +{ + "status": "completed", + "taskId": "task_123", + "contextId": "ctx_456", + "artifacts": [{ + "name": "task_result", + "parts": [ + { + "text": "Found 12 video products perfect for pet food campaigns" + }, + { + "data": { + "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) + +**Multiple artifacts:** Only for fundamentally distinct deliverables (e.g., creative asset + separate trafficking report). Rare in AdCP - prefer single artifact with multiple parts. + +### Interim Responses (working, 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": { + "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 (e.g. `tasks/get`) deliver the bare object. Clients unwrap before reading `status.state` — see [A2A Response Extraction](/dist/docs/3.0.13/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 final status is reached** (`completed`, `failed`, `canceled`, or `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": { + "products": [...] // ← Direct schema-compliant response + } +} +``` + +**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? }` | +| `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 status to determine the correct data extraction location. The `status` referenced here is AdCP's unified lowercase value (e.g. `"completed"`); the raw A2A wire value at `status.state` is `TASK_STATE_COMPLETED` in 1.0 or `completed` in v0.3. Normalize before comparing — see [A2A Response Extraction](/dist/docs/3.0.13/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; // AdCP unified status + + // 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({ + task: taskName, + params: 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? + +During streaming operations, intermediate responses may include old progress data: + +```json +// Working status with progress +{ + "status": "working", + "artifacts": [{ + "parts": [ + {"text": "Searching inventory..."}, + {"data": {"progress": 25}} + ] + }] +} + +// Completed - last data part is authoritative +{ + "status": "completed", + "artifacts": [{ + "parts": [ + {"text": "Found 12 products"}, + {"data": {"progress": 25}}, // Old + {"data": {"products": [...], "total": 12}} // ← Authoritative + ] + }] +} +``` + +**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: { + 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 = { + taskId: 'task_123', + contextId: 'ctx_456', + status: { + state: 'TASK_STATE_COMPLETED', + timestamp: '2026-01-22T10:30:00.000Z' + }, + artifacts: [{ + parts: [ + { text: 'Found 3 products' }, + { data: { 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 = { + taskId: 'task_123', + status: { state: 'TASK_STATE_COMPLETED' }, + artifacts: [{ + 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 + +### Task-Level Errors (Partial Failures) + +Task executed but couldn't complete fully. Use `errors` array in DataPart with `status: "completed"`: + +```json +{ + "status": "completed", + "taskId": "task_123", + "artifacts": [{ + "parts": [ + { + "text": "Signal discovery completed with partial results" + }, + { + "data": { + "signals": [...], + "errors": [{ + "code": "NO_DATA_IN_REGION", + "message": "No signal data available for Australia", + "field": "countries[1]", + "details": { + "requested_country": "AU", + "available_countries": ["US", "CA", "GB"] + } + }] + } + } + ] + }] +} +``` + +**When to use errors array:** +- Platform authorization issues (`PLATFORM_UNAUTHORIZED`) +- Partial data availability +- Validation issues in subset of data + +### Protocol-Level Errors (Fatal) + +Task couldn't execute. Use `status: "failed"` with message: + +```json +{ + "taskId": "task_456", + "status": "failed", + "message": { + "role": "ROLE_AGENT", + "parts": [{ + "text": "Authentication failed: Invalid or expired API token" + }] + } +} +``` + +**When to use status: failed:** +- Authentication failures (invalid credentials, expired tokens) +- Invalid request parameters (malformed JSON, missing required fields) +- Resource not found (unknown taskId, expired context) +- System errors (database unavailable, internal service failure) + +### Where the Error Lives: Decision Rule + +Placement is chosen by what the server has and which state it's in: + +| Situation | State | Location | Payload | +|---|---|---|---| +| Task executed, subset failed | `completed` | `artifacts[0].parts[]` DataPart | `{ , errors: [...] }` | +| Task failed with structured error | `failed` | `artifacts[0].parts[]` DataPart | `{ adcp_error: {...} }` | +| Task rejected by policy/validation (1.0) | `rejected` | `artifacts[0].parts[]` DataPart | `{ adcp_error: {...} }` | +| System-initiated cancel (timeout, upstream failure) | `canceled` | `artifacts[0].parts[]` DataPart | `{ adcp_error: {...} }` | +| User-initiated cancel (`tasks/cancel`) | `canceled` | `status.message.parts[]` TextPart | Human-readable text only | +| Protocol/transport failure, no artifact produced | `failed` | `status.message.parts[]` TextPart | Human-readable text only | + +**Rule of thumb:** if the server has structured error data, put it in artifacts as a DataPart. `status.message` is the free-text fallback for cases where no task artifact was ever produced (JSON-RPC parse errors, auth handshake failures, malformed requests, or a user-initiated cancel with no further detail). A2A 1.0 §3.7 reinforces this: *"Messages SHOULD NOT be used to deliver task outputs. Results SHOULD be returned using Artifacts."* + +**`rejected` vs `failed`.** Use `rejected` when the server refuses to attempt the task (policy/tier/validation check, before any work is started). Use `failed` when work started and encountered a fatal error. Both carry `adcp_error` in the artifact — the state distinguishes *when* the failure occurred, which drives different retry and UX behavior on the caller side. + +**Cancel origin is client-reconciled, not seller-attributed.** `status.state: "canceled"` (or `TASK_STATE_CANCELED`) does not tell the caller whether the cancel was user-initiated or system-initiated — a seller could place `adcp_error` in artifacts for what was actually a user-initiated cancel to mislead the buyer's bookkeeping or retry logic. Clients MUST reconcile cancel origin locally: if the caller has an outstanding `tasks/cancel` request for this `taskId`, treat the cancel as user-initiated regardless of payload and ignore any `adcp_error` the seller attached. Clients MUST NOT retry a user-initiated cancel on the basis of a seller-sent `adcp_error.recovery` hint. + +## Status Mapping + +AdCP uses A2A's TaskState enum directly: + +| A2A Status | Payload Type | Data Location | AdCP Usage | +|------------|--------------|---------------|------------| +| `completed` | `Task` | `.artifacts` | Task finished successfully, data in DataPart, optional errors array | +| `failed` | `Task` | `.artifacts` (or `status.message` for text-only) | Fatal error preventing completion, `adcp_error` when structured | +| `rejected` (1.0) | `Task` | `.artifacts` | Policy/validation rejection, `adcp_error` with rejection reason | +| `canceled` | `Task` | `.artifacts` (typically none) | Task canceled by user or system | +| `input-required` | `TaskStatusUpdateEvent` | `status.message.parts` | Need user input/approval, data + text explaining what's needed | +| `auth-required` (1.0) | `TaskStatusUpdateEvent` | `status.message.parts` | Authentication challenge during task execution (scheme, URL, scopes) | +| `working` | `TaskStatusUpdateEvent` | `status.message.parts` | Processing (< 120s), optional progress data | +| `submitted` | `TaskStatusUpdateEvent` | `status.message.parts` | Long-running (hours/days), minimal data, use webhooks/polling | + +## Webhook Payloads + +Async operations (`status: "submitted"`) deliver the same artifact structure in webhooks: + +```json +POST /webhook-endpoint +{ + "taskId": "task_123", + "status": "completed", + "timestamp": "2026-01-22T10:30:00.000Z", + "artifacts": [{ + "parts": [ + {"text": "Media buy approved and live"}, + {"data": { + "media_buy_id": "mb_456", + "packages": [...], + "creative_deadline": "2026-01-30T23:59:59.000Z" + }} + ] + }] +} +``` + +Extract AdCP data using the same last-DataPart pattern. **For webhook authentication, retry patterns, and security**, see [Webhooks](/dist/docs/3.0.13/building/by-layer/L3/webhooks). + +## File Parts in Responses + +Creative operations MAY include file references: + +```json +{ + "status": "completed", + "artifacts": [{ + "parts": [ + {"text": "Creative uploaded and preview generated"}, + {"data": { + "creative_id": "cr_789", + "format_id": { + "agent_url": "https://creatives.adcontextprotocol.org", + "id": "video_standard_30s" + }, + "status": "ready" + }}, + {"url": "https://cdn.example.com/cr_789/preview.mp4", "filename": "preview.mp4", "mediaType": "video/mp4"} + ] + }] +} +``` + +**File part usage:** Preview URLs, generated assets, trafficking reports. **Not for** raw AdCP response data (always use DataPart). + +## Retry and Idempotency + +### TaskId-Based Deduplication + +A2A's `taskId` enables retry detection. Agents SHOULD: +- Return cached response if `taskId` matches a completed operation (within TTL window) +- Reject duplicate `taskId` submission if operation is still in progress + +```json +// Duplicate taskId during active operation +{ + "taskId": "task_123", + "status": "failed", + "message": { + "role": "ROLE_AGENT", + "parts": [{ + "text": "Task 'task_123' is already in progress. Use tasks/get to check status." + }] + } +} +``` + +## Examples + +
+Product Discovery Success + +```json +{ + "status": "completed", + "taskId": "task_001", + "contextId": "ctx_abc", + "artifacts": [{ + "name": "product_catalog", + "parts": [ + { + "text": "Found 8 CTV products targeting sports fans under $50 CPM" + }, + { + "data": { + "products": [ + { + "product_id": "ctv_sports_premium", + "name": "Premium Sports CTV" + } + // ... 7 more products + ] + } + } + ] + }] +} +``` +
+ +
+Media Buy with Approval Required + +```json +{ + "status": "input-required", + "taskId": "task_002", + "contextId": "ctx_def", + "artifacts": [{ + "name": "approval_request", + "parts": [ + { + "text": "Media buy exceeds auto-approval limit ($100K). Please approve to proceed." + }, + { + "data": { + "media_buy_id": "mb_pending_456", + "packages": [ + { "package_id": "pkg_pending_001" }, + { "package_id": "pkg_pending_002" } + ], + "total_budget": 150000, + "currency": "USD", + "creative_deadline": "2026-02-01T23:59:59.000Z" + } + } + ] + }] +} +``` +
+ +
+Signal Discovery with Partial Failure + +```json +{ + "status": "completed", + "taskId": "task_003", + "contextId": "ctx_ghi", + "artifacts": [{ + "name": "signal_results", + "parts": [ + { + "text": "Found 3 signals for luxury automotive. Note: No data available for Australia region." + }, + { + "data": { + "signals": [ + { + "signal_id": "lux_auto_us", + "name": "Luxury Auto Intenders - US", + "reach": 2500000 + } + ], + "total": 3, + "errors": [{ + "code": "NO_DATA_IN_REGION", + "message": "No signal data available for requested region: Australia", + "field": "countries[1]", + "details": { + "requested_country": "AU", + "available_countries": ["US", "CA", "GB"] + } + }] + } + } + ] + }] +} +``` +
+ +
+Platform Authorization Issue (Task-Level Error) + +Platform/operation-specific authorization failures are task-level errors: + +```json +{ + "status": "completed", + "taskId": "task_004", + "contextId": "ctx_jkl", + "artifacts": [{ + "name": "signal_activation_result", + "parts": [ + { + "text": "Signal activation failed: Account not authorized for Peer39 data on PubMatic" + }, + { + "data": { + "errors": [{ + "code": "PLATFORM_UNAUTHORIZED", + "message": "Account 'brand-456-pm' not authorized for Peer39 data on PubMatic. Contact your PubMatic account manager to enable access.", + "details": { + "platform": "pubmatic", + "account_id": "brand-456-pm", + "data_provider": "peer39" + } + }] + } + } + ] + }] +} +``` +
+ +
+Protocol-Level Failure (Fatal) + +Authentication failures are protocol-level errors: + +```json +{ + "taskId": "task_005", + "status": "failed", + "message": { + "role": "ROLE_AGENT", + "parts": [{ + "text": "Authentication failed: Invalid or expired API token. Please refresh your credentials and retry." + }] + } +} +``` +
+ +## 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`) + +**Interim Responses (status: "working", "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.0.13/building/by-layer/L0/a2a-guide) - Complete A2A integration guide +- [Task Lifecycle](/dist/docs/3.0.13/building/by-layer/L3/task-lifecycle) - Status handling patterns +- [Error Handling](/dist/docs/3.0.13/building/by-layer/L3/error-handling) - Fatal vs non-fatal errors +- [Protocol Comparison](/dist/docs/3.0.13/building/concepts/protocol-comparison) - MCP vs A2A differences diff --git a/dist/docs/3.0.13/building/by-layer/L0/index.mdx b/dist/docs/3.0.13/building/by-layer/L0/index.mdx new file mode 100644 index 0000000000..f85c9e9e77 --- /dev/null +++ b/dist/docs/3.0.13/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.0.13/building/cross-cutting/sdk-stack#l0--wire--transport). + +## Pages in this layer + +- **[Schemas](/dist/docs/3.0.13/building/by-layer/L0/schemas)** — schema bundle, supply-chain verification, type generation, version pinning. +- **[MCP guide](/dist/docs/3.0.13/building/by-layer/L0/mcp-guide)** — `tools/call` envelope, JSON-RPC 2.0, transport adapter shape. +- **[A2A guide](/dist/docs/3.0.13/building/by-layer/L0/a2a-guide)** — SSE event streams, task framing, artifact extraction. +- **[A2A response format](/dist/docs/3.0.13/building/by-layer/L0/a2a-response-format)** — A2A wire-format reference. +- **[MCP response extraction](/dist/docs/3.0.13/building/by-layer/L0/mcp-response-extraction)** — parsing `tools/call` responses to typed values. +- **[A2A response extraction](/dist/docs/3.0.13/building/by-layer/L0/a2a-response-extraction)** — parsing A2A streams and artifacts. diff --git a/dist/docs/3.0.13/building/by-layer/L0/mcp-guide.mdx b/dist/docs/3.0.13/building/by-layer/L0/mcp-guide.mdx new file mode 100644 index 0000000000..5c7e104c98 --- /dev/null +++ b/dist/docs/3.0.13/building/by-layer/L0/mcp-guide.mdx @@ -0,0 +1,880 @@ +--- +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.0.13/building/by-layer/L3/task-lifecycle). + +## Testing AdCP via MCP + +You can test AdCP tasks using the [CLI tools](/dist/docs/3.0.13/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', { + 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', { + 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_format_id: { agent_url: 'https://creative.agent', 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.0.13/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.0.13/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.0.13/building/by-layer/L3/task-lifecycle) for complete status handling patterns. + +**Status Handling**: See [Task Lifecycle](/dist/docs/3.0.13/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 +await mcp.call('list_creative_formats', {...}); // Get 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.0.13/media-buy) and [Signals](/dist/docs/3.0.13/signals/overview) sections. + +## Async Operations via MCP Tasks + +AdCP uses [MCP Tasks](https://modelcontextprotocol.io/specification/2025-11-25/basic/utilities/tasks) for long-running operations over MCP. This removes the LLM from the polling path — the client handles task lifecycle at the protocol level, and the model only sees the final result. + +:::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 **webhooks** or **polling via `tasks/get`** instead — these work with any MCP client. See [Async Operations](/dist/docs/3.0.13/building/by-layer/L3/async-operations) and [Push Notifications](/dist/docs/3.0.13/building/by-layer/L3/webhooks) for transport-independent patterns. + +MCP Tasks are the right choice when you control the MCP client (e.g., building your own orchestrator with `@modelcontextprotocol/sdk`) or when client support matures. +::: + +### 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 | +| `list_creative_formats` | `forbidden` | Instant catalog lookup | +| `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 via `tasks/get`, retrieve the result via `tasks/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": { + "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 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 a running task, send `tasks/cancel` with the `taskId`. + +### AdCP Status Mapping + +AdCP uses a richer set of statuses than MCP Tasks. When serving over MCP, AdCP statuses map to MCP Task statuses: + +| 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` | `failed` | Use `statusMessage` for rejection reason | +| `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 polling within the MCP session, but some AdCP operations outlive a single session (e.g., a media buy that takes 24 hours for publisher approval). For these, combine MCP Tasks with `push_notification_config`: + +```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 status within the session. If the session ends before the task completes, the webhook delivers the result independently. See [Push Notifications](/dist/docs/3.0.13/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', { + brief: "Sports campaign" +}); + +// Follow-up - context automatically included +const refined = await session.call('get_products', { + 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', { + 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 — the client handles polling via 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.0.13/core/mcp-webhook-payload.json) and [Webhooks — Operation IDs](/dist/docs/3.0.13/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.0.13/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.0.13/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 specific task +const taskStatus = await session.pollTask('task_456', true); +if (taskStatus.status === 'completed') { + console.log('Result:', taskStatus.result); +} + +// State reconciliation +const reconciliation = await session.reconcileState(); +if (reconciliation.missing_from_client.length > 0) { + console.log('Found orphaned tasks:', reconciliation.missing_from_client); + // 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 a task 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, but requires client support | + +### 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.0.13/building/by-layer/L3/webhooks) for payload formats and authentication. + +### Option 2: Polling (backup) + +Use `tasks/get` as a backup for `submitted` operations, or when you can't expose a webhook endpoint: + +```javascript +async function pollForResult(session, taskId, pollInterval = 30000) { + while (true) { + const response = await session.pollTask(taskId, 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.0.13/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.0.13/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": "list_creative_formats" } + ], + "_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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/building/by-layer/L3/task-lifecycle) for status handling and workflows +- **Task Reference**: See [Media Buy Tasks](/dist/docs/3.0.13/media-buy) and [Signals](/dist/docs/3.0.13/signals/overview) +- **Protocol Comparison**: Compare with [A2A integration](/dist/docs/3.0.13/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.0.13/building/by-layer/L3/task-lifecycle) - this guide focuses on MCP transport specifics only.** \ No newline at end of file diff --git a/dist/docs/3.0.13/building/by-layer/L0/mcp-response-extraction.mdx b/dist/docs/3.0.13/building/by-layer/L0/mcp-response-extraction.mdx new file mode 100644 index 0000000000..b09b4d7e71 --- /dev/null +++ b/dist/docs/3.0.13/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.0.13/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.0.13/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.0.13/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.0.13/building/operating/transport-errors) — error extraction from MCP and A2A +- [A2A Response Extraction](/dist/docs/3.0.13/building/by-layer/L0/a2a-response-extraction) — equivalent spec for A2A +- [MCP Guide](/dist/docs/3.0.13/building/by-layer/L0/mcp-guide) — MCP transport integration diff --git a/dist/docs/3.0.13/building/by-layer/L0/schemas.mdx b/dist/docs/3.0.13/building/by-layer/L0/schemas.mdx new file mode 100644 index 0000000000..915b7fde5f --- /dev/null +++ b/dist/docs/3.0.13/building/by-layer/L0/schemas.mdx @@ -0,0 +1,236 @@ +--- +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.0.13/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.0.13/` | 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. + +## 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.0.13/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.0.13/building/verification/compliance-catalog) for every protocol and specialism an agent can claim. + +## Common schemas + +| Schema | URL | +|--------|-----| +| Product | `https://adcontextprotocol.org/schemas/3.0.13/core/product.json` | +| Media Buy | `https://adcontextprotocol.org/schemas/3.0.13/core/media-buy.json` | +| Creative Format | `https://adcontextprotocol.org/schemas/3.0.13/core/format.json` | +| Schema Registry | `https://adcontextprotocol.org/schemas/3.0.13/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.0.13/`, `/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.0.13/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: + +### 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 task schemas +├── core/ # Modular schemas with $ref +├── media-buy/ +└── index.json # Schema registry +``` + +### 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 | +| `bundled/core/` | tasks-get, tasks-list | + +See the [schema registry](https://adcontextprotocol.org/schemas/3.0.13/index.json) for all available schemas. + +## Version discovery + +```bash +# Get the full semver of the published schema 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.0.13/index.json | jq '.published_version' +``` + +Check [Release Notes](/dist/docs/3.0.13/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.0.13/building/by-layer/L1/index.mdx b/dist/docs/3.0.13/building/by-layer/L1/index.mdx new file mode 100644 index 0000000000..6269cbaa28 --- /dev/null +++ b/dist/docs/3.0.13/building/by-layer/L1/index.mdx @@ -0,0 +1,24 @@ +--- +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.0.13/building/cross-cutting/sdk-stack#l1--identity--signing). + +## Pages in this layer + +- **[Security implementation profile](/dist/docs/3.0.13/building/by-layer/L1/security)** — RFC 9421 wire details, KMS integration, replay-window tuning. +- **[Webhook verifier tuning](/dist/docs/3.0.13/building/by-layer/L1/webhook-verifier-tuning)** — clock-skew handling, key-rotation transitions, signature failure diagnostics. diff --git a/dist/docs/3.0.13/building/by-layer/L1/request-signing.mdx b/dist/docs/3.0.13/building/by-layer/L1/request-signing.mdx new file mode 100644 index 0000000000..7cff8876b5 --- /dev/null +++ b/dist/docs/3.0.13/building/by-layer/L1/request-signing.mdx @@ -0,0 +1,749 @@ +--- +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 3.0 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 is **optional in AdCP 3.0** and becomes **mandatory in AdCP 4.0** for all spend-committing operations. Agents that don't sign yet must still tolerate signature headers (`Signature`, `Signature-Input`, `Content-Digest`) on inbound requests without breaking. + + +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.0.13/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.0.13/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 request body (see `covers_content_digest` capability) + +If any covered component changes after signing, verification fails. + +### Key separation + +Every agent needs **separate keys per purpose**, each with a distinct `kid` and `adcp_use` tag: + +- `adcp_use: "request-signing"` — for signing outbound tool calls +- `adcp_use: "webhook-signing"` — for signing outbound webhooks + +Reusing a key across purposes is forbidden by the spec. + +### 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 webhook keys — never reuse a request-signing key for webhook signing (per `adcp_use` purpose separation). + + + +### 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.0.13/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 serve both request-signing and webhook-signing keys, include both in the same JWKS with different `kid` values and `adcp_use` tags. + +### 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: 'either' }, + 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="webhook-signing", 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 a separate JWK with `"adcp_use": "webhook-signing"` in your JWKS alongside your request-signing key. Never reuse the same key for both purposes — receivers enforce purpose at the JWK `adcp_use` level, not the RFC 9421 tag. + +## 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: + + + +```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: 'either', + }, + }, + }, + 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": "either", + }, + ) +``` + + +```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: "either", + }, +}), 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.0.13/building/by-layer/L1/security#revocation) for the revocation list format. + +## Testing + +### Conformance vectors + +The spec ships **39 test vectors** at `compliance/cache/3.0.0/test-vectors/request-signing/` (source at `static/compliance/source/test-vectors/request-signing/`): + +- **12 positive vectors**: valid signed requests your verifier must accept (non-4xx) +- **27 negative vectors**: invalid requests your verifier must reject with `401` and the correct error code + +```bash +# Debug a single vector +adcp signing verify-vector \ + --vector compliance/cache/3.0.0/test-vectors/request-signing/positive/001-basic-post.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=""`: + +| Code | Meaning | +|---|---| +| `missing_signature` | Signature headers not present when required | +| `invalid_signature` | Signature doesn't verify against the public key | +| `expired_signature` | Signature timestamp too old | +| `replayed_nonce` | Nonce was already used | +| `revoked_key` | Key has been revoked | +| `unknown_key` | Key ID not found in JWKS | +| `unsupported_algorithm` | Algorithm not in allowlist | + +For the full error code taxonomy, see [Transport error taxonomy](/dist/docs/3.0.13/building/by-layer/L1/security#transport-error-taxonomy). + +## Related + +- [Security: Signed Requests](/dist/docs/3.0.13/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.0.13/building/by-layer/L3/webhooks) — webhook setup including signature verification +- [Validate Your Agent](/dist/docs/3.0.13/building/verification/validate-your-agent) — full compliance validation including signing conformance +- [Build an Agent](/dist/docs/3.0.13/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.0.13/building/by-layer/L1/security.mdx b/dist/docs/3.0.13/building/by-layer/L1/security.mdx new file mode 100644 index 0000000000..eee5575b48 --- /dev/null +++ b/dist/docs/3.0.13/building/by-layer/L1/security.mdx @@ -0,0 +1,1943 @@ +--- +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.0.13/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 | +| `list_creative_formats` | Public format catalog | + +## Webhook Security + +AdCP 3.0 unifies webhook signing on the [AdCP RFC 9421 profile](#webhook-callbacks) — the seller signs outbound webhooks with its adagents.json-published key, and the buyer verifies against the seller's published JWKS. 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` or `accounts[].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` or `accounts[].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.0.13/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: `. Any body-level `signature` field is a convenience copy and MUST NOT be trusted over the headers. + +**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`, collection-list `webhook_url`, TMP provider `endpoint`, `adagents.json` `authoritative_location`, and `reporting_bucket.setup_instructions`. + +Account-level webhook subscribers that receive high-volume event families, including wholesale feed webhooks, 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 activation challenge or equivalent proof-of-control before treating those subscribers as active. + +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). +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.0.13/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.0.13/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.0.13/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.0.13/governance/property/managed-networks#security-considerations) — validator fetch semantics, change detection, relationship termination. +- [TMP provider registration](/dist/docs/3.0.13/trusted-match/specification#provider-registration-security) — dynamic registration authentication, router-to-provider auth, `/health` info-leakage rules. + +## 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.0.13/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.0.13/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.0.13/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.0.13/reference/glossary#a) and [Agent](/dist/docs/3.0.13/reference/glossary#a). + +### The two-step pattern + +Every request carries an explicit `account` (via `account_id` for explicit-account models, or the `{brand, operator}` natural key for implicit models). 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 AdCP task request** — read and mutating alike. 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. Scoping by both dimensions prevents cross-account cache collisions when one agent (e.g. an agency) acts on multiple accounts: an identical-looking `create_media_buy` under account A and account B is two distinct buys, never one cached response replayed across the two. + +**Enforcement curve.** Sellers MUST reject any **mutating** request that omits `idempotency_key` with `INVALID_REQUEST` from 3.0 onward (unchanged). For **read** requests, the rule phases in across two minors: + +- **3.1.0** — sellers MUST accept reads that carry `idempotency_key` and process per rules 2–9 (no rejecting on undeclared envelope fields). Sellers SHOULD reject reads that omit it with `INVALID_REQUEST`; sellers MAY accept the omission for the 3.1.x maintenance window. +- **3.2.0** — sellers MUST reject reads that omit `idempotency_key` with `INVALID_REQUEST`. The grace window closes at the 3.2 cut. + +This staged enforcement lets hand-rolled buyer integrations — built via curl, thin MCP clients, or OpenAPI codegen that doesn't include the field uniformly — migrate over a release window rather than at the 3.1 cut. Buyer SDKs (`@adcp/client`, `adcp-py`) already send `idempotency_key` uniformly today, so SDK-using integrators are unaffected by the cut date. + +**Why universal — including read tools.** Several AdCP tasks are polymorphic. `get_products` is the canonical case: `buying_mode: 'brief'` / `'wholesale'` may complete synchronously (pure read), but the same tool MAY return a `Submitted` envelope when curation requires upstream queries or HITL, and `buying_mode: 'refine'` with `action: 'finalize'` is a commit that transitions a proposal to committed with an `expires_at` hold window (see [refinement guide § Finalize is exclusive](/dist/docs/3.0.13/media-buy/product-discovery/refinement)). Buyers cannot predict at call time whether a given call will be a pure read, an async-task creation, or a commit — so the wire contract requires `idempotency_key` on every call uniformly. For calls that resolve as pure reads, the cache provides byte-stable replay-on-retry within the TTL, which is harmless and gives buyers a uniform retry-safe contract; for calls that resolve as async-task creation or commit, the cache provides the same at-most-once guarantees as on mutating tasks. The alternative — classifying per-call read-vs-mutating in the buyer's SDK — is not feasible when the same task name has both read and write modes. Decoding unknown `error.code` values returned by sellers (whether `INVALID_REQUEST` during the grace window or codes added in later minors) follows the [Forward-compatible decoding](/dist/docs/3.0.13/building/by-layer/L3/error-handling#forward-compatible-decoding-normative) rule. + +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`) 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.0.13/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). Under universal idempotency, read traffic also contributes 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 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. The split-budget shape (separate read and write counters) MUST be implemented from 3.1 onward even when operators 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.0.13/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 `error.details.retry_after` (seconds, integer) 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 `error.details.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 every AdCP task request (see rule 1 above — read and mutating alike). Tool wrappers MUST accept it; 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 + +Buyers MUST generate a unique `idempotency_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 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. Buyers 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: the "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 rules 1–9 of this section. `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 other AdCP task request remains subject to rules 1–9; the fail-closed obligation below applies 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 on every subsequent AdCP task request against that seller — raise an error, don't assume a default — so the buyer learns about the non-compliance immediately rather than after a silent double-booking. The fail-closed rule applies to every AdCP task request (other than `get_adcp_capabilities` itself) now that `idempotency_key` is required universally — including calls that resolve as pure reads, because the buyer cannot predict at call time whether a polymorphic task (`get_products` brief vs. refine+finalize vs. async-Submitted) will resolve as a read or a mutation, and the missing TTL declaration means the seller is unsafe to retry against in any mode. + +**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.0.13/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.0.13/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. + +**The 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 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.** Under universal idempotency (3.1+), the cache holds read-tool responses (`get_products`, `list_accounts`, `list_creatives`, `get_signals`, etc.) in addition to the write receipts it held in 3.0.x. Those 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 implicit-accounts 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. +- **Sellers** persist the token as received and include it verbatim on all subsequent governance calls. Sellers that implement verification MUST verify per the checklist below before acting on the token. Sellers that have not yet implemented verification MUST still persist and forward the token unchanged so that verification-capable parties downstream (auditors, regulators) can act on it later. +- **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 (buyer correlation IDs, policy decision log, etc.) — sellers and buyers never need to parse the payload. + +#### Scope and dependencies + +- **In scope (3.0)**: buy-side governance. The `governance_context` token authorizes spend commitments made via AdCP tasks (`create_media_buy`, `acquire_rights`, `activate_signal`, `creative_services`). Sellers that run their own compliance policies (e.g., CTV political-ad rules, publisher brand-safety gates) express those via `conditions` responses on their own governance workflows; they do not issue signed tokens under this profile. +- **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 if any `crit`-listed claim is present. Per RFC 7515 §4.1.11, `crit` is an array of header/claim names that MUST be understood by the verifier. Verifiers MUST reject the token if any name in `crit` is not recognized. Governance agents MUST list in `crit` any claim whose omission or misinterpretation would change authorization semantics (e.g., a future `budget_cap` claim). This prevents silent downgrade attacks when the profile adds claims in later versions. + +**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 | `plan_id` the token authorizes. Note: `sub` is used here as a resource identifier rather than a user or authenticated agent. Implementations that log `sub` as a user ID should be aware of this. | +| `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.0.13/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` (pre-seller), `purchase`, `modification`, or `delivery`. Matches the governance check phase this token authorizes. The operation the seller is performing determines the required phase: `create_media_buy` → `purchase`; `update_media_buy` → `modification`; delivery-reporting callbacks → `delivery`. | +| `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 `purchase`, `modification`, and `delivery` phase tokens. MUST be null or absent on `intent` phase tokens. | +| `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). | +| `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`. | + +**Unknown-claim handling**: verifiers MUST ignore claims whose names they do not recognize *unless* those claim names appear in the token's `crit` header, in which case the token MUST be rejected. This asymmetric rule — ignore unknown, but reject unknown-and-critical — is how future versions of the profile add semantically meaningful claims without breaking backward compatibility for verifiers that haven't updated yet. + +**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. + +**`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.0.13/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. +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 + +Before treating a request as governance-approved, sellers MUST perform these checks in order, short-circuiting 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 name is not recognized by the verifier. +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` does not equal the `plan_id` in the governance call this token is attached to (prevents plan swap). +11. Reject if `phase` does not match the operation: `purchase` for `create_media_buy`; `modification` for `update_media_buy`; `delivery` for delivery-reporting callbacks; `intent` only for pre-seller buyer-side evaluation. +12. For non-intent tokens, reject if `media_buy_id` does not equal the media buy ID in the request. +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 does the seller treat the request as governance-approved. Note that sellers 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, `nbf` in future | 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` mismatch, `sub` mismatch, `phase` mismatch, `media_buy_id` mismatch | No | `governance_token_not_applicable` | Reject. Token valid but not for this operation. | + +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" +} +``` + +Payload: +```json +{ + "iss": "https://gov.scope3.com", + "sub": "plan_q1_2026_launch", + "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", + "policy_decision_hash": "9b2a...f41c", + "audit_log_pointer": "https://gov.scope3.com/plans/plan_q1_2026_launch/logs/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; planId: string; mediaBuyId?: string; phase: "intent" | "purchase" | "modification" | "delivery"; + 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, + }).catch(() => { throw new GovTokenError("governance_token_invalid"); }); + + if (payload.sub !== ctx.planId) throw new GovTokenError("governance_token_not_applicable"); + if (payload.phase !== ctx.phase) 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.0.13/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 4.0 — the next breaking-changes accumulation window — will require it for spend-committing operations. The substrate ships in 3.0 so early adopters can surface canonicalization and proxy interop bugs before enforcement. 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's `adagents.json` agent entries. 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 an `adcp_use: "webhook-signing"` key 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. Cross-purpose key reuse is forbidden: 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). +- 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.0.13/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) (`adcp_use: "webhook-signing"`). The split is deliberate — see [Security Model: What gets signed](/dist/docs/3.0.13/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.0.13/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.0.13/brand-protocol/tasks/verify_brand_claim#trust-model) and [Building a brand agent — Signing setup](/dist/docs/3.0.13/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. + +#### Transport scope + +| Class | 3.0 | 4.0 | +|---|---|---| +| Spend-committing (`create_media_buy`, `update_media_buy`, `acquire_*`, `activate_signal`) | Optional, capability-advertised | Required | +| Reversible state changes (`sync_creatives`, `update_creative_status`) | Optional | Recommended | +| Read / discovery (`get_products`, `get_media_buy_delivery`, `list_*`) | Not in scope | Not in scope | +| TMP `provider_endpoint_url` requests | Out of scope (TMP has its own envelope) | 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 in 3.0 + +For implementers who want to pilot signing in 3.0 before the 4.0 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. Read `covers_content_digest` (`"required"` / `"forbidden"` / `"either"`) to see whether you must, must not, or may cover `content-digest`. +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` in `get_adcp_capabilities`. Leave `required_for: []` during the pilot; add operations incrementally per counterparty. +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 (verify and log; do not reject on failure) for a pilot counterparty before populating `required_for`. Surface verification failures in monitoring rather than operations 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 verifier (3.0 shadow mode):** steps 1–9, 9a, and 10 of the checklist, in-memory replay cache, one-minute revocation polling with a lightweight `kid`-membership check (full grace semantics deferred). This is acceptable for log-and-observe shadow mode because no request is being rejected on replay or digest failure. **Before adding any operation to `required_for`, implement steps 11–13** — digest recompute (step 11), replay insert after success (step 13), and the full revocation-stale grace window (part of step 9). Flipping to enforce with an incomplete verifier surfaces replay and body-integrity gaps on live production traffic rather than in shadow logs. 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. An operator signing both AdCP requests and webhooks needs distinct key material and must publish two entries with the same JWK shape, distinct `x`, distinct `kid`, and distinct `adcp_use`. The value is 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": "webhook-signing", + "key_ops": ["verify"] + } + ] +} +``` + +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.0.13/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 / IPv6 bracketing preserved; userinfo stripped; default port stripped). IPv6 hosts retain their brackets in `@authority` (`[::1]:8443`). 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. + +**Binary value encoding (`Signature`, `Content-Digest`).** RFC 9421 §3.1 and §2.1.3 emit binary values as the RFC 8941 Structured Field `sf-binary` token (`::`), and RFC 8941 §3.3.5 specifies the standard base64 alphabet (RFC 4648 §4) with `+`/`/` and `=` padding. The AdCP profile OVERRIDES this: `Signature` and `Content-Digest` sf-binary values MUST be encoded with **base64url without padding** (RFC 4648 §5), producing tokens whose inner bytes draw from `[A-Za-z0-9_-]` with no trailing `=`. + +Rationale: URL-safe, pad-free, and symmetric with the `nonce` sig-param which is already specified base64url-unpadded. It avoids the two interop hazards of standard base64 in HTTP header values — `/` that some proxies rewrite and `=` that some header parsers treat as a structured-field parameter delimiter. + +Verifier requirements: + +1. Signers MUST emit base64url-no-padding only. A signer that emits a `Signature` or `Content-Digest` value containing `+`, `/`, or `=` is non-conformant. +2. Verifiers MUST accept base64url-no-padding. Verifiers SHOULD ALSO lenient-decode pure standard-base64 tokens (translate `+`→`-` then `/`→`_`, then strip any trailing `=`, then base64url-decode) for interop with counterparties that predate this clarification. This lenience is a compatibility affordance scheduled for removal in **AdCP 3.2** — signers relying on it MUST migrate to base64url-no-padding before then. +3. Verifiers MUST reject any token that mixes alphabets (any character in `[+/=]` AND any character in `[-_]` within the same token value) with `request_signature_header_malformed`. Mixed-alphabet tokens are ambiguous: `A+B-` could decode to different bytes depending on the order of "translate standard-base64 chars" and "base64url-decode" steps, and differing `Content-Digest` bytes across verifiers let an attacker stage a digest mismatch that one verifier accepts and another rejects. +4. The `expected_signature_base` field in the conformance vectors is independent of binary-value encoding — it contains the canonical signature base bytes, not any header-field encoding. Only the emitted `Signature` token itself is encoded. + +**Note on `Content-Digest` from non-AdCP upstreams.** RFC 9530 §2 defines `Content-Digest` and defers sf-binary to RFC 8941 (standard base64), so a conformant 9530 emitter from another ecosystem (a CDN, a non-AdCP framework) may populate `Content-Digest` on an inbound request using the RFC 8941 default. The AdCP override above applies to **signed AdCP requests**; verifiers processing such a request MUST use the override rules. Verifiers handling unsigned traffic or `Content-Digest` from non-AdCP upstreams MAY accept either encoding — this is outside the signing profile's scope. + +**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`: log failures, do not 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. + +**Cross-namespace replay risk on shared transport.** When a single `@target-uri` accepts both `tools/call` envelopes and JSON-RPC protocol methods (the canonical MCP layout — both POST to `/mcp`), `@target-uri` and `@method` alone do not bind which JSON-RPC method the body invokes; the `method` field lives in the body. Without `content-digest` coverage, an on-path attacker who captures a signed `tools/call` request can swap the body to `{"method":"tasks/cancel",...}` (or vice-versa) within the signature window and the verifier will accept it. Sellers that populate `protocol_methods_required_for` (or any `protocol_methods_*`) on a transport shared with `tools/call` therefore SHOULD set `covers_content_digest: 'required'` so the body — and through it the JSON-RPC method — is bound to the signature. Sellers that cannot adopt `'required'` MUST mount AdCP and protocol-method traffic on distinct `@target-uri`s so that `@target-uri` itself partitions the namespaces. + +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 (or the `adagents.json` equivalent for seller-side agents publishing keys for webhook callbacks). Every agent that signs — of any `type` — uses the same publication pattern. + +**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.0.13/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. Publishers hold the corresponding private key locally with `["sign"]` per JWK spec. | +| `adcp_use` | `"request-signing"` | AdCP-specific purpose discriminator. Distinguishes from `"governance-signing"` (JWS profile), `"webhook-signing"` (seller→buyer webhook callbacks), and any future AdCP signing purpose. Verifiers MUST reject any JWK with absent or different `adcp_use` when verifying a request signature. Sellers that also sign webhooks publish a separate `"webhook-signing"` key under their `adagents.json` entry — see [Webhook callbacks](#webhook-callbacks). | +| `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`: 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-signing and webhook-signing 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, webhook-signing, TMP keys + +Operators SHOULD go further and serve each signing purpose from a distinct subdomain (up to four origins). 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. 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 transport-signing and 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 **purpose AND role** (sender-vs-receiver position, not just signing purpose): + - **Sell-side webhook-signing 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-signing` purpose, sell-side role) — it does NOT override operator-side webhook-signing (e.g., a buyer-hosted webhook receiving operator status callbacks). + - **All other (purpose, role) tuples** — request-signing (any direction), operator-side webhook-signing, 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 `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 purpose. Mismatch on any purpose → reject with `request_signature_key_origin_mismatch` carrying `{ purpose, expected_origin, actual_origin }`. Skip the check **only** for the specific (agent, purpose, role) tuple whose source was a publisher pin — operator-side use of the same purpose 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-signing only, prefer the publisher's `adagents.json signing_keys` pin (when present) over the operator's `jwks_uri`. For all other (purpose, role) tuples, use the matched entry's `jwks_uri` (default: `/.well-known/jwks.json` at the origin of `A`). +7. **Consistency check.** For every 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, purpose, 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 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. If the verifier's `covers_content_digest` capability is `"required"`, reject if `content-digest` is not covered. If the verifier's `covers_content_digest` capability is `"forbidden"` and `content-digest` IS covered, reject 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` is unchanged by this rule: it was already non-rejecting for unsigned requests and continues to surface signed-but-invalid signatures as monitoring signal during rollout. + + +**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` (or `supported_for`) rather than `required_for`. The verifier verifies signatures when present and logs failures, but never rejects for missing signature. + +*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. + + +Verifiers that genuinely cannot preserve body bytes due to legacy infrastructure MAY advertise `covers_content_digest: "forbidden"`; this is an opt-out for the narrow case where the infrastructure cannot be fixed. `"required"` is recommended for all spend-committing operations. `"either"` is the default — signers choose per-request, and the verifier accepts both covered and uncovered forms. + +**`"required"` is strict.** When a verifier advertises `covers_content_digest: "required"`, a signed request with a body that does not cover `content-digest` is a hard reject with `request_signature_components_incomplete`. Verifiers MUST NOT accept it as a "soft" signed-but-body-unbound request; there is no soft mode. Signers that don't want to cover `content-digest` for a given call MUST route to a verifier whose policy is `"either"` or `"forbidden"`, or not sign the call at all. + +#### 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": "either", + "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`: one of `"required"`, `"forbidden"`, or `"either"` (default). `"required"`: signers MUST cover `content-digest`; unsigned-body signatures are rejected. `"forbidden"`: signers MUST NOT cover `content-digest`; body-bound signatures are rejected. `"either"`: signer chooses; verifier accepts both. +- `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, logs failures in monitoring, but **does NOT reject**. Used as a shadow-mode bridge from `supported_for` to `required_for`. Enables per-counterparty pilots where the seller watches real-traffic failure rates before enforcing. Precedence: `required_for > warn_for > supported_for`. Signers SHOULD sign operations in `warn_for`; verifiers MUST NOT reject unsigned or failed-verify requests to these operations. +- `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; traffic is unaffected. 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, verifiers ship with `required_for: []` and populate it selectively. `warn_for` is the recommended pre-production stop before flipping to enforce. In 4.0 the protocol normatively requires `required_for` to include all spend-committing operations the verifier supports, and `covers_content_digest: "required"` is recommended for those operations. + +#### 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`), 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` or `accounts[].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` or `accounts[].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` or `accounts[].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.** Webhook-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. An agent that signs both outgoing requests and outgoing webhooks publishes one JWKS with two distinct JWKs differentiated by `adcp_use`. Each webhook-signing JWK MUST declare: + +| Member | Value | +|---|---| +| `use` | `"sig"` | +| `key_ops` | `["verify"]` | +| `adcp_use` | `"webhook-signing"` | +| `kid` | distinct within the JWKS; MUST NOT collide with any other `kid` regardless of `adcp_use` | +| `alg` | `"EdDSA"` or `"ES256"` | + +Cross-purpose reuse is forbidden and locally enforceable: a request-signing key MUST NOT verify a webhook signature, and a webhook-signing key MUST NOT verify a request signature. Buyers verifying a webhook MUST reject any JWK whose `adcp_use` is not exactly `"webhook-signing"` with `webhook_signature_key_purpose_invalid`. + +**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 across `adcp_use` values within the same JWKS are forbidden specifically so a request-signing-key compromise cannot be repurposed as a webhook-signing capability. + +**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` or `accounts[].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` or any `accounts[].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 **two parameter substitutions** — the `tag` value (`adcp/webhook-signing/v1` instead of `adcp/request-signing/v1`) and the direction-of-trust resolution (seller's brand.json `agents[]` entry instead of the buyer's). 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 two parameter substitutions, 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` and `Signature` headers per RFC 9421 §4. 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` equals `"webhook-signing"`. Reject on any mismatch, including absent `adcp_use` (`webhook_signature_key_purpose_invalid`). +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.0.13/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.0.13/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` | `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, five signing systems, each `kid`-scoped: + +- governance JWS — `adcp_use: "governance-signing"` +- request signing (RFC 9421) — `adcp_use: "request-signing"` +- webhook signing (RFC 9421) — `adcp_use: "webhook-signing"` +- designated-task response-payload JWS — `adcp_use: "response-signing"` (see [Designated-task payload-envelope response signing](#designated-task-response-signing) above) +- 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.0.13/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.x | Reference SDKs ship; pilots surface bugs | Conformance test vectors drive cross-SDK interop. Early adopters turn on `required_for` with named counterparties, incrementally. | +| 4.0 | Required for spend-committing operations | `required_for` MUST include `create_media_buy`, `acquire_*`, and any spend-committing operation the verifier supports. Signers MUST sign. `covers_content_digest: "required"` recommended for those operations. | + +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.example_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" — everywhere else, zero. +- 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 discovery endpoints (`get_adcp_capabilities`, `list_creative_formats`) MAY use 0-RTT; everything else MUST NOT. + +### mTLS transport + +When [mTLS](/dist/docs/3.0.13/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.0.13/building/concepts/security-model) for the threat model and the five-layer defense narrative this reference implements +- **Webhooks**: See [Webhooks](/dist/docs/3.0.13/building/by-layer/L3/webhooks) for webhook security patterns +- **Error Handling**: See [Error Handling](/dist/docs/3.0.13/building/by-layer/L3/error-handling) for authentication errors +- **Orchestrator Design**: See [Orchestrator Design](/dist/docs/3.0.13/building/operating/orchestrator-design) for multi-tenant security diff --git a/dist/docs/3.0.13/building/by-layer/L1/webhook-verifier-tuning.mdx b/dist/docs/3.0.13/building/by-layer/L1/webhook-verifier-tuning.mdx new file mode 100644 index 0000000000..752132bfa2 --- /dev/null +++ b/dist/docs/3.0.13/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.0.13/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.0.13/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.0.13/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.0.13/building/by-layer/L2/account-state.mdx b/dist/docs/3.0.13/building/by-layer/L2/account-state.mdx new file mode 100644 index 0000000000..edf19ae9c9 --- /dev/null +++ b/dist/docs/3.0.13/building/by-layer/L2/account-state.mdx @@ -0,0 +1,249 @@ +--- +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.0.13/accounts/tasks/sync_governance) registers governance agents on the account. Once configured, sellers with governance support will call [`check_governance`](/dist/docs/3.0.13/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_id": { + "agent_url": "https://creative.retailer.com/adcp", + "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 | +| `list_creative_formats` — discover formats | `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.0.13/building/by-layer/L2/accounts-and-agents)** — Account identity, billing models, and `sync_accounts` details +- **[Async operations](/dist/docs/3.0.13/building/by-layer/L3/async-operations)** — How async approval workflows work +- **[Webhooks](/dist/docs/3.0.13/building/by-layer/L3/webhooks)** — Receiving notifications when async operations complete +- **[Catalogs](/dist/docs/3.0.13/creative/catalogs)** — Typed data feeds that provide the items publishers render in ads diff --git a/dist/docs/3.0.13/building/by-layer/L2/accounts-and-agents.mdx b/dist/docs/3.0.13/building/by-layer/L2/accounts-and-agents.mdx new file mode 100644 index 0000000000..a5091713aa --- /dev/null +++ b/dist/docs/3.0.13/building/by-layer/L2/accounts-and-agents.mdx @@ -0,0 +1,527 @@ +--- +title: Accounts and agents +description: "AdCP accounts and agents: the four entities in every transaction (brand, account, operator, agent), explicit vs implicit account models, 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` ([brand.json](/dist/docs/3.0.13/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`), resolved via `/.well-known/brand.json`. Single-brand houses use the domain alone (no `brand_id`). + +**Account** — A billing relationship between a buyer and seller. Determines rate card, payment terms, credit limit, and who receives invoices. Every billable operation requires an account reference — a seller-assigned `account_id` (explicit accounts) or a natural key (`brand`, `operator`) (implicit accounts). Sandbox accounts follow the same model — explicit sandboxes use `account_id`, implicit sandboxes use the natural key with `sandbox: true`. + +**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.0.13/accounts/overview) for the full commercial model and [sync_accounts](/dist/docs/3.0.13/accounts/tasks/sync_accounts) for the task reference. + +## What sellers declare + +Sellers configure the `account` section of [`get_adcp_capabilities`](/dist/docs/3.0.13/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) | + +**2. Do you require operator-level auth?** (`require_operator_auth`) + +This single field determines both the authentication model and how accounts are referenced: + +When `false` (default) — **implicit 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` — **explicit accounts**: 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. The buyer discovers accounts via `list_accounts` and passes a seller-assigned `account_id`. + +For sandbox, the path follows the account model: explicit accounts (`require_operator_auth: true`) discover pre-existing test accounts via `list_accounts`; implicit accounts declare sandbox via `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.0.13/accounts/tasks/get_account_financials). This only applies to operator-billed accounts. + +**Example capabilities:** + +```json +{ + "account": { + "require_operator_auth": false, + "supported_billing": ["operator", "agent"] + } +} +``` + +Sellers that support `advertiser` billing declare it explicitly: + +```json +{ + "account": { + "require_operator_auth": false, + "supported_billing": ["operator", "agent", "advertiser"] + } +} +``` + +These fields combine into common patterns. + +## Seller patterns + +Which kind of platform are you buying from? That determines the account setup pattern. + +| Platform type | `require_operator_auth` | `supported_billing` | +|---------------|------------------------|-------------------| +| [Social / walled garden](#social-platform) | `true` | `["operator"]` | +| [Direct publisher](#direct-publisher) | `false` | `["operator"]` or `["operator", "agent"]` | +| [DSP / programmatic](#dsp--programmatic) | `false` | `["agent"]` | + +### Social platform + +The operator already has an account on the platform — an ad account, a business manager, a self-serve dashboard. The agent obtains the operator's credentials (via OAuth or API key) and opens a per-operator session. The platform bills the operator directly. + +**Capabilities:** + +```json +{ + "account": { + "require_operator_auth": true, + "supported_billing": ["operator"], + "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 `sync_accounts` to set up each brand for this operator +3. Wait for account status `active` (poll `list_accounts` if `pending_approval`) +4. Call `get_products` / `create_media_buy` with the operator's session and `account` reference + +**sync_accounts request:** + +```json +{ + "accounts": [{ + "brand": { "domain": "nova-brands.com", "brand_id": "spark" }, + "operator": "pinnacle-media.com", + "billing": "operator" + }] +} +``` + +Seller checks `nova-brands.com/.well-known/brand.json`, finds Pinnacle Media in `authorized_operators`, and fast-tracks provisioning: + +```json +{ + "accounts": [{ + "brand": { "domain": "nova-brands.com", "brand_id": "spark" }, + "operator": "pinnacle-media.com", + "action": "created", + "status": "active", + "billing": "operator", + "account_scope": "operator_brand" + }] +} +``` + +**Key point:** The operator's credential — not the agent's — authorizes all calls in that session. Brand.json verification is secondary to the credential. + +### 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"] + } +} +``` + +**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"] + } +} +``` + +**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.0.13/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.0.13/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.0.13/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 which model applies — and the model determines the buyer's entire integration path. + + +Sellers that support caller-scope introspection attach an optional `authorization` object to each per-account entry in [`sync_accounts`](/dist/docs/3.0.13/accounts/tasks/sync_accounts) and [`list_accounts`](/dist/docs/3.0.13/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.0.13/accounts/overview#caller-authorization) for the full shape and semantics. + + +### Explicit accounts (`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 agent discovers the account via `list_accounts`. The agent is not involved in authentication or billing — those are handled between the advertiser and seller directly. + +**Typical sellers:** Social platforms, self-serve ad platforms — anywhere the advertiser already has an account. + +**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.) + +The agent doesn't set up accounts, negotiate billing, or manage authentication with the seller. It just discovers what already exists and lets the human choose. + +### Implicit 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. + +**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`) | Which brand is advertising | +| `operator` | Who operates on the brand's behalf (agency, trading desk, or the brand itself) | +| `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 implicit accounts; explicit sandbox accounts are pre-existing. | + +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: + - **Implicit accounts** (`require_operator_auth: false`): pass the natural key `{ "brand": { "domain": "acme-corp.com" }, "operator": "pinnacle-media.com" }` + - **Explicit accounts** (`require_operator_auth: true`): pass `{ "account_id": "acc_acme_001" }` (discover via `list_accounts`) + - **Sandbox (implicit)**: pass the natural key with `sandbox: true` (declared via `sync_accounts`) + - **Sandbox (explicit)**: pass `{ "account_id": "test_acc_001" }` (pre-existing test account, discovered via `list_accounts`) +4. When anything changes (billing model, new brand, new operator), call `sync_accounts` again + +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, sandbox)` uniquely identifies an account relationship. The `brand` is a nested object with `domain` and optional `brand_id`. `operator` is always required — when the brand operates directly, set `operator` to the brand's domain. `sandbox` defaults to `false` when omitted. For example, `{brand: {domain: "acme-corp.com"}, operator: "acme-corp.com"}` (brand buying direct) is a different account from `{brand: {domain: "acme-corp.com"}, operator: "pinnacle-media.com"}` (brand via agency). Adding `sandbox: true` references the sandbox account for the same pair. + +See [sync_accounts task reference](/dist/docs/3.0.13/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` | The agent's default account | Agent sends any brand — seller routes to the standing agent 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. + +`sync_accounts` does not return `account_id` — the seller manages account identifiers internally. For explicit accounts (`require_operator_auth: true`), discover account IDs via `list_accounts` — including sandbox test accounts. For implicit accounts (`require_operator_auth: false`), use natural keys (`brand` + `operator`) on subsequent requests — adding `sandbox: true` for sandbox 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.0.13/building/by-layer/L2/authentication.mdx b/dist/docs/3.0.13/building/by-layer/L2/authentication.mdx new file mode 100644 index 0000000000..55d73fbc35 --- /dev/null +++ b/dist/docs/3.0.13/building/by-layer/L2/authentication.mdx @@ -0,0 +1,349 @@ +--- +title: Authentication +description: "AdCP authentication guide: public vs authenticated operations, bearer token 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 +- **`list_creative_formats`** - Browse available creative formats +- **`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.0.13/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. | +| **Bearer tokens** | Permitted; effective baseline for 3.0 | **PROHIBITED for mutating / financial operations**; permitted for read / discovery only | Documented sunset for mutating ops — see the [known limitation](/dist/docs/3.0.13/reference/known-limitations). | + + + **3.0 mutating-operation floor.** Until 3.1 lands, Bearer tokens 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. + + +### Bearer tokens (3.0 baseline) + +``` +Authorization: Bearer +``` + +Tokens may be: +- **Opaque tokens**: Server-validated strings mapped to agents +- **JWT tokens**: Self-contained tokens with embedded claims + +Implementations MUST enforce TLS 1.2+ on all Bearer-authenticated endpoints. See the [implementation security reference](/dist/docs/3.0.13/building/by-layer/L1/security) for transport requirements. + +The credential MUST be carried in the `Authorization` request header per [RFC 6750 §2](https://www.rfc-editor.org/rfc/rfc6750#section-2). 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` MUST also be accepted on the same endpoint. Buyer agents and SDKs MUST emit `Authorization: Bearer`; 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.0.13/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.0.13/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.0.13/core/account.json). + +## Tenant resolution + +AdCP resolves tenant from the authenticated principal, not from request payloads. Seller agents map the authenticated identity (bearer token, 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.0.13/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: + +- **Bearer tokens over HTTP** — `Authorization: Bearer ` per [RFC 6750 §2](https://www.rfc-editor.org/rfc/rfc6750#section-2). +- **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. A seller that detects a credential-shaped key in the payload (e.g., `_access_token`, `api_key`, `client_secret`, `bearer`, or `authorization` at any nesting depth) SHOULD reject the request with [`CREDENTIAL_IN_ARGS`](/dist/docs/3.0.13/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.0.13/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.0.13/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 + +Both MCP and A2A 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. + +**Header alias policy by leg.** The two protocol legs differ in what aliases they accept beyond the standard header: + +- **A2A** — `Authorization: Bearer ` only. The `x-adcp-auth` custom header is not recognized on the A2A surface; the seller's agent card declares a `bearerAuth` `HTTPAuthSecurityScheme` (see the [A2A guide — Agent Cards](/dist/docs/3.0.13/building/by-layer/L0/a2a-guide#agent-cards)). Sending `x-adcp-auth` on the A2A leg returns HTTP 401. +- **MCP** — `Authorization: Bearer ` (primary). `x-adcp-auth` is accepted as a back-compat 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.0.13/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.0.13/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.0.13/media-buy/advanced-topics/sandbox) for testing capabilities including sandbox mode for risk-free development. \ No newline at end of file diff --git a/dist/docs/3.0.13/building/by-layer/L2/context-sessions.mdx b/dist/docs/3.0.13/building/by-layer/L2/context-sessions.mdx new file mode 100644 index 0000000000..fc5cf19633 --- /dev/null +++ b/dist/docs/3.0.13/building/by-layer/L2/context-sessions.mdx @@ -0,0 +1,299 @@ +--- +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', { + brief: "Video ads" +}); +const contextId = result1.context_id; // Save this! + +// Follow-up - must include context_id +const result2 = await mcp.call('get_products', { + 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.0.13/building/by-layer/L2/index.mdx b/dist/docs/3.0.13/building/by-layer/L2/index.mdx new file mode 100644 index 0000000000..44a9674b7c --- /dev/null +++ b/dist/docs/3.0.13/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.0.13/building/cross-cutting/sdk-stack#l2--auth--registry). + +## Pages in this layer + +- **[Authentication](/dist/docs/3.0.13/building/by-layer/L2/authentication)** — credentials and permissions. +- **[Account state](/dist/docs/3.0.13/building/by-layer/L2/account-state)** — multi-tenant account resolution. +- **[Accounts and agents](/dist/docs/3.0.13/building/by-layer/L2/accounts-and-agents)** — relationship between account scoping and agent identity. +- **[Context & sessions](/dist/docs/3.0.13/building/by-layer/L2/context-sessions)** — managing principal state across requests. diff --git a/dist/docs/3.0.13/building/by-layer/L3/async-operations.mdx b/dist/docs/3.0.13/building/by-layer/L3/async-operations.mdx new file mode 100644 index 0000000000..02cfd51b53 --- /dev/null +++ b/dist/docs/3.0.13/building/by-layer/L3/async-operations.mdx @@ -0,0 +1,347 @@ +--- +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 — configure a webhook via `push_notification_config`. 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 should configure a webhook and move on. + +:::tip Webhooks for `submitted` operations +**Webhooks** are the recommended approach for `submitted` operations — they work with any transport (MCP, A2A, REST) and handle operations that outlive a single session. See [Push Notifications](/dist/docs/3.0.13/building/by-layer/L3/webhooks). + +**Polling** via `tasks/get` works as a simpler alternative or backup. See the [polling pattern](#polling-for-submitted-operations) below. + +**MCP Tasks** handle async at the protocol level, but client support is still limited — most chat-based MCP clients (Claude Desktop, Cursor) don't yet support task-augmented tool calls. If you're building your own MCP client or using the JS SDK directly, MCP Tasks work well. See [MCP Guide](/dist/docs/3.0.13/building/by-layer/L0/mcp-guide#async-operations-via-mcp-tasks). +::: + +## Operation examples + +### Synchronous (instant) + +| Operation | Description | +|-----------|-------------| +| `get_adcp_capabilities` | Agent capability discovery | +| `list_creative_formats` | Format 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 | +| `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. + +## 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 webhook delivery window — if you're also polling as backup, use a 30-second interval. + +## 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.0.13/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 — need webhook or polling + if (response.status === 'submitted') { + // Poll as backup (webhook is preferred — see Push Notifications) + 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 a backup for `submitted` operations when webhooks aren't configured or as a fallback. 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('tasks/get', { + 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('tasks/get', { + 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.0.13/building/by-layer/L3/webhooks) for push notifications instead of polling +- **Task Lifecycle**: See [Task Lifecycle](/dist/docs/3.0.13/building/by-layer/L3/task-lifecycle) for status handling details +- **Orchestrator Design**: See [Orchestrator Design](/dist/docs/3.0.13/building/operating/orchestrator-design) for production patterns diff --git a/dist/docs/3.0.13/building/by-layer/L3/comply-test-controller.mdx b/dist/docs/3.0.13/building/by-layer/L3/comply-test-controller.mdx new file mode 100644 index 0000000000..c25e1032fa --- /dev/null +++ b/dist/docs/3.0.13/building/by-layer/L3/comply-test-controller.mdx @@ -0,0 +1,756 @@ +--- +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.** AAO grading does NOT require or use it. The AAO compliance heartbeat drives storyboards against the seller's registered production URL with `account.sandbox: true` on every request, and the seller's prod stack is responsible for honoring the flag — no controller endpoint needed. + +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 AAO 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 *your* testing, not the AAO-side 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` on next call | +| **Reporting** | Call `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`; 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` (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.0.13/compliance/comply-test-controller-request.json) | [`comply-test-controller-response.json`](https://adcontextprotocol.org/schemas/3.0.13/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`, `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_account_status", + "force_media_buy_status", + "force_create_media_buy_arm", + "force_task_completion", + "force_session_status", + "simulate_delivery", + "simulate_budget_spend", + "seed_product", + "seed_pricing_option", + "seed_creative", + "seed_plan", + "seed_media_buy" + ], + "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_account_status: {account_id, status}. force_media_buy_status: {media_buy_id, status, rejection_reason?}. force_create_media_buy_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, impressions?, clicks?, reported_spend?, conversions?}. simulate_budget_spend: {account_id|media_buy_id, spend_percentage}. 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?}." + } + }, + "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.0.13/creative/specification#creative-status-lifecycle). + +**Params:** + +| Field | Type | Required | Description | +|-------|------|----------|-------------| +| `creative_id` | string | Yes | Creative to transition | +| `status` | `processing` \| `approved` \| `rejected` \| `pending_review` \| `archived` | Yes | Target status | +| `rejection_reason` | string | When `status` = `rejected` | Reason for rejection | + +**Example:** + +```json +{ + "scenario": "force_creative_status", + "params": { + "creative_id": "cr-123", + "status": "rejected", + "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.0.13/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" + } +} +``` + +### `force_create_media_buy_arm` + +Shapes the next [`create_media_buy`](/dist/docs/3.0.13/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.0.13/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_task_completion` + +Resolves a previously-submitted async task to `completed` with a buyer-supplied result payload. The companion to `force_create_media_buy_arm`: that scenario drives the seller into the 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` (the canonical 3.0 delivery path for completion payloads) and via subsequent [`tasks/get`](/dist/docs/3.0.13/building/by-layer/L3/async-operations#polling-for-submitted-operations) calls reporting `status: "completed"`. A typed result projection on the polling response is tracked for 3.1 in [#3123](https://github.com/adcontextprotocol/adcp/issues/3123). + +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` (not `FORBIDDEN`, 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.0.13/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` 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`. 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.** Replays with identical params before the task is terminal are idempotent no-ops. Replays with diverging params before the task is terminal MUST overwrite the registered result (last-write-wins) — same precedent as `force_create_media_buy_arm`'s "second call overwrites." After the task is terminal, every replay returns `INVALID_TRANSITION` regardless of params. + +**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` 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 | +| `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 | + +**Example:** + +```json +{ + "scenario": "simulate_delivery", + "params": { + "media_buy_id": "mb-789", + "impressions": 10000, + "clicks": 150, + "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`. 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_ids[]`. Sellers MAY fill in defaults for omitted fields. | + +**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_ids": [{ "id": "display_300x250" }] + } + } +} +``` + +### `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.0.13/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` first. + +**Params:** + +| Field | Type | Required | Description | +|-------|------|----------|-------------| +| `creative_id` | string | Yes | Stable identifier | +| `fixture` | object | No | Creative shape. Typical fields: `status`, `format_id`, `assets`, `click_through_url`. | + +**Example:** + +```json +{ + "scenario": "seed_creative", + "params": { + "creative_id": "campaign_hero_video", + "fixture": { + "status": "approved", + "format_id": { "id": "video_30s" }, + "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" }] + } + } +} +``` + +### Seeding semantics and ordering + +- **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`). 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` 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": { + "impressions": 10000, + "clicks": 150, + "reported_spend": { "amount": 150.00, "currency": "USD" } + }, + "cumulative": { + "impressions": 25000, + "clicks": 380, + "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 all simulation calls for this media buy, so callers can verify expected state before checking `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` | Requested state-machine transition is not valid (e.g., `archived → processing`, `canceled → paused`) | +| `INVALID_STATE` | 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` | Entity does not exist or caller does not have access (multi-tenant sandboxes SHOULD treat "not yours" as "not found") | +| `UNKNOWN_SCENARIO` | Scenario not implemented by this seller | +| `INVALID_PARAMS` | Missing or malformed params, or precondition not met (e.g., `simulate_budget_spend` on an entity with no budget configured) | +| `FORBIDDEN` | Production account referenced from a sandbox connection | +| `INTERNAL_ERROR` | 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.0.13/compliance/comply-test-controller-response.json), distinct from the canonical seller-response [`error-code.json`](https://adcontextprotocol.org/schemas/3.0.13/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.0.13/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.0.13/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`. 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` 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` 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 seed requirements.** Stateful compliance also requires that sellers implement the `seed_*` scenarios covering the specialisms they certify against. The `UNKNOWN_SCENARIO` → `not_applicable` grading is for honest coverage reporting on missing surface area, not a blanket opt-out from conformance — a seller certifying `sales-non-guaranteed` MUST implement at least `seed_product` and `seed_pricing_option`; a seller certifying `creative-ad-server` MUST implement `seed_creative`; a seller certifying `governance-delivery-monitor` MUST implement `seed_plan` (and `seed_media_buy` where the storyboard requires it). The storyboard authors in `static/compliance/source/specialisms/` declare the fixtures their storyboards need; sellers match that list to the specialisms on their cert. + +## 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`, 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.0.13/creative/specification#creative-status-lifecycle), [account lifecycle](/dist/docs/3.0.13/accounts/overview#account-status-lifecycle), [media buy lifecycle](/dist/docs/3.0.13/media-buy/specification), [SI session lifecycle](/dist/docs/3.0.13/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` 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.0.13/building/by-layer/L3/error-handling.mdx b/dist/docs/3.0.13/building/by-layer/L3/error-handling.mdx new file mode 100644 index 0000000000..040eee7e61 --- /dev/null +++ b/dist/docs/3.0.13/building/by-layer/L3/error-handling.mdx @@ -0,0 +1,901 @@ +--- +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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/contributing/storyboard-authoring#asserting-on-errors). + +**Discriminated rejection arms.** When the task response defines a structured rejection arm (e.g., `AcquireRightsRejected`, `CreativeRejected` — see the wire-placement guidance on [`GOVERNANCE_DENIED`](https://adcontextprotocol.org/schemas/3.0.13/enums/error-code.json) for the rule), the spec-correct denial response carries no error code on the wire — the rejection arm enforces `not: { required: [errors] }` at the schema layer. Asserting `check: error_code` will fail against a conformant agent. Assert on the discriminator instead: `check: field_value, path: "status", value: "rejected"`. This is the pattern for governance denial on `acquire_rights` and policy denial on `creative_approval`; assertions that mix the two paths (`error_code` for tasks with rejection arms, `field_value` for tasks without) bake non-spec opinions into the storyboard. + +### Error Object Fields + +These fields are defined by the [`error.json`](https://adcontextprotocol.org/schemas/3.0.13/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 (transient errors) | +| `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`**. 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` 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` or `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.0.13/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.0.13/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.0.13/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`) 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` for `product_id`, `PACKAGE_NOT_FOUND` for `package_id`, `MEDIA_BUY_NOT_FOUND` for `media_buy_id`, `CREATIVE_NOT_FOUND` for `creative_id`, `SIGNAL_NOT_FOUND` for `signal_id`, `SESSION_NOT_FOUND` for SI `session_id`, `ACCOUNT_NOT_FOUND` for `account_id`, `PLAN_NOT_FOUND` for governance `plan_id`. Fall back to `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_ids`), `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.0.13/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` | 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` | terminal | Buyer-principal credential was placed in request args (top-level, `context`, `ext`, or any nested location) instead of arriving on the transport's authentication channel | Do NOT auto-retry — auto-retry re-logs the credential. Move the credential onto the transport channel ([Credential placement](/dist/docs/3.0.13/building/by-layer/L2/authentication#credential-placement)), rotate the leaked credential, then resubmit | +| `ACCOUNT_NOT_FOUND` | terminal | Account reference could not be resolved | Verify via `list_accounts` or contact seller | +| `ACCOUNT_SETUP_REQUIRED` | correctable | Account needs setup before use | Check `details.setup` for URL or instructions | +| `ACCOUNT_AMBIGUOUS` | correctable | Natural key resolves to multiple accounts | Pass explicit `account_id` or a more specific natural key | +| `ACCOUNT_PAYMENT_REQUIRED` | terminal | Outstanding balance requires payment | Buyer must resolve billing | +| `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 the buyer placed a credential in the **task payload** instead of the transport's authentication 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.0.13/building/by-layer/L2/authentication#credential-placement). + +A future minor release splits this code into `AUTH_MISSING` (correctable) and `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.0.13/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.0.13/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` | 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` 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.0.13/error-details/billing-not-supported.json) | +| `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` | 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` | 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.0.13/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.0.13/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.0.13/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.0.13/accounts/tasks/sync_accounts) and [`list_accounts`](/dist/docs/3.0.13/accounts/tasks/list_accounts) responses. See [Caller authorization](/dist/docs/3.0.13/accounts/overview#caller-authorization) for the full shape. + +| Code | Recovery | Description | Resolution | +|------|----------|-------------|------------| +| `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` to mint a valid token, or contact the seller to resolve the underlying permission | +| `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` | 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` | 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` | 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` | 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`: 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`: 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.0.13/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.0.13/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.0.13/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`, 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.0.13/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.0.13/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` | 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` | correctable | Request violates content or advertising policies | Review policy requirements in the error details | +| `COMPLIANCE_UNSATISFIED` | correctable | Required disclosure cannot be satisfied by the target format | Choose a format that supports the required disclosure capabilities | +| `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` | correctable | Referenced product IDs are unknown or expired | Remove invalid IDs, or re-discover with `get_products` | +| `PRODUCT_UNAVAILABLE` | correctable | Product is sold out or no longer available | Choose a different product | +| `PROPOSAL_EXPIRED` | correctable | Referenced proposal has passed its `expires_at` | Run `get_products` to get a fresh proposal | +| `PROPOSAL_NOT_FOUND` | correctable | `proposal_id` is unknown to the seller (never finalized, wrong tenant, or evicted from cache) | Re-issue `get_products` with `buying_mode: "refine"` + `action: "finalize"` to obtain a current proposal_id | +| `MULTI_FINALIZE_UNSUPPORTED` | correctable | `refine[]` carried multiple `action: "finalize"` entries; seller cannot guarantee atomic multi-proposal commit | Sequence single-proposal finalize calls (one finalize per `get_products` call) | +| `REQUOTE_REQUIRED` | correctable | Requested update falls outside the envelope (budget, dates, volume, targeting) the original quote was priced against; `pricing_option` remains locked | Call `get_products` with `buying_mode: "refine"` against the existing `proposal_id`, then resubmit against the new `proposal_id` | +| `SIGNAL_NOT_FOUND` | correctable | Referenced signal does not exist in the catalog | Verify `signal_id` via `get_signals`, or confirm availability from this agent | +| `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` | correctable | Budget below seller's minimum | Increase budget or check `capabilities.media_buy.limits` | +| `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`, or register it via `sync_creatives` | +| `CREATIVE_REJECTED` | correctable | Creative failed content policy review | Revise per seller's `advertising_policies` | + +### System + +| Code | Recovery | Description | Resolution | +|------|----------|-------------|------------| +| `RATE_LIMITED` | transient | Request rate exceeded | Wait for `retry_after` seconds, then retry | +| `SERVICE_UNAVAILABLE` | transient | Seller service temporarily unavailable | Retry with exponential backoff | +| `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` | 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` | 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`, or any error whose `recovery` is `transient` and whose `details` conform to the [`rate-limited`](https://adcontextprotocol.org/schemas/3.0.13/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 number of seconds. +- 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`, `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.0.13/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 policy review. Check the suggestion 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.0.13/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.0.13/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` | correctable | `sync_plans` was not called before `check_governance` | +| `INVALID_REQUEST` | correctable | Missing required fields (e.g., `plan_id`, `caller`) | +| `AUTH_REQUIRED` | correctable | Governance agent requires authentication | + +## Configuration Error Patterns + +`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` / `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.0.13/building/operating/transport-errors) for how errors travel over MCP and A2A +- **Task Lifecycle**: See [Task Lifecycle](/dist/docs/3.0.13/building/by-layer/L3/task-lifecycle) for status handling +- **Webhooks**: See [Webhooks](/dist/docs/3.0.13/building/by-layer/L3/webhooks) for webhook error handling +- **Security**: See [Security](/dist/docs/3.0.13/building/by-layer/L1/security) for authentication errors diff --git a/dist/docs/3.0.13/building/by-layer/L3/index.mdx b/dist/docs/3.0.13/building/by-layer/L3/index.mdx new file mode 100644 index 0000000000..da6b171a6b --- /dev/null +++ b/dist/docs/3.0.13/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.0.13/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.0.13/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.0.13/building/cross-cutting/version-adaptation#what-changed-at-l3-in-3-0). + +## Pages in this layer + +- **[Task lifecycle](/dist/docs/3.0.13/building/by-layer/L3/task-lifecycle)** — status values, transitions, polling. +- **[Async operations](/dist/docs/3.0.13/building/by-layer/L3/async-operations)** — sync, async, and interactive task handling. +- **[Webhooks](/dist/docs/3.0.13/building/by-layer/L3/webhooks)** — push notifications, signing, retry, idempotency. +- **[Error handling](/dist/docs/3.0.13/building/by-layer/L3/error-handling)** — error categories, codes, recovery classification. +- **[`comply_test_controller`](/dist/docs/3.0.13/building/by-layer/L3/comply-test-controller)** — sandbox-only conformance test surface. diff --git a/dist/docs/3.0.13/building/by-layer/L3/task-lifecycle.mdx b/dist/docs/3.0.13/building/by-layer/L3/task-lifecycle.mdx new file mode 100644 index 0000000000..118513fc1c --- /dev/null +++ b/dist/docs/3.0.13/building/by-layer/L3/task-lifecycle.mdx @@ -0,0 +1,270 @@ +--- +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 Transport-specific task management +The status values and lifecycle described here are transport-independent — they apply regardless of how you access AdCP. The *mechanism* for tracking async tasks varies by transport: +- **MCP**: Use [MCP Tasks](https://modelcontextprotocol.io/specification/2025-11-25/basic/utilities/tasks) — the client polls via `tasks/get` and retrieves results via `tasks/result` at the protocol level. See [MCP Guide](/dist/docs/3.0.13/building/by-layer/L0/mcp-guide#async-operations-via-mcp-tasks). +- **A2A**: Use native A2A task lifecycle with SSE streaming. See [A2A Guide](/dist/docs/3.0.13/building/by-layer/L0/a2a-guide). +- **REST**: Use AdCP's `task_id` with polling or [push notifications](/dist/docs/3.0.13/building/by-layer/L3/webhooks). +::: + +## 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.0.13/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" +} +``` + +**Transport-specific handling for `submitted` operations:** +- **MCP**: Use [MCP Tasks](/dist/docs/3.0.13/building/by-layer/L0/mcp-guide#async-operations-via-mcp-tasks) or poll via `tasks/get` +- **A2A**: Subscribe to SSE stream for real-time updates +- **REST**: Use [push notifications](/dist/docs/3.0.13/building/by-layer/L3/webhooks) (recommended) or poll with `task_id` + +## 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.0.13/building/by-layer/L3/webhooks)); `include_result` is the typed polling alternative for buyers that prefer pull over push. + +```javascript +// Polling is only for 'submitted' operations +async function pollForResult(taskId, pollInterval = 30_000) { + while (true) { + await sleep(pollInterval); + + const response = await adcp.call('tasks/get', { + 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 `tasks/list` to recover from lost state: + +```javascript +// Find all pending operations +const pending = await session.call('tasks/list', { + 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.0.13/building/by-layer/L3/async-operations) for handling different operation types +- **Webhooks**: See [Webhooks](/dist/docs/3.0.13/building/by-layer/L3/webhooks) for push notification patterns +- **Error Handling**: See [Error Handling](/dist/docs/3.0.13/building/by-layer/L3/error-handling) for error categories and recovery diff --git a/dist/docs/3.0.13/building/by-layer/L3/webhooks.mdx b/dist/docs/3.0.13/building/by-layer/L3/webhooks.mdx new file mode 100644 index 0000000000..531cd55fe1 --- /dev/null +++ b/dist/docs/3.0.13/building/by-layer/L3/webhooks.mdx @@ -0,0 +1,584 @@ +--- +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 +2. A webhook URL is built by substituting that ID (and other routing params) into a URL template +3. `push_notification_config` is injected into the task request body with just the URL — no secret required +4. The seller POSTs webhook notifications to your URL as the task status changes, signing each POST with its `adcp_use: "webhook-signing"` key published in its own brand.json `agents[]` entry +5. You verify the signature against the seller's published JWKS and dedupe by `idempotency_key` +6. Each notification echoes `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/cd51e063-2b79-4a6d-afac-ed7789c3a443" + // 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/cd51e063-2b79-4a6d-afac-ed7789c3a443 + 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": "cd51e063-2b79-4a6d-afac-ed7789c3a443", ← echoed from your URL + "status": "completed", + "result": { ... } + } +``` + +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 webhook-signing JWK at your brand.json `agents[]` entry (with `adcp_use: "webhook-signing"`) and the client signs outgoing webhooks for you. + +:::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.0.13/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: ... } }` | +| **A2A configuration object** | `pushNotificationConfig` | `configuration: { pushNotificationConfig: { url: ... } }` | + +The AdCP field name is always **`push_notification_config`** (snake_case). It goes in the task request body alongside your other task parameters. + +For A2A, the A2A protocol wraps it in a `configuration` envelope using camelCase — but the object's contents are identical. + +## 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/op_abc123" + } +} +``` + +`authentication` is omitted in the default case — the seller signs with its own `adcp_use: "webhook-signing"` key. Include `authentication.credentials` only if you need the legacy HMAC-SHA256 fallback. + +### A2A + +For A2A, skill parameters stay in `message.parts[].data.parameters`. The push notification config goes in the top-level `configuration` object: + +```json +{ + "message": { + "parts": [{ + "kind": "data", + "data": { + "skill": "create_media_buy", + "parameters": { + "packages": [...] + } + } + }] + }, + "configuration": { + "pushNotificationConfig": { + "url": "https://you.com/webhooks/adcp/create_media_buy/op_abc123" + } + } +} +``` + +## Operation IDs and URL templates + +Operation IDs let you route incoming webhooks to the right handler. The pattern: + +1. Buyer generates a unique ID per task call +2. Buyer threads it through to the seller as `operation_id` (typically by embedding in the webhook URL path, but the 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 MUST** supply `operation_id` to the seller for every webhook registration and SHOULD generate it as a unique value per task invocation (UUID recommended). +- **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 MUST NOT** correlate webhooks by URL-path inspection in production code. The URL is for buyer-side server routing convenience only; 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}/{operation_id} +``` + +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 `?op=…`, 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 webhookUrl = `https://you.com/adcp/webhook/create_media_buy/${agentId}/${operationId}`; + +// pass webhookUrl in push_notification_config.url +``` + +The seller's webhook payload will include `"operation_id": "cd51e063-2b79-4a6d-afac-ed7789c3a443"`, so your handler can route to the right pending operation by reading the payload field directly — never by parsing the URL it arrived on. + +**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.0.13/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 `completed` or `failed`), no webhook is sent — you already have the result. + +**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. + +### 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 +{ + "id": "task_456", + "contextId": "ctx_123", + "status": { + "state": "completed", + "timestamp": "2025-01-22T10:30:00Z" + }, + "artifacts": [{ + "artifactId": "result", + "parts": [ + { "kind": "text", "text": "Media buy created successfully" }, + { + "kind": "data", + "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.pushNotificationConfig` (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 `task_push_notification_config` on `SendMessage`) | A2A native `Task` / `TaskStatusUpdateEvent` per A2A 1.0 §4.3.3 | + +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.0.13/building/by-layer/L1/security#webhook-callbacks). The seller signs with its `adcp_use: "webhook-signing"` key published in its own brand.json `agents[]` entry; 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=:: +``` + +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. + +**Verification** follows the 14-step [request verifier checklist](/dist/docs/3.0.13/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.0.13/building/by-layer/L1/security#webhook-error-taxonomy)). +- `tag` MUST be `adcp/webhook-signing/v1`. +- Resolve `keyid` via the seller's `adagents.json` `agents[]` entry (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's adagents.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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/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 routing, not URL parsing +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.0.13/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.0.13/media-buy/task-reference) for details on `reporting_webhook`. + +## Persistent channel contract + +Task webhooks fire once per logical task and stop when the task settles. **Persistent webhooks** — `reporting_webhook` and `push_notification_config` on a media buy — outlive any single operation and fire repeatedly for the life of the resource. The contract below applies to persistent channels. + +This section is the transport half of the [Snapshot and log contract](/dist/docs/3.0.13/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.0.13/core/mcp-webhook-payload.json) and [snapshot-and-log Rule 1](/dist/docs/3.0.13/protocol/snapshot-and-log#1-two-distinct-ids-per-fire-and-per-state)), 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 advisory 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 advisory events | Hours to daily | Higher noise tolerance; bigger window appropriate. | +| Future defect events | Minutes to hours | Between impairment and advisory 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.0.13/building/by-layer/L3/task-lifecycle) — status values and transitions +- [Async Operations](/dist/docs/3.0.13/building/by-layer/L3/async-operations) — handling long-running tasks +- [Error Handling](/dist/docs/3.0.13/building/by-layer/L3/error-handling) — webhook error patterns diff --git a/dist/docs/3.0.13/building/by-layer/L4/build-a-caller.mdx b/dist/docs/3.0.13/building/by-layer/L4/build-a-caller.mdx new file mode 100644 index 0000000000..a750f22f4e --- /dev/null +++ b/dist/docs/3.0.13/building/by-layer/L4/build-a-caller.mdx @@ -0,0 +1,228 @@ +--- +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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/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({ + 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.0.13/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.0.13/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 tasks/get. +} 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 `tasks/get` directly via the underlying transport. The [Async responses section of Calling an agent](/dist/docs/3.0.13/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.0.13/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 a `tasks/get` 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.0.13/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.0.13/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.0.13/building/cross-cutting/sdk-stack) decomposes each layer; the [server-vs-client comparison table](/dist/docs/3.0.13/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.0.13/protocol/calling-an-agent)** — the canonical wire-contract reference. Read once before going to production. +- **[Schemas](/dist/docs/3.0.13/building/by-layer/L0/schemas)** — schema bundle, type generation, version pinning. +- **[Webhooks](/dist/docs/3.0.13/building/by-layer/L3/webhooks)** — push notifications, signing, retry, reliability patterns. +- **[Error handling](/dist/docs/3.0.13/building/by-layer/L3/error-handling)** — error categories, codes, recovery classification. +- **[Validate your agent](/dist/docs/3.0.13/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.0.13/media-buy/task-reference/index) +- [Creative task reference](/dist/docs/3.0.13/creative/task-reference) +- [Signals task reference](/dist/docs/3.0.13/signals/tasks/get_signals) +- [Brand protocol tasks](/dist/docs/3.0.13/brand-protocol) diff --git a/dist/docs/3.0.13/building/by-layer/L4/build-an-agent.mdx b/dist/docs/3.0.13/building/by-layer/L4/build-an-agent.mdx new file mode 100644 index 0000000000..e626cbc28d --- /dev/null +++ b/dist/docs/3.0.13/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.0.13/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.0.13/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.0.13/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.0.13/brand-protocol) and claim `brand-rights` under the `brand` domain. + +See the [Compliance Catalog](/dist/docs/3.0.13/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.0.13/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 + ✓ list_creative_formats + ✓ 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.0.13/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.0.13/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.0.13/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.0.13/building/verification/validate-your-agent)** — Storyboards, compliance checks, and the build-validate-fix loop +- **[Operating an Agent](/dist/docs/3.0.13/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.0.13/building/by-layer/L4/choose-your-sdk)** — Schema access, CLI tools, and SDK package exports +- **[MCP integration guide](/dist/docs/3.0.13/building/by-layer/L0/mcp-guide)** — Transport, sessions, and auth details +- **[Task lifecycle](/dist/docs/3.0.13/building/by-layer/L3/task-lifecycle)** — Status values, transitions, and polling +- **[Error handling](/dist/docs/3.0.13/building/by-layer/L3/error-handling)** — Error categories, codes, and recovery diff --git a/dist/docs/3.0.13/building/by-layer/L4/choose-your-sdk.mdx b/dist/docs/3.0.13/building/by-layer/L4/choose-your-sdk.mdx new file mode 100644 index 0000000000..069a1e6ff6 --- /dev/null +++ b/dist/docs/3.0.13/building/by-layer/L4/choose-your-sdk.mdx @@ -0,0 +1,150 @@ +--- +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.0.13/building/cross-cutting/sdk-stack). + +## Coverage matrix + +What "shipped" means at each layer is the [L0–L3 checklist](/dist/docs/3.0.13/building/cross-cutting/sdk-stack#what-an-sdk-at-each-layer-should-provide). + +*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 ships full L0–L3** on AdCP 3.0 — adopters write L4 only. The 5.x line is on security-only support and not recommended for new builds; cut over to 6.x. **`adcp` (Python) 3.x is the production line** with full L0 type coverage; the 4.x rewrite (in beta on PyPI) closes the L1–L3 gap — outbound RFC 9421 signing, brand-resolution helpers, webhook emission. Track [adcp-client-python releases](https://github.com/adcontextprotocol/adcp-client-python/releases) for the 4.0 GA cut. **`adcp-go`** is in active development; types + transport land first, see [adcp-go README](https://github.com/adcontextprotocol/adcp-go) for what's in scope per release. + +Pre-3.0 callers should work through the [3.0 migration guide](/dist/docs/3.0.13/reference/migration/index) before upgrading. For the at-a-glance status of every published protocol version, see [Versions & Compatibility](/dist/docs/3.0.13/reference/versions). For procurement-grade context on the support window, see the [v2 sunset timeline](/dist/docs/3.0.13/reference/v2-sunset) and [versioning & governance](/dist/docs/3.0.13/reference/versioning). + +**Python and TypeScript carry full L0–L4 coverage as the first-class supported languages.** **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.0.13/community/working-group) and the [Slack community](https://join.slack.com/t/agenticads/shared_invite/zt-3c5sxvdjk-x0rVmLB3OFHVUp~WutVWZg). + +## JavaScript / TypeScript + +[![npm version](https://img.shields.io/npm/v/@adcp/sdk)](https://www.npmjs.com/package/@adcp/sdk) + +```bash +npm install @adcp/sdk +``` + +```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.getProducts({ + brief: 'Video campaign for pet owners', +}); +``` + +**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/server/legacy/v5` — legacy v5 handler-bag entry, still supported for mid-migration codebases +- `@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.0.13/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 +- `@adcp/sdk/types/v2-5` — v2.5 type co-existence imports for cross-version callers + +## 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(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 +``` + +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)`, 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@latest --help +npx @adcp/sdk@latest --save-auth my-agent https://sales.example.com/mcp +npx @adcp/sdk@latest my-agent get_products '{"brief":"CTV campaign"}' +# or against the built-in public test agent: +npx @adcp/sdk@latest test-mcp get_products '{"brief":"CTV campaign"}' +``` + +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 '{"brief":"CTV campaign"}' +``` + +## What's next + +- **[Build an agent](/dist/docs/3.0.13/building/by-layer/L4/build-an-agent)** — server-side L4 path. Skill files + coding agent. +- **[Build a caller](/dist/docs/3.0.13/building/by-layer/L4/build-a-caller)** — client-side L4 path. Install, call, handle responses, ingest reporting. +- **[Schemas](/dist/docs/3.0.13/building/by-layer/L0/schemas)** — schema bundle, type generation, version pinning. +- **[Migrate from hand-rolled](/dist/docs/3.0.13/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.0.13/building/by-layer/L4/index.mdx b/dist/docs/3.0.13/building/by-layer/L4/index.mdx new file mode 100644 index 0000000000..5a25ebbff2 --- /dev/null +++ b/dist/docs/3.0.13/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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/building/by-layer/L4/migrate-from-hand-rolled.mdx b/dist/docs/3.0.13/building/by-layer/L4/migrate-from-hand-rolled.mdx new file mode 100644 index 0000000000..e546c51e44 --- /dev/null +++ b/dist/docs/3.0.13/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.0.13/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.0.13/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.0.13/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.0.13/building/verification/conformance) and [Validate Your Agent](/dist/docs/3.0.13/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.0.13/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.0.13/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.0.13/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.0.13/building/by-layer/L3/task-lifecycle). +5. **State machines**, one resource at a time. MediaBuy first ([lifecycle reference](/dist/docs/3.0.13/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.0.13/building/by-layer/L3/webhooks). +7. **RFC 9421 signing + verification**. Independent of everything above; can be parallelized. See [Security implementation](/dist/docs/3.0.13/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.0.13/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.0.13/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 on AdCP 2.5, 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. + +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.5', // ← 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.5'], + }, + // …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're on AdCP 2.5, none of your buyers want 3.x, and you're willing to deprecate when they do. +- 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.0.13/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.0.13/building/cross-cutting/sdk-stack) — layered architecture reference +- [Where to start](/dist/docs/3.0.13/building) — decision page +- [Version Adaptation](/dist/docs/3.0.13/building/cross-cutting/version-adaptation) — three-mechanism reference +- [Conformance](/dist/docs/3.0.13/building/verification/conformance) — how the storyboard suite grades your agent +- [Build an Agent](/dist/docs/3.0.13/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.0.13/building/compliance-catalog.mdx b/dist/docs/3.0.13/building/compliance-catalog.mdx new file mode 100644 index 0000000000..28913934e5 --- /dev/null +++ b/dist/docs/3.0.13/building/compliance-catalog.mdx @@ -0,0 +1,228 @@ +--- +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" +--- + +Every AdCP agent declares its `supported_protocols` and `specialisms` in `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`, `list_accounts`, `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.0.13/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 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. + +{/* Lint: scripts/lint-universal-storyboard-doc-parity.cjs keeps this table in sync with static/compliance/source/universal/. Add a row (kebab-case slug) when you add a graded storyboard; remove the row when one is deleted. The build fails on drift. */} + +| Storyboard | Purpose | +|-----------|---------| +| `capability-discovery` | `get_adcp_capabilities` shape, protocol/specialism declarations, version advertising | +| `schema-validation` | Request and response schema conformance, ISO 8601 timestamps, temporal invariants | +| `v3-envelope-integrity` | 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` | Structured error shape, published error codes, transport binding, no existence leaks across tenants | +| `idempotency` | `idempotency_key` scoping, replay semantics, `IDEMPOTENCY_CONFLICT`, `replayed: true`, declared TTL | +| `security` | **Authentication baseline — unauth rejection, API key enforcement, OAuth discovery + RFC 9728 audience binding.** See [Authentication](/dist/docs/3.0.13/building/by-layer/L2/authentication). | +| `webhook-emission` | Outbound webhook conformance — stable `idempotency_key` across retries; RFC 9421 webhook signing (or HMAC fallback if the buyer opted in). Runs for any agent that accepts `push_notification_config` on any operation. | +| `pagination-integrity` | `cursor` ↔ `has_more` invariant verified by walking a paginated `list_creatives` response from a continuation page through to terminal. | +| `get-signals-pagination-integrity` | `cursor` ↔ `has_more` invariant verified by walking a paginated `get_signals` response under a broad query — page 1 must be non-terminal against any non-trivial catalog, page 2 follows the cursor. | +| `pagination-integrity-list-accounts` | `cursor` ↔ `has_more` invariant verified by walking a paginated `list_accounts` response — storyboard bootstraps three accounts via `sync_accounts`, then asserts page 1 is non-terminal and page 2 is terminal with no stale cursor. | +| `pagination-integrity-creative-formats` | `cursor` ↔ `has_more` invariant verified by walking a paginated `list_creative_formats` response — storyboard seeds two creative formats via `seed_creative_format`, then asserts page 1 is non-terminal and page 2 is terminal with no stale cursor. | +| `get-media-buys-pagination-integrity` | `cursor` ↔ `has_more` invariant verified by walking a paginated `get_media_buys` response — storyboard seeds three media buys via `seed_media_buy`, then asserts page 1 is non-terminal and page 2 is terminal with no stale cursor. | +| `content-standards-pagination-integrity` | `cursor` ↔ `has_more` invariant verified by walking a paginated `list_content_standards` response — storyboard bootstraps three content standards configurations via `create_content_standards`, then asserts page 1 is non-terminal and page 2 is terminal with no stale cursor. | +| `collection-lists-pagination-integrity` | `cursor` ↔ `has_more` invariant verified by walking a paginated `list_collection_lists` response — storyboard bootstraps three collection lists via `create_collection_list`, then asserts page 1 is non-terminal and page 2 is terminal with no stale cursor. | +| `property-lists-pagination-integrity` | `cursor` ↔ `has_more` invariant verified by walking a paginated `list_property_lists` response — storyboard bootstraps three property lists via `create_property_list`, then asserts page 1 is non-terminal and page 2 is terminal with no stale cursor. | +| `deterministic-testing` | `comply_test_controller` state-machine verification — skipped if `capabilities.compliance_testing.supported: false`. | +| `comply-controller-mode-gate` | `comply_test_controller` live-mode denial gate — verifies sellers return `FORBIDDEN` when a live-mode account calls the controller; skipped for agents that do not expose `comply_test_controller`. | +| `signed-requests` | RFC 9421 transport-layer request-signing verification — skipped if `request_signing.supported: false`. | + +Capability-gated rows (`deterministic-testing`, `signed-requests`) are skipped only when the agent advertises the capability as `false`; they cannot be claimed and partially implemented. Declaring `supported: true` and failing the storyboard is non-conformant — declare `false` rather than ship a partial implementation. + +## 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.0.13/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 | + + +Support for the [compliance test controller](/dist/docs/3.0.13/building/by-layer/L3/comply-test-controller) is declared via the `capabilities.compliance_testing` block on `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` | stable | Media buys negotiated via proposal acceptance | +| `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 — accepts `sync_governance`, calls `check_governance`, and propagates approvals, conditions, and denials unchanged. Optional claim; sellers that don't claim it skip the governance scenarios as not_applicable. | +| `audience-sync` | stable | Syncs buyer-provided audience segments into a platform for activation (uses `sync_audiences`, `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 | +| `signal-marketplace` | stable | Marketplace signal agent reselling third-party data | + +### 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 | + + +**Coming in 3.1.** `measurement-verification` (third-party viewability, attribution, brand-safety, and SI-outcome verification) is scheduled for 3.1 under a dedicated `measurement` protocol. + + +### brand + +| Specialism | Status | Purpose | +|-----------|--------|---------| +| `brand-rights` | stable | Brand identity and rights licensing (talent, music, stock media) | + +## How to claim + +Declare your protocols and specialisms in `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.0.13/building/verification/validate-your-agent) for how to run the suite locally. + +## 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` 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` | — | +| `sales-social` | `channels: ['social']` | `sales_social` | — | +| `audience-sync` | `sync_audiences` tool | `audience_sync` | — | +| `property-lists` | `property_list` tools | `property_lists` | — | +| `collection-lists` | `collection_list` tools | `collection_lists` | — | +| `governance-spend-authority` | `check_governance`, `sync_plans` | `governance_spend_authority` | `governance_spend_authority/denied` | +| `creative-generative` | `build_creative` | `creative_generative` | `creative_generative/seller` | +| `brand-rights` | `get_brand_identity`, `acquire_rights` | `brand_rights` | `brand_rights/governance_denied` | + +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`, `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 agent builds the segment on demand from models, composites, or buyer-supplied inputs. Use this when no `adagents.json` authorization chain applies — the segment is agent-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`. + diff --git a/dist/docs/3.0.13/building/concepts/adcp-vs-openrtb.mdx b/dist/docs/3.0.13/building/concepts/adcp-vs-openrtb.mdx new file mode 100644 index 0000000000..43e3ed29fe --- /dev/null +++ b/dist/docs/3.0.13/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.0.13/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. + +**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.0.13/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.0.13/building/concepts/how-agents-communicate.mdx b/dist/docs/3.0.13/building/concepts/how-agents-communicate.mdx new file mode 100644 index 0000000000..7c08e4c510 --- /dev/null +++ b/dist/docs/3.0.13/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 +{ + "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 checks what formats the platform accepts by calling `list_creative_formats`. The response includes structured format objects with dimensions, accepted file types, and rendering roles: + +```json +{ + "formats": [ + { + "format_id": { + "agent_url": "https://ads.publisher.example.com", + "id": "video_preroll_16x9" + }, + "name": "Pre-roll video (16:9)", + "renders": [{ + "role": "primary", + "dimensions": { "width": 1920, "height": 1080, "unit": "px" } + }] + } + ] +} +``` + +The agent then submits matching creatives via `build_creative`, which generates or adapts ads to the platform's requirements. + +### 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 calls `list_creative_formats` on each platform and identifies common formats 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.0.13/building/concepts/index.mdx b/dist/docs/3.0.13/building/concepts/index.mdx new file mode 100644 index 0000000000..9ffd6ceda4 --- /dev/null +++ b/dist/docs/3.0.13/building/concepts/index.mdx @@ -0,0 +1,108 @@ +--- +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 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.0.13/building/concepts/industry-landscape.mdx b/dist/docs/3.0.13/building/concepts/industry-landscape.mdx new file mode 100644 index 0000000000..4018ef5e57 --- /dev/null +++ b/dist/docs/3.0.13/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.0.13/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.0.13/building/concepts/protocol-comparison.mdx b/dist/docs/3.0.13/building/concepts/protocol-comparison.mdx new file mode 100644 index 0000000000..e1baaf652a --- /dev/null +++ b/dist/docs/3.0.13/building/concepts/protocol-comparison.mdx @@ -0,0 +1,236 @@ +--- +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** | [MCP Tasks](https://modelcontextprotocol.io/specification/2025-11-25/basic/utilities/tasks) | SSE streaming | +| **Webhooks** | `push_notification_config` in tool args | Native PushNotificationConfig | +| **Task Management** | MCP Tasks (`tasks/get`, `tasks/result`, `tasks/cancel`) | Native task lifecycle | +| **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) | Poll frequently, 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.0.13/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 handle async operations with the same status progression: +`submitted` → `working` → `completed`/`failed` + +### MCP Async Pattern (MCP Tasks) +```javascript +// Task-augmented tool call — returns CreateTaskResult immediately +const createResult = await mcp.callTool({ + name: "create_media_buy", + arguments: { + buyer_ref: "nike_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 +const result = await mcp.getTaskResult({ taskId: "task-456" }); +// result = { content: [...], isError: false } +``` + +### A2A Async Pattern +```javascript +// Initial response with native task tracking +{ + "status": "submitted", + "taskId": "task-456", + "contextId": "ctx-123", + "estimatedCompletionTime": "2025-01-23T10:00:00Z" +} + +// Real-time updates via SSE +const events = new EventSource(`/tasks/${response.taskId}/events`); +events.onmessage = (event) => { + const update = JSON.parse(event.data); + console.log(`Status: ${update.status}, Message: ${update.message}`); +}; + +// Native webhook support +await a2a.send({ + message: { /* skill invocation */ }, + push_notification_config: { + webhook_url: "https://buyer.com/webhooks", + authentication: { + schemes: ["Bearer"], + credentials: "secret_token_min_32_chars" + } + } +}); +``` + +## 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: Automatic Context +```javascript +// A2A manages context automatically +const response1 = await a2a.send({ message: "Find video products" }); +const response2 = await a2a.send({ + contextId: response1.contextId, // Optional - A2A tracks this + message: "Focus on premium 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.0.13/building/by-layer/L0/mcp-guide) for tool calls and context management +- **A2A Guide**: See [A2A Guide](/dist/docs/3.0.13/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.0.13/building/concepts/security-model.mdx b/dist/docs/3.0.13/building/concepts/security-model.mdx new file mode 100644 index 0000000000..6e5ce3ab82 --- /dev/null +++ b/dist/docs/3.0.13/building/concepts/security-model.mdx @@ -0,0 +1,311 @@ +--- +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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/accounts/tasks/sync_accounts) and [`list_accounts`](/dist/docs/3.0.13/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.0.13/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.0.13/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`** — the specific plan being authorized +- **`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.0.13/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 on the `adcp_use: "webhook-signing"` surface — durable seller-side acknowledgement flows through the same at-rest signing 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 + +Five application-layer signing systems exist in 3.x — four 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.0.13/building/by-layer/L1/security#request-signing). Key purpose `adcp_use: "request-signing"`. +- **Outbound webhook signing.** Sellers sign asynchronous [webhook deliveries](/dist/docs/3.0.13/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: "webhook-signing"`. +- **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.0.13/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.0.13/brand-protocol/tasks/verify_brand_claim#trust-model). +- **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 four surfaces above but is its own profile. See [TMP signing model](/dist/docs/3.0.13/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 surfaces with two purposes, not one surface with a 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.0.13/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 `adcp_use` purpose is another key 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 artefact in each of these flows rides the standard `adcp_use: "webhook-signing"` surface — 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 on the same `adcp_use: "webhook-signing"` surface — 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: "webhook-signing"`. Verification is uniform with every other at-rest seller→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.0.13/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.0.13/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.0.13/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.0.13/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** — publisher-attested in `brand.json` `agents[].signing_keys[]`, fetched from the publisher's own `/.well-known`. +- **`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.0.13/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[].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.0.13/building/by-layer/L1/security)** — Normative rules for HMAC, idempotency, SSRF, agent/account isolation, and governance verification +- **[Embedded Human Judgment](/dist/docs/3.0.13/governance/embedded-human-judgment)** — The five principles that keep humans in the loop on decisions with real consequences +- **[Trusted Match Protocol](/dist/docs/3.0.13/trusted-match)** — The two-call decomposition (Context Match / Identity Match) that delivers structural privacy separation at serve time +- **[Webhooks](/dist/docs/3.0.13/building/by-layer/L3/webhooks)** — Signature format, replay windows, rotation +- **[Signed Governance Context](/dist/docs/3.0.13/building/by-layer/L1/security#signed-governance-context)** — The 15-step verification checklist +- **[Operating an Agent](/dist/docs/3.0.13/building/operating/operating-an-agent)** — Credential management, monitoring, and incident response as operating concerns +- **[How Agents Communicate](/dist/docs/3.0.13/building/concepts/how-agents-communicate)** — `adagents.json`, `brand.json`, and the discovery trust chain diff --git a/dist/docs/3.0.13/building/conformance.mdx b/dist/docs/3.0.13/building/conformance.mdx new file mode 100644 index 0000000000..04492bc230 --- /dev/null +++ b/dist/docs/3.0.13/building/conformance.mdx @@ -0,0 +1,160 @@ +--- +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 against those storyboards and issued a signed attestation ([AAO Verified badge](/dist/docs/3.0.13/building/verification/compliance-catalog)). Gated on active membership and a live heartbeat. +- **"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 that an agent is conformant. +- Verified ⊆ Conformant. You can be conformant without being verified; you cannot be verified without being conformant. + +## 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 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.0.13/building/verification/compliance-catalog) for the full taxonomy and [Validate Your Agent](/dist/docs/3.0.13/building/verification/validate-your-agent) for how to run the suite locally. + +## 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`](https://adcontextprotocol.org/compliance/latest/universal/capability-discovery) | `get_adcp_capabilities` shape, protocol/specialism declarations, version advertising | +| [`schema_validation`](https://adcontextprotocol.org/compliance/latest/universal/schema-validation) | Request and response schema conformance, ISO 8601 timestamps, temporal invariants | +| [`v3_envelope_integrity`](https://adcontextprotocol.org/compliance/latest/universal/v3-envelope-integrity) | 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`](https://adcontextprotocol.org/compliance/latest/universal/error-compliance) | Structured error shape, published error codes, transport binding, no existence leaks across tenants | +| [`idempotency`](https://adcontextprotocol.org/compliance/latest/universal/idempotency) | `idempotency_key` scoping, replay semantics, `IDEMPOTENCY_CONFLICT`, `replayed: true`, declared TTL | +| [`security_baseline`](https://adcontextprotocol.org/compliance/latest/universal/security) | Unauth rejection, API key enforcement, OAuth discovery + RFC 9728 audience binding | +| [`webhook_emission`](https://adcontextprotocol.org/compliance/latest/universal/webhook-emission) | 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`. | +| [`pagination_integrity`](https://adcontextprotocol.org/compliance/latest/universal/pagination-integrity) | `cursor` ↔ `has_more` invariant on paginated `list_creatives` responses, walked from a continuation page through to a terminal page | +| [`get_signals_pagination_integrity`](https://adcontextprotocol.org/compliance/latest/universal/get-signals-pagination-integrity) | `cursor` ↔ `has_more` invariant on paginated `get_signals` responses under a broad query, with first-page non-terminal assertion against any non-trivial signals catalog | +| [`pagination_integrity_list_accounts`](https://adcontextprotocol.org/compliance/latest/universal/pagination-integrity-list-accounts) | `cursor` ↔ `has_more` invariant on paginated `list_accounts` responses; storyboard bootstraps three accounts via `sync_accounts` and walks from a continuation page to a terminal page | +| [`pagination_integrity_creative_formats`](https://adcontextprotocol.org/compliance/latest/universal/pagination-integrity-creative-formats) | `cursor` ↔ `has_more` invariant on paginated `list_creative_formats` responses; storyboard seeds two creative formats via `seed_creative_format` and walks from a continuation page to a terminal page | +| [`get_media_buys_pagination_integrity`](https://adcontextprotocol.org/compliance/latest/universal/get-media-buys-pagination-integrity) | `cursor` ↔ `has_more` invariant on paginated `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`](https://adcontextprotocol.org/compliance/latest/universal/content-standards-pagination-integrity) | `cursor` ↔ `has_more` invariant on paginated `list_content_standards` responses; storyboard bootstraps three content standards configurations via `create_content_standards` and walks from a continuation page to a terminal page | +| [`pagination_integrity_collection_lists`](https://adcontextprotocol.org/compliance/latest/universal/collection-lists-pagination-integrity) | `cursor` ↔ `has_more` invariant on paginated `list_collection_lists` responses; storyboard bootstraps three collection lists via `create_collection_list` and walks from a continuation page to a terminal page | +| [`pagination_integrity_property_lists`](https://adcontextprotocol.org/compliance/latest/universal/property-lists-pagination-integrity) | `cursor` ↔ `has_more` invariant on paginated `list_property_lists` responses; storyboard bootstraps three property lists via `create_property_list` and walks from a continuation page to a terminal page | +| [`deterministic_testing`](https://adcontextprotocol.org/compliance/latest/universal/deterministic-testing) | `comply_test_controller` state machine — skipped if `capabilities.compliance_testing.supported: false` | +| [`comply_controller_mode_gate`](https://adcontextprotocol.org/compliance/latest/universal/comply-controller-mode-gate) | `comply_test_controller` live-mode denial gate — verifies sellers return `FORBIDDEN` when a live-mode account calls the controller; skipped for agents that do not expose `comply_test_controller` | +| [`signed_requests`](https://adcontextprotocol.org/compliance/latest/universal/signed-requests) | RFC 9421 transport-layer request-signing verification — skipped if `request_signing.supported: false`. | + +Agents that declare `capabilities.compliance_testing.supported: true` MUST implement the full [test controller](/dist/docs/3.0.13/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.0.13/building/by-layer/L1/security#signed-requests-transport-layer); a partial verifier is non-conformant, so declare `false` rather than ship one. + +## Protocol conformance + +A `supported_protocols` claim obligates the protocol's baseline storyboard. + +| `supported_protocols` | Storyboard | +|-----------------------|------------| +| `media_buy` | [`media_buy_seller`](https://adcontextprotocol.org/compliance/latest/protocols/media-buy/) + [`media_buy_state_machine`](https://adcontextprotocol.org/compliance/latest/protocols/media-buy/state-machine) | +| `creative` | [`creative_lifecycle`](https://adcontextprotocol.org/compliance/latest/protocols/creative/) | +| `signals` | [`signals_baseline`](https://adcontextprotocol.org/compliance/latest/protocols/signals/) | +| `governance` | [`media_buy_governance_escalation`](https://adcontextprotocol.org/compliance/latest/protocols/governance/) | +| `brand` | [`brand_baseline`](https://adcontextprotocol.org/compliance/latest/protocols/brand/) | +| `sponsored_intelligence` | [`si_baseline`](https://adcontextprotocol.org/compliance/latest/protocols/sponsored-intelligence/) | + +## 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.0.13/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` 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.0.13/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` (identity) + isolation checks in protocol storyboards | Personnel access reviews, least-privilege admin, offboarding | +| Change management (SOC 2 CC8) | `idempotency` 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` responses validate. + +## How to claim conformance + +1. Declare `supported_protocols` and `specialisms` in `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.0.13/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.0.13/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.0.13/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 + +- **[Storyboard troubleshooting](/dist/docs/3.0.13/building/operating/storyboard-troubleshooting)** — Error pattern → root cause → fix for the most common storyboard failures +- **[Known spec ambiguities](/dist/docs/3.0.13/building/cross-cutting/known-ambiguities)** — Open spec gaps with workarounds and issue links; entries are removed as underlying issues close + +## Further reading + +- **[Compliance Catalog](/dist/docs/3.0.13/building/verification/compliance-catalog)** — Full taxonomy of protocols and specialisms with storyboard IDs +- **[Validate Your Agent](/dist/docs/3.0.13/building/verification/validate-your-agent)** — How to run the suite +- **[Security Model](/dist/docs/3.0.13/building/concepts/security-model)** — Strategic framing for the five defense layers that the security storyboards enforce +- **[Security (implementation reference)](/dist/docs/3.0.13/building/by-layer/L1/security)** — Normative rules cited by the storyboards +- **[Versioning](/dist/docs/3.0.13/reference/versioning)** — Major-version support windows +- **[Known Limitations](/dist/docs/3.0.13/reference/known-limitations)** — Visible edges of the specification diff --git a/dist/docs/3.0.13/building/cross-cutting/known-ambiguities.mdx b/dist/docs/3.0.13/building/cross-cutting/known-ambiguities.mdx new file mode 100644 index 0000000000..d145419526 --- /dev/null +++ b/dist/docs/3.0.13/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.0.13/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) — the storyboard narrative now explicitly directs API-key-only agents to declare `auth.api_key` in the test kit and omit PRM entirely. Optional-phase semantics make `oauth_discovery` failures non-fatal; `mechanism_required` passes via the API-key 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 key as a valid credential — the default test kit (`acme-outdoor`) probes with `demo-acme-outdoor-v1`, and your agent must accept that value alongside your production key. This satisfies `test_kit.auth.api_key` and lets the `api_key_path` phase run; without it the phase is skipped and `assert_mechanism` fails with `actual: []`. See the [storyboard troubleshooting guide — Bearer-only agent: assert_mechanism](/dist/docs/3.0.13/building/operating/storyboard-troubleshooting#bearer-only-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 — canonical example `universal/schema-validation.yaml > past_start_reject_path` + `past_start_adjust_path` (aggregation flag `past_start_handled`). +- **Gap**: a conformant agent picks one branch (e.g., rejects past `start_time`); the other branch's assertion (e.g., `field_present: media_buy_id`) 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.0.13/building/cross-cutting/sdk-stack.mdx b/dist/docs/3.0.13/building/cross-cutting/sdk-stack.mdx new file mode 100644 index 0000000000..5cc62d58fe --- /dev/null +++ b/dist/docs/3.0.13/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 is the transaction and control plane** — planning, deal creation, creative submission, reporting. Impression-time decisioning happens in adjacent protocols ([TMP](/dist/docs/3.0.13/trusted-match), RTB, VAST). AdCP latency budgets are seconds, often async-by-design — not the millisecond budgets you'd expect from a serve-time protocol. If you came here looking for a serve-time auction surface, you want [TMP](/dist/docs/3.0.13/trusted-match). + + +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.0.13/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.0.13/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.0.13/building/concepts/security-model) and the [implementation profile](/dist/docs/3.0.13/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.0.13/accounts/overview) and [Calling an agent](/dist/docs/3.0.13/protocol/calling-an-agent). + +What's in it: + +- Agent registry lookup (resolving agent metadata from a published [agent card](/dist/docs/3.0.13/protocol/calling-an-agent)). +- Brand resolution: mapping the requesting agent to a buyer brand / advertiser identity via [Brand Protocol](/dist/docs/3.0.13/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.0.13/registry/registering-an-agent) and [AAO Verified](/dist/docs/3.0.13/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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/building/by-layer/L3/task-lifecycle). +- **Webhook emission** — state changes notify subscribed buyers, with retry, idempotency, and signature. See [Webhooks](/dist/docs/3.0.13/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.0.13/building/by-layer/L3/comply-test-controller) and [Conformance](/dist/docs/3.0.13/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.0.13/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.0.13/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.0.13/community/working-group) and the [Slack community](https://join.slack.com/t/agenticads/shared_invite/zt-3c5sxvdjk-x0rVmLB3OFHVUp~WutVWZg). + +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.0.13/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.0.13/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.0.13/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.0.13/building/verification/conformance). +- **Conformance test surface** — storyboards drive your state via the [`comply_test_controller`](/dist/docs/3.0.13/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.0.13/building/cross-cutting/version-adaptation). For the spec-side rules, see [Versioning](/dist/docs/3.0.13/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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/building/cross-cutting/version-adaptation.mdx b/dist/docs/3.0.13/building/cross-cutting/version-adaptation.mdx new file mode 100644 index 0000000000..91bb66df99 --- /dev/null +++ b/dist/docs/3.0.13/building/cross-cutting/version-adaptation.mdx @@ -0,0 +1,203 @@ +--- +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.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 | + +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.0.13/building/cross-cutting/sdk-stack#version-adaptation). For the spec-side rules see [Versioning](/dist/docs/3.0.13/reference/versioning). + +## 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({ 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. + +## 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.0.13/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.5'`, `'3.1.0'` — 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. + +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.5', '3.1.0'], + // …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.0.13/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.0.13/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({ 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({ 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 typical multi-version production setup: + +1. **Server**: declare `supported_versions: ['3.0.5', '3.1.0']` 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` (e.g., `'v2.5'`) based on what the registry or peer's capabilities advertise. The client-side adapters translate the 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.0.13/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.0.13/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.0.13/reference/whats-new-in-v3). For the migration path, see [Migrate from a hand-rolled agent](/dist/docs/3.0.13/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.0.13/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.0.13/building/cross-cutting/sdk-stack) — layered architecture reference +- [Where to start](/dist/docs/3.0.13/building) — decision page +- [Versioning](/dist/docs/3.0.13/reference/versioning) — spec-side version rules +- [What's new in v3](/dist/docs/3.0.13/reference/whats-new-in-v3) — protocol-wide 3.0 changelog +- [Migrate from a hand-rolled agent](/dist/docs/3.0.13/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.0.13/building/get-test-ready.mdx b/dist/docs/3.0.13/building/get-test-ready.mdx new file mode 100644 index 0000000000..3149c129cd --- /dev/null +++ b/dist/docs/3.0.13/building/get-test-ready.mdx @@ -0,0 +1,199 @@ +--- +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/client@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.0.13/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.0.13/media-buy/advanced-topics/sandbox) (or `list_accounts`) | How to obtain a sandbox account to run tests against | Your agent's account tool | +| [`comply_test_controller`](/dist/docs/3.0.13/building/by-layer/L3/comply-test-controller) | How to seed fixtures and force seller-side transitions deterministically | 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` is how the runner picks which storyboards apply to you. It is also the [conformance](/dist/docs/3.0.13/building/verification/conformance) contract: you are promising to pass every storyboard that matches what you declare. + +The example below is for a guaranteed + proposal seller. A broadcast-TV seller would claim `sales-broadcast-tv`; a creative-only agent would claim the `creative` protocol with `creative-hosting` 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", "sales-proposal-mode"], + "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.0.13/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.0.13/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: + +**Implicit accounts (`require_operator_auth: false`).** Your agent accepts `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. + +**Explicit accounts (`require_operator_auth: true`).** Accounts must be pre-provisioned by a human on your side. The runner calls `list_accounts` with a sandbox filter to discover pre-existing test accounts. Publish a short note telling operators how to request one — include the contact, the expected turnaround, and what credentials they'll receive. + +Full details and examples: [Sandbox mode](/dist/docs/3.0.13/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 a first pass and for capability discovery, but [conformance](/dist/docs/3.0.13/building/verification/conformance) treats **deterministic mode** — full lifecycle walks enabled by the controller — as the bar for specialism coverage. + +`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 | Almost every storyboard — this replaces hardcoded-ID discovery | +| `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.0.13/building/by-layer/L3/comply-test-controller) for scenario-by-scenario parameters and response shapes, and the [Compliance Catalog](/dist/docs/3.0.13/building/verification/compliance-catalog) for which scenarios each specialism requires. + +### Wiring the SDK scaffold + +`@adcp/client` (≥ 5.8.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/client@^5.8.0 +``` + + +The scaffold is TypeScript/JavaScript. Python, Go, and Java sellers implement the tool directly against the [schema](https://adcontextprotocol.org/schemas/3.0.13/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 [Schemas and SDKs](/dist/docs/3.0.13/building/by-layer/L0/schemas). + + +```ts +import { createComplyController, TestControllerError } from '@adcp/client/testing'; +// `server` is your AdcpServer or MCP server instance — see `createAdcpServer` in +// `@adcp/client/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`.** Scenarios you do not register return `UNKNOWN_SCENARIO` automatically — never a schema error. +- **Param validation.** Invalid params produce `INVALID_PARAMS` 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` in `'INVALID_TRANSITION' | 'NOT_FOUND' | 'FORBIDDEN' | 'INVALID_PARAMS'` from any adapter. + +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` 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/client/server` directly. + + +## Step 4 — Run the storyboard runner + +Once the three surfaces are in place, the runner takes over: + +```bash +npx @adcp/client@latest --save-auth my-agent http://localhost:3001/mcp +npx @adcp/client@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.0.13/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` 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` (implicit) or `list_accounts` (explicit) handles sandbox requests per step 2 +- [ ] `comply_test_controller` is absent from `tools/list` on any production endpoint +- [ ] Requests that reference a non-sandbox account are rejected with `FORBIDDEN` +- [ ] 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.0.13/building/verification/validate-your-agent)** — CLI, Addie workflows, and multi-instance verification +- **[Compliance test controller reference](/dist/docs/3.0.13/building/by-layer/L3/comply-test-controller)** — Full scenario-by-scenario spec +- **[Sandbox mode](/dist/docs/3.0.13/media-buy/advanced-topics/sandbox)** — The two account model paths in depth +- **[Conformance](/dist/docs/3.0.13/building/verification/conformance)** — What "conformant" and "verified" mean once your runs pass diff --git a/dist/docs/3.0.13/building/grading.mdx b/dist/docs/3.0.13/building/grading.mdx new file mode 100644 index 0000000000..85ceda9dec --- /dev/null +++ b/dist/docs/3.0.13/building/grading.mdx @@ -0,0 +1,83 @@ +--- +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/client` 5.21+ ships CLI graders for authentication conformance. They are separate from the [compliance storyboards](/dist/docs/3.0.13/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/client@latest`. If you have `@adcp/client` installed globally (`npm install -g @adcp/client`) you can drop the `npx @adcp/client@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/client@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`; 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/client@latest diagnose-auth +``` + +The `` form uses a saved alias from `~/.adcp/config.json` (set via `npx @adcp/client@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` 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/client@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/client@latest signing verify-vector +``` + +Reads a vector from stdin (JSON matching the test-vector schema at [`/compliance/latest/test-vectors/request-signing/`](https://adcontextprotocol.org/compliance/latest/test-vectors/request-signing/)) and reports whether your client's signature base matches the expected output. + +**When to use it:** while implementing a signing client to confirm each component rule in isolation before testing end-to-end. + +## Related + +- [Validate Your Agent](/dist/docs/3.0.13/building/verification/validate-your-agent) — storyboard-based protocol compliance testing +- [Authentication](/dist/docs/3.0.13/building/by-layer/L2/authentication) — auth model overview, bearer tokens, RFC 9421 introduction +- [Security implementation reference](/dist/docs/3.0.13/building/by-layer/L1/security#signed-requests-transport-layer) — full RFC 9421 profile, verifier checklist, key publication rules diff --git a/dist/docs/3.0.13/building/implementation/a2a-response-extraction.mdx b/dist/docs/3.0.13/building/implementation/a2a-response-extraction.mdx new file mode 100644 index 0000000000..6c031e9983 --- /dev/null +++ b/dist/docs/3.0.13/building/implementation/a2a-response-extraction.mdx @@ -0,0 +1,277 @@ +--- +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.0.13/building/by-layer/L0/a2a-response-format). For error-specific extraction, see [Transport Error Mapping](/dist/docs/3.0.13/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. + +## 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. + +**Streaming envelope.** A2A 1.0 wraps streaming responses and push-notification payloads in a `StreamResponse` oneof with exactly one of the keys `task`, `message`, `statusUpdate`, or `artifactUpdate` (A2A 1.0 §3.2.3, §4.3.3). Non-streaming responses (e.g., `tasks/get`, or v0.3 over HTTP) deliver the bare object. Extraction unwraps a 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 (1.0) | `.artifacts[0].parts[]` | Last DataPart (carries `adcp_error` for policy/validation rejections) | +| `working` | Interim | `status.message.parts[]` | First DataPart | +| `submitted` | Interim | `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. Rejected tasks are expected to carry an `adcp_error` DataPart describing why the request was rejected (tier/policy/validation). + +## Extraction Algorithm + +Clients MUST extract AdCP data from A2A responses using these steps: + +0. **Unwrap stream 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 (A2A 1.0 `StreamResponse` oneof). Bare `Task` / `TaskStatusUpdateEvent` objects — non-streaming responses 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 (out-of-band agent messages) MUST be ignored by task-oriented extractors — step 1 returns null when the unwrapped object has no `status.state`. Webhook/SSE handlers MUST NOT return a `200 OK` acknowledgment for unrecognized `{ message }` envelopes; return `400 Bad Request` or silently discard at the transport layer to avoid acting as a presence oracle for attackers probing endpoints. +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). +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.0.13/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.0.13/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.0.13/building/by-layer/L0/a2a-response-format) — canonical response structure for sellers +- [Transport Error Mapping](/dist/docs/3.0.13/building/operating/transport-errors) — error extraction from MCP and A2A +- [MCP Response Extraction](/dist/docs/3.0.13/building/by-layer/L0/mcp-response-extraction) — equivalent spec for MCP +- [A2A Guide](/dist/docs/3.0.13/building/by-layer/L0/a2a-guide) — A2A transport integration diff --git a/dist/docs/3.0.13/building/implementation/async-operations.mdx b/dist/docs/3.0.13/building/implementation/async-operations.mdx new file mode 100644 index 0000000000..6ff203456a --- /dev/null +++ b/dist/docs/3.0.13/building/implementation/async-operations.mdx @@ -0,0 +1,347 @@ +--- +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 — configure a webhook via `push_notification_config`. 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 should configure a webhook and move on. + +:::tip Webhooks for `submitted` operations +**Webhooks** are the recommended approach for `submitted` operations — they work with any transport (MCP, A2A, REST) and handle operations that outlive a single session. See [Push Notifications](/dist/docs/3.0.13/building/by-layer/L3/webhooks). + +**Polling** via `tasks/get` works as a simpler alternative or backup. See the [polling pattern](#polling-for-submitted-operations) below. + +**MCP Tasks** handle async at the protocol level, but client support is still limited — most chat-based MCP clients (Claude Desktop, Cursor) don't yet support task-augmented tool calls. If you're building your own MCP client or using the JS SDK directly, MCP Tasks work well. See [MCP Guide](/dist/docs/3.0.13/building/by-layer/L0/mcp-guide#async-operations-via-mcp-tasks). +::: + +## Operation examples + +### Synchronous (instant) + +| Operation | Description | +|-----------|-------------| +| `get_adcp_capabilities` | Agent capability discovery | +| `list_creative_formats` | Format 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 | +| `sync_creatives` | Asset review and transcoding pipelines | +| `build_creative` (with review) | Human creative review before finalizing | +| `activate_signal` | Platform deployment pipelines | + +These operations integrate with external systems or require human approval. + +## 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 webhook delivery window — if you're also polling as backup, use a 30-second interval. + +## 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.0.13/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 — need webhook or polling + if (response.status === 'submitted') { + // Poll as backup (webhook is preferred — see Push Notifications) + 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 a backup for `submitted` operations when webhooks aren't configured or as a fallback. Don't poll for `working` — the server delivers the result on the open connection. + +```javascript +// Polling tracks status to a terminal value. The completion payload +// (e.g. media_buy_id, packages) is delivered to the webhook configured +// on the original request via push_notification_config — see #3123 for +// the planned 3.1 typed-result projection on tasks/get. +async function pollUntilTerminal(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('tasks/get', { + task_id: taskId + }); + + 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('tasks/get', { + task_id: operation.task_id + }); + + // 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.0.13/building/by-layer/L3/webhooks) for push notifications instead of polling +- **Task Lifecycle**: See [Task Lifecycle](/dist/docs/3.0.13/building/by-layer/L3/task-lifecycle) for status handling details +- **Orchestrator Design**: See [Orchestrator Design](/dist/docs/3.0.13/building/operating/orchestrator-design) for production patterns diff --git a/dist/docs/3.0.13/building/implementation/comply-test-controller.mdx b/dist/docs/3.0.13/building/implementation/comply-test-controller.mdx new file mode 100644 index 0000000000..39c6283fb4 --- /dev/null +++ b/dist/docs/3.0.13/building/implementation/comply-test-controller.mdx @@ -0,0 +1,742 @@ +--- +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 + +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 that sellers expose in sandbox mode. It allows a storyboard runner to trigger seller-side state transitions deterministically, enabling end-to-end lifecycle verification. + +## 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` on next call | +| **Reporting** | Call `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`; 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` (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.0.13/compliance/comply-test-controller-request.json) | [`comply-test-controller-response.json`](https://adcontextprotocol.org/schemas/3.0.13/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`, `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_account_status", + "force_media_buy_status", + "force_create_media_buy_arm", + "force_task_completion", + "force_session_status", + "simulate_delivery", + "simulate_budget_spend", + "seed_product", + "seed_pricing_option", + "seed_creative", + "seed_plan", + "seed_media_buy" + ], + "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_account_status: {account_id, status}. force_media_buy_status: {media_buy_id, status, rejection_reason?}. force_create_media_buy_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, impressions?, clicks?, reported_spend?, conversions?}. simulate_budget_spend: {account_id|media_buy_id, spend_percentage}. 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?}." + } + }, + "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.0.13/creative/specification#creative-status-lifecycle). + +**Params:** + +| Field | Type | Required | Description | +|-------|------|----------|-------------| +| `creative_id` | string | Yes | Creative to transition | +| `status` | `processing` \| `approved` \| `rejected` \| `pending_review` \| `archived` | Yes | Target status | +| `rejection_reason` | string | When `status` = `rejected` | Reason for rejection | + +**Example:** + +```json +{ + "scenario": "force_creative_status", + "params": { + "creative_id": "cr-123", + "status": "rejected", + "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.0.13/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" + } +} +``` + +### `force_create_media_buy_arm` + +Shapes the next [`create_media_buy`](/dist/docs/3.0.13/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.0.13/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_task_completion` + +Resolves a previously-submitted async task to `completed` with a buyer-supplied result payload. The companion to `force_create_media_buy_arm`: that scenario drives the seller into the 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` (the canonical 3.0 delivery path for completion payloads) and via subsequent [`tasks/get`](/dist/docs/3.0.13/building/by-layer/L3/async-operations#polling-for-submitted-operations) calls reporting `status: "completed"`. A typed result projection on the polling response is tracked for 3.1 in [#3123](https://github.com/adcontextprotocol/adcp/issues/3123). + +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` (not `FORBIDDEN`, 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.0.13/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` 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`. 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.** Replays with identical params before the task is terminal are idempotent no-ops. Replays with diverging params before the task is terminal MUST overwrite the registered result (last-write-wins) — same precedent as `force_create_media_buy_arm`'s "second call overwrites." After the task is terminal, every replay returns `INVALID_TRANSITION` regardless of params. + +**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` 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 | +| `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 | + +**Example:** + +```json +{ + "scenario": "simulate_delivery", + "params": { + "media_buy_id": "mb-789", + "impressions": 10000, + "clicks": 150, + "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`. 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_ids[]`. Sellers MAY fill in defaults for omitted fields. | + +**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_ids": [{ "id": "display_300x250" }] + } + } +} +``` + +### `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.0.13/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` first. + +**Params:** + +| Field | Type | Required | Description | +|-------|------|----------|-------------| +| `creative_id` | string | Yes | Stable identifier | +| `fixture` | object | No | Creative shape. Typical fields: `status`, `format_id`, `assets`, `click_through_url`. | + +**Example:** + +```json +{ + "scenario": "seed_creative", + "params": { + "creative_id": "campaign_hero_video", + "fixture": { + "status": "approved", + "format_id": { "id": "video_30s" }, + "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" }] + } + } +} +``` + +### Seeding semantics and ordering + +- **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`). 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` 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": { + "impressions": 10000, + "clicks": 150, + "reported_spend": { "amount": 150.00, "currency": "USD" } + }, + "cumulative": { + "impressions": 25000, + "clicks": 380, + "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 all simulation calls for this media buy, so callers can verify expected state before checking `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` | Requested state-machine transition is not valid (e.g., `archived → processing`, `canceled → paused`) | +| `INVALID_STATE` | 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` | Entity does not exist or caller does not have access (multi-tenant sandboxes SHOULD treat "not yours" as "not found") | +| `UNKNOWN_SCENARIO` | Scenario not implemented by this seller | +| `INVALID_PARAMS` | Missing or malformed params, or precondition not met (e.g., `simulate_budget_spend` on an entity with no budget configured) | +| `FORBIDDEN` | Production account referenced from a sandbox connection | +| `INTERNAL_ERROR` | 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.0.13/compliance/comply-test-controller-response.json), distinct from the canonical seller-response [`error-code.json`](https://adcontextprotocol.org/schemas/3.0.13/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. + +## 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.0.13/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`. 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` 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` 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 seed requirements.** Stateful compliance also requires that sellers implement the `seed_*` scenarios covering the specialisms they certify against. The `UNKNOWN_SCENARIO` → `not_applicable` grading is for honest coverage reporting on missing surface area, not a blanket opt-out from conformance — a seller certifying `sales-non-guaranteed` MUST implement at least `seed_product` and `seed_pricing_option`; a seller certifying `creative-ad-server` MUST implement `seed_creative`; a seller certifying `governance-delivery-monitor` MUST implement `seed_plan` (and `seed_media_buy` where the storyboard requires it). The storyboard authors in `static/compliance/source/specialisms/` declare the fixtures their storyboards need; sellers match that list to the specialisms on their cert. + +## 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`, 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.0.13/creative/specification#creative-status-lifecycle), [account lifecycle](/dist/docs/3.0.13/accounts/overview#account-status-lifecycle), [media buy lifecycle](/dist/docs/3.0.13/media-buy/specification), [SI session lifecycle](/dist/docs/3.0.13/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` 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.0.13/building/implementation/error-handling.mdx b/dist/docs/3.0.13/building/implementation/error-handling.mdx new file mode 100644 index 0000000000..07d3589e0d --- /dev/null +++ b/dist/docs/3.0.13/building/implementation/error-handling.mdx @@ -0,0 +1,578 @@ +--- +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.0.13/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/client` 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.0.13/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.0.13/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.0.13/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.0.13/contributing/storyboard-authoring#asserting-on-errors). + +**Discriminated rejection arms.** When the task response defines a structured rejection arm (e.g., `AcquireRightsRejected`, `CreativeRejected` — see the wire-placement guidance on [`GOVERNANCE_DENIED`](https://adcontextprotocol.org/schemas/3.0.13/enums/error-code.json) for the rule), the spec-correct denial response carries no error code on the wire — the rejection arm enforces `not: { required: [errors] }` at the schema layer. Asserting `check: error_code` will fail against a conformant agent. Assert on the discriminator instead: `check: field_value, path: "status", value: "rejected"`. This is the pattern for governance denial on `acquire_rights` and policy denial on `creative_approval`; assertions that mix the two paths (`error_code` for tasks with rejection arms, `field_value` for tasks without) bake non-spec opinions into the storyboard. + +### Error Object Fields + +These fields are defined by the [`error.json`](https://adcontextprotocol.org/schemas/3.0.13/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 (transient errors) | +| `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, drawn from JSON Schema validator output. Each entry carries `pointer` (RFC 6901, matches Ajv's `instancePath`), `message`, `keyword` (the JSON Schema keyword that rejected — `required` / `type` / `format` / etc.), and optional `schemaPath`. Use on `VALIDATION_ERROR` and any other code where multiple fields were rejected at once. **`schemaPath` SHOULD NOT be emitted on production-facing endpoints** — it leaks which `oneOf` branch the validator selected, a probe oracle for adversarial callers crafting payloads against polymorphic unions. Sellers MAY emit in dev/sandbox modes. | +| `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. | + +## Standard Error Codes + +Standard error codes are defined in [`error-code.json`](https://adcontextprotocol.org/schemas/3.0.13/enums/error-code.json). Sellers MAY use codes not in this vocabulary for platform-specific errors. Agents MUST handle unknown codes by falling back to the `recovery` classification. + +**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` for `product_id`, `PACKAGE_NOT_FOUND` for `package_id`, `MEDIA_BUY_NOT_FOUND` for `media_buy_id`, `CREATIVE_NOT_FOUND` for `creative_id`, `SIGNAL_NOT_FOUND` for `signal_id`, `SESSION_NOT_FOUND` for SI `session_id`, `ACCOUNT_NOT_FOUND` for `account_id`, `PLAN_NOT_FOUND` for governance `plan_id`. Fall back to `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_ids`), `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.0.13/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` | correctable | Authentication is required, or presented credentials were rejected | See *AUTH_REQUIRED sub-cases* below | +| `ACCOUNT_NOT_FOUND` | terminal | Account reference could not be resolved | Verify via `list_accounts` or contact seller | +| `ACCOUNT_SETUP_REQUIRED` | correctable | Account needs setup before use | Check `details.setup` for URL or instructions | +| `ACCOUNT_AMBIGUOUS` | correctable | Natural key resolves to multiple accounts | Pass explicit `account_id` or a more specific natural key | +| `ACCOUNT_PAYMENT_REQUIRED` | terminal | Outstanding balance requires payment | Buyer must resolve billing | +| `ACCOUNT_SUSPENDED` | terminal | Account has been suspended | Contact seller to resolve | + +#### `AUTH_REQUIRED` sub-cases + +`AUTH_REQUIRED` shares one wire code across two operationally distinct cases that agents MUST handle differently: + +| Sub-case | Behavior | Why | +|---|---|---| +| Credentials missing | Provide credentials and retry once. | Genuinely correctable from inside the agent loop. | +| Credentials presented but rejected (expired / revoked / 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. | + +A future minor release splits this code into `AUTH_MISSING` (correctable) and `AUTH_INVALID` (terminal). Until then, agents SHOULD branch on whether credentials were actually attached to the failing request: + +```javascript +case 'AUTH_REQUIRED': + 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; +``` + +### Request Validation + +| Code | Recovery | Description | Resolution | +|------|----------|-------------|------------| +| `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` | correctable | Request violates content or advertising policies | Review policy requirements in the error details | +| `COMPLIANCE_UNSATISFIED` | correctable | Required disclosure cannot be satisfied by the target format | Choose a format that supports the required disclosure capabilities | +| `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` | correctable | Referenced product IDs are unknown or expired | Remove invalid IDs, or re-discover with `get_products` | +| `PRODUCT_UNAVAILABLE` | correctable | Product is sold out or no longer available | Choose a different product | +| `PROPOSAL_EXPIRED` | correctable | Referenced proposal has passed its `expires_at` | Run `get_products` to get a fresh proposal | +| `REQUOTE_REQUIRED` | correctable | Requested update falls outside the envelope (budget, dates, volume, targeting) the original quote was priced against; `pricing_option` remains locked | Call `get_products` with `buying_mode: "refine"` against the existing `proposal_id`, then resubmit against the new `proposal_id` | +| `SIGNAL_NOT_FOUND` | correctable | Referenced signal does not exist in the catalog | Verify `signal_id` via `get_signals`, or confirm availability from this agent | +| `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` | correctable | Budget below seller's minimum | Increase budget or check `capabilities.media_buy.limits` | +| `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`, or register it via `sync_creatives` | +| `CREATIVE_REJECTED` | correctable | Creative failed content policy review | Revise per seller's `advertising_policies` | + +### System + +| Code | Recovery | Description | Resolution | +|------|----------|-------------|------------| +| `RATE_LIMITED` | transient | Request rate exceeded | Wait for `retry_after` seconds, then retry | +| `SERVICE_UNAVAILABLE` | transient | Seller service temporarily unavailable | Retry with exponential backoff | +| `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 + +### Normative throttling behavior + +These rules apply when a caller receives a throttling-category error (`RATE_LIMITED`, or any error whose `recovery` is `transient` and whose `details` conform to the [`rate-limited`](https://adcontextprotocol.org/schemas/3.0.13/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 number of seconds. +- 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`, `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.0.13/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 "AUTH_REQUIRED sub-cases" above. + if (!error.requestHadCredentials) { + await refreshCredentials(); + return retry(); + } + // Credentials were presented and rejected — terminal at app layer. + 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 policy review. Check the suggestion 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 + }); + + if (['completed', 'failed', 'canceled'].includes(response.status)) { + // Status is terminal. The completion payload reaches the buyer + // through the webhook configured on the original request; if the + // webhook also failed, request a retry from the seller per their + // operational support channel. + 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.0.13/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.0.13/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` | correctable | `sync_plans` was not called before `check_governance` | +| `INVALID_REQUEST` | correctable | Missing required fields (e.g., `plan_id`, `caller`) | +| `AUTH_REQUIRED` | correctable | Governance agent requires authentication | + +## 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 the `recovery` classification +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.0.13/building/operating/transport-errors) for how errors travel over MCP and A2A +- **Task Lifecycle**: See [Task Lifecycle](/dist/docs/3.0.13/building/by-layer/L3/task-lifecycle) for status handling +- **Webhooks**: See [Webhooks](/dist/docs/3.0.13/building/by-layer/L3/webhooks) for webhook error handling +- **Security**: See [Security](/dist/docs/3.0.13/building/by-layer/L1/security) for authentication errors diff --git a/dist/docs/3.0.13/building/implementation/index.mdx b/dist/docs/3.0.13/building/implementation/index.mdx new file mode 100644 index 0000000000..a125b4fa19 --- /dev/null +++ b/dist/docs/3.0.13/building/implementation/index.mdx @@ -0,0 +1,102 @@ +--- +title: Implementation Patterns +sidebarTitle: Overview +description: "AdCP implementation patterns: task lifecycle, async operations, webhooks, error handling, security, and orchestrator design for production advertising systems." +"og:title": "AdCP — Implementation Patterns" +--- + +This section covers patterns and best practices for building robust, production-ready systems that integrate with AdCP. + +## Core Patterns + + + + Status values, state transitions, and polling patterns. The foundation for handling any AdCP operation. + + + Handling sync, async, and interactive operations. Timeouts, progress tracking, and completion handling. + + + Push notification architecture, reliability patterns, circuit breakers, and idempotent handlers. + + + Error categories, standard error codes, recovery strategies, and retry logic. + + + +## System Design + + + + Security considerations for AdCP integrations. Webhook verification, replay prevention, and access control. + + + State machine design, operation tracking, persistence patterns, and reconciliation. + + + +## Who This Section Is For + +This section is primarily for **orchestrator builders** - developers building systems that: + +- Manage multiple AdCP operations concurrently +- Need to survive restarts and recover state +- Handle long-running operations (hours to days) +- Require high reliability and auditability + +If you're building a simple integration that makes occasional AdCP calls, the [Integration](/dist/docs/3.0.13/building/by-layer/L0) section may be sufficient. + +## Key Design Principles + +### 1. Asynchronous First + +AdCP operations may take seconds, hours, or days. Design all operations as async: + +- Store operation state persistently +- Handle orchestrator restarts gracefully +- Implement proper timeout handling + +### 2. Status-Driven Logic + +Every response includes a `status` field. Build your logic around status values: + +```javascript +switch (response.status) { + case 'completed': return processResults(response); + case 'working': return pollForUpdates(response.task_id); + case 'input-required': return promptUser(response.message); + case 'failed': return handleError(response); +} +``` + +### 3. Webhooks + Polling + +Never rely solely on webhooks: + +- Configure webhooks for immediate notification +- Implement polling as backup +- Use circuit breakers for reliability + +### 4. Idempotent Operations + +Make all operations idempotent: + +- Check for existing operations before creating new ones +- Handle duplicate webhook deliveries gracefully +- Use event IDs for deduplication + +## Reading Order + +For comprehensive understanding, read in this order: + +1. **[Task Lifecycle](/dist/docs/3.0.13/building/by-layer/L3/task-lifecycle)** - Understand status values and transitions +2. **[Async Operations](/dist/docs/3.0.13/building/by-layer/L3/async-operations)** - Handle different operation types +3. **[Webhooks](/dist/docs/3.0.13/building/by-layer/L3/webhooks)** - Implement push notifications reliably +4. **[Error Handling](/dist/docs/3.0.13/building/by-layer/L3/error-handling)** - Handle failures gracefully +5. **[Orchestrator Design](/dist/docs/3.0.13/building/operating/orchestrator-design)** - Put it all together + +## Next Steps + +- **Start with basics**: [Task Lifecycle](/dist/docs/3.0.13/building/by-layer/L3/task-lifecycle) +- **Building webhooks**: [Webhooks](/dist/docs/3.0.13/building/by-layer/L3/webhooks) +- **Complete architecture**: [Orchestrator Design](/dist/docs/3.0.13/building/operating/orchestrator-design) diff --git a/dist/docs/3.0.13/building/implementation/known-ambiguities.mdx b/dist/docs/3.0.13/building/implementation/known-ambiguities.mdx new file mode 100644 index 0000000000..4f6a680744 --- /dev/null +++ b/dist/docs/3.0.13/building/implementation/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/client` 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.0.13/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) — the storyboard narrative now explicitly directs API-key-only agents to declare `auth.api_key` in the test kit and omit PRM entirely. Optional-phase semantics make `oauth_discovery` failures non-fatal; `mechanism_required` passes via the API-key path. +- **Workaround**: if your agent has no OAuth issuer, do not serve `/.well-known/oauth-protected-resource/...`. Declare `auth.api_key` in your test-kit and let the OAuth discovery phase fail silently. + +### Idempotency missing-key probe via SDK + +- **Storyboard**: `universal/idempotency.yaml` step `missing_key/create_media_buy_missing_key`. +- **Gap**: the reference `@adcp/client` 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 — canonical example `universal/schema-validation.yaml > past_start_reject_path` + `past_start_adjust_path` (aggregation flag `past_start_handled`). +- **Gap**: a conformant agent picks one branch (e.g., rejects past `start_time`); the other branch's assertion (e.g., `field_present: media_buy_id`) 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/client` 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/client`'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/client` 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.0.13/building/implementation/mcp-response-extraction.mdx b/dist/docs/3.0.13/building/implementation/mcp-response-extraction.mdx new file mode 100644 index 0000000000..b09b4d7e71 --- /dev/null +++ b/dist/docs/3.0.13/building/implementation/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.0.13/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.0.13/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.0.13/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.0.13/building/operating/transport-errors) — error extraction from MCP and A2A +- [A2A Response Extraction](/dist/docs/3.0.13/building/by-layer/L0/a2a-response-extraction) — equivalent spec for A2A +- [MCP Guide](/dist/docs/3.0.13/building/by-layer/L0/mcp-guide) — MCP transport integration diff --git a/dist/docs/3.0.13/building/implementation/orchestrator-design.mdx b/dist/docs/3.0.13/building/implementation/orchestrator-design.mdx new file mode 100644 index 0000000000..63d188b709 --- /dev/null +++ b/dist/docs/3.0.13/building/implementation/orchestrator-design.mdx @@ -0,0 +1,527 @@ +--- +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 tasks/list""" + server_tasks = await adcp_client.call('tasks/list', { + '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('tasks/get', { + 'task_id': task_id + }) + + 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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/governance/campaign/tasks/report_plan_outcome) | No feedback loop — governance agent cannot improve future recommendations | + +See the [media buy governance workflow](/dist/docs/3.0.13/media-buy/index#governance) for the complete sequence with code examples, and the [seller integration guide](/dist/docs/3.0.13/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.0.13/building/by-layer/L3/task-lifecycle) for status handling +- **Webhooks**: See [Webhooks](/dist/docs/3.0.13/building/by-layer/L3/webhooks) for push notifications +- **Security**: See [Security](/dist/docs/3.0.13/building/by-layer/L1/security) for multi-tenant security diff --git a/dist/docs/3.0.13/building/implementation/security.mdx b/dist/docs/3.0.13/building/implementation/security.mdx new file mode 100644 index 0000000000..e8f861718b --- /dev/null +++ b/dist/docs/3.0.13/building/implementation/security.mdx @@ -0,0 +1,1695 @@ +--- +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.0.13/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 | +| `list_creative_formats` | Public format catalog | + +## Webhook Security + +AdCP 3.0 unifies webhook signing on the [AdCP RFC 9421 profile](#webhook-callbacks) — the seller signs outbound webhooks with its adagents.json-published key, and the buyer verifies against the seller's published JWKS. 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`. + +### 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`. 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.0.13/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: `. Any body-level `signature` field is a convenience copy and MUST NOT be trusted over the headers. + +**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`, collection-list `webhook_url`, TMP provider `endpoint`, `adagents.json` `authoritative_location`, and `reporting_bucket.setup_instructions`. + +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). +5. **Cap response size and timeouts.** Recommended: 5 MB body cap, 10 s connect, 10 s read. +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. + +Feature-specific security sections extend these rules with their own lifecycle and content-handling requirements: +- [Offline reporting buckets](/dist/docs/3.0.13/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.0.13/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.0.13/governance/property/managed-networks#security-considerations) — validator fetch semantics, change detection, relationship termination. +- [TMP provider registration](/dist/docs/3.0.13/trusted-match/specification#provider-registration-security) — dynamic registration authentication, router-to-provider auth, `/health` info-leakage rules. + +## 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.0.13/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.0.13/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.0.13/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.0.13/reference/glossary#a) and [Agent](/dist/docs/3.0.13/reference/glossary#a). + +### The two-step pattern + +Every request carries an explicit `account` (via `account_id` for explicit-account models, or the `{brand, operator}` natural key for implicit models). 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 mutating AdCP task request (`create_media_buy`, `update_media_buy`, `sync_creatives`, `activate_signal`, `acquire_rights`, `creative_approval`, `update_rights`, `build_creative`, `calibrate_content`, `create_content_standards`, `update_content_standards`, `create_property_list`, `update_property_list`, `delete_property_list`, `create_collection_list`, `update_collection_list`, `delete_collection_list`, `log_event`, `provide_performance_feedback`, `report_usage`, `report_plan_outcome`, `si_initiate_session`, `si_send_message`, and the `sync_*` tasks). Sellers MUST reject any mutating request that omits it with `INVALID_REQUEST`. 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. Scoping by both dimensions prevents cross-account cache collisions when one agent (e.g. an agency) acts on multiple accounts: an identical-looking `create_media_buy` under account A and account B is two distinct buys, never one cached response replayed across the two. + +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`) 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. For async tasks, the cached response is the `submitted` result containing `task_id`. **The cache entry is immutable** — even if the async task subsequently completes, fails, or is canceled, a replay within the TTL MUST return the originally-cached `submitted` response (with `replayed: true`), 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. This preserves the byte-stable cache property and keeps the idempotency layer decoupled from async task lifecycle — sellers don't need to update cache entries when task state changes. +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.0.13/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 ceiling: 60 inserts/sec per agent sustained (3,600/min), with burst allowance up to 300 inserts/sec over rolling 10-second windows.** 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 recommended rates bound per-agent residency to ~216,000 entries — the same order of magnitude as the 100,000-entry per-keyid webhook replay cap at [Webhook replay dedup sizing](#webhook-replay-dedup-sizing), and an order of magnitude below the 1,000,000-entry per-keyid request-replay cap at [Transport replay dedup](#transport-replay-dedup). The numeric recommendations are SHOULD-level; the rate-limit-and-reject-with-`RATE_LIMITED` behavior itself is MUST. Sellers MUST expose the ceiling as a tunable configuration parameter — the 60/300/3,600 values are first-deployment starting points sized for a realistic high-volume launch pattern (≤10 media buys/min × 10 packages × 10 creatives, with 3–5× headroom for multi-campaign and retry patterns), not frozen defaults. Operators with burst onboarding or trafficking patterns larger than this ceiling MUST raise the limit rather than accept silent rejection of legitimate traffic; operators with steady low-volume traffic MAY tighten below the starting values. Sellers SHOULD NOT publish their exact configured ceiling numerically in capability responses — doing so makes the ceiling an ecosystem-wide attack target. Buyers discover the effective ceiling 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.0.13/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. + +#### 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. + +#### Response-level replay indicator + +The protocol envelope carries a top-level `replayed` boolean on responses to mutating requests: + +```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). + +#### 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 + +Buyers MUST generate a unique `idempotency_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 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. + +**Agent retry vs. network retry.** Two cases that look similar but need opposite 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." + +When in doubt, ask whether the serialized request bytes are the same. If yes, reuse the key. If no, the intent changed — 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, so retries send the identical payload even if the planner would produce something slightly different on re-execution. + +**When the seller's capability declaration is missing.** A seller that omits `adcp.idempotency.replay_ttl_seconds` from `get_adcp_capabilities` is non-compliant. Client SDKs MUST fail closed on retry-sensitive operations against that seller — raise an error, don't assume a default — so the buyer learns about the non-compliance immediately rather than after a silent double-booking. Read-only operations (`get_products`, `list_accounts`, etc.) are safe to issue against such a seller; only mutating requests require the declaration. + +**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. + +**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 implicit-accounts 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. +- **Sellers** persist the token as received and include it verbatim on all subsequent governance calls. Sellers that implement verification MUST verify per the checklist below before acting on the token. Sellers that have not yet implemented verification MUST still persist and forward the token unchanged so that verification-capable parties downstream (auditors, regulators) can act on it later. +- **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 (buyer correlation IDs, policy decision log, etc.) — sellers and buyers never need to parse the payload. + +#### Scope and dependencies + +- **In scope (3.0)**: buy-side governance. The `governance_context` token authorizes spend commitments made via AdCP tasks (`create_media_buy`, `acquire_rights`, `activate_signal`, `creative_services`). Sellers that run their own compliance policies (e.g., CTV political-ad rules, publisher brand-safety gates) express those via `conditions` responses on their own governance workflows; they do not issue signed tokens under this profile. +- **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 if any `crit`-listed claim is present. Per RFC 7515 §4.1.11, `crit` is an array of header/claim names that MUST be understood by the verifier. Verifiers MUST reject the token if any name in `crit` is not recognized. Governance agents MUST list in `crit` any claim whose omission or misinterpretation would change authorization semantics (e.g., a future `budget_cap` claim). This prevents silent downgrade attacks when the profile adds claims in later versions. + +**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 | `plan_id` the token authorizes. Note: `sub` is used here as a resource identifier rather than a user or authenticated agent. Implementations that log `sub` as a user ID should be aware of this. | +| `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.0.13/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` (pre-seller), `purchase`, `modification`, or `delivery`. Matches the governance check phase this token authorizes. The operation the seller is performing determines the required phase: `create_media_buy` → `purchase`; `update_media_buy` → `modification`; delivery-reporting callbacks → `delivery`. | +| `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 `purchase`, `modification`, and `delivery` phase tokens. MUST be null or absent on `intent` phase tokens. | +| `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). | +| `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`. | + +**Unknown-claim handling**: verifiers MUST ignore claims whose names they do not recognize *unless* those claim names appear in the token's `crit` header, in which case the token MUST be rejected. This asymmetric rule — ignore unknown, but reject unknown-and-critical — is how future versions of the profile add semantically meaningful claims without breaking backward compatibility for verifiers that haven't updated yet. + +**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. + +**`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.0.13/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. +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 + +Before treating a request as governance-approved, sellers MUST perform these checks in order, short-circuiting 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 name is not recognized by the verifier. +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` does not equal the `plan_id` in the governance call this token is attached to (prevents plan swap). +11. Reject if `phase` does not match the operation: `purchase` for `create_media_buy`; `modification` for `update_media_buy`; `delivery` for delivery-reporting callbacks; `intent` only for pre-seller buyer-side evaluation. +12. For non-intent tokens, reject if `media_buy_id` does not equal the media buy ID in the request. +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 does the seller treat the request as governance-approved. Note that sellers 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: 15 minutes for any seller accepting execution-phase tokens. Governance agents MUST NOT declare `next_update` more than 15 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. +- Polling is optional for intent-phase tokens with ≤15 min `exp`. +- 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 = 2× 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. + +- 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/client` 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, `nbf` in future | 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` mismatch, `sub` mismatch, `phase` mismatch, `media_buy_id` mismatch | No | `governance_token_not_applicable` | Reject. Token valid but not for this operation. | + +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" +} +``` + +Payload: +```json +{ + "iss": "https://gov.scope3.com", + "sub": "plan_q1_2026_launch", + "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", + "policy_decision_hash": "9b2a...f41c", + "audit_log_pointer": "https://gov.scope3.com/plans/plan_q1_2026_launch/logs/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; planId: string; mediaBuyId?: string; phase: "intent" | "purchase" | "modification" | "delivery"; + 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, + }).catch(() => { throw new GovTokenError("governance_token_invalid"); }); + + if (payload.sub !== ctx.planId) throw new GovTokenError("governance_token_not_applicable"); + if (payload.phase !== ctx.phase) 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.0.13/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 4.0 — the next breaking-changes accumulation window — will require it for spend-committing operations. The substrate ships in 3.0 so early adopters can surface canonicalization and proxy interop bugs before enforcement. 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's `adagents.json` agent entries. 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 an `adcp_use: "webhook-signing"` key 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. Cross-purpose key reuse is forbidden: 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). +- 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.0.13/building/verification/grading). + +#### Transport scope + +| Class | 3.0 | 4.0 | +|---|---|---| +| Spend-committing (`create_media_buy`, `update_media_buy`, `acquire_*`, `activate_signal`) | Optional, capability-advertised | Required | +| Reversible state changes (`sync_creatives`, `update_creative_status`) | Optional | Recommended | +| Read / discovery (`get_products`, `get_media_buy_delivery`, `list_*`) | Not in scope | Not in scope | +| TMP `provider_endpoint_url` requests | Out of scope (TMP has its own envelope) | 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 in 3.0 + +For implementers who want to pilot signing in 3.0 before the 4.0 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 operations the seller expects you to sign. Read `covers_content_digest` (`"required"` / `"forbidden"` / `"either"`) to see whether you must, must not, or may cover `content-digest`. +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, 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` in `get_adcp_capabilities`. Leave `required_for: []` during the pilot; add operations incrementally per counterparty. +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 (verify and log; do not reject on failure) for a pilot counterparty before populating `required_for`. Surface verification failures in monitoring rather than operations 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 verifier (3.0 shadow mode):** steps 1–9, 9a, and 10 of the checklist, in-memory replay cache, one-minute revocation polling with a lightweight `kid`-membership check (full grace semantics deferred). This is acceptable for log-and-observe shadow mode because no request is being rejected on replay or digest failure. **Before adding any operation to `required_for`, implement steps 11–13** — digest recompute (step 11), replay insert after success (step 13), and the full revocation-stale grace window (part of step 9). Flipping to enforce with an incomplete verifier surfaces replay and body-integrity gaps on live production traffic rather than in shadow logs. 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/client` (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. An operator signing both AdCP requests and webhooks needs distinct key material and must publish two entries with the same JWK shape, distinct `x`, distinct `kid`, and distinct `adcp_use`. The value is 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": "webhook-signing", + "key_ops": ["verify"] + } + ] +} +``` + +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.0.13/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 / IPv6 bracketing preserved; userinfo stripped; default port stripped). IPv6 hosts retain their brackets in `@authority` (`[::1]:8443`). 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. + +**Binary value encoding (`Signature`, `Content-Digest`).** RFC 9421 §3.1 and §2.1.3 emit binary values as the RFC 8941 Structured Field `sf-binary` token (`::`), and RFC 8941 §3.3.5 specifies the standard base64 alphabet (RFC 4648 §4) with `+`/`/` and `=` padding. The AdCP profile OVERRIDES this: `Signature` and `Content-Digest` sf-binary values MUST be encoded with **base64url without padding** (RFC 4648 §5), producing tokens whose inner bytes draw from `[A-Za-z0-9_-]` with no trailing `=`. + +Rationale: URL-safe, pad-free, and symmetric with the `nonce` sig-param which is already specified base64url-unpadded. It avoids the two interop hazards of standard base64 in HTTP header values — `/` that some proxies rewrite and `=` that some header parsers treat as a structured-field parameter delimiter. + +Verifier requirements: + +1. Signers MUST emit base64url-no-padding only. A signer that emits a `Signature` or `Content-Digest` value containing `+`, `/`, or `=` is non-conformant. +2. Verifiers MUST accept base64url-no-padding. Verifiers SHOULD ALSO lenient-decode pure standard-base64 tokens (translate `+`→`-` then `/`→`_`, then strip any trailing `=`, then base64url-decode) for interop with counterparties that predate this clarification. This lenience is a compatibility affordance scheduled for removal in **AdCP 3.2** — signers relying on it MUST migrate to base64url-no-padding before then. +3. Verifiers MUST reject any token that mixes alphabets (any character in `[+/=]` AND any character in `[-_]` within the same token value) with `request_signature_header_malformed`. Mixed-alphabet tokens are ambiguous: `A+B-` could decode to different bytes depending on the order of "translate standard-base64 chars" and "base64url-decode" steps, and differing `Content-Digest` bytes across verifiers let an attacker stage a digest mismatch that one verifier accepts and another rejects. +4. The `expected_signature_base` field in the conformance vectors is independent of binary-value encoding — it contains the canonical signature base bytes, not any header-field encoding. Only the emitted `Signature` token itself is encoded. + +**Note on `Content-Digest` from non-AdCP upstreams.** RFC 9530 §2 defines `Content-Digest` and defers sf-binary to RFC 8941 (standard base64), so a conformant 9530 emitter from another ecosystem (a CDN, a non-AdCP framework) may populate `Content-Digest` on an inbound request using the RFC 8941 default. The AdCP override above applies to **signed AdCP requests**; verifiers processing such a request MUST use the override rules. Verifiers handling unsigned traffic or `Content-Digest` from non-AdCP upstreams MAY accept either encoding — this is outside the signing profile's scope. + +**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. + +#### Agent key publication + +Request-signing keys live at the signing agent's own `jwks_uri` in its operator's brand.json `agents[]` entry (or the `adagents.json` equivalent for seller-side agents publishing keys for webhook callbacks). Every agent that signs — of any `type` — uses the same publication pattern. + +**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.0.13/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. Publishers hold the corresponding private key locally with `["sign"]` per JWK spec. | +| `adcp_use` | `"request-signing"` | AdCP-specific purpose discriminator. Distinguishes from `"governance-signing"` (JWS profile), `"webhook-signing"` (seller→buyer webhook callbacks), and any future AdCP signing purpose. Verifiers MUST reject any JWK with absent or different `adcp_use` when verifying a request signature. Sellers that also sign webhooks publish a separate `"webhook-signing"` key under their `adagents.json` entry — see [Webhook callbacks](#webhook-callbacks). | +| `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`: 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-signing and webhook-signing 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, webhook-signing, TMP keys + +Operators SHOULD go further and serve each signing purpose from a distinct subdomain (up to four origins). 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. 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 transport-signing and 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 has, at onboarding or via prior discovery, a mapping from the signing agent's URL to its brand.json `agents[]` entry. +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. + +#### 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. + +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 (e.g., a `buyer_id` or `agent_id` in the payload). The signature → JWKS → agent entry chain is the only authoritative identity path. + +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. If the verifier's `covers_content_digest` capability is `"required"`, reject if `content-digest` is not covered. If the verifier's `covers_content_digest` capability is `"forbidden"` and `content-digest` IS covered, reject with `request_signature_components_unexpected`. +7. Resolve `keyid` to a JWK via [Agent key publication](#agent-key-publication). On `kid` miss, 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` is unchanged by this rule: it was already non-rejecting for unsigned requests and continues to surface signed-but-invalid signatures as monitoring signal during rollout. + + +**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` (or `supported_for`) rather than `required_for`. The verifier verifies signatures when present and logs failures, but never rejects for missing signature. + +*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. + + +Verifiers that genuinely cannot preserve body bytes due to legacy infrastructure MAY advertise `covers_content_digest: "forbidden"`; this is an opt-out for the narrow case where the infrastructure cannot be fixed. `"required"` is recommended for all spend-committing operations. `"either"` is the default — signers choose per-request, and the verifier accepts both covered and uncovered forms. + +**`"required"` is strict.** When a verifier advertises `covers_content_digest: "required"`, a signed request with a body that does not cover `content-digest` is a hard reject with `request_signature_components_incomplete`. Verifiers MUST NOT accept it as a "soft" signed-but-body-unbound request; there is no soft mode. Signers that don't want to cover `content-digest` for a given call MUST route to a verifier whose policy is `"either"` or `"forbidden"`, or not sign the call at all. + +#### 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 15 min). The fetch-failure safe-default applies: 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": "either", + "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`: one of `"required"`, `"forbidden"`, or `"either"` (default). `"required"`: signers MUST cover `content-digest`; unsigned-body signatures are rejected. `"forbidden"`: signers MUST NOT cover `content-digest`; body-bound signatures are rejected. `"either"`: signer chooses; verifier accepts both. +- `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, logs failures in monitoring, but **does NOT reject**. Used as a shadow-mode bridge from `supported_for` to `required_for`. Enables per-counterparty pilots where the seller watches real-traffic failure rates before enforcing. Precedence: `required_for > warn_for > supported_for`. Signers SHOULD sign operations in `warn_for`; verifiers MUST NOT reject unsigned or failed-verify requests to these operations. +- `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; traffic is unaffected. 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, verifiers ship with `required_for: []` and populate it selectively. `warn_for` is the recommended pre-production stop before flipping to enforce. In 4.0 the protocol normatively requires `required_for` to include all spend-committing operations the verifier supports, and `covers_content_digest: "required"` is recommended for those operations. + +#### 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` 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, 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`, or `media_buy.content_standards.supports_webhook_delivery: 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`. `false` is the recommended posture in 3.x. + +The buyer opts into the legacy HMAC-SHA256 scheme by populating `push_notification_config.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` 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 `push_notification_config` registration. + +**Key publication.** Webhook-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. An agent that signs both outgoing requests and outgoing webhooks publishes one JWKS with two distinct JWKs differentiated by `adcp_use`. Each webhook-signing JWK MUST declare: + +| Member | Value | +|---|---| +| `use` | `"sig"` | +| `key_ops` | `["verify"]` | +| `adcp_use` | `"webhook-signing"` | +| `kid` | distinct within the JWKS; MUST NOT collide with any other `kid` regardless of `adcp_use` | +| `alg` | `"EdDSA"` or `"ES256"` | + +Cross-purpose reuse is forbidden and locally enforceable: a request-signing key MUST NOT verify a webhook signature, and a webhook-signing key MUST NOT verify a request signature. Buyers verifying a webhook MUST reject any JWK whose `adcp_use` is not exactly `"webhook-signing"` with `webhook_signature_key_purpose_invalid`. + +**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 across `adcp_use` values within the same JWKS are forbidden specifically so a request-signing-key compromise cannot be repurposed as a webhook-signing capability. + +**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 15 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` 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`, 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 **two parameter substitutions** — the `tag` value (`adcp/webhook-signing/v1` instead of `adcp/request-signing/v1`) and the direction-of-trust resolution (seller's brand.json `agents[]` entry instead of the buyer's). 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 two parameter substitutions, 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` and `Signature` headers per RFC 9421 §4. 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` equals `"webhook-signing"`. Reject on any mismatch, including absent `adcp_use` (`webhook_signature_key_purpose_invalid`). +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.0.13/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.0.13/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` | `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`; 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` 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, four signing systems (governance JWS `adcp_use: "governance-signing"`, request-signing 9421 `adcp_use: "request-signing"`, webhook-signing 9421 `adcp_use: "webhook-signing"`, TMP envelope with its own future `adcp_use` value), each `kid`-scoped. 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](../../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.x | Reference SDKs ship; pilots surface bugs | Conformance test vectors drive cross-SDK interop. Early adopters turn on `required_for` with named counterparties, incrementally. | +| 4.0 | Required for spend-committing operations | `required_for` MUST include `create_media_buy`, `acquire_*`, and any spend-committing operation the verifier supports. Signers MUST sign. `covers_content_digest: "required"` recommended for those operations. | + +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" — everywhere else, zero. +- 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 discovery endpoints (`get_adcp_capabilities`, `list_creative_formats`) MAY use 0-RTT; everything else MUST NOT. + +### mTLS transport + +When [mTLS](/dist/docs/3.0.13/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.0.13/building/concepts/security-model) for the threat model and the five-layer defense narrative this reference implements +- **Webhooks**: See [Webhooks](/dist/docs/3.0.13/building/by-layer/L3/webhooks) for webhook security patterns +- **Error Handling**: See [Error Handling](/dist/docs/3.0.13/building/by-layer/L3/error-handling) for authentication errors +- **Orchestrator Design**: See [Orchestrator Design](/dist/docs/3.0.13/building/operating/orchestrator-design) for multi-tenant security diff --git a/dist/docs/3.0.13/building/implementation/seller-integration.mdx b/dist/docs/3.0.13/building/implementation/seller-integration.mdx new file mode 100644 index 0000000000..8dc746c773 --- /dev/null +++ b/dist/docs/3.0.13/building/implementation/seller-integration.mdx @@ -0,0 +1,327 @@ +--- +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 three parts: + + + +### Make your agent discoverable + +Publish an `adagents.json` file at your domain root. This file declares your properties and the agents authorized to sell your inventory — similar to how `ads.txt` works for supply chain transparency. + +```json +{ + "version": "1.0", + "properties": [ + { + "domain": "publisher.example.com", + "agents": [ + { + "agent_url": "https://ads.publisher.example.com", + "relationship": "direct", + "supported_protocols": ["media_buy", "creative"] + } + ] + } + ] +} +``` + +Buyer agents check `adagents.json` to find authorized sales agents, verify relationships, and discover which protocol domains you support. + + +This shows a simplified structure. The full adagents.json schema uses separate `properties` and `authorized_agents` arrays with a `delegation_type` field. See the [adagents.json tech spec](/dist/docs/3.0.13/governance/property/adagents) for the complete schema. + + +### 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 +{ + "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_ids": [ + { "agent_url": "https://ads.publisher.example.com", "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": [ + { "placement_id": "pre_roll", "name": "Pre-roll (30s)" }, + { "placement_id": "host_read", "name": "Mid-roll host read (60s)" } + ], + "delivery_type": "guaranteed", + "exclusivity": "category", + "format_ids": [ + { "agent_url": "https://ads.publisher.example.com", "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.0.13/media-buy/product-discovery/collections-and-installments) for the full content model and [Media products](/dist/docs/3.0.13/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 [lifecycle states](/dist/docs/3.0.13/media-buy/media-buys#lifecycle-states) 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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/accounts/tasks/sync_accounts) and [`list_accounts`](/dist/docs/3.0.13/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 explicit accounts — set `require_operator_auth: true` in [`get_adcp_capabilities`](/dist/docs/3.0.13/protocol/get_adcp_capabilities) so each operator authenticates independently. +- **Open platforms** (publishers, SSPs) can use implicit accounts — the agent is trusted and declares accounts via `sync_accounts`. + +See [Accounts and Agents](/dist/docs/3.0.13/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 provision test accounts and validate the full integration — product discovery, media buy creation, delivery reporting — before committing real spend. Without sandbox, buyers must test against live inventory, which slows adoption and increases onboarding friction. See [Sandbox mode](/dist/docs/3.0.13/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.0.13/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.0.13/protocol/required-tasks) for the full list of required seller tasks. + +## Product design patterns + +Different inventory types use different AdCP features: + +| Inventory type | Key features | +|---|---| +| Standard display/video | `format_ids`, `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.0.13/media-buy/product-discovery/collections-and-installments). For exclusivity and sponsorship patterns, see [Media products](/dist/docs/3.0.13/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.0.13/governance/property/specification) for the full schema and the [adagents.json tech spec](/dist/docs/3.0.13/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.0.13/governance/content-standards/implementation-guide) for the full sales agent workflow. + +### Execution checks + +When a buyer's account has governance agents configured (via [`sync_governance`](/dist/docs/3.0.13/accounts/tasks/sync_governance)), the seller MUST call [`check_governance`](/dist/docs/3.0.13/governance/campaign/tasks/check_governance) with `media_buy_id` and `planned_delivery` before confirming a media buy. This is a binding validation — the governance agent verifies the seller's planned delivery against the buyer's campaign plan. + +```javascript +// Before confirming create_media_buy +const check = await governanceAgent.checkGovernance({ + plan_id: mediaBuy.plan_id, // from the create_media_buy request + caller: "https://seller.example.com", + governance_context: mediaBuy.governance_context, // opaque — pass through, do not parse + media_buy_id: mediaBuy.media_buy_id, + phase: "purchase", + planned_delivery: { + geo: { countries: ["US"] }, + channels: ["olv"], + start_time: mediaBuy.start_time, + end_time: mediaBuy.end_time, + total_budget: mediaBuy.total_budget.amount, + currency: mediaBuy.total_budget.currency + } +}); + +if (check.status === "denied") { + // Committed checks are always binding — do not confirm the media buy + return { error: "GOVERNANCE_DENIED", detail: check.explanation }; +} + +if (check.status === "conditions" && retries < 3) { + // Conditions restrict what the seller can deliver — e.g., narrower geo, + // blocked channels, reduced frequency. The seller adjusts their own + // delivery parameters (not the buyer's budget) and re-calls check_governance. + // If the seller cannot satisfy the conditions, reject the media buy. + const adjusted = applyConditions(plannedDelivery, check.conditions); + if (!adjusted) { + return { error: "GOVERNANCE_CONDITIONS_UNSATISFIABLE", detail: check.conditions }; + } + // Re-check with adjusted delivery (governance agents SHOULD deny after 3 re-calls) + return await checkGovernanceWithRetry(request, adjusted, retries + 1); +} +if (check.status === "conditions") { + return { error: "GOVERNANCE_CONDITIONS_RETRY_LIMIT", detail: check.conditions }; +} + +// check.status === "approved" — proceed with confirmation +``` + +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.0.13/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 execution checks incrementally — start with purchase-only (one call per `create_media_buy`), then add modification and delivery checks. See [`check_governance`](/dist/docs/3.0.13/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.0.13/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.0.13/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.0.13/building/implementation/storyboard-troubleshooting.mdx b/dist/docs/3.0.13/building/implementation/storyboard-troubleshooting.mdx new file mode 100644 index 0000000000..3eb6ee14da --- /dev/null +++ b/dist/docs/3.0.13/building/implementation/storyboard-troubleshooting.mdx @@ -0,0 +1,94 @@ +--- +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:** Implement `comply_test_controller` and honor the seed scenarios declared in the storyboard's `fixtures:` block. 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. + +See [Compliance test controller — Scenarios](/dist/docs/3.0.13/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. + +## 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/client/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.0.13/building/by-layer/L1/security#signed-requests-transport-layer) for the challenge-header format and the [transport-error binding order](/dist/docs/3.0.13/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.0.13/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.0.13/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` 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` in the test kit so the runner uses Bearer auth, 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. + +## `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.0.13/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.0.13/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 full runner output and the storyboard name. Maintainers can usually narrow the pattern from the error signature. diff --git a/dist/docs/3.0.13/building/implementation/task-lifecycle.mdx b/dist/docs/3.0.13/building/implementation/task-lifecycle.mdx new file mode 100644 index 0000000000..0fb2830925 --- /dev/null +++ b/dist/docs/3.0.13/building/implementation/task-lifecycle.mdx @@ -0,0 +1,269 @@ +--- +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 Transport-specific task management +The status values and lifecycle described here are transport-independent — they apply regardless of how you access AdCP. The *mechanism* for tracking async tasks varies by transport: +- **MCP**: Use [MCP Tasks](https://modelcontextprotocol.io/specification/2025-11-25/basic/utilities/tasks) — the client polls via `tasks/get` and retrieves results via `tasks/result` at the protocol level. See [MCP Guide](/dist/docs/3.0.13/building/by-layer/L0/mcp-guide#async-operations-via-mcp-tasks). +- **A2A**: Use native A2A task lifecycle with SSE streaming. See [A2A Guide](/dist/docs/3.0.13/building/by-layer/L0/a2a-guide). +- **REST**: Use AdCP's `task_id` with polling or [push notifications](/dist/docs/3.0.13/building/by-layer/L3/webhooks). +::: + +## 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.0.13/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" +} +``` + +**Transport-specific handling for `submitted` operations:** +- **MCP**: Use [MCP Tasks](/dist/docs/3.0.13/building/by-layer/L0/mcp-guide#async-operations-via-mcp-tasks) or poll via `tasks/get` +- **A2A**: Subscribe to SSE stream for real-time updates +- **REST**: Use [push notifications](/dist/docs/3.0.13/building/by-layer/L3/webhooks) (recommended) or poll with `task_id` + +## 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). + +:::note Completion payload retrieval in 3.0 +The 3.0 `tasks/get` schema returns task status, timing, history, and (optionally) progress and error details. It does not specify a typed field for the terminal payload of a completed task — for `create_media_buy` and similar operations, the `media_buy_id`, `packages`, and other task-specific fields are delivered to the buyer's webhook URL configured via `push_notification_config` on the original request. Buyers that need the completion payload MUST configure a webhook in 3.0; polling alone reports terminal status. A typed `include_result` request flag and response projection are tracked for 3.1 in [#3123](https://github.com/adcontextprotocol/adcp/issues/3123). +::: + +```javascript +// Polling tracks status; the completion payload arrives via webhook. +async function pollUntilTerminal(taskId, pollInterval = 30_000) { + while (true) { + await sleep(pollInterval); + + const response = await adcp.call('tasks/get', { + task_id: taskId + }); + + if (['completed', 'failed', 'canceled'].includes(response.status)) { + 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 `tasks/list` to recover from lost state: + +```javascript +// Find all pending operations +const pending = await session.call('tasks/list', { + 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.0.13/building/by-layer/L3/async-operations) for handling different operation types +- **Webhooks**: See [Webhooks](/dist/docs/3.0.13/building/by-layer/L3/webhooks) for push notification patterns +- **Error Handling**: See [Error Handling](/dist/docs/3.0.13/building/by-layer/L3/error-handling) for error categories and recovery diff --git a/dist/docs/3.0.13/building/implementation/transport-errors.mdx b/dist/docs/3.0.13/building/implementation/transport-errors.mdx new file mode 100644 index 0000000000..b31e62451d --- /dev/null +++ b/dist/docs/3.0.13/building/implementation/transport-errors.mdx @@ -0,0 +1,696 @@ +--- +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.0.13/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.0.13/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_REQUIRED` | 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.0.13/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.0.13/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/client` | +| **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.0.13/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:** Sellers MUST return `retry_after` values between 1 and 3600 seconds. Clients MUST clamp values outside this range: values below 1 become 1, values above 3600 become 3600. 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.0.13/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_REQUIRED: 'correctable', + POLICY_VIOLATION: 'correctable', + PRODUCT_NOT_FOUND: 'correctable', + PRODUCT_UNAVAILABLE: 'correctable', + PROPOSAL_EXPIRED: 'correctable', + REQUOTE_REQUIRED: 'correctable', + BUDGET_TOO_LOW: 'correctable', + CREATIVE_REJECTED: 'correctable', + UNSUPPORTED_FEATURE: 'correctable', + AUDIENCE_TOO_SMALL: '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', +}; + +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, 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` + +```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 | + +### `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.0.13/error-details/rate-limited.json`](https://adcontextprotocol.org/schemas/3.0.13/error-details/rate-limited.json) +- [`/schemas/3.0.13/error-details/budget-too-low.json`](https://adcontextprotocol.org/schemas/3.0.13/error-details/budget-too-low.json) +- [`/schemas/3.0.13/error-details/audience-too-small.json`](https://adcontextprotocol.org/schemas/3.0.13/error-details/audience-too-small.json) +- [`/schemas/3.0.13/error-details/account-setup-required.json`](https://adcontextprotocol.org/schemas/3.0.13/error-details/account-setup-required.json) +- [`/schemas/3.0.13/error-details/creative-rejected.json`](https://adcontextprotocol.org/schemas/3.0.13/error-details/creative-rejected.json) +- [`/schemas/3.0.13/error-details/policy-violation.json`](https://adcontextprotocol.org/schemas/3.0.13/error-details/policy-violation.json) +- [`/schemas/3.0.13/error-details/conflict.json`](https://adcontextprotocol.org/schemas/3.0.13/error-details/conflict.json) + +These schemas are recommended, not required. Sellers that omit `details` entirely are conformant. Agents MUST NOT require specific `details` keys — fall back to `code`, `message`, and `recovery` when `details` is absent or has unexpected shape. + +## Seller-Specific Error Codes + +Sellers MAY use error codes not in the [standard vocabulary](https://adcontextprotocol.org/schemas/3.0.13/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.0.13/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/client`) 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.0.13/building/by-layer/L3/error-handling) — error schema, standard codes, recovery strategies +- [MCP Guide](/dist/docs/3.0.13/building/by-layer/L0/mcp-guide) — MCP transport integration +- [A2A Guide](/dist/docs/3.0.13/building/by-layer/L0/a2a-guide) — A2A transport integration +- [A2A Response Format](/dist/docs/3.0.13/building/by-layer/L0/a2a-response-format) — canonical A2A response structure diff --git a/dist/docs/3.0.13/building/implementation/webhook-verifier-tuning.mdx b/dist/docs/3.0.13/building/implementation/webhook-verifier-tuning.mdx new file mode 100644 index 0000000000..752132bfa2 --- /dev/null +++ b/dist/docs/3.0.13/building/implementation/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.0.13/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.0.13/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.0.13/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.0.13/building/implementation/webhooks.mdx b/dist/docs/3.0.13/building/implementation/webhooks.mdx new file mode 100644 index 0000000000..04b40d1eb4 --- /dev/null +++ b/dist/docs/3.0.13/building/implementation/webhooks.mdx @@ -0,0 +1,495 @@ +--- +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 +2. A webhook URL is built by substituting that ID (and other routing params) into a URL template +3. `push_notification_config` is injected into the task request body with just the URL — no secret required +4. The seller POSTs webhook notifications to your URL as the task status changes, signing each POST with its `adcp_use: "webhook-signing"` key published in its own brand.json `agents[]` entry +5. You verify the signature against the seller's published JWKS and dedupe by `idempotency_key` +6. Each notification echoes `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/cd51e063-2b79-4a6d-afac-ed7789c3a443" + // 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/cd51e063-2b79-4a6d-afac-ed7789c3a443 + 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": "cd51e063-2b79-4a6d-afac-ed7789c3a443", ← echoed from your URL + "status": "completed", + "result": { ... } + } +``` + +If you're using the `@adcp/client` 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 webhook-signing JWK at your brand.json `agents[]` entry (with `adcp_use: "webhook-signing"`) and the client signs outgoing webhooks for you. + +:::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.0.13/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: ... } }` | +| **A2A configuration object** | `pushNotificationConfig` | `configuration: { pushNotificationConfig: { url: ... } }` | + +The AdCP field name is always **`push_notification_config`** (snake_case). It goes in the task request body alongside your other task parameters. + +For A2A, the A2A protocol wraps it in a `configuration` envelope using camelCase — but the object's contents are identical. + +## 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/op_abc123" + } +} +``` + +`authentication` is omitted in the default case — the seller signs with its own `adcp_use: "webhook-signing"` key. Include `authentication.credentials` only if you need the legacy HMAC-SHA256 fallback. + +### A2A + +For A2A, skill parameters stay in `message.parts[].data.parameters`. The push notification config goes in the top-level `configuration` object: + +```json +{ + "message": { + "parts": [{ + "kind": "data", + "data": { + "skill": "create_media_buy", + "parameters": { + "packages": [...] + } + } + }] + }, + "configuration": { + "pushNotificationConfig": { + "url": "https://you.com/webhooks/adcp/create_media_buy/op_abc123" + } + } +} +``` + +## Operation IDs and URL templates + +Operation IDs let you route incoming webhooks to the right handler. The typical pattern: + +1. Generate a unique ID per task call +2. Embed it in the webhook URL path +3. The seller echoes `operation_id` in the payload — no URL parsing needed + +**URL template pattern:** +``` +https://you.com/webhooks/{task_type}/{agent_id}/{operation_id} +``` + +**Example (client library handles this automatically):** +```typescript +import { randomUUID } from 'crypto'; + +const operationId = randomUUID(); // e.g. "cd51e063-2b79-4a6d-afac-ed7789c3a443" +const webhookUrl = `https://you.com/adcp/webhook/create_media_buy/${agentId}/${operationId}`; + +// pass webhookUrl in push_notification_config.url +``` + +The seller's webhook payload will include `"operation_id": "cd51e063-2b79-4a6d-afac-ed7789c3a443"`, so your handler can route to the right pending operation without parsing 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.0.13/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 `completed` or `failed`), no webhook is sent — you already have the result. + +**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. + +### 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 +{ + "id": "task_456", + "contextId": "ctx_123", + "status": { + "state": "completed", + "timestamp": "2025-01-22T10:30:00Z" + }, + "artifacts": [{ + "artifactId": "result", + "parts": [ + { "kind": "text", "text": "Media buy created successfully" }, + { + "kind": "data", + "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.pushNotificationConfig` (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 | + +### 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.0.13/building/by-layer/L1/security#webhook-callbacks). The seller signs with its `adcp_use: "webhook-signing"` key published in its own brand.json `agents[]` entry; 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=:: +``` + +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. + +**Verification** follows the 14-step [request verifier checklist](/dist/docs/3.0.13/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.0.13/building/by-layer/L1/security#webhook-error-taxonomy)). +- `tag` MUST be `adcp/webhook-signing/v1`. +- Resolve `keyid` via the seller's `adagents.json` `agents[]` entry (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's adagents.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.0.13/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.0.13/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.0.13/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.0.13/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. + +## 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 routing, not URL parsing +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.0.13/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.0.13/media-buy/task-reference) for details on `reporting_webhook`. + +## Next steps + +- [Task Lifecycle](/dist/docs/3.0.13/building/by-layer/L3/task-lifecycle) — status values and transitions +- [Async Operations](/dist/docs/3.0.13/building/by-layer/L3/async-operations) — handling long-running tasks +- [Error Handling](/dist/docs/3.0.13/building/by-layer/L3/error-handling) — webhook error patterns diff --git a/dist/docs/3.0.13/building/index.mdx b/dist/docs/3.0.13/building/index.mdx new file mode 100644 index 0000000000..1c650736a0 --- /dev/null +++ b/dist/docs/3.0.13/building/index.mdx @@ -0,0 +1,73 @@ +--- +title: Building with AdCP +sidebarTitle: Overview +description: "Build with AdCP: integration guides for MCP and A2A protocols, authentication, async operations, error handling, and orchestrator design patterns." +"og:title": "AdCP — Building with AdCP" +--- + +{/* Remove after 2026-04-25 */} + +**`adcp comply` is now `npx @adcp/client@latest storyboard run`.** Running without a storyboard ID discovers your agent's tools and runs all matching storyboards — same behavior, one less concept. See [Validate Your Agent](/dist/docs/3.0.13/building/verification/validate-your-agent) for the updated CLI reference. + + +This section provides everything you need to understand, integrate, and build robust systems with AdCP. + +## Learning Path + + + + Why AdCP exists, the problems it solves, and protocol comparison. Start here if you're new. + + + Technical building blocks: MCP or A2A protocols, capability discovery, authentication, and data models. + + + Build production-ready systems with async operations, webhooks, error handling, and orchestrator patterns. + + + +## Quick Start + +**Want a coding agent to build it for you?** + +- [Build an Agent](/dist/docs/3.0.13/building/by-layer/L4/build-an-agent) - Point a coding agent at a skill file, get a storyboard-compliant agent in minutes + +**Already know which protocol you're using?** + +- [MCP Integration Guide](/dist/docs/3.0.13/building/by-layer/L0/mcp-guide) - For Claude, AI assistants, and MCP-compatible tools +- [A2A Integration Guide](/dist/docs/3.0.13/building/by-layer/L0/a2a-guide) - For Google AI agents and A2A-compatible workflows + +**Need to choose a protocol?** + +See [Protocol Comparison](/dist/docs/3.0.13/building/concepts/protocol-comparison) for a detailed comparison. + +## Section Overview + +### Understanding AdCP + +Conceptual foundation for everyone working with AdCP: + +- **[Why AdCP](/dist/docs/3.0.13/building/concepts)** - The strategic vision: unifying buying paradigms and enabling AI surfaces +- **[Protocol Comparison](/dist/docs/3.0.13/building/concepts/protocol-comparison)** - MCP vs A2A at a glance + +### Foundations + +Technical building blocks for any AdCP implementation: + +- **[MCP Guide](/dist/docs/3.0.13/building/by-layer/L0/mcp-guide)** - Tool calls, context, and examples +- **[A2A Guide](/dist/docs/3.0.13/building/by-layer/L0/a2a-guide)** - Tasks, streaming, and artifacts +- **[Capability Discovery](/dist/docs/3.0.13/protocol/get_adcp_capabilities)** - Discover what an agent supports +- **[Authentication](/dist/docs/3.0.13/building/by-layer/L2/authentication)** - Credentials and permissions +- **[Context & Sessions](/dist/docs/3.0.13/building/by-layer/L2/context-sessions)** - Managing state across requests +- **[Schemas and SDKs](/dist/docs/3.0.13/building/by-layer/L0/schemas)** - Access schemas and official client libraries + +### Implementation Patterns + +For building robust, production-ready systems: + +- **[Task Lifecycle](/dist/docs/3.0.13/building/by-layer/L3/task-lifecycle)** - Status values, transitions, and polling +- **[Async Operations](/dist/docs/3.0.13/building/by-layer/L3/async-operations)** - Handling sync, async, and interactive tasks +- **[Webhooks](/dist/docs/3.0.13/building/by-layer/L3/webhooks)** - Push notifications and reliability patterns +- **[Error Handling](/dist/docs/3.0.13/building/by-layer/L3/error-handling)** - Error categories, codes, and recovery +- **[Security](/dist/docs/3.0.13/building/by-layer/L1/security)** - Security considerations and best practices +- **[Orchestrator Design](/dist/docs/3.0.13/building/operating/orchestrator-design)** - State machines and system architecture diff --git a/dist/docs/3.0.13/building/integration/a2a-guide.mdx b/dist/docs/3.0.13/building/integration/a2a-guide.mdx new file mode 100644 index 0000000000..b4ae557d01 --- /dev/null +++ b/dist/docs/3.0.13/building/integration/a2a-guide.mdx @@ -0,0 +1,1019 @@ +--- +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.0.13/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/client`) 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.0.13/building/by-layer/L0/a2a-response-extraction)) accept both shapes during the compatibility period. + +## A2A Client Setup + +### 1. Initialize A2A Client + +```javascript +const a2a = new A2AClient({ + endpoint: 'https://adcp.example.com/a2a', + apiKey: process.env.ADCP_API_KEY, + agent: { + name: "AdCP Media Buyer", + version: "1.0.0" + } +}); +``` + +### 2. Verify Agent Card + +```javascript +// Check available skills +const agentCard = await a2a.getAgentCard(); +console.log(agentCard.skills.map(s => s.name)); +// ["get_products", "create_media_buy", "sync_creatives", ...] +``` + +### 3. Send Your First Task + +```javascript +const response = await a2a.send({ + message: { + role: "ROLE_USER", + parts: [{ + text: "Find video products for 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) + +### Multi-Part Messages + +A2A's key advantage is multi-part messages combining text, data, and files: + +```javascript +// Text + structured data + file +const response = await a2a.send({ + message: { + role: "ROLE_USER", + parts: [ + { + text: "Create campaign with these assets" + }, + { + data: { + skill: "create_media_buy", + parameters: { + packages: ["pkg_001"], + total_budget: 100000 + } + } + }, + { + url: "https://cdn.example.com/hero-video.mp4", + filename: "hero_video_30s.mp4", + mediaType: "video/mp4" + } + ] + } +}); +``` + +### Skill Invocation Methods + +#### Natural Language (Flexible) +```javascript +// Agent interprets intent +const task = await a2a.send({ + message: { + role: "ROLE_USER", + parts: [{ + text: "Find premium CTV inventory under $50 CPM" + }] + } +}); +``` + +#### Explicit Skill (Deterministic) +```javascript +// Explicit skill with exact parameters +const task = await a2a.send({ + message: { + role: "ROLE_USER", + parts: [{ + data: { + skill: "get_products", + parameters: { + max_cpm: 50, + channels: ["ctv"], + tier: "premium" + } + } + }] + } +}); +``` + +#### Hybrid Approach (Recommended) +```javascript +// Context + explicit execution for best results +const task = await a2a.send({ + message: { + role: "ROLE_USER", + parts: [ + { + text: "Looking for inventory for spring campaign targeting millennials" + }, + { + data: { + skill: "get_products", + parameters: { + audience: "millennials", + season: "Q2_2024", + max_cpm: 45 + } + } + } + ] + } +}); +``` + +**Status Handling**: See [Task Lifecycle](/dist/docs/3.0.13/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. + +### Canonical 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. + +```json +{ + "status": "completed", // AdCP unified status (see Core Concepts) + "taskId": "task-123", // A2A task identifier + "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": { + "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.0.13/building/by-layer/L0/a2a-response-format).** + +### A2A-Specific Fields +- **taskId**: A2A task identifier for streaming updates +- **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.0.13/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?.find(isData)?.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.0.13/building/by-layer/L0/a2a-response-format).** + +## Push Notifications (A2A-Specific) + +A2A defines push notifications natively via `PushNotificationConfig`. When you configure a webhook URL, the server will POST task updates directly to your endpoint instead of requiring you to poll. + +### Best Practice: URL-Based Routing + +**Recommended:** Encode routing information (`task_type`, `operation_id`) in the webhook URL, not the payload. + +**Why this approach?** +- ✅ **Industry standard pattern** - Widely adopted for webhook routing across major APIs +- ✅ **Separation of concerns** - URLs handle routing, payloads contain data +- ✅ **Protocol-agnostic** - Same pattern works for MCP, A2A, REST, future protocols +- ✅ **Cleaner handlers** - Route with URL framework, not payload parsing + +**URL Pattern Options:** + +```javascript +// Option 1: Path parameters (recommended) +url: `https://buyer.com/webhooks/a2a/${taskType}/${operationId}` +// Example: /webhooks/a2a/create_media_buy/op_nike_q1_2025 + +// Option 2: Query parameters +url: `https://buyer.com/webhooks/a2a?task=${taskType}&op=${operationId}` + +// Option 3: Subdomain routing +url: `https://${taskType}.webhooks.buyer.com/${operationId}` +``` + +**Example Configuration:** + +```javascript +const operationId = "op_nike_q1_2025"; +const taskType = "create_media_buy"; + +await a2a.send({ + message: { + role: "ROLE_USER", + parts: [{ + data: { + skill: "create_media_buy", + parameters: { /* task params */ } + } + }] + }, + pushNotificationConfig: { + url: `https://buyer.com/webhooks/a2a/${taskType}/${operationId}`, + token: "client-validation-token", // Optional: for client-side validation + authentication: { + schemes: ["bearer"], + credentials: "shared_secret_32_chars" + } + } +}); +``` + +For webhook payload formats, protocol comparison, and detailed handling examples, see [Webhooks](/dist/docs/3.0.13/building/by-layer/L3/webhooks). + +## SSE Streaming (A2A-Specific) + +A2A's key advantage is real-time updates via Server-Sent Events: + +### Task Monitoring + +```javascript +class A2aTaskMonitor { + constructor(taskId) { + this.taskId = taskId; + this.events = new EventSource(`/a2a/tasks/${taskId}/events`); + + this.events.addEventListener('status', (e) => { + const update = JSON.parse(e.data); + this.handleStatusUpdate(update); + }); + + this.events.addEventListener('progress', (e) => { + const data = JSON.parse(e.data); + console.log(`${data.percentage}% - ${data.message}`); + }); + } + + handleStatusUpdate(update) { + switch (update.status) { + case 'input-required': + // Handle clarification/approval needed + this.emit('input-required', update); + break; + case 'completed': + this.events.close(); + this.emit('completed', update); + break; + case 'failed': + this.events.close(); + this.emit('failed', update); + break; + } + } +} +``` + +### Real-Time Updates Example + +```javascript +// Start long-running operation +const response = await a2a.send({ + message: { + role: "ROLE_USER", + parts: [{ + data: { + skill: "create_media_buy", + parameters: { packages: ["pkg_001"], total_budget: 100000 } + } + }] + } +}); + +// Monitor in real-time via SSE +if (response.status === 'working' || response.status === 'submitted') { + const monitor = new A2aTaskMonitor(response.taskId); + + monitor.on('progress', (data) => { + updateUI(`${data.percentage}%: ${data.message}`); + }); + + monitor.on('completed', (final) => { + // Extract last DataPart from the artifact — don't assume a positional index. + const parts = final.artifacts[0].parts; + const dataParts = parts.filter(p => p.data != null || p.kind === 'data'); + const payload = dataParts[dataParts.length - 1]?.data; + console.log('Created:', payload?.media_buy_id); + }); +} +``` + +### 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": [{ + "name": "task_result", + "parts": [ + { + "text": "Media buy created successfully" + }, + { + "data": { + "media_buy_id": "mb_12345", + "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 `tasks/get` 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": { + "role": "ROLE_AGENT", + "parts": [ + { "text": "Campaign budget $150K requires VP approval" }, + { + "data": { + "reason": "BUDGET_EXCEEDS_LIMIT" + } + } + ] + }, + "timestamp": "2026-01-22T10:15:00.000Z" + } + } +} +``` + +**All status payloads use AdCP schemas**: Both final statuses (completed/failed) and interim statuses (working, input-required, submitted) have corresponding AdCP schemas referenced in [`async-response-data.json`](https://adcontextprotocol.org/schemas/3.0.13/core/async-response-data.json). Note that interim status schemas are evolving and may change in future versions, so implementors may choose to handle them more loosely. + +### 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` | Status transitions during execution (`working`, `input-required`, `auth-required`, `submitted`) | Lightweight status change 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 (e.g., `tasks/get`) 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. **`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 +- `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) | +| `submitted` | `[task]-async-response-submitted.json` | Acknowledgment (usually minimal) | + +Schema reference: [`async-response-data.json`](https://adcontextprotocol.org/schemas/3.0.13/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?.find(isDataPart) + ?? 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) + +**Key Advantage**: A2A handles context automatically - no manual context_id management needed. + +### Automatic Context + +```javascript +// First request - A2A creates context automatically +const response1 = await a2a.send({ + message: { + role: "ROLE_USER", + parts: [{ text: "Find premium video products" }] + } +}); + +// Follow-up - A2A remembers context automatically +const response2 = await a2a.send({ + message: { + role: "ROLE_USER", + parts: [{ text: "Filter for sports content" }] + } +}); +// System automatically connects this to previous request +``` + +### Explicit Context (Optional) + +```javascript +// When you need explicit control +const response2 = await a2a.send({ + contextId: response1.contextId, // Optional - A2A tracks this anyway + message: { + role: "ROLE_USER", + parts: [{ text: "Refine those results" }] + } +}); +``` + +**vs. MCP**: Unlike MCP's manual context_id management, A2A handles session continuity at the protocol level. + +## Multi-Modal Messages (A2A-Specific) + +A2A's unique capability - combine text, data, and files in one message: + +### Creative Upload with Context + +```javascript +// Upload creative with campaign context in single message +const response = await a2a.send({ + message: { + role: "ROLE_USER", + parts: [ + { + text: "Add this hero video to the premium sports campaign" + }, + { + data: { + skill: "sync_creatives", + parameters: { + media_buy_id: "mb_12345", + action: "upload_and_assign" + } + } + }, + { + url: "https://cdn.example.com/hero-30s.mp4", + filename: "sports_hero_30s.mp4", + mediaType: "video/mp4" + } + ] + } +}); +``` + +### Campaign Brief + Assets + +```javascript +// Submit comprehensive campaign brief +await a2a.send({ + message: { + role: "ROLE_USER", + parts: [ + { + text: "Campaign brief and assets for Q1 launch" + }, + { + url: "https://docs.google.com/campaign-brief.pdf", + filename: "Q1_campaign_brief.pdf", + mediaType: "application/pdf" + }, + { + data: { + budget: 250000, + kpis: ["reach", "awareness", "conversions"], + target_launch: "2026-01-15" + } + } + ] + } +}); +``` + +## 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.0.13/building/by-layer/L3/webhooks). + +### Skill Structure +```javascript +// Standard pattern for explicit skill invocation +await a2a.send({ + message: { + role: "ROLE_USER", + parts: [{ + data: { + skill: "skill_name", // Exact name from Agent Card + parameters: { // Task-specific parameters + // See task documentation for parameters + } + } + }] + } +}); +``` + +### Available Skills +- **Protocol**: `get_adcp_capabilities` (start here to discover agent capabilities) +- **Media Buy**: `get_products`, `list_creative_formats`, `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.0.13/media-buy) and [Signals](/dist/docs/3.0.13/signals/overview) documentation for complete parameter specifications. + +## Agent Cards + +A2A agents advertise capabilities via Agent Cards at `.well-known/agent.json`. + +### Discovering Agent Cards +```javascript +// Get agent capabilities +const agentCard = await a2a.getAgentCard(); + +// List available skills +const skillNames = agentCard.skills.map(skill => skill.name); +console.log('Available skills:', skillNames); + +// Get skill details +const getProductsSkill = agentCard.skills.find(s => s.name === '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", + "supportedInterfaces": [ + { + "url": "https://sales.example.com/a2a/jsonrpc", + "protocolBinding": "JSONRPC", + "protocolVersion": "1.0" + } + ], + "defaultInputModes": ["text/plain", "application/json"], + "defaultOutputModes": ["application/json"], + "capabilities": { + "streaming": true, + "pushNotifications": true, + "extendedAgentCard": false + }, + "skills": [ + { + "name": "get_products", + "description": "Discover available advertising products", + "examples": [ + "Find premium CTV inventory for sports fans", + "Show me video products under $50 CPM" + ] + } + ], + "extensions": [ + { + "uri": "https://adcontextprotocol.org/extensions/adcp", + "description": "AdCP media buying protocol support", + "required": false, + "params": { + "adcp_version": "2.6.0", + "protocols_supported": ["media_buy"], + "extensions_supported": ["sustainability"] + } + } + ] +} +``` + +### 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 + + +**Recommended**: Use [`get_adcp_capabilities`](/dist/docs/3.0.13/protocol/get_adcp_capabilities) for runtime capability discovery. The agent card extension provides static metadata for agent registries and discovery services. + + +Include the AdCP extension in your agent card's `extensions` array to declare AdCP support programmatically. + +The A2A protocol uses an `extensions` array where each extension has: +- **`uri`**: Extension identifier (use `https://adcontextprotocol.org/extensions/adcp`) +- **`description`**: Human-readable description of how you use AdCP +- **`required`**: Whether clients must support this extension (typically `false` for AdCP) +- **`params`**: AdCP-specific configuration (see schema below) + +```javascript +// Check if agent supports AdCP +const agentCard = await fetch('https://sales.example.com/.well-known/agent.json') + .then(r => r.json()); + +// Find the AdCP extension in the extensions array +const adcpExt = agentCard.extensions?.find( + ext => ext.uri === 'https://adcontextprotocol.org/extensions/adcp' +); + +if (adcpExt) { + console.log('AdCP Version:', adcpExt.params.adcp_version); + console.log('Supported domains:', adcpExt.params.protocols_supported); + // ["media_buy", "creative", "signals"] + console.log('Typed extensions:', adcpExt.params.extensions_supported); + // ["sustainability"] +} +``` + +**Extension Params**: The `adcp-extension.json` schema was used in v2 to describe these params, but was removed in v3. For v3+ agents, use the `get_adcp_capabilities` task for runtime capability discovery instead. The extension `params` object above shows the typical structure. + +:::note +The `adcp_version` field in agent card metadata is a v2 convention and is not part of the v3 spec. For version negotiation, use [`get_adcp_capabilities`](/dist/docs/3.0.13/protocol/get_adcp_capabilities#version-negotiation) with the `adcp_major_version` field. +::: + +**Benefits**: +- Clients can discover AdCP capabilities without making test calls +- Declare which protocol domains you implement (media_buy, creative, signals) +- Enable compatibility checks based on version + +## Integration Example + +```javascript +// Initialize A2A client +const a2a = new A2AClient({ /* config */ }); + +// Use unified status handling (see Core Concepts) +async function handleA2aResponse(response) { + switch (response.status) { + case 'input-required': + // Handle clarification (see Core Concepts for patterns) + const input = await promptUser(response.message); + return a2a.send({ + contextId: response.contextId, + message: { + role: "ROLE_USER", + parts: [{ text: input }] + } + }); + + 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: { + role: "ROLE_USER", + parts: [ + { text: "Find luxury car inventory" }, + { data: { skill: "get_products", parameters: { audience: "luxury car intenders" } } } + ] + } +}); + +const finalResult = await handleA2aResponse(result); +``` + +## 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.0.13/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.0.13/creative/task-reference/sync_creatives) for complete testable examples. + +The `@adcp/client` 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.0.13/building/by-layer/L3/task-lifecycle) for status handling and workflows +- **Task Reference**: See [Media Buy Tasks](/dist/docs/3.0.13/media-buy) and [Signals](/dist/docs/3.0.13/signals/overview) +- **Protocol Comparison**: Compare with [MCP integration](/dist/docs/3.0.13/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.0.13/building/by-layer/L3/task-lifecycle) - this guide focuses on A2A transport specifics only.** \ No newline at end of file diff --git a/dist/docs/3.0.13/building/integration/a2a-response-format.mdx b/dist/docs/3.0.13/building/integration/a2a-response-format.mdx new file mode 100644 index 0000000000..e6211d892f --- /dev/null +++ b/dist/docs/3.0.13/building/integration/a2a-response-format.mdx @@ -0,0 +1,822 @@ +--- +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.0.13/building/by-layer/L0/a2a-guide#a2a-protocol-versions) for a side-by-side with v0.3. + +AdCP's top-level unified `status` field (returned by `@adcp/client`) continues to use the lowercase shorthand (`"completed"`, `"failed"`, `"working"`, `"input-required"`, `"submitted"`). That is an AdCP abstraction over `status.state` — not an A2A wire value. + +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 pattern:** + +```json +{ + "status": "completed", + "taskId": "task_123", + "contextId": "ctx_456", + "artifacts": [{ + "name": "task_result", + "parts": [ + { + "text": "Found 12 video products perfect for pet food campaigns" + }, + { + "data": { + "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) + +**Multiple artifacts:** Only for fundamentally distinct deliverables (e.g., creative asset + separate trafficking report). Rare in AdCP - prefer single artifact with multiple parts. + +### Interim Responses (working, 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": { + "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 (e.g. `tasks/get`) deliver the bare object. Clients unwrap before reading `status.state` — see [A2A Response Extraction](/dist/docs/3.0.13/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 final status is reached** (`completed`, `failed`, `canceled`, or `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": { + "products": [...] // ← Direct schema-compliant response + } +} +``` + +**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? }` | +| `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 status to determine the correct data extraction location. The `status` referenced here is AdCP's unified lowercase value (e.g. `"completed"`); the raw A2A wire value at `status.state` is `TASK_STATE_COMPLETED` in 1.0 or `completed` in v0.3. Normalize before comparing — see [A2A Response Extraction](/dist/docs/3.0.13/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; // AdCP unified status + + // 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({ + task: taskName, + params: 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? + +During streaming operations, intermediate responses may include old progress data: + +```json +// Working status with progress +{ + "status": "working", + "artifacts": [{ + "parts": [ + {"text": "Searching inventory..."}, + {"data": {"progress": 25}} + ] + }] +} + +// Completed - last data part is authoritative +{ + "status": "completed", + "artifacts": [{ + "parts": [ + {"text": "Found 12 products"}, + {"data": {"progress": 25}}, // Old + {"data": {"products": [...], "total": 12}} // ← Authoritative + ] + }] +} +``` + +**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: { + 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 = { + taskId: 'task_123', + contextId: 'ctx_456', + status: { + state: 'TASK_STATE_COMPLETED', + timestamp: '2026-01-22T10:30:00.000Z' + }, + artifacts: [{ + parts: [ + { text: 'Found 3 products' }, + { data: { 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 = { + taskId: 'task_123', + status: { state: 'TASK_STATE_COMPLETED' }, + artifacts: [{ + 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 + +### Task-Level Errors (Partial Failures) + +Task executed but couldn't complete fully. Use `errors` array in DataPart with `status: "completed"`: + +```json +{ + "status": "completed", + "taskId": "task_123", + "artifacts": [{ + "parts": [ + { + "text": "Signal discovery completed with partial results" + }, + { + "data": { + "signals": [...], + "errors": [{ + "code": "NO_DATA_IN_REGION", + "message": "No signal data available for Australia", + "field": "countries[1]", + "details": { + "requested_country": "AU", + "available_countries": ["US", "CA", "GB"] + } + }] + } + } + ] + }] +} +``` + +**When to use errors array:** +- Platform authorization issues (`PLATFORM_UNAUTHORIZED`) +- Partial data availability +- Validation issues in subset of data + +### Protocol-Level Errors (Fatal) + +Task couldn't execute. Use `status: "failed"` with message: + +```json +{ + "taskId": "task_456", + "status": "failed", + "message": { + "role": "ROLE_AGENT", + "parts": [{ + "text": "Authentication failed: Invalid or expired API token" + }] + } +} +``` + +**When to use status: failed:** +- Authentication failures (invalid credentials, expired tokens) +- Invalid request parameters (malformed JSON, missing required fields) +- Resource not found (unknown taskId, expired context) +- System errors (database unavailable, internal service failure) + +### Where the Error Lives: Decision Rule + +Placement is chosen by what the server has and which state it's in: + +| Situation | State | Location | Payload | +|---|---|---|---| +| Task executed, subset failed | `completed` | `artifacts[0].parts[]` DataPart | `{ , errors: [...] }` | +| Task failed with structured error | `failed` | `artifacts[0].parts[]` DataPart | `{ adcp_error: {...} }` | +| Task rejected by policy/validation (1.0) | `rejected` | `artifacts[0].parts[]` DataPart | `{ adcp_error: {...} }` | +| System-initiated cancel (timeout, upstream failure) | `canceled` | `artifacts[0].parts[]` DataPart | `{ adcp_error: {...} }` | +| User-initiated cancel (`tasks/cancel`) | `canceled` | `status.message.parts[]` TextPart | Human-readable text only | +| Protocol/transport failure, no artifact produced | `failed` | `status.message.parts[]` TextPart | Human-readable text only | + +**Rule of thumb:** if the server has structured error data, put it in artifacts as a DataPart. `status.message` is the free-text fallback for cases where no task artifact was ever produced (JSON-RPC parse errors, auth handshake failures, malformed requests, or a user-initiated cancel with no further detail). A2A 1.0 §3.7 reinforces this: *"Messages SHOULD NOT be used to deliver task outputs. Results SHOULD be returned using Artifacts."* + +**`rejected` vs `failed`.** Use `rejected` when the server refuses to attempt the task (policy/tier/validation check, before any work is started). Use `failed` when work started and encountered a fatal error. Both carry `adcp_error` in the artifact — the state distinguishes *when* the failure occurred, which drives different retry and UX behavior on the caller side. + +**Cancel origin is client-reconciled, not seller-attributed.** `status.state: "canceled"` (or `TASK_STATE_CANCELED`) does not tell the caller whether the cancel was user-initiated or system-initiated — a seller could place `adcp_error` in artifacts for what was actually a user-initiated cancel to mislead the buyer's bookkeeping or retry logic. Clients MUST reconcile cancel origin locally: if the caller has an outstanding `tasks/cancel` request for this `taskId`, treat the cancel as user-initiated regardless of payload and ignore any `adcp_error` the seller attached. Clients MUST NOT retry a user-initiated cancel on the basis of a seller-sent `adcp_error.recovery` hint. + +## Status Mapping + +AdCP uses A2A's TaskState enum directly: + +| A2A Status | Payload Type | Data Location | AdCP Usage | +|------------|--------------|---------------|------------| +| `completed` | `Task` | `.artifacts` | Task finished successfully, data in DataPart, optional errors array | +| `failed` | `Task` | `.artifacts` (or `status.message` for text-only) | Fatal error preventing completion, `adcp_error` when structured | +| `rejected` (1.0) | `Task` | `.artifacts` | Policy/validation rejection, `adcp_error` with rejection reason | +| `canceled` | `Task` | `.artifacts` (typically none) | Task canceled by user or system | +| `input-required` | `TaskStatusUpdateEvent` | `status.message.parts` | Need user input/approval, data + text explaining what's needed | +| `auth-required` (1.0) | `TaskStatusUpdateEvent` | `status.message.parts` | Authentication challenge during task execution (scheme, URL, scopes) | +| `working` | `TaskStatusUpdateEvent` | `status.message.parts` | Processing (< 120s), optional progress data | +| `submitted` | `TaskStatusUpdateEvent` | `status.message.parts` | Long-running (hours/days), minimal data, use webhooks/polling | + +## Webhook Payloads + +Async operations (`status: "submitted"`) deliver the same artifact structure in webhooks: + +```json +POST /webhook-endpoint +{ + "taskId": "task_123", + "status": "completed", + "timestamp": "2026-01-22T10:30:00.000Z", + "artifacts": [{ + "parts": [ + {"text": "Media buy approved and live"}, + {"data": { + "media_buy_id": "mb_456", + "packages": [...], + "creative_deadline": "2026-01-30T23:59:59.000Z" + }} + ] + }] +} +``` + +Extract AdCP data using the same last-DataPart pattern. **For webhook authentication, retry patterns, and security**, see [Webhooks](/dist/docs/3.0.13/building/by-layer/L3/webhooks). + +## File Parts in Responses + +Creative operations MAY include file references: + +```json +{ + "status": "completed", + "artifacts": [{ + "parts": [ + {"text": "Creative uploaded and preview generated"}, + {"data": { + "creative_id": "cr_789", + "format_id": { + "agent_url": "https://creatives.adcontextprotocol.org", + "id": "video_standard_30s" + }, + "status": "ready" + }}, + {"url": "https://cdn.example.com/cr_789/preview.mp4", "filename": "preview.mp4", "mediaType": "video/mp4"} + ] + }] +} +``` + +**File part usage:** Preview URLs, generated assets, trafficking reports. **Not for** raw AdCP response data (always use DataPart). + +## Retry and Idempotency + +### TaskId-Based Deduplication + +A2A's `taskId` enables retry detection. Agents SHOULD: +- Return cached response if `taskId` matches a completed operation (within TTL window) +- Reject duplicate `taskId` submission if operation is still in progress + +```json +// Duplicate taskId during active operation +{ + "taskId": "task_123", + "status": "failed", + "message": { + "role": "ROLE_AGENT", + "parts": [{ + "text": "Task 'task_123' is already in progress. Use tasks/get to check status." + }] + } +} +``` + +## Examples + +
+Product Discovery Success + +```json +{ + "status": "completed", + "taskId": "task_001", + "contextId": "ctx_abc", + "artifacts": [{ + "name": "product_catalog", + "parts": [ + { + "text": "Found 8 CTV products targeting sports fans under $50 CPM" + }, + { + "data": { + "products": [ + { + "product_id": "ctv_sports_premium", + "name": "Premium Sports CTV" + } + // ... 7 more products + ] + } + } + ] + }] +} +``` +
+ +
+Media Buy with Approval Required + +```json +{ + "status": "input-required", + "taskId": "task_002", + "contextId": "ctx_def", + "artifacts": [{ + "name": "approval_request", + "parts": [ + { + "text": "Media buy exceeds auto-approval limit ($100K). Please approve to proceed." + }, + { + "data": { + "media_buy_id": "mb_pending_456", + "packages": [ + { "package_id": "pkg_pending_001" }, + { "package_id": "pkg_pending_002" } + ], + "total_budget": 150000, + "currency": "USD", + "creative_deadline": "2026-02-01T23:59:59.000Z" + } + } + ] + }] +} +``` +
+ +
+Signal Discovery with Partial Failure + +```json +{ + "status": "completed", + "taskId": "task_003", + "contextId": "ctx_ghi", + "artifacts": [{ + "name": "signal_results", + "parts": [ + { + "text": "Found 3 signals for luxury automotive. Note: No data available for Australia region." + }, + { + "data": { + "signals": [ + { + "signal_id": "lux_auto_us", + "name": "Luxury Auto Intenders - US", + "reach": 2500000 + } + ], + "total": 3, + "errors": [{ + "code": "NO_DATA_IN_REGION", + "message": "No signal data available for requested region: Australia", + "field": "countries[1]", + "details": { + "requested_country": "AU", + "available_countries": ["US", "CA", "GB"] + } + }] + } + } + ] + }] +} +``` +
+ +
+Platform Authorization Issue (Task-Level Error) + +Platform/operation-specific authorization failures are task-level errors: + +```json +{ + "status": "completed", + "taskId": "task_004", + "contextId": "ctx_jkl", + "artifacts": [{ + "name": "signal_activation_result", + "parts": [ + { + "text": "Signal activation failed: Account not authorized for Peer39 data on PubMatic" + }, + { + "data": { + "errors": [{ + "code": "PLATFORM_UNAUTHORIZED", + "message": "Account 'brand-456-pm' not authorized for Peer39 data on PubMatic. Contact your PubMatic account manager to enable access.", + "details": { + "platform": "pubmatic", + "account_id": "brand-456-pm", + "data_provider": "peer39" + } + }] + } + } + ] + }] +} +``` +
+ +
+Protocol-Level Failure (Fatal) + +Authentication failures are protocol-level errors: + +```json +{ + "taskId": "task_005", + "status": "failed", + "message": { + "role": "ROLE_AGENT", + "parts": [{ + "text": "Authentication failed: Invalid or expired API token. Please refresh your credentials and retry." + }] + } +} +``` +
+ +## 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`) + +**Interim Responses (status: "working", "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.0.13/building/by-layer/L0/a2a-guide) - Complete A2A integration guide +- [Task Lifecycle](/dist/docs/3.0.13/building/by-layer/L3/task-lifecycle) - Status handling patterns +- [Error Handling](/dist/docs/3.0.13/building/by-layer/L3/error-handling) - Fatal vs non-fatal errors +- [Protocol Comparison](/dist/docs/3.0.13/building/concepts/protocol-comparison) - MCP vs A2A differences diff --git a/dist/docs/3.0.13/building/integration/account-state.mdx b/dist/docs/3.0.13/building/integration/account-state.mdx new file mode 100644 index 0000000000..edf19ae9c9 --- /dev/null +++ b/dist/docs/3.0.13/building/integration/account-state.mdx @@ -0,0 +1,249 @@ +--- +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.0.13/accounts/tasks/sync_governance) registers governance agents on the account. Once configured, sellers with governance support will call [`check_governance`](/dist/docs/3.0.13/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_id": { + "agent_url": "https://creative.retailer.com/adcp", + "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 | +| `list_creative_formats` — discover formats | `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.0.13/building/by-layer/L2/accounts-and-agents)** — Account identity, billing models, and `sync_accounts` details +- **[Async operations](/dist/docs/3.0.13/building/by-layer/L3/async-operations)** — How async approval workflows work +- **[Webhooks](/dist/docs/3.0.13/building/by-layer/L3/webhooks)** — Receiving notifications when async operations complete +- **[Catalogs](/dist/docs/3.0.13/creative/catalogs)** — Typed data feeds that provide the items publishers render in ads diff --git a/dist/docs/3.0.13/building/integration/accounts-and-agents.mdx b/dist/docs/3.0.13/building/integration/accounts-and-agents.mdx new file mode 100644 index 0000000000..732ac3056b --- /dev/null +++ b/dist/docs/3.0.13/building/integration/accounts-and-agents.mdx @@ -0,0 +1,501 @@ +--- +title: Accounts and agents +description: "AdCP accounts and agents: the four entities in every transaction (brand, account, operator, agent), explicit vs implicit account models, 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` ([brand.json](/dist/docs/3.0.13/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`), resolved via `/.well-known/brand.json`. Single-brand houses use the domain alone (no `brand_id`). + +**Account** — A billing relationship between a buyer and seller. Determines rate card, payment terms, credit limit, and who receives invoices. Every billable operation requires an account reference — a seller-assigned `account_id` (explicit accounts) or a natural key (`brand`, `operator`) (implicit accounts). Sandbox accounts follow the same model — explicit sandboxes use `account_id`, implicit sandboxes use the natural key with `sandbox: true`. + +**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.0.13/accounts/overview) for the full commercial model and [sync_accounts](/dist/docs/3.0.13/accounts/tasks/sync_accounts) for the task reference. + +## What sellers declare + +Sellers configure the `account` section of [`get_adcp_capabilities`](/dist/docs/3.0.13/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) | + +**2. Do you require operator-level auth?** (`require_operator_auth`) + +This single field determines both the authentication model and how accounts are referenced: + +When `false` (default) — **implicit 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` — **explicit accounts**: 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. The buyer discovers accounts via `list_accounts` and passes a seller-assigned `account_id`. + +For sandbox, the path follows the account model: explicit accounts (`require_operator_auth: true`) discover pre-existing test accounts via `list_accounts`; implicit accounts declare sandbox via `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.0.13/accounts/tasks/get_account_financials). This only applies to operator-billed accounts. + +**Example capabilities:** + +```json +{ + "account": { + "require_operator_auth": false, + "supported_billing": ["operator", "agent"] + } +} +``` + +Sellers that support `advertiser` billing declare it explicitly: + +```json +{ + "account": { + "require_operator_auth": false, + "supported_billing": ["operator", "agent", "advertiser"] + } +} +``` + +These fields combine into common patterns. + +## Seller patterns + +Which kind of platform are you buying from? That determines the account setup pattern. + +| Platform type | `require_operator_auth` | `supported_billing` | +|---------------|------------------------|-------------------| +| [Social / walled garden](#social-platform) | `true` | `["operator"]` | +| [Direct publisher](#direct-publisher) | `false` | `["operator"]` or `["operator", "agent"]` | +| [DSP / programmatic](#dsp--programmatic) | `false` | `["agent"]` | + +### Social platform + +The operator already has an account on the platform — an ad account, a business manager, a self-serve dashboard. The agent obtains the operator's credentials (via OAuth or API key) and opens a per-operator session. The platform bills the operator directly. + +**Capabilities:** + +```json +{ + "account": { + "require_operator_auth": true, + "supported_billing": ["operator"], + "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 `sync_accounts` to set up each brand for this operator +3. Wait for account status `active` (poll `list_accounts` if `pending_approval`) +4. Call `get_products` / `create_media_buy` with the operator's session and `account` reference + +**sync_accounts request:** + +```json +{ + "accounts": [{ + "brand": { "domain": "nova-brands.com", "brand_id": "spark" }, + "operator": "pinnacle-media.com", + "billing": "operator" + }] +} +``` + +Seller checks `nova-brands.com/.well-known/brand.json`, finds Pinnacle Media in `authorized_operators`, and fast-tracks provisioning: + +```json +{ + "accounts": [{ + "brand": { "domain": "nova-brands.com", "brand_id": "spark" }, + "operator": "pinnacle-media.com", + "action": "created", + "status": "active", + "billing": "operator", + "account_scope": "operator_brand" + }] +} +``` + +**Key point:** The operator's credential — not the agent's — authorizes all calls in that session. Brand.json verification is secondary to the credential. + +### 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"] + } +} +``` + +**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"] + } +} +``` + +**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. + +## 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 which model applies — and the model determines the buyer's entire integration path. + +### Explicit accounts (`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 agent discovers the account via `list_accounts`. The agent is not involved in authentication or billing — those are handled between the advertiser and seller directly. + +**Typical sellers:** Social platforms, self-serve ad platforms — anywhere the advertiser already has an account. + +**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.) + +The agent doesn't set up accounts, negotiate billing, or manage authentication with the seller. It just discovers what already exists and lets the human choose. + +### Implicit 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. + +**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`) | Which brand is advertising | +| `operator` | Who operates on the brand's behalf (agency, trading desk, or the brand itself) | +| `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 implicit accounts; explicit sandbox accounts are pre-existing. | + +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: + - **Implicit accounts** (`require_operator_auth: false`): pass the natural key `{ "brand": { "domain": "acme-corp.com" }, "operator": "pinnacle-media.com" }` + - **Explicit accounts** (`require_operator_auth: true`): pass `{ "account_id": "acc_acme_001" }` (discover via `list_accounts`) + - **Sandbox (implicit)**: pass the natural key with `sandbox: true` (declared via `sync_accounts`) + - **Sandbox (explicit)**: pass `{ "account_id": "test_acc_001" }` (pre-existing test account, discovered via `list_accounts`) +4. When anything changes (billing model, new brand, new operator), call `sync_accounts` again + +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, sandbox)` uniquely identifies an account relationship. The `brand` is a nested object with `domain` and optional `brand_id`. `operator` is always required — when the brand operates directly, set `operator` to the brand's domain. `sandbox` defaults to `false` when omitted. For example, `{brand: {domain: "acme-corp.com"}, operator: "acme-corp.com"}` (brand buying direct) is a different account from `{brand: {domain: "acme-corp.com"}, operator: "pinnacle-media.com"}` (brand via agency). Adding `sandbox: true` references the sandbox account for the same pair. + +See [sync_accounts task reference](/dist/docs/3.0.13/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` | The agent's default account | Agent sends any brand — seller routes to the standing agent 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. + +`sync_accounts` does not return `account_id` — the seller manages account identifiers internally. For explicit accounts (`require_operator_auth: true`), discover account IDs via `list_accounts` — including sandbox test accounts. For implicit accounts (`require_operator_auth: false`), use natural keys (`brand` + `operator`) on subsequent requests — adding `sandbox: true` for sandbox 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.0.13/building/integration/authentication.mdx b/dist/docs/3.0.13/building/integration/authentication.mdx new file mode 100644 index 0000000000..0726a047ad --- /dev/null +++ b/dist/docs/3.0.13/building/integration/authentication.mdx @@ -0,0 +1,316 @@ +--- +title: Authentication +description: "AdCP authentication guide: public vs authenticated operations, bearer token 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 +- **`list_creative_formats`** - Browse available creative formats +- **`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.0.13/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. | +| **Bearer tokens** | Permitted; effective baseline for 3.0 | **PROHIBITED for mutating / financial operations**; permitted for read / discovery only | Documented sunset for mutating ops — see the [known limitation](/dist/docs/3.0.13/reference/known-limitations). | + + + **3.0 mutating-operation floor.** Until 3.1 lands, Bearer tokens 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. + + +### Bearer tokens (3.0 baseline) + +``` +Authorization: Bearer +``` + +Tokens may be: +- **Opaque tokens**: Server-validated strings mapped to agents +- **JWT tokens**: Self-contained tokens with embedded claims + +Implementations MUST enforce TLS 1.2+ on all Bearer-authenticated endpoints. See the [implementation security reference](/dist/docs/3.0.13/building/by-layer/L1/security) for transport requirements. + +### 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.0.13/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.0.13/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.0.13/core/account.json). + +## Tenant resolution + +AdCP resolves tenant from the authenticated principal, not from request payloads. Seller agents map the authenticated identity (bearer token, 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.0.13/contributing/storyboard-authoring). Production sellers do not require it. + +## Protocol Configuration + +Both MCP and A2A protocols use the same authentication header. Configure your client with: + +```json +{ + "auth": { + "type": "bearer", + "token": "" + } +} +``` + +The client library handles adding the `Authorization: Bearer ` header to requests. + +## 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/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/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.0.13/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 https://agenticadvertising.org/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.0.13/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/mcp" +``` + +Configure your client with this token: + +```json +{ + "agent_uri": "https://test-agent.adcontextprotocol.org/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.0.13/media-buy/advanced-topics/sandbox) for testing capabilities including sandbox mode for risk-free development. \ No newline at end of file diff --git a/dist/docs/3.0.13/building/integration/context-sessions.mdx b/dist/docs/3.0.13/building/integration/context-sessions.mdx new file mode 100644 index 0000000000..fc5cf19633 --- /dev/null +++ b/dist/docs/3.0.13/building/integration/context-sessions.mdx @@ -0,0 +1,299 @@ +--- +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', { + brief: "Video ads" +}); +const contextId = result1.context_id; // Save this! + +// Follow-up - must include context_id +const result2 = await mcp.call('get_products', { + 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.0.13/building/integration/index.mdx b/dist/docs/3.0.13/building/integration/index.mdx new file mode 100644 index 0000000000..0253a5d3ac --- /dev/null +++ b/dist/docs/3.0.13/building/integration/index.mdx @@ -0,0 +1,70 @@ +--- +title: Foundations +sidebarTitle: Overview +description: "AdCP integration foundations: choose between MCP and A2A protocols, set up authentication, manage context and sessions, and configure accounts and agents." +"og:title": "AdCP — Foundations" +--- + +This section covers the foundational technical concepts for building any AdCP implementation - whether you're building a client, a server, or an orchestrator. + +## Choose Your Protocol + + + + For Claude, AI assistants, and MCP-compatible tools. Tool-based, request/response pattern. + + + For Google AI agents and A2A workflows. Task-based, message/artifact pattern with SSE streaming. + + + +Not sure which to choose? See [Protocol Comparison](/dist/docs/3.0.13/building/concepts/protocol-comparison). + +## Core Concepts + + + + How to authenticate with AdCP agents. Bearer tokens, agents, and accounts. + + + Managing conversation state with context_id vs task_id. Extension fields and opaque context. + + + Access schemas and official client libraries for JavaScript and Python. + + + +## Getting Started + +### 1. Choose a Protocol +- **MCP** for tool-based integrations (Claude, MCP-compatible systems) +- **A2A** for task-based integrations (Google AI, agent-to-agent workflows) + +### 2. Understand Authentication +- How agents and accounts are identified +- Bearer token patterns +- See [Authentication](/dist/docs/3.0.13/building/by-layer/L2/authentication) + +### 3. Handle Context +- `context_id` for conversation continuity +- `task_id` for tracking async operations +- See [Context & Sessions](/dist/docs/3.0.13/building/by-layer/L2/context-sessions) + +## What Both Protocols Provide + +Regardless of protocol choice, you get: + +| Feature | Support | +|---------|---------| +| All AdCP tasks | Same tasks, same capabilities | +| Unified status system | `completed`, `working`, `input-required`, `failed`, etc. | +| Context management | Session continuity across requests | +| Async operations | Long-running tasks with webhooks or polling | +| Human-in-the-loop | Approval workflows for sensitive operations | +| Error handling | Consistent error codes and recovery patterns | + +## Next Steps + +- **Ready to connect?** Start with [MCP Guide](/dist/docs/3.0.13/building/by-layer/L0/mcp-guide) or [A2A Guide](/dist/docs/3.0.13/building/by-layer/L0/a2a-guide) +- **Need to authenticate?** See [Authentication](/dist/docs/3.0.13/building/by-layer/L2/authentication) +- **Building production systems?** Continue to [Implementation Patterns](/dist/docs/3.0.13/building/by-layer/L3) diff --git a/dist/docs/3.0.13/building/integration/mcp-guide.mdx b/dist/docs/3.0.13/building/integration/mcp-guide.mdx new file mode 100644 index 0000000000..f01982b700 --- /dev/null +++ b/dist/docs/3.0.13/building/integration/mcp-guide.mdx @@ -0,0 +1,866 @@ +--- +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.0.13/building/by-layer/L3/task-lifecycle). + +## Testing AdCP via MCP + +You can test AdCP tasks using the [CLI tools](/dist/docs/3.0.13/building/by-layer/L0/schemas#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', { + 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', { + 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_format_id: { agent_url: 'https://creative.agent', 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 + +**New in AdCP 1.6.0**: All responses include unified status field. + +MCP responses use a **flat structure** where task-specific fields are at the top level alongside protocol fields: + +```json +{ + "status": "completed", // Unified status (see Core Concepts) + "message": "Found 5 products", // Human-readable summary + "context_id": "ctx-abc123", // MCP session continuity + "context": { "ui": "buyer_dashboard" }, // Application-level context echoed back + "products": [...], // Task-specific data (flat, not nested) + "errors": [...] // Task-level errors/warnings +} +``` + +### MCP-Specific Fields +- **context_id**: Session identifier that you must manually manage +- **context**: Opaque initiator-provided metadata echoed by agents +- **status**: Same values as A2A protocol for consistency +- Task-specific fields (e.g., `products`, `media_buy_id`, `creatives`) are at the top level, not wrapped in a `data` object + +**Status Handling**: See [Task Lifecycle](/dist/docs/3.0.13/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 +await mcp.call('list_creative_formats', {...}); // Get 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.0.13/media-buy) and [Signals](/dist/docs/3.0.13/signals/overview) sections. + +## Async Operations via MCP Tasks + +AdCP uses [MCP Tasks](https://modelcontextprotocol.io/specification/2025-11-25/basic/utilities/tasks) for long-running operations over MCP. This removes the LLM from the polling path — the client handles task lifecycle at the protocol level, and the model only sees the final result. + +:::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 **webhooks** or **polling via `tasks/get`** instead — these work with any MCP client. See [Async Operations](/dist/docs/3.0.13/building/by-layer/L3/async-operations) and [Push Notifications](/dist/docs/3.0.13/building/by-layer/L3/webhooks) for transport-independent patterns. + +MCP Tasks are the right choice when you control the MCP client (e.g., building your own orchestrator with `@modelcontextprotocol/sdk`) or when client support matures. +::: + +### 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 | +| `list_creative_formats` | `forbidden` | Instant catalog lookup | +| `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 via `tasks/get`, retrieve the result via `tasks/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": { + "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 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 a running task, send `tasks/cancel` with the `taskId`. + +### AdCP Status Mapping + +AdCP uses a richer set of statuses than MCP Tasks. When serving over MCP, AdCP statuses map to MCP Task statuses: + +| 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` | `failed` | Use `statusMessage` for rejection reason | +| `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 polling within the MCP session, but some AdCP operations outlive a single session (e.g., a media buy that takes 24 hours for publisher approval). For these, combine MCP Tasks with `push_notification_config`: + +```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 status within the session. If the session ends before the task completes, the webhook delivers the result independently. See [Push Notifications](/dist/docs/3.0.13/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', { + brief: "Sports campaign" +}); + +// Follow-up - context automatically included +const refined = await session.call('get_products', { + 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', { + 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 — the client handles polling via 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:** This example follows the recommended URL-based routing pattern where `task_type` and `operation_id` are passed in the URL (e.g., `/webhooks/adcp/create_media_buy/op_456`). While the schema still supports these fields in the payload for backward compatibility, they are deprecated. + +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.0.13/core/mcp-webhook-payload.json) envelope includes: + +**Required fields:** +- `task_id` — Unique task identifier for correlation +- `status` — Current task status (completed, failed, working, input-required, etc.) +- `timestamp` — ISO 8601 timestamp when webhook was generated + +**Optional fields:** +- `domain` — AdCP domain ("media-buy" or "signals") +- `context_id` — Conversation/session identifier +- `message` — Human-readable context about the status change + +**Deprecated fields (supported but not recommended):** +- `task_type` — Task name (e.g., "create_media_buy", "sync_creatives") - ⚠️ **Deprecated:** See [URL-Based Routing](#best-practice-url-based-routing) +- `operation_id` — Correlates a sequence of updates for the same operation - ⚠️ **Deprecated:** See [URL-Based Routing](#best-practice-url-based-routing) + +**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.0.13/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 specific task +const taskStatus = await session.pollTask('task_456', true); +if (taskStatus.status === 'completed') { + console.log('Result:', taskStatus.result); +} + +// State reconciliation +const reconciliation = await session.reconcileState(); +if (reconciliation.missing_from_client.length > 0) { + console.log('Found orphaned tasks:', reconciliation.missing_from_client); + // 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 a task 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, but requires client support | + +### 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.0.13/building/by-layer/L3/webhooks) for payload formats and authentication. + +### Option 2: Polling (backup) + +Use `tasks/get` as a backup for `submitted` operations, or when you can't expose a webhook endpoint: + +```javascript +async function pollForResult(session, taskId, pollInterval = 30000) { + while (true) { + const response = await session.pollTask(taskId, 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 + +### 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.0.13/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": "list_creative_formats" } + ], + "_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.0.13/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 version negotiation, use [`get_adcp_capabilities`](/dist/docs/3.0.13/protocol/get_adcp_capabilities#version-negotiation) with the `adcp_major_version` field. +::: + +**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.0.13/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.0.13/building/by-layer/L3/task-lifecycle) for status handling and workflows +- **Task Reference**: See [Media Buy Tasks](/dist/docs/3.0.13/media-buy) and [Signals](/dist/docs/3.0.13/signals/overview) +- **Protocol Comparison**: Compare with [A2A integration](/dist/docs/3.0.13/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.0.13/building/by-layer/L3/task-lifecycle) - this guide focuses on MCP transport specifics only.** \ No newline at end of file diff --git a/dist/docs/3.0.13/building/operating-an-agent.mdx b/dist/docs/3.0.13/building/operating-an-agent.mdx new file mode 100644 index 0000000000..94a49a49a2 --- /dev/null +++ b/dist/docs/3.0.13/building/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.0.13/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 `adagents.json`. Downtime or URL drift breaks buyer discovery. | Cloud VM, container service (Cloud Run, ECS, Fly.io), or a managed hosting platform. | +| **Discovery registration** | Tells buyer agents your agent exists and which protocols it supports. Handled via `adagents.json` on your domain — not through a central registry. | Publish `adagents.json` at your domain root. See [How Agents Communicate](/dist/docs/3.0.13/building/concepts/how-agents-communicate) and [Authorized Properties](/dist/docs/3.0.13/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.0.13/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.0.13/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.0.13/building/verification/validate-your-agent)** — The compliance suite referenced above +- **[Security](/dist/docs/3.0.13/building/by-layer/L1/security)** — The normative reference for HMAC, idempotency, SSRF, and governance verification +- **[How Agents Communicate](/dist/docs/3.0.13/building/concepts/how-agents-communicate)** — Discovery via `adagents.json` and `brand.json` +- **[Seller Integration](/dist/docs/3.0.13/building/operating/seller-integration)** — Patterns for connecting an agent to an ad server +- **[Authorized Properties](/dist/docs/3.0.13/governance/property/authorized-properties)** — Who can sell what, and how that's declared diff --git a/dist/docs/3.0.13/building/operating/operating-an-agent.mdx b/dist/docs/3.0.13/building/operating/operating-an-agent.mdx new file mode 100644 index 0000000000..94a49a49a2 --- /dev/null +++ b/dist/docs/3.0.13/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.0.13/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 `adagents.json`. Downtime or URL drift breaks buyer discovery. | Cloud VM, container service (Cloud Run, ECS, Fly.io), or a managed hosting platform. | +| **Discovery registration** | Tells buyer agents your agent exists and which protocols it supports. Handled via `adagents.json` on your domain — not through a central registry. | Publish `adagents.json` at your domain root. See [How Agents Communicate](/dist/docs/3.0.13/building/concepts/how-agents-communicate) and [Authorized Properties](/dist/docs/3.0.13/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.0.13/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.0.13/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.0.13/building/verification/validate-your-agent)** — The compliance suite referenced above +- **[Security](/dist/docs/3.0.13/building/by-layer/L1/security)** — The normative reference for HMAC, idempotency, SSRF, and governance verification +- **[How Agents Communicate](/dist/docs/3.0.13/building/concepts/how-agents-communicate)** — Discovery via `adagents.json` and `brand.json` +- **[Seller Integration](/dist/docs/3.0.13/building/operating/seller-integration)** — Patterns for connecting an agent to an ad server +- **[Authorized Properties](/dist/docs/3.0.13/governance/property/authorized-properties)** — Who can sell what, and how that's declared diff --git a/dist/docs/3.0.13/building/operating/orchestrator-design.mdx b/dist/docs/3.0.13/building/operating/orchestrator-design.mdx new file mode 100644 index 0000000000..a98f4bf768 --- /dev/null +++ b/dist/docs/3.0.13/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 tasks/list""" + server_tasks = await adcp_client.call('tasks/list', { + '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('tasks/get', { + '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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/governance/campaign/tasks/report_plan_outcome) | No feedback loop — governance agent cannot improve future recommendations | + +See the [media buy governance workflow](/dist/docs/3.0.13/media-buy/index#governance) for the complete sequence with code examples, and the [seller integration guide](/dist/docs/3.0.13/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.0.13/building/by-layer/L3/task-lifecycle) for status handling +- **Webhooks**: See [Webhooks](/dist/docs/3.0.13/building/by-layer/L3/webhooks) for push notifications +- **Security**: See [Security](/dist/docs/3.0.13/building/by-layer/L1/security) for multi-tenant security diff --git a/dist/docs/3.0.13/building/operating/seller-integration.mdx b/dist/docs/3.0.13/building/operating/seller-integration.mdx new file mode 100644 index 0000000000..cacb54d1aa --- /dev/null +++ b/dist/docs/3.0.13/building/operating/seller-integration.mdx @@ -0,0 +1,329 @@ +--- +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 three parts: + + + +### Make your agent discoverable + +Publish an `adagents.json` file at your domain root. This file declares your properties and the agents authorized to sell your inventory — similar to how `ads.txt` works for supply chain transparency. + +```json +{ + "version": "1.0", + "properties": [ + { + "domain": "publisher.example.com", + "agents": [ + { + "agent_url": "https://ads.publisher.example.com", + "relationship": "direct", + "supported_protocols": ["media_buy", "creative"] + } + ] + } + ] +} +``` + +Buyer agents check `adagents.json` to find authorized sales agents, verify relationships, and discover which protocol domains you support. + + +This shows a simplified structure. The full adagents.json schema uses separate `properties` and `authorized_agents` arrays with a `delegation_type` field. See the [adagents.json tech spec](/dist/docs/3.0.13/governance/property/adagents) for the complete schema. + + +### 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 +{ + "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_ids": [ + { "agent_url": "https://ads.publisher.example.com", "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": [ + { "placement_id": "pre_roll", "name": "Pre-roll (30s)" }, + { "placement_id": "host_read", "name": "Mid-roll host read (60s)" } + ], + "delivery_type": "guaranteed", + "exclusivity": "category", + "format_ids": [ + { "agent_url": "https://ads.publisher.example.com", "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.0.13/media-buy/product-discovery/collections-and-installments) for the full content model and [Media products](/dist/docs/3.0.13/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 [lifecycle states](/dist/docs/3.0.13/media-buy/media-buys#lifecycle-states) 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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/accounts/tasks/sync_accounts) and [`list_accounts`](/dist/docs/3.0.13/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 explicit accounts — set `require_operator_auth: true` in [`get_adcp_capabilities`](/dist/docs/3.0.13/protocol/get_adcp_capabilities) so each operator authenticates independently. +- **Open platforms** (publishers, SSPs) can use implicit accounts — the agent is trusted and declares accounts via `sync_accounts`. + +See [Accounts and Agents](/dist/docs/3.0.13/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 provision test accounts and validate the full integration — product discovery, media buy creation, delivery reporting — before committing real spend. Without sandbox, buyers must test against live inventory, which slows adoption and increases onboarding friction. See [Sandbox mode](/dist/docs/3.0.13/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.0.13/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.0.13/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.0.13/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.0.13/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 | `format_ids`, `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.0.13/media-buy/product-discovery/collections-and-installments). For exclusivity and sponsorship patterns, see [Media products](/dist/docs/3.0.13/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.0.13/governance/property/specification) for the full schema and the [adagents.json tech spec](/dist/docs/3.0.13/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.0.13/governance/content-standards/implementation-guide) for the full sales agent workflow. + +### Execution checks + +When a buyer's account has governance agents configured (via [`sync_governance`](/dist/docs/3.0.13/accounts/tasks/sync_governance)), the seller MUST call [`check_governance`](/dist/docs/3.0.13/governance/campaign/tasks/check_governance) with `media_buy_id` and `planned_delivery` before confirming a media buy. This is a binding validation — the governance agent verifies the seller's planned delivery against the buyer's campaign plan. + +```javascript +// Before confirming create_media_buy +const check = await governanceAgent.checkGovernance({ + plan_id: mediaBuy.plan_id, // from the create_media_buy request + caller: "https://seller.example.com", + governance_context: mediaBuy.governance_context, // opaque — pass through, do not parse + media_buy_id: mediaBuy.media_buy_id, + phase: "purchase", + planned_delivery: { + geo: { countries: ["US"] }, + channels: ["olv"], + start_time: mediaBuy.start_time, + end_time: mediaBuy.end_time, + total_budget: mediaBuy.total_budget.amount, + currency: mediaBuy.total_budget.currency + } +}); + +if (check.status === "denied") { + // Committed checks are always binding — do not confirm the media buy + return { error: "GOVERNANCE_DENIED", detail: check.explanation }; +} + +if (check.status === "conditions" && retries < 3) { + // Conditions restrict what the seller can deliver — e.g., narrower geo, + // blocked channels, reduced frequency. The seller adjusts their own + // delivery parameters (not the buyer's budget) and re-calls check_governance. + // If the seller cannot satisfy the conditions, reject the media buy. + const adjusted = applyConditions(plannedDelivery, check.conditions); + if (!adjusted) { + return { error: "GOVERNANCE_CONDITIONS_UNSATISFIABLE", detail: check.conditions }; + } + // Re-check with adjusted delivery (governance agents SHOULD deny after 3 re-calls) + return await checkGovernanceWithRetry(request, adjusted, retries + 1); +} +if (check.status === "conditions") { + return { error: "GOVERNANCE_CONDITIONS_RETRY_LIMIT", detail: check.conditions }; +} + +// check.status === "approved" — proceed with confirmation +``` + +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.0.13/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 execution checks incrementally — start with purchase-only (one call per `create_media_buy`), then add modification and delivery checks. See [`check_governance`](/dist/docs/3.0.13/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.0.13/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.0.13/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.0.13/building/operating/storyboard-troubleshooting.mdx b/dist/docs/3.0.13/building/operating/storyboard-troubleshooting.mdx new file mode 100644 index 0000000000..8e8816a862 --- /dev/null +++ b/dist/docs/3.0.13/building/operating/storyboard-troubleshooting.mdx @@ -0,0 +1,132 @@ +--- +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:** Implement `comply_test_controller` and honor the seed scenarios declared in the storyboard's `fixtures:` block. 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. + +See [Compliance test controller — Scenarios](/dist/docs/3.0.13/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. + +## 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.0.13/building/by-layer/L1/security#signed-requests-transport-layer) for the challenge-header format and the [transport-error binding order](/dist/docs/3.0.13/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.0.13/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.0.13/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` 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` in the test kit so the runner uses Bearer auth, 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. + +## Bearer-only 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 either prior phase. This is the most common failure for Bearer-only (API-key-only) agents, 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"` — it is skipped entirely unless the test kit declares an API key. The `oauth_discovery` phase 404s on `/.well-known/oauth-protected-resource/...` (expected for Bearer-only agents; those failures are silently ignored by the runner). With both 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`, which is the specific Bearer value the `api_key_path` phase sends during its positive-key and invalid-key probes. These are not the same token and are not interchangeable. + +**Fix:** Every AdCP 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' }, + } + }) +}) +``` + +Agents that only accept their own production token skip `api_key_path` (no test-kit key matches), fail `oauth_discovery` (no PRM), and land at `actual: []` in `assert_mechanism`. Adding the demo key to your allowed-keys 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.0.13/building/cross-cutting/known-ambiguities#prm-required-for-non-oauth-agents) for background on why the carve-out exists and how the `api_key_path` / `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.0.13/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.0.13/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 full runner output and the storyboard name. Maintainers can usually narrow the pattern from the error signature. diff --git a/dist/docs/3.0.13/building/operating/transport-errors.mdx b/dist/docs/3.0.13/building/operating/transport-errors.mdx new file mode 100644 index 0000000000..5dcfeae566 --- /dev/null +++ b/dist/docs/3.0.13/building/operating/transport-errors.mdx @@ -0,0 +1,701 @@ +--- +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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/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:** Sellers MUST return `retry_after` values between 1 and 3600 seconds. Clients MUST clamp values outside this range: values below 1 become 1, values above 3600 become 3600. 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.0.13/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_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, 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` + +```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 | + +### `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.0.13/error-details/rate-limited.json`](https://adcontextprotocol.org/schemas/3.0.13/error-details/rate-limited.json) +- [`/schemas/3.0.13/error-details/budget-too-low.json`](https://adcontextprotocol.org/schemas/3.0.13/error-details/budget-too-low.json) +- [`/schemas/3.0.13/error-details/audience-too-small.json`](https://adcontextprotocol.org/schemas/3.0.13/error-details/audience-too-small.json) +- [`/schemas/3.0.13/error-details/account-setup-required.json`](https://adcontextprotocol.org/schemas/3.0.13/error-details/account-setup-required.json) +- [`/schemas/3.0.13/error-details/creative-rejected.json`](https://adcontextprotocol.org/schemas/3.0.13/error-details/creative-rejected.json) +- [`/schemas/3.0.13/error-details/policy-violation.json`](https://adcontextprotocol.org/schemas/3.0.13/error-details/policy-violation.json) +- [`/schemas/3.0.13/error-details/conflict.json`](https://adcontextprotocol.org/schemas/3.0.13/error-details/conflict.json) + +These schemas are recommended, not required. Sellers that omit `details` entirely are conformant. Agents MUST NOT require specific `details` keys — fall back to `code`, `message`, and `recovery` when `details` is absent or has unexpected shape. + +## Seller-Specific Error Codes + +Sellers MAY use error codes not in the [standard vocabulary](https://adcontextprotocol.org/schemas/3.0.13/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.0.13/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.0.13/building/by-layer/L3/error-handling) — error schema, standard codes, recovery strategies +- [MCP Guide](/dist/docs/3.0.13/building/by-layer/L0/mcp-guide) — MCP transport integration +- [A2A Guide](/dist/docs/3.0.13/building/by-layer/L0/a2a-guide) — A2A transport integration +- [A2A Response Format](/dist/docs/3.0.13/building/by-layer/L0/a2a-response-format) — canonical A2A response structure diff --git a/dist/docs/3.0.13/building/schemas-and-sdks.mdx b/dist/docs/3.0.13/building/schemas-and-sdks.mdx new file mode 100644 index 0000000000..768ef63fe1 --- /dev/null +++ b/dist/docs/3.0.13/building/schemas-and-sdks.mdx @@ -0,0 +1,339 @@ +--- +title: Schemas and SDKs +description: "AdCP JSON schemas and SDKs for JavaScript, Python, and Go. Download schemas from GitHub or fetch at runtime. Includes setup for AI coding agents using Cursor, Windsurf, and Claude." +"og:title": "AdCP — Schemas and SDKs" +--- + +Get started integrating with AdCP using our schemas and official SDKs. + +## Schema Access + +AdCP schemas are available from two sources: + +| Source | URL | Best For | +|--------|-----|----------| +| Website | `https://adcontextprotocol.org/schemas/3.0.13/` | 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. + +### 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/client` `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/.*$' \ + --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/client` `sync-schemas` command performs this verification automatically when the sidecars are present. + +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.0.13/building/verification/compliance-catalog) for every protocol and specialism an agent can claim. + +### Common Schemas + +| Schema | URL | +|--------|-----| +| Product | `https://adcontextprotocol.org/schemas/3.0.13/core/product.json` | +| Media Buy | `https://adcontextprotocol.org/schemas/3.0.13/core/media-buy.json` | +| Creative Format | `https://adcontextprotocol.org/schemas/3.0.13/core/format.json` | +| Schema Registry | `https://adcontextprotocol.org/schemas/3.0.13/index.json` | + +### For AI Coding Agents + + +Point your AI coding agent to **[https://docs.adcontextprotocol.org/mcp](https://docs.adcontextprotocol.org/mcp)** for MCP integration documentation. + + +## Client SDKs + +AdCP provides official SDKs for JavaScript/TypeScript, Python, and Go. These work for both client and server implementations. + +### AdCP 3.0 support + +All three official SDKs ship AdCP 3.0. Pin to (or above) the minimum listed below and validate with the [storyboard test suite](/dist/docs/3.0.13/building/verification/validate-your-agent). + +| SDK | 3.0-compatible from | Package | +|---|---|---| +| `@adcp/client` (JS/TS) | `5.13.0` | [npm](https://www.npmjs.com/package/@adcp/client) · [releases](https://github.com/adcontextprotocol/adcp-client/releases) | +| `adcp` (Python) | `4.0.0` | [PyPI](https://pypi.org/project/adcp/) · [releases](https://github.com/adcontextprotocol/adcp-python/releases) | +| `adcp-go` (Go) | `v1.0.0` | [releases](https://github.com/adcontextprotocol/adcp-go/releases) | + +If you are on an earlier major version, upgrade before working through the [3.0 migration guide](/dist/docs/3.0.13/reference/migration/index). + +### JavaScript / TypeScript + +[![npm version](https://img.shields.io/npm/v/@adcp/client)](https://www.npmjs.com/package/@adcp/client) + +```bash +npm install @adcp/client +``` + +```javascript +import { ADCPClient } from '@adcp/client'; + +const client = new ADCPClient({ + agentUrl: 'https://sales.example.com' +}); + +const products = await client.getProducts({ + brief: 'Video campaign for pet owners' +}); +``` + +**Resources:** +- [NPM Package](https://www.npmjs.com/package/@adcp/client) +- [GitHub Repository](https://github.com/adcontextprotocol/adcp-client) + +**Package exports:** +- `@adcp/client` — Main API +- `@adcp/client/testing` — Buyer-side storyboard runner (`runStoryboard`, `comply`, `testAgent`) and seller-side controller scaffold (`createComplyController` — see [Get Test-Ready](/dist/docs/3.0.13/building/verification/get-test-ready)) +- `@adcp/client/server` — Low-level server helpers (MCP tool registration, state stores, `handleTestControllerRequest`) +- `@adcp/client/advanced` — Advanced API features +- `@adcp/client/types` — TypeScript type definitions + +### Python + +[![PyPI version](https://img.shields.io/pypi/v/adcp)](https://pypi.org/project/adcp/) + +```bash +pip install adcp +``` + +```python +from adcp import ADCPClient + +client = ADCPClient(agent_url='https://sales.example.com') + +products = client.get_products( + 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 +``` + +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)`, 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. + +### JavaScript CLI + +```bash +npx @adcp/client@latest --help +npx @adcp/client@latest get-products --agent https://sales.example.com --brief "CTV campaign" +``` + +### Python CLI + +```bash +uvx adcp --help +uvx adcp get-products --agent https://sales.example.com --brief "CTV campaign" +``` + +## 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.0.13/`, `/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.0.13/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: + +### 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 task schemas +├── core/ # Modular schemas with $ref +├── media-buy/ +└── index.json # Schema registry +``` + +### 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 | +| `bundled/core/` | tasks-get, tasks-list | + +See the [schema registry](https://adcontextprotocol.org/schemas/3.0.13/index.json) for all available schemas. + +## Version Discovery + +```bash +# Get current version +curl https://adcontextprotocol.org/schemas/3.0.13/index.json | jq '.adcp_version' +``` + +Check [Release Notes](/dist/docs/3.0.13/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.0.13/building/understanding/adcp-vs-openrtb.mdx b/dist/docs/3.0.13/building/understanding/adcp-vs-openrtb.mdx new file mode 100644 index 0000000000..43e3ed29fe --- /dev/null +++ b/dist/docs/3.0.13/building/understanding/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.0.13/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. + +**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.0.13/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.0.13/building/understanding/how-agents-communicate.mdx b/dist/docs/3.0.13/building/understanding/how-agents-communicate.mdx new file mode 100644 index 0000000000..7c08e4c510 --- /dev/null +++ b/dist/docs/3.0.13/building/understanding/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 +{ + "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 checks what formats the platform accepts by calling `list_creative_formats`. The response includes structured format objects with dimensions, accepted file types, and rendering roles: + +```json +{ + "formats": [ + { + "format_id": { + "agent_url": "https://ads.publisher.example.com", + "id": "video_preroll_16x9" + }, + "name": "Pre-roll video (16:9)", + "renders": [{ + "role": "primary", + "dimensions": { "width": 1920, "height": 1080, "unit": "px" } + }] + } + ] +} +``` + +The agent then submits matching creatives via `build_creative`, which generates or adapts ads to the platform's requirements. + +### 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 calls `list_creative_formats` on each platform and identifies common formats 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.0.13/building/understanding/index.mdx b/dist/docs/3.0.13/building/understanding/index.mdx new file mode 100644 index 0000000000..35c6c6b8b0 --- /dev/null +++ b/dist/docs/3.0.13/building/understanding/index.mdx @@ -0,0 +1,108 @@ +--- +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 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.0.13/building/understanding/industry-landscape.mdx b/dist/docs/3.0.13/building/understanding/industry-landscape.mdx new file mode 100644 index 0000000000..4018ef5e57 --- /dev/null +++ b/dist/docs/3.0.13/building/understanding/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.0.13/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.0.13/building/understanding/protocol-comparison.mdx b/dist/docs/3.0.13/building/understanding/protocol-comparison.mdx new file mode 100644 index 0000000000..e1baaf652a --- /dev/null +++ b/dist/docs/3.0.13/building/understanding/protocol-comparison.mdx @@ -0,0 +1,236 @@ +--- +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** | [MCP Tasks](https://modelcontextprotocol.io/specification/2025-11-25/basic/utilities/tasks) | SSE streaming | +| **Webhooks** | `push_notification_config` in tool args | Native PushNotificationConfig | +| **Task Management** | MCP Tasks (`tasks/get`, `tasks/result`, `tasks/cancel`) | Native task lifecycle | +| **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) | Poll frequently, 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.0.13/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 handle async operations with the same status progression: +`submitted` → `working` → `completed`/`failed` + +### MCP Async Pattern (MCP Tasks) +```javascript +// Task-augmented tool call — returns CreateTaskResult immediately +const createResult = await mcp.callTool({ + name: "create_media_buy", + arguments: { + buyer_ref: "nike_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 +const result = await mcp.getTaskResult({ taskId: "task-456" }); +// result = { content: [...], isError: false } +``` + +### A2A Async Pattern +```javascript +// Initial response with native task tracking +{ + "status": "submitted", + "taskId": "task-456", + "contextId": "ctx-123", + "estimatedCompletionTime": "2025-01-23T10:00:00Z" +} + +// Real-time updates via SSE +const events = new EventSource(`/tasks/${response.taskId}/events`); +events.onmessage = (event) => { + const update = JSON.parse(event.data); + console.log(`Status: ${update.status}, Message: ${update.message}`); +}; + +// Native webhook support +await a2a.send({ + message: { /* skill invocation */ }, + push_notification_config: { + webhook_url: "https://buyer.com/webhooks", + authentication: { + schemes: ["Bearer"], + credentials: "secret_token_min_32_chars" + } + } +}); +``` + +## 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: Automatic Context +```javascript +// A2A manages context automatically +const response1 = await a2a.send({ message: "Find video products" }); +const response2 = await a2a.send({ + contextId: response1.contextId, // Optional - A2A tracks this + message: "Focus on premium 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.0.13/building/by-layer/L0/mcp-guide) for tool calls and context management +- **A2A Guide**: See [A2A Guide](/dist/docs/3.0.13/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.0.13/building/understanding/security-model.mdx b/dist/docs/3.0.13/building/understanding/security-model.mdx new file mode 100644 index 0000000000..5d8b4d48b4 --- /dev/null +++ b/dist/docs/3.0.13/building/understanding/security-model.mdx @@ -0,0 +1,275 @@ +--- +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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/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. 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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/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. + +**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. + +### Layer 3: Idempotency — at-most-once execution + +Every mutating AdCP request carries a required [`idempotency_key`](/dist/docs/3.0.13/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.0.13/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`** — the specific plan being authorized +- **`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.0.13/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 return a signed `plan_receipt` binding `{plan_id, received_at, plan_sha256}`. 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 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.0.13/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.0.13/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.0.13/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.0.13/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 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** — publisher-attested in `brand.json` `agents[].signing_keys[]`, fetched from the publisher's own `/.well-known`. +- **`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.0.13/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[].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.0.13/building/by-layer/L1/security)** — Normative rules for HMAC, idempotency, SSRF, agent/account isolation, and governance verification +- **[Embedded Human Judgment](/dist/docs/3.0.13/governance/embedded-human-judgment)** — The five principles that keep humans in the loop on decisions with real consequences +- **[Trusted Match Protocol](/dist/docs/3.0.13/trusted-match)** — The two-call decomposition (Context Match / Identity Match) that delivers structural privacy separation at serve time +- **[Webhooks](/dist/docs/3.0.13/building/by-layer/L3/webhooks)** — Signature format, replay windows, rotation +- **[Signed Governance Context](/dist/docs/3.0.13/building/by-layer/L1/security#signed-governance-context)** — The 15-step verification checklist +- **[Operating an Agent](/dist/docs/3.0.13/building/operating/operating-an-agent)** — Credential management, monitoring, and incident response as operating concerns +- **[How Agents Communicate](/dist/docs/3.0.13/building/concepts/how-agents-communicate)** — `adagents.json`, `brand.json`, and the discovery trust chain diff --git a/dist/docs/3.0.13/building/validate-your-agent.mdx b/dist/docs/3.0.13/building/validate-your-agent.mdx new file mode 100644 index 0000000000..c8575aeab4 --- /dev/null +++ b/dist/docs/3.0.13/building/validate-your-agent.mdx @@ -0,0 +1,262 @@ +--- +title: Validate Your Agent +sidebarTitle: Validate Your Agent +description: "Test your AdCP agent with storyboards — from the CLI or through Addie." +"og:title": "AdCP — Validate Your Agent" +--- + +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.0.13/building/by-layer/L0/schemas#one-shot-protocol-bundle) for how to fetch them offline. + +## 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.0.13/building/verification/compliance-catalog) | + +Declare your `supported_protocols` and `specialisms` in `get_adcp_capabilities` — the runner picks the matching storyboards automatically. See the [Compliance Catalog](/dist/docs/3.0.13/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/client@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/client@latest storyboard run http://localhost:3001/mcp media_buy_seller` + + +## Run a storyboard + +### 1. List available storyboards + +```bash +npx @adcp/client@latest storyboard list +``` + +Each storyboard targets a specific agent type. The [Build an Agent](/dist/docs/3.0.13/building/by-layer/L4/build-an-agent) page maps skills to their matching storyboards. + +### 2. Preview what a storyboard tests + +```bash +npx @adcp/client@latest storyboard show media_buy_seller +``` + +This shows the phases, steps, and validations without running anything. + +### 3. Run the storyboard + +```bash +npx @adcp/client@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 + ✓ list_creative_formats + ✓ 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/client@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/client@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/client@latest storyboard run my-agent +``` + +Add `--json` for structured output. + +The storyboard runner operates in two modes depending on whether your agent implements the optional [compliance test controller](/dist/docs/3.0.13/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 | + +## 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` 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` 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`: + +```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.0.13/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.0.13/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/client@latest --save-auth my-agent https://my-agent.example/mcp +npx @adcp/client@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.0.13/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/client@latest fuzz my-agent \ + --auth-token $TENANT_A_TOKEN \ + --auth-token-cross-tenant $TENANT_B_TOKEN + +# Baseline (partial coverage) +npx @adcp/client@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/client` 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.0.13/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/client@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/client@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/client@latest storyboard list` | List all available storyboards | +| `npx @adcp/client@latest storyboard show ` | Preview storyboard structure | +| `npx @adcp/client@latest storyboard run [id]` | Run one storyboard, or all matching if no ID given | +| `npx @adcp/client@latest storyboard step ` | Run a single step | +| `npx @adcp/client@latest [tool] [payload]` | Call any tool directly | +| `npx @adcp/client@latest --save-auth ` | Save agent alias | +| `npx @adcp/client@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.0.13/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.0.13/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.0.13/building/by-layer/L3/comply-test-controller)** — Implement deterministic testing for full lifecycle coverage +- **[Task lifecycle](/dist/docs/3.0.13/building/by-layer/L3/task-lifecycle)** — Status values, transitions, and polling +- **[Error handling](/dist/docs/3.0.13/building/by-layer/L3/error-handling)** — Error categories, codes, and recovery diff --git a/dist/docs/3.0.13/building/verification/aao-verified.mdx b/dist/docs/3.0.13/building/verification/aao-verified.mdx new file mode 100644 index 0000000000..5c9758f979 --- /dev/null +++ b/dist/docs/3.0.13/building/verification/aao-verified.mdx @@ -0,0 +1,305 @@ +--- +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**: May 11, 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 gate is normative: every comply_test_controller request includes `account: { sandbox: true }`, and the seller MUST verify the targeted account is sandbox by looking up the persisted account record — not by trusting the field. See [comply_test_controller](/dist/docs/3.0.13/building/by-layer/L3/comply-test-controller) for the dev-side affordance; AAO 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.0.13/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`**: 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.0.13/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", "live"]`. 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 runs 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 (Sandbox) qualifier attests that the seller's prod stack handles all of them correctly under flagged traffic, not just the ones with a real-money observability path. 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. + +## How agents earn each axis + +```json +// agent declares its claims in get_adcp_capabilities +{ + "supported_protocols": ["media_buy", "creative"], + "specialisms": [ + "sales-broadcast-tv", + "sales-guaranteed", + "creative-ad-server" + ] +} +``` + +### 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.0.13/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. + +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 with all declared-specialism storyboards passing against the registered production URL under `account.sandbox: true` + active membership. The seller's prod stack must additionally pass the `comply-controller-mode-gate` storyboard (refuses controller dispatch against live-mode accounts — the seller-side sandbox isolation contract). +- **Active** — re-checked every heartbeat; JWT auto-renewed. +- **Degraded** — first storyboard 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-mode account accepting a sandbox-flagged controller call) 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 storyboards (including the mode-gate check) reissue (Sandbox). + +Membership lapse revokes the entire badge regardless of test results — public trust marks require active membership. + +## Mark semantics + +A seller MAY hold: + +- **(Spec) only** — storyboards pass on a test-mode endpoint; (Live) not enrolled, or no (Live) path exists for the agent's specialisms. Common for test agents, sandboxes, and pre-production rollouts. +- **(Live) only** — real production traffic observed healthy across the rolling window. Common for SDK-built agents whose wire-format correctness is guaranteed by the SDK, and for production-only platforms with no test-mode surface. The eight observability checks already exercise wire format, filters, lifecycle, and scope, so requiring a parallel storyboard pass would be busywork. +- **(Spec + Live)** — the strongest claim. Both axes verified independently. +- **Neither** + +The two axes are evaluated independently. A storyboard regression revokes (Spec) without affecting (Live); an observability check failure revokes (Live) 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 (Live). 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 + Live)` — 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 + Live)`. + +## 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 + Live)` 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 5-minute caching. Renders teal when verified, grey when not. Unknown agents, unknown roles, and revoked badges all return a grey "Not Verified" variant — the URL never 404s, which makes it safe to embed. Version-pinned URLs at versions the agent never earned also return "Not Verified" (vs. the legacy URL, which shows the current best mark). + +### 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 AAO 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 (Live) 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 agents I can actually buy through"** → filter by `verification_modes contains 'live'` +- **"Show me agents with both"** → filter by both + +Both queries are valid. Buyers comparing options use (Live); orchestrator developers integrating new agents use (Spec). + +### brand.json enrichment + +When AAO 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", "live"], "verified_at": "..." }, + { "role": "media-buy", "adcp_version": "3.0", "verification_modes": ["spec"], "verified_at": "..." } + ], + "roles": ["media-buy"], + "modes_by_role": { "media-buy": ["spec", "live"] }, + "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 runs Live for them when only the 3.1 badge has Live). + +`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`. +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 AAO'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 AAO. 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 [`comply-controller-mode-gate`](https://adcontextprotocol.org/compliance/latest/universal/comply-controller-mode-gate) storyboard, which exercises the seller-side isolation contract (refuse controller dispatch against live-mode accounts). +6. The AAO compliance heartbeat issues **AAO Verified (Sandbox)** when the full applicable storyboard suite 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.0.13/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 `account.sandbox: true` on every `comply_test_controller` request (when present). Defense-in-depth on top of the seller-side gate; a request asserting `sandbox: false` schema-rejects. +- **[`comply-controller-mode-gate` storyboard (#4028 / #4384)](https://github.com/adcontextprotocol/adcp/issues/4028)** — verifies sellers correctly refuse controller dispatch against live-mode accounts. Keystone of the (Sandbox) isolation contract. +- **[UNKNOWN_SCENARIO grading (#4226 / #4228)](https://github.com/adcontextprotocol/adcp/issues/4226)** — sellers MAY implement controller selectively; the runner grades absent operations as `not_applicable` rather than `failed`. Controller is dev-only per the (Sandbox) framing. + +The earlier (Live) framing's supporting issues (#2963, #2964, #2902 — `attestation_verifier` scope, `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.0.13/building/verification/conformance) — defines what *conformant* means via the storyboards. The (Spec) axis verifies your agent matches that specification. +- [Compliance Catalog](/dist/docs/3.0.13/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.0.13/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.0.13/building/verification/addie-socket-mode.mdx b/dist/docs/3.0.13/building/verification/addie-socket-mode.mdx new file mode 100644 index 0000000000..41e05d5ef8 --- /dev/null +++ b/dist/docs/3.0.13/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.0.13/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` 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` 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.0.13/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` claim what I actually implement?"* +- **Walk lifecycle states** — if you've wired `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` ([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`. That's the discovery tool every AdCP agent must expose. Implement it before running any storyboard — see [`get_adcp_capabilities`](/dist/docs/3.0.13/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.0.13/protocol/get_adcp_capabilities) — the discovery tool every storyboard starts with +- [Compliance Catalog](/dist/docs/3.0.13/building/verification/compliance-catalog) — full list of available storyboards +- [Get Test-Ready](/dist/docs/3.0.13/building/verification/get-test-ready) — what your agent needs in place before any storyboard can pass +- [AAO Verified](/dist/docs/3.0.13/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.0.13/building/verification/compliance-catalog.mdx b/dist/docs/3.0.13/building/verification/compliance-catalog.mdx new file mode 100644 index 0000000000..6228132bd3 --- /dev/null +++ b/dist/docs/3.0.13/building/verification/compliance-catalog.mdx @@ -0,0 +1,354 @@ +--- +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" +--- + +Every AdCP agent declares its `supported_protocols` and `specialisms` in `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`, `list_accounts`, `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.0.13/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 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. + +{/* Lint: scripts/lint-universal-storyboard-doc-parity.cjs keeps this table in sync with static/compliance/source/universal/. Add a row (kebab-case slug) when you add a graded storyboard; remove the row when one is deleted. The build fails on drift. */} + +| Storyboard | Purpose | +|-----------|---------| +| `capability-discovery` | `get_adcp_capabilities` shape, protocol/specialism declarations, version advertising | +| `schema-validation` | Request and response schema conformance, ISO 8601 timestamps, temporal invariants | +| `schema-validation-signals` | Response schema compliance for signals — required fields on every signal; gated on `get_signals` | +| `v3-envelope-integrity` | 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` | Structured error shape, published error codes, transport binding, no existence leaks across tenants | +| `error-compliance-signals` | Error handling for signals protocol — nonexistent signal IDs, missing fields, VERSION_UNSUPPORTED, transport binding; gated on `get_signals` + `activate_signal` | +| `idempotency` | `idempotency_key` scoping, replay semantics, `IDEMPOTENCY_CONFLICT`, `replayed: true`, declared TTL | +| `security` | **Authentication baseline — unauth rejection, API key enforcement, OAuth discovery + RFC 9728 audience binding.** See [Authentication](/dist/docs/3.0.13/building/by-layer/L2/authentication). | +| `webhook-emission` | Outbound webhook conformance — stable `idempotency_key` across retries; RFC 9421 webhook signing (or HMAC fallback if the buyer opted in). Runs for any agent that accepts `push_notification_config` on any operation. | +| `notification-config-event-scope` | `sync_accounts.accounts[].notification_configs[]` semantic validation — account-level subscribers reject media-buy-anchored notification types (`scheduled`, `final`, `delayed`, `adjusted`, `impairment`) even though they are valid values in the shared notification-type enum. | +| `pagination-integrity` | `cursor` ↔ `has_more` invariant verified by walking a paginated `list_creatives` response from a continuation page through to terminal. | +| `get-signals-pagination-integrity` | `cursor` ↔ `has_more` invariant verified by walking a paginated `get_signals` response under a broad query — page 1 must be non-terminal against any non-trivial signal set, page 2 follows the cursor. | +| `pagination-integrity-list-accounts` | `cursor` ↔ `has_more` invariant verified by walking a paginated `list_accounts` response — storyboard bootstraps three accounts via `sync_accounts`, then asserts page 1 is non-terminal and page 2 is terminal with no stale cursor. | +| `pagination-integrity-creative-formats` | `cursor` ↔ `has_more` invariant verified by walking a paginated `list_creative_formats` response — storyboard seeds two creative formats via `seed_creative_format`, then asserts page 1 is non-terminal and page 2 is terminal with no stale cursor. | +| `get-media-buys-pagination-integrity` | `cursor` ↔ `has_more` invariant verified by walking a paginated `get_media_buys` response — storyboard seeds three media buys via `seed_media_buy`, then asserts page 1 is non-terminal and page 2 is terminal with no stale cursor. | +| `content-standards-pagination-integrity` | `cursor` ↔ `has_more` invariant verified by walking a paginated `list_content_standards` response — storyboard bootstraps three content standards configurations via `create_content_standards`, then asserts page 1 is non-terminal and page 2 is terminal with no stale cursor. | +| `collection-lists-pagination-integrity` | `cursor` ↔ `has_more` invariant verified by walking a paginated `list_collection_lists` response — storyboard bootstraps three collection lists via `create_collection_list`, then asserts page 1 is non-terminal and page 2 is terminal with no stale cursor. | +| `property-lists-pagination-integrity` | `cursor` ↔ `has_more` invariant verified by walking a paginated `list_property_lists` response — storyboard bootstraps three property lists via `create_property_list`, then asserts page 1 is non-terminal and page 2 is terminal with no stale cursor. | +| `deterministic-testing` | `comply_test_controller` state-machine verification — skipped if `capabilities.compliance_testing.supported: false`. | +| `signed-requests` | RFC 9421 transport-layer request-signing verification — skipped if `request_signing.supported: false`. | +| `billing-gate-dispatch` | `sync_accounts.billing` rejection dispatch — `BILLING_NOT_SUPPORTED` (capability gate, with `error.details.scope`) vs `BILLING_NOT_PERMITTED_FOR_AGENT` (per-buyer-agent commercial-relationship gate, with the clamped `rejected_billing` + `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`. | + +Capability-gated rows (`deterministic-testing`, `signed-requests`) are skipped only when the agent advertises the capability as `false`; they cannot be claimed and partially implemented. Declaring `supported: true` and failing the storyboard is non-conformant — declare `false` rather than ship a partial implementation. The `billing-gate-dispatch` rows are precondition-gated rather than capability-gated: each phase grades `not_applicable` when its precondition is not met (the seller supports all three billing values; or the test kit does not declare a passthrough-only caller). Sellers wanting full coverage of the per-agent gate SHOULD ship a test kit with `commercial_relationship: passthrough_only` declared so the per-agent phases run. + +## 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.0.13/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 | + + +Support for the [compliance test controller](/dist/docs/3.0.13/building/by-layer/L3/comply-test-controller) is declared via the `capabilities.compliance_testing` block on `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 — accepts `sync_governance`, calls `check_governance`, and propagates approvals, conditions, and denials unchanged. Optional claim; sellers that don't claim it skip the governance scenarios as not_applicable. | +| `audience-sync` | stable | Syncs buyer-provided audience segments into a platform for activation (uses `sync_audiences`, `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 | +| `signal-marketplace` | stable | Marketplace signal agent reselling third-party data | + +### 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 | + + +**Coming in 3.1.** `measurement-verification` (third-party viewability, attribution, brand-safety, and SI-outcome verification) is scheduled for 3.1 under a dedicated `measurement` protocol. + + +### 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`. 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. + +| If you… | Set | +|---|---| +| Accept RFPs, generate proposals, and finalize to committed status before IO | `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 | +| `signal-marketplace` | stable | Marketplace signal agent reselling third-party data | + +### 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 | + + +**Coming in 3.1.** `measurement-verification` (third-party viewability, attribution, brand-safety, and SI-outcome verification) is scheduled for 3.1 under a dedicated `measurement` protocol. + + +### 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` 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.0.13/media-buy/media-buys/lifecycle#compliance) for the full `impairment.coherence` contract. + +## How to claim + +Declare your protocols and specialisms in `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.0.13/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.0.13/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` 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` | — | +| `sales-social` | `channels: ['social']` | `sales_social` | — | +| `audience-sync` | `sync_audiences` tool | `audience_sync` | — | +| `property-lists` | `property_list` tools | `property_lists` | — | +| `collection-lists` | `collection_list` tools | `collection_lists` | — | +| `governance-spend-authority` | `check_governance`, `sync_plans` | `governance_spend_authority` | `governance_spend_authority/denied` | +| `creative-generative` | `build_creative` | `creative_generative` | `creative_generative/seller` | +| `brand-rights` | `get_brand_identity`, `acquire_rights` | `brand_rights` | `brand_rights/governance_denied` | + +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`, `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 agent builds the segment on demand from models, composites, or buyer-supplied inputs. Use this when no `adagents.json` authorization chain applies — the segment is agent-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.0.13/building/verification/validate-with-mock-fixtures)** for the complementary pre-staging gate. + diff --git a/dist/docs/3.0.13/building/verification/conformance.mdx b/dist/docs/3.0.13/building/verification/conformance.mdx new file mode 100644 index 0000000000..754d8f65c8 --- /dev/null +++ b/dist/docs/3.0.13/building/verification/conformance.mdx @@ -0,0 +1,225 @@ +--- +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.0.13/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.0.13/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. | +| Mixed (some tools local, some upstream) | Both, per tool. | + +Both paths earn `(Spec)` — both prove the seller's wire format matches the storyboards. The bridge is **one implementation** of the test-surface pattern, not a separate seller category. A state-local seller without wired seeds and an upstream-proxy seller without a wired bridge are in the same position: storyboards cannot run end-to-end against them. 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. + +### 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` 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.0.13/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.0.13/building/verification/compliance-catalog) for the full taxonomy and [Validate Your Agent](/dist/docs/3.0.13/building/verification/validate-your-agent) for how to run the suite locally. + +## 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`](https://adcontextprotocol.org/compliance/latest/universal/capability-discovery) | `get_adcp_capabilities` shape, protocol/specialism declarations, version advertising | +| [`schema_validation`](https://adcontextprotocol.org/compliance/latest/universal/schema-validation) | Request and response schema conformance, ISO 8601 timestamps, temporal invariants | +| [`schema_validation_signals`](https://adcontextprotocol.org/compliance/latest/universal/schema-validation-signals) | Response schema compliance for signals — required fields on every signal; gated on `get_signals` | +| [`v3_envelope_integrity`](https://adcontextprotocol.org/compliance/latest/universal/v3-envelope-integrity) | 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`](https://adcontextprotocol.org/compliance/latest/universal/error-compliance) | Structured error shape, published error codes, transport binding, no existence leaks across tenants | +| [`error_compliance_signals`](https://adcontextprotocol.org/compliance/latest/universal/error-compliance-signals) | Error handling for signals protocol — nonexistent signal IDs, missing fields, VERSION_UNSUPPORTED, transport binding; gated on `get_signals` + `activate_signal` | +| [`idempotency`](https://adcontextprotocol.org/compliance/latest/universal/idempotency) | `idempotency_key` scoping, replay semantics, `IDEMPOTENCY_CONFLICT`, `replayed: true`, declared TTL | +| [`security_baseline`](https://adcontextprotocol.org/compliance/latest/universal/security) | Unauth rejection, API key enforcement, OAuth discovery + RFC 9728 audience binding | +| [`webhook_emission`](https://adcontextprotocol.org/compliance/latest/universal/webhook-emission) | 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`. | +| [`notification_config_event_scope`](https://adcontextprotocol.org/compliance/latest/universal/notification-config-event-scope) | `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 | +| [`pagination_integrity`](https://adcontextprotocol.org/compliance/latest/universal/pagination-integrity) | `cursor` ↔ `has_more` invariant on paginated `list_creatives` responses, walked from a continuation page through to a terminal page | +| [`get_signals_pagination_integrity`](https://adcontextprotocol.org/compliance/latest/universal/get-signals-pagination-integrity) | `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`](https://adcontextprotocol.org/compliance/latest/universal/pagination-integrity-list-accounts) | `cursor` ↔ `has_more` invariant on paginated `list_accounts` responses; storyboard bootstraps three accounts via `sync_accounts` and walks from a continuation page to a terminal page | +| [`pagination_integrity_creative_formats`](https://adcontextprotocol.org/compliance/latest/universal/pagination-integrity-creative-formats) | `cursor` ↔ `has_more` invariant on paginated `list_creative_formats` responses; storyboard seeds two creative formats via `seed_creative_format` and walks from a continuation page to a terminal page | +| [`get_media_buys_pagination_integrity`](https://adcontextprotocol.org/compliance/latest/universal/get-media-buys-pagination-integrity) | `cursor` ↔ `has_more` invariant on paginated `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`](https://adcontextprotocol.org/compliance/latest/universal/content-standards-pagination-integrity) | `cursor` ↔ `has_more` invariant on paginated `list_content_standards` responses; storyboard bootstraps three content standards configurations via `create_content_standards` and walks from a continuation page to a terminal page | +| [`pagination_integrity_collection_lists`](https://adcontextprotocol.org/compliance/latest/universal/collection-lists-pagination-integrity) | `cursor` ↔ `has_more` invariant on paginated `list_collection_lists` responses; storyboard bootstraps three collection lists via `create_collection_list` and walks from a continuation page to a terminal page | +| [`pagination_integrity_property_lists`](https://adcontextprotocol.org/compliance/latest/universal/property-lists-pagination-integrity) | `cursor` ↔ `has_more` invariant on paginated `list_property_lists` responses; storyboard bootstraps three property lists via `create_property_list` and walks from a continuation page to a terminal page | +| [`deterministic_testing`](https://adcontextprotocol.org/compliance/latest/universal/deterministic-testing) | `comply_test_controller` state machine — skipped if `capabilities.compliance_testing.supported: false` | +| [`signed_requests`](https://adcontextprotocol.org/compliance/latest/universal/signed-requests) | RFC 9421 transport-layer request-signing verification — skipped if `request_signing.supported: false`. | +| [`billing_gate_dispatch`](https://adcontextprotocol.org/compliance/latest/universal/billing-gate-dispatch) | Two-gate dispatch on `sync_accounts.billing` rejection: seller-wide capability gate (`BILLING_NOT_SUPPORTED` with `error.details.scope`) vs per-buyer-agent commercial-relationship gate (`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.0.13/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.0.13/building/by-layer/L1/security#signed-requests-transport-layer); a partial verifier is non-conformant, so declare `false` rather than ship one. + +## Protocol conformance + +A `supported_protocols` claim obligates the protocol's baseline storyboard. + +| `supported_protocols` | Storyboard | +|-----------------------|------------| +| `media_buy` | [`media_buy_seller`](https://adcontextprotocol.org/compliance/latest/protocols/media-buy/) + [`media_buy_state_machine`](https://adcontextprotocol.org/compliance/latest/protocols/media-buy/state-machine) | +| `creative` | [`creative_lifecycle`](https://adcontextprotocol.org/compliance/latest/protocols/creative/) | +| `signals` | [`signals_baseline`](https://adcontextprotocol.org/compliance/latest/protocols/signals/) | +| `governance` | [`media_buy_governance_escalation`](https://adcontextprotocol.org/compliance/latest/protocols/governance/) | +| `brand` | [`brand_baseline`](https://adcontextprotocol.org/compliance/latest/protocols/brand/) | +| `sponsored_intelligence` | [`si_baseline`](https://adcontextprotocol.org/compliance/latest/protocols/sponsored-intelligence/) | + +## 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.0.13/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` 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.0.13/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` (identity) + isolation checks in protocol storyboards | Personnel access reviews, least-privilege admin, offboarding | +| Change management (SOC 2 CC8) | `idempotency` 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` responses validate. + +## How to claim conformance + +1. Declare `supported_protocols` and `specialisms` in `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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/building/cross-cutting/known-ambiguities) instead of treating the mock as authoritative. + +- **[Storyboard troubleshooting](/dist/docs/3.0.13/building/operating/storyboard-troubleshooting)** — Error pattern → root cause → fix for the most common storyboard failures +- **[Known spec ambiguities](/dist/docs/3.0.13/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.0.13/building/verification/aao-verified)** — Continuous-observability verification of the seller's live ad-server integration +- **[Compliance Catalog](/dist/docs/3.0.13/building/verification/compliance-catalog)** — Full taxonomy of protocols and specialisms with storyboard IDs +- **[Validate Your Agent](/dist/docs/3.0.13/building/verification/validate-your-agent)** — How to run the suite +- **[Security Model](/dist/docs/3.0.13/building/concepts/security-model)** — Strategic framing for the five defense layers that the security storyboards enforce +- **[Security (implementation reference)](/dist/docs/3.0.13/building/by-layer/L1/security)** — Normative rules cited by the storyboards +- **[Versioning](/dist/docs/3.0.13/reference/versioning)** — Major-version support windows +- **[Known Limitations](/dist/docs/3.0.13/reference/known-limitations)** — Visible edges of the specification diff --git a/dist/docs/3.0.13/building/verification/get-test-ready.mdx b/dist/docs/3.0.13/building/verification/get-test-ready.mdx new file mode 100644 index 0000000000..542ddaf66d --- /dev/null +++ b/dist/docs/3.0.13/building/verification/get-test-ready.mdx @@ -0,0 +1,202 @@ +--- +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.0.13/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.0.13/media-buy/advanced-topics/sandbox) (or `list_accounts`) | How to obtain a sandbox account to run tests against | Your agent's account tool | +| [`comply_test_controller`](/dist/docs/3.0.13/building/by-layer/L3/comply-test-controller) | How to seed fixtures and force seller-side transitions deterministically | 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` is how the runner picks which storyboards apply to you. It is also the [conformance](/dist/docs/3.0.13/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.0.13/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.0.13/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: + +**Implicit accounts (`require_operator_auth: false`).** Your agent accepts `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. + +**Explicit accounts (`require_operator_auth: true`).** Accounts must be pre-provisioned by a human on your side. The runner calls `list_accounts` with a sandbox filter to discover pre-existing test accounts. Publish a short note telling operators how to request one — include the contact, the expected turnaround, and what credentials they'll receive. + +Full details and examples: [Sandbox mode](/dist/docs/3.0.13/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 a first pass and for capability discovery, but [conformance](/dist/docs/3.0.13/building/verification/conformance) treats **deterministic mode** — full lifecycle walks enabled by the controller — as the bar for specialism coverage. + +`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 | Almost every storyboard — this replaces hardcoded-ID discovery | +| `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.0.13/building/by-layer/L3/comply-test-controller) for scenario-by-scenario parameters and response shapes, and the [Compliance Catalog](/dist/docs/3.0.13/building/verification/compliance-catalog) for which scenarios each specialism requires. + +### 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.0.13/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.0.13/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`.** Scenarios you do not register return `UNKNOWN_SCENARIO` automatically — never a schema error. +- **Param validation.** Invalid params produce `INVALID_PARAMS` 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` in `'INVALID_TRANSITION' | 'NOT_FOUND' | 'FORBIDDEN' | 'INVALID_PARAMS'` from any adapter. + +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` 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.0.13/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` 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` (implicit) or `list_accounts` (explicit) handles sandbox requests per step 2 +- [ ] `comply_test_controller` is absent from `tools/list` on any production endpoint +- [ ] Requests that reference a non-sandbox account are rejected with `FORBIDDEN` +- [ ] 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.0.13/building/verification/validate-your-agent)** — CLI, Addie workflows, and multi-instance verification +- **[Compliance test controller reference](/dist/docs/3.0.13/building/by-layer/L3/comply-test-controller)** — Full scenario-by-scenario spec +- **[Sandbox mode](/dist/docs/3.0.13/media-buy/advanced-topics/sandbox)** — The two account model paths in depth +- **[Conformance](/dist/docs/3.0.13/building/verification/conformance)** — What "conformant" and "verified" mean once your runs pass diff --git a/dist/docs/3.0.13/building/verification/grading.mdx b/dist/docs/3.0.13/building/verification/grading.mdx new file mode 100644 index 0000000000..a53ca2c123 --- /dev/null +++ b/dist/docs/3.0.13/building/verification/grading.mdx @@ -0,0 +1,83 @@ +--- +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.0.13/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`; 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` 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 +``` + +Reads a vector from stdin (JSON matching the test-vector schema at [`/compliance/latest/test-vectors/request-signing/`](https://adcontextprotocol.org/compliance/latest/test-vectors/request-signing/)) and reports whether your client's signature base matches the expected output. + +**When to use it:** while implementing a signing client to confirm each component rule in isolation before testing end-to-end. + +## Related + +- [Validate Your Agent](/dist/docs/3.0.13/building/verification/validate-your-agent) — storyboard-based protocol compliance testing +- [Authentication](/dist/docs/3.0.13/building/by-layer/L2/authentication) — auth model overview, bearer tokens, RFC 9421 introduction +- [Security implementation reference](/dist/docs/3.0.13/building/by-layer/L1/security#signed-requests-transport-layer) — full RFC 9421 profile, verifier checklist, key publication rules diff --git a/dist/docs/3.0.13/building/verification/how-grading-works.mdx b/dist/docs/3.0.13/building/verification/how-grading-works.mdx new file mode 100644 index 0000000000..3c838df471 --- /dev/null +++ b/dist/docs/3.0.13/building/verification/how-grading-works.mdx @@ -0,0 +1,134 @@ +--- +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.0.13/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`, 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. + +## 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 can declare a `requires_capability` block. The runner reads the named path from your `get_adcp_capabilities` response and checks it against the expected value. If the check fails (the capability is absent or false), the scenario 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` storyboard. + + +**Schema status.** `requires_capability` is not yet defined in `storyboard-schema.yaml` — runners recognise it (the TS SDK reads and enforces the block) but scenario-authoring tooling that validates against the storyboard schema will flag it as an unknown field today. Adding it to the schema is tracked separately; until then, treat `requires_capability` as a stable runner-level extension that the schema lints will catch up to. + + + +## 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 accept via `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. + + +## Grading verdicts at a glance + +| Outcome | `skip.reason` | Meaning | +|---------|---------------|---------| +| Scenario passed | — (no `skip` block) | All validations passed; `passed: true` at the step level | +| Scenario failed | — (no `skip` block) | One or more required validations failed; see `validations[]` for the failing field and `json_pointer` | +| Scenario skipped | `not_applicable` | Step was not run. Check `skip.detail` to distinguish: capability gate evaluated false, specialism not declared, or prerequisite not met | +| Required tool missing | `missing_tool` | Agent declared the specialism but did not expose a tool listed in `required_tools` | + +A run's overall compliance verdict is determined by `steps_failed`. Skipped steps (`skip` block present) do not contribute to that counter. The `skip.detail` field is the human-readable string that names the specific skip cause. + +## 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.0.13/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.0.13/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.0.13/building/verification/conformance) — the three-layer obligation model and the normative storyboard index +- [Compliance Catalog](/dist/docs/3.0.13/building/verification/compliance-catalog) — full taxonomy of protocols, specialisms, and universal storyboards +- [Validate Your Agent](/dist/docs/3.0.13/building/verification/validate-your-agent) — running the suite locally with `@adcp/client` diff --git a/dist/docs/3.0.13/building/verification/storyboards-vs-scenarios.mdx b/dist/docs/3.0.13/building/verification/storyboards-vs-scenarios.mdx new file mode 100644 index 0000000000..90141253a7 --- /dev/null +++ b/dist/docs/3.0.13/building/verification/storyboards-vs-scenarios.mdx @@ -0,0 +1,71 @@ +--- +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` 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.0.13/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` operations the runner uses to seed deterministic state + +[`conformance.mdx`](/dist/docs/3.0.13/building/verification/conformance) calls these *"the truth"* — and means it. The AdCP Verified (Spec) badge is issued by running these YAML files through [`comply()`](/dist/docs/3.0.13/building/verification/validate-your-agent) and observing every assertion pass. + +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 storyboard run ` or interactively through [Addie](https://agenticadvertising.org). + +## `comply_test_controller` scenarios (normative — but different) + +The word "scenario" also appears in the `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.0.13/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 AAO 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 storyboard list` +2. Read the YAML: `npx @adcp/sdk storyboard show ` +3. Run it: `npx @adcp/sdk 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` with a `scenario` parameter | A protocol-level test-control operation | ✅ Yes (the contract is normative; the seller MAY refuse with `UNKNOWN_SCENARIO`) +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.0.13/building/verification/validate-with-mock-fixtures.mdx b/dist/docs/3.0.13/building/verification/validate-with-mock-fixtures.mdx new file mode 100644 index 0000000000..26fc3c162c --- /dev/null +++ b/dist/docs/3.0.13/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.0.13/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/client`; 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.0.13/building/verification/validate-your-agent). + +## The four-step recipe + +```bash +# 1. Boot a mock upstream for your specialism +npx @adcp/client@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/client@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/client` (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` → 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/client`) 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 `@adcp/client` 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/client@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/client@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`, `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/client@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.0.13/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.0.13/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.0.13/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.0.13/building/by-layer/L4/build-an-agent)** — the language-agnostic guide to building an AdCP agent. +- **[Compliance catalog](/dist/docs/3.0.13/building/verification/compliance-catalog)** — the full taxonomy of universal / protocol / specialism storyboards. diff --git a/dist/docs/3.0.13/building/verification/validate-your-agent.mdx b/dist/docs/3.0.13/building/verification/validate-your-agent.mdx new file mode 100644 index 0000000000..c631469823 --- /dev/null +++ b/dist/docs/3.0.13/building/verification/validate-your-agent.mdx @@ -0,0 +1,270 @@ +--- +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.0.13/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.0.13/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.0.13/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.0.13/building/verification/compliance-catalog) | + +Declare your `supported_protocols` and `specialisms` in `get_adcp_capabilities` — the runner picks the matching storyboards automatically. See the [Compliance Catalog](/dist/docs/3.0.13/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.0.13/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 + ✓ list_creative_formats + ✓ 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. + +The storyboard runner operates in two modes depending on whether your agent implements the optional [compliance test controller](/dist/docs/3.0.13/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 | + +## 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` 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` 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`: + +```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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/building/by-layer/L3/comply-test-controller)** — Implement deterministic testing for full lifecycle coverage +- **[Task lifecycle](/dist/docs/3.0.13/building/by-layer/L3/task-lifecycle)** — Status values, transitions, and polling +- **[Error handling](/dist/docs/3.0.13/building/by-layer/L3/error-handling)** — Error categories, codes, and recovery diff --git a/dist/docs/3.0.13/community/joining-slack.mdx b/dist/docs/3.0.13/community/joining-slack.mdx new file mode 100644 index 0000000000..7ab0816eb3 --- /dev/null +++ b/dist/docs/3.0.13/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 AAO members. 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.0.13/community/working-group) — what the community works on and how to participate +- [Membership](/dist/docs/3.0.13/aao/users) — join AgenticAdvertising.org for full access (working groups, certification, Slack) diff --git a/dist/docs/3.0.13/community/working-group.mdx b/dist/docs/3.0.13/community/working-group.mdx new file mode 100644 index 0000000000..c820155443 --- /dev/null +++ b/dist/docs/3.0.13/community/working-group.mdx @@ -0,0 +1,44 @@ +--- +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](https://join.slack.com/t/agenticads/shared_invite/zt-3h15gj6c0-FRTrD_y4HqmeXDKBl2TDEA)** + +## 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! \ No newline at end of file diff --git a/dist/docs/3.0.13/contributing/storyboard-authoring.md b/dist/docs/3.0.13/contributing/storyboard-authoring.md new file mode 100644 index 0000000000..a1a5b94514 --- /dev/null +++ b/dist/docs/3.0.13/contributing/storyboard-authoring.md @@ -0,0 +1,324 @@ +--- +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/`. 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`), 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 (`list_creative_formats`, `get_adcp_capabilities`), global catalog reads (`get_brand_identity`, `get_rights`, `update_rights`), and the `comply_test_controller` sandbox primitive. + +### Why ID-scoped tasks are exempt but storyboards still carry identity + +`check_governance`, `report_plan_outcome`, `acquire_rights`, `log_event`, `calibrate_content`, `validate_content_delivery`, and `validate_property_delivery` all require a globally-unique ID (`plan_id`, `rights_id`, `standards_id`, etc.) that was previously provisioned with brand context. At the spec level, a real seller resolves the ID → tenant via their own lookup; the envelope doesn't need to repeat the identity. + +The training agent's `sessionKeyFromArgs` routes by envelope identity. A storyboard that **drops** identity on an ID-scoped task lands in `open:default` and fails to find the plan/rights/standards — so storyboards carry envelope identity anyway, and the lint just won't enforce it. + +This 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.0.13/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. Building a cross-session reverse index in the training agent just to move identity off the wire would be sandbox plumbing without spec meaning. + +## 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 product with a specific `product_id`, a creative already in `approved` status, a plan the governance flow can reference) have two ways to set it up: **declarative `fixtures:` at the storyboard root** for state that exists *before* the test runs, and **step `context_outputs:` captures** for IDs *generated during* the run. + +### When to use which + +| Fixture origin | Pattern | Authored as | +|---|---|---| +| Exists before the storyboard (needs seeding) | `fixtures:` at storyboard root | Declarative block; runner seeds via `comply_test_controller` `seed_*` | +| 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_id: { id: "video_30s" } + +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. + +See the full list of seed scenarios and their params in [Compliance test controller — Scenarios](/dist/docs/3.0.13/building/by-layer/L3/comply-test-controller#scenarios). + +### Pattern B — 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.0.13/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.0.13/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. a past `start_time` on `create_media_buy` MAY be rejected with `INVALID_REQUEST` OR accepted-and-adjusted forward. 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. + +Canonical example: `past_start_reject_path` / `past_start_adjust_path` / `past_start_enforcement` in `universal/schema-validation.yaml`. Use the same shape for any spec `MAY` / `any_of` where observable outcomes differ across branches. + +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`](../../../../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.0.13/contributing/testable-examples-demo.md b/dist/docs/3.0.13/contributing/testable-examples-demo.md new file mode 100644 index 0000000000..723eb90ddb --- /dev/null +++ b/dist/docs/3.0.13/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 + +### List Creative Formats + +```javascript +import { testAgent } from '@adcp/client/testing'; + +const result = await testAgent.listCreativeFormats({}); + +console.log(`✓ Found ${result.data?.formats?.length || 0} creative formats`); +``` + +## Python Example + +### List Creative Formats + +```python +import asyncio +from adcp.testing import test_agent + +async def list_formats(): + result = await test_agent.simple.list_creative_formats() + print(f"✓ Found {len(result.formats)} supported creative formats") + +asyncio.run(list_formats()) +``` + +## CLI Example + +### Using uvx (Python CLI) + +```bash +uvx adcp \ + https://test-agent.adcontextprotocol.org/mcp \ + list_creative_formats \ + '{}' \ + --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/client`, `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.0.13/contributing/testable-snippets.md b/dist/docs/3.0.13/contributing/testable-snippets.md new file mode 100644 index 0000000000..23f8e674ff --- /dev/null +++ b/dist/docs/3.0.13/contributing/testable-snippets.md @@ -0,0 +1,339 @@ +--- +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/client/testing'; + +const products = await testAgent.getProducts({ + brief: 'Premium athletic footwear with innovative cushioning', + brand: { + domain: 'nike.com' + } +}); + +console.log(`Found ${products.products.length} products`); +``` +```` + +### Using Test Helpers + +For simpler examples, use the built-in test helpers from client libraries: + +**JavaScript:** +```javascript +import { testAgent, testAgentNoAuth } from '@adcp/client/testing'; + +// Authenticated access +const fullCatalog = await testAgent.getProducts({ + brief: 'Premium CTV inventory' +}); + +// Unauthenticated access +const publicCatalog = await testAgentNoAuth.getProducts({ + 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( + brief='Premium CTV inventory' + ) + + # Unauthenticated access + public_catalog = await test_agent_no_auth.simple.get_products( + 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/client'; + +const client = new AdcpClient({ + agentUrl: 'https://test-agent.adcontextprotocol.org/mcp', + protocol: 'mcp', + bearerToken: 'sk_your_api_key_here' +}); + +const products = await client.getProducts({ + 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/client'; + +const client = new AdcpClient({ + agentUrl: 'https://test-agent.adcontextprotocol.org/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.js +``` + +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 + +### 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/client` 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/client' +``` + +This indicates the `@adcp/client` 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 [Slack Community](https://join.slack.com/t/agenticads/shared_invite/zt-3c5sxvdjk-x0rVmLB3OFHVUp~WutVWZg) diff --git a/dist/docs/3.0.13/contributing/x-entity-annotation.md b/dist/docs/3.0.13/contributing/x-entity-annotation.md new file mode 100644 index 0000000000..5a783cdedf --- /dev/null +++ b/dist/docs/3.0.13/contributing/x-entity-annotation.md @@ -0,0 +1,148 @@ +--- +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`, `product_pricing_option` | +| Creative | `creative`, `creative_format` | +| Data & targeting | `audience`, `signal`, `signal_activation_id`, `event_source` | +| Lists & catalogs | `collection_list`, `property_list`, `catalog`, `property` | +| Plans & governance | `media_plan`, `governance_plan`, `governance_registry_policy`, `governance_inline_policy`, `governance_check`, `content_standards`, `task` | +| Vendor services | `vendor_pricing_option` | +| 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. + +**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.0.13/creative/accessibility.mdx b/dist/docs/3.0.13/creative/accessibility.mdx new file mode 100644 index 0000000000..c77e58f645 --- /dev/null +++ b/dist/docs/3.0.13/creative/accessibility.mdx @@ -0,0 +1,201 @@ +--- +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_id": { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "display_300x250" + }, + "name": "Display Banner 300x250", + "accessibility": { + "wcag_level": "AA", + "requires_accessible_assets": true + }, + "assets": [ + { + "item_type": "individual", + "asset_id": "hero_image", + "asset_type": "image", + "required": true, + "requirements": { + "min_width": 300, + "max_width": 300, + "min_height": 250, + "max_height": 250, + "formats": ["jpg", "png", "webp"] + } + }, + { + "item_type": "individual", + "asset_id": "headline", + "asset_type": "text", + "required": true, + "requirements": { + "max_length": 90 + } + } + ] +} +``` + +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_id": { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "video_30s_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_id": { + "agent_url": "https://publisher.com", + "id": "rich_media_expandable" + }, + "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. + +### 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 can filter for accessible formats using the `wcag_level` parameter in `list_creative_formats`: + +```json +{ + "wcag_level": "AA", + "asset_types": ["image", "text"] +} +``` + +This returns formats that meet at least WCAG AA conformance and accept image and text assets. The filter uses "at least" logic: requesting `AA` returns formats with `AA` or `AAA`. + +## 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 + +## Related Documentation + +- [Creative Formats](/dist/docs/3.0.13/creative/formats) — Format structure and requirements +- [Asset Types](/dist/docs/3.0.13/creative/asset-types) — Asset specifications and payload schemas +- [Creative Manifests](/dist/docs/3.0.13/creative/creative-manifests) — Pairing assets with formats +- [list_creative_formats](/dist/docs/3.0.13/creative/task-reference/list_creative_formats) — Format discovery with filtering diff --git a/dist/docs/3.0.13/creative/ai-creative-overview.mdx b/dist/docs/3.0.13/creative/ai-creative-overview.mdx new file mode 100644 index 0000000000..c2b3044b5c --- /dev/null +++ b/dist/docs/3.0.13/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.0.13/creative) follows a strategist from brief to delivery across CTV, display, and social +- **Technical workflow** -- [Generative creative](/dist/docs/3.0.13/creative/generative-creative) walks through the API step by step +- **Library management** -- [Creative libraries and concepts](/dist/docs/3.0.13/creative/creative-libraries) covers organizing and syncing assets +- **CTV and video** -- [CTV and connected TV](/dist/docs/3.0.13/creative/channels/ctv) covers SSAI/CSAI delivery, companion ads, and VAST tags +- **Multi-agent orchestration** -- [Multi-agent creative orchestration](/dist/docs/3.0.13/creative/multi-agent-orchestration) covers distributing creatives across sellers +- **Brand safety details** -- [Sales agent creative capabilities](/dist/docs/3.0.13/creative/sales-agent-creative-capabilities) explains guardrails and inline creative management +- **Learning** -- The [certification program](/dist/docs/3.0.13/learning/overview) teaches AdCP through interactive modules with Addie diff --git a/dist/docs/3.0.13/creative/asset-types.mdx b/dist/docs/3.0.13/creative/asset-types.mdx new file mode 100644 index 0000000000..565d3b147e --- /dev/null +++ b/dist/docs/3.0.13/creative/asset-types.mdx @@ -0,0 +1,491 @@ +--- +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" +--- + + +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. + +## 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.0.13/creative/asset-types/index.json) - Links to all payload schemas +- Core Asset Schemas at `/schemas/3.0.13/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 +- `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:** +- 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 `" + } + } +} +``` + +### HTML Tag Format + +```json +{ + "format_id": { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "display_728x90_html" + }, + "type": "display", + "renders": [ + { + "role": "primary", + "dimensions": { + "width": 728, + "height": 90, + "responsive": { "width": false, "height": false } + } + } + ], + "assets": [ + { + "item_type": "individual", + "asset_id": "tag", + "asset_type": "html", + "asset_role": "third_party_tag", + "required": true, + "requirements": { + "max_file_size_kb": 200, + "sandbox": "iframe", + "external_resources_allowed": true + } + } + ] +} +``` + +HTML tag manifest: + +```json +{ + "format_id": { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "display_728x90_html" + }, + "assets": { + "tag": { + "asset_type": "html", + "content": "" + } + } +} +``` + +## HTML5 Multi-Asset Formats + +HTML5 formats specify multiple assets that the publisher's ad server assembles into an interactive creative. + +### HTML5 Banner Format + +```json +{ + "format_id": { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "display_300x250_html5" + }, + "type": "display", + "assets": [ + { + "asset_id": "background_image", + "asset_type": "image", + "asset_role": "background", + "required": true, + "requirements": { + "width": 300, + "height": 250, + "file_types": ["jpg", "png"] + } + }, + { + "asset_id": "logo", + "asset_type": "image", + "asset_role": "logo", + "required": true, + "requirements": { + "max_width": 100, + "max_height": 50, + "file_types": ["png", "svg"] + } + }, + { + "asset_id": "headline", + "asset_type": "text", + "asset_role": "headline", + "required": true, + "requirements": { + "max_length": 25 + } + }, + { + "asset_id": "cta_text", + "asset_type": "text", + "asset_role": "call_to_action", + "required": true, + "requirements": { + "max_length": 15 + } + } + ] +} +``` + +HTML5 manifest: + +```json +{ + "format_id": { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "display_300x250_html5" + }, + "assets": { + "background_image": { + "asset_type": "image", + "url": "https://cdn.brand.com/bg.jpg", + "width": 300, + "height": 250 + }, + "logo": { + "asset_type": "image", + "url": "https://cdn.brand.com/logo.png", + "width": 80, + "height": 40 + }, + "headline": { + "asset_type": "text", + "content": "Spring Sale - 50% Off" + }, + "cta_text": { + "asset_type": "text", + "content": "Shop Now" + }, + "landing_url": { + "asset_type": "url", + "url_type": "clickthrough", + "url": "https://brand.com/spring" + } + } +} +``` + +## Responsive Display Formats + +Responsive formats adapt to multiple sizes based on placement context. + +### Responsive Banner Format + +```json +{ + "format_id": { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "display_responsive" + }, + "type": "display", + "responsive": true, + "supported_sizes": ["300x250", "728x90", "320x50"], + "assets": [ + { + "asset_id": "background_image", + "asset_type": "image", + "asset_role": "background", + "required": true, + "requirements": { + "min_width": 728, + "min_height": 250, + "responsive": true, + "file_types": ["jpg", "png", "webp"] + } + }, + { + "asset_id": "logo", + "asset_type": "image", + "asset_role": "logo", + "required": true + }, + { + "asset_id": "headline", + "asset_type": "text", + "asset_role": "headline", + "required": true, + "requirements": { + "max_length": 30 + } + } + ] +} +``` + +## Rich Media Formats + +### Expandable Banner Format + +```json +{ + "format_id": { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "display_970x250_expandable" + }, + "type": "display", + "expandable": true, + "collapsed_size": "970x250", + "expanded_size": "970x600", + "assets": [ + { + "asset_id": "collapsed_creative", + "asset_type": "html", + "asset_role": "collapsed_state", + "required": true, + "requirements": { + "width": 970, + "height": 250, + "max_file_size_kb": 200 + } + }, + { + "asset_id": "expanded_creative", + "asset_type": "html", + "asset_role": "expanded_state", + "required": true, + "requirements": { + "width": 970, + "height": 600, + "max_file_size_kb": 500 + } + } + ] +} +``` + +## Display-Specific Macros + +In addition to [universal macros](/dist/docs/3.0.13/creative/universal-macros), display formats support: + +### Placement Context +- `{PLACEMENT_ID}` - IAB Global Placement ID +- `{FOLD_POSITION}` - above_fold, below_fold +- `{AD_WIDTH}` / `{AD_HEIGHT}` - Ad slot dimensions in pixels + +### Web Context +- `{DOMAIN}` - Publisher domain (e.g., "nytimes.com") +- `{PAGE_URL}` - Full page URL (URL-encoded) +- `{REFERRER}` - HTTP referrer URL +- `{KEYWORDS}` - Page keywords (comma-separated) + +### Device Context +- `{DEVICE_TYPE}` - mobile, tablet, desktop +- `{OS}` - iOS, Android, Windows, macOS +- `{USER_AGENT}` - Full user agent string + +**Example with display macros:** +``` +https://track.brand.com/imp? + buy={MEDIA_BUY_ID}& + placement={PLACEMENT_ID}& + domain={DOMAIN}& + fold={FOLD_POSITION}& + device={DEVICE_TYPE}& + cb={CACHEBUSTER} +``` + +## Common File Specifications + +### Image Requirements +- **File types**: JPG, PNG, WebP, GIF +- **Max file sizes**: + - Standard banners: 150-200KB + - Large formats (970x250): 300KB + - Animated GIFs: 500KB + - HTML5 initial load: 200KB + +### Third-Party Tag Requirements +- **HTTPS required**: All tag URLs must use secure protocol +- **Max file size**: 200KB for tag content +- **Async loading**: Tags should not block page rendering + +### Animation Specifications +For animated GIF formats: +- `animated`: true +- `animation_duration_ms`: Duration in milliseconds +- Common durations: 15000ms (15 seconds) + +## Related Documentation + +- [Universal Macros](/dist/docs/3.0.13/creative/universal-macros) - Complete macro reference +- [Creative Manifests](/dist/docs/3.0.13/creative/creative-manifests) - Manifest structure and validation +- [Asset Types](/dist/docs/3.0.13/creative/asset-types) - Image, HTML, and JavaScript asset specifications diff --git a/dist/docs/3.0.13/creative/channels/dooh.mdx b/dist/docs/3.0.13/creative/channels/dooh.mdx new file mode 100644 index 0000000000..0e0cfb67ac --- /dev/null +++ b/dist/docs/3.0.13/creative/channels/dooh.mdx @@ -0,0 +1,254 @@ +--- +title: DOOH (Digital Out-of-Home) +description: "DOOH ad formats in AdCP define digital billboard, transit screen, and venue display specifications with venue-based impression tracking." +"og:title": "AdCP — DOOH (Digital Out-of-Home)" +--- + + +This guide covers how AdCP represents Digital Out-of-Home advertising formats for digital billboards, transit screens, and venue displays. + +## DOOH Format Characteristics + +DOOH formats differ from other digital formats: +- Display on physical screens in public spaces +- Include venue context (airport, mall, highway, etc.) +- Use venue-based impression tracking instead of device identifiers +- No clickthrough URLs (use QR codes instead) +- Often display without audio + +## Standard DOOH Formats + +### Digital Billboard (Landscape) + +```json +{ + "format_id": { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "dooh_billboard_1920x1080" + }, + "type": "dooh", + "assets": [ + { + "asset_id": "billboard_image", + "asset_type": "image", + "asset_role": "hero_image", + "required": true, + "requirements": { + "width": 1920, + "height": 1080, + "file_types": ["jpg", "png"], + "max_file_size_kb": 1000 + } + }, + { + "asset_id": "impression_tracker", + "asset_type": "url", + "url_type": "tracker_pixel", + "required": true + } + ] +} +``` + +### Transit Screen (Portrait) + +```json +{ + "format_id": { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "dooh_transit_1080x1920" + }, + "type": "dooh", + "assets": [ + { + "asset_id": "screen_image", + "asset_type": "image", + "asset_role": "hero_image", + "required": true, + "requirements": { + "width": 1080, + "height": 1920, + "aspect_ratio": "9:16", + "file_types": ["jpg", "png"] + } + }, + { + "asset_id": "impression_tracker", + "asset_type": "url", + "url_type": "tracker_pixel", + "required": true + } + ] +} +``` + +### Video Billboard + +```json +{ + "format_id": { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "dooh_video_15s" + }, + "type": "dooh", + "assets": [ + { + "asset_id": "video_file", + "asset_type": "video", + "asset_role": "hero_video", + "required": true, + "requirements": { + "duration": "15s", + "width": 1920, + "height": 1080, + "format": ["MP4"], + "audio_required": false, + "max_file_size_mb": 50 + } + }, + { + "asset_id": "impression_tracker", + "asset_type": "url", + "url_type": "tracker_pixel", + "required": true + } + ] +} +``` + +## Impression Tracking for DOOH + +DOOH formats use impression trackers (often called "proof-of-play") to verify when creatives display on physical screens. These are standard URL assets with DOOH-specific macros: + +```json +{ + "asset_id": "impression_tracker", + "asset_type": "url", + "url_type": "tracker_pixel", + "required": true, + "requirements": { + "required_macros": [ + "SCREEN_ID", + "PLAY_TIMESTAMP", + "VENUE_LAT", + "VENUE_LONG" + ] + } +} +``` + +The mechanics are identical to digital impression tracking - it's just a URL that fires when the ad displays. The difference is the macros capture physical venue context instead of device identifiers. + +## Creative Manifests + +### Static Billboard Manifest + +```json +{ + "format_id": { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "dooh_billboard_1920x1080" + }, + "assets": { + "billboard_image": { + "asset_type": "image", + "url": "https://cdn.brand.com/dooh_billboard.jpg", + "width": 1920, + "height": 1080 + }, + "impression_tracker": { + "asset_type": "url", + "url_type": "tracker_pixel", + "url": "https://track.brand.com/pop?buy={MEDIA_BUY_ID}&screen={SCREEN_ID}&venue={VENUE_TYPE}&ts={PLAY_TIMESTAMP}&lat={VENUE_LAT}&long={VENUE_LONG}" + } + } +} +``` + +### Video Billboard Manifest + +```json +{ + "format_id": { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "dooh_video_15s" + }, + "assets": { + "video_file": { + "asset_type": "video", + "url": "https://cdn.brand.com/dooh_15s.mp4", + "duration": 15, + "width": 1920, + "height": 1080, + "audio": false + }, + "impression_tracker": { + "asset_type": "url", + "url_type": "tracker_pixel", + "url": "https://track.brand.com/pop?buy={MEDIA_BUY_ID}&screen={SCREEN_ID}&ts={PLAY_TIMESTAMP}" + } + } +} +``` + +## DOOH-Specific Macros + +In addition to [universal macros](/dist/docs/3.0.13/creative/universal-macros), DOOH formats support: + +### Venue Information +- `{SCREEN_ID}` - Unique screen identifier +- `{VENUE_TYPE}` - airport, mall, transit, highway, retail +- `{VENUE_NAME}` - Specific venue name +- `{VENUE_LAT}` / `{VENUE_LONG}` - GPS coordinates + +### Play Information +- `{PLAY_TIMESTAMP}` - When creative displayed (Unix timestamp) +- `{DWELL_TIME}` - Average dwell time at this location (seconds) +- `{LOOP_LENGTH}` - Total ad rotation duration (seconds) + +**Example impression tracking URL:** +``` +https://track.brand.com/imp? + buy={MEDIA_BUY_ID}& + screen={SCREEN_ID}& + venue={VENUE_TYPE}& + venue_name={VENUE_NAME}& + ts={PLAY_TIMESTAMP}& + lat={VENUE_LAT}& + long={VENUE_LONG}& + dwell={DWELL_TIME} +``` + +## Common Aspect Ratios + +- **16:9** (1920x1080) - Landscape billboards and highway screens +- **9:16** (1080x1920) - Portrait transit and retail displays +- **1:1** (1080x1080) - Square formats + +## Impression Verification + +DOOH impression trackers confirm: +- Creative actually displayed on physical screen +- Exact timestamp of display +- Specific screen location and venue context + +**Example impression data captured:** +```json +{ + "media_buy_id": "mb_dooh_q1", + "screen_id": "LAX_T1_GATE24", + "venue_type": "airport", + "venue_lat": "33.9416", + "venue_long": "-118.4085", + "play_timestamp": "1704067200", + "dwell_time_seconds": "45" +} +``` + +This is functionally identical to impression tracking in other channels - the URL fires when the ad displays, providing verification for billing and reporting. + +## Related Documentation + +- [Universal Macros](/dist/docs/3.0.13/creative/universal-macros) - Complete macro reference including DOOH macros +- [Creative Manifests](/dist/docs/3.0.13/creative/creative-manifests) - Manifest structure and examples +- [Asset Types](/dist/docs/3.0.13/creative/asset-types) - URL asset specifications diff --git a/dist/docs/3.0.13/creative/channels/print.mdx b/dist/docs/3.0.13/creative/channels/print.mdx new file mode 100644 index 0000000000..d28a82d0fd --- /dev/null +++ b/dist/docs/3.0.13/creative/channels/print.mdx @@ -0,0 +1,436 @@ +--- +title: Print Ads +description: "Print ad formats in AdCP cover newspaper, magazine, and trade publication advertising with physical dimensions, bleed, DPI, and CMYK color space requirements." +"og:title": "AdCP — Print Ads" +--- + +This guide covers how AdCP represents print advertising formats for newspapers, magazines, inserts, and trade publications. + +## How print works in AdCP + +Print uses the same building blocks as every other channel: + +- **Collections** model publications (Vogue, Bergedorfer Zeitung, Ad Age) +- **Installments** model issues (March 2026 issue, Issue #47) +- **Installment deadlines** carry booking, cancellation, and material due dates +- **Creative formats** define physical dimensions, bleed, DPI, and file requirements +- **Placements** define positions (full page, half page, island, inside front cover) + +No print-specific schemas are needed. The standard product model handles print when sellers declare physical units in their formats and deadlines on their installments. + +## Print format characteristics + +Print formats differ from digital in several ways: + +- **Physical units** — dimensions in inches or centimeters, not pixels +- **DPI requirements** — minimum 300 DPI for standard print, 150 DPI for newspaper +- **Bleed** — extra image area beyond the trim that prevents white edges after cutting +- **Color space** — CMYK for full-color print, grayscale for B&W +- **File formats** — press-ready PDF, TIFF, or EPS instead of JPG/PNG + +## Standard print formats + +### Full page (magazine) + +```json +{ + "format_id": { + "agent_url": "https://ads.publisher.example.com", + "id": "full_page" + }, + "name": "Full Page", + "renders": [{ + "role": "primary", + "dimensions": { + "width": 8.375, + "height": 10.875, + "unit": "inches" + } + }], + "assets": [ + { + "item_type": "individual", + "asset_id": "artwork", + "asset_type": "image", + "asset_role": "print_artwork", + "required": true, + "requirements": { + "min_width": 8.375, + "max_width": 8.375, + "min_height": 10.875, + "max_height": 10.875, + "unit": "inches", + "min_dpi": 300, + "bleed": { "uniform": 0.125 }, + "color_space": "cmyk", + "formats": ["pdf", "tiff", "eps"] + }, + "overlays": [ + { "id": "safe_left", "description": "Left trim margin — keep headlines, logos, and CTAs inside", "bounds": { "x": 0, "y": 0, "width": 0.25, "height": 10.875, "unit": "inches" } }, + { "id": "safe_right", "description": "Right trim margin", "bounds": { "x": 8.125, "y": 0, "width": 0.25, "height": 10.875, "unit": "inches" } }, + { "id": "safe_top", "description": "Top trim margin", "bounds": { "x": 0, "y": 0, "width": 8.375, "height": 0.25, "unit": "inches" } }, + { "id": "safe_bottom", "description": "Bottom trim margin", "bounds": { "x": 0, "y": 10.625, "width": 8.375, "height": 0.25, "unit": "inches" } } + ] + } + ] +} +``` + +### Half page portrait (newspaper) + +```json +{ + "format_id": { + "agent_url": "https://ads.publisher.example.com", + "id": "half_page_portrait" + }, + "name": "1/2 Seite Hochformat", + "renders": [{ + "role": "primary", + "dimensions": { + "width": 130, + "height": 185, + "unit": "mm" + } + }], + "assets": [ + { + "item_type": "individual", + "asset_id": "artwork", + "asset_type": "image", + "asset_role": "print_artwork", + "required": true, + "requirements": { + "min_width": 130, + "max_width": 130, + "min_height": 185, + "max_height": 185, + "unit": "mm", + "min_dpi": 150, + "bleed": { "uniform": 3 }, + "color_space": "cmyk", + "formats": ["pdf", "tiff"] + } + } + ] +} +``` + +### Insert/supplement + +Multi-page inserts use a repeatable group for pages: + +```json +{ + "format_id": { + "agent_url": "https://ads.publisher.example.com", + "id": "insert_4page" + }, + "name": "4-Page Insert", + "renders": [{ + "role": "primary", + "dimensions": { + "width": 8.375, + "height": 10.875, + "unit": "inches" + } + }], + "assets": [ + { + "item_type": "repeatable_group", + "asset_group_id": "pages", + "required": true, + "min_count": 4, + "max_count": 4, + "selection_mode": "sequential", + "assets": [ + { + "asset_id": "page", + "asset_type": "image", + "asset_role": "insert_page", + "required": true, + "requirements": { + "min_width": 8.375, + "max_width": 8.375, + "min_height": 10.875, + "max_height": 10.875, + "unit": "inches", + "min_dpi": 300, + "bleed": { "uniform": 0.125 }, + "color_space": "cmyk", + "formats": ["pdf"] + } + } + ] + } + ] +} +``` + +## Publications and issues + +A publication maps to a [collection](/dist/docs/3.0.13/media-buy/product-discovery/collections-and-installments). Each issue maps to an installment with deadlines. + +### The publication (collection) + +```json +{ + "collection_id": "bergedorfer_zeitung", + "name": "Bergedorfer Zeitung", + "kind": "publication", + "description": "Regional daily newspaper for Hamburg-Bergedorf", + "genre": ["IAB12"], + "genre_taxonomy": "iab_content_3.0", + "language": "de", + "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 + } +} +``` + +With `deadline_policy`, the collection declares lead-time rules once. Agents compute absolute deadlines from each installment's `scheduled_at`. A daily newspaper no longer needs to enumerate deadlines for every issue — the policy covers the common case, and individual installments can override when needed (e.g., holiday editions with earlier deadlines). + +### An issue (installment with deadlines) + +```json +{ + "installment_id": "2026-03-28", + "name": "Freitag, 28. März 2026", + "scheduled_at": "2026-03-28T05:00:00+01:00", + "status": "scheduled", + "deadlines": { + "booking_deadline": "2026-03-24T17:00:00+01:00", + "cancellation_deadline": "2026-03-25T12:00:00+01:00", + "material_deadlines": [ + { + "stage": "draft", + "due_at": "2026-03-25T17:00:00+01:00", + "label": "Entwurf zur Prüfung" + }, + { + "stage": "final", + "due_at": "2026-03-26T17:00:00+01:00", + "label": "Druckfertige PDF mit Beschnitt (3mm)" + } + ] + } +} +``` + +For a monthly magazine with longer lead times: + +```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" + } + ] + } +} +``` + +## Complete product example + +A regional newspaper selling print ad inventory across upcoming issues: + +```json +{ + "products": [ + { + "product_id": "bz_display_april", + "name": "Bergedorfer Zeitung — Display Ads, April 2026", + "channels": ["print"], + "collections": [{ + "publisher_domain": "bergedorfer-zeitung.de", + "collection_ids": ["bergedorfer_zeitung"] + }], + "publisher_properties": [{ + "publisher_domain": "bergedorfer-zeitung.de", + "selection_type": "all" + }], + "installments": [ + { + "installment_id": "2026-04-01", + "name": "Mittwoch, 1. April 2026", + "scheduled_at": "2026-04-01T05:00:00+02:00", + "status": "scheduled", + "deadlines": { + "booking_deadline": "2026-03-26T17:00:00+01:00", + "cancellation_deadline": "2026-03-27T12:00:00+01:00", + "material_deadlines": [ + { "stage": "final", "due_at": "2026-03-28T17:00:00+01:00", "label": "Druckfertige PDF" } + ] + } + }, + { + "installment_id": "2026-04-02", + "name": "Donnerstag, 2. April 2026", + "scheduled_at": "2026-04-02T05:00:00+02:00", + "status": "scheduled", + "deadlines": { + "booking_deadline": "2026-03-27T17:00:00+01:00", + "cancellation_deadline": "2026-03-28T12:00:00+01:00", + "material_deadlines": [ + { "stage": "final", "due_at": "2026-03-29T17:00:00+01:00", "label": "Druckfertige PDF" } + ] + } + } + ], + "placements": [ + { "placement_id": "full_page", "name": "Ganze Seite" }, + { "placement_id": "half_page", "name": "1/2 Seite" }, + { "placement_id": "quarter_page", "name": "1/4 Seite" } + ], + "format_ids": [ + { "agent_url": "https://ads.bergedorfer-zeitung.de", "id": "full_page" }, + { "agent_url": "https://ads.bergedorfer-zeitung.de", "id": "half_page_portrait" }, + { "agent_url": "https://ads.bergedorfer-zeitung.de", "id": "quarter_page" } + ], + "delivery_type": "guaranteed", + "delivery_measurement": { + "provider": "IVW (Informationsgemeinschaft zur Feststellung der Verbreitung von Werbeträgern)", + "notes": "Verified circulation figures, updated quarterly" + }, + "pricing_options": [ + { + "pricing_option_id": "full_page_rate", + "pricing_model": "flat_rate", + "fixed_price": 2400, + "currency": "EUR" + }, + { + "pricing_option_id": "half_page_rate", + "pricing_model": "flat_rate", + "fixed_price": 1350, + "currency": "EUR" + } + ] + } + ] +} +``` + +## Print-specific image requirements + +### Physical dimensions + +Print formats declare dimensions in physical units (`inches` or `cm`) instead of pixels. The `unit` field on both format renders and image asset requirements controls interpretation: + +```json +{ + "dimensions": { + "width": 8.375, + "height": 10.875, + "unit": "inches" + } +} +``` + +When `unit` is absent, dimensions default to pixels (backward compatible with digital formats). + +### Bleed + +Bleed is the extra image area beyond the trim size. After printing, the page is cut to the trim dimensions — bleed ensures ink coverage extends to the edge with no white border. + +Bleed can be specified per-side or uniformly: + +```json +"bleed": { "uniform": 0.125 } +``` + +```json +"bleed": { "top": 0.125, "right": 0.125, "bottom": 0.25, "left": 0.125 } +``` + +Values use the same unit as the parent dimensions. + +### Calculating total image dimensions + +For a full-page magazine ad at 8.375 x 10.875 inches with 0.125" uniform bleed at 300 DPI: + +1. **Total physical size**: (8.375 + 0.125 + 0.125) x (10.875 + 0.125 + 0.125) = 8.625 x 11.125 inches +2. **Pixel dimensions**: 8.625 x 300 = 2588 pixels wide, 11.125 x 300 = 3338 pixels tall +3. **Submitted image**: 2588 x 3338 px, CMYK, PDF or TIFF + +For a European newspaper at 130 x 185 mm with 3 mm uniform bleed at 150 DPI: + +1. **Total physical size**: (130 + 3 + 3) x (185 + 3 + 3) = 136 x 191 mm +2. **Convert to inches**: 136 / 25.4 = 5.354", 191 / 25.4 = 7.520" +3. **Pixel dimensions**: 5.354 x 150 = 803 px wide, 7.520 x 150 = 1128 px tall + +### DPI + +`min_dpi` specifies the minimum dots per inch for acceptable print quality: + +| Use case | Typical min_dpi | +|----------|----------------| +| Magazine (coated stock) | 300 | +| Newspaper (uncoated) | 150 | +| Large format / billboard | 72-150 | + +### Color space + +Print production requires CMYK color separation. Digital images in RGB must be converted before press. The `color_space` field declares what the publisher accepts: + +- `cmyk` — standard for offset and digital print +- `rgb` — accepted when the publisher handles conversion +- `grayscale` — for black-and-white placements + +### File formats + +| Format | Use case | +|--------|----------| +| `pdf` | Press-ready composite (PDF/X-4 recommended) | +| `tiff` | Rasterized artwork, lossless | +| `eps` | Vector artwork with embedded fonts | + +### Safe area (trim margins) + +Print production trims pages to their final size, and the cut can shift slightly. Critical content (headlines, logos, CTAs) placed too close to the trim edge risks being cut off. + +Publishers declare trim margins using the standard [overlay](/dist/docs/3.0.13/creative/formats#overlays) pattern — the same mechanism used for CTV player controls and DOOH bezels. Each overlay marks a zone where creative agents should avoid placing important content: + +```json +"overlays": [ + { "id": "safe_left", "description": "Left trim margin", "bounds": { "x": 0, "y": 0, "width": 6, "height": 185, "unit": "mm" } }, + { "id": "safe_right", "bounds": { "x": 124, "y": 0, "width": 6, "height": 185, "unit": "mm" } }, + { "id": "safe_top", "bounds": { "x": 0, "y": 0, "width": 130, "height": 6, "unit": "mm" } }, + { "id": "safe_bottom", "bounds": { "x": 0, "y": 179, "width": 130, "height": 6, "unit": "mm" } } +] +``` + +A 6mm margin is standard for European newspaper production. Overlay bounds support physical units (`mm`, `cm`, `inches`) alongside `px` and `fraction`, so publishers can express safe areas in whichever unit their prepress workflow uses. + +## Deadlines beyond print + +Installment deadlines are not print-specific. Any channel with advance material requirements uses the same pattern. See [collections and installments](/dist/docs/3.0.13/media-buy/product-discovery/collections-and-installments) for deadlines on podcasts, influencer host reads, and live events. + +## Related documentation + +- [Collections and installments](/dist/docs/3.0.13/media-buy/product-discovery/collections-and-installments) — the collection/installment model and deadlines +- [Creative formats](/dist/docs/3.0.13/creative/formats) — format structure and asset discovery +- [Media channel taxonomy](/dist/docs/3.0.13/reference/media-channel-taxonomy) — all 20 channels including print diff --git a/dist/docs/3.0.13/creative/channels/social-native.mdx b/dist/docs/3.0.13/creative/channels/social-native.mdx new file mode 100644 index 0000000000..57aebc8856 --- /dev/null +++ b/dist/docs/3.0.13/creative/channels/social-native.mdx @@ -0,0 +1,184 @@ +--- +title: Social and feed-native +description: "Social and feed-native ad formats in AdCP define buyer-provided assets that platforms wrap in their own UI as promoted posts and sponsored content." +"og:title": "AdCP — Social and feed-native" +--- + +This guide covers how AdCP represents advertising that renders as native content within a platform's feed — promoted posts, sponsored listings, boosted content, and other formats where the platform wraps buyer assets in its own chrome. + +Feed-native ads differ from standard display in a fundamental way: the buyer provides content assets (text, images, links), but the platform controls the visual presentation. The ad inherits the platform's UI — avatar, engagement buttons, community badges, dark mode — and appears alongside organic content. + +## How feed-native formats work in AdCP + +A platform that hosts feed-native ads implements a creative agent with formats that define buyer-provided assets only. The platform handles rendering at preview and serve time, wrapping the buyer's content in its UI. + +### Format definition + +The format specifies what the buyer provides. Everything else — layout, typography, engagement UI — is the platform's responsibility: + +```json +{ + "format_id": { + "agent_url": "https://ads.socialplatform.example", + "id": "promoted_post" + }, + "name": "Promoted post", + "type": "native", + "description": "Sponsored content that appears in the feed alongside organic posts. Renders with platform chrome (user avatar, engagement buttons, community badge).", + "assets": [ + { + "item_type": "individual", + "asset_id": "headline", + "asset_type": "text", + "required": true, + "requirements": { "max_length": 300 } + }, + { + "item_type": "individual", + "asset_id": "body", + "asset_type": "text", + "required": false, + "requirements": { "max_length": 1000 } + }, + { + "item_type": "individual", + "asset_id": "image", + "asset_type": "image", + "required": false, + "requirements": { "max_width": 1200, "max_height": 628, "accepted_types": ["image/jpeg", "image/png"] } + }, + { + "item_type": "individual", + "asset_id": "click_url", + "asset_type": "url", + "required": true, + "requirements": {} + } + ] +} +``` + +The `renders` array is optional for feed-native formats because the platform determines the visual dimensions at render time based on device, feed context, and layout rules. + +### Preview with platform chrome + +When a buyer calls `preview_creative`, the platform renders a preview that includes the full feed experience — not just the buyer's assets in isolation: + +```json +{ + "request_type": "single", + "creative_manifest": { + "format_id": { + "agent_url": "https://ads.socialplatform.example", + "id": "promoted_post" + }, + "assets": { + "headline": { "content": "Introducing our new trail running collection" }, + "body": { "content": "Built for the mountains. Tested on every terrain." }, + "image": { "url": "https://cdn.acme-example.com/trail-hero.jpg", "width": 1200, "height": 628 }, + "click_url": { "url": "https://acme-example.com/trail-running" } + } + }, + "inputs": [ + { "name": "Running community", "context_description": "Appears in r/trailrunning feed between user posts" }, + { "name": "General feed", "context_description": "Appears in home feed between mixed content" } + ] +} +``` + +The `inputs` let the buyer see how the ad looks in different community contexts — the platform's rendering may change based on community theme, content density, or feed position. + +## Community guidelines and creative review + +Social platforms enforce content policies beyond standard ad policy — community standards, category restrictions, and promoted content guidelines. These are surfaced through the standard creative review flow: + +- `rejection_reason` in `list_creatives` or `get_media_buys` explains which policy was violated +- Community-specific rejections reference the community's rules, not just the platform's global policy +- Re-submission after fixing the issue follows the same `sync_creatives` upsert pattern + +See [Creative review](/dist/docs/3.0.13/creative/sales-agent-creative-capabilities#creative-review) for the full review flow. + +## Engagement and interaction models + +Feed-native formats often support platform-specific interactions that go beyond click-through: + +| Interaction | How it maps to AdCP | +|---|---| +| Like / upvote / reaction | Platform-tracked engagement, not an AdCP creative asset | +| Comment / reply | Platform-managed, may appear in `get_creative_delivery` variant data | +| Share / repost | Platform-tracked, included in delivery metrics | +| Save / bookmark | Platform-tracked | +| Click-through | Standard `click_url` asset | +| Poll / quiz | Additional format assets (e.g., `poll_options` text array) | + +Platforms that expose engagement metrics include them in `get_creative_delivery` via the `ext` field on each variant, since engagement types vary by platform. + +## Carousel and multi-card formats + +Many social platforms support carousel or multi-card promoted posts. These use the `asset_group` pattern: + +```json +{ + "format_id": { + "agent_url": "https://ads.socialplatform.example", + "id": "promoted_carousel" + }, + "name": "Promoted carousel", + "type": "native", + "description": "Multi-card swipeable promoted content with 2-10 cards.", + "assets": [ + { + "item_type": "group", + "asset_id": "cards", + "min_items": 2, + "max_items": 10, + "assets": [ + { + "item_type": "individual", + "asset_id": "card_image", + "asset_type": "image", + "required": true, + "requirements": { "min_width": 600, "min_height": 600, "aspect_ratio": "1:1" } + }, + { + "item_type": "individual", + "asset_id": "card_headline", + "asset_type": "text", + "required": true, + "requirements": { "max_length": 100 } + }, + { + "item_type": "individual", + "asset_id": "card_click_url", + "asset_type": "url", + "required": true + } + ] + }, + { + "item_type": "individual", + "asset_id": "headline", + "asset_type": "text", + "required": true, + "requirements": { "max_length": 300 } + } + ] +} +``` + +See [Carousels](/dist/docs/3.0.13/creative/channels/carousels) for carousel-specific guidance on card ordering, aspect ratios, and swipe behavior. + +## Generative feed-native + +Platforms with AI-powered ad generation can offer generative feed-native formats. The buyer provides a brief, and the platform generates feed-native content that matches the community's voice and visual style. + +This follows the [brief-in-media-buy](/dist/docs/3.0.13/creative/generative-creative#seller-side-generation-brief-in-media-buy) pattern. The key difference from standard generative creative: the platform has deep context about its community (trending topics, content style, audience behavior) that informs generation. A generative feed-native ad on a cooking community looks and sounds different from the same brief on a tech community. + +Preview with `context_description` inputs to see how the platform adapts the brief to different community contexts before launch. + +## Related documentation + +- [Implementing creative agents — Pattern 4: feed-native](/dist/docs/3.0.13/creative/implementing-creative-agents#pattern-4-feed-nativesocial-format-agent) — Implementation guide for feed-native format agents +- [Carousels](/dist/docs/3.0.13/creative/channels/carousels) — Multi-card format specifications +- [Creative review](/dist/docs/3.0.13/creative/sales-agent-creative-capabilities#creative-review) — Approval flow including community guidelines +- [Generative creative](/dist/docs/3.0.13/creative/generative-creative) — AI-powered creative generation workflows diff --git a/dist/docs/3.0.13/creative/channels/video.mdx b/dist/docs/3.0.13/creative/channels/video.mdx new file mode 100644 index 0000000000..023bfcdf4c --- /dev/null +++ b/dist/docs/3.0.13/creative/channels/video.mdx @@ -0,0 +1,887 @@ +--- +title: Video Ads +description: "Video ad formats in AdCP cover hosted files, VAST tags, inline XML, and multi-resolution encoding for pre-roll, mid-roll, and post-roll ads." +"og:title": "AdCP — Video Ads" +--- + + +This guide covers how AdCP represents video advertising formats for online video, CTV, and streaming platforms. + +## Video Format Characteristics + +Video formats include: +- **Hosted Video** - Direct video file URLs served by publisher ad servers +- **VAST Tags** - Third-party ad server URLs returning VAST/VPAID XML +- **Inline VAST XML** - Complete VAST XML provided in creative manifest +- **Multiple Resolutions** - Same creative in different encoding profiles + +Video ads play before (pre-roll), during (mid-roll), or after (post-roll) video content, or in-feed as out-stream video. + +## Standard Video Formats + +### Horizontal Video by Duration + +#### 15-Second Video +```json +{ + "$schema": "/schemas/3.0.13/core/format.json", + "format_id": { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "video_15s" + }, + "name": "Standard Video - 15 seconds", + "type": "video", + "assets": [ + { + "asset_id": "video_file", + "asset_type": "video", + "asset_role": "hero_video", + "item_type": "individual", + "required": true, + "requirements": { + "min_duration_ms": 15000, + "max_duration_ms": 15000, + "containers": ["mp4"], + "codecs": ["h264"], + "min_width": 1280, + "max_width": 1920, + "min_height": 720, + "max_height": 1080, + "max_file_size_kb": 30720, + "min_bitrate_kbps": 4000, + "max_bitrate_kbps": 10000, + "audio_codecs": ["aac"] + } + } + ] +} +``` + +#### 30-Second Video +```json +{ + "$schema": "/schemas/3.0.13/core/format.json", + "format_id": { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "video_30s" + }, + "name": "Standard Video - 30 seconds", + "type": "video", + "assets": [ + { + "asset_id": "video_file", + "asset_type": "video", + "asset_role": "hero_video", + "item_type": "individual", + "required": true, + "requirements": { + "min_duration_ms": 30000, + "max_duration_ms": 30000, + "containers": ["mp4"], + "codecs": ["h264"], + "min_width": 1280, + "max_width": 1920, + "min_height": 720, + "max_height": 1080, + "max_file_size_kb": 51200, + "min_bitrate_kbps": 4000, + "max_bitrate_kbps": 10000, + "audio_codecs": ["aac"] + } + } + ] +} +``` + +#### 6-Second Bumper +```json +{ + "$schema": "/schemas/3.0.13/core/format.json", + "format_id": { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "video_6s" + }, + "name": "6-Second Bumper", + "type": "video", + "assets": [ + { + "asset_id": "video_file", + "asset_type": "video", + "asset_role": "hero_video", + "item_type": "individual", + "required": true, + "requirements": { + "min_duration_ms": 6000, + "max_duration_ms": 6000, + "containers": ["mp4"], + "codecs": ["h264"], + "min_width": 1280, + "max_width": 1920, + "min_height": 720, + "max_height": 1080, + "max_file_size_kb": 15360, + "min_bitrate_kbps": 4000, + "max_bitrate_kbps": 10000 + } + } + ] +} +``` + +### Vertical/Mobile Video + +```json +{ + "$schema": "/schemas/3.0.13/core/format.json", + "format_id": { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "video_vertical_15s" + }, + "name": "Vertical Video - 15 seconds", + "type": "video", + "assets": [ + { + "asset_id": "video_file", + "asset_type": "video", + "asset_role": "hero_video", + "item_type": "individual", + "required": true, + "requirements": { + "min_duration_ms": 15000, + "max_duration_ms": 15000, + "aspect_ratio": "9:16", + "min_width": 1080, + "max_width": 1080, + "min_height": 1920, + "max_height": 1920, + "containers": ["mp4"], + "codecs": ["h264"], + "max_file_size_kb": 30720 + } + } + ] +} +``` + +### CTV/OTT Video + +CTV platforms have strict technical requirements that differ significantly from web video. Creative agents must produce assets that precisely match these specifications to avoid rejection. + +#### Standard CTV Video (30s) + +This format represents common CTV requirements across most platforms: + +```json +{ + "$schema": "/schemas/3.0.13/core/format.json", + "format_id": { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "video_30s_ctv" + }, + "name": "CTV Video - 30 seconds", + "type": "video", + "assets": [ + { + "asset_id": "video_file", + "asset_type": "video", + "asset_role": "hero_video", + "item_type": "individual", + "required": true, + "requirements": { + "min_duration_ms": 30000, + "max_duration_ms": 30000, + "containers": ["mp4", "mov"], + "codecs": ["h264"], + "min_width": 1920, + "max_width": 1920, + "min_height": 1080, + "max_height": 1080, + "aspect_ratio": "16:9", + "min_bitrate_kbps": 6000, + "max_bitrate_kbps": 15000, + "max_file_size_kb": 512000, + "frame_rates": [23.976, 24, 25, 29.97, 30, 59.94, 60], + "frame_rate_type": "constant", + "scan_type": "progressive", + "color_space": "rec709", + "hdr_format": "sdr", + "chroma_subsampling": ["4:2:0"], + "video_bit_depth": [8], + "min_gop_interval_seconds": 1, + "max_gop_interval_seconds": 2, + "gop_type": "closed", + "moov_atom_position": "start", + "audio_required": true, + "audio_codecs": ["aac", "pcm"], + "audio_sample_rates": [48000], + "audio_channels": ["stereo"], + "audio_bit_depth": [16, 24], + "audio_bitrate_kbps_min": 192, + "loudness_lufs": -24, + "loudness_tolerance_db": 2, + "true_peak_dbfs": -2 + } + } + ] +} +``` + +#### Platform-Specific CTV Examples + +Different CTV platforms have varying requirements. Sales agents should define formats matching their specific platform needs. + +**Roku-Compliant Format:** +```json +{ + "$schema": "/schemas/3.0.13/core/format.json", + "format_id": { + "agent_url": "https://sales.example.com", + "id": "video_30s_roku" + }, + "name": "Roku CTV - 30 seconds", + "type": "video", + "assets": [ + { + "asset_id": "video_file", + "asset_type": "video", + "item_type": "individual", + "required": true, + "requirements": { + "min_duration_ms": 30000, + "max_duration_ms": 30000, + "containers": ["mp4", "mov"], + "codecs": ["h264", "prores"], + "min_width": 1920, + "max_width": 1920, + "min_height": 1080, + "max_height": 1080, + "min_bitrate_kbps": 6000, + "frame_rates": [23.976, 25, 29.97], + "frame_rate_type": "constant", + "scan_type": "progressive", + "audio_codecs": ["pcm", "aac"], + "audio_sample_rates": [48000], + "audio_channels": ["stereo"], + "audio_bit_depth": [16, 24], + "audio_bitrate_kbps_min": 192, + "loudness_lufs": -23, + "loudness_tolerance_db": 2 + } + } + ] +} +``` + +**Hulu-Compliant Format:** +```json +{ + "$schema": "/schemas/3.0.13/core/format.json", + "format_id": { + "agent_url": "https://sales.example.com", + "id": "video_30s_hulu" + }, + "name": "Hulu CTV - 30 seconds", + "type": "video", + "assets": [ + { + "asset_id": "video_file", + "asset_type": "video", + "item_type": "individual", + "required": true, + "requirements": { + "min_duration_ms": 30000, + "max_duration_ms": 30000, + "containers": ["mp4", "mov"], + "codecs": ["h264", "prores"], + "min_width": 1280, + "max_width": 1920, + "min_height": 720, + "max_height": 1080, + "min_bitrate_kbps": 10000, + "max_bitrate_kbps": 40000, + "max_file_size_kb": 10485760, + "frame_rates": [23.976, 24, 25, 29.97, 30], + "frame_rate_type": "constant", + "scan_type": "progressive", + "chroma_subsampling": ["4:2:0", "4:2:2"], + "audio_codecs": ["pcm", "aac"], + "audio_sample_rates": [48000], + "audio_channels": ["stereo"], + "audio_bit_depth": [16, 24], + "audio_bitrate_kbps_min": 192, + "audio_bitrate_kbps_max": 256, + "loudness_lufs": -24, + "loudness_tolerance_db": 2 + } + } + ] +} +``` + +**YouTube CTV Format:** +```json +{ + "$schema": "/schemas/3.0.13/core/format.json", + "format_id": { + "agent_url": "https://sales.example.com", + "id": "video_30s_youtube_ctv" + }, + "name": "YouTube CTV - 30 seconds", + "type": "video", + "assets": [ + { + "asset_id": "video_file", + "asset_type": "video", + "item_type": "individual", + "required": true, + "requirements": { + "min_duration_ms": 30000, + "max_duration_ms": 30000, + "containers": ["mp4"], + "codecs": ["h264"], + "min_width": 1280, + "max_width": 1920, + "min_height": 720, + "max_height": 1080, + "frame_rates": [24, 25, 30, 48, 50, 60], + "scan_type": "progressive", + "moov_atom_position": "start", + "audio_codecs": ["aac"], + "audio_sample_rates": [48000], + "audio_channels": ["stereo"], + "audio_bitrate_kbps_min": 128, + "loudness_lufs": -14 + } + } + ] +} +``` + +#### SSAI-Ready CTV Format + +For server-side ad insertion (SSAI) compatibility, GOP structure is critical: + +```json +{ + "$schema": "/schemas/3.0.13/core/format.json", + "format_id": { + "agent_url": "https://sales.example.com", + "id": "video_30s_ssai" + }, + "name": "SSAI Video - 30 seconds", + "type": "video", + "assets": [ + { + "asset_id": "video_file", + "asset_type": "video", + "item_type": "individual", + "required": true, + "requirements": { + "min_duration_ms": 30000, + "max_duration_ms": 30000, + "containers": ["mp4"], + "codecs": ["h264"], + "min_width": 1920, + "max_width": 1920, + "min_height": 1080, + "max_height": 1080, + "min_bitrate_kbps": 15000, + "frame_rates": [29.97, 30], + "frame_rate_type": "constant", + "scan_type": "progressive", + "min_gop_interval_seconds": 1, + "max_gop_interval_seconds": 2, + "gop_type": "closed", + "moov_atom_position": "start", + "audio_required": true, + "audio_codecs": ["aac"], + "audio_sample_rates": [48000], + "audio_channels": ["stereo"] + } + } + ] +} +``` + +### VAST Tag Formats + +For third-party ad servers: + +```json +{ + "$schema": "/schemas/3.0.13/core/format.json", + "format_id": { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "video_30s_vast" + }, + "name": "VAST Tag - 30 seconds", + "type": "video", + "assets": [ + { + "asset_id": "vast_tag", + "asset_type": "url", + "asset_role": "vast_url", + "item_type": "individual", + "required": true, + "requirements": { + "vast_version": ["3.0", "4.0", "4.1", "4.2"] + } + } + ] +} +``` + +### VPAID Interactive Video + +```json +{ + "$schema": "/schemas/3.0.13/core/format.json", + "format_id": { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "video_30s_vpaid" + }, + "name": "VPAID Interactive - 30 seconds", + "type": "video", + "assets": [ + { + "asset_id": "vpaid_tag", + "asset_type": "url", + "asset_role": "vpaid_url", + "item_type": "individual", + "required": true, + "requirements": { + "vpaid_version": ["2.0"], + "api_framework": "VPAID" + } + } + ] +} +``` + +## Creative Manifests + +### Hosted Video Manifest + +```json +{ + "$schema": "/schemas/3.0.13/core/creative-manifest.json", + "format_id": { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "video_30s" + }, + "assets": { + "video_file": { + "asset_type": "video", + "url": "https://cdn.brand.com/spring_30s.mp4", + "duration_ms": 30000, + "width": 1920, + "height": 1080, + "container_format": "mp4", + "video_codec": "h264", + "video_bitrate_kbps": 8000 + }, + "impression_tracker": { + "asset_type": "url", + "url_type": "tracker_pixel", + "url": "https://track.brand.example/imp" + }, + "landing_url": { + "asset_type": "url", + "url_type": "clickthrough", + "url": "https://brand.example/spring-sale" + } + } +} +``` + +### VAST Tag Manifest (URL Delivery) + +```json +{ + "$schema": "/schemas/3.0.13/core/creative-manifest.json", + "format_id": { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "video_30s_vast" + }, + "assets": { + "vast_tag": { + "asset_type": "vast", + "delivery_type": "url", + "url": "https://adserver.brand.example/vast", + "vast_version": "4.2" + } + } +} +``` + +### Inline VAST XML Manifest + +```json +{ + "$schema": "/schemas/3.0.13/core/creative-manifest.json", + "format_id": { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "video_30s_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", + "vast_version": "4.2" + } + } +} +``` + +### Multi-Resolution Manifest + +```json +{ + "$schema": "/schemas/3.0.13/core/creative-manifest.json", + "format_id": { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "video_30s" + }, + "assets": { + "video_1080p": { + "asset_type": "video", + "url": "https://cdn.brand.com/spring_30s_1080p.mp4", + "duration_ms": 30000, + "width": 1920, + "height": 1080, + "video_bitrate_kbps": 8000 + }, + "video_720p": { + "asset_type": "video", + "url": "https://cdn.brand.com/spring_30s_720p.mp4", + "duration_ms": 30000, + "width": 1280, + "height": 720, + "video_bitrate_kbps": 5000 + }, + "video_480p": { + "asset_type": "video", + "url": "https://cdn.brand.com/spring_30s_480p.mp4", + "duration_ms": 30000, + "width": 854, + "height": 480, + "video_bitrate_kbps": 2500 + } + } +} +``` + +## Video-Specific Macros + +In addition to [universal macros](/dist/docs/3.0.13/creative/universal-macros), video formats support: + +### Video Content Context +- `{VIDEO_ID}` - Content video identifier +- `{VIDEO_TITLE}` - Content video title +- `{VIDEO_DURATION}` - Content duration in seconds +- `{VIDEO_CATEGORY}` - IAB content category +- `{CONTENT_GENRE}` - Content genre (news, sports, comedy) +- `{CONTENT_RATING}` - Content rating (G, PG, TV-14, etc.) +- `{PLAYER_WIDTH}` / `{PLAYER_HEIGHT}` - Video player dimensions in pixels + +### Ad Pod Position +- `{POD_POSITION}` - Position within ad break (1, 2, 3, etc.) +- `{POD_SIZE}` - Total ads in this break +- `{AD_BREAK_ID}` - Unique ad break identifier + +### Playback Context +- `{PLAYBACK_METHOD}` - auto-play-sound-on, auto-play-sound-off, click-to-play +- `{PLAYER_SIZE}` - small, medium, large, fullscreen +- `{VIDEO_PLACEMENT}` - in-stream, in-banner, in-article, in-feed, interstitial + +### VAST Macros + +AdCP macros (`{CURLY_BRACES}`) work alongside [IAB VAST 4.x macros](http://interactiveadvertisingbureau.github.io/vast/vast4macros/vast4-macros-latest.html) (`[SQUARE_BRACKETS]`): + +- `[CACHEBUSTING]` - Random number for cache prevention +- `[TIMESTAMP]` - Unix timestamp +- `[DOMAIN]` - Publisher domain +- `[IFA]` - Device advertising ID (IDFA/AAID) +- `[REGULATIONS]` - Privacy regulation signals (GDPR, CCPA) +- `[DEVICEUA]` - Device user agent string + +**Example mixing both macro formats:** +``` +https://track.brand.com/imp? + buy={MEDIA_BUY_ID}& + video={VIDEO_ID}& + device=[IFA]& + domain=[DOMAIN]& + cb=[CACHEBUSTING] +``` + +## Video Tracking Assets + +### Standard Tracking Events + +```json +{ + "$schema": "/schemas/3.0.13/core/creative-manifest.json", + "format_id": { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "video_30s" + }, + "assets": { + "video_file": { + "asset_type": "video", + "url": "https://cdn.brand.com/video_30s.mp4", + "width": 1920, + "height": 1080 + }, + "impression_tracker": { + "asset_type": "url", + "url_type": "tracker_pixel", + "url": "https://track.brand.example/imp" + }, + "start_tracker": { + "asset_type": "url", + "url_type": "tracker_pixel", + "url": "https://track.brand.example/start" + }, + "quartile_25_tracker": { + "asset_type": "url", + "url_type": "tracker_pixel", + "url": "https://track.brand.example/q25" + }, + "quartile_50_tracker": { + "asset_type": "url", + "url_type": "tracker_pixel", + "url": "https://track.brand.example/q50" + }, + "quartile_75_tracker": { + "asset_type": "url", + "url_type": "tracker_pixel", + "url": "https://track.brand.example/q75" + }, + "complete_tracker": { + "asset_type": "url", + "url_type": "tracker_pixel", + "url": "https://track.brand.example/complete" + }, + "click_tracker": { + "asset_type": "url", + "url_type": "tracker_pixel", + "url": "https://track.brand.example/click" + } + } +} +``` + +### Interactive Tracking Events + +For formats supporting user interaction: + +```json +{ + "pause_tracker": { + "asset_type": "url", + "url_type": "tracker_pixel", + "url": "https://track.brand.example/pause" + }, + "resume_tracker": { + "asset_type": "url", + "url_type": "tracker_pixel", + "url": "https://track.brand.example/resume" + }, + "skip_tracker": { + "asset_type": "url", + "url_type": "tracker_pixel", + "url": "https://track.brand.example/skip" + }, + "mute_tracker": { + "asset_type": "url", + "url_type": "tracker_pixel", + "url": "https://track.brand.example/mute" + }, + "unmute_tracker": { + "asset_type": "url", + "url_type": "tracker_pixel", + "url": "https://track.brand.example/unmute" + } +} +``` + +## Common Aspect Ratios + +- **16:9** (1920x1080, 1280x720) - Standard horizontal video +- **9:16** (1080x1920) - Vertical mobile video +- **4:3** (640x480) - Legacy format, rare +- **1:1** (1080x1080) - Square social video + +## Video Placement Types + +### Pre-Roll +Video ad plays before content starts. Most common placement. + +**Common durations:** 6s, 15s, 30s + +### Mid-Roll +Video ad plays during content breaks. Uses ad pod macros for position tracking. + +**Common durations:** 15s, 30s + +### Post-Roll +Video ad plays after content ends. + +**Common durations:** 15s, 30s + +### Out-Stream +Video ad plays in-feed or in-article, not in a video player. + +**Common formats:** Vertical mobile video, in-feed video + +## VAST/VPAID Integration + +### VAST Versions + +AdCP supports all VAST versions: +- **VAST 2.0** - Legacy support +- **VAST 3.0** - Adds verification and error handling +- **VAST 4.0** - Improved tracking, viewability +- **VAST 4.1** - Enhanced ad pod support +- **VAST 4.2** - Latest specification (recommended) + +### VPAID Support + +VPAID (Video Player Ad-Serving Interface Definition) enables interactive video ads: + +```json +{ + "$schema": "/schemas/3.0.13/core/format.json", + "format_id": { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "video_30s_vpaid" + }, + "name": "VPAID Interactive - 30 seconds", + "assets": [ + { + "asset_id": "vpaid_tag", + "asset_type": "url", + "asset_role": "vpaid_url", + "item_type": "individual", + "required": true, + "requirements": { + "vpaid_version": ["2.0"], + "api_framework": "VPAID" + } + } + ] +} +``` + +## File Specifications + +### Video Codecs +- **H.264** - Most widely supported, required for CTV +- **H.265/HEVC** - Better compression, growing CTV support +- **ProRes** - High quality mezzanine, accepted by premium CTV +- **VP8/VP9** - Open codec, web-focused +- **AV1** - Next-gen open codec, emerging support + +### Audio Codecs +- **AAC/AAC-LC** - Standard for MP4, widely supported +- **HE-AAC** - High-efficiency AAC for lower bitrates +- **PCM** - Uncompressed, preferred by some CTV platforms +- **AC-3/E-AC-3** - Dolby Digital, used in broadcast + +### Container Formats +- **MP4** - Industry standard, required for most platforms +- **MOV** - QuickTime format, accepted by premium CTV +- **WebM** - Open format, web-focused + +### Video Bitrate Ranges +- **Premium CTV (mezzanine):** 15-50 Mbps +- **Standard CTV:** 6-15 Mbps +- **High Quality Web (1080p):** 8-10 Mbps +- **Standard Quality (720p):** 4-6 Mbps +- **Mobile Optimized (480p):** 2-3 Mbps + +### Frame Rates +- **Film:** 23.976 fps, 24 fps +- **PAL:** 25 fps +- **NTSC:** 29.97 fps, 30 fps +- **High frame rate:** 48 fps, 50 fps, 60 fps + +CTV platforms require constant frame rate (CFR). Variable frame rate (VFR) will be rejected. + +### Common Resolutions + +**16:9 Landscape:** +- 1920x1080 (1080p Full HD) - Standard CTV +- 1280x720 (720p HD) +- 854x480 (480p SD) +- 3840x2160 (4K UHD) - Premium CTV + +**9:16 Portrait:** +- 1080x1920 (Mobile vertical) + +**1:1 Square:** +- 1080x1080 (Social video) + +### Scan Type +CTV universally requires **progressive scan**. Interlaced content will be rejected. + +### Color Space +- **Rec.709** - Standard for HD/SDR content (required by most CTV) +- **Rec.2020** - UHD/4K content +- **Rec.2100** - HDR content (HDR10, HLG) +- **sRGB** - Web content + +### Chroma Subsampling +- **4:2:0** - Standard for delivery +- **4:2:2** - Broadcast/mezzanine quality + +### Video Bit Depth +- **8-bit** - Standard SDR +- **10-bit** - HDR and premium SDR +- **12-bit** - Professional HDR + +### GOP Structure (SSAI Critical) +For server-side ad insertion compatibility: +- **Keyframe interval:** 1-2 seconds +- **GOP type:** Closed GOP required +- **moov atom:** Must be at file start for progressive download + +## Audio Specifications + +### Sampling Rate +- **48 kHz** - Required for CTV (Roku, Hulu, Snapchat mandate this) +- **44.1 kHz** - CD quality, accepted by some platforms +- **96 kHz** - High resolution, accepted but not required + +### Channel Configuration +- **Stereo (2 channels)** - Required for CTV ads +- **Mono** - Acceptable for some web/mobile +- **5.1/7.1** - Not supported for CTV ads + +### Audio Bit Depth +- **16-bit** - Standard +- **24-bit** - High quality, accepted by premium CTV + +### Audio Bitrate +- **CTV minimum:** 192 kbps +- **Standard web:** 128 kbps +- **High quality:** 256 kbps + +### Loudness Standards +Different platforms normalize to different targets: + +| Platform | Target LUFS | Tolerance | Standard | +|----------|-------------|-----------|----------| +| Broadcast/CTV | -24 LUFS | ±2 dB | ATSC A/85 | +| Spotify | -16 LUFS | ±1.5 dB | - | +| YouTube | -14 LUFS | - | - | + +**True Peak:** Should not exceed -1 to -2 dBFS to prevent clipping + +## Related Documentation + +- [Universal Macros](/dist/docs/3.0.13/creative/universal-macros) - Complete macro reference including video macros +- [Creative Manifests](/dist/docs/3.0.13/creative/creative-manifests) - Manifest structure and asset specifications +- [Asset Types](/dist/docs/3.0.13/creative/asset-types) - Video asset type definitions diff --git a/dist/docs/3.0.13/creative/creative-libraries.mdx b/dist/docs/3.0.13/creative/creative-libraries.mdx new file mode 100644 index 0000000000..820dd457c4 --- /dev/null +++ b/dist/docs/3.0.13/creative/creative-libraries.mdx @@ -0,0 +1,341 @@ +--- +title: Creative libraries and concepts +description: "Creative libraries in AdCP let buyers browse, organize, and track approval status for creatives across ad servers and management platforms." +"og:title": "AdCP — Creative libraries and concepts" +--- + + +Creative libraries let buyers manage creatives through AdCP — browsing existing assets, uploading new ones, assigning them to campaigns, and tracking approval status. A creative library is hosted by any agent that declares `has_creative_library: true` in its capabilities: ad servers (CM360, Flashtalking), creative management platforms (Celtra), or sales agents with [inline creative management](/dist/docs/3.0.13/creative/sales-agent-creative-capabilities). + +## The model + +A creative library organizes assets at three levels: + +| Level | AdCP equivalent | Examples | +|---|---|---| +| Account | Account (via [accounts protocol](/dist/docs/3.0.13/accounts/overview)) | Advertiser in CM360, brand workspace in Celtra | +| Concept | `concept_id` / `concept_name` | Flashtalking concept, CM360 creative group, Celtra campaign folder | +| Creative | Creative item with `creative_id`, `format_id`, `assets` | A 300x250 display ad, a 30s video spot | + +**Concepts** group related creatives across sizes and formats. A "Holiday 2026" concept might contain a 300x250 banner, a 728x90 leaderboard, and a 30s video — all expressing the same campaign idea. Use `concept_id` to filter and manage them as a group. + +### Creative state and assignment state are separate + +Two things the library tracks independently: + +- **Creative state** — the review status of the creative itself: `processing`, `pending_review`, `approved`, `rejected`, or `archived`. Set by the creative agent's review workflow. Applies to the creative as a library asset, regardless of where it is used. +- **Assignment state** — the relationship between a creative and a package on a specific media buy. Created when the buyer assigns the creative (via `sync_creatives`, `creative_assignments`, or inline creatives on `create_media_buy`). Released when the media buy or package is rejected, canceled, or completed, or when the buyer removes the assignment. + +These lifecycles are tracked independently: + +- A creative in the library has **zero or more** active assignments at any time. +- Rejecting, canceling, or completing a media buy releases its assignments. It does not change the creative's review state, remove the creative from the library, or affect the creative's use in other media buys. +- When a creative's review state changes after assignments exist (e.g., a seller revokes an approval, or approves a previously rejected creative), sellers MAY continue or stop in-flight serving based on the new state. Buyers SHOULD re-fetch `approval_status` per package via [`get_media_buys`](/dist/docs/3.0.13/media-buy/task-reference/get_media_buys) after a creative-state change to detect assignment-level impact. See [creative review](/dist/docs/3.0.13/creative/sales-agent-creative-capabilities#creative-review). + +Buyer agents reusing a library creative on a new media buy check **creative state** to know whether the asset is usable, and **assignment state** to know where it is currently in flight. Retention of unassigned creatives is seller-defined in 3.0 — buyers should not assume indefinite persistence and should confirm availability via [`list_creatives`](/dist/docs/3.0.13/creative/task-reference/list_creatives) before reuse on a new buy. + +## Connecting to a library + +Establish account access before querying: + +```json +{ + "accounts": [{ + "account_id": "acct_acme_2026", + "account_name": "Acme Corp", + "credentials": { + "api_key": "..." + } + }] +} +``` + +The account setup is the same whether the library is on a standalone creative agent or a sales agent. See [accounts protocol](/dist/docs/3.0.13/accounts/overview) for details. + +## Browsing creatives + +Use [`list_creatives`](/dist/docs/3.0.13/creative/task-reference/list_creatives) to browse the library. Filter by concept, format, status, tags, or date range: + +```json +{ + "filters": { + "concept_ids": ["concept_holiday_2026"], + "statuses": ["approved"], + "format_ids": [{ + "agent_url": "https://ads.flashtalking-example.com", + "id": "display_300x250" + }] + }, + "include": { + "variables": true, + "assignments": true + } +} +``` + +Each creative in the response includes: + +```json +{ + "creative_id": "ft_88201", + "name": "Holiday 2026 - Medium Rectangle", + "format_id": { + "agent_url": "https://ads.flashtalking-example.com", + "id": "display_300x250" + }, + "status": "approved", + "concept_id": "concept_holiday_2026", + "concept_name": "Holiday 2026 Campaign", + "created_date": "2026-10-15T14:00:00Z", + "updated_date": "2026-11-20T09:30:00Z", + "tags": ["holiday_2026", "display"], + "variables": [ + { + "variable_id": "headline", + "name": "Headline text", + "type": "text", + "default_value": "Holiday Sale — Up to 40% Off" + } + ], + "assignments": [ + { "package_id": "pkg_premium_display", "weight": 100 } + ] +} +``` + +The `status` field reflects the creative's current state in the library: `processing`, `pending_review`, `approved`, `rejected`, or `archived`. See [creative review](/dist/docs/3.0.13/creative/sales-agent-creative-capabilities#creative-review) for how status transitions work. + +## Uploading creatives + +Use [`sync_creatives`](/dist/docs/3.0.13/creative/task-reference/sync_creatives) to upload new creatives or update existing ones. The operation uses upsert semantics — if a `creative_id` already exists, it updates; otherwise it creates. + +```json +{ + "creatives": [ + { + "creative_id": "acme_video_001", + "name": "Holiday Sale 30s", + "format_id": { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "video_standard_30s" + }, + "assets": { + "video": { + "url": "https://cdn.acme-example.com/holiday-sale-30s.mp4", + "width": 1920, + "height": 1080, + "duration_ms": 30000 + }, + "click_url": { + "url": "https://acme-example.com/holiday-sale" + } + } + } + ] +} +``` + +The response tells you what happened to each creative: + +```json +{ + "creatives": [ + { + "creative_id": "acme_video_001", + "action": "created" + } + ] +} +``` + +After upload, the creative enters the library's review process. Check `list_creatives` to see when it transitions from `pending_review` to `approved`. + +### Uploading with assignments + +Assign creatives to packages in the same call: + +```json +{ + "creatives": [ + { + "creative_id": "acme_video_001", + "name": "Holiday Sale 30s", + "format_id": { "agent_url": "...", "id": "video_standard_30s" }, + "assets": { "...": "..." } + } + ], + "assignments": [ + { + "creative_id": "acme_video_001", + "package_id": "pkg_premium_video" + } + ] +} +``` + +## Generating tags from library creatives + +When you need a serving tag for a creative in the library, use [`build_creative`](/dist/docs/3.0.13/creative/task-reference/build_creative) with `creative_id` instead of a manifest: + +```json +{ + "creative_id": "ft_88201", + "concept_id": "concept_holiday_2026", + "target_format_id": { + "agent_url": "https://ads.flashtalking-example.com", + "id": "display_300x250" + } +} +``` + +The creative agent resolves the `creative_id` from its library and returns a manifest with the serving tag. The tag format depends on the platform: + +- **Flashtalking, Celtra**: Universal tags that adapt to any environment. No placement context needed. +- **CM360**: Placement-level tags that require trafficking context. Pass `media_buy_id` and `package_id`: + +```json +{ + "creative_id": "cm360_creative_12345", + "target_format_id": { + "agent_url": "https://ads.cm360-example.com", + "id": "display_300x250" + }, + "media_buy_id": "buy_holiday_q4", + "package_id": "pkg_premium_display" +} +``` + +See [tag generation models](/dist/docs/3.0.13/creative/implementing-creative-agents#tag-generation-models) for the full breakdown. + +## Assigning creatives to campaigns + +There are two paths for attaching library creatives to a media buy: + +### Path 1: Creative assignments on the package + +Reference library creatives by ID when creating the media buy: + +```json +{ + "packages": [{ + "product_id": "premium_display", + "creative_assignments": [ + { "creative_id": "ft_88201", "weight": 60 }, + { "creative_id": "ft_88202", "weight": 40 } + ] + }] +} +``` + +This works when the creative is already in the agent's library (via `sync_creatives` or the platform's own upload flow). + +### Path 2: Inline creatives on the package + +Upload the creative directly with the media buy — no separate sync step: + +```json +{ + "packages": [{ + "product_id": "premium_display", + "creatives": [{ + "creative_id": "acme_banner_001", + "name": "Holiday banner", + "format_id": { "agent_url": "...", "id": "display_300x250" }, + "assets": { "...": "..." } + }] + }] +} +``` + +The agent adds the creative to its library and assigns it to the package in one operation. See [inline creative management](/dist/docs/3.0.13/creative/sales-agent-creative-capabilities) for details. + +**Inline creatives follow the same library lifecycle as `sync_creatives` uploads.** The inline form is a convenience — "sync and assign in one call" — not a separate lifecycle. Once submitted, the creative enters the library with the same review flow, retention, and identifiers it would have under `sync_creatives`. If the `create_media_buy` task resolves as `pending_manual` and the buy never activates, or if the buy is rejected or canceled, only the package assignments are released; the creatives remain in the library and may be referenced by `creative_id` in a subsequent `create_media_buy` call. This assignment-release behavior is normative on the media-buy side — see the [Media Buy State Transitions](/dist/docs/3.0.13/media-buy/specification#media-buy-state-transitions) rule. + +Creative review proceeds independently of the media buy outcome. Sellers MUST NOT skip review solely because the buy did not activate, and a buy rejection does not by itself imply rejection of the submitted creatives — a creative rejection MUST be a deliberate review decision with its own `rejection_reason`, not implicit from the containing buy's status. Sellers MAY deprioritize review of creatives that currently have no active assignments, provided review completes before any future assignment activates. + +**Capability-flag scope.** `inline_creative_management: true` advertises that the sales agent accepts inline creatives on `create_media_buy`; it does **not** tie the inline creative's lifecycle to the buy. The decoupled library lifecycle applies regardless of submission path. + +### Multi-seller distribution + +When you work with multiple sellers, build creatives once and distribute them: + +1. **Build** on your creative agent: +```json +{ + "message": "Create a holiday promotion banner", + "target_format_ids": [ + { "agent_url": "https://creative.adcontextprotocol.org", "id": "display_300x250" }, + { "agent_url": "https://creative.adcontextprotocol.org", "id": "display_728x90" } + ] +} +``` + +2. **Sync** to each seller's library: +```json +{ + "creatives": [ + { + "creative_id": "holiday_2026_300x250", + "name": "Holiday 2026 - Medium Rectangle", + "concept_id": "concept_holiday_2026", + "format_id": { "agent_url": "https://creative.adcontextprotocol.org", "id": "display_300x250" }, + "assets": { } + } + ] +} +``` + +Call `sync_creatives` on each sales agent separately. Use the same `creative_id` and `concept_id` across sellers so you can correlate the same creative and campaign concept across your media buys. See [Multi-agent creative orchestration](/dist/docs/3.0.13/creative/multi-agent-orchestration) for the full pattern. + +3. **Track approval** per seller — each seller reviews independently. Poll `list_creatives` on each agent to check status. A creative may be `approved` on one seller and `rejected` on another based on their policies. + +## Tracking approval status + +Creative approval operates at two levels: + +**Library level**: The `status` field on each creative in [`list_creatives`](/dist/docs/3.0.13/creative/task-reference/list_creatives) — `processing`, `pending_review`, `approved`, `rejected`, or `archived`. + +**Package level**: The `approval_status` on each creative in [`get_media_buys`](/dist/docs/3.0.13/media-buy/task-reference/get_media_buys) — `pending_review`, `approved`, or `rejected` with `rejection_reason`. + +A creative can be `approved` in the library but `rejected` at the package level if it violates placement-specific policies. Poll both after syncing or submitting a media buy with new creatives. + +## Dynamic creative optimization (DCO) + +Creatives with dynamic content variables appear in the library with a `variables` array when you request `include: { variables: true }`. Each variable defines a slot that the ad server fills at serve time: + +```json +{ + "variables": [ + { + "variable_id": "headline", + "name": "Headline text", + "type": "text", + "default_value": "Holiday Sale — Up to 40% Off" + }, + { + "variable_id": "product_image", + "name": "Product image", + "type": "image", + "default_value": "https://cdn.acme-example.com/hero.jpg" + }, + { + "variable_id": "cta_color", + "name": "CTA button color", + "type": "color", + "default_value": "#FF6600" + } + ] +} +``` + +Use `has_variables: true` in `list_creatives` filters to find DCO creatives. Variable types match common platform patterns: `text`, `color`, `image`, `video`, `number`, `boolean`. + +How the ad server uses these variables at serve time (data feeds, targeting rules, optimization algorithms) is outside AdCP's scope. AdCP models the variable *slots*, not the optimization logic. + +## Next steps + +- [Generative creative](/dist/docs/3.0.13/creative/generative-creative) — AI-powered creative generation and brief-in-media-buy workflows +- [Creative capabilities on sales agents](/dist/docs/3.0.13/creative/sales-agent-creative-capabilities) — When the seller manages both media and creative +- [Implementing creative agents](/dist/docs/3.0.13/creative/implementing-creative-agents) — Building an AdCP creative agent around your platform +- [sync_creatives reference](/dist/docs/3.0.13/creative/task-reference/sync_creatives) — Upload API details +- [list_creatives reference](/dist/docs/3.0.13/creative/task-reference/list_creatives) — Query API details with full filtering options diff --git a/dist/docs/3.0.13/creative/creative-manifests.mdx b/dist/docs/3.0.13/creative/creative-manifests.mdx new file mode 100644 index 0000000000..29327cf94a --- /dev/null +++ b/dist/docs/3.0.13/creative/creative-manifests.mdx @@ -0,0 +1,471 @@ +--- +title: Creative Manifests +description: "Creative manifests in AdCP are reusable presets that supply concrete asset values to satisfy format requirements for programmatic ad delivery." +"og:title": "AdCP — Creative Manifests" +"og:image": /images/walkthrough/diagram-format-manifest-render.png +--- + + +Creative manifests define a creative preset: a reusable configuration of brand content that can be instantiated in a specific creative format. + +Three columns showing how a format defines required slots, a manifest fills them with concrete values, and the result is a rendered creative + +A manifest does not define structure, layout, or rendering behavior. Instead, it supplies concrete asset values that satisfy the requirements defined by a creative format. When combined with a format definition, a manifest produces a renderable creative instance. + +For an overview of how formats, manifests, and creative agents work together, see the [Creative Protocol Overview](/dist/docs/3.0.13/creative). + + +## Manifest Structure + +### Basic Structure + +```typescript +{ + format_id: { // Format this manifest is for + agent_url: string; // Creative agent URL + id: string; // Format identifier + }; + assets: { + [asset_id: string]: { // Keyed by asset_id from format's assets + // Asset type is determined by format specification, not declared here + // Type-specific fields depend on asset_type defined in format's assets + + // Image: url, width, height, format, alt_text + // Video: url, width, height, duration_ms, format, bitrate_kbps + // Audio: url, duration_ms, format, bitrate_kbps + // Text: content, language + // Markdown: content, flavor + // URL: url, description + // HTML: content or url, version + // CSS: content, media + // JavaScript: content, module_type + // VAST: url or content, vast_version, vpaid_enabled, duration_ms, tracking_events + // DAAST: url or content, daast_version, duration_ms, tracking_events, companion_ads + // Webhook: url, method, timeout_ms, response_type, security, supported_macros, required_macros + // Brief: name, objective, tone, audience, messaging, compliance + // Catalog: type, catalog_id, items, selectors + } + }; +} +``` + +### Asset IDs + +Each asset in a manifest is keyed by its `asset_id`, which must match an `asset_id` defined in the format's `assets` array. The asset ID serves as the technical identifier for referencing the asset requirement in the format specification. + +**How Asset IDs Work**: + +When a format defines required assets: +```json +{ + "assets": [ + { + "asset_id": "banner_image", + "asset_type": "image", + "required": true + }, + { + "asset_id": "clickthrough_url", + "asset_type": "url", + "required": true + } + ] +} +``` + +Your manifest **must use those exact asset IDs** as keys: +```json +{ + "assets": { + "banner_image": { // ← Matches asset_id from format + "url": "https://cdn.example.com/banner.jpg", + "width": 300, + "height": 250 + }, + "clickthrough_url": { // ← Matches asset_id from format + "url": "https://example.com/landing" + } + } +} +``` + +**Common Asset IDs** (vary by format): +- `banner_image`, `hero_image`: Primary visual assets +- `logo`: Brand logo +- `headline`, `description`: Text content +- `cta_text`: Call-to-action button text +- `video_file`: Video content +- `vast_tag`: VAST XML for video delivery +- `clickthrough_url`: Landing page URL + +Always check the specific format's `assets` to see which asset IDs are required. + +### Complete Example + +Here's a complete creative manifest showing the current structure without redundant fields: + +```json +{ + "$schema": "/schemas/3.0.13/core/creative-manifest.json", + "format_id": { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "display_300x250" + }, + "assets": { + "banner_image": { + "asset_type": "image", + "url": "https://cdn.example.com/banner.jpg", + "width": 300, + "height": 250 + }, + "headline": { + "asset_type": "text", + "content": "Nutrition Dogs Love" + }, + "description": { + "asset_type": "text", + "content": "Made with real chicken and wholesome grains" + }, + "clickthrough_url": { + "asset_type": "url", + "url": "https://acmecorp.example.com/products/premium-dog-food?campaign={MEDIA_BUY_ID}", + "description": "Product landing page" + } + } +} +``` + +**Note**: Each asset carries an `asset_type` discriminator (`image`, `text`, `url`, etc. — see [asset types](/dist/docs/3.0.13/creative/asset-types)). This lets validators select the matching asset schema and report errors against only the chosen branch instead of all 14. The format specification also declares the expected `asset_type` for each `asset_id`; manifest and format should agree. + +## Types of Creative Manifests + +Creative manifests can be static, dynamic, or hybrid - reflecting the three creative agent modalities above. + +### Static Manifests + +Static manifests contain all assets ready for immediate rendering. These are produced by creative agents in **Static Asset Delivery** or **Prompt to Static Rendering** modes. + +```json +{ + "$schema": "/schemas/3.0.13/core/creative-manifest.json", + "format_id": { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "native_responsive" + }, + "assets": { + "hero_image": { + "asset_type": "image", + "url": "https://cdn.example.com/hero.jpg", + "width": 1200, + "height": 627, + "alt_text": "Product image" + }, + "logo": { + "asset_type": "image", + "url": "https://cdn.example.com/logo.png", + "width": 100, + "height": 100 + }, + "headline": { + "asset_type": "text", + "content": "Premium Quality You Can Trust" + }, + "description": { + "asset_type": "text", + "content": "Discover why veterinarians recommend our formula" + }, + "cta_text": { + "asset_type": "text", + "content": "Learn More" + } + } +} +``` + +**Use Cases**: +- Traditional display advertising +- Pre-rendered video ads +- Static native ads +- Fixed creative campaigns + +### Dynamic Manifests + +Dynamic manifests include endpoints or code for real-time generation. These are produced by creative agents in **Prompt to Dynamic Rendering** mode (DCO/Generative). + +```json +{ + "$schema": "/schemas/3.0.13/core/creative-manifest.json", + "format_id": { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "display_dynamic_300x250" + }, + "assets": { + "dynamic_content": { + "asset_type": "webhook", + "url": "https://creative-agent.example.com/render/campaign-123", + "method": "POST", + "timeout_ms": 500, + "supported_macros": ["WEATHER", "TIME", "DEVICE_TYPE", "COUNTRY"], + "response_type": "html", + "security": { + "method": "hmac_sha256", + "hmac_header": "X-Signature" + } + }, + "fallback_image": { + "asset_type": "image", + "url": "https://cdn.example.com/fallback-300x250.jpg", + "width": 300, + "height": 250 + } + } +} +``` + +**Use Cases**: +- Weather-based creative +- Time-of-day personalization +- Product availability messaging +- Real-time inventory updates + +**Note**: For client-side dynamic rendering, use `html` or `javascript` asset types with embedded tags instead of webhooks. + +**Dynamic manifests can mix asset types** - some assets may be static (images, videos) while others are dynamic (webhooks, tags with macros). For example, a video VAST tag with a static hero video but a personalized end card webhook. + +### DOOH Manifests with Impression Tracking + +Digital Out-of-Home (DOOH) creatives use impression tracking just like other formats, but with venue-specific macros instead of device identifiers. + +```json test=false +{ + "format_id": { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "dooh_billboard_1920x1080" + }, + "assets": { + "billboard_image": { + "url": "https://cdn.example.com/billboard-1920x1080.jpg", + "width": 1920, + "height": 1080 + }, + "impression_tracker": { + "url": "https://tracking.example.com/imp?screen={SCREEN_ID}&venue={VENUE_TYPE}&ts={PLAY_TIMESTAMP}&lat={VENUE_LAT}&lon={VENUE_LONG}", + "url_type": "tracker_pixel" + } + } +} +``` + +**DOOH-Specific Macros** (see [Universal Macros](/dist/docs/3.0.13/creative/universal-macros) for complete list): +- `{SCREEN_ID}` - Unique identifier for the physical screen +- `{VENUE_TYPE}` - Venue category (airport, mall, transit, highway, retail) +- `{VENUE_LAT}` / `{VENUE_LONG}` - Physical location coordinates +- `{PLAY_TIMESTAMP}` - When creative displayed (Unix timestamp) +- `{DWELL_TIME}` - Average viewer dwell time at this location + +The mechanics are identical to digital impression tracking - a URL fires when the ad displays. The difference is DOOH uses fixed venue context instead of dynamic device identifiers. + +## Working with Manifests + +### Creating Manifests + +Manifests are JSON structures that can be created in two ways: + +**1. Manual Assembly** + +Construct manifests directly by pairing format requirements with your assets: + +```json +{ + "$schema": "/schemas/3.0.13/core/creative-manifest.json", + "format_id": { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "native_responsive" + }, + "assets": { + "hero_image": { + "asset_type": "image", + "url": "https://cdn.example.com/salmon-hero.jpg", + "width": 1200, + "height": 627 + }, + "headline": { + "asset_type": "text", + "content": "New Premium Salmon Formula" + } + } +} +``` + +**2. AI-Generated (Optional)** + +Use `build_creative` on any agent implementing the Creative Protocol to generate manifests from natural language briefs. See [Generative Creative](/dist/docs/3.0.13/creative/generative-creative) for details. + +### Validating Manifests + +Before using a manifest, validate it against format requirements: + +1. **Format Compatibility**: Ensure `format_id` matches intended format +2. **Required Assets**: All required `asset_id` values from the format are present as keys in the manifest's `assets` object +3. **Asset Key Matching**: Each key in the manifest's `assets` object MUST match an `asset_id` from the format's `assets` array +4. **Asset Specifications**: Each asset meets format requirements (dimensions, file size, duration, etc.) +5. **Macro Support**: Dynamic manifests properly handle required macros + +**What happens with invalid asset keys?** + +- **Missing required asset_id**: Creative agents MUST reject the manifest with an error listing which required assets are missing +- **Unknown asset_id**: Creative agents MUST reject manifests containing asset keys that don't match any `asset_id` in the format. This catches typos and incompatible formats immediately. +- **Wrong asset_type**: If an asset doesn't match the type requirement for that `asset_id` in the format specification, reject with a clear type mismatch error + +Creative agents that implement `build_creative` handle validation automatically. For manually constructed manifests, validate against the format specification returned by `list_creative_formats`. + +**Format-Aware Validation**: Creative manifest validation MUST be performed in the context of the format specification. The format defines what type each `asset_id` should be, eliminating any validation ambiguity. Asset type information is NOT included in the manifest itself - it's determined by looking up the `asset_id` in the format's `assets` array. + +#### Validation Flow + +When a creative agent receives a manifest for validation: + +1. **Extract format_id** from the manifest +2. **Fetch format specification** from the format registry (local or remote based on `agent_url`) +3. **For each asset key in `manifest.assets`:** + - Look up the `asset_id` in `format.assets` + - If not found → **reject** with error "Unknown asset_id 'banner_imag' not defined in format" + - If found → determine the expected `asset_type` from the format requirement + - Fetch the asset type schema (e.g., `/schemas/3.0.13/core/assets/image-asset.json`) + - Validate the asset payload against that schema + - Validate the asset meets any additional constraints in the format's `requirements` field +4. **Check all required assets are present** (where `required: true` in format spec) +5. **Validate type-specific constraints** (dimensions, file size, duration, etc.) + +The format specification is the single source of truth for what type each `asset_id` should be and what constraints apply. + +**Validation is runtime, not schema-time**: The JSON schema for creative manifests uses a flexible pattern (`^[a-z0-9_]+$`) for asset keys because the valid keys depend on which format you're using. Validation against the specific format's `assets` happens when you submit the manifest to a creative agent. + +### Previewing Manifests + +Use the `preview_creative` task to see how a manifest will render: + +```json +{ + "creative_manifest": { + "format_id": { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "native_responsive" + }, + "assets": { + "hero_image": { + "url": "https://cdn.example.com/hero.jpg", + "width": 1200, + "height": 627 + }, + // ... other assets + } + }, + "macro_values": { + "CLICK_URL": "https://example.com/landing", + "CACHE_BUSTER": "12345" + } +} +``` + +The creative agent returns preview URLs and renderings. + +### Submitting Manifests + +Manifests are submitted to the creative library using `sync_creatives`, then referenced by ID in media buys: + +```json +{ + "task": "sync_creatives", + "parameters": { + "creatives": [ + { + "creative_id": "native-salmon-v1", + "name": "Salmon Special Native Ad", + "format_id": { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "native_responsive" + }, + "manifest": { + "format_id": { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "native_responsive" + }, + "assets": { + "product_catalog": { + "catalog_id": "salmon-products", + "type": "product" + }, + "headline": { + "content": "Fresh Pacific Salmon - 20% Off Today" + }, + "main_image": { + "url": "https://cdn.example.com/salmon.jpg", + "width": 1200, + "height": 628 + } + } + } + } + ] + } +} +``` + +Then reference in media buys by `creative_id`. Each manifest is for a single format. + +## Macro Substitution in Manifests + +Manifests support macro placeholders for dynamic values. AdCP uses universal macros that work consistently across all publishers. + +See [Universal Macros](/dist/docs/3.0.13/creative/universal-macros) for complete documentation on available macros, macro substitution process, and format-specific macro support. + + +## Best Practices + +### For Creative Agents + +1. **Complete Manifests**: Include all required assets for the format +2. **Validate Assets**: Ensure assets meet format specifications +3. **Provide Fallbacks**: Include fallback assets for dynamic creatives +4. **Document Macros**: Clearly specify which macros are used +5. **Version Assets**: Use versioned URLs for asset management + +### For Publishers + +1. **Validate on Receipt**: Check manifests against format requirements +2. **Cache Assets**: Pre-fetch and cache hosted assets +3. **Handle Failures**: Implement fallback rendering for dynamic manifests +4. **Support Macros**: Implement full Universal Macro support +5. **Provide Templates**: Offer rendering templates for custom formats + +### For Buyers + +1. **Validate Manifests**: Ensure manifests match format requirements (manually or via `build_creative`) +2. **Preview First**: Always preview manifests before submission +3. **Test Macros**: Verify macro substitution works as expected +4. **Optimize Assets**: Ensure assets are properly sized and compressed +5. **Organize Libraries**: Use creative libraries for asset management + +## Advanced Topics + +### Catalogs + +Manifests for catalog-driven formats (product carousels, dynamic product ads) include their catalogs as assets within the `assets` map. See [Catalogs in Creatives](/dist/docs/3.0.13/creative/catalogs#catalogs-in-creatives) for the workflow. + +### Repeatable Asset Groups + +For carousel, slideshow, and multi-asset formats, see the [Carousel & Multi-Asset Formats](/dist/docs/3.0.13/creative/channels/carousels) guide for complete documentation on repeatable asset groups. + +## Schema Reference + +- [Creative Manifest Schema](https://adcontextprotocol.org/schemas/3.0.13/core/creative-manifest.json) +- [Preview Creative Request](https://adcontextprotocol.org/schemas/3.0.13/creative/preview-creative-request.json) +- [Preview Creative Response](https://adcontextprotocol.org/schemas/3.0.13/creative/preview-creative-response.json) + +## Related Documentation + +- [Creative Formats](/dist/docs/3.0.13/creative/formats) - Understanding format specifications and discovery +- [Channel Guides](/dist/docs/3.0.13/creative/channels/video) - Format examples across video, display, audio, DOOH, and carousels +- [build_creative Task](/dist/docs/3.0.13/creative/task-reference/build_creative) +- [preview_creative Task](/dist/docs/3.0.13/creative/task-reference/preview_creative) diff --git a/dist/docs/3.0.13/creative/formats.mdx b/dist/docs/3.0.13/creative/formats.mdx new file mode 100644 index 0000000000..dbe61c3f7c --- /dev/null +++ b/dist/docs/3.0.13/creative/formats.mdx @@ -0,0 +1,790 @@ +--- +title: Creative Formats +description: "Creative formats in AdCP define asset requirements, technical constraints, and rendering behavior that shape how ads are built and delivered." +"og:title": "AdCP — Creative Formats" +--- + + +Creative formats define the structural and technical requirements used to instantiate advertising creatives. A format specifies: +- The asset types required (video, image, text, audio, etc.) via the `assets` array +- Technical constraints for each asset (duration, dimensions, file types, limits) +- How the resulting creative is delivered and validated + +Formats define requirements and constraints, not brand content or layout logic. + +For an overview of how formats, manifests, and creative agents work together, see the [Creative Protocol Overview](/dist/docs/3.0.13/creative). + +## Standard vs Custom Formats + +AdCP supports two categories of formats based on authority and reuse, not capability. + +### Standard Formats + +Standard formats are predefined specifications provided by the **AdCP Reference Creative Agent** (`https://creative.adcontextprotocol.org`). + +Standard formats are: +- **Industry-aligned**: Based on IAB format families and widely adopted conventions +- **Portable**: Designed to work consistently across platforms +- **Validated**: Pre-tested against known technical constraints +- **Discoverable**: Returned via `list_creative_formats` +- **Maintained**: Centrally documented and updated + +Standard formats typically cover common use cases such as: +- Display formats with fixed or responsive dimensions +- Video formats with standard durations and aspect ratios +- Audio formats with defined spot lengths +- Common DOOH display and video executions + +**Guidance for sales agents:** Before defining custom formats, check whether an equivalent standard format already exists. Most publishers can reference standard formats for common inventory and reserve custom formats for genuinely differentiated offerings. See [Implementing Standard Format Support](/dist/docs/3.0.13/media-buy/capability-discovery/implementing-standard-formats) for detailed guidance. + +### Custom Formats + +Custom formats are defined by publishers or platforms for inventory that cannot be accurately represented by standard formats. + +Custom formats may be used when there are: +- **Unique constraints**: Non-standard dimensions, physical displays, or asset requirements +- **Specialized capabilities**: Platform-specific rendering or interaction support +- **Premium inventory**: Differentiated or bespoke ad products +- **Custom validation logic**: Publisher-specific review or assembly rules + +Custom formats should be introduced only when necessary. Where possible, standard formats should be reused to maximize portability and buyer understanding. + +## Discovering Formats + +Buyers discover supported formats using the `list_creative_formats` task exposed by sales agents. + +Formats may be sourced from: +- **The sales agent itself** - for custom formats +- **Referenced creative agents** - such as the AdCP reference agent, for standard formats + +**Example discovery response:** + +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.0.13/creative/list-creative-formats-response.json", + "formats": [ + { + "format_id": { + "agent_url": "https://youragent.com", + "id": "homepage_takeover_2024" + }, + "name": "Homepage Takeover", + "type": "rich_media" + } + ], + "creative_agents": [ + { + "agent_url": "https://creative.adcontextprotocol.org" + } + ] +} +``` + +This indicates that the sales agent supports its own custom format and all formats defined by the referenced creative agent. + +**For sales agents implementing format support:** See [Implementing Standard Format Support](/dist/docs/3.0.13/media-buy/capability-discovery/implementing-standard-formats). + +## Format Authority + +Each format includes an `agent_url` that identifies the authoritative creative agent responsible for the format: + +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.0.13/core/format.json", + "format_id": { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "video_30s_hosted" + }, + "name": "Standard 30-Second Video" +} +``` + +The authoritative creative agent provides: +- Complete format specifications +- Creative element requirements and constraints +- Validation rules +- Preview generation +- Canonical documentation + +Buyers and sales agents rely on the `agent_url` to retrieve definitive format information. + +## Format Visual Presentation + +Formats may optionally include metadata to support visual browsing and selection in user interfaces. + +### Example Showcase +**Field**: `example_url` +**Purpose**: Deep link to a publisher-controlled showcase + +May include: +- Interactive demos +- Videos +- Multiple creative examples +- Best practices and specifications + +This approach allows publishers to present complex formats without constraining presentation in the protocol. + +**Example**: +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.0.13/core/format.json", + "format_id": { + "agent_url": "https://publisher.com", + "id": "homepage_takeover_premium" + }, + "name": "Premium Homepage Takeover", + "type": "rich_media", + "description": "Full-screen immersive experience with video, carousel, and companion units", + "example_url": "https://publisher.com/formats/homepage-takeover-demo" +} +``` + +## Referencing Formats + + + For a normative contrast between `format_id` (structured reference object) and `format` (full definition object) — including the two most common validation errors — see [Format References](/dist/docs/3.0.13/protocol/format-references). + + +AdCP uses structured format identifiers everywhere to avoid ambiguity and namespace collisions. + +### Structured Format IDs (Required Everywhere) + +**ALL format references** use structured format ID objects: + +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.0.13/core/format-id.json", + "agent_url": "https://creative.adcontextprotocol.org", + "id": "display_300x250" +} +``` + +This approach ensures: +- Explicit namespacing +- Collision-safe identifiers +- Schema validation +- Extensibility without breaking changes + +String-based format identifiers MUST NOT be used in API contracts. + +### Where Structured Format IDs Are Used + +**Requests:** +- `sync_creatives` - Uploading creative assets +- `build_creative` - Generating creatives via agents implementing the Creative Protocol +- `preview_creative` - Preview generation +- `create_media_buy` - When specifying format requirements + +**Responses:** +- `list_creatives` - Returning creative details +- `get_products` - Product format capabilities +- `list_creative_formats` - Format definitions +- Any response containing creative or format details + +**Filter parameters:** +- `format_ids` (plural) in request filters - Array of structured format_id objects + +### Validation Rules + +**All AdCP agents MUST:** +1. ✅ Accept structured `format_id` objects in ALL contexts +2. ✅ Return structured `format_id` objects in ALL responses +3. ❌ Reject string format_ids with clear error messages +4. ❌ Never use string format_ids in any API contract + +**Error handling for invalid format_id:** +```json +{ + "error": "invalid_format_id", + "message": "format_id must be a structured object with 'agent_url' and 'id' fields", + "received": "display_300x250", + "required_structure": { + "agent_url": "https://creative-agent-url.com", + "id": "display_300x250" + } +} +``` + +### Legacy Considerations + +Some legacy systems may send string format_ids. Implementers have two options: + +1. **Strict validation** (recommended): Reject strings immediately with clear error +2. **Auto-upgrade with deprecation**: Accept strings temporarily, log warnings, set removal timeline + +If auto-upgrading, you MUST: +- Only accept strings for well-known formats you can map to agent URLs +- Fail loudly for unknown format strings +- Log deprecation warnings on every request +- Set and communicate a removal date (recommend 6 months maximum) + +## Format Structure + +Formats are JSON objects with the following key fields: + +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.0.13/core/format.json", + "format_id": { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "video_30s_hosted" + }, + "name": "30-Second Hosted Video", + "type": "video", + "assets": [ + { + "item_type": "individual", + "asset_id": "video_file", + "asset_type": "video", + "asset_role": "hero_video", + "required": true, + "requirements": { + "duration": "30s", + "format": ["MP4"], + "resolution": ["1920x1080", "1280x720"] + } + }, + { + "item_type": "individual", + "asset_id": "end_card_image", + "asset_type": "image", + "asset_role": "end_card", + "required": false, + "requirements": { + "dimensions": "1920x1080", + "format": ["PNG", "JPG"] + } + }, + { + "item_type": "individual", + "asset_id": "companion_banner", + "asset_type": "image", + "asset_role": "companion", + "required": false, + "requirements": { + "dimensions": "300x250", + "format": ["PNG", "JPG", "GIF"] + } + }, + { + "item_type": "individual", + "asset_id": "impression_tracker", + "asset_type": "url", + "asset_role": "third_party_tracking", + "required": false, + "requirements": { + "description": "Third-party impression tracking pixel URL" + } + } + ], + + // DEPRECATED: Use "assets" above instead. Kept for backward compatibility. + "assets": [ + { + "item_type": "individual", + "asset_id": "video_file", + "asset_type": "video", + "asset_role": "hero_video", + "requirements": { + "duration": "30s", + "format": ["MP4"], + "resolution": ["1920x1080", "1280x720"] + } + } + ] +} +``` + +**Key fields:** +- **format_id**: Unique identifier (may be namespaced with `domain:id`) +- **agent_url**: The creative agent authoritative for this format +- **type**: *(deprecated, optional)* High-level category hint. See note below. +- **assets**: Array of all asset specifications with `required` boolean indicating mandatory vs optional. This is the authoritative source for understanding creative requirements. +- **asset_role**: Identifies asset purpose (hero_image, logo, cta_button, etc.) +- **renders**: Array of rendered outputs with dimensions - see below +- **accessibility**: Optional WCAG conformance declaration — see [Accessibility](/dist/docs/3.0.13/creative/accessibility) + + +**Deprecation Notice**: The `type` field is deprecated and optional. The `assets` array provides precise information about creative requirements (video, image, text, etc.) and should be used instead. Categories like "video", "display", and "native" are lossy abstractions that don't scale well to emerging formats like Performance Max (spans multiple channels), search ads (text-only with high intent), or conversational AI placements. + + +### Asset Discovery + +The `assets` array enables comprehensive asset discovery. Each asset has a `required` boolean: + +- **`required: true`** - Asset MUST be provided for a valid creative +- **`required: false`** - Asset is optional, enhances the creative when provided (e.g., companion banners, third-party tracking pixels) + +This unified approach helps creative tools and AI agents understand the full capabilities of a format, enabling richer creative experiences when optional assets are available while clearly indicating minimum requirements. + +### Third-Party Tracker Support + +Whether a format supports third-party measurement is determined by whether its `assets` array includes a tracker slot. A tracker slot is any asset with `asset_type: "url"` AND either: + +- `url_type: "tracker_pixel"` or `url_type: "tracker_script"` (mechanism-side declaration), OR +- `requirements.role` of `impression_tracker`, `click_tracker`, `viewability_tracker`, or `third_party_tracker` (purpose-side declaration; the slot accepts a tracker URL even if the format author declares the role rather than the mechanism) + +Buyer agents should check this before assigning creatives that require third-party verification. + +Most digital formats (display, video, CTV, audio, DOOH) include an optional `impression_tracker` asset. Formats without a tracker slot — such as broadcast TV spots — do not support creative-level pixel tracking. Measurement for these formats comes from external sources (panel data, set-top box telemetry) declared in the product's `billing_measurement` terms, not from creative-embedded pixels. + +A buyer agent that requires DoubleVerify viewability or IAS brand safety measurement should filter formats by tracker support. If no tracker slot exists, those vendors cannot instrument the creative — the buyer must rely on the seller's declared measurement vendor instead. + +### Typed Asset Requirements + +Each asset type has its own requirements schema that defines what constraints apply to that asset. The `requirements` object is typed based on the `asset_type`: + +**Image assets** (`asset_type: "image"`): +- `min_width`, `max_width`, `min_height`, `max_height` - Dimension constraints (set min=max for exact) +- `aspect_ratio` - Required aspect ratio (e.g., '1:1') +- `formats` - Accepted file formats (jpg, jpeg, png, webp, gif, svg, avif) +- `max_file_size_kb` - Maximum file size +- `animation_allowed` - Whether animated images are accepted +- `max_animation_duration_ms` - Maximum animation duration + +**Video assets** (`asset_type: "video"`): +- `min_width`, `max_width`, `min_height`, `max_height` - Dimension constraints +- `aspect_ratio` - Required aspect ratio (e.g., '16:9') +- `min_duration_ms`, `max_duration_ms` - Duration constraints +- `containers` - Accepted container formats (mp4, webm, mov) +- `codecs` - Accepted codecs (h264, h265, vp9, av1) +- `frame_rates` - Accepted frame rates (e.g., [24, 30, 60]) +- `max_file_size_kb`, `max_bitrate_kbps` - Size constraints + +**HTML assets** (`asset_type: "html"`): +- `max_file_size_kb` - Maximum file size +- `sandbox` - Execution environment (`none`, `iframe`, `safeframe`, `fencedframe`) +- `external_resources_allowed` - Whether external scripts/images can be loaded +- `allowed_external_domains` - Permitted domains for external resources + +**JavaScript assets** (`asset_type: "javascript"`): +- `max_file_size_kb` - Maximum file size +- `module_type` - Module format (`script`, `module`, `iife`) +- `external_resources_allowed` - Whether dynamic resource loading is allowed +- `allowed_external_domains` - Permitted domains for dynamic loading + +**Audio assets** (`asset_type: "audio"`): +- `min_duration_ms`, `max_duration_ms` - Duration constraints +- `formats` - Accepted audio formats (mp3, aac, wav, ogg, flac) +- `sample_rates` - Accepted sample rates in Hz (e.g., [44100, 48000]) +- `channels` - Accepted channel configurations (mono, stereo) +- `min_bitrate_kbps`, `max_bitrate_kbps` - Bitrate constraints +- `max_file_size_kb` - Maximum file size + +**Text assets** (`asset_type: "text"`): +- `min_length`, `max_length` - Character limits +- `min_lines`, `max_lines` - Line count limits +- `character_pattern` - Regex for allowed characters +- `prohibited_terms` - Words/phrases not allowed + +**URL assets** (`asset_type: "url"`): +- `role` - Standard purpose (clickthrough, impression_tracker, click_tracker, etc.) +- `protocols` - Allowed protocols (https, http) +- `allowed_domains` - Permitted destination domains +- `macro_support` - Whether macro substitution is supported + +**Example with HTML execution context:** + +```json +{ + "asset_id": "banner_html", + "asset_type": "html", + "required": true, + "requirements": { + "max_file_size_kb": 150, + "sandbox": "safeframe", + "external_resources_allowed": false + } +} +``` + +This tells creative agents: "Build HTML that works in a SafeFrame container with no external resource loading." + +See [Display Ads - HTML Display Formats](/dist/docs/3.0.13/creative/channels/display#html-display-formats-with-execution-context) for complete examples. + +### Asset Overlays + +Some formats include publisher-controlled elements that render on top of buyer creative content — video player controls, publisher logos, and similar chrome. Formats declare these as `overlays` on the relevant asset so creative agents and buyers know which areas will be covered and can compose accordingly. + +Overlay bounds are expressed relative to the asset's own top-left corner. The `unit` field is either `"px"` (absolute pixels) or `"fraction"` (proportional to asset dimensions: for `x`/`y`, 0.0 is the asset's own edge; for `width`/`height`, 0.12 means 12% of the asset dimension). Different overlays on the same asset may use different units — creative agents must handle each independently. + +```json +{ + "item_type": "individual", + "asset_id": "video", + "asset_type": "video", + "required": true, + "requirements": { + "aspect_ratio": "16:9", + "max_duration_ms": 15000 + }, + "overlays": [ + { + "id": "play_pause", + "description": "Play/pause control — avoid placing CTA, copy, or logos here", + "bounds": { "x": 0, "y": 285, "width": 120, "height": 120, "unit": "px" }, + "visual": { + "url": "https://publisher.example.com/controls/play.svg" + } + }, + { + "id": "volume", + "description": "Volume control", + "bounds": { "x": 0.88, "y": 0.85, "width": 0.12, "height": 0.15, "unit": "fraction" }, + "visual": { + "light": "https://publisher.example.com/controls/volume-light.svg", + "dark": "https://publisher.example.com/controls/volume-dark.svg" + } + } + ] +} +``` + +The `visual` field is optional but strongly recommended — it allows creative agents to composite accurate previews showing buyer content with publisher chrome in place. Use `url` for a theme-neutral graphic (e.g., an SVG using `currentColor`), or provide `light`/`dark` variants for separate theme-specific assets. + +### Rendered Outputs and Dimensions + +Formats describe one or more rendered outputs, each with defined dimensions and semantic roles. + +This supports: +- Single-render formats +- Companion creatives +- Multi-placement outputs +- Responsive behavior +- Physical dimensions for non-personal environments + +Formats specify their rendered outputs via the `renders` array. Most formats produce a single render, but some (companion ads, adaptive formats, multi-placement) produce multiple renders: + +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.0.13/core/format.json", + "format_id": { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "display_300x250" + }, + "name": "Display Banner 300x250", + "type": "display", + "renders": [ + { + "role": "primary", + "dimensions": { + "width": 300, + "height": 250, + "responsive": { + "width": false, + "height": false + } + } + } + ] +} +``` + +**Multi-render example (companion ad):** +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.0.13/core/format.json", + "format_id": { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "video_with_companion_300x250" + }, + "name": "Video with Companion Banner", + "type": "video", + "renders": [ + { + "role": "primary", + "dimensions": { + "width": 1920, + "height": 1080, + "responsive": { + "width": false, + "height": false + } + } + }, + { + "role": "companion", + "dimensions": { + "width": 300, + "height": 250, + "responsive": { + "width": false, + "height": false + } + } + } + ] +} +``` + +**Dimension types:** + +**Fixed dimensions** (standard display ads): +```json +{ + "role": "primary", + "dimensions": { + "width": 300, + "height": 250, + "responsive": {"width": false, "height": false}, + "unit": "px" + } +} +``` + +**Responsive width** (fluid banners): +```json +{ + "role": "primary", + "dimensions": { + "min_width": 300, + "max_width": 970, + "height": 250, + "responsive": {"width": true, "height": false}, + "unit": "px" + } +} +``` + +**Aspect ratio constrained** (native formats): +```json +{ + "role": "primary", + "dimensions": { + "aspect_ratio": "16:9", + "min_width": 300, + "responsive": {"width": true, "height": true}, + "unit": "px" + } +} +``` + +**Physical dimensions** (DOOH): +```json +{ + "role": "primary", + "dimensions": { + "width": 48, + "height": 14, + "responsive": {"width": false, "height": false}, + "unit": "inches" + } +} +``` + +**Benefits of the renders structure:** +- Supports single and multi-render formats uniformly +- No string parsing required - structured dimensions +- Schema-validated dimensions +- Supports responsive and fixed formats equally +- Enables proper preview rendering +- Allows dimension-based filtering +- Supports physical units for DOOH +- Clear semantic roles for each rendered piece + +## Understanding Format Requirements + +Traditional IAB format families (display, video, audio, native) are lossy abstractions that don't scale to emerging formats: +- **Performance Max** spans video, display, search, and native simultaneously +- **Search ads** (RSA) are text-only with high intent context +- **Conversational AI** placements don't fit traditional categories + +The `assets` array tells you exactly what creative elements are needed: +- Video required? Check for `asset_type: 'video'` +- Images required? Check for `asset_type: 'image'` +- Text only? All required assets have `asset_type: 'text'` + +AdCP supports formats across multiple media types: + +### Video Formats +- Standard video (15s, 30s, 60s) +- Vertical video for mobile/stories +- VAST/VPAID tags +- Interactive video + +See [Video Channel Guide](/dist/docs/3.0.13/creative/channels/video) for complete specifications. + +### Display Formats +- Standard IAB sizes (300x250, 728x90, etc.) +- Responsive units +- Rich media and expandable +- HTML5 creative + +See [Display Channel Guide](/dist/docs/3.0.13/creative/channels/display) for complete specifications. + +### Audio Formats +- Streaming audio (15s, 30s, 60s) +- Podcast insertion +- Companion banners +- VAST audio tags + +See [Audio Channel Guide](/dist/docs/3.0.13/creative/channels/audio) for complete specifications. + +### DOOH Formats +- Digital billboards +- Transit displays +- Retail screens +- Venue-based impression tracking + +See [DOOH Channel Guide](/dist/docs/3.0.13/creative/channels/dooh) for complete specifications. + +### Carousel/Multi-Asset Formats +- Product carousels (3-10 items) +- Story sequences +- Slideshow formats +- Frame-based structures + +See [Carousel Channel Guide](/dist/docs/3.0.13/creative/channels/carousels) for complete specifications. + +## Multi-Asset & Frame-Based Formats + +Some formats like carousels, slideshows, and stories use repeatable asset groups where each frame contains a collection of assets. See the [Carousel & Multi-Asset Formats guide](/dist/docs/3.0.13/creative/channels/carousels) for complete documentation on frame-based format patterns. + +## Reported Metrics + +Formats can declare which metrics they produce in delivery reporting via the `reported_metrics` field. This tells buyers what data to expect when purchasing inventory using this format. + +```json +{ + "format_id": { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "video_30s_hosted" + }, + "name": "30-Second Hosted Video", + "reported_metrics": [ + "impressions", "spend", "views", "completed_views", + "completion_rate", "quartile_data" + ] +} +``` + +### Intersection with Product Metrics + +Products declare their available metrics via `reporting_capabilities.available_metrics`. The buyer receives the **intersection** of format `reported_metrics` and product `available_metrics`. + +`impressions` and `spend` are always reported regardless of the intersection — they are implicit in every delivery response. The intersection applies to all other metrics. + +For example, if a video format declares `quartile_data` but the product only reports `impressions`, `spend`, and `clicks`, the buyer will not receive quartile data for that product. + +### When to Omit + +If `reported_metrics` is omitted, the format defers entirely to product-level metric declarations. This is appropriate for formats where the creative type does not inherently constrain which metrics are available (e.g., native formats where metrics depend on the platform). + +### Common Patterns + +**Video formats**: `impressions`, `spend`, `views`, `completed_views`, `completion_rate`, `quartile_data` + +**Display formats**: `impressions`, `spend`, `clicks`, `ctr`, `viewability` + +**DOOH formats**: `impressions`, `spend`, `dooh_metrics` + +**Social/performance formats**: `impressions`, `spend`, `clicks`, `ctr`, `conversions`, `engagement_rate` + +## Format Cards + +Format cards provide visual representations of creative formats for display in browsing and selection interfaces. Creative agents can optionally include card definitions that reference card formats and provide the assets needed to render attractive visual cards. + +### Card Types + +Creative agents should provide at least the standard card, and optionally a detailed card: + +**Standard Card** (`format_card`): +- Compact 300x400px card for format browsing +- Supports 2x density images for retina displays +- Quick visual understanding of format specs + +**Detailed Card** (`format_card_detailed`, optional): +- Responsive layout with text description alongside hero carousel showing format in context +- Markdown specifications section below +- Full format documentation similar to [Yahoo's ad specs](https://adspecs.yahooinc.com/premium-ads/e2e-horizon-desktop) + +### Structure + +```json +{ + "format_id": { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "video_standard_30s" + }, + "name": "Standard Video - 30 seconds", + "type": "video", + // ... other format fields ... + + "format_card": { + "format_id": { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "format_card_standard" + }, + "manifest": { + "display_name": "30-Second Video", + "preview_mockup_url": "https://cdn.example.com/format-mockups/video_30s.png", + "format_type_label": "Video" + } + }, + + "format_card_detailed": { + "format_id": { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "format_card_detailed" + }, + "manifest": { + "display_name": "Standard 30-Second Video", + "description": "The Edge A-Logs Horizon (desktop) format is an encompassing...", + "carousel_images": [ + "https://cdn.example.com/formats/video_30s_context1.jpg", + "https://cdn.example.com/formats/video_30s_context2.jpg" + ], + "specifications_markdown": "# Technical Specifications\n\n..." + } + } +} +``` + +### 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**: Creative agents can pre-generate cards and serve them directly + +This flexibility allows implementations 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: + +- **`format_card_standard`** (300x400px) - Compact card for format browsing +- **`format_card_detailed`** (responsive) - Rich card with carousel and full specs + +Creative agents can also define custom card formats to highlight unique format capabilities or match their branding. + +**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 Format Cards + +Format cards are optional but recommended for: +- Visual formats (display, video, DOOH) where mockups help explain the format +- Complex formats with multiple asset requirements +- Custom formats that differ from standard specifications +- Formats where visual preview aids buyer understanding + +Use the detailed card variant when you want to provide comprehensive format documentation similar to ad spec pages. + +### Client Rendering Guidelines + +When displaying formats in UIs, clients should follow this fallback order: + +1. **If `format_card` exists** → Render card via `preview_creative` or display pre-rendered image +2. **If no `format_card` exists** → Render text-only representation (format name + description) +3. **If card rendering fails** → Gracefully fall back to text-only representation + +This ensures a consistent user experience regardless of what format metadata is available. + +## Related Documentation + +- [Creative Protocol Overview](/dist/docs/3.0.13/creative) - How formats, manifests, and agents work together +- [Creative Manifests](/dist/docs/3.0.13/creative/creative-manifests) - Pairing assets with formats +- [Asset Types](/dist/docs/3.0.13/creative/asset-types) - Understanding asset specifications +- [Channel Guides](/dist/docs/3.0.13/creative/channels/video) - Detailed format documentation by media type +- [Implementing Standard Format Support](/dist/docs/3.0.13/media-buy/capability-discovery/implementing-standard-formats) - For sales agents +- [list_creative_formats Task](/dist/docs/3.0.13/creative/task-reference/list_creative_formats) - API reference for format discovery diff --git a/dist/docs/3.0.13/creative/generative-creative.mdx b/dist/docs/3.0.13/creative/generative-creative.mdx new file mode 100644 index 0000000000..d6bcabd797 --- /dev/null +++ b/dist/docs/3.0.13/creative/generative-creative.mdx @@ -0,0 +1,602 @@ +--- +title: Generative Creative +description: "Generative creative in AdCP uses AI to produce ad assets from a brief with three tiers: static manifests, asset group optimization, and per-context generation." +"og:title": "AdCP — Generative Creative" +"og:image": /images/walkthrough/diagram-generative-tiers.png +--- + +The Creative Protocol enables AI-powered creative generation and asset management for advertising campaigns. This guide will help you create your first creative in 5 minutes. + +Three tiers of generative creative: Tier 1 static (one creative, one variant), Tier 2 optimized (asset group combinations), Tier 3 generated (AI creates for each context) + +> **Technical Reference**: This guide shows how to use the [`build_creative` task](/dist/docs/3.0.13/creative/task-reference/build_creative). For complete API specifications, see the task reference documentation. + +## Overview + +The Creative Protocol provides AI-powered creative generation: + +- **`build_creative`**: Generate creative content using AI with either static manifests or dynamic code +- **`preview_creative`**: Generate previews of creative manifests +- **`list_creative_formats`**: Discover supported creative formats + +Assets are provided via [brand identity](/dist/docs/3.0.13/brand-protocol/brand-json) - no separate asset library management needed. + +## Quick Start: Generate Your First Creative + +### Step 1: Basic Creative Generation + +Here's the simplest possible request to generate a native display ad: + +```json +{ + "message": "Create a simple ad for a coffee shop promotion - 20% off all drinks this week", + "target_format_id": { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "display_native" + } +} +``` + +### Step 2: Understanding the Response + +You'll receive a structured creative manifest: + +```json +{ + "creative_manifest": { + "format_id": { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "display_native" + }, + "assets": { + "headline": { + "content": "20% Off All Drinks This Week!" + }, + "description": { + "content": "Visit our cozy coffee shop and enjoy premium coffee at an unbeatable price." + }, + "call_to_action": { + "content": "Visit Today" + } + } + } +} +``` + +### Step 3: Preview Your Creative + +Preview the manifest to see what it looks like before iterating: + +```json +{ + "request_type": "single", + "creative_manifest": { + "format_id": { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "display_native" + }, + "assets": { + "headline": { + "content": "20% Off All Drinks This Week!" + }, + "description": { + "content": "Visit our cozy coffee shop and enjoy premium coffee at an unbeatable price." + }, + "call_to_action": { + "content": "Visit Today" + } + } + } +} +``` + +The response includes a preview URL you can embed in an iframe. See [`preview_creative`](/dist/docs/3.0.13/creative/task-reference/preview_creative) for device variants, batch preview, and output format options. + +### Step 4: Refine Your Creative + +Iterate by passing the previous output's `creative_manifest` back 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 +{ + "message": "Make the headline more exciting and add urgency", + "target_format_id": { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "display_native" + }, + "creative_manifest": { + "format_id": { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "display_native" + }, + "assets": { + "headline": { + "content": "20% Off All Drinks This Week!" + } + } + } +} +``` + +## Common Patterns + +### Using brand identity + +Provide brand context for better creative generation: + +```json +{ + "message": "Create a display ad for our coffee shop promotion", + "target_format_id": { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "display_300x250" + }, + "brand": { + "domain": "mycoffeeshop.com" + } +} +``` + +**Minimal brand reference**: Start with just a domain for low-friction creative generation: + +```json +{ + "message": "Create a coffee shop ad", + "target_format_id": { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "display_native" + }, + "brand": { + "domain": "mycoffeeshop.com" + } +} +``` + +See [brand.json reference](/dist/docs/3.0.13/brand-protocol/brand-json) for comprehensive examples. + +### Using Your Own Assets + +Provide existing assets to incorporate into the creative: + +```json +{ + "message": "Create a display ad featuring our signature latte", + "target_format_id": { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "display_300x250" + }, + "creative_manifest": { + "format_id": { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "display_300x250" + }, + "assets": { + "brand_logo": { + "url": "https://mycoffeeshop.com/assets/logo.png", + "width": 200, + "height": 50 + } + } + } +} +``` + +### Generating Dynamic Code + +The creative agent decides whether to return a static manifest or dynamic code based on the brief's requirements. When the creative requires runtime logic — like weather-responsive behavior, time-of-day adaptation, or location-based content — the agent returns executable code in the manifest's assets. + +Use a descriptive brief that implies dynamic behavior: + +```json +{ + "message": "Create a weather-responsive coffee ad that shows hot drinks when cold, iced drinks when warm", + "target_format_id": { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "display_native" + } +} +``` + +Code-based creatives are indicated by the asset structure in the response — the manifest includes code assets alongside or instead of static content: + +```json +{ + "creative_manifest": { + "format_id": { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "display_native" + }, + "assets": { + "code": { + "content": "" + }, + "headline_warm": { + "content": "Cool Down with Our Iced Collection" + }, + "headline_cold": { + "content": "Warm Up with Our Signature Roasts" + } + } + } +} +``` + +### Attaching creatives to a media buy + +Once you've built and previewed your creative, attach it to a media buy. Pass the manifest from `build_creative` as a creative in `create_media_buy` (see [`create_media_buy`](/dist/docs/3.0.13/media-buy/task-reference/create_media_buy) for the full request structure): + +```json +{ + "packages": [{ + "product_id": "premium_display", + "pricing_option_id": "cpm_standard", + "budget": 10000, + "creatives": [{ + "creative_id": "coffee_promo_v3", + "name": "Coffee shop 20% off - final", + "format_id": { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "display_native" + }, + "assets": { + "headline": { + "content": "This Week Only: 20% Off Every Drink!" + }, + "description": { + "content": "Visit our cozy coffee shop and enjoy premium coffee at an unbeatable price." + }, + "call_to_action": { + "content": "Visit Today" + } + } + }] + }] +} +``` + +For sellers with [inline creative management](/dist/docs/3.0.13/creative/sales-agent-creative-capabilities), creatives travel with the media buy. For other workflows, use [`sync_creatives`](/dist/docs/3.0.13/creative/task-reference/sync_creatives) to upload creatives to the sales agent's library before referencing them in a media buy. + +## Format Discovery + +### Standard Formats + +Common format IDs you can use immediately: +- `display_native` - Native advertising format +- `display_300x250` - Medium rectangle banner +- `video_standard_30s` - 30-second video ad + +### Publisher-Specific Formats + +For custom publisher formats, specify the source: + +```json +{ + "message": "Create a premium video ad", + "target_format_id": { + "agent_url": "https://premium-publisher.com", + "id": "premium_video_15s" + } +} +``` + +## Seller-side generation (brief in media buy) + +The examples above use `build_creative` to generate creatives interactively. A different pattern applies when the seller generates creatives at serve time — contextual ads, page-matched display, or AI-generated native. + +In this flow, the sales agent implements both the Media Buy Protocol and the Creative Protocol. The buyer provides a brief as part of `create_media_buy`, and the seller generates creatives at serve time without any separate `build_creative` call. + +### How it works + +1. **Discover generative formats** — Call `list_creative_formats` on the sales agent. Look for formats where `format_id.agent_url` points to the sales agent itself. + +2. **Submit brief in media buy** — Include a creative with the brief as an asset: + +```json +{ + "packages": [{ + "product_id": "premium_display", + "pricing_option_id": "cpm_standard", + "budget": 50000, + "creatives": [{ + "creative_id": "brand_contextual_brief", + "name": "Contextual campaign brief", + "format_id": { + "agent_url": "https://ads.seller-example.com", + "id": "contextual_display_generative" + }, + "assets": { + "brief": { + "content": "Highlight our sustainability story. Match tone to editorial context. Avoid competitor comparisons." + } + } + }] + }] +} +``` + +3. **Preview before launch** — Call `preview_creative` on the sales agent with the brief manifest and `context_description` inputs to see representative samples of what the agent will generate. Use `quality: "draft"` for fast iteration, `quality: "production"` for stakeholder review. These are illustrative — real output depends on live signals at serve time. + +```json +{ + "request_type": "single", + "quality": "draft", + "creative_manifest": { + "format_id": { + "agent_url": "https://ads.seller-example.com", + "id": "contextual_display_generative" + }, + "assets": { + "brief": { + "content": "Highlight our sustainability story. Match tone to editorial context. Avoid competitor comparisons." + } + } + }, + "inputs": [ + { "name": "Tech article", "context_description": "Article about semiconductor manufacturing" }, + { "name": "Travel blog", "context_description": "Blog post about eco-friendly travel" } + ] +} +``` + +Preview doesn't require the media buy to be active — you can preview with just the brief manifest before calling `create_media_buy`. See [Previewing generative creative](/dist/docs/3.0.13/creative/task-reference/preview_creative#previewing-generative-creative) for the full mental model. + +4. **Seller generates at serve time** — The seller uses the brief plus the buyer's [brand identity](/dist/docs/3.0.13/brand-protocol/brand-json) to generate page-tailored creatives per impression or per page context. The brief and brand identity act as guardrails — the agent generates within these constraints. No buyer action is required for ongoing generation. + +5. **Review generated variants** — Call `get_creative_delivery` on the sales agent (it implements the Creative Protocol) to see what was generated, including variant manifests and generation context: + +```json +{ + "media_buy_ids": ["mb_12345"], + "max_variants": 20 +} +``` + +The response includes variant-level manifests showing exactly what was served, along with the generation context (page topic, device class, etc.). + +**Variant retention**: Agents are not required to retain variant data indefinitely. When calling `get_creative_delivery`, use `max_variants` to control how many variants are returned per creative. Agents select which variants to return based on their own criteria — typically by impression volume (most-served first), but some may use recency or representative sampling. For high-volume generative campaigns, expect that only a subset of all generated variants is retained. Request `max_variants` early and often during the campaign rather than relying on a single post-flight pull. + +### Key differences from `build_creative` + +| Aspect | `build_creative` | Brief in media buy | +|---|---|---| +| When generation happens | On demand, before campaign starts | At serve time, throughout campaign | +| Who generates | Standalone creative agent or sales agent | Sales agent (integrated) | +| Pre-launch preview | Immediate (manifest is the creative) | Representative samples (brief + simulated context) | +| Buyer interaction | Interactive — review, iterate, approve | Preview samples, then set-and-forget — brief is the ongoing constraint | +| Variant visibility | Immediate (returned in response) | After serving (via `get_creative_delivery`) | +| Format authority | `format_id.agent_url` points to the agent that owns the format | `format_id.agent_url` is the sales agent itself | + +See [Creative capabilities on sales agents](/dist/docs/3.0.13/creative/sales-agent-creative-capabilities) for the full pattern. + +### Guardrails for serve-time generation + +When the seller generates creatives at serve time, the buyer's controls are: + +- **The brief** — explicit instructions on tone, topics, exclusions ("Avoid competitor comparisons") +- **Brand identity** — colors, logos, voice guidelines, approved assets via [brand.json](/dist/docs/3.0.13/brand-protocol/brand-json) +- **Pre-flight preview** — sample what the agent generates across contexts before launch +- **Post-flight audit** — review variant manifests and generation context via `get_creative_delivery`, replay specific variants via `preview_creative` variant mode + +If post-flight review reveals off-brand variants, update the brief with more specific constraints and re-submit via `create_media_buy`. For regulated categories (financial services, pharma), include compliance requirements in the brief — agents that declare `supports_compliance: true` in their creative capabilities validate disclosures and required elements during generation. + +## Conversational and interactive formats + +Some generative formats are stateful — AI chat, interactive experiences, conversational native ads. These follow the same brief-in-media-buy pattern but have unique characteristics worth understanding. + +### Format discovery + +A conversational format in `list_creative_formats` might look like: + +```json +{ + "format_id": { + "agent_url": "https://ads.seller-example.com", + "id": "conversational_native" + }, + "name": "Conversational native ad", + "type": "native", + "description": "AI-powered conversational ad that responds to user messages within the content feed. Adapts tone and recommendations based on conversation context." +} +``` + +### Brief structure + +The brief for a conversational format includes persona, topic boundaries, and guardrails: + +```json +{ + "packages": [{ + "product_id": "premium_native", + "pricing_option_id": "cpm_engaged", + "budget": 25000, + "creatives": [{ + "creative_id": "brand_chat_brief", + "name": "Product advisor chat", + "format_id": { + "agent_url": "https://ads.seller-example.com", + "id": "conversational_native" + }, + "assets": { + "brief": { + "content": "Act as a helpful product advisor for our outdoor gear line. Recommend products based on the user's activity interests. Keep responses concise (2-3 sentences). Never discuss competitor products. Always include a product link when recommending." + } + } + }] + }] +} +``` + +### Previewing conversations + +Pre-flight previews for conversational formats produce a representative first interaction. Use `context_description` to simulate different entry points: + +```json +{ + "request_type": "batch", + "quality": "production", + "requests": [ + { + "creative_manifest": { + "format_id": { + "agent_url": "https://ads.seller-example.com", + "id": "conversational_native" + }, + "assets": { + "brief": { + "content": "Act as a helpful product advisor for our outdoor gear line. Recommend products based on the user's activity interests." + } + } + }, + "inputs": [ + { "name": "Hiking enthusiast", "context_description": "User reading an article about day hikes near Portland" }, + { "name": "Runner", "context_description": "User browsing a running shoe review page" } + ] + } + ] +} +``` + +When the preview response includes an `interactive_url`, reviewers can interact with the experience directly in a sandbox — testing different conversation paths, verifying guardrails, and checking tone. + +**Testing guardrails**: Include adversarial contexts in your preview inputs to verify the agent respects brief constraints: + +```json +{ + "inputs": [ + { "name": "Competitor question", "context_description": "User asks which brand makes better hiking boots than yours" }, + { "name": "Off-topic request", "context_description": "User asks for medical advice about a knee injury" }, + { "name": "Price haggling", "context_description": "User asks for a discount code or tries to negotiate pricing" } + ] +} +``` + +Review these previews carefully — they reveal how the agent handles edge cases that the happy-path previews won't surface. + +For conversational formats, the preview response may include an `interactive_url` where reviewers can test the conversation live: + +```json +{ + "response_type": "single", + "previews": [ + { + "preview_id": "prev_hiker", + "renders": [ + { + "render_id": "render_1", + "output_format": "url", + "preview_url": "https://ads.seller-example.com/preview/conv_hiker_001", + "role": "primary" + } + ], + "input": { "name": "Hiking enthusiast", "context_description": "User reading an article about day hikes near Portland" } + } + ], + "interactive_url": "https://ads.seller-example.com/sandbox/conv_hiker_001", + "expires_at": "2026-04-01T00:00:00Z" +} +``` + +The `interactive_url` provides a sandbox where reviewers can have a real conversation with the agent, testing different paths and verifying guardrails interactively. Static previews show a representative first interaction; the sandbox shows how the agent actually behaves. + +### Variant manifests for conversations + +After the campaign runs, `get_creative_delivery` returns variant manifests that capture what the agent produced. For conversational formats, each variant represents a conversation session: + +```json +{ + "variant_id": "conv_hiker_session_042", + "generation_context": { + "context_type": "conversational", + "topic": "outdoor recreation, hiking gear", + "device_class": "mobile", + "ext": { + "turn_count": 4, + "engagement_duration_seconds": 45 + } + }, + "manifest": { + "format_id": { + "agent_url": "https://ads.seller-example.com", + "id": "conversational_native" + }, + "assets": { + "greeting": { + "asset_type": "text", + "content": "Planning a hike? I can help you find the right gear for the trail." + }, + "transcript": { + "asset_type": "text", + "content": "Agent: Planning a hike? I can help you find the right gear for the trail.\nUser: Looking for a lightweight daypack\nAgent: For day hikes near Portland, I'd recommend our TrailLite 22L — it's 380g with a built-in rain cover. [link]\nUser: What about trekking poles?\nAgent: The CompactTrek poles fold to 36cm and weigh just 240g per pair. Great for the elevation changes on trails like Dog Mountain. [link]" + }, + "products_shown": { + "asset_type": "text", + "content": "TrailLite 22L Daypack, CompactTrek Folding Poles" + } + } + }, + "impressions": 1, + "clicks": 2 +} +``` + +The level of detail in variant manifests depends on the agent. Some provide full transcripts (as shown above), others provide summarized exchanges with anonymized user signals. The key is that the buyer can audit what the brand's AI said to users. + +### Session management and data handling + +Conversational formats raise considerations that static ads do not: + +- **Turn limits**: Include turn or duration limits in the brief ("End the conversation gracefully after 5 exchanges"). Agents may also enforce their own limits — check the format description in `list_creative_formats`. +- **Escalation**: Define what the agent should do when it cannot answer ("If the user asks about returns, provide a link to our help center"). Without explicit guidance, agent behavior on out-of-scope questions is undefined. +- **User data in transcripts**: Variant manifests from `get_creative_delivery` may include user messages. For regulated industries, confirm the agent's data handling practices (anonymization, retention limits) before launch. +- **Cost implications**: Conversational ads with per-engagement or per-turn pricing can have variable costs. Review the product's pricing model in `get_products` to understand how conversation depth affects spend. + +These constraints are expressed in natural language in the brief. The protocol does not enforce them at runtime — verify compliance through post-flight variant review via [`get_creative_delivery`](/dist/docs/3.0.13/creative/task-reference/get_creative_delivery). + +See [Previewing generative creative](/dist/docs/3.0.13/creative/task-reference/preview_creative#conversational-and-interactive-formats) for the full mental model on previewing stateful formats. + +## Next steps + +- **Multi-format generation**: Generate creatives for multiple sizes in one call with `target_format_ids` — see [Multi-format generation](/dist/docs/3.0.13/creative/task-reference/build_creative#multi-format-generation) +- **Browse examples**: See [Task reference](/dist/docs/3.0.13/creative/task-reference/build_creative) for `build_creative` examples +- **Sales agent creative flow**: See [Creative capabilities on sales agents](/dist/docs/3.0.13/creative/sales-agent-creative-capabilities) for seller-side generation +- **Delivery reporting**: See [get_creative_delivery](/dist/docs/3.0.13/creative/task-reference/get_creative_delivery) for variant-level analytics + +## Common Issues + +### Format Not Found +If you get a format error, the publisher may not support that format. Try: +1. Use a standard AdCP format first (`display_native`, `video_standard_30s`) +2. Check the publisher's `list_creative_formats` endpoint +3. Verify the `format_id.agent_url` is correct + +### Understanding the quality model + +Creative quality has two independent axes: + +- **Build quality** (`quality` on `build_creative`): Controls generation fidelity — how much compute goes into producing the creative. `draft` produces rough concepts fast (lower-resolution images, simplified layouts). `production` produces polished, final-quality output. +- **Preview quality** (`quality` on `preview_creative`, `preview_quality` on `build_creative`): Controls render fidelity — how the creative is visualized for review. `draft` produces fast, lower-fidelity renderings for rapid iteration. `production` produces full-quality renderings for stakeholder review. + +These axes are independent. Common combinations: + +| Build | Preview | Use case | +|---|---|---| +| draft | draft | Rapid exploration — fast concepts, fast previews | +| draft | production | Stakeholder review of rough concepts — full-quality rendering of draft creative | +| production | production | Final review — polished creative, polished preview | +| production | draft | Thumbnail grid — final creative shown as quick thumbnails for selection | + +Agents that support only one quality level silently ignore the parameter they don't support. There is no echo-back field — verify quality by inspection. + +### Creative Quality Issues +To improve creative output: +1. **Build quality** and **preview quality** are independent axes — see [Understanding the quality model](#understanding-the-quality-model) above. Use `draft` for iteration, `production` for final review. +2. Be more specific in your message: "Create a minimalist coffee ad with earth tones" +3. Provide comprehensive brand identity with assets and guidelines +4. Iterate using [refinement](/dist/docs/3.0.13/creative/task-reference/build_creative#iterative-refinement) — pass back the manifest with a new message, or update the brief asset + +### Asset Management +Assets are provided via [brand identity](/dist/docs/3.0.13/brand-protocol/brand-json): +1. Include assets in brand identity with descriptive tags +2. Use `asset_filters` in requests to select specific assets +3. Reference product catalogs for large inventories + +Ready to create your first creative? Start with the basic example above and explore from there! \ No newline at end of file diff --git a/dist/docs/3.0.13/creative/implementing-creative-agents.mdx b/dist/docs/3.0.13/creative/implementing-creative-agents.mdx new file mode 100644 index 0000000000..37b10e4b0a --- /dev/null +++ b/dist/docs/3.0.13/creative/implementing-creative-agents.mdx @@ -0,0 +1,680 @@ +--- +title: Implementing Creative Agents +description: "How to build an AdCP creative agent that defines formats, validates manifests, generates previews, and hosts a creative library." +"og:title": "AdCP — Implementing Creative Agents" +--- + + +This guide explains how to implement a creative agent that defines and manages creative formats. + +## What is a creative agent? + +A creative agent is a service that: +- **Defines formats** - Specifies what assets are required and how they should be structured +- **Validates manifests** - Ensures creative manifests meet format requirements +- **Generates previews** - Shows how creatives will render +- **Builds creatives** (optional) - Generates manifests from natural language briefs or retrieves them from a library +- **Hosts a creative library** (optional) - Lets buyers browse and filter existing creatives + +An ad server (CM360, Flashtalking), creative management platform, creative agency, publisher, or sales agent can implement a creative agent. Sales agents that implement the Creative Protocol alongside the Media Buy Protocol serve both roles from a single endpoint — see [Creative capabilities on sales agents](/dist/docs/3.0.13/creative/sales-agent-creative-capabilities). + +## Three interaction models + +Creative agents fall into three distinct categories based on how assets arrive and what the output is. Identifying which model your agent follows determines which tasks to implement and how buyers will interact with you. + +### Stateless: template and transformation agents + +**Examples:** Celtra, format conversion services, rich media template platforms + +The buyer passes all assets inline with each call. Your agent applies a template or transformation and returns the result. There is no persistent creative library — every call is self-contained. + +| Task | Role | +|---|---| +| `list_creative_formats` | Discover available templates and their asset requirements | +| `preview_creative` | Render a template with provided assets | +| `build_creative` | Transform input assets into a serving tag | + +**Capabilities:** `supports_transformation: true` + +The buyer's workflow: discover your formats → preview with real assets → request built creatives for trafficking. + +### Stateful (pre-loaded): ad servers + +**Examples:** Innovid, Flashtalking, CM360 + +Creatives already exist in your system, loaded through your platform's UI or API. Buyers connect to browse your library and request serving tags for their media buys. The buyer never pushes assets to you — they reference creatives that are already there. + +| Task | Role | +|---|---| +| `list_creatives` | Browse existing creatives in the library | +| `build_creative` | Generate a serving tag for a specific `creative_id` and media buy | +| `preview_creative` | Preview an existing creative | +| `get_creative_delivery` | Report variant-level delivery metrics | + +**Capabilities:** `has_creative_library: true` + +The buyer's workflow: browse your creative library → request tags per media buy → track delivery. + +### Stateful (push): sales agents with creative + +**Examples:** Publisher platforms, retail media networks, native ad platforms + +Buyers push creative assets or catalog items to your platform. You validate, store, and render them in your environment. This is where catalog-driven creative gets interesting — buyers might push product feeds, flight listings, or hotel inventory that you render as native ads. + +| Task | Role | +|---|---| +| `list_creative_formats` | Discover what formats you accept | +| `sync_creatives` | Accept pushed assets or catalog items | +| `preview_creative` | Preview pushed creatives in your platform's environment | +| `get_creative_delivery` | Report delivery metrics | + +**Capabilities:** `has_creative_library: true` + +The buyer's workflow: discover your accepted formats → push assets → preview in your environment. + +### Choosing your model + +The key question is: **where do the assets come from?** + +- If the buyer sends assets with every call → **stateless (template/transformer)** +- If creatives already exist in your system → **stateful (ad server)** +- If the buyer pushes assets to you for hosting → **stateful (sales agent)** + +Some agents combine models. A creative management platform might be both a template engine (stateless transformation) and a library host (stateful). Declare the appropriate capability flags in `get_adcp_capabilities` so buyers can determine the right interaction model. + +### Pricing and statefulness + +A creative agent that charges for its services needs an account relationship. Adding pricing requires: + +1. **Implement the [Accounts Protocol](/dist/docs/3.0.13/accounts/overview)** — buyers establish accounts with rate cards +2. **Expose `pricing_options` on discovery** — on `list_creative_formats` (transformation/generation agents) or `list_creatives` (ad servers/library agents) +3. **Return pricing in `build_creative` responses** — `pricing_option_id`, `vendor_cost`, `currency`, and `consumption` +4. **Accept `report_usage`** — orchestrators report what was served so you can track revenue + +Free transformation agents remain stateless and unchanged. No account, no pricing required. + +#### Pricing discovery by agent type + +| Agent type | Discovery surface | Why | +|---|---|---| +| **Transformation** (Celtra) | `list_creative_formats` | Buyers see pricing per format before any creative exists | +| **Generation** (AI platforms) | `list_creative_formats` | Same — pricing is on the capability, not a pre-existing creative | +| **Ad server** (Innovid, CM360) | `list_creatives` | Buyers see pricing on specific creatives in the library | +| **Both** (Celtra, creative management platforms) | Both surfaces | Library pricing on `list_creatives`, format pricing on `list_creative_formats` | + +Transformation and generation agents do not need to implement `list_creatives` for pricing — `list_creative_formats` is the natural surface since the format is the product. + +#### Pricing walkthrough + +Here is the full round-trip for a transformation agent charging per format adapted. + +**Step 1: Buyer discovers pricing via `list_creative_formats`** + +The buyer calls `list_creative_formats` with `include_pricing: true` and their `account`. Your agent looks up the account's rate card and returns `pricing_options` on each format: + +```json +{ + "formats": [ + { + "format_id": { "agent_url": "https://creative.example.com", "id": "display_300x250" }, + "name": "Display 300x250", + "pricing_options": [ + { + "pricing_option_id": "po_standard_per_format", + "model": "per_unit", + "unit": "format", + "unit_price": 2.00, + "currency": "USD" + }, + { + "pricing_option_id": "po_volume_per_format", + "model": "per_unit", + "unit": "format", + "unit_price": 1.25, + "currency": "USD" + } + ] + } + ] +} +``` + +Multiple options are common — here the buyer sees a standard rate and a volume rate. For ad servers, the same `pricing_options` pattern appears on `list_creatives` instead. + +**Step 2: Buyer builds a creative** + +The buyer calls `build_creative` with their `account`. Your agent performs the work, selects the applicable pricing option server-side (based on the account's commitment level, the work performed, etc.), and returns the cost: + +```json +{ + "creative_manifest": { + "creative_id": "cr_hero_banner", + "format_id": { "agent_url": "https://creative.example.com", "id": "display_728x90" }, + "assets": { "..." : "..." } + }, + "pricing_option_id": "po_standard_per_format", + "vendor_cost": 2.00, + "currency": "USD", + "consumption": { + "renders": 1 + } +} +``` + +The `pricing_option_id` tells the buyer which rate was applied. The `consumption` object lets the buyer verify: 1 render × $2.00/format = $2.00 `vendor_cost`. + +For **CPM-priced creatives** (ad servers), `vendor_cost` is 0 at build time — cost accrues when impressions are served: + +```json +{ + "creative_manifest": { "..." : "..." }, + "pricing_option_id": "po_video_cpm", + "vendor_cost": 0, + "currency": "USD" +} +``` + +**Step 3: Buyer reports usage** + +After the campaign delivers, the buyer reports usage via [`report_usage`](/dist/docs/3.0.13/accounts/tasks/report_usage). This example shows CPM reporting, where cost accrued during delivery rather than at build time. The `pricing_option_id` and `creative_id` flow through for reconciliation: + +```json +{ + "reporting_period": { "start": "2026-03-01T00:00:00Z", "end": "2026-03-31T23:59:59Z" }, + "usage": [ + { + "account": { "account_id": "acct_acme_creative" }, + "creative_id": "cr_hero_banner", + "pricing_option_id": "po_video_cpm", + "impressions": 2400000, + "vendor_cost": 1200.00, + "currency": "USD" + } + ] +} +``` + +Your agent validates that `pricing_option_id` matches the account's rate card and accepts the record. + +#### Who selects the pricing option? + +The **vendor agent** selects the pricing option, not the buyer. The buyer passes `account` on `build_creative` — the agent determines which pricing option applies based on the account's rate card, the work performed, and any commitment tiers. The response tells the buyer what was applied. + +The buyer does not pass `pricing_option_id` on the `build_creative` request. They see the options on `list_creatives`, and they receive the applied option on the `build_creative` response. + +#### Consumption fields by agent type + +| Agent type | Typical `consumption` fields | Notes | +|---|---|---| +| Transformation | `renders` | Number of format adaptations performed | +| AI generation | `tokens`, `images_generated` | LLM tokens consumed, images produced | +| Ad server (CPM) | Omitted | Cost accrues at serve time, not build time | +| Multi-variant | `renders` | Number of variants rendered | + +The `consumption` object is informational — it lets the buyer verify that `vendor_cost` is consistent with the rate card. `vendor_cost` is the billing source of truth. + +## Core requirements + +### 1. Format ID namespacing + +Every format you define must use structured format IDs with your agent URL to prevent conflicts: + +```json +{ + "format_id": { + "agent_url": "https://youragency.com", + "id": "video_story_15s" + } +} +``` + +**Rules:** +- `agent_url` must match your agent's URL +- `id` should be descriptive and unique within your namespace +- Use lowercase with underscores for consistency + +### 2. Format validation + +When formats reference your agent_url, you are the authority for: +- Format specifications +- Asset validation rules +- Technical requirements +- Preview generation + +**Format definition example:** + +```json +{ + "format_id": { + "agent_url": "https://youragency.com", + "id": "story_sequence_5frame" + }, + "name": "5-Frame Story Sequence", + "type": "display", + "min_frames": 5, + "max_frames": 5, + "frame_schema": { + "assets": [ + { + "asset_type": "image", + "asset_role": "frame_image", + "required": true, + "requirements": { + "width": 1080, + "height": 1920, + "file_types": ["jpg", "png", "webp"], + "max_file_size_kb": 500 + } + }, + { + "asset_type": "text", + "asset_role": "caption", + "required": false, + "requirements": { + "max_length": 100 + } + } + ] + }, + "global_assets": [ + { + "asset_type": "image", + "asset_role": "brand_logo", + "required": true, + "requirements": { + "width": 200, + "height": 200, + "transparency_required": true + } + } + ] +} +``` + +## Required tasks + +Creative agents must implement these two tasks: + +### list_creative_formats + +Return all formats your agent defines. This is how buyers discover what creative formats you support. + +**Key responsibilities:** +- Return complete format definitions with all `assets` (both required and optional) +- Include your `agent_url` in each format +- Use proper namespacing for `format_id` values + +See [list_creative_formats task reference](/dist/docs/3.0.13/creative/task-reference/list_creative_formats) for complete API specification. + +### preview_creative + +Generate a visual preview showing how a creative manifest will render in your format. + +**Key responsibilities:** +- Validate manifest against format requirements +- Return validation errors if manifest is invalid +- Generate visual representation (URL, image, or HTML) +- Preview should be accessible for at least 24 hours + +See [preview_creative task reference](/dist/docs/3.0.13/creative/task-reference/preview_creative) for complete API specification. + +## Optional tasks + +### build_creative + +Generate a creative manifest from a natural language brief, transform an existing manifest to a new format, or retrieve a library creative as a delivery-ready manifest. + +**Key responsibilities:** +- Parse natural language brief or resolve a `creative_id` from your library +- Generate or source appropriate assets +- Return valid manifest for the target format +- Substitute `macro_values` into serving tags when provided +- Optionally return preview URL + +See [build_creative task reference](/dist/docs/3.0.13/creative/task-reference/build_creative) for complete API specification. + +### list_creatives + +Browse and filter creatives in your library. Implement this if your platform hosts a creative library that buyers need to query. + +**Key responsibilities:** +- Return creatives accessible to the authenticated account +- Support filtering by format, status, tags, and date range +- Support pagination for large libraries +- Optionally include dynamic creative optimization (DCO) variable definitions per creative + +See [list_creatives task reference](/dist/docs/3.0.13/creative/task-reference/list_creatives) for complete API specification. + +### sync_creatives + +Accept creative asset uploads into your library. Implement this if your platform allows buyers to push assets. + +**Key responsibilities:** +- Validate creatives against format specifications +- Return per-creative results with platform-assigned IDs +- Support upsert semantics (create or update by `creative_id`) +- Optionally support bulk package assignments (for agents that also manage media buys) +- Optionally support async approval workflows for brand safety review + +See [sync_creatives task reference](/dist/docs/3.0.13/creative/task-reference/sync_creatives) for complete API specification. + +## Validation best practices + +### Manifest validation + +When validating manifests: + +1. **Check format_id** - Ensure it references your agent +2. **Validate required assets** - All required assets must be present +3. **Check asset types** - Assets must match specified types +4. **Validate requirements** - Dimensions, file types, sizes, etc. +5. **URL accessibility** - Verify asset URLs are accessible (optional but recommended) + +**Example validation errors:** + +```json +{ + "status": "error", + "error": "validation_failed", + "validation_errors": [ + { + "asset_id": "frame_1_image", + "error": "missing_required_asset", + "message": "Required asset 'frame_1_image' is missing" + }, + { + "asset_id": "brand_logo", + "error": "invalid_dimensions", + "message": "Logo must be 200x200px, got 150x150px" + } + ] +} +``` + +### Disclosure requirements + +When a creative brief includes `compliance.required_disclosures`, creative agents must ensure each disclosure appears in the generated creative. The workflow: + +1. **Check format support** — Compare each `required_disclosures[].position` against the format's `supported_disclosure_positions` or `disclosure_capabilities`. If a required position is not supported by the format, return a validation error rather than silently dropping it. When `disclosure_capabilities` is present, use it for persistence-aware matching — verify that the format supports both the required position and the required persistence mode. + +2. **Respect persistence** — When the brief specifies `persistence` on a required disclosure, the creative agent must satisfy it using a position that supports that persistence mode in the format's `disclosure_capabilities`. For example, if a brief requires `"continuous"` persistence for an EU AI Act disclosure, the format must declare that position with `"continuous"` in its `disclosure_capabilities`. When the brief omits `persistence`, use the most restrictive persistence mode the format supports for that position. + +3. **Render disclosures** — For positions your format supports: + - `footer`, `overlay`, `end_card`, `prominent`: Render the disclosure `text` into the creative at the specified position + - `audio`, `pre_roll`: Include disclosure as spoken audio. Respect `min_duration_ms` if specified. + - `subtitle`: Include as a text track within the video creative + - `companion`: Deliver in the companion ad unit alongside the primary creative + +4. **Respect jurisdiction scoping** — A disclosure with `jurisdictions: ["US"]` is legally required only in the US. Creative agents that produce a single creative per brief should include all jurisdictional disclosures. If your agent can produce jurisdiction-specific variants, filter disclosures by their `jurisdictions` field. + +5. **Propagate into provenance** — When the brief specifies `persistence` and `position` on a required disclosure, propagate these into `provenance.disclosure.jurisdictions[].render_guidance` on the creative manifest. The brief is a creation-time document; at serve time, the publisher has the creative and its provenance, not the brief. If the creative agent does not propagate persistence into provenance render guidance, the publisher has no way to know what persistence the regulation requires. + +6. **Preserve through regeneration** — When regenerating or resizing a creative, carry forward all disclosures from the `BriefAsset` attached to the manifest. A `BriefAsset` is a `brief`-typed asset in the format's `assets` array that carries the creative brief through the manifest, ensuring disclosures survive format adaptation. + +**Example:** A brief requires `"KI-generiert"` disclosure at `overlay` position with `persistence: "continuous"` for `eu_ai_act_article_50`. Your format declares `disclosure_capabilities: [{ "position": "overlay", "persistence": ["continuous", "initial"] }]`. The format supports continuous overlay, so the creative agent renders the disclosure as a persistent overlay visible throughout the content. The agent also propagates `render_guidance: { "persistence": "continuous", "positions": ["overlay"] }` into the EU jurisdiction entry in `provenance.disclosure.jurisdictions[]`. + +### Format evolution + +When updating format definitions: + +- **Additive changes** (new optional assets with `required: false` in `assets`) are safe +- **Breaking changes** (removing assets, changing requirements) require new format_id +- Consider versioning: `youragency.com:format_name_v2` +- Maintain backward compatibility when possible + +## Deployment checklist + +Before launching your creative agent: + +- [ ] MCP and/or A2A endpoints are accessible +- [ ] All format_ids use proper namespacing (`domain:id`) +- [ ] Domain in format_id matches your `agent_url` domain +- [ ] `list_creative_formats` returns all your formats +- [ ] `preview_creative` validates manifests and generates previews +- [ ] Format definitions include complete asset requirements +- [ ] Documentation available for your custom formats + +## Integration patterns + +### Pattern 1: creative agency + +You're a creative agency building custom formats for brands: + +```json +{ + "format_id": { + "agent_url": "https://brandstudio.com", + "id": "hero_video_package" + }, + "name": "Hero Video Package", + "type": "video", + "description": "Premium video creative with multiple aspect ratios", + "assets": [ + {"asset_role": "hero_video_16x9", ...}, + {"asset_role": "hero_video_9x16", ...}, + {"asset_role": "hero_video_1x1", ...} + ] +} +``` + +### Pattern 2: platform-specific formats + +You're a platform defining specialized formats: + +```json +{ + "format_id": { + "agent_url": "https://platform.com", + "id": "interactive_quiz" + }, + "name": "Interactive Quiz Ad", + "type": "rich_media", + "description": "Engagement-driven quiz format", + "assets": [ + {"asset_role": "question_1", "asset_type": "text", ...}, + {"asset_role": "answer_1a", "asset_type": "text", ...}, + // ... quiz structure + ] +} +``` + +### Pattern 3: format extension service + +You provide enhanced versions of standard formats: + +```json +{ + "format_id": { + "agent_url": "https://enhanced.com", + "id": "video_30s_optimized" + }, + "name": "Optimized 30s Video", + "type": "video", + "extends": "creative.adcontextprotocol.org:video_30s", + "description": "Standard 30s video with automatic optimization", + "assets": [ + // Same requirements as standard format + ], + "enhancements": { + "auto_transcode": true, + "quality_optimization": true, + "format_variants": ["mp4", "webm", "hls"] + } +} +``` + +### Pattern 4: feed-native/social format agent + +You host ad formats that render as native content within your platform's feed: + +```json +{ + "format_id": { + "agent_url": "https://ads.socialplatform.com", + "id": "promoted_post" + }, + "name": "Promoted post", + "type": "native", + "description": "Sponsored content that appears in the feed alongside organic posts. Renders with platform chrome (user avatar, engagement buttons, community badge).", + "assets": [ + { + "item_type": "individual", + "asset_id": "headline", + "asset_type": "text", + "required": true, + "requirements": { "max_length": 300 } + }, + { + "item_type": "individual", + "asset_id": "body", + "asset_type": "text", + "required": false, + "requirements": { "max_length": 1000 } + }, + { + "item_type": "individual", + "asset_id": "image", + "asset_type": "image", + "required": false, + "requirements": { "max_width": 1200, "max_height": 628, "accepted_types": ["image/jpeg", "image/png"] } + }, + { + "item_type": "individual", + "asset_id": "click_url", + "asset_type": "url", + "required": true, + "requirements": {} + } + ] +} +``` + +Platform-specific rendering (dark mode, community context, engagement UI) is handled by the agent at preview and serve time — the format definition specifies only the buyer-provided assets. The agent wraps these assets in the platform's native chrome. + +When a buyer calls `preview_creative` for a feed-native format, the preview renders the buyer's assets inside the platform's UI — avatar, engagement buttons, community badge, and all: + +```json +{ + "request_type": "single", + "creative_manifest": { + "format_id": { + "agent_url": "https://ads.socialplatform.com", + "id": "promoted_post" + }, + "assets": { + "headline": { "content": "Introducing our new trail running collection" }, + "body": { "content": "Built for the mountains. Tested on every terrain." }, + "image": { "url": "https://cdn.acme-example.com/trail-hero.jpg", "width": 1200, "height": 628 }, + "click_url": { "url": "https://acme-example.com/trail-running" } + } + }, + "inputs": [ + { "name": "Running community", "context_description": "Appears in r/trailrunning feed between user posts" }, + { "name": "General feed", "context_description": "Appears in home feed between mixed content" } + ] +} +``` + +The preview response shows how the ad looks in each context — including community-specific chrome that the buyer cannot preview elsewhere. This is why platforms should implement `preview_creative` even for simple formats: the platform chrome is the differentiator. + +## Platform mapping + +If you're wrapping an existing ad server or creative management platform, this section shows how common platform concepts map to the creative protocol. + +### Concept mapping + +| Platform concept | AdCP equivalent | Notes | +|---|---|---| +| Advertiser / account | Account (via [accounts protocol](/dist/docs/3.0.13/accounts/overview)) | Buyer establishes access before querying the library | +| Creative concept / group / template folder | `concept_id` in `list_creatives` | Groups related creatives across sizes/formats (Flashtalking concepts, Celtra campaign folders, CM360 creative groups) | +| Creative | Creative item in `list_creatives` response | | +| Creative type + size | `format_id` (structured object with `agent_url`, `id`, dimensions) | AdCP combines type and size into a single format reference | +| Template (Celtra's term) | Format (via `list_creative_formats`) | Celtra templates define structure and available properties; AdCP formats define structure and available assets | +| Template object properties (Celtra) | `variables` array | Named slots with types (text, color, image, video, number, boolean) — near-exact match | +| Active / archived / pending | `status` field | | +| Ad tag / serving tag | Asset in a creative manifest (`html`, `javascript`, or `vast` type) | Tags are just assets — no special concept | +| Placement / ad unit | Package within a media buy | The buy context where a creative is assigned | +| DCO variables / dynamic fields | `variables` array (via `include_variables=true`) | Named slots with types and defaults | +| Data feed / targeting rules | Not modeled | AdCP models the variable *slots*, not the optimization rules | +| CTV/OTT ad server (Innovid, Brightcove) | Same as ad server, plus VAST/SSAI delivery model | VAST tags in `vast`-type assets; companion ads via multi-render formats | + +### Tag generation models + +Ad servers differ in how they produce serving tags. The creative protocol's `build_creative` accommodates all common models through the combination of `creative_id`, `target_format_id`, and optional `media_buy_id`/`package_id`: + +**Universal tags** (Celtra, Flashtalking) — A single tag that adapts to multiple environments (web, in-app). No placement context is needed — `build_creative(creative_id, target_format_id)` produces a tag that works wherever it's trafficked. Best for agency/programmatic use cases where the final destination is unpredictable, reducing trafficking errors. + +**Single-placement tags** (Celtra, Flashtalking, CM360) — A tag scoped to one specific size and placement. The `target_format_id` specifies the exact dimensions (e.g., 300x250 web). For publisher template use cases where the destination is known, this is the most common choice. + +**Multi-placement tags** (Celtra) — A tag covering multiple sizes within one environment. The `target_format_id` references a format whose `renders` array defines the supported sizes. Useful for publisher templates that need several sizes (e.g., 300x250 + 320x50 + 728x90 web) but want a single tag to traffic. + +**Placement-level tags** (CM360) — The platform generates tags per placement, not per creative. The caller passes `media_buy_id` and optionally `package_id` to provide the trafficking context. A CM360 adapter uses the media buy context to produce a tag scoped to the target format. + +The choice between these models is often a campaign context decision, not a platform constraint. The same creative agent may produce different tag types depending on the caller's needs: + +| Use case | Tag type | `build_creative` parameters | +|---|---|---| +| Agency/programmatic (unknown destination) | Universal | `creative_id` + `target_format_id` (universal format) | +| Publisher template (known placement) | Single placement | `creative_id` + `target_format_id` (specific size) | +| Publisher template (multiple sizes) | Multi-placement | `creative_id` + `target_format_id` (multi-render format) | +| Ad server with trafficking context | Placement-level | `creative_id` + `target_format_id` + `media_buy_id` + `package_id` | + +In all cases the output is the same: a creative manifest with the serving code in an `html` or `javascript` asset. + +### Variable models + +Platforms represent dynamic content differently. The creative protocol's `variables` array accommodates the common patterns: + +**Named variable slots** (Flashtalking) — Each creative has explicit variables with IDs, names, and types. Maps directly to `creative-variable.json`. + +**Template object properties** (Celtra) — Templates define `templateObjects` with typed `properties` (text, color, image, video, percentage, hidden) scoped to specific components and size variants. A Celtra adapter flattens these into the `variables` array, using the template object label and property label to construct `variable_id` and `name`. + +**Rule-based asset selection** (CM360) — Dynamic creatives use `dynamicAssetSelection` with targeting rules, fed by data feeds. This model is not variable-based — CM360 adapters would typically not populate the `variables` array, and `has_variables` filtering would not apply. + +### Macro handling + +Platforms use their own macro syntax internally. The `macro_values` parameter in `build_creative` lets the caller pass universal macro values (e.g., `CLICK_URL`) that the creative agent substitutes into the output tag using whatever syntax the platform expects. + +| Universal macro | CM360 equivalent | Flashtalking equivalent | +|---|---|---| +| `CLICK_URL` | `%c` | `[clickTag]` | +| `CACHEBUSTER` | `%n` | `[timestamp]` | +| `TIMESTAMP` | `%t` | `[timestamp]` | + +The creative agent handles translation — callers always use universal macros. + +### Re-submission after rejection + +When `sync_creatives` or creative review results in a rejection, the fix-and-resubmit flow uses upsert semantics: + +1. Check rejection reason via `list_creatives` (library `status: "rejected"`) or `get_media_buys` (package `approval_status: "rejected"` with `rejection_reason`) +2. Fix the creative (update assets, adjust copy, replace media) +3. Re-submit via `sync_creatives` with the same `creative_id` — the agent updates the existing creative and re-triggers review +4. Poll `list_creatives` until `status` transitions from `pending_review` to `approved` or `rejected` + +Re-submission resets the review clock. The agent treats the updated creative as a new submission for review purposes. + +### Which tasks to implement + +The table below maps each interaction model to the tasks it should implement. See [Three interaction models](#three-interaction-models) above for detailed descriptions. + +| Interaction model | Required tasks | Additional tasks | Capabilities | +|---|---|---|---| +| Template/transformer (Celtra, format conversion) | `list_creative_formats`, `preview_creative`, `build_creative` | — | `supports_transformation: true` | +| Ad server (Innovid, Flashtalking, CM360) | `list_creatives`, `build_creative`, `preview_creative` | `list_creative_formats`, `get_creative_delivery` | `has_creative_library: true` | +| Sales agent with creative (publishers, retail media) | `list_creative_formats`, `sync_creatives`, `preview_creative` | `get_creative_delivery` | `has_creative_library: true` | +| Generative creative tool | `list_creative_formats`, `preview_creative`, `build_creative` | — | `supports_generation: true` | + +Declare these capabilities in `get_adcp_capabilities` so buyer agents can determine the correct interaction model without trial and error. See [Interaction models](/dist/docs/3.0.13/creative/specification#interaction-models) in the spec. + +Platforms with a creative library should also implement the [accounts protocol](/dist/docs/3.0.13/accounts/overview) so buyers can establish access before querying. This is the same accounts protocol used by sales agents for media buys. + +## Related + +- [Creative Formats](/dist/docs/3.0.13/creative/formats) - Understanding format structure +- [Creative Manifests](/dist/docs/3.0.13/creative/creative-manifests) - How manifests work +- [Asset Types](/dist/docs/3.0.13/creative/asset-types) - Asset specifications +- [list_creative_formats task](/dist/docs/3.0.13/creative/task-reference/list_creative_formats) - Format discovery API reference +- [list_creatives task](/dist/docs/3.0.13/creative/task-reference/list_creatives) - Creative library API reference +- [build_creative task](/dist/docs/3.0.13/creative/task-reference/build_creative) - Manifest generation API reference +- [preview_creative task](/dist/docs/3.0.13/creative/task-reference/preview_creative) - Preview rendering API reference diff --git a/dist/docs/3.0.13/creative/index.mdx b/dist/docs/3.0.13/creative/index.mdx new file mode 100644 index 0000000000..5694ecee5d --- /dev/null +++ b/dist/docs/3.0.13/creative/index.mdx @@ -0,0 +1,179 @@ +--- +title: Creative protocol +sidebarTitle: Overview +"og:image": /images/walkthrough/panel-01-strategist-desk.png +description: "The AdCP Creative Protocol manages ad creative from brief to delivery across CTV, display, and social using AI agents and standardized formats." +"og:title": "AdCP — Creative protocol" +--- + +A creative strategist reviews ad mockups across multiple formats on her monitor + +Maya is a creative strategist at a mid-size agency. She's launching a holiday campaign for Acme Outdoor across three channels: CTV, display, and social. She has one brief. She needs it running everywhere by Friday. + +This walkthrough follows her journey through AdCP — from brief to delivery reporting — showing how the protocol connects creative tools, publishers, and AI agents into a single workflow. + +## Step 1: Write the brief + +Maya starts with what she knows best: the creative direction. + +A creative brief radiates outward to TV, phone, laptop, and billboard screens + +In AdCP, the brief is the `message` field on `build_creative`. Maya doesn't need to write JSON — her agency platform translates her direction into the protocol format: + +```json +{ + "message": "Holiday campaign for Acme Outdoor. Warm, adventurous tone. Hero product: Trail Pro 3000 hiking boot. Key message: 'Gift the adventure.' Use brand colors and winter imagery.", + "brand": { "domain": "acmeoutdoor.com" }, + "target_format_ids": [ + { "agent_url": "https://streamhaus.example", "id": "ssai_30s" }, + { "agent_url": "https://outdoornet.example", "id": "display_300x250" }, + { "agent_url": "https://outdoornet.example", "id": "display_728x90" } + ], + "quality": "draft", + "include_preview": true +} +``` + +The brand identity — colors, logos, typography, tone — lives at `acmeoutdoor.com/.well-known/brand.json`. Every agent in the chain reads it from there. Maya's team maintains it once. + + + +| What Maya says | What the protocol calls it | +|---|---| +| Creative brief | `message` on `build_creative` | +| Brand guidelines | `brand.json` at `/.well-known/brand.json` | +| Comp / mockup | Preview (from `preview_creative`) | +| Final creative | Production-quality manifest | +| Trafficking | `sync_creatives` to each seller | +| Campaign report | `get_creative_delivery` across agents | + + + +## Step 2: Discover what each seller supports + +Before generating anything, Maya's platform checks what formats each seller accepts. This happens automatically — but here's what's going on under the hood. + +Her platform calls `list_creative_formats` on each connected agent: + +Agency platform calls list_creative_formats on three sellers: StreamHaus returns CTV formats, Pinnacle Media returns display sizes, CommHub returns social formats + +Now Maya's platform knows: StreamHaus needs video files and VAST tags. Pinnacle needs display banners. CommHub needs feed-native content assets. One brief, three different output types. + +## Step 3: Check governance constraints + +Before generating creatives, Maya's platform checks what governance constraints apply. A buyer's governance agent may require security scanning, content categorization, or policy compliance on all creatives. + +The platform calls `get_adcp_capabilities` on the buyer's governance agent to discover what creative features will be evaluated: + +```javascript +const capabilities = await governanceAgent.getCapabilities(); +const creativeFeatures = capabilities.governance.creative_features; +// Returns features like: registry:eu_ai_act_article_50, auto_redirect, credential_harvest +``` + +These constraints feed into the generation request. If the buyer requires EU AI Act compliance (`registry:eu_ai_act_article_50`), the creative agent ensures generated content includes required provenance metadata. If security scanning is required, generated creatives avoid patterns that trigger `auto_redirect` or `credential_harvest` flags. + +Governance constraints are evaluated after generation via [`get_creative_features`](/dist/docs/3.0.13/governance/creative/get_creative_features), which scores a specific creative manifest — but knowing the feature set before generation avoids a reject-regenerate cycle. Creative agents that are aware of governance requirements produce compliant output on the first pass. + +See the [Creative Governance overview](/dist/docs/3.0.13/governance/creative/index) for the feature-based evaluation model. + +## Step 4: Generate and preview + +Three AI agents collaborate at a workbench, passing creative assets between them + +Maya's platform routes the brief to the right creative agents. A CTV specialist handles video. A display agent handles banners. The social platform generates feed-native content that matches each community's voice. + +Agency platform routes the brief to three agents: Video Agent receives build_creative for SSAI 30s, Display Agent receives build_creative for banner sizes, Social Platform receives create_media_buy with brief embedded + +For CTV and display, Maya gets back draft-quality manifests she can preview immediately. For social, the platform will generate at serve time — but Maya can still preview what it would look like. + +Split screen showing a rough draft mockup transforming into a polished production creative + +Maya asks to see the CTV spot in a living room context and the social post in two different communities: + +```json +{ + "request_type": "single", + "creative_manifest": { "...": "video manifest from build_creative" }, + "inputs": [ + { "name": "Living room primetime", "context_description": "CTV app, evening, family household" }, + { "name": "Mobile commute", "context_description": "Phone screen, morning, commuter" } + ] +} +``` + +She reviews the drafts. The CTV spot needs a warmer color grade. She sends feedback via another `build_creative` call with an updated message. The agent iterates. This is the tissue session — fast, low-fidelity, focused on getting the direction right. + +When Maya's happy, she promotes to production quality: + +```json +{ "quality": "production" } +``` + +## Step 5: Distribute to sellers + +A strategist presses Launch while publisher connections light up in sequence + +Now the finished creatives need to reach each seller. Maya's platform calls `sync_creatives` on each one — same creative, adapted to each seller's required format: + +Creative agency platform distributes creatives via sync_creatives to three sellers: CTV seller returns pending review, Display seller returns approved, Social platform returns pending review for community guidelines + +Different sellers have different review processes. Pinnacle auto-approves based on brand safety rules. StreamHaus and CommHub do manual review. Maya's platform tracks approval state per seller — a creative approved on one and pending on another is normal, not an error. + +CommHub also checks community guidelines beyond standard ad policy. If a promoted post is rejected from a specific community, `list_creatives` shows the `rejection_reason` referencing that community's rules. + +## Step 6: Campaign runs — AI generates variants + +The campaign goes live. Here's where it gets interesting. + +On StreamHaus, the CTV spot runs as-is — one creative, one variant (Tier 1). On Pinnacle, the display ads run with asset group optimization — the platform tests different headline and image combinations (Tier 2). On CommHub, the social platform generates promoted posts that match each community's voice and trending topics (Tier 3). + +Maya doesn't manage any of this. The protocol handles it. But she can see everything that happened. + +## Step 7: Review delivery and variants + +A unified dashboard merging data from three sellers into combined performance charts + +One week in, Maya pulls delivery data. Her platform calls `get_creative_delivery` on each agent and merges the results: + +Three sellers report delivery data back to agency platform: CTV seller shows 1 variant with 150K impressions, Display seller shows 4 variants with 200K impressions, Social platform shows 12 AI-generated variants with 85K impressions plus engagement metrics + +The social platform's response includes engagement metrics in the `ext` field — upvotes, comments, shares — alongside standard delivery metrics. Display variants include the manifest showing which headline/image combination each variant used. CTV includes completion rates and quartile data. + +## Step 8: Replay what ran + +A strategist views a grid of ad variants with performance ratings, one highlighted as top performer + +Maya wants to see exactly what CommHub's AI generated for the hiking community. She finds the top-performing variant in the delivery data and replays it: + +```json +{ + "request_type": "variant", + "variant_id": "gen_hiking_community_v3" +} +``` + +The platform renders exactly what was served — the generated headline, the community-adapted imagery, the engagement UI. Maya can see that the AI leaned into trail photography and used language that resonated with the hiking community. She takes this insight back to her next brief. + +## Step 9: Pricing and billing + +Creative agents can charge for their services. Pinnacle's account with each creative agent includes a rate card — the agreed pricing. For the ad server, Maya's platform calls `list_creatives` and each creative includes `pricing_options`. For the transformation agent, pricing appears on `list_creative_formats` instead — the format is the product. When `build_creative` runs, the response includes `vendor_cost` so the platform knows what each build cost. + +After the campaign, Maya's platform calls `report_usage` on each creative agent with the `creative_id` and `pricing_option_id` from the build response. This closes the billing loop — the creative agent can verify the reported cost matches its rate card. + +Different agents price differently. The CTV ad server charges CPM (cost per thousand impressions served). The transformation agent charges per format adapted. The AI generation platform charges per image generated. The protocol handles all of these through the same `pricing_options` pattern — see the [pricing specification](/dist/docs/3.0.13/creative/specification#pricing) for details. + +## The full picture + +The full creative lifecycle: Write brief, Discover formats, Generate and preview, Iterate and approve, Distribute to sellers, Campaign runs, Review delivery and replay variants, then Inform next brief — completing the cycle + +Every step uses a standard AdCP task. Every agent — creative tools, publishers, social platforms — speaks the same protocol. Maya writes one brief, and AdCP handles the rest: format adaptation, multi-agent routing, cross-seller distribution, variant tracking, unified reporting, and billing reconciliation. + +## Go deeper + +- **Key concepts**: [Assets, formats, manifests, and creative agents](/dist/docs/3.0.13/creative/key-concepts) — the building blocks behind this walkthrough +- **AI creative**: [AI creative for campaign teams](/dist/docs/3.0.13/creative/ai-creative-overview) — the strategic view for non-engineers +- **Generative creative**: [Generative creative](/dist/docs/3.0.13/creative/generative-creative) — Tier 1, 2, and 3 in depth +- **Build an agent**: [Implementing creative agents](/dist/docs/3.0.13/creative/implementing-creative-agents) — make your platform speak AdCP +- **Orchestrate**: [Multi-agent orchestration](/dist/docs/3.0.13/creative/multi-agent-orchestration) — the engineering patterns behind Maya's platform +- **Get certified**: The [Buyer track](/dist/docs/3.0.13/learning/tracks/buyer) teaches the full creative workflow through interactive modules diff --git a/dist/docs/3.0.13/creative/key-concepts.mdx b/dist/docs/3.0.13/creative/key-concepts.mdx new file mode 100644 index 0000000000..7f0c6408b2 --- /dev/null +++ b/dist/docs/3.0.13/creative/key-concepts.mdx @@ -0,0 +1,197 @@ +--- +title: Key concepts +description: "Assets, formats, manifests, and creative agents are the four building blocks of the AdCP Creative Protocol for programmatic ad creative." +"og:title": "AdCP — Creative key concepts" +--- + + +One upload, every format. This guide explains how creatives work in AdCP, from defining format requirements to assembling and delivering ads. + +## The Four Key Concepts + +### 1. **Assets** + +Assets are the individual building blocks used to compose a creative. Each asset has a defined type that determines how it is used and validated. + +**Examples:** +- An image file (PNG, JPG, WebP) +- A video file (MP4, WebM, MOV) +- A block of text (headline or CTA) +- An audio file (MP3, M4A) +- An HTML or JavaScript tag +- A tracking or clickthrough URL + +### 2. **Formats** + +Formats define how assets are assembled and rendered, based on IAB format taxonomy. A format specifies: +- Media family (e.g., Display, Video, Audio, Native) +- The required asset types +- Technical constraints (duration, dimensions, codecs, file size) +- Rendering and interaction expectations + +**Examples:** +- A Video format may require one video asset (MP4, 30 seconds, defined resolution and codec) and one clickthrough URL +- A Display format may require one or more image or HTML assets, optional text assets, and tracking URLs + +### 3. **Manifests** + +Manifests define a creative preset: a reusable configuration that captures what a brand wants to say and show, independent of where or how it is ultimately delivered. + +A manifest does not describe an ad format or rendering logic. Instead, it declares a named set of creative choices—media, messaging, destinations, and tracking intent—that can be applied consistently wherever a compatible format is supported. + +**Example**: A manifest for "video_30s" provides the URL to your actual 30-second video file, plus tracking pixels and landing page URL. + +### 4. **Creative Agents** + +Creative agents are services that: +- Define and document formats (authoritative source) +- Explain how each format renders +- Validate manifests against format requirements +- Generate previews showing how creatives will appear +- Optionally build manifests from natural-language briefs + +Each format identifies its authoritative creative agent. + +## How They Fit Together + +``` +Format Definition (by Creative Agent) + ↓ + "video_30s format requires: + - One video file asset (MP4, 30s, 1920x1080) + - One clickthrough URL" + +Creative Manifest (by Buyer) + ↓ + "Here's my actual video file: + https://cdn.brand.com/spring_30s.mp4 + Landing page: https://brand.com/spring-sale" + +Sales Agent (validates & delivers) + ↓ + - Checks: Is this really 30 seconds? Is it MP4? + - Adds: Impression tracking, click tracking + - Delivers: Creative to ad server +``` + +## The Workflow + +### 1. **Discovery** - "What formats do you support?" + +Buyers call `list_creative_formats` on sales or creative agents to discover available formats and their full specifications. Each format includes an `agent_url` identifying the creative agent that is authoritative for that format. + +See [Creative Formats](/dist/docs/3.0.13/creative/formats) for format discovery details. + +### 2. **Assembly** - "Here are my assets" + +Buyers create manifests that provide assets fulfilling the selected format's requirements. Manifests pair format specifications with actual asset URLs, text, and tracking data. + +See [Creative Manifests](/dist/docs/3.0.13/creative/creative-manifests) for manifest structure details. + +### 3. **Validation** - "Does this match the requirements?" + +Creative agents validate manifests by checking: +- Are all required assets present? +- Do assets meet technical constraints (duration, dimensions, file type, file size)? +- Are tracking URLs and macros correctly formatted? + +### 4. **Delivery** - "Traffic this to the ad server" + +Sales agents deliver validated creatives to their ad servers, translating AdCP universal concepts to platform-specific formats. + +## Core Concepts + +### Assets & Asset Types + +Assets are the raw materials of a creative. Each asset has a type that defines its role: +- **image**: Static images (JPEG, PNG, WebP) +- **video**: Video files (MP4, WebM, MOV) or VAST tags +- **audio**: Audio files (MP3, M4A) or DAAST tags +- **text**: Headlines, descriptions, CTAs +- **html**: HTML5 creatives or third-party tags +- **javascript**: JavaScript tags +- **url**: Tracking pixels, clickthrough URLs, webhooks + +See [Asset Types](/dist/docs/3.0.13/creative/asset-types) for detailed specifications. + +### Formats & Format Authority + +Each format has an authoritative source—the creative agent that defines it (indicated by `agent_url`). That agent: +- Hosts the definitive documentation +- Explains how to assemble assets +- Describes how the format renders +- Provides validation rules + +**Standard vs. Custom Formats:** +- **Standard formats** are based on IAB specifications and hosted by the reference creative agent (`https://creative.adcontextprotocol.org`) +- **Custom formats** are defined by individual publishers or creative platforms for specialized inventory +- Technically, both work the same way—the `agent_url` field identifies which agent is authoritative for each format + +See the [Channel Guides](/dist/docs/3.0.13/creative/channels/video) for format examples and patterns across video, display, audio, DOOH, and carousels. + +### Manifests + +Manifests are JSON structures that pair format-defined asset IDs with actual asset content. They supply the URLs, text values, and tracking endpoints required to assemble a complete creative. + +See [Creative Manifests](/dist/docs/3.0.13/creative/creative-manifests) for detailed documentation. + +### Universal Macros + +AdCP defines universal macros that work across platforms. Sales agents translate these macros into their ad server's native syntax. + +- **For impression tracking**: Sales agents translate AdCP macros into the ad server's native macro format before serving the impression tracking URL. +- **For click tracking**: In addition to macro translation, sales agents replace `{REDIRECT_URL}` with the final destination click URL and serve the click tracking URL as the destination URL in the ad server, ensuring proper redirection after the click is recorded. + +See [Universal Macros](/dist/docs/3.0.13/creative/universal-macros) for complete reference. + +## Common Patterns + +### Third-Party Tags + +Some formats support creatives that are served by third-party systems rather than assembled from first-party media elements. + +In this pattern, the creative is provided as an HTML tag or a JavaScript tag. The format definition specifies the required element type and any applicable constraints (such as sandboxing or tracking expectations). Rendering, asset loading, and interaction logic are handled externally by the third-party system. + +This pattern is most commonly used with Display formats. See the [Display Channel Guide](/dist/docs/3.0.13/creative/channels/display) for third-party tag examples. + +### Repeatable Asset Groups + +Some formats allow or require repeated sets of creative elements under a common structure. This pattern is used for creatives such as carousels, slideshows, story-style sequences, and playlists or product lists. + +Each repetition contains the same logical element roles (for example: image, text, and URL), with the number of repetitions defined or constrained by the format. Repeatable element groups describe structural patterns, not formats or layout guarantees, and may be used across Display, Native, or other compatible formats. + +See the [Carousel & Multi-Asset Formats](/dist/docs/3.0.13/creative/channels/carousels) guide for detailed documentation. + +### DOOH Impression Tracking + +Digital Out-of-Home (DOOH) environments require different measurement semantics than personal-device environments. + +In this pattern: +- Impressions are tracked using venue- or screen-level identifiers +- Device-based identifiers are not used +- Tracking relies on environment-specific macros + +This affects measurement and reporting only and does not change creative format classification or asset requirements. See the [DOOH Channel Guide](/dist/docs/3.0.13/creative/channels/dooh) for DOOH-specific macro details. + +## Channel-Specific Information + +For detailed information on creatives by channel and format family, see [Creative Manifests](/dist/docs/3.0.13/creative/creative-manifests), including: + +- **Video Ads** - In-stream and outstream video formats (including CTV environments) +- **Display Ads** - Standard display formats (e.g., banners and interstitials) +- **Audio Ads** - In-stream audio formats (with optional companion display) +- **DOOH** - Digital out-of-home inventory and venue-based delivery environments + +## Getting Started + +1. **Discover formats**: Call `list_creative_formats` to see what's available +2. **Choose your channel guide**: Pick the guide that matches your campaign type +3. **Build your manifest**: Follow the format requirements +4. **Use universal macros**: Add tracking with standardized macros +5. **Preview**: Use `preview_creative` to see how it looks +6. **Submit**: Include manifests in your `create_media_buy` request + +## Additional Resources + +- [Creative Task Reference](/dist/docs/3.0.13/creative/task-reference/list_creative_formats) - API documentation for creative tasks +- [Generative Creative](/dist/docs/3.0.13/creative/generative-creative) - AI-powered creative generation guide diff --git a/dist/docs/3.0.13/creative/multi-agent-orchestration.mdx b/dist/docs/3.0.13/creative/multi-agent-orchestration.mdx new file mode 100644 index 0000000000..1a7617297a --- /dev/null +++ b/dist/docs/3.0.13/creative/multi-agent-orchestration.mdx @@ -0,0 +1,346 @@ +--- +title: Multi-agent creative orchestration +description: "Multi-agent creative orchestration in AdCP routes requests across agents, distributes assets to sellers, and aggregates delivery data." +"og:title": "AdCP — Multi-agent creative orchestration" +"og:image": /images/walkthrough/diagram-orchestrator-sequence.png +--- + +Agency platforms and holding company systems often sit between a brand team and dozens of agents: creative tools, ad servers, and sales agents across publishers. The orchestrator's job is to route creative requests to the right agent, distribute finished creatives to sellers, and aggregate delivery data back into a unified view. + +Sequence diagram showing an orchestrator calling get_adcp_capabilities, list_creative_formats, build_creative, sync_creatives, and get_creative_delivery across multiple agents + +This page covers the patterns for building that orchestration layer on top of AdCP. + +## The orchestrator role + +An orchestrator is a buyer-side system that connects to multiple AdCP agents and coordinates creative workflows across them. It does not implement the Creative Protocol itself — it consumes it. Typical orchestrators include agency platforms (think a holding company's internal toolchain), brand-side creative hubs, and multi-publisher campaign management systems. + +The orchestrator's responsibilities: + +- **Discover** what each connected agent can do +- **Route** creative requests to the agent best suited for the job +- **Distribute** finished creatives to every seller that needs them +- **Aggregate** delivery data across agents into a single reporting view + +## Capability discovery + +Before routing any requests, the orchestrator needs a map of what each agent supports. Call `get_adcp_capabilities` on every connected agent and index the `creative` section of each response. + +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.0.13/protocol/get-adcp-capabilities-response.json", + "adcp": { + "major_versions": [3], + "idempotency": { "supported": true, "replay_ttl_seconds": 86400 } + }, + "supported_protocols": ["creative"], + "creative": { + "has_creative_library": true, + "supports_generation": false, + "supports_transformation": true, + "supports_compliance": false + } +} +``` + +Build a capability map from the responses: + +| Agent | `supports_generation` | `supports_transformation` | `has_creative_library` | +|---|---|---|---| +| `https://creative.novastudio-example.com` | true | true | false | +| `https://ads.flashtalking-example.com` | false | false | true | +| `https://sales.pinnaclemedia-example.com` | true | true | true | + +Cache this map and refresh it periodically — the `last_updated` field on the capabilities response tells you when an agent's capabilities last changed. + +## Format discovery across agents + +Call `list_creative_formats` on each agent in parallel. Each agent returns a `formats` array where every format includes a `format_id` with an `agent_url` identifying which agent owns that format definition. + +```json +{ + "formats": [ + { + "format_id": { + "agent_url": "https://creative.novastudio-example.com", + "id": "display_300x250" + }, + "name": "Display 300x250", + "renders": [{ + "role": "primary", + "dimensions": { "width": 300, "height": 250, "unit": "px" } + }] + } + ] +} +``` + +Merge the results into a unified format catalog. When the same standard format (same dimensions, same type) is available from multiple agents, keep all entries — the `agent_url` in each `format_id` distinguishes them. At routing time, prefer the agent whose capabilities best match the request (a generative agent for briefs, a library agent for tag retrieval). + +Some agents also return a `creative_agents` array pointing to additional agents the orchestrator can query. Follow these references to discover formats from agents not already in your connection list, but track visited URLs to avoid infinite loops. + +## Routing creative requests + +Use the capability map and format catalog to route each request to the right agent. + +**Brief with no existing creative** — the brand team provides creative direction but no assets. Route to an agent with `supports_generation: true`. The agent accepts a natural language brief via `build_creative` and returns a manifest with generated assets. + +**Existing creative needs resizing** — the buyer has a manifest for one format and needs it adapted to another. Route to an agent with `supports_transformation: true`. Pass the existing `creative_manifest` and a `target_format_id` for the desired output. + +**Retrieve tags from an ad server** — the creative already exists in a platform library. Route to the agent with `has_creative_library: true` that hosts it. Pass the `creative_id` and `target_format_id` to `build_creative` to get a serving tag. + +**Target format determines the agent** — when the request targets a specific format (CTV, DOOH, a publisher's proprietary unit), route to the agent whose `format_id.agent_url` matches. That agent is the authority for that format and will produce the most reliable output. + +When multiple agents qualify, prefer agents that combine capabilities. A sales agent with `supports_generation: true` and `has_creative_library: true` can generate a creative and store it in one step, avoiding a separate sync. + +## Build once, distribute to many + +The core multi-agent workflow: generate or build a creative once, then distribute it to every seller that needs it. + +### Step 1: Build the creative + +Call `build_creative` on your creative agent to produce a manifest: + +```json +{ + "message": "Create a holiday display campaign for Acme Corp featuring winter products", + "target_format_id": { + "agent_url": "https://creative.novastudio-example.com", + "id": "display_300x250" + }, + "concept_id": "concept_holiday_2026" +} +``` + +The agent returns a manifest with the generated assets. Assign your own `creative_id` to the result — this ID stays consistent everywhere you send the creative. + +### Step 2: Sync to each seller + +Call `sync_creatives` on each sales agent, using the same `creative_id` and `concept_id`: + + +```json Pinnacle Media +{ + "account": { "account_id": "acct_acme_pinnacle" }, + "creatives": [{ + "creative_id": "acme_holiday_300x250", + "name": "Holiday 2026 - Medium Rectangle", + "concept_id": "concept_holiday_2026", + "format_id": { + "agent_url": "https://creative.novastudio-example.com", + "id": "display_300x250" + }, + "assets": { + "image": { + "url": "https://cdn.acme-example.com/holiday-300x250.png", + "width": 300, + "height": 250 + }, + "click_url": { + "url": "https://acme-example.com/holiday-sale" + } + } + }], + "assignments": [{ + "creative_id": "acme_holiday_300x250", + "package_id": "pkg_premium_display" + }] +} +``` + +```json Nova Sports +{ + "account": { "account_id": "acct_acme_novasports" }, + "creatives": [{ + "creative_id": "acme_holiday_300x250", + "name": "Holiday 2026 - Medium Rectangle", + "concept_id": "concept_holiday_2026", + "format_id": { + "agent_url": "https://creative.novastudio-example.com", + "id": "display_300x250" + }, + "assets": { + "image": { + "url": "https://cdn.acme-example.com/holiday-300x250.png", + "width": 300, + "height": 250 + }, + "click_url": { + "url": "https://acme-example.com/holiday-sale" + } + } + }], + "assignments": [{ + "creative_id": "acme_holiday_300x250", + "package_id": "pkg_sports_display" + }] +} +``` + + +Both calls use the same `creative_id` (`acme_holiday_300x250`) and `concept_id` (`concept_holiday_2026`). These become the keys for cross-agent correlation later. + +### Step 3: Track approval status + +Each seller reviews the creative independently. Poll `list_creatives` on each agent to check status: + +```json +{ + "filters": { + "creative_ids": ["acme_holiday_300x250"] + } +} +``` + +The `status` field on each creative tells you where it is: `processing`, `pending_review`, `approved`, `rejected`, or `archived`. Build a consolidated view: + +| Seller | `creative_id` | Status | +|---|---|---| +| Pinnacle Media | `acme_holiday_300x250` | `approved` | +| Nova Sports | `acme_holiday_300x250` | `pending_review` | + +A creative can be approved by one seller and rejected by another — each seller applies its own policies. See [creative review](/dist/docs/3.0.13/creative/sales-agent-creative-capabilities#creative-review) for how status transitions work. + +## Cross-agent delivery aggregation + +Once creatives are live, call `get_creative_delivery` on each agent to collect performance data. The response includes a `creatives` array with variant-level breakdowns: + +```json +{ + "reporting_period": { + "start": "2026-11-01T00:00:00-05:00", + "end": "2026-11-15T00:00:00-05:00", + "timezone": "America/New_York" + }, + "currency": "USD", + "creatives": [{ + "creative_id": "acme_holiday_300x250", + "format_id": { + "agent_url": "https://creative.novastudio-example.com", + "id": "display_300x250" + }, + "totals": { + "impressions": 145000, + "clicks": 2900, + "spend": 1450.00 + }, + "variant_count": 3, + "variants": [{ + "variant_id": "var_a1b2c3", + "impressions": 80000, + "clicks": 1700, + "spend": 800.00 + }] + }] +} +``` + +### Correlating across agents + +**`creative_id`** is the primary correlation key. Because you assigned the same `creative_id` when syncing to each seller, you can match delivery records across agents directly. + +**`concept_id`** groups related creatives. When you need aggregate metrics for the "Holiday 2026" campaign across all sizes and sellers, filter by `concept_id` on each agent's `list_creatives` to get the set of `creative_id` values, then pull delivery for all of them. + +**`variant_id`** is scoped to a single agent and creative. Two agents may independently assign the same `variant_id` string. When aggregating variants across agents, prefix with the agent URL to create a globally unique key: `https://sales.pinnaclemedia-example.com/var_a1b2c3`. + +### Normalizing timezones + +Each agent reports in its own timezone via `reporting_period.timezone`. Before summing metrics across agents, convert all timestamps to a common timezone. The `timezone` field uses IANA identifiers (`America/New_York`, `Europe/London`, `UTC`), so standard timezone libraries handle conversion. + +## `concept_id` as a correlation key + +Concepts are buyer-assigned groupings — the protocol does not enforce them. The orchestrator decides what constitutes a concept and assigns the `concept_id` consistently when syncing related creatives to different agents. + +A typical mapping: one concept per campaign idea, with multiple creatives per concept (different sizes, formats, or variations). + +``` +concept_holiday_2026 + ├── acme_holiday_300x250 (display, synced to Pinnacle Media + Nova Sports) + ├── acme_holiday_728x90 (display, synced to Pinnacle Media) + └── acme_holiday_video_30s (video, synced to Nova Sports) +``` + +Assign `concept_id` at sync time via the `concept_id` field on each creative in `sync_creatives`. Use it to: + +- Filter `list_creatives` with `concept_ids` to see all creatives in a concept on a given agent +- Group `get_creative_delivery` results by concept for roll-up reporting +- Track approval status across sizes and sellers for the same campaign idea + +## Error handling across agents + +Multi-agent operations produce partial failures. One seller accepts a creative while another rejects it, or an agent is temporarily unreachable. Design for this from the start. + +### Partial sync failures + +`sync_creatives` returns per-creative results. Check the `action` field on each item in the response: + +```json +{ + "creatives": [ + { "creative_id": "acme_holiday_300x250", "action": "created" }, + { "creative_id": "acme_holiday_728x90", "action": "failed", "errors": ["Format not supported"] } + ] +} +``` + +When the response has top-level `errors` instead of `creatives`, the entire operation failed (authentication, network, invalid request). Retry the whole call. + +When individual creatives fail within a successful operation, handle them individually — fix the issue and re-sync just the failed creatives using the `creative_ids` filter: + +```json +{ + "account": { "account_id": "acct_acme_pinnacle" }, + "creative_ids": ["acme_holiday_728x90"], + "creatives": [{ + "creative_id": "acme_holiday_728x90", + "name": "Holiday 2026 - Leaderboard", + "format_id": { + "agent_url": "https://creative.novastudio-example.com", + "id": "display_728x90" + }, + "assets": { } + }] +} +``` + +### Agent unavailability + +When an agent is unreachable, the orchestrator should: + +1. Record which syncs or queries failed and for which agent +2. Continue processing other agents — do not block the entire workflow +3. Retry failed agents with exponential backoff +4. Use `idempotency_key` on `sync_creatives` so retries are safe + +### Inconsistent approval states + +A creative approved on one seller and rejected on another is normal, not an error. The orchestrator should surface this clearly to the campaign team rather than treating it as a failure. If the rejection is due to a fixable issue (wrong aspect ratio, missing click URL), update the creative and re-sync to the rejecting seller only. + +### Rate limiting and concurrency + +When calling many agents in parallel (common for cross-seller sync and delivery aggregation), expect that agents may rate-limit requests. Handle this with standard HTTP patterns: + +- Respect `429 Too Many Requests` responses and the `Retry-After` header +- Use exponential backoff with jitter for retries +- Set reasonable concurrency limits per agent (start with 5 concurrent requests per agent, adjust based on observed behavior) +- Log rate-limit events per agent to identify which agents need lower concurrency + +Rate-limiting behavior is agent-specific and not standardized by AdCP. Some agents may return `429` with a `Retry-After` header; others may slow responses without explicit signaling. Build your orchestrator to handle both patterns. + +## Specialized format orchestration + +The patterns on this page apply to all creative formats — display, video, CTV, conversational, audio, DOOH. The protocol-level operations (`list_creative_formats`, `sync_creatives`, `get_creative_delivery`) work identically regardless of format type. The format-specific differences are in asset requirements and preview behavior: + +- **CTV formats** produce multi-render previews (primary video + companion). See [CTV and connected TV](/dist/docs/3.0.13/creative/channels/ctv). +- **Conversational formats** return `interactive_url` in previews for sandbox testing, and variant manifests include conversation transcripts. See [Conversational formats](/dist/docs/3.0.13/creative/generative-creative#conversational-and-interactive-formats). +- **Feed-native/social formats** have platform-owned chrome that wraps buyer assets at render time. See [Pattern 4](/dist/docs/3.0.13/creative/implementing-creative-agents#pattern-4-feed-nativesocial-format-agent). + +The orchestrator does not need format-specific logic for routing or syncing — the `format_id.agent_url` and capability map handle that. Format-specific knowledge matters only when interpreting previews and delivery data for display to campaign teams. + +## Next steps + +- [Orchestrator design patterns](/dist/docs/3.0.13/building/operating/orchestrator-design) — State machines, persistence, and retry patterns for multi-agent systems +- [Creative libraries and concepts](/dist/docs/3.0.13/creative/creative-libraries) — Managing creatives in a single agent's library +- [Creative capabilities on sales agents](/dist/docs/3.0.13/creative/sales-agent-creative-capabilities) — When the seller manages both media and creative +- [Generative creative](/dist/docs/3.0.13/creative/generative-creative) — AI-powered creative generation workflows +- [Specification](/dist/docs/3.0.13/creative/specification) — Full Creative Protocol specification and interaction models diff --git a/dist/docs/3.0.13/creative/private-assets.mdx b/dist/docs/3.0.13/creative/private-assets.mdx new file mode 100644 index 0000000000..7728047e79 --- /dev/null +++ b/dist/docs/3.0.13/creative/private-assets.mdx @@ -0,0 +1,209 @@ +--- +title: Private assets +description: "Private assets in AdCP use presigned URLs to grant temporary access to files stored in DAMs, S3 buckets, or authenticated sources." +"og:title": "AdCP — Private assets" +--- + + +AdCP does not include an asset upload task. Creative agents are not expected to accept file uploads or manage storage on behalf of buyers. Instead, buyer agents are responsible for hosting their own assets and providing accessible URLs in [creative manifests](/dist/docs/3.0.13/creative/creative-manifests). + +When assets live in private storage — an internal DAM, a private S3 bucket, or behind authentication — the buyer agent must make them accessible before passing URLs in a manifest. + +## Presigned URLs + +The recommended pattern is **presigned URLs**. Most cloud storage providers support generating time-limited URLs that grant temporary read access without requiring authentication headers. + +### How it works + +1. Buyer agent receives or locates a private asset (e.g., a brand logo in S3) +2. Buyer agent generates a presigned URL with a short expiration +3. Buyer agent passes the presigned URL in the creative manifest +4. Creative agent fetches the asset like any other public URL + +```json +{ + "format_id": { + "agent_url": "https://creatives.example.com", + "id": "display_static", + "width": 300, + "height": 250 + }, + "assets": { + "banner_image": { + "url": "https://my-bucket.s3.amazonaws.com/brand/logo.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Expires=3600&X-Amz-Signature=...", + "width": 300, + "height": 250 + }, + "headline": { + "content": "Spring collection" + }, + "clickthrough_url": { + "url": "https://shop.example.com/spring" + } + } +} +``` + + +The only difference from a standard manifest is the URL itself. The `banner_image.url` contains presigned query parameters (`X-Amz-Algorithm`, `X-Amz-Expires`, `X-Amz-Signature`). No other fields change. + + +### Provider examples + + + +```javascript AWS S3 +import { S3Client, GetObjectCommand } from "@aws-sdk/client-s3"; +import { getSignedUrl } from "@aws-sdk/s3-request-presigner"; + +const client = new S3Client({ region: "us-east-1" }); + +const url = await getSignedUrl( + client, + new GetObjectCommand({ + Bucket: "my-brand-assets", + Key: "logos/primary.png", + }), + { expiresIn: 3600 } // 1 hour +); +``` + +```javascript Google Cloud Storage +import { Storage } from "@google-cloud/storage"; + +const storage = new Storage(); + +const [url] = await storage + .bucket("my-brand-assets") + .file("logos/primary.png") + .getSignedUrl({ + action: "read", + expires: Date.now() + 3600 * 1000, // 1 hour + }); +``` + +```javascript Cloudflare R2 +import { S3Client, GetObjectCommand } from "@aws-sdk/client-s3"; +import { getSignedUrl } from "@aws-sdk/s3-request-presigner"; + +const client = new S3Client({ + region: "auto", + endpoint: "https://.r2.cloudflarestorage.com", +}); + +const url = await getSignedUrl( + client, + new GetObjectCommand({ + Bucket: "my-brand-assets", + Key: "logos/primary.png", + }), + { expiresIn: 3600 } +); +``` + +```javascript Azure Blob Storage +import { BlobServiceClient, generateBlobSASQueryParameters, BlobSASPermissions, StorageSharedKeyCredential } from "@azure/storage-blob"; + +const credential = new StorageSharedKeyCredential(accountName, accountKey); + +const sasToken = generateBlobSASQueryParameters({ + containerName: "brand-assets", + blobName: "logos/primary.png", + permissions: BlobSASPermissions.parse("r"), + expiresOn: new Date(Date.now() + 3600 * 1000), // 1 hour +}, credential).toString(); + +const url = `https://${accountName}.blob.core.windows.net/brand-assets/logos/primary.png?${sasToken}`; +``` + + + +## Expiration guidelines + +Set presigned URL expiration long enough to cover the full workflow, but no longer than necessary. + +| Workflow | Suggested expiration | +| --- | --- | +| [`build_creative`](/dist/docs/3.0.13/creative/task-reference/build_creative) only | 1 hour | +| [`build_creative`](/dist/docs/3.0.13/creative/task-reference/build_creative) + [`preview_creative`](/dist/docs/3.0.13/creative/task-reference/preview_creative) | 2 hours | +| Full pipeline (build, preview, iterate, [`sync_creatives`](/dist/docs/3.0.13/creative/task-reference/sync_creatives)) | 4 hours | + + +If a presigned URL expires mid-workflow, the creative agent will receive an HTTP error when fetching the asset. The buyer agent must generate a new presigned URL and resubmit the request. + + +For assets that will be served at scale (e.g., a logo used across many impressions), use a CDN with long-lived public URLs instead of presigned URLs. Presigned query parameters defeat CDN caching since each generated URL is unique. + +## Uploading local files + +For assets that don't already live in cloud storage — local files, Slack attachments, email attachments — the buyer agent should upload them to its own storage first, then generate a presigned URL. + + + +```javascript AWS S3 +import { S3Client, PutObjectCommand, GetObjectCommand } from "@aws-sdk/client-s3"; +import { getSignedUrl } from "@aws-sdk/s3-request-presigner"; +import { readFile } from "fs/promises"; + +const client = new S3Client({ region: "us-east-1" }); + +// Upload the local file +const fileBuffer = await readFile("./assets/logo.png"); +await client.send(new PutObjectCommand({ + Bucket: "my-brand-assets", + Key: "logos/primary.png", + Body: fileBuffer, + ContentType: "image/png", +})); + +// Generate a presigned URL for the creative agent to fetch +const url = await getSignedUrl( + client, + new GetObjectCommand({ + Bucket: "my-brand-assets", + Key: "logos/primary.png", + }), + { expiresIn: 3600 } +); +``` + +```javascript Google Cloud Storage +import { Storage } from "@google-cloud/storage"; + +const storage = new Storage(); +const bucket = storage.bucket("my-brand-assets"); + +// Upload the local file +await bucket.upload("./assets/logo.png", { + destination: "logos/primary.png", + contentType: "image/png", +}); + +// Generate a presigned URL for the creative agent to fetch +const [url] = await bucket + .file("logos/primary.png") + .getSignedUrl({ + action: "read", + expires: Date.now() + 3600 * 1000, + }); +``` + + + +## Why not auth headers? + +AdCP manifests are declarative data passed between agents as JSON. Adding per-URL authentication headers would mean sharing storage credentials across trust boundaries — every system that touches the manifest (creative agent, preview service, ad server, logging infrastructure) would need to handle those credentials securely. + +Presigned URLs avoid this by encoding authorization into the URL itself: + +- Scoped to a single object with read-only access +- Time-limited with built-in expiration +- No credential forwarding required +- Revocation is automatic (the URL expires) + +## Related + +- [Creative manifests](/dist/docs/3.0.13/creative/creative-manifests) — manifest structure and asset references +- [Asset types](/dist/docs/3.0.13/creative/asset-types) — requirements for each asset type +- [`build_creative`](/dist/docs/3.0.13/creative/task-reference/build_creative) — generating creatives from manifests +- [`sync_creatives`](/dist/docs/3.0.13/creative/task-reference/sync_creatives) — syncing creatives to an agent-hosted creative library diff --git a/dist/docs/3.0.13/creative/provenance.mdx b/dist/docs/3.0.13/creative/provenance.mdx new file mode 100644 index 0000000000..bd2ceda3ec --- /dev/null +++ b/dist/docs/3.0.13/creative/provenance.mdx @@ -0,0 +1,530 @@ +--- +title: AI provenance and disclosure +description: "AdCP provenance metadata declares AI involvement, tools used, and regulatory disclosure obligations on creative assets and manifests." +"og:title": "AdCP — AI provenance and disclosure" +sidebarTitle: Provenance +--- + +Provenance metadata declares how creative content was produced — whether AI was involved, which tools were used, and what disclosure obligations apply. As regulations like the EU AI Act and California SB 942 require machine-readable AI disclosure in advertising, AdCP carries this metadata at the protocol level so every party in the supply chain can declare, transmit, and verify it using the same structure. Provenance attaches to creative manifests, individual assets, or content-standards artifacts. It is a claim by the declaring party — receiving parties verify claims independently using their own detection tools. + + +EU AI Act Article 50 enforcement begins August 2026. California SB 942 is already in effect. Major platforms mandate AI content labeling today. AdCP's provenance metadata provides the structured, machine-readable disclosure that these regulations require — carried through the programmatic supply chain where no standard for it previously existed. + + +## The provenance object + +Provenance is an optional object that can attach to creative assets, creative manifests, individual typed assets, and content artifacts. No fields are required at the provenance level -- each section is independently useful. + +**Schema**: [provenance.json](https://adcontextprotocol.org/schemas/3.0.13/core/provenance.json) + +| Field | Type | Description | +|-------|------|-------------| +| `digital_source_type` | enum | IPTC-aligned classification of AI involvement | +| `ai_tool` | object | AI system used (`name` required, plus optional `version` and `provider`) | +| `human_oversight` | enum | Level of human involvement in the creation process | +| `declared_by` | object | Party attaching this provenance claim (`role` required, plus optional `agent_url`) | +| `declared_at` | string (date-time) | When this provenance claim was made (ISO 8601), distinct from `created_time` | +| `created_time` | string (date-time) | When the content was created (ISO 8601) | +| `c2pa` | object | C2PA Content Credentials reference (`manifest_url` required) | +| `disclosure` | object | Regulatory disclosure requirements and jurisdiction details | +| `verification` | array | Third-party verification or detection results | +| `ext` | object | Standard extension point | + +### Minimal example + +Most provenance declarations answer one question: **was this AI-generated, and does it need a disclosure label?** + +```json +{ + "$schema": "/schemas/3.0.13/core/provenance.json", + "digital_source_type": "trained_algorithmic_media", + "disclosure": { + "required": true + } +} +``` + +That's it. `digital_source_type` says how the content was produced. `disclosure.required` says whether it needs a label. Everything else — tool details, C2PA references, jurisdiction-specific render guidance, verification results — is optional context that supply-chain participants can add when they need it. + +For content with no AI involvement, provenance is even simpler: + +```json +{ + "$schema": "/schemas/3.0.13/core/provenance.json", + "digital_source_type": "digital_capture" +} +``` + +### Full example + +```json +{ + "$schema": "/schemas/3.0.13/core/provenance.json", + "digital_source_type": "trained_algorithmic_media", + "ai_tool": { + "name": "DALL-E 3", + "version": "3.0", + "provider": "OpenAI" + }, + "human_oversight": "selected", + "declared_by": { + "agent_url": "https://creative.pinnaclemedia.example.com", + "role": "agency" + }, + "declared_at": "2026-02-15T14:35:00Z", + "created_time": "2026-02-15T14:30:00Z", + "c2pa": { + "manifest_url": "https://cdn.pinnaclemedia.example.com/c2pa/manifests/hero_img_abc123.c2pa" + }, + "disclosure": { + "required": true, + "jurisdictions": [ + { + "country": "US", + "region": "CA", + "regulation": "ca_sb_942", + "label_text": "Created with AI", + "render_guidance": { + "persistence": "flexible", + "positions": ["prominent", "footer"] + } + }, + { + "country": "DE", + "regulation": "eu_ai_act_article_50", + "label_text": "KI-generiert", + "render_guidance": { + "persistence": "continuous", + "positions": ["overlay", "subtitle"] + } + } + ] + }, + "verification": [ + { + "verified_by": "Reality Defender", + "verified_time": "2026-02-15T15:00:00Z", + "result": "ai_generated", + "confidence": 0.97, + "details_url": "https://realitydefender.example.com/reports/abc123" + } + ] +} +``` + +## Digital source type + +The `digital_source_type` enum classifies AI involvement in content production, aligned with the [IPTC digitalsourcetype vocabulary](https://cv.iptc.org/newscodes/digitalsourcetype/). + +**Schema**: [digital-source-type.json](https://adcontextprotocol.org/schemas/3.0.13/enums/digital-source-type.json) + +| Value | Description | When to use | +|-------|-------------|-------------| +| `digital_capture` | Captured by a digital device (camera, scanner, screen recording) with no AI involvement | Photos from a product shoot, screen recordings of app demos | +| `digital_creation` | Created by a human using digital tools (Photoshop, Illustrator, After Effects) without AI generation | Hand-designed banner ads, manually composed layouts | +| `trained_algorithmic_media` | Generated entirely by a trained AI model (DALL-E, Midjourney, Stable Diffusion, Sora) | AI-generated hero images, AI-produced video spots | +| `composite_with_trained_algorithmic_media` | Human-created content combined with AI-generated elements | Product photo with AI-generated background, human-shot video with AI visual effects | +| `algorithmic_media` | Produced by deterministic algorithms without machine learning (procedural generation, rule-based systems) | Programmatic visualizations, procedural pattern generation | +| `composite_capture` | Multiple digital captures composited together without AI | Panoramic stitching, multi-exposure HDR composites | +| `composite_synthetic` | Composite of multiple elements where at least one is AI-generated | Stock photo composited with AI-generated background, AI text overlay on captured video | +| `human_edits` | Content augmented, corrected, or enhanced by humans using non-generative tools | Color-corrected product photography, manually retouched portraits, human copy editing | +| `data_driven_media` | Assembled from structured data feeds (DCO templates, product catalogs, weather-triggered variants) | Dynamic creative optimization, catalog-driven product carousels, weather-responsive ads | + +### Choosing the right value + +For mixed-production creatives, choose the value that best describes the **overall creative** at the level where provenance is attached. If you need to distinguish AI involvement per-asset, attach provenance at the individual asset level instead (see [Inheritance](#inheritance) below). + +Common patterns: + +- **AI image + human copy**: Attach `trained_algorithmic_media` to the image asset, `digital_creation` to the text asset, and `composite_with_trained_algorithmic_media` at the manifest level +- **DCO with AI-generated headlines**: `data_driven_media` at the manifest level, `trained_algorithmic_media` on the AI-generated text assets +- **Human photographer + AI background removal**: `composite_with_trained_algorithmic_media` at the manifest level + +## Human oversight + +The `human_oversight` enum describes the level of human involvement in an AI-assisted creation process. + +| Value | Description | +|-------|-------------| +| `none` | Fully automated with no human involvement in generation | +| `prompt_only` | Human provided the prompt or instructions but did not review outputs | +| `selected` | Human selected from multiple AI-generated candidates | +| `edited` | Human edited or refined AI-generated output | +| `directed` | Human directed the creative process with AI as an assistive tool | + +This field is relevant when `digital_source_type` indicates AI involvement. For non-AI content, omit it. + +## Inheritance + +Provenance attaches at three levels in the creative hierarchy. The most specific provenance wins, and replacement is **full-object** -- there is no field-level merging. + +``` +creative-asset.provenance (1) default for the creative in the library + creative-manifest.provenance (2) default for this manifest + individual asset .provenance (3) override for a specific asset +``` + +### Resolution rules + +1. If an individual asset has `provenance`, use it +2. Otherwise, if the manifest has `provenance`, use it +3. Otherwise, if the creative asset has `provenance`, use it +4. Otherwise, no provenance is declared for that asset + +### Example: mixed creative + +A creative where the image is AI-generated but the copy is human-written. The manifest-level provenance covers the overall creative. The image asset overrides with its own, more specific provenance. + +```json +{ + "$schema": "/schemas/3.0.13/core/creative-manifest.json", + "format_id": { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "display_300x250" + }, + "provenance": { + "digital_source_type": "composite_with_trained_algorithmic_media", + "declared_by": { "role": "agency" } + }, + "assets": { + "banner_image": { + "asset_type": "image", + "url": "https://cdn.novabrands.example.com/hero_ai.jpg", + "width": 300, + "height": 250, + "provenance": { + "digital_source_type": "trained_algorithmic_media", + "ai_tool": { + "name": "DALL-E 3", + "version": "3.0", + "provider": "OpenAI" + }, + "human_oversight": "selected", + "declared_by": { "role": "agency" }, + "c2pa": { + "manifest_url": "https://cdn.novabrands.example.com/c2pa/hero_ai.c2pa" + } + } + }, + "headline": { + "asset_type": "text", + "content": "Nutrition dogs love" + }, + "clickthrough_url": { + "asset_type": "url", + "url": "https://novabrands.example.com/products?campaign={MEDIA_BUY_ID}" + } + } +} +``` + +In this example: +- `banner_image` uses its own provenance: `trained_algorithmic_media` with full AI tool details +- `headline` inherits the manifest-level provenance: `composite_with_trained_algorithmic_media` +- `clickthrough_url` also inherits the manifest-level provenance + +Note that the image's provenance is a complete replacement. Even though the manifest-level provenance has `declared_by`, the image asset must re-declare it in its own provenance object if that information should carry through. + +### Artifact inheritance + +For content artifacts (publisher content), the same pattern applies: + +``` +artifact.provenance (1) default for the artifact + artifact.assets[].provenance (2) override for a specific inline asset +``` + +```json +{ + "$schema": "/schemas/3.0.13/content-standards/artifact.json", + "property_rid": "01916f3a-a1d3-7000-8000-000000000030", + "artifact_id": "article_ai_trends_2026", + "provenance": { + "digital_source_type": "digital_creation", + "declared_by": { "role": "platform" } + }, + "assets": [ + { + "type": "text", + "role": "title", + "content": "AI trends reshaping the industry in 2026" + }, + { + "type": "image", + "url": "https://cdn.aimagazine.example.com/illustration.jpg", + "alt_text": "Conceptual illustration of neural networks", + "provenance": { + "digital_source_type": "trained_algorithmic_media", + "ai_tool": { "name": "Midjourney", "version": "v7" }, + "human_oversight": "directed", + "declared_by": { "role": "platform" } + } + } + ] +} +``` + +The article text inherits `digital_creation` from the artifact. The illustration overrides with its own `trained_algorithmic_media` provenance. + +## Trust model + + +Provenance is a **claim** by the declaring party. It is not proof. The enforcing party should verify independently. + + +In advertising, the party declaring provenance and the party enforcing it have competing incentives. A buyer submitting a creative has reason to claim the content is human-made — AI-generated creatives may face placement restrictions, mandatory disclosure labels, or outright rejection on certain inventory. A seller accepting that creative has the opposite incentive: publishing AI-generated content without proper disclosure creates regulatory liability for the publisher, not the advertiser. AdCP handles this tension by treating provenance as a claim, not a fact. The buyer declares; the seller verifies. Verification happens at each enforcement point independently, using AI detection services (via `get_creative_features`), C2PA manifest validation, or both. No party needs to trust any other party's assertion. The protocol provides the structure for claims and the integration points for verification — the supply chain provides the adversarial pressure that keeps both honest. + +The `declared_by` field identifies who attached the provenance claim. The `verification` array carries any detection results the declaring party wants to disclose. But the party enforcing a provenance requirement runs its own verification through existing governance infrastructure. + +```mermaid +sequenceDiagram + participant Buyer as Buyer Agent + participant Seller as Seller Agent + participant Detector as AI Detection Agent + + Note over Buyer: 1. DECLARATION + Buyer->>Seller: sync_creatives with provenance
digital_source_type: "digital_capture" + + Note over Seller: 2. POLICY CHECK + Seller->>Seller: creative_policy.provenance_required = true
Provenance present? Yes + + Note over Seller: 3. INDEPENDENT VERIFICATION + Seller->>Detector: get_creative_features
(creative manifest) + Detector-->>Seller: feature_id: "ai_generated"
value: true, confidence: 0.94 + + Note over Seller: 4. ENFORCEMENT + Seller->>Seller: Buyer claims "digital_capture"
Detection says "ai_generated"
Mismatch -- reject creative + + Seller-->>Buyer: Creative rejected:
"AI detection contradicts provenance claim" +``` + +### Declaring party roles + +| Role | Description | +|------|-------------| +| `creator` | The party that created or generated the content | +| `advertiser` | The brand or advertiser that owns the content | +| `agency` | Agency acting on behalf of the advertiser | +| `platform` | Ad platform or publisher that processed the content | +| `tool` | Automated tool or service that attached provenance metadata | + +### Buyer-attached verification + +The `verification` array on the provenance object lets the declaring party share detection results for transparency. Multiple services can independently evaluate the same content: + +```json +{ + "verification": [ + { + "verified_by": "Hive Moderation", + "verified_time": "2026-02-15T15:00:00Z", + "result": "ai_generated", + "confidence": 0.96, + "details_url": "https://hive.example.com/reports/abc123" + }, + { + "verified_by": "Reality Defender", + "verified_time": "2026-02-15T15:05:00Z", + "result": "ai_generated", + "confidence": 0.93 + } + ] +} +``` + +These results are **supplementary**. A seller that requires provenance verification runs its own detection through [`get_creative_features`](/dist/docs/3.0.13/governance/creative/get_creative_features) rather than trusting the buyer's attached results. + +Verification results use one of four outcomes: + +| Result | Description | +|--------|-------------| +| `authentic` | Content verified as non-AI-generated | +| `ai_generated` | Content detected as AI-generated | +| `ai_modified` | Content detected as AI-modified (original non-AI content with AI alterations) | +| `inconclusive` | Detection was unable to reach a confident determination | + +### Example: provenance through a campaign + +Acme Brands is running a spring campaign. Their agency, Meridian Media, uses an AI image generator to produce a set of display banners — photorealistic product shots with AI-generated backgrounds. Meridian attaches provenance to the creative manifest: `digital_source_type` is `composite_with_trained_algorithmic_media`, `ai_tool` identifies the generator, and `disclosure.required` is `true` with `eu_ai_act_article_50` and `ca_sb_942` listed as applicable regulations. For the EU jurisdiction, Meridian sets `render_guidance.persistence` to `continuous` with `positions` preferring `overlay` — expressing the EU AI Act's requirement for persistent labeling. + +The campaign is submitted to Pinnacle Publishing through AdCP. Pinnacle's ad operations platform checks the provenance claim, then runs the creative through its verification pipeline via `get_creative_features`. The AI detection service returns `ai_modified` with 0.94 confidence — consistent with the declared source type. Pinnacle's system confirms the claim, reads the render guidance for the serving jurisdiction, applies the required disclosure label with the specified persistence, and clears the creative for serving. The provenance metadata, the detection result, the render guidance, and the disclosure decision are all recorded and auditable. + +If Meridian had declared `digital_capture` instead — claiming no AI involvement — Pinnacle's detection service would have flagged the inconsistency. The creative would be held for review, not served. + +## C2PA integration + +The `c2pa` field provides a soft reference to [C2PA Content Credentials](https://c2pa.org/) -- the cryptographic provenance standard developed by the Coalition for Content Provenance and Authenticity. + +```json +{ + "c2pa": { + "manifest_url": "https://cdn.acmecorp.example.com/c2pa/manifests/hero_abc123.c2pa" + } +} +``` + +### Why a URL reference + +C2PA bindings are typically embedded in the media file itself. But ad tech pipelines routinely transcode, resize, and reformat creative assets -- breaking file-level C2PA bindings in the process. A URL reference to the original C2PA manifest store survives this transcoding, preserving the chain of provenance through the supply chain. + +The reference is a pointer, not a replacement for C2PA. Any party in the chain can fetch the manifest from the URL and verify the original content credentials, even after the media file has been transcoded. + +### Usage pattern + +1. Creator generates content and produces a C2PA manifest +2. Creator uploads the manifest store to a stable URL +3. Creator attaches the `manifest_url` in AdCP provenance +4. Downstream parties (agencies, platforms, sellers) can verify the original credentials at any time by fetching the manifest + +## Disclosure requirements + +The `disclosure` object declares regulatory obligations for AI-generated content. + +```json +{ + "disclosure": { + "required": true, + "jurisdictions": [ + { + "country": "US", + "region": "CA", + "regulation": "ca_sb_942", + "label_text": "Created with AI", + "render_guidance": { + "persistence": "flexible", + "positions": ["prominent", "footer"] + } + }, + { + "country": "DE", + "regulation": "eu_ai_act_article_50", + "label_text": "KI-generiert", + "render_guidance": { + "persistence": "continuous", + "positions": ["overlay", "subtitle"] + } + }, + { + "country": "CN", + "regulation": "cn_deep_synthesis", + "label_text": "AI-generated content", + "render_guidance": { + "persistence": "initial", + "min_duration_ms": 3000, + "positions": ["overlay", "pre_roll"] + } + } + ] + } +} +``` + +| Field | Required | Description | +|-------|----------|-------------| +| `required` | Yes | Whether AI disclosure is required based on applicable regulations | +| `jurisdictions` | No | Array of jurisdictions where disclosure obligations apply | +| `jurisdictions[].country` | Yes | ISO 3166-1 alpha-2 country code | +| `jurisdictions[].region` | No | Sub-national region code (e.g., `CA` for California) | +| `jurisdictions[].regulation` | Yes | Regulation identifier | +| `jurisdictions[].label_text` | No | Required disclosure label text in the local language | +| `jurisdictions[].render_guidance` | No | How the disclosure should be rendered for this jurisdiction | +| `jurisdictions[].render_guidance.persistence` | No | How long the disclosure must persist: `continuous`, `initial`, or `flexible` | +| `jurisdictions[].render_guidance.min_duration_ms` | No | Minimum display duration in milliseconds (required context for `initial` persistence) | +| `jurisdictions[].render_guidance.positions` | No | Preferred disclosure positions in priority order (first supported wins) | + +### Render guidance + +The `render_guidance` object on each jurisdiction expresses the declaring party's intent for how the disclosure should be rendered based on the regulation's requirements. Different regulations have different persistence requirements: + +- **`continuous`** — The disclosure must remain visible or audible throughout the content display duration. For video/audio, the full playback. For static formats (display, DOOH), the full display slot. For DOOH, "content duration" means the ad's display slot within the rotation, not the screen's full rotation cycle. +- **`initial`** — The disclosure must appear at the start for a minimum duration before it may be removed. Pair with `min_duration_ms` to specify how long — without it, the duration is at the publisher's discretion. +- **`flexible`** — Disclosure presence is sufficient; the publisher controls timing and duration. + +When multiple sources specify persistence for the same jurisdiction (e.g., brief `required_disclosures[].persistence` and provenance `render_guidance.persistence`), the most restrictive mode applies: `continuous` > `initial` > `flexible`. + +The `positions` array is an ordered preference list. The first position that the serving format supports should be used. For example, `["overlay", "subtitle"]` means "prefer overlay, fall back to subtitle if overlay is not available." + +Not all position-persistence combinations are meaningful. Positions with inherently bounded duration — `end_card`, `pre_roll` — cannot satisfy `continuous` persistence because they appear only for part of the content. Creative agents should not request `continuous` on these positions, and formats should not claim `continuous` support for them. + +For audio-only environments (podcast, streaming audio, smart speakers), only `audio`, `pre_roll`, and `companion` positions are applicable. Visual positions (`overlay`, `footer`, `subtitle`) are undefined without a screen. Creative agents building for audio formats should restrict `render_guidance.positions` to audio-compatible values. + +Render guidance travels with the creative through the supply chain. At serve time, the publisher reads the guidance from provenance and renders accordingly. Governance agents can audit whether the publisher followed the declared guidance. + +### Multi-asset aggregation + +When a creative is assembled from multiple assets with different `render_guidance` for the same jurisdiction (common in DCO), the most restrictive persistence applies across the assembled creative: if any asset requires `continuous`, the assembled creative requires `continuous`. This follows the same precedence as conflict resolution: `continuous` > `initial` > `flexible`. + +### Enforcement vs self-reported compliance + +For formats where the publisher controls the rendering surface (hosted video, display banners, SSAI), the publisher can enforce render guidance directly — rendering an overlay, controlling its duration, and verifying compliance. + +For opaque, self-rendering creatives (MRAID, JavaScript tags, VPAID), the creative controls its own viewport. The publisher cannot inject or enforce disclosure rendering inside the creative's sandbox. In these cases, disclosure compliance depends on the creative agent embedding the disclosure during build. The format's `disclosure_capabilities` should reflect this: only claim persistence modes the format's rendering layer can verify or enforce, not modes that rely on creative self-compliance. Governance agents can verify self-rendered disclosures post-hoc via `get_creative_features` by rendering the creative in a headless environment and inspecting for disclosure presence. + +### Known regulation identifiers + +| Identifier | Regulation | Status | +|------------|-----------|--------| +| `eu_ai_act_article_50` | EU AI Act Article 50 | Enforcement August 2026 | +| `ca_sb_942` | California SB 942 | Live since January 2026 | +| `cn_deep_synthesis` | China Deep Synthesis Provisions | In effect | + +Regulation identifiers are conventions, not a closed enum. New regulations can be referenced without protocol changes. + +## Creative policy enforcement + +Sellers can require provenance on submitted creatives through the `provenance_required` field in `creative-policy`: + +```json +{ + "$schema": "/schemas/3.0.13/core/creative-policy.json", + "co_branding": "optional", + "landing_page": "any", + "templates_available": false, + "provenance_required": true +} +``` + +When `provenance_required` is `true`: + +1. Buyers must attach provenance to creative submissions +2. The seller may independently verify claims via `get_creative_features` +3. Creatives without provenance are rejected + +This field is surfaced in product discovery through `get_products`, so buyers know the requirement before submitting creatives. + +## Where provenance attaches + +| Schema | Field | Description | +|--------|-------|-------------| +| `creative-asset` | `provenance` | Default for the creative in the library | +| `creative-manifest` | `provenance` | Default for all assets in this manifest | +| `image-asset` | `provenance` | Override for a specific image | +| `video-asset` | `provenance` | Override for a specific video | +| `audio-asset` | `provenance` | Override for a specific audio file | +| `text-asset` | `provenance` | Override for specific text content | +| `html-asset` | `provenance` | Override for HTML content | +| `css-asset` | `provenance` | Override for CSS content | +| `javascript-asset` | `provenance` | Override for JavaScript content | +| `vast-asset` | `provenance` | Override for a VAST tag | +| `daast-asset` | `provenance` | Override for a DAAST tag | +| `url-asset` | `provenance` | Override for a URL asset | +| `artifact` | `provenance` | Default for the content artifact | +| `artifact.assets[]` (text, image, video, audio) | `provenance` | Override for a specific inline asset | + +## Schema reference + +| Schema | Location | +|--------|----------| +| Provenance object | [`/schemas/core/provenance.json`](https://adcontextprotocol.org/schemas/3.0.13/core/provenance.json) | +| Digital source type enum | [`/schemas/enums/digital-source-type.json`](https://adcontextprotocol.org/schemas/3.0.13/enums/digital-source-type.json) | +| Creative asset (with provenance) | [`/schemas/core/creative-asset.json`](https://adcontextprotocol.org/schemas/3.0.13/core/creative-asset.json) | +| Creative manifest (with provenance) | [`/schemas/core/creative-manifest.json`](https://adcontextprotocol.org/schemas/3.0.13/core/creative-manifest.json) | +| Creative policy (provenance_required) | [`/schemas/core/creative-policy.json`](https://adcontextprotocol.org/schemas/3.0.13/core/creative-policy.json) | +| Artifact (with provenance) | [`/schemas/content-standards/artifact.json`](https://adcontextprotocol.org/schemas/3.0.13/content-standards/artifact.json) | + +## Related + +- [Provenance verification](/dist/docs/3.0.13/governance/creative/provenance-verification) -- How the governance infrastructure verifies AI provenance claims +- [Creative Governance](/dist/docs/3.0.13/governance/creative/index) -- Feature-based creative evaluation via `get_creative_features` +- [Content Standards](/dist/docs/3.0.13/governance/content-standards/index) -- Privacy-preserving brand suitability for publisher content +- [Generative Creative](/dist/docs/3.0.13/creative/generative-creative) -- AI-powered creative generation with `build_creative` diff --git a/dist/docs/3.0.13/creative/sales-agent-creative-capabilities.mdx b/dist/docs/3.0.13/creative/sales-agent-creative-capabilities.mdx new file mode 100644 index 0000000000..00af61f482 --- /dev/null +++ b/dist/docs/3.0.13/creative/sales-agent-creative-capabilities.mdx @@ -0,0 +1,316 @@ +--- +title: Creative capabilities on sales agents +sidebarTitle: Sales agent creatives +description: "Sales agents in AdCP implement the Creative Protocol alongside Media Buy for inline creative management and generative ad formats." +"og:title": "AdCP — Creative capabilities on sales agents" +--- + +Sales agents can implement the Creative Protocol alongside the Media Buy Protocol. When they do, a single agent endpoint handles both media buying and creative management — the buyer doesn't need to discover and connect to a separate service. + +This is the common case for sellers that generate creatives at serve time, manage a creative library internally, or offer format-specific creative services as part of their ad product. + +## How it works + +A sales agent declares Creative Protocol support in `get_adcp_capabilities`: + +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.0.13/protocol/get-adcp-capabilities-response.json", + "adcp": { + "major_versions": [3], + "idempotency": { "supported": true, "replay_ttl_seconds": 86400 } + }, + "supported_protocols": ["media_buy", "creative"], + "account": { + "supported_billing": ["operator", "agent"] + }, + "media_buy": { + "features": { + "inline_creative_management": true + } + }, + "creative": { + "has_creative_library": true, + "supports_generation": true, + "supports_transformation": false, + "supports_compliance": false + } +} +``` + +Note that `inline_creative_management` (a media buy feature for attaching creatives to packages at buy time) and Creative Protocol support are independent. A sales agent can support one, the other, or both. + +`inline_creative_management` allows attaching creatives directly to packages in `create_media_buy` — the creative travels with the buy order. Creative Protocol support (`"creative"` in `supported_protocols`) means the agent implements creative tasks like `build_creative`, `list_creative_formats`, and [`sync_creatives`](/dist/docs/3.0.13/creative/task-reference/sync_creatives). A sales agent might support inline creative management without implementing the Creative Protocol (the buyer manages creatives externally and just references them in the buy), or implement the Creative Protocol without inline management (creatives are synced separately via `sync_creatives` before being assigned to packages). + +The buyer calls all tasks — media buy and creative — on the same agent URL. The protocol the task belongs to determines the schema, not the type of agent. + +## Available creative tasks + +When a sales agent declares `"creative"` in `supported_protocols`, it can implement any Creative Protocol task: + +| Task | When to implement | +|---|---| +| `list_creative_formats` | Always — buyers need to discover supported formats | +| `sync_creatives` | When the agent hosts a creative library. Sales agents SHOULD support the `assignments` field for bulk creative-to-package mapping. | +| `list_creatives` | When buyers need to browse the library | +| `build_creative` | When the agent generates or transforms creatives | +| `preview_creative` | When the agent can render previews | +| `get_creative_delivery` | When the agent can report variant-level delivery data | + +These are the same tasks a standalone creative agent implements. The difference is operational, not protocol-level: the buyer doesn't need to discover and connect to a separate service. + +Sales agents that already implement the [accounts protocol](/dist/docs/3.0.13/accounts/overview) for media buys do not need additional account setup for creative tasks — the same account covers both protocols. + +## Creative review + +Sales agents that receive creatives — whether via inline attachment in `create_media_buy` or via `sync_creatives` — may perform creative review before serving. This mirrors real publisher and SSP workflows where creatives are scanned for policy compliance, malware, or brand safety violations. + +Creative review status is surfaced at two levels: + +- **Creative library**: The `status` field on each creative in [`list_creatives`](/dist/docs/3.0.13/creative/task-reference/list_creatives) uses the creative status enum: `processing`, `pending_review`, `approved`, `rejected`, or `archived`. +- **Package level**: The `approval_status` field on each creative in [`get_media_buys`](/dist/docs/3.0.13/media-buy/task-reference/get_media_buys) responses uses the creative approval status enum: `pending_review`, `approved`, or `rejected`. Rejected creatives include a `rejection_reason` with a human-readable explanation. + +A creative may be `approved` in the library but `rejected` at the package level if it violates placement-specific policies (e.g., a video creative on an audio-only placement). + +Buyers SHOULD poll `list_creatives` or `get_media_buys` after syncing or submitting a media buy with new creatives, especially for publishers with strict creative policies. + +For generative formats where the seller generates at serve time, creative review applies to the brief and brand identity rather than individual creatives. The seller validates that the brief's constraints and brand assets meet its policies before generation begins. + +**Platform and community guidelines**: Social platforms, UGC sites, and community-driven publishers often enforce content policies beyond standard ad policy (e.g., community standards, promoted content guidelines, category-specific restrictions). These platform-specific policies are surfaced through the same `rejection_reason` field — the buyer does not need a separate mechanism to handle them. When a creative is rejected for a community guideline violation, the `rejection_reason` explains what policy was violated so the buyer can fix and re-submit. + +### Implementation checklist for generative creative + +Sales agents offering generative creative should: + +1. **Declare capabilities** in `get_adcp_capabilities`: + - `supports_generation: true` in creative capabilities + - `"creative"` in `supported_protocols` + - `inline_creative_management: true` if creatives travel with the media buy + +2. **Define generative formats** via `list_creative_formats` where `format_id.agent_url` points to your own agent. Include descriptive format names and asset requirements (at minimum a `brief` asset). + +3. **Implement `preview_creative`** — return representative previews for pre-flight review. Support `context_description` inputs so buyers can simulate different serve-time conditions. For conversational formats, include `interactive_url` for sandbox testing. + +4. **Implement `get_creative_delivery`** — return variant manifests showing what was generated and served. Include `generation_context` (context_type, topic, device_class) and delivery metrics per variant. Plan for variant retention: retain at least 90 days of variant data for post-flight audit. + +5. **Validate briefs at buy time** — when a buyer submits a brief in `create_media_buy`, validate that the brief's constraints (brand identity, guardrails, required disclosures) are compatible with your generation capabilities. Reject with a clear error if not. + +6. **Handle creative review for briefs** — for generative formats, review applies to the brief and brand identity rather than individual creatives. Communicate review status via `approval_status` on the package in `get_media_buys`. + +## Generative formats on sales agents + +A seller that generates creatives at serve time — contextual ads, page-matched display, AI-generated native — hosts its own generative format. The `format_id.agent_url` points to the sales agent itself: + +```json +{ + "format_id": { + "agent_url": "https://ads.seller-example.com", + "id": "contextual_display_generative" + }, + "name": "Contextual display (AI-generated)", + "type": "display", + "description": "Display ads generated at serve time based on page context and brand brief" +} +``` + +The buyer discovers this format through `list_creative_formats` on the sales agent, then provides a brief when creating the media buy: + +```json +{ + "packages": [{ + "product_id": "premium_display", + "pricing_option_id": "cpm_standard", + "budget": 50000, + "creatives": [{ + "creative_id": "brand_contextual_brief", + "name": "Q2 contextual campaign brief", + "format_id": { + "agent_url": "https://ads.seller-example.com", + "id": "contextual_display_generative" + }, + "assets": { + "brief": { + "content": "Highlight our sustainability story. Match tone to editorial context." + } + } + }] + }] +} +``` + +The seller generates creatives at serve time using this brief and the buyer's brand identity. No separate `build_creative` call is needed — the brief travels with the media buy. + +For regulated categories (financial services, pharma), look for `supports_compliance: true` in the agent's creative capabilities. Compliance-aware agents validate required disclosures and regulatory elements during generation — include compliance requirements in the brief so the agent can enforce them. + +## Previewing generative output + +For generative formats, `preview_creative` serves two purposes: + +**Before the campaign** — pass the brief manifest with `context_description` inputs to see representative samples of what the agent could generate: + +```json +{ + "request_type": "single", + "quality": "draft", + "creative_manifest": { + "format_id": { + "agent_url": "https://ads.seller-example.com", + "id": "contextual_display_generative" + }, + "assets": { + "brief": { + "content": "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" } + ] +} +``` + +Use `quality: "draft"` for fast iteration on creative direction, `quality: "production"` for stakeholder review. These previews are illustrative — real output depends on live signals at serve time. Preview doesn't require an active media buy — you can preview before calling `create_media_buy`. + +**After the campaign** — pass a `variant_id` from `get_creative_delivery` to replay exactly what was served: + +```json +{ + "request_type": "variant", + "variant_id": "gen_tech_mobile_001" +} +``` + +The response includes the variant's actual manifest and a rendered preview. This is a faithful replay, not a re-generation. + +See [Previewing generative creative](/dist/docs/3.0.13/creative/task-reference/preview_creative#previewing-generative-creative) for the full mental model and expectations table. + +## Delivery reporting + +A sales agent implementing both protocols provides two complementary views of delivery data: + +| Task | Protocol | What it provides | +|---|---|---| +| `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, generation context, variant-level metrics | + +Both tasks are called on the same agent URL. Use `media_buy_id` and `creative_id` as join keys to correlate data across both responses. + +For generative formats, `get_creative_delivery` is where the buyer sees what was actually generated. Each variant includes a manifest (the actual rendered creative — headline text, image URLs, format) and generation context (the signals that triggered generation, like page topic or device class). `get_media_buy_delivery` provides the aggregate view with spend, pacing, and dimensional breakdowns. + +### Example: variant-level reporting on a sales agent + +```json +{ + "media_buy_id": "mb_12345", + "currency": "USD", + "reporting_period": { + "start": "2026-03-01T00:00:00-05:00", + "end": "2026-03-08T23:59:59-05:00", + "timezone": "America/New_York" + }, + "creatives": [ + { + "creative_id": "brand_contextual_brief", + "format_id": { + "agent_url": "https://ads.seller-example.com", + "id": "contextual_display_generative" + }, + "totals": { + "impressions": 300000, + "spend": 15000, + "clicks": 12000, + "ctr": 0.04 + }, + "variant_count": 47, + "variants": [ + { + "variant_id": "gen_tech_mobile_001", + "generation_context": { + "context_type": "web_page", + "topic": "technology, semiconductors", + "device_class": "mobile" + }, + "manifest": { + "format_id": { + "agent_url": "https://ads.seller-example.com", + "id": "contextual_display_generative" + }, + "assets": { + "headline": { + "asset_type": "text", + "content": "Sustainable tech for a better tomorrow" + }, + "hero_image": { + "asset_type": "image", + "url": "https://cdn.seller-example.com/generated/tech_mobile_001.jpg", + "width": 300, + "height": 250 + } + } + }, + "impressions": 45000, + "spend": 2250, + "clicks": 2700, + "ctr": 0.06 + } + ] + } + ] +} +``` + +## When to use a separate creative agent + +A separate creative agent makes sense when: + +- The creative service is **independent of any seller** — a creative management platform, ad server, or format conversion service +- Multiple sellers need to **serve the same creatives** — the buyer manages creatives in one place and distributes them +- The buyer wants **centralized creative analytics** across sellers + +When the seller's ad product includes creative generation or management as an integrated capability, implementing both protocols on the sales agent is simpler for everyone. + +## Capability discovery + +Buyers check `get_adcp_capabilities` to understand what a sales agent supports: + +```javascript +const caps = await agent.getAdcpCapabilities({}); + +if (caps.errors) { + throw new Error(`Capabilities check failed: ${caps.errors[0].message}`); +} + +const sellsMedia = caps.supported_protocols.includes('media_buy'); +const managesCreatives = caps.supported_protocols.includes('creative'); + +if (managesCreatives) { + const { has_creative_library, supports_generation } = caps.creative; + + if (supports_generation) { + // Agent generates creatives — look for generative formats + const formats = await agent.listCreativeFormats({}); + if (formats.errors) { + console.error('Format discovery failed:', formats.errors); + } + } + + if (has_creative_library) { + // Agent hosts a library — can sync and browse creatives + const creatives = await agent.listCreatives({ + account: { account_id: 'acc_123' } + }); + if (creatives.errors) { + console.error('Library browse failed:', creatives.errors); + } + } +} +``` + +## Related + +- [Creative Specification](/dist/docs/3.0.13/creative/specification) — Protocol requirements for creative agents +- [Implementing Creative Agents](/dist/docs/3.0.13/creative/implementing-creative-agents) — Implementation guide for standalone creative agents +- [Generative Creative](/dist/docs/3.0.13/creative/generative-creative) — Using `build_creative` for AI-powered generation +- [get_creative_delivery](/dist/docs/3.0.13/creative/task-reference/get_creative_delivery) — Variant-level delivery reporting +- [get_media_buy_delivery](/dist/docs/3.0.13/media-buy/task-reference/get_media_buy_delivery) — Media buy delivery reporting diff --git a/dist/docs/3.0.13/creative/specification.mdx b/dist/docs/3.0.13/creative/specification.mdx new file mode 100644 index 0000000000..17ab34d818 --- /dev/null +++ b/dist/docs/3.0.13/creative/specification.mdx @@ -0,0 +1,477 @@ +--- +title: Creative Specification +description: "The AdCP Creative Protocol specification defines format discovery, manifest validation, AI creative generation, and preview rendering." +"og:title": "AdCP — Creative Specification" +sidebarTitle: Specification +--- + + +**AdCP 3.0 Proposal** - This specification is under development for AdCP 3.0. Feedback welcome via [GitHub Discussions](https://github.com/adcontextprotocol/adcp/discussions). + + +**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). + +## Abstract + +The Creative Protocol defines a standard interface for creative format discovery, manifest validation, creative generation, and preview rendering. This protocol enables AI agents to discover format specifications, build compliant creative assets, and generate previews across advertising platforms. + +## Protocol overview + +The Creative Protocol provides: + +- Format discovery with full technical specifications +- Manifest validation against format requirements +- AI-powered creative generation and transformation +- Preview rendering for creative verification +- Universal macros for cross-platform tracking + +## Transport requirements + +Creative 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 | + +Creative agents SHOULD support MCP as the preferred transport. + +Creative agents MUST declare Creative Protocol support via `get_adcp_capabilities`: + +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.0.13/protocol/get-adcp-capabilities-response.json", + "adcp": { + "major_versions": [2], + "idempotency": { "supported": true, "replay_ttl_seconds": 86400 } + }, + "supported_protocols": ["creative"], + "creative": { + "has_creative_library": true, + "supports_generation": false, + "supports_transformation": true, + "supports_compliance": false + } +} +``` + +The `creative` capabilities tell the buyer which interaction models this agent supports. See [Interaction models](#interaction-models) below. + +## Core concepts + +### Creative agents + +A creative agent is any agent that implements the Creative Protocol. This includes standalone services (ad servers, creative management platforms, generative tools) and sales agents that declare `"creative"` in `supported_protocols`. A creative agent: + +- Defines and documents formats it owns +- Validates manifests against format requirements +- Generates previews showing how creatives will render +- Optionally generates or transforms creatives from natural language briefs + +Sales agents that implement both the Media Buy Protocol and the Creative Protocol serve both roles from a single endpoint. See [Creative capabilities on sales agents](/dist/docs/3.0.13/creative/sales-agent-creative-capabilities). + +### Interaction models + +Creative agents serve different roles depending on their capabilities. Buyers use `get_adcp_capabilities` to determine which interaction model applies: + +| Model | Description | Capabilities | Examples | +|---|---|---|---| +| **Transformation agent** | Resizes or adapts existing manifests to new formats | `supports_transformation: true` | Format conversion services | +| **Generative agent** | Creates manifests from natural language briefs | `supports_generation: true` | AI creative platforms | +| **Creative ad server** | Hosts a creative library, generates ad-serving tags | `has_creative_library: true` | Flashtalking, CM360, Celtra | + +These models compose — an agent can support multiple. A creative ad server with `supports_generation: true` and `has_creative_library: true` can both generate creatives from briefs and retrieve existing ones from its library. The `supports_compliance` flag is orthogonal — any interaction model can support compliance requirements in briefs. + +**Buyer workflow by model:** + +- **Transformation**: `list_creative_formats` → `build_creative` (with `creative_manifest` + `target_format_id`) +- **Generation**: `list_creative_formats` → `build_creative` (with `message` + `target_format_id`) +- **Library retrieval**: `list_creatives` → `build_creative` (with `creative_id` + `target_format_id`) + +Agents that host a creative library should also implement the [accounts protocol](/dist/docs/3.0.13/accounts/overview) so buyers can establish access before querying. Sales agents that already implement accounts for media buys do not need to do anything additional. + +A transformation or generation agent that charges for its services implements the Accounts Protocol, exposes `pricing_options` on `list_creative_formats`, and returns pricing in `build_creative` responses. Agents that persist `creative_id` on build output can also expose pricing on `list_creatives`. Free transformation agents remain stateless and unchanged. + +### Format authority + +Each format has exactly one authoritative creative agent, identified by the `agent_url` in the format ID: + +```json +{ + "format_id": { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "display_300x250_image" + } +} +``` + +Creative agents MUST only return authoritative format definitions for formats they own. + +Creative agents MAY reference other creative agents that provide additional formats. + +### Formats + +Formats define how assets are assembled and rendered. A format specifies: + +- Media family (display, video, audio, dooh) +- Required and optional asset types +- Technical constraints (dimensions, duration, file size, codecs) +- Rendering behavior and interaction expectations + +### Assets + +Assets are the building blocks of creatives. Asset types include: + +- **image**: Static images (JPEG, PNG, WebP, GIF) +- **video**: Video files (MP4, WebM, MOV) or VAST tags +- **audio**: Audio files (MP3, M4A) or DAAST tags +- **text**: Headlines, descriptions, CTAs +- **html**: HTML5 creatives or third-party tags +- **javascript**: JavaScript tags +- **url**: Tracking pixels, clickthrough URLs + +### Manifests + +Manifests pair format specifications with actual asset content. A manifest provides: + +- Format reference (agent_url + id) +- Asset values keyed by asset_id from the format +- Tracking URLs and macros + +Creative agents MUST validate manifests against format requirements before accepting them. + +### Universal macros + +AdCP defines universal macros for cross-platform tracking. Creative agents MUST support these macros in tracking URLs: + +- `{TIMESTAMP}`: Unix timestamp +- `{CACHEBUSTER}`: Random cache-busting value +- `{CLICK_URL}`: Click tracking URL +- `{REDIRECT_URL}`: Final destination URL + +Sales agents MUST translate universal macros to their ad server's native syntax. + +## Creative Status Lifecycle + +**Schema**: [`enums/creative-status.json`](https://adcontextprotocol.org/schemas/3.0.13/enums/creative-status.json) + +Creatives in a library progress through a defined set of states. `archived` is the only buyer-initiated state change; all others are seller-initiated (processing, review, approval/rejection). + +``` +sync_creatives ──▶ processing ──▶ pending_review ──▶ approved + │ │ + │ (processing failure) │ (buyer archives) + ▼ ▼ + rejected ◀── (policy failure) ── pending_review + │ archived + │ (buyer fixes + resubmits │ + │ via sync_creatives) │ (buyer unarchives) + ▼ ▼ + processing approved +``` + +**Rules:** + +- `processing` → `pending_review`: automatic when ingestion and transcoding succeed +- `processing` → `rejected`: automatic when processing fails (corrupt file, unsupported codec, constraint violation) +- `pending_review` → `approved`: seller approves after content policy review +- `pending_review` → `rejected`: seller rejects with `rejection_reason` +- `approved` → `archived`: buyer-initiated via `sync_creatives` +- `archived` → `approved`: buyer-initiated via `sync_creatives` (unarchive). Sellers MAY require re-review, transitioning to `pending_review` instead. +- `rejected` → `processing`: buyer fixes the creative and resubmits via `sync_creatives`. The creative re-enters the full processing and review pipeline. +- `approved` → `pending_review`: seller-initiated re-review (e.g., policy change). Sellers SHOULD notify the buyer when a previously approved creative is pulled back for re-review. + +Creative agents MUST reject operations that reference a `rejected` creative for delivery (e.g., assigning it to a package) with error code `CREATIVE_REJECTED`. + +Creative agents MUST include `status` and `rejection_reason` (when rejected) in `list_creatives` responses. + +## Pricing + +Creative agents that charge for their services expose pricing through the same discover → build → report loop used by signals agents and content standards agents. + +### Pricing discovery surfaces + +Pricing is discovered via two surfaces depending on the agent's interaction model: + +- **`list_creatives`** — ad servers and library-based agents expose `pricing_options[]` on each creative. The buyer discovers pricing for specific creatives they want to use. +- **`list_creative_formats`** — transformation and generation agents expose `pricing_options[]` on each format. The buyer discovers pricing for the formats the agent can produce, before any creative exists. + +Both surfaces use the same `pricing_options[]` array of [`vendor-pricing-option`](https://adcontextprotocol.org/schemas/3.0.13/core/vendor-pricing-option.json) objects. Both require `account` and `include_pricing: true` on the request. + +An agent MAY expose pricing on both surfaces (e.g., a creative management platform that has both a library and transformation capabilities). + +### Pricing flow + +1. **Account setup** — rate card agreed. Determines pricing for all subsequent operations. +2. **Discovery** — `list_creatives` or `list_creative_formats` with `account` and `include_pricing: true` returns `pricing_options[]`. Vendors may offer multiple options (volume tiers, context-specific rates, different models per product line). +3. **Build** — `build_creative` with `account`. The agent computes the cost and returns `pricing_option_id`, `vendor_cost`, `currency`, and `consumption` in the response. +4. **Report** — `report_usage` with `creative_id` and `pricing_option_id` for reconciliation. + +### Pricing models + +Creative agents reuse the vendor pricing models defined in [`vendor-pricing-option.json`](https://adcontextprotocol.org/schemas/3.0.13/core/vendor-pricing-option.json): + +| Model | Creative use case | +|---|---| +| `cpm` | Cost per thousand impressions served — ad server model, DCO platforms | +| `percent_of_media` | Percentage of media spend — agency/platform model | +| `flat_fee` | Fixed charge per period — licensed creative suites, subscription access | +| `per_unit` | Fixed price per unit of work — per format adapted, per image generated, per token, per variant rendered | + +### Consumption details + +**Schema**: [`core/creative-consumption.json`](https://adcontextprotocol.org/schemas/3.0.13/core/creative-consumption.json) + +The `build_creative` response includes a `consumption` object with structured details about what was consumed. Well-known fields: `tokens` (LLM tokens consumed), `images_generated`, `renders` (render passes), `duration_seconds` (processing time). Agents MAY include additional fields. + +The `consumption` object is informational — it lets the buyer verify that `vendor_cost` is consistent with the rate card. `vendor_cost` is the billing source of truth. + +### Accounts requirement + +Creative agents that charge for their services MUST implement the [Accounts Protocol](/dist/docs/3.0.13/accounts/overview). This applies to any creative agent with pricing — ad servers, generation platforms, and transformation agents that bill for usage. + +### Bundled mode + +When a publisher uses a creative agent internally (bundled), the buyer never sees the creative agent's pricing. The cost is absorbed into product pricing. The sales agent is the buyer in the creative agent relationship — it establishes an account, calls `build_creative`, and handles `report_usage`. The protocol surface is the same. + +## Tasks + +The Creative Protocol defines the following tasks. See task reference pages for complete request/response schemas and examples. + +### list_creative_formats + +**Reference**: [`list_creative_formats` task](/dist/docs/3.0.13/creative/task-reference/list_creative_formats) + +Discover creative formats and their specifications. + +**Requirements:** +- Creative agents MUST return full format specifications for formats they own +- Creative agents MUST include `agent_url` identifying the authoritative agent for each format +- Creative agents MUST include technical constraints (dimensions, duration, file types) in format definitions +- Creative agents MAY include references to other creative agents providing additional formats +- When filtering by `format_ids`, creative agents MUST return only the requested formats + +### build_creative + +**Reference**: [`build_creative` task](/dist/docs/3.0.13/creative/task-reference/build_creative) + +Transform, generate, or retrieve creative manifests. Supports three modes: +1. **Generation**: Create a manifest from a brief or seed assets +2. **Transformation**: Adapt an existing manifest to a different format +3. **Library retrieval**: Resolve a `creative_id` from the agent's library into a manifest with ad-serving assets (HTML/JavaScript/VAST tags) + +**Requirements:** +- Creative agents MUST validate input manifests against format requirements +- Creative agents MUST return a valid manifest for the target format on success +- Creative agents MUST return validation errors if the transformation cannot be completed +- Creative agents SHOULD preserve tracking URLs and macros during transformation +- Creative agents SHOULD respect `quality` for generative tasks (`"draft"` for fast iteration, `"production"` for final delivery) and MAY ignore it for non-generative transforms +- Creative agents SHOULD honor `item_limit` when present, using the lesser of `item_limit` and the format's `max_items` +- Creative agents MAY use AI/LLM processing for generation tasks +- When `creative_id` is provided, creative agents MUST resolve the creative from their library +- When `macro_values` is provided, creative agents SHOULD substitute the specified macros in the output manifest's assets and leave unresolved macros as `{MACRO}` placeholders +- Creative agents MUST ignore unrecognized macro keys in `macro_values` — unknown macros are not an error +- Creative agents SHOULD assign globally unique `creative_id` values; when they cannot guarantee uniqueness, `concept_id` is REQUIRED on `build_creative` requests to disambiguate +- `build_creative` supports async responses (`status: "working"` with `context_id` polling) for generation and transformation tasks that take significant time. Library retrieval is typically synchronous. +- When `account` is provided and the agent charges, the response MUST include `pricing_option_id`, `vendor_cost`, and `currency`. The `consumption` object SHOULD be included when relevant. +- For async builds, pricing fields appear on the final completed response only, not on intermediate status responses. +- When a paid creative agent receives a `build_creative` request without `account` and the agent requires an account, the agent MUST return an error. + +### preview_creative + +**Reference**: [`preview_creative` task](/dist/docs/3.0.13/creative/task-reference/preview_creative) + +Generate preview renderings of creative manifests. + +**Requirements:** +- Creative agents MUST validate manifests before generating previews +- Creative agents MUST return preview URLs or HTML for valid manifests +- Creative agents MUST include `expires_at` for preview URLs +- Creative agents SHOULD support batch preview for multiple creatives +- Creative agents MAY support multiple output formats (URL, HTML, image) + +### list_creatives + +**Schema**: [`creative/list-creatives-request.json`](https://adcontextprotocol.org/schemas/3.0.13/creative/list-creatives-request.json) / [`creative/list-creatives-response.json`](https://adcontextprotocol.org/schemas/3.0.13/creative/list-creatives-response.json) + +**Reference**: [`list_creatives` task](/dist/docs/3.0.13/creative/task-reference/list_creatives) + +Browse and filter creative assets in a creative library. Implemented by any agent that hosts a creative library — ad servers, creative management platforms, and sales agents that manage creatives. + +**Requirements:** +- Agents MUST return creatives accessible to the authenticated account +- Agents MUST include approval status for each creative +- Agents SHOULD support filtering by format, status, tags, and date range +- Agents SHOULD support filtering by `concept_ids` and `format_ids` when the platform organizes creatives into concepts +- Agents MAY include dynamic content variable definitions when `include_variables=true` +- Agents MAY include a lightweight delivery snapshot when `include_snapshot=true`. The snapshot provides lifetime impressions and last-served date for operational use — detailed analytics belong in `get_creative_delivery`. +- When `account` and `include_pricing=true` are provided, agents that charge MUST include `pricing_options` on each creative — an array of [`vendor-pricing-option`](https://adcontextprotocol.org/schemas/3.0.13/core/vendor-pricing-option.json) objects. Vendors may offer multiple options per creative (volume tiers, context-specific rates, different pricing models). + +**Account requirements:** +- Creative agents that charge for their services MUST implement the [Accounts Protocol](/dist/docs/3.0.13/accounts/overview). This applies to any creative agent with pricing — ad servers, generation platforms, and transformation agents that bill for usage. +- Creative agents that host a library but do not charge SHOULD implement the Accounts Protocol so buyers can establish access before querying. +- This is the same accounts protocol used by sales agents — there is no separate version. +- Sales agents that already implement accounts for media buys do not need to do anything additional. + +### sync_creatives + +{/* Using latest because these schemas are not yet released in any version. + Update to correct version alias after the next release. */} +**Schema**: [`creative/sync-creatives-request.json`](https://adcontextprotocol.org/schemas/3.0.13/creative/sync-creatives-request.json) / [`creative/sync-creatives-response.json`](https://adcontextprotocol.org/schemas/3.0.13/creative/sync-creatives-response.json) + +**Reference**: [`sync_creatives` task](/dist/docs/3.0.13/creative/task-reference/sync_creatives) + +Upload and synchronize creative assets in a library. Implemented by any agent that hosts a creative library — ad servers, creative management platforms, and sales agents that manage creatives. + +**Requirements:** +- Agents MUST validate creatives against format specifications +- Agents MUST return validation errors for non-compliant creatives +- Agents MAY require approval before creatives are available for use +- Agents SHOULD support `dry_run` for validation without applying changes +- Agents MUST reject requests that combine `delete_missing: true` with `creative_ids` — `delete_missing` applies to the entire library, not a filtered subset +- Agents that also manage media buys SHOULD support the `assignments` field for bulk creative-to-package mapping +- Standalone creative agents that do not manage media buys SHOULD ignore the `assignments` field + +### get_creative_delivery + +**Reference**: [`get_creative_delivery` task](/dist/docs/3.0.13/creative/task-reference/get_creative_delivery) + +Retrieve creative delivery data with variant-level metrics. + +**Requirements:** +- Agents MUST return delivery data for the requested creatives +- Agents SHOULD include variant-level breakdowns when available +- Sales agents implementing the Creative Protocol SHOULD support this task when their products generate or optimize creative variants + +## Error handling + +Creative agents MUST return errors using the [standard AdCP error schema](/dist/docs/3.0.13/building/by-layer/L3/error-handling). + +Common error codes: + +- `REFERENCE_NOT_FOUND`: Requested format does not exist or is not accessible (`error.field` identifies the `format_id`) +- `VALIDATION_ERROR`: Manifest failed format validation +- `ASSET_MISSING`: Required asset not provided in manifest +- `ASSET_INVALID`: Asset does not meet format constraints +- `GENERATION_FAILED`: Creative generation could not be completed + +## Security considerations + +### Transport security + +All Creative Protocol communications MUST use HTTPS with TLS 1.2 or higher. + +### Asset security + +- Creative agents SHOULD validate that asset URLs are accessible +- Creative agents SHOULD scan assets for malware and malicious content +- Creative agents MUST NOT execute untrusted JavaScript during validation + +### Preview security + +- Preview URLs SHOULD be time-limited (indicated by `expires_at`) +- Creative agents SHOULD sandbox HTML previews to prevent script execution +- Consumers of `output_format: "html"` MUST only use trusted creative agents + +## Conformance + +### Creative agent conformance + +A conformant Creative Protocol agent MUST: + +1. Support at least one specified transport (MCP or A2A) +2. Implement `list_creative_formats` for format discovery +3. Return authoritative format definitions only for formats it owns +4. Validate manifests against format specifications +5. Use specified error codes + +A conformant Creative Protocol agent SHOULD: + +1. Implement `build_creative` for creative generation +2. Implement `preview_creative` for preview rendering +3. Support universal macros in tracking URLs +4. Implement `list_creatives` when the agent hosts a creative library +5. Implement `sync_creatives` when the agent accepts creative uploads +6. Support `creative_id` in `build_creative` when the agent hosts a creative library +7. Implement the accounts protocol (`sync_accounts` / `list_accounts`) when hosting a creative library +8. Declare `supports_generation`, `supports_transformation`, and `has_creative_library` in `get_adcp_capabilities` so buyers can determine the correct interaction model + +### Consumer conformance + +A conformant Creative Protocol consumer MUST: + +1. Use the `agent_url` from format IDs to identify the authoritative creative agent +2. Validate manifests against format specifications before submission +3. Handle validation errors appropriately +4. Track visited URLs when recursively discovering formats to avoid infinite loops + +## Implementation notes + +### Response time expectations + +Creative agents SHOULD target the following response times: + +| Operation Type | Target Latency | +|----------------|----------------| +| Format listing (list_creative_formats) | < 1 second | +| Library query (list_creatives) | < 1 second | +| Creative sync (sync_creatives) | < 5 seconds | +| Preview generation (preview_creative) | < 5 seconds | +| Batch preview (10 creatives) | < 10 seconds | +| Creative generation (build_creative) | < 60 seconds | + +### Recursive format discovery + +Creative agents MAY reference other creative agents in their `list_creative_formats` response: + +```json +{ + "creative_agents": [{ + "agent_url": "https://creative.adcontextprotocol.org", + "agent_name": "AdCP Reference Creative Agent", + "capabilities": ["validation", "assembly", "preview"] + }] +} +``` + +Consumers MAY recursively query referenced agents to discover additional formats. + +Consumers MUST track visited URLs to prevent infinite loops during recursive discovery. + +### Format-aware validation + +Manifest validation MUST be performed in the context of the format specification: + +1. Look up the format definition from the authoritative creative agent +2. For each asset in the manifest, find the corresponding entry in the format's `assets` array +3. Validate the asset value against the type and constraints defined in the format + +The format definition determines what type each asset_id should be. Asset type information is NOT included in the manifest itself. + +### Standard vs custom formats + +- **Standard formats**: Based on IAB specifications, hosted by the reference creative agent (`https://creative.adcontextprotocol.org`) +- **Custom formats**: Defined by individual publishers or creative platforms for specialized inventory + +Both work identically—the `agent_url` field identifies which agent is authoritative for each format. + +## Schema reference + + +Some creative protocol schemas (`build_creative`, `list_creative_formats`, `preview_creative`) have paths under `media-buy/` because they were originally released as part of the media-buy protocol. The schema paths are stable identifiers and do not affect which protocol the task belongs to. + + +| Schema | Description | +|--------|-------------| +| [`core/format.json`](https://adcontextprotocol.org/schemas/3.0.13/core/format.json) | Format definition | +| [`core/creative-manifest.json`](https://adcontextprotocol.org/schemas/3.0.13/core/creative-manifest.json) | Creative manifest | +| [`core/creative-asset.json`](https://adcontextprotocol.org/schemas/3.0.13/core/creative-asset.json) | Asset definition | +| [`media-buy/list-creative-formats-request.json`](https://adcontextprotocol.org/schemas/3.0.13/media-buy/list-creative-formats-request.json) | list_creative_formats request | +| [`media-buy/list-creative-formats-response.json`](https://adcontextprotocol.org/schemas/3.0.13/media-buy/list-creative-formats-response.json) | list_creative_formats response | +| [`creative/list-creatives-request.json`](https://adcontextprotocol.org/schemas/3.0.13/creative/list-creatives-request.json) | list_creatives request | +| [`creative/list-creatives-response.json`](https://adcontextprotocol.org/schemas/3.0.13/creative/list-creatives-response.json) | list_creatives response | +| [`creative/sync-creatives-request.json`](https://adcontextprotocol.org/schemas/3.0.13/creative/sync-creatives-request.json) | sync_creatives request | +| [`creative/sync-creatives-response.json`](https://adcontextprotocol.org/schemas/3.0.13/creative/sync-creatives-response.json) | sync_creatives response | diff --git a/dist/docs/3.0.13/creative/sponsored-placement-adapter-contracts.mdx b/dist/docs/3.0.13/creative/sponsored-placement-adapter-contracts.mdx new file mode 100644 index 0000000000..26329756c6 --- /dev/null +++ b/dist/docs/3.0.13/creative/sponsored-placement-adapter-contracts.mdx @@ -0,0 +1,77 @@ +--- +title: Sponsored Placement adapter contracts +description: "Four runtime contract families that ship under the single sponsored_placement canonical — Amazon SP, Criteo/CitrusAd, Pinterest/Snap Collection, generative-per-SKU." +"og:title": "AdCP — Sponsored Placement adapter contracts" +--- + +The `sponsored_placement` canonical covers retail-media catalog-driven creative — Amazon SP, Criteo SP, CitrusAd SP, Pinterest Collection, generative-per-SKU. The schema captures the binary axes (`composition_model`, `fanout_mode`, `item_production_model`) but the runtime contract — fan-out semantics, catalog-asset wiring, per-adopter tracking — differs enough between adopter families that a manifest validating against `sponsored_placement` tells the buyer little about whether it will actually serve on a given retail-media network. + +This page documents the four contract families, what runtime status each is `preview`-ready in, and the adopter-specific quirks that don't live in the schema. The canonical stays `preview` past 3.1 GA until at least two retail-media networks ship `format_schema` evidence (see [`canonical-formats.mdx` §`experimental` — one field, both axes](/dist/docs/3.0.13/creative/canonical-formats#experimental--one-field-both-axes)). + +## The four contract families + +| Family | `composition_model` | `fanout_mode` | `item_production_model` | Adopters | +|---|---|---|---|---| +| **Retail-media deterministic, buyer-uploaded** | `deterministic` | `per_item` | `buyer_pre_rendered` | Amazon SP | +| **Retail-media network-composed** | `deterministic` | `per_item` | `seller_pre_rendered_from_brief` | Criteo SP, CitrusAd SP | +| **Collection-layout per impression** | `deterministic` (debatable) | `multi_item_in_creative` | `buyer_pre_rendered` | Pinterest Collection, Snap Collection | +| **Generative-per-SKU** | algorithmic in practice | `per_item` | `seller_pre_rendered_from_brief` | Vendor-specific (Pencil, Persado, vertical retail-media platforms) | + +### 1. Retail-media deterministic, buyer-uploaded (Amazon SP) + +The buyer uploads the catalog assets (product image, headline, description) via `sync_creatives`. The retail-media network ingests the catalog row + assets and serves them deterministically against query/category triggers — no fan-out at render time. The buyer can predict per-impression rendering. + +- **Catalog-asset contract:** buyer supplies one creative per catalog item; the `source_catalog` slot points at the buyer's product feed; per-item assets are required. +- **Tracking:** Amazon ASIN + standard retail-media event vocabulary. Per-item attribution maps to the catalog row's identifier. +- **Adopter quirks:** Amazon's category-trigger system means the same uploaded creative may serve under different category contexts — buyers MUST treat impression-level category as untrusted-by-creative-shape; rely on Amazon's reporting for category attribution. +- **`runtime_status` readiness:** `preview` is appropriate. Most predictable family; `format_schema` evidence from Amazon would promote toward `stable`. + +### 2. Retail-media network-composed (Criteo SP, CitrusAd SP) + +The buyer supplies a brief + brand assets (logo, brand colors); the retail-media network composes the placement against its own catalog + design templates. The buyer cannot predict per-impression rendering at the asset-bundle level, only at the brand-direction level. + +- **Catalog-asset contract:** buyer supplies brief + brand assets; the `source_catalog` is the *seller's* catalog (the retail-media network's product index), not the buyer's. The buyer's product references are matched to seller-catalog rows via SKU / GTIN / category. +- **Tracking:** retail-media network's own event vocabulary; buyer attribution maps through the network's reporting API, not direct creative events. +- **Adopter quirks:** Criteo's composition logic varies by retailer integration — the same buyer brief produces different placements on Walmart vs. Target vs. Best Buy via Criteo. Buyers MUST treat per-retailer rendering as opaque and rely on Criteo's aggregated reporting. +- **`runtime_status` readiness:** `preview` is appropriate. The composition opacity is the gap to `stable` promotion — `format_schema` evidence would need to document the per-retailer variability. + +### 3. Collection-layout per impression (Pinterest Collection, Snap Collection) + +The buyer supplies a hero image + a collection of catalog items; the surface picks the collection layout per impression (grid, carousel, cover + reveal). `composition_model: deterministic` is technically true at the asset level but loose at the layout level. + +- **Catalog-asset contract:** buyer supplies one creative with a hero asset slot + an items array (each item: image + caption + URL). The `source_catalog` slot is the buyer's curated item collection, not a full product feed. +- **Tracking:** Pinterest's collection-item events (`collection_item_click`, `collection_close_up`) plus standard impression/click. Per-item attribution available; layout-variant attribution is not exposed. +- **Adopter quirks:** Snap Collection's "cover + reveal" layout requires a specific aspect ratio and asset count combination — schema doesn't enforce; buyers SHOULD pre-validate before sync. +- **`runtime_status` readiness:** `preview` is appropriate. The "deterministic" claim survives at the asset level but layout variability blocks `stable` without per-surface conformance evidence. + +### 4. Generative-per-SKU (vendor-specific) + +The buyer supplies a brief + catalog reference; the seller's generative pipeline produces a unique creative per SKU. 1 brief × N catalog items → N rendered creatives. `composition_model` is effectively algorithmic — each output is a fresh generative composition against the brief. + +- **Catalog-asset contract:** buyer supplies the brief + a catalog scope (SKUs, categories, or full feed); the seller produces creatives via `build_creative` with `item_production_model: seller_pre_rendered_from_brief` and `fanout_mode: per_item`. The `source_catalog` slot is the buyer's product feed; assets are seller-generated. +- **Tracking:** generative-output ID + buyer's catalog-item key (SKU/GTIN). Buyers SHOULD treat each generated creative as a distinct rendered output with its own performance signal, not as a copy of the brief. +- **Adopter quirks:** generative seeds and prompts are typically not exposed back to the buyer; buyers cannot reproduce a specific generation. Plan for re-generation cycles rather than asset-edit cycles. +- **`runtime_status` readiness:** `declared_only` until generative-quality evidence is documented per-adopter. `preview` is misleading — the composition is opaque to the buyer in a way `preview` doesn't capture. + +## `runtime_status` interaction matrix + +| Family | `preview` | `declared_only` | `stable` | +|---|---|---|---| +| Retail-media deterministic, buyer-uploaded | ✅ ready | n/a | gated on Amazon `format_schema` evidence | +| Retail-media network-composed | ✅ ready | n/a | gated on per-retailer variability documentation | +| Collection-layout per impression | ✅ ready | n/a | gated on per-surface conformance evidence | +| Generative-per-SKU | ⚠ misleading | ✅ default | gated on generative-quality evidence; may not promote without per-vendor framing | + +`runtime_status` lives on the product (not the creative); see [`canonical-formats.mdx` §runtime status](/dist/docs/3.0.13/creative/canonical-formats) for the field-level contract. + +## What this page is not + +- **Not a normative spec extension.** The four families share the existing `sponsored_placement` schema; this doc names the variability sellers and buyers will encounter against the canonical, but adds no required fields. +- **Not a promotion gate.** The canonical's promotion to `stable` is gated on `format_schema` evidence across at least two adopters, per [canonical-formats.mdx](/dist/docs/3.0.13/creative/canonical-formats). This page documents what `format_schema` evidence will need to cover for each family. +- **Not exhaustive.** Adopters whose runtime contract doesn't fit one of the four families above SHOULD file an issue against the canonical-formats track so the matrix can be extended. + +## Refs + +- [#3307](https://github.com/adcontextprotocol/adcp/pull/3307) — original `sponsored_placement` canonical +- [#4592](https://github.com/adcontextprotocol/adcp/issues/4592) — this doc +- [`canonical-formats.mdx`](/dist/docs/3.0.13/creative/canonical-formats) — overall canonical-formats vocabulary diff --git a/dist/docs/3.0.13/creative/task-reference/build_creative.mdx b/dist/docs/3.0.13/creative/task-reference/build_creative.mdx new file mode 100644 index 0000000000..c8b7f59ab1 --- /dev/null +++ b/dist/docs/3.0.13/creative/task-reference/build_creative.mdx @@ -0,0 +1,1270 @@ +--- +title: build_creative +description: "build_creative generates, transforms, or retrieves ad creative manifests in AdCP from a natural language brief to production-ready assets." +"og:title": "AdCP — build_creative" +--- + + +Transform, generate, or retrieve a creative manifest for a specific format. Supports three modes: + +1. **Generation**: Create a manifest from a brief or seed assets (`message` + `creative_manifest`) +2. **Transformation**: Adapt an existing manifest to a different format (`creative_manifest` + `target_format_id`) +3. **Library retrieval**: Resolve a `creative_id` from the agent's library into a manifest with ad-serving assets + +For generation and transformation, `build_creative` takes a creative manifest as input and produces a creative manifest as output. For library retrieval, provide a `creative_id` (from [`list_creatives`](/dist/docs/3.0.13/creative/task-reference/list_creatives)) and the agent resolves it from its library. + +For information about format IDs and how to reference formats, see [Creative Formats - Referencing Formats](/dist/docs/3.0.13/creative/formats#referencing-formats). + +## Request parameters + +| Parameter | Type | Required | Description | +|-----------|------|----------|-------------| +| `message` | string | No | Natural language instructions for the creative agent. For generation, this provides creative direction. For transformation, this guides how to adapt the creative. For refinement, this describes the desired changes. | +| `creative_manifest` | object | No | Creative manifest to transform or generate from (see [Creative Manifest](https://adcontextprotocol.org/schemas/3.0.13/core/creative-manifest.json)). For pure generation, this should include the target format_id and any required input assets. For transformation, this is the complete creative to adapt. When `creative_id` is provided, the agent resolves the creative from its library and this field is ignored. | +| `creative_id` | string | No | Reference to a creative in the agent's library. The creative agent resolves this to a manifest from its library. Use this instead of `creative_manifest` when retrieving an existing creative for tag generation or format adaptation. | +| `concept_id` | string | No | Creative concept containing the creative. Used to disambiguate when the same `creative_id` exists in multiple concepts. | +| `media_buy_id` | string | No | Buyer's media buy reference for tag generation context. When the creative agent is also the ad server (e.g., CM360), this provides the trafficking context needed to generate placement-specific tags. Omit when the platform generates tags at the creative level (Flashtalking, Celtra). This is the buyer's reference — the seller-assigned identifier from `create_media_buy`. | +| `package_id` | string | No | Buyer's package or line item reference within the media buy. Used with `media_buy_id` when the creative agent needs line-item-level context. Omit to get a tag not scoped to a specific package — the ad server may return the same tag regardless. | +| `target_format_id` | object | Conditional | Single format ID to generate. Object with `agent_url` and `id` fields. Mutually exclusive with `target_format_ids` — provide exactly one. | +| `target_format_ids` | array | Conditional | Array of format IDs to generate in a single call. Each element is an object with `agent_url` and `id` fields. Mutually exclusive with `target_format_id` — provide exactly one. Returns one manifest per format. | +| `brand` | object | No | Brand reference with `domain` field. Resolves brand identity via `/.well-known/brand.json`. Provides brand-level context (colors, logos, tone). | +| `quality` | string | No | Quality tier: `"draft"` (fast, lower-fidelity for iteration) or `"production"` (full quality for final delivery). If omitted, the creative agent uses its own default. | +| `item_limit` | integer | No | Maximum number of catalog items to use when generating. Caps generation cost for catalog-driven formats. | +| `include_preview` | boolean | No | When true, requests preview renders alongside the manifest. Agents that support this return a `preview` object in the response. Agents that don't simply omit it. | +| `preview_inputs` | array | No | Input sets for preview generation when `include_preview` is true. Each entry has `name` (required), optional `macros`, and optional `context_description`. If omitted, the agent generates a single default preview. Only supported with `target_format_id` (single-format) — ignored for multi-format requests. | +| `preview_quality` | string | No | Render quality for inline previews: `"draft"` or `"production"`. Independent of the build `quality` — you can build at draft and preview at production, or vice versa. Only used when `include_preview` is true. | +| `preview_output_format` | string | No | Output format for preview renders: `"url"` (default) or `"html"`. Only used when `include_preview` is true. | +| `macro_values` | object | No | Macro values to pre-substitute into the output manifest's assets. Keys are universal macro names (e.g., `CLICK_URL`, `CACHEBUSTER`); values are the literal substitution strings. The creative agent translates universal macros to its platform's native syntax. Macros not provided here remain as `{MACRO}` placeholders for the sales agent to resolve at serve time. | +| `account` | [AccountRef](/dist/docs/3.0.13/building/by-layer/L2/accounts-and-agents#account-references) | No | Account reference for pricing and billing. When present, the creative agent applies account-specific pricing from the rate card, records the build against the account, and can enforce quotas. Required by creative agents that charge for their services. | + +### Pricing response fields + +When the creative agent charges and `account` is provided, the response includes pricing fields: + +| Field | Type | Description | +|-------|------|-------------| +| `pricing_option_id` | string | Which rate card pricing option was applied | +| `vendor_cost` | number | Cost incurred for this build. May be 0 for CPM-priced creatives where cost accrues at serve time. | +| `currency` | string | ISO 4217 currency code | +| `consumption` | object | Structured consumption details — `tokens`, `images_generated`, `renders`, `duration_seconds`. See [`creative-consumption.json`](https://adcontextprotocol.org/schemas/3.0.13/core/creative-consumption.json). Informational for cost verification; `vendor_cost` is the billing source of truth. | + +For async builds (`status: "working"` with `context_id` polling), pricing fields appear on the final completed response only. + +**Important**: Required input assets should be included in the `creative_manifest.assets` object, not as separate task parameters. The format definition specifies what assets it requires. Catalog context for dynamic creatives should be provided via the `creative_manifest.assets` map. + +### Generation controls + +For generative formats, two optional parameters control the generation process: + +- **`quality`**: Controls generation fidelity. Use `"draft"` for rapid iteration (reviewing layouts, copy, composition) and `"production"` for final renders. Draft outputs may use lower-resolution images, simplified effects, or placeholder elements. To produce a production version of a draft you like, pass the draft's output manifest back as `creative_manifest` with `quality: "production"`. Note: `preview_creative` also accepts `quality` to control *render* fidelity independently — see [Previewing generative creative](/dist/docs/3.0.13/creative/task-reference/preview_creative#previewing-generative-creative). + +- **`item_limit`**: For catalog-driven formats, caps how many catalog items are used during generation. A catalog might contain 1,000 products but you only need 4 hero images. The creative agent selects top items based on relevance or catalog ordering. When `item_limit` exceeds the format's `max_items` (from catalog requirements), the creative agent should use the lesser of the two. If omitted, the creative agent decides based on catalog size and format requirements. + +## Use cases + +### Pure generation (creating from scratch) + +For pure generation, provide a minimal source manifest with the required input assets defined by the format: + +```json +{ + "$schema": "/schemas/3.0.13/media-buy/build-creative-request.json", + "idempotency_key": "a1b2c3d4-e5f6-4789-a012-3456789abcde", + "message": "Create a banner promoting our winter sale with a warm, inviting feel", + "target_format_id": { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "display_300x250_generative" + }, + "brand": { + "domain": "mybrand.com" + }, + "creative_manifest": { + "format_id": { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "display_300x250_generative" + }, + "assets": { + "offering_catalog": { + "asset_type": "catalog", + "type": "offering", + "items": [ + { + "offering_id": "winter-sale", + "name": "Winter Sale Collection", + "description": "50% off all winter items" + } + ] + } + } + } +} +``` + +### Transformation (adapting existing creative) + +For transformation, provide the complete source manifest: + +```json +{ + "$schema": "/schemas/3.0.13/media-buy/build-creative-request.json", + "idempotency_key": "b2c3d4e5-f6a7-4890-b123-456789abcdef", + "message": "Adapt this creative for mobile, making the text larger and CTA more prominent", + "creative_manifest": { + "format_id": { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "display_300x250" + }, + "assets": { + "banner_image": { + "asset_type": "image", + "url": "https://cdn.example.com/original-banner.png", + "width": 300, + "height": 250 + }, + "headline": { + "asset_type": "text", + "content": "Winter Sale - 50% Off" + } + } + }, + "target_format_id": { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "display_mobile_320x50" + } +} +``` + +### Format resizing + +Transform an existing creative to a different size: + +```json +{ + "creative_manifest": { + "format_id": { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "display_728x90" + }, + "assets": { /* complete assets */ } + }, + "target_format_id": { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "display_300x250" + } +} +``` + +### Library retrieval + +Retrieve a creative from the agent's library and resolve it into a manifest with ad-serving assets. Use this when you know the `creative_id` from [`list_creatives`](/dist/docs/3.0.13/creative/task-reference/list_creatives) and want the creative agent to produce a delivery-ready manifest with tags (HTML, JavaScript, or VAST): + +```json +{ + "$schema": "/schemas/3.0.13/media-buy/build-creative-request.json", + "idempotency_key": "c3d4e5f6-a7b8-4901-c234-56789abcdef0", + "creative_id": "ft_88201", + "concept_id": "concept_holiday_2026", + "target_format_id": { + "agent_url": "https://creative.example.com", + "id": "display_static", + "width": 300, + "height": 250 + }, + "macro_values": { + "CLICK_URL": "https://publisher.example.com/click/abc123" + } +} +``` + +**Response** — the manifest includes ad-serving tag assets with macros resolved: + +```json +{ + "$schema": "/schemas/3.0.13/media-buy/build-creative-response.json", + "creative_manifest": { + "format_id": { + "agent_url": "https://creative.example.com", + "id": "display_static", + "width": 300, + "height": 250 + }, + "assets": { + "ad_tag": { + "asset_type": "javascript", + "content": "" + }, + "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. + + +**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.0.13/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.0.13/creative/sales-agent-creative-capabilities). + + +### Multi-format generation + +Generate creatives for multiple formats in a single call using `target_format_ids`. The agent produces one manifest per format from the same source assets and brief: + +```json +{ + "$schema": "/schemas/3.0.13/media-buy/build-creative-request.json", + "idempotency_key": "d4e5f6a7-b8c9-4012-d345-6789abcdef01", + "message": "Create display banners for our spring campaign", + "target_format_ids": [ + { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "display_static", + "width": 300, + "height": 250 + }, + { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "display_static", + "width": 728, + "height": 90 + }, + { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "display_static", + "width": 320, + "height": 50 + } + ], + "brand": { + "domain": "acmecorp.com" + }, + "creative_manifest": { + "format_id": { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "display_static" + }, + "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` (array) instead of `creative_manifest` (singular). Each manifest is a complete creative manifest with its own `format_id`, ready for `sync_creatives` or `preview_creative`: + +```json +{ + "$schema": "/schemas/3.0.13/media-buy/build-creative-response.json", + "creative_manifests": [ + { + "format_id": { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "display_static", + "width": 300, + "height": 250 + }, + "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_id": { "agent_url": "https://creative.adcontextprotocol.org", "id": "display_static", "width": 728, "height": 90 }, + "assets": { /* same structure, adapted for 728x90 */ } + }, + { + "format_id": { "agent_url": "https://creative.adcontextprotocol.org", "id": "display_static", "width": 320, "height": 50 }, + "assets": { /* same structure, adapted for 320x50 */ } + } + ] +} +``` + +Multi-format requests are atomic — if any format fails (e.g., `FORMAT_NOT_SUPPORTED`), the entire request fails with an error response. The response array order corresponds to the `target_format_ids` request order. Match manifests to requested formats by array position or by comparing the `format_id` on each manifest. + +### 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": [ + { "creative_manifest": { /* 300x250 manifest from build response */ } }, + { "creative_manifest": { /* 728x90 manifest from build response */ } }, + { "creative_manifest": { /* 320x50 manifest from build response */ } } + ] +} +``` + +To refine a single format from a multi-format build, call `build_creative` again with `target_format_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. + + +### 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.0.13/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_format_id": { + "agent_url": "https://creative.example.com", + "id": "display_728x90" + } +} +``` + +```json +{ + "$schema": "/schemas/3.0.13/media-buy/build-creative-response.json", + "creative_manifest": { + "format_id": { + "agent_url": "https://creative.example.com", + "id": "display_728x90" + }, + "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.0.13/creative/task-reference/list_creatives#pricing). The buyer passes it in [`report_usage`](/dist/docs/3.0.13/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.0.13/media-buy/build-creative-response.json", + "creative_manifest": { "..." : "..." }, + "pricing_option_id": "po_video_cpm", + "vendor_cost": 0, + "currency": "USD" +} +``` + +## Response format + +### Single-format response + +When the request uses `target_format_id`, the response contains a single creative manifest: + +```json +{ + "$schema": "/schemas/3.0.13/media-buy/build-creative-response.json", + "creative_manifest": { + "format_id": { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "display_300x250" + }, + "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_format_ids`, the response contains an array of creative manifests: + +```json +{ + "$schema": "/schemas/3.0.13/media-buy/build-creative-response.json", + "creative_manifests": [ + { + "format_id": { "agent_url": "https://creative.adcontextprotocol.org", "id": "display_static", "width": 300, "height": 250 }, + "assets": { /* ... */ } + }, + { + "format_id": { "agent_url": "https://creative.adcontextprotocol.org", "id": "display_static", "width": 728, "height": 90 }, + "assets": { /* ... */ } + } + ] +} +``` + +### Field descriptions + +- **creative_manifest**: (single-format) The complete creative manifest ready for use with `sync_creatives` or `preview_creative` +- **creative_manifests**: (multi-format) Array of complete creative manifests, one per requested format. Each contains its own `format_id`. +- **format_id**: The target format (matches the requested format) +- **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. For single-format responses, each entry in `previews[]` corresponds to an input set from `preview_inputs`. For multi-format responses, each entry includes a `format_id` and corresponds to one requested format (one default preview per format; `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.0.13/media-buy/build-creative-response.json", + "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.0.13/building/by-layer/L3/async-operations) and [Push Notifications](/dist/docs/3.0.13/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` to see how it renders (see [preview_creative](/dist/docs/3.0.13/creative/task-reference/preview_creative)) +3. **Sync**: Use `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_format_id": {"agent_url": "...", "id": "display_300x250_generative"}, + "brand": { "domain": "mybrand.com" }, + "quality": "draft", + "include_preview": true, + "preview_quality": "production", + "creative_manifest": { + "format_id": {"agent_url": "...", "id": "display_300x250_generative"}, + "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_format_id": {"agent_url": "...", "id": "display_300x250_generative"}, + "brand": { "domain": "mybrand.com" }, + "creative_manifest": { + "format_id": {"agent_url": "...", "id": "display_300x250_generative"}, + "assets": { + "product_catalog": { + "type": "product", + "catalog_id": "winter-products" + } + } + } +} + +// Step 2: Preview (using the output manifest from step 1) +{ + "request_type": "single", + "format_id": {"agent_url": "...", "id": "display_300x250"}, + "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.0.13/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_format_id": { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "display_300x250_generative" + }, + "brand": { + "domain": "mybrand.com" + }, + "creative_manifest": { + "format_id": { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "display_300x250_generative" + }, + "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.0.13/media-buy/build-creative-response.json", + "creative_manifest": { + "format_id": { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "display_300x250" + }, + "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.0.13/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_id": { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "display_728x90" + }, + "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_format_id": { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "display_300x250" + } +} +``` + +**Response**: +```json +{ + "$schema": "/schemas/3.0.13/media-buy/build-creative-response.json", + "creative_manifest": { + "format_id": { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "display_300x250" + }, + "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.0.13/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_id": { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "display_300x600" + }, + "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_format_id": { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "display_mobile_320x50" + } +} +``` + +**Response**: +```json +{ + "$schema": "/schemas/3.0.13/media-buy/build-creative-response.json", + "creative_manifest": { + "format_id": { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "display_mobile_320x50" + }, + "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.0.13/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_format_id": { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "display_300x250_generative" + }, + "brand": { + "domain": "acmecorp.com" + }, + "creative_manifest": { + "format_id": { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "display_300x250_generative" + }, + "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.0.13/media-buy/build-creative-request.json", + "idempotency_key": "d0e1f2a3-b4c5-4678-d901-cdef01234567", + "message": "Create a display banner promoting retirement planning advisory services", + "target_format_id": { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "display_300x250_generative" + }, + "brand": { + "domain": "pinnaclewealth.com" + }, + "creative_manifest": { + "format_id": { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "display_300x250_generative" + }, + "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.0.13/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_format_id": { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "sponsored_product_carousel" + }, + "brand": { + "domain": "novabrands.com" + }, + "creative_manifest": { + "format_id": { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "sponsored_product_carousel" + }, + "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 format declares both a `brief` and `catalog` asset type — the buying agent discovers this via `list_creative_formats` and syncs 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.0.13/media-buy/build-creative-request.json", + "idempotency_key": "f2a3b4c5-d6e7-4890-f123-ef0123456789", + "message": "Create a banner for our spring campaign", + "target_format_id": { + "agent_url": "https://creative.adcontextprotocol.org", + "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_id": { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "display_300x250_generative" + }, + "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.0.13/media-buy/build-creative-response.json", + "creative_manifest": { + "format_id": { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "display_300x250" + }, + "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` 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.0.13/media-buy/build-creative-request.json", + "idempotency_key": "a3b4c5d6-e7f8-4901-a234-f01234567890", + "message": "Create hero images for our top sale items", + "target_format_id": { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "sponsored_product_carousel" + }, + "brand": { + "domain": "novabrands.com" + }, + "quality": "draft", + "item_limit": 4, + "creative_manifest": { + "format_id": { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "sponsored_product_carousel" + }, + "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.0.13/media-buy/build-creative-response.json", + "creative_manifest": { + "format_id": { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "sponsored_product_carousel" + }, + "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 minimal `creative_manifest` with just the format_id, catalog assets (if the format renders catalog items), and any required seed assets. The creative agent generates output assets from scratch using `message` as guidance. +- **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.0.13/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` 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_format_id` +- **Transformation**: full `creative_manifest` + `message` + `target_format_id` +- **Library retrieval**: `creative_id` + `target_format_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.0.13/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_format_id": { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "display_300x250_generative" + }, + "creative_manifest": { + "format_id": { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "display_300x250" + }, + "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` | The `target_format_id` is not supported by this creative agent | +| `INVALID_MANIFEST` | The `creative_manifest` is malformed or missing required assets for the target format | +| `CREATIVE_NOT_FOUND` | The `creative_id` does not exist in the agent's library (or in the specified `concept_id`) | +| `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.0.13/creative/task-reference/get_creative_delivery.mdx b/dist/docs/3.0.13/creative/task-reference/get_creative_delivery.mdx new file mode 100644 index 0000000000..63ab7e35b9 --- /dev/null +++ b/dist/docs/3.0.13/creative/task-reference/get_creative_delivery.mdx @@ -0,0 +1,400 @@ +--- +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 `"delivery"` in its [creative agent capabilities](#capability-declaration) — whether that's a dedicated creative service or a [sales agent implementing the Creative Protocol](/dist/docs/3.0.13/creative/sales-agent-creative-capabilities). + +**Request Schema**: [`/schemas/3.0.13/creative/get-creative-delivery-request.json`](https://adcontextprotocol.org/schemas/3.0.13/creative/get-creative-delivery-request.json) +**Response Schema**: [`/schemas/3.0.13/creative/get-creative-delivery-response.json`](https://adcontextprotocol.org/schemas/3.0.13/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.0.13/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_id` | Format of this creative | +| `totals` | Aggregate delivery metrics across all variants | +| `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) | + +### 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 | +| `manifest` | (Optional) The rendered creative manifest — the actual output that was served, not the input assets. Contains format_id and resolved assets. Not all platforms can provide manifests for every variant. | +| `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 (impressions, spend, clicks, ctr, etc.) | + +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_id": { + "agent_url": "https://creative.example.com", + "id": "display_300x250" + }, + "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_id": { + "agent_url": "https://creative.example.com", + "id": "display_300x250" + }, + "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_id": { + "agent_url": "https://creative.example.com", + "id": "display_300x250_generative" + }, + "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_id": { + "agent_url": "https://creative.example.com", + "id": "display_728x90_generative" + }, + "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` 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` | 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.0.13/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` 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 declare `"delivery"` in their `capabilities` array within `list_creative_formats` responses: + +```json +{ + "creative_agents": [{ + "agent_url": "https://ads.seller-example.com", + "capabilities": ["validation", "assembly", "preview", "delivery"] + }] +} +``` + +Buyers discover this by calling `list_creative_formats` and checking the `creative_agents` array for agents with `"delivery"` in their capabilities. This applies to any agent implementing the Creative Protocol, including sales agents. diff --git a/dist/docs/3.0.13/creative/task-reference/list_creative_formats.mdx b/dist/docs/3.0.13/creative/task-reference/list_creative_formats.mdx new file mode 100644 index 0000000000..ed80e1a4a7 --- /dev/null +++ b/dist/docs/3.0.13/creative/task-reference/list_creative_formats.mdx @@ -0,0 +1,681 @@ +--- +title: list_creative_formats +description: "list_creative_formats discovers available ad format specifications from any AdCP agent, including asset requirements and technical constraints." +"og:title": "AdCP — list_creative_formats" +testable: true +--- + + +Discover creative formats supported by a creative agent. Returns full format specifications including asset requirements and technical constraints. + +**Response Time**: ~1 second (database lookup) + +**Authentication**: None required (public endpoint for format discovery) + +**Request Schema**: [`/schemas/3.0.13/creative/list-creative-formats-request.json`](https://adcontextprotocol.org/schemas/3.0.13/creative/list-creative-formats-request.json) +**Response Schema**: [`/schemas/3.0.13/creative/list-creative-formats-response.json`](https://adcontextprotocol.org/schemas/3.0.13/creative/list-creative-formats-response.json) + +## Behavior by agent type + +Any agent implementing the Creative Protocol can serve `list_creative_formats`. The response varies based on what the agent does: + +**Dedicated creative agents** (like `https://creative.adcontextprotocol.org`): +- Return **authoritative format definitions** they own +- Provide full specifications for building and validating creatives + +**Sales agents implementing only Media Buy Protocol** (like `https://test-agent.adcontextprotocol.org`): +- Return **only formats used by active products** +- Reference creative agents for authoritative format specifications +- Filter results based on what's actually purchasable + +**Sales agents implementing both protocols** — return their own self-hosted format definitions alongside referenced formats. See [Creative capabilities on sales agents](/dist/docs/3.0.13/creative/sales-agent-creative-capabilities). + +See [list_creative_formats (Sales Agent)](/dist/docs/3.0.13/creative/task-reference/list_creative_formats) for sales agent-specific behavior. + +## Request Parameters + +| Parameter | Type | Required | Description | +|-----------|------|----------|-------------| +| `format_ids` | FormatID[] | No | Return only specific format IDs (from `get_products` response) | +| `type` | string | No | *(deprecated)* Filter by type: `audio`, `video`, `display`, `dooh`. Prefer `asset_types` filter instead. | +| `asset_types` | string[] | No | Filter to formats accepting these asset types: `image`, `video`, `audio`, `text`, `html`, `javascript`, `url`. Uses OR logic. **Recommended over `type` filter.** | +| `max_width` | integer | No | Maximum width in pixels (inclusive) - matches if ANY render fits | +| `max_height` | integer | No | Maximum height in pixels (inclusive) - matches if ANY render fits | +| `min_width` | integer | No | Minimum width in pixels (inclusive) | +| `min_height` | integer | No | Minimum height in pixels (inclusive) | +| `is_responsive` | boolean | No | Filter for responsive formats (adapt to container size) | +| `name_search` | string | No | Search formats by name (case-insensitive partial match) | +| `wcag_level` | string | No | Filter to formats meeting at least this WCAG level: `A`, `AA`, `AAA`. See [Accessibility](/dist/docs/3.0.13/creative/accessibility). | +| `disclosure_positions` | string[] | No | Filter to formats that support all of these disclosure positions. Matches against `disclosure_capabilities` when present, otherwise falls back to `supported_disclosure_positions`. | +| `disclosure_persistence` | string[] | No | Filter to formats whose `disclosure_capabilities` include all of these persistence modes on at least one position. Values: `continuous`, `initial`, `flexible`. | +| `output_format_ids` | FormatID[] | No | Filter to formats whose `output_format_ids` includes any of these. Returns formats that can produce these outputs — inspect their `input_format_ids` to see what inputs they accept. | +| `input_format_ids` | FormatID[] | No | Filter to formats whose `input_format_ids` includes any of these. Returns formats that accept these creatives as input — inspect their `output_format_ids` to see what they can produce. | +| `pagination` | object | No | Pagination: `max_results` (1-100, default 50) and `cursor` (opaque cursor from previous response) | + +### Multi-Render Dimension Filtering + +Formats may produce multiple rendered pieces (e.g., video + companion banner). Dimension filters use **"any render fits"** logic: + +- `max_width: 300, max_height: 250` - Returns formats where AT LEAST ONE render is ≤ 300×250 +- Use case: "Find formats that can render into my 300×250 ad slot" +- Example: Format with primary video (1920×1080) + companion banner (300×250) **matches** because companion fits + +## Response + +| Field | Description | +|-------|-------------| +| `formats` | Array of full format definitions (format_id, name, assets, renders). The `type` field is deprecated and may be omitted. | +| `creative_agents` | Optional array of other creative agents providing additional formats | + +See [Format schema](https://adcontextprotocol.org/schemas/3.0.13/core/format.json) for complete format object structure. + +### Recursive Discovery + +Creative agents may reference other creative agents that provide additional formats: + +```json +{ + "creative_agents": [{ + "agent_url": "https://creative.adcontextprotocol.org", + "agent_name": "AdCP Reference Creative Agent", + "capabilities": ["validation", "assembly", "preview"] + }] +} +``` + +Buyers can recursively query creative_agents. **Track visited URLs to avoid infinite loops.** + +## Catalog requirements + +Formats declare catalog needs as `catalog` asset types in their `assets` array. This tells buyers which catalogs to sync before submitting creatives for that format. + +```json +{ + "format_id": { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "product_carousel_4x" + }, + "name": "Product Carousel (4 items)", + "assets": [ + { + "item_type": "individual", + "asset_id": "product_catalog", + "asset_type": "catalog", + "required": true, + "requirements": { + "catalog_type": "product", + "min_items": 4, + "required_fields": ["name", "price", "image_url"] + } + } + ] +} +``` + +Catalog assets 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. Items beyond this limit are ignored | +| `required_fields` | string[] | Fields that must be present on every item | +| `feed_formats` | string[] | Accepted feed formats (e.g., `google_merchant_center`, `linkedin_jobs`) | + +When catalog assets are present, buyers should sync the required catalogs via [`sync_catalogs`](/dist/docs/3.0.13/media-buy/task-reference/sync_catalogs) before submitting creatives. See [Catalogs](/dist/docs/3.0.13/creative/catalogs) for the full lifecycle. + +## Common Scenarios + +### Get Specs for Product Format IDs + + + +```javascript JavaScript +import { testAgent } from '@adcp/client/testing'; +import { ListCreativeFormatsResponseSchema } from '@adcp/client'; + +// Get full specs for formats returned by get_products +const result = await testAgent.listCreativeFormats({ + format_ids: [ + { + agent_url: 'https://creative.adcontextprotocol.org', + id: 'video_15s_hosted' + }, + { + agent_url: 'https://creative.adcontextprotocol.org', + id: 'display_300x250' + } + ] +}); + +if (!result.success) { + throw new Error(`Request failed: ${result.error}`); +} + +// Validate response against schema +const validated = ListCreativeFormatsResponseSchema.parse(result.data); +validated.formats.forEach(format => { + console.log(`${format.name}: ${format.assets.length} assets required`); +}); +``` + +```python Python +import asyncio +from adcp.testing import test_agent +from adcp.types import ListCreativeFormatsRequest, FormatId + +async def main(): + # Get full specs for formats returned by get_products + result = await test_agent.list_creative_formats( + ListCreativeFormatsRequest( + format_ids=[ + FormatId(agent_url='https://creative.adcontextprotocol.org', id='video_15s_hosted'), + FormatId(agent_url='https://creative.adcontextprotocol.org', id='display_300x250') + ] + ) + ) + + if hasattr(result, 'errors') and result.errors: + raise Exception(f"Failed: {result.errors}") + + for fmt in result.formats: + print(f"{fmt.name}: {len(fmt.assets)} assets required") + +asyncio.run(main()) +``` + + + +### Find Formats by Asset Types + + + +```javascript JavaScript +import { testAgent } from '@adcp/client/testing'; +import { ListCreativeFormatsResponseSchema } from '@adcp/client'; + +// Find formats that accept images and text +const result = await testAgent.listCreativeFormats({ + asset_types: ['image', 'text'] +}); + +if (!result.success) { + throw new Error(`Request failed: ${result.error}`); +} + +const validated = ListCreativeFormatsResponseSchema.parse(result.data); +console.log(`Found ${validated.formats.length} formats`); + +// Examine asset requirements +validated.formats.forEach(format => { + console.log(`\n${format.name}:`); + format.assets.forEach(asset => { + const label = asset.asset_role ?? asset.asset_id; + console.log(` - ${label}: ${asset.asset_type}`); + }); +}); +``` + +```python Python +import asyncio +from adcp.testing import test_agent +from adcp.types import ListCreativeFormatsRequest + +async def main(): + # Find formats that accept images and text + result = await test_agent.list_creative_formats( + ListCreativeFormatsRequest(asset_types=['image', 'text']) + ) + + if hasattr(result, 'errors') and result.errors: + raise Exception(f"Failed: {result.errors}") + + print(f"Found {len(result.formats)} formats") + for fmt in result.formats: + print(f"\n{fmt.name}:") + for asset in fmt.assets: + label = asset.asset_role or asset.asset_id + print(f" - {label}: {asset.asset_type}") + +asyncio.run(main()) +``` + + + +### Find Third-Party Tag Formats + + + +```javascript JavaScript +import { testAgent } from '@adcp/client/testing'; +import { ListCreativeFormatsResponseSchema } from '@adcp/client'; + +// Find formats that accept JavaScript or HTML tags +const result = await testAgent.listCreativeFormats({ + asset_types: ['javascript', 'html'], + max_width: 970, + max_height: 250 +}); + +if (!result.success) { + throw new Error(`Request failed: ${result.error}`); +} + +const validated = ListCreativeFormatsResponseSchema.parse(result.data); +console.log(`Found ${validated.formats.length} third-party tag formats ≤ 970×250`); + +validated.formats.forEach(format => { + const renders = format.renders || []; + if (renders.length > 0) { + const dims = renders[0].dimensions; + console.log(`${format.name}: ${dims.width}×${dims.height}`); + } +}); +``` + +```python Python +import asyncio +from adcp.testing import test_agent +from adcp.types import ListCreativeFormatsRequest + +async def main(): + # Find formats that accept JavaScript or HTML tags + result = await test_agent.list_creative_formats( + ListCreativeFormatsRequest( + asset_types=['javascript', 'html'], + max_width=970, + max_height=250 + ) + ) + + if hasattr(result, 'errors') and result.errors: + raise Exception(f"Failed: {result.errors}") + + print(f"Found {len(result.formats)} third-party tag formats ≤ 970×250") + for fmt in result.formats: + if fmt.renders: + dims = fmt.renders[0].dimensions + print(f"{fmt.name}: {dims.width}×{dims.height}") + +asyncio.run(main()) +``` + + + +### Filter by Type and Dimensions + + + +```javascript JavaScript +import { testAgent } from '@adcp/client/testing'; +import { ListCreativeFormatsResponseSchema } from '@adcp/client'; + +// Find video formats +const result = await testAgent.listCreativeFormats({ + type: 'video' +}); + +if (!result.success) { + throw new Error(`Request failed: ${result.error}`); +} + +const validated = ListCreativeFormatsResponseSchema.parse(result.data); +console.log(`Found ${validated.formats.length} video formats`); + +validated.formats.forEach(format => { + const assetTypes = format.assets.map(a => a.asset_type).join(', '); + console.log(`${format.name}: ${assetTypes}`); +}); +``` + +```python Python +import asyncio +from adcp.testing import test_agent +from adcp.types import ListCreativeFormatsRequest + +async def main(): + # Find video formats + result = await test_agent.list_creative_formats( + ListCreativeFormatsRequest(type='video') + ) + + if hasattr(result, 'errors') and result.errors: + raise Exception(f"Failed: {result.errors}") + + print(f"Found {len(result.formats)} video formats") + for fmt in result.formats: + asset_types = ', '.join(a.asset_type for a in fmt.assets) + print(f"{fmt.name}: {asset_types}") + +asyncio.run(main()) +``` + + + +### Search by Name + + + +```javascript JavaScript +import { testAgent } from '@adcp/client/testing'; +import { ListCreativeFormatsResponseSchema } from '@adcp/client'; + +// Find mobile-optimized formats +const result = await testAgent.listCreativeFormats({ + name_search: 'mobile' +}); + +if (!result.success) { + throw new Error(`Request failed: ${result.error}`); +} + +const validated = ListCreativeFormatsResponseSchema.parse(result.data); +console.log(`Found ${validated.formats.length} mobile formats`); + +validated.formats.forEach(format => { + console.log(`- ${format.name} (${format.type})`); +}); +``` + +```python Python +import asyncio +from adcp.testing import test_agent +from adcp.types import ListCreativeFormatsRequest + +async def main(): + # Find mobile-optimized formats + result = await test_agent.list_creative_formats( + ListCreativeFormatsRequest(name_search='mobile') + ) + + if hasattr(result, 'errors') and result.errors: + raise Exception(f"Failed: {result.errors}") + + print(f"Found {len(result.formats)} mobile formats") + for fmt in result.formats: + print(f"- {fmt.name} ({fmt.type})") + +asyncio.run(main()) +``` + + + +### Responsive Formats + + + +```javascript JavaScript +import { testAgent } from '@adcp/client/testing'; +import { ListCreativeFormatsResponseSchema } from '@adcp/client'; + +// Find formats that adapt to container size +const result = await testAgent.listCreativeFormats({ + is_responsive: true, + type: 'display' +}); + +if (!result.success) { + throw new Error(`Request failed: ${result.error}`); +} + +const validated = ListCreativeFormatsResponseSchema.parse(result.data); +console.log(`Found ${validated.formats.length} responsive display formats`); + +validated.formats.forEach(format => { + console.log(`${format.name}: Adapts to container`); +}); +``` + +```python Python +import asyncio +from adcp.testing import test_agent +from adcp.types import ListCreativeFormatsRequest + +async def main(): + # Find formats that adapt to container size + result = await test_agent.list_creative_formats( + ListCreativeFormatsRequest(is_responsive=True, type='display') + ) + + if hasattr(result, 'errors') and result.errors: + raise Exception(f"Failed: {result.errors}") + + print(f"Found {len(result.formats)} responsive display formats") + for fmt in result.formats: + print(f"{fmt.name}: Adapts to container") + +asyncio.run(main()) +``` + + + +### Discover Build Capabilities + +Some formats declare the output formats they can produce via `output_format_ids`. A creative builder (like a multi-publisher template tool) may accept one asset group and produce many publisher-specific formats. A format transformer may accept an existing creative and reformat it. + +The format schema expresses both sides of the relationship: + +- **`input_format_ids`** — existing creative formats this format accepts as input +- **`output_format_ids`** — concrete output formats this format can produce + +These filters are ANDed — a format must match all specified filters. Within each filter, matching is OR (any ID in the array matches). A bare format ID (no dimension parameters) matches all parameterized variants of that format; a parameterized ID is an exact match. + +Note: `asset_types` and these filters target different things. A format that takes only creative manifests as input will have no entries in its `assets` array, so combining `asset_types` with `input_format_ids` will typically return no results. + +Serve-time dynamic creative (DCO platforms that render from data feeds at ad serving time) is not expressed through these fields — those platforms describe their inputs via `assets` and their output via the format itself. + +#### Given output formats I need, what inputs are accepted? + + + +```javascript test=false +import { testAgent } from '@adcp/client/testing'; +import { ListCreativeFormatsResponseSchema } from '@adcp/client'; + +// I need portrait video — what can generate it? +const result = await testAgent.listCreativeFormats({ + output_format_ids: [ + { agent_url: 'https://creative.adcontextprotocol.org', id: 'video_9x16_15s' } + ] +}); + +if (!result.success) { + throw new Error(`Request failed: ${result.error}`); +} + +const validated = ListCreativeFormatsResponseSchema.parse(result.data); +validated.formats.forEach(format => { + const inputs = format.input_format_ids?.map(f => f.id) ?? ['(from brief)']; + console.log(`${format.name} accepts: ${inputs.join(', ')}`); +}); +``` + +```python test=false +import asyncio +from adcp.testing import test_agent +from adcp.types import ListCreativeFormatsRequest, FormatId + +async def main(): + result = await test_agent.list_creative_formats( + ListCreativeFormatsRequest( + output_format_ids=[ + FormatId(agent_url='https://creative.adcontextprotocol.org', id='video_9x16_15s') + ] + ) + ) + + if hasattr(result, 'errors') and result.errors: + raise Exception(f"Failed: {result.errors}") + + for fmt in result.formats: + inputs = [f.id for f in fmt.input_format_ids] if fmt.input_format_ids else ['(from brief)'] + print(f"{fmt.name} accepts: {', '.join(inputs)}") + +asyncio.run(main()) +``` + + + +#### Given an input format I have, what outputs can it produce? + + + +```javascript test=false +import { testAgent } from '@adcp/client/testing'; +import { ListCreativeFormatsResponseSchema } from '@adcp/client'; + +// I have a landscape 16:9 video — what can I transform it into? +const result = await testAgent.listCreativeFormats({ + input_format_ids: [ + { agent_url: 'https://creative.adcontextprotocol.org', id: 'video_16x9_30s' } + ] +}); + +if (!result.success) { + throw new Error(`Request failed: ${result.error}`); +} + +const validated = ListCreativeFormatsResponseSchema.parse(result.data); +validated.formats.forEach(format => { + const outputs = format.output_format_ids?.map(f => f.id) ?? []; + console.log(`${format.name} → ${outputs.join(', ')}`); +}); +``` + +```python test=false +import asyncio +from adcp.testing import test_agent +from adcp.types import ListCreativeFormatsRequest, FormatId + +async def main(): + result = await test_agent.list_creative_formats( + ListCreativeFormatsRequest( + input_format_ids=[ + FormatId(agent_url='https://creative.adcontextprotocol.org', id='video_16x9_30s') + ] + ) + ) + + if hasattr(result, 'errors') and result.errors: + raise Exception(f"Failed: {result.errors}") + + for fmt in result.formats: + outputs = [f.id for f in fmt.output_format_ids] if fmt.output_format_ids else [] + print(f"{fmt.name} → {', '.join(outputs)}") + +asyncio.run(main()) +``` + + + +## Format Structure + +Each format includes: + +| Field | Description | +|-------|-------------| +| `format_id` | Structured identifier with agent_url and id | +| `name` | Human-readable format name | +| `type` | *(deprecated)* Format type (audio, video, display, dooh). Use `asset_types` filter instead. | +| `assets` | Array of all assets with `required` boolean indicating mandatory vs optional | +| `renders` | Array of rendered output pieces (dimensions, role) | +| `input_format_ids` | Creative formats this format accepts as input manifests (omitted for formats that work from raw assets) | +| `output_format_ids` | Output formats this format can produce (omitted for formats that produce a single fixed output) | + +### Asset Roles + +Common asset roles help identify asset purposes: + +- **`hero_image`** - Primary visual +- **`hero_video`** - Primary video content +- **`logo`** - Brand logo +- **`headline`** - Primary text +- **`body_text`** - Secondary text +- **`call_to_action`** - CTA button text + +## Asset Types Filter Logic + +The `asset_types` parameter uses **OR logic** - formats matching ANY specified asset type are returned. + +**Example**: `asset_types: ['html', 'javascript', 'image']` +- Returns formats accepting html OR javascript OR image +- Use case: "Show me formats I can use with any of my available asset types" + +**To find formats requiring specific combinations**, filter results after retrieval: + +```javascript test=false +// Find formats requiring BOTH image AND text +const result = await agent.listCreativeFormats(); +const imageAndText = result.formats.filter(format => { + const assetTypes = format.assets.map(a => a.asset_type); + return assetTypes.includes('image') && assetTypes.includes('text'); +}); +``` + +## Dimension Filtering for Multi-Render Formats + +Some formats produce multiple rendered pieces: +- **Video with companion banner** - Primary video (1920×1080) + banner (300×250) +- **Adaptive displays** - Desktop (728×90) + mobile (320×50) +- **DOOH installations** - Multiple screens with different dimensions + +Dimension filters match if **at least one render** fits: + +```javascript test=false +// Find formats with ANY render ≤ 300×250 +const result = await agent.listCreativeFormats({ + max_width: 300, + max_height: 250 +}); + +// Returns formats where at least one render fits 300×250 slot +// May also include larger companion pieces +``` + +## Implementation Requirements + +When implementing `list_creative_formats` for a creative agent: + +1. **Return authoritative formats** - Include full specifications for formats you define +2. **Reference other agents** - Use `creative_agents` to delegate to other creative agents +3. **Include capabilities** - Indicate what operations you support (validation, assembly, generation, preview) +4. **Support filtering** - Implement filter parameters (type, asset_types, dimensions, etc.) + +## Error Handling + +| Error Code | Description | Resolution | +|------------|-------------|------------| +| `REFERENCE_NOT_FOUND` | Requested `format_id` doesn't exist, or referenced creative agent is unavailable / not accessible. `error.field` MUST identify which typed parameter failed to resolve. | Verify `format_id` from `get_products` response; the format may be from a deprecated agent. | +| `INVALID_REQUEST` | Invalid filter parameters | Check parameter types and values | + +## Best Practices + +**1. Use format_ids Parameter** +Most efficient way to get specs for formats returned by `get_products`. + +**2. Cache Format Specifications** +Format specs rarely change - cache by format_id to reduce API calls. + +**3. Filter by Asset Types for Third-Party Tags** +Search for `asset_types: ['html']` or `['javascript']` to find tag-accepting formats. + +**4. Consider Multi-Render Formats** +Check `renders` array length - some formats produce multiple pieces requiring multiple placements. + +**5. Validate Asset Requirements** +Ensure your creative assets match format specifications before building creatives. + +## Next Steps + +After discovering formats: + +1. **Build Creatives**: Use [`build_creative`](/dist/docs/3.0.13/creative/task-reference/build_creative) to assemble assets into format +2. **Preview**: Use [`preview_creative`](/dist/docs/3.0.13/creative/task-reference/preview_creative) to see visual output +3. **Validate**: Use [`sync_creatives`](/dist/docs/3.0.13/creative/task-reference/sync_creatives) with `dry_run: true` +4. **Upload**: Use [`sync_creatives`](/dist/docs/3.0.13/creative/task-reference/sync_creatives) to upload to an agent-hosted creative library + +## Learn More + +- [Format Schema](https://adcontextprotocol.org/schemas/3.0.13/core/format.json) - Complete format structure +- [Asset Types](/dist/docs/3.0.13/creative/asset-types) - Asset specification details +- [Standard Formats](/dist/docs/3.0.13/media-buy/capability-discovery/implementing-standard-formats) - IAB-compatible reference formats diff --git a/dist/docs/3.0.13/creative/task-reference/list_creatives.mdx b/dist/docs/3.0.13/creative/task-reference/list_creatives.mdx new file mode 100644 index 0000000000..4dbcb4893a --- /dev/null +++ b/dist/docs/3.0.13/creative/task-reference/list_creatives.mdx @@ -0,0 +1,338 @@ +--- +title: list_creatives +description: "list_creatives browses and filters creatives in an AdCP library by 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 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 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 + +## 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.0.13/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) | +| `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.0.13/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`. | +| `account` | [AccountRef](/dist/docs/3.0.13/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 fields to return (omit for all fields). Includes `"pricing_options"` for sparse selection. | + +## Filtering options + +The `filters` object supports these optional, composable filters: + +| Filter | Type | Description | +|--------|------|-------------| +| `accounts` | [AccountRef](/dist/docs/3.0.13/building/by-layer/L2/accounts-and-agents#account-references)[] | Filter by owning accounts | +| `format_ids` | FormatID[] | Filter by structured format IDs | +| `statuses` | [CreativeStatus](/dist/docs/3.0.13/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 * | + +\* Assignment-related filters are specific to sales agents. Standalone creative agents ignore these. + + +**Archived creatives are excluded by default.** To include archived creatives in results, explicitly include `"archived"` in the `statuses` array. + + + +## 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.0.13/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_id": { + "agent_url": "https://creative.example.com", + "id": "display_static", + "width": 300, + "height": 250 + }, + "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_id` | object | Structured format reference | +| `status` | string | Approval status | +| `created_date` | string | Creation timestamp | +| `updated_date` | string | Last modified timestamp | +| `assets` | object | Creative assets (images, text, URLs, etc.) | +| `tags` | string[] | Tags for categorization | +| `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.0.13/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` and `list_content_standards`. | + +### 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` response) in `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.0.13/signals/tasks/get_signals) and [content standards](/dist/docs/3.0.13/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.0.13/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. | + +## Account requirements + + +Creative agents that host a library should implement the [accounts protocol](/dist/docs/3.0.13/accounts/overview) (`sync_accounts` / `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 creatives matching specific format IDs across concepts: + +```json +{ + "filters": { + "format_ids": [ + { + "agent_url": "https://creative.example.com", + "id": "display_static", + "width": 300, + "height": 250 + }, + { + "agent_url": "https://creative.example.com", + "id": "display_static", + "width": 728, + "height": 90 + } + ], + "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_id", "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.0.13/creative/task-reference/get_creative_delivery) - Detailed performance analytics with date ranges, variant breakdowns, and full delivery metrics +- [`build_creative`](/dist/docs/3.0.13/creative/task-reference/build_creative) - Build manifests from library creatives or generate from scratch +- [`sync_creatives`](/dist/docs/3.0.13/creative/task-reference/sync_creatives) - Upload and manage creative assets on any agent hosting a creative library +- [`list_creative_formats`](/dist/docs/3.0.13/creative/task-reference/list_creative_formats) - Discover supported creative formats +- [`preview_creative`](/dist/docs/3.0.13/creative/task-reference/preview_creative) - Generate previews of creative manifests diff --git a/dist/docs/3.0.13/creative/task-reference/preview_creative-advanced.mdx b/dist/docs/3.0.13/creative/task-reference/preview_creative-advanced.mdx new file mode 100644 index 0000000000..2467bc2dee --- /dev/null +++ b/dist/docs/3.0.13/creative/task-reference/preview_creative-advanced.mdx @@ -0,0 +1,319 @@ +--- +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.0.13/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 formats = await creative_agent.list_creative_formats(); + +// 2. Generate format card previews (batch + HTML) +const formatPreviews = await creative_agent.preview_creative({ + request_type: "batch", + output_format: "html", + requests: formats.formats.map(format => ({ + format_id: format.format_id, + creative_manifest: format.format_card.manifest + })) +}); + +// 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 => ({ + format_id: c.format_id, + 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 format_id + 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 => ({ + format_id: f.id, + creative_manifest: f.manifest + })) + }); + + fetched.results.forEach((result, i) => { + cached[toFetch[i].idx] = result.response; + }); + } + + return cached; +} +``` + +**Key points:** +- Cache by format_id + manifest hash (not 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 + +## 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. Implement security sandboxing +7. Set reasonable expiration (24-48 hours) + +**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.0.13/creative/task-reference/preview_creative) - Basic usage and parameters +- [Creative Manifests](/dist/docs/3.0.13/creative/creative-manifests) - Manifest structure +- [Universal Macros](/dist/docs/3.0.13/creative/universal-macros) - Available macro values diff --git a/dist/docs/3.0.13/creative/task-reference/preview_creative.mdx b/dist/docs/3.0.13/creative/task-reference/preview_creative.mdx new file mode 100644 index 0000000000..7c81544790 --- /dev/null +++ b/dist/docs/3.0.13/creative/task-reference/preview_creative.mdx @@ -0,0 +1,424 @@ +--- +title: preview_creative +description: "preview_creative generates visual previews of ad creative manifests in AdCP in single or batch mode returning URL, image, or HTML output." +"og:title": "AdCP — preview_creative" +--- + + +Generate preview renderings of creative manifests. Supports both single creative preview and batch preview (5-10x faster for multiple creatives). + +**Request Schema**: [`/schemas/3.0.13/creative/preview-creative-request.json`](https://adcontextprotocol.org/schemas/3.0.13/creative/preview-creative-request.json) +**Response Schema**: [`/schemas/3.0.13/creative/preview-creative-response.json`](https://adcontextprotocol.org/schemas/3.0.13/creative/preview-creative-response.json) + +## Quick Start + +### Single Creative Preview + +```json +{ + "request_type": "single", + "creative_manifest": { /* includes format_id, 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", + "creative_manifest": { /* includes format_id, 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" +} +``` + + +Only use `output_format: "html"` with trusted creative agents. Direct HTML embedding bypasses iframe sandboxing. + + +### Batch Preview (Multiple Creatives) + +Preview multiple creatives in one API call (5-10x faster): + +```json +{ + "request_type": "batch", + "requests": [ + { "creative_manifest": { /* creative 1 */ } }, + { "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` 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_id": { + "agent_url": "https://creative.example.com", + "id": "display_300x250_generative" + }, + "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 | Single | Complete creative manifest with all required assets for the format. | +| `format_id` | FormatID | No | Format identifier (agent_url + id). Defaults to `creative_manifest.format_id` if omitted. Used in single mode. | +| `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 accepts `creative_manifest` (required), `format_id`, `inputs`, `quality`, `output_format`, `item_limit`, and `template_id`. | +| `variant_id` | string | Variant | Platform-assigned variant identifier from `get_creative_delivery`. | +| `creative_id` | string | No | Creative identifier for context. Used in variant mode. | + +**Required** column values: *Single* = required when `request_type` is `"single"`, *Batch* = required when `"batch"`, *Variant* = required when `"variant"`. + +### 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"; + previews: Preview[]; // One per input (or one default) + interactive_url?: string; // Optional sandbox for interactive formats + expires_at: string; // ISO 8601 expiration +} +``` + +### Batch Mode Response + +```typescript +{ + response_type: "batch"; + results: Array<{ + success: boolean; + creative_id: string; + 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.0.13/creative/preview-creative-request.json", + "request_type": "single", + "quality": "draft", + "creative_manifest": { + "format_id": { + "agent_url": "https://ads.seller-example.com", + "id": "contextual_display_generative" + }, + "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`: + +```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 | Exact — what you see is what runs | 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"` | Fast wireframe-quality render | Fast, lower-fidelity generation for reviewing creative direction | +| `quality: "production"` | Full-fidelity render | Full-quality generation for stakeholder sign-off | +| 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 mismatch + +If the requested quality level is not supported, the agent renders at the best quality it can provide. The protocol does not require agents to support both levels — an agent that only generates at one fidelity ignores the parameter. There is no response field echoing back the actual quality used, so if quality accuracy matters for your workflow, verify by visual inspection or ask the agent about its capabilities through `list_creative_formats`. + +### Preview expiration and variant retention + +All previews have an `expires_at` timestamp. After expiration, preview URLs return errors and must be re-generated. For generative creative, re-generating a pre-flight preview may produce different output — the same brief and context can yield different creative each time. + +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.0.13/creative/preview-creative-request.json", + "request_type": "single", + "creative_manifest": { + "format_id": { "agent_url": "https://creative.adcontextprotocol.org", "id": "native_responsive" }, + "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.0.13/creative/preview-creative-request.json", + "request_type": "single", + "creative_manifest": { + "format_id": { "agent_url": "https://creative.adcontextprotocol.org", "id": "audio_host_read_30s" }, + "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 manifest or format_id +- **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 HTML page for iframe embedding +- Use `output_format: "html"` for grids of 10+ previews (no iframe overhead) +- Batch mode is 5-10x faster than individual requests +- Preview URLs expire (check `expires_at`) +- Handle partial batch failures by checking each result's `success` field + +## Related Documentation + +- [Advanced Preview Patterns](/dist/docs/3.0.13/creative/task-reference/preview_creative-advanced) - Caching, workflows, implementation notes +- [Creative Manifests](/dist/docs/3.0.13/creative/creative-manifests) - Manifest structure +- [Creative Formats](/dist/docs/3.0.13/creative/formats) - Format specifications diff --git a/dist/docs/3.0.13/creative/task-reference/sync_creatives.mdx b/dist/docs/3.0.13/creative/task-reference/sync_creatives.mdx new file mode 100644 index 0000000000..21b88f7495 --- /dev/null +++ b/dist/docs/3.0.13/creative/task-reference/sync_creatives.mdx @@ -0,0 +1,711 @@ +--- +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.0.13/creative/sync-creatives-request.json) +**Response Schema**: [`creative/sync-creatives-response.json`](https://adcontextprotocol.org/schemas/3.0.13/creative/sync-creatives-response.json) + +## Quick start + +Upload creative assets: + + + +```javascript JavaScript +import { testAgent } from "@adcp/client/testing"; +import { SyncCreativesResponseSchema } from "@adcp/client"; + +const result = await testAgent.syncCreatives({ + creatives: [ + { + creative_id: "creative_video_001", + name: "Summer Sale 30s", + format_id: { + agent_url: "https://creative.adcontextprotocol.org", + id: "video_standard_30s", + }, + assets: { + 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 — poll tasks/get 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 + +async def main(): + result = await test_agent.simple.sync_creatives( + creatives=[{ + 'creative_id': 'creative_video_001', + 'name': 'Summer Sale 30s', + 'format_id': { + 'agent_url': 'https://creative.adcontextprotocol.org', + 'id': 'video_standard_30s' + }, + 'assets': { + '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 — poll tasks/get 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). + +## Request parameters + +| Parameter | Type | Required | Description | +| ----------------- | ---------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `account` | object | Yes | Account reference identifying the advertiser/workspace for this sync ([account-ref](/dist/docs/3.0.13/accounts/overview)) | +| `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, preview changes without applying them (default: false) | +| `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_id` | FormatId | Yes | Format specification (structured object with `agent_url` and `id`) | +| `assets` | object | Yes | Assets keyed by role (e.g., `{video: {...}, thumbnail: {...}}`). Catalogs are included as assets with `asset_type: "catalog"`. See [Catalogs](/dist/docs/3.0.13/creative/catalogs). | +| `tags` | string[] | No | Searchable tags for creative organization | + +### 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 + } + } +} +``` + +### 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" } + ] +} +``` + +## 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 `tasks/get` 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.0.13/enums/creative-status.json)): `processing`, `pending_review`, `approved`, `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`). **Buyers MUST NOT gate downstream spend or package activation on `status: approved` from this response** — reconcile via `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. +- `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.0.13/creative/sync-creatives-response.json) + +## Common scenarios + +### Bulk upload + +Upload multiple creatives in one call: + + + +```javascript JavaScript +import { testAgent } from "@adcp/client/testing"; +import { SyncCreativesResponseSchema } from "@adcp/client"; + +const result = await testAgent.syncCreatives({ + creatives: [ + { + creative_id: "creative_display_001", + name: "Summer Sale Banner 300x250", + format_id: { + agent_url: "https://creative.adcontextprotocol.org", + id: "display_300x250", + }, + assets: { + image: { + url: "https://cdn.example.com/banner-300x250.jpg", + width: 300, + height: 250, + }, + }, + }, + { + creative_id: "creative_video_002", + name: "Product Demo 15s", + format_id: { + agent_url: "https://creative.adcontextprotocol.org", + id: "video_standard_15s", + }, + assets: { + 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_id: { + agent_url: "https://creative.adcontextprotocol.org", + id: "display_728x90", + }, + assets: { + 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.name}: ${creative.platform_id}`); + }); +} +``` + +```python Python +import asyncio +from adcp.testing import test_agent + +async def main(): + result = await test_agent.simple.sync_creatives( + creatives=[ + { + 'creative_id': 'creative_display_001', + 'name': 'Summer Sale Banner 300x250', + 'format_id': { + 'agent_url': 'https://creative.adcontextprotocol.org', + 'id': 'display_300x250' + }, + 'assets': { + 'image': { + 'url': 'https://cdn.example.com/banner-300x250.jpg', + 'width': 300, + 'height': 250 + } + } + }, + { + 'creative_id': 'creative_video_002', + 'name': 'Product Demo 15s', + 'format_id': { + 'agent_url': 'https://creative.adcontextprotocol.org', + 'id': 'video_standard_15s' + }, + 'assets': { + '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_id': { + 'agent_url': 'https://creative.adcontextprotocol.org', + 'id': 'display_728x90' + }, + 'assets': { + '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.name}: {creative.platform_id}") + +asyncio.run(main()) +``` + + + +### Generative creatives + +Use the creative agent to generate creatives from brand identity data. See the [Generative Creatives guide](/dist/docs/3.0.13/creative/generative-creative) for complete workflow details. + + + +```javascript JavaScript +import { testAgent } from "@adcp/client/testing"; +import { SyncCreativesResponseSchema } from "@adcp/client"; + +const result = await testAgent.syncCreatives({ + creatives: [ + { + creative_id: "creative_gen_001", + name: "AI-Generated Summer Banner", + format_id: { + agent_url: "https://creative.adcontextprotocol.org", + id: "display_300x250", + }, + assets: { + manifest: { + url: "https://cdn.example.com/brand.json", + }, + }, + }, + ], +}); + +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 + +async def main(): + result = await test_agent.simple.sync_creatives( + creatives=[{ + 'creative_id': 'creative_gen_001', + 'name': 'AI-Generated Summer Banner', + 'format_id': { + 'agent_url': 'https://creative.adcontextprotocol.org', + 'id': 'display_300x250' + }, + 'assets': { + 'manifest': { + 'url': 'https://cdn.example.com/brand.json' + } + } + }] + ) + + # 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/client/testing"; +import { SyncCreativesResponseSchema } from "@adcp/client"; + +const result = await testAgent.syncCreatives({ + dry_run: true, + creatives: [ + { + creative_id: "creative_test_001", + name: "Test Creative", + format_id: { + agent_url: "https://creative.adcontextprotocol.org", + id: "video_standard_30s", + }, + assets: { + 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 { + console.log("Validation passed! Ready to sync."); +} +``` + +```python Python +import asyncio +from adcp.testing import test_agent + +async def main(): + result = await test_agent.simple.sync_creatives( + dry_run=True, + creatives=[{ + 'creative_id': 'creative_test_001', + 'name': 'Test Creative', + 'format_id': { + 'agent_url': 'https://creative.adcontextprotocol.org', + 'id': 'video_standard_30s' + }, + 'assets': { + '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}") + + 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/client/testing"; +import { SyncCreativesResponseSchema } from "@adcp/client"; + +// Update just 2 creatives out of 100+ in the library +const result = await testAgent.syncCreatives({ + creative_ids: ["creative_video_001", "creative_display_001"], + creatives: [ + { + creative_id: "creative_video_001", + name: "Summer Sale 30s - Updated", + format_id: { + agent_url: "https://creative.adcontextprotocol.org", + id: "video_standard_30s", + }, + assets: { + 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_id: { + agent_url: "https://creative.adcontextprotocol.org", + id: "display_300x250", + }, + assets: { + 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 + +async def main(): + # Update just 2 creatives out of 100+ in the library + result = await test_agent.simple.sync_creatives( + creative_ids=['creative_video_001', 'creative_display_001'], + creatives=[ + { + 'creative_id': 'creative_video_001', + 'name': 'Summer Sale 30s - Updated', + 'format_id': { + 'agent_url': 'https://creative.adcontextprotocol.org', + 'id': 'video_standard_30s' + }, + 'assets': { + '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_id': { + 'agent_url': 'https://creative.adcontextprotocol.org', + 'id': 'display_300x250' + }, + 'assets': { + '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` 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 + +Poll `tasks/get` 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.0.13/building/by-layer/L3/webhooks) for webhook configuration. + +## Sync modes + +### Upsert (default) + +- Creates new creatives or updates existing by `creative_id` +- Merges package assignments (additive) +- Updates provided fields, leaves others unchanged +- Use `creative_ids` filter to limit scope to specific creatives + +### Dry run + +- Validates request without making changes +- Returns errors and warnings +- Does not process assets or create creatives +- Use for pre-flight validation checks + +## Error handling + +| Error Code | Description | Resolution | +| ------------------------- | ------------------------------------------------- | -------------------------------------------------------------------- | +| `INVALID_FORMAT` | Format not supported by product | Check product's supported formats via `list_creative_formats` | +| `ASSET_PROCESSING_FAILED` | Asset file corrupt or invalid | Verify asset meets format requirements (codec, dimensions, duration) | +| `PACKAGE_NOT_FOUND` | Package ID doesn't exist in media buy | Verify `package_id` from `create_media_buy` response | +| `BRAND_SAFETY_VIOLATION` | Creative failed brand safety scan | Review content against publisher's brand safety guidelines | +| `FORMAT_MISMATCH` | Assets don't match format requirements | Verify asset types and specifications match format definition | +| `CREATIVE_IN_ACTIVE_DELIVERY` | 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 | + +## 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 #7). + +2. **Validate first** - Use `dry_run: true` to catch errors before actual upload. This saves bandwidth and processing time. + +3. **Batch assignments** - Include all package assignments in single sync call to avoid race conditions between updates. + +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. **Check format support** - Use `list_creative_formats` to verify product supports your creative formats before uploading. + +7. **Active delivery protection** - Creatives assigned to active, non-paused packages cannot be updated or deleted via `delete_missing`. Pause the package first, unassign the creative via `update_media_buy`, or create a new creative with a different `creative_id`. + +## Related tasks + +- [`list_creative_formats`](/dist/docs/3.0.13/creative/task-reference/list_creative_formats) - Check supported formats before upload +- [`list_creatives`](/dist/docs/3.0.13/creative/task-reference/list_creatives) - Browse and filter creatives in a library +- [`build_creative`](/dist/docs/3.0.13/creative/task-reference/build_creative) - Build manifests from library creatives or generate from scratch +- [`preview_creative`](/dist/docs/3.0.13/creative/task-reference/preview_creative) - Generate previews of creative manifests +- [Creative Asset Types](/dist/docs/3.0.13/creative/asset-types) - Technical requirements for assets diff --git a/dist/docs/3.0.13/creative/template-format-ids.mdx b/dist/docs/3.0.13/creative/template-format-ids.mdx new file mode 100644 index 0000000000..167e172347 --- /dev/null +++ b/dist/docs/3.0.13/creative/template-format-ids.mdx @@ -0,0 +1,583 @@ +--- +title: Template Format IDs +description: "Template format IDs in AdCP let a single format definition support many dimension variants without creating separate formats for each size." +"og:title": "AdCP — Template Format IDs" +--- + + +Template formats allow a single format definition to support multiple dimension or duration variants without creating separate format definitions for each variant. This eliminates format explosion when publishers support many similar variants. + +## The Problem: Format Explosion + +Without template formats, each dimension variant requires a separate format definition and format_id: + +```json +{"format_id": {"agent_url": "...", "id": "display_300x250"}} +{"format_id": {"agent_url": "...", "id": "display_300x600"}} +{"format_id": {"agent_url": "...", "id": "display_728x90"}} +{"format_id": {"agent_url": "...", "id": "display_970x250"}} +// ... 50+ more sizes +``` + +**Publisher with 50 placement sizes** → 50 separate format definitions to create, maintain, and document. + +## The Solution: Template Formats with Parameters + +A single template format definition (`display_static`) accepts dimension fields in the format_id object, allowing creatives to specify their exact dimensions. + +## Format Types and Format IDs + +There are **two types of format definitions**, which produce **three types of format IDs**: + +### Format Definitions + +1. **Concrete formats** - Fixed dimensions in format definition + - Have `renders` array with explicit dimensions + - Example: `display_300x250` always means 300×250px + - Cannot accept parameters + +2. **Template formats** - Accept parameters in format_id + - Have `accepts_parameters` array listing accepted parameters + - Example: `display_static` can be any dimensions + - Can be used with or without parameters + +### Format IDs + +1. **Concrete format_id** - References a concrete format + - Example: `{id: "display_300x250"}` + - No parameters (none accepted) + +2. **Template format_id** - References a template format without parameters + - Example: `{id: "display_static"}` + - Used in placements to accept any dimensions + +3. **Parameterized format_id** - Template format with parameters + - Example: `{id: "display_static", width: 300, height: 250}` + - Used in creatives to specify exact dimensions (in pixels) + +### Template Format Definition + +Format definition that accepts parameters: + +```json +{ + "format_id": { + "agent_url": "https://creative.adcontextprotocol.org" + "id": "display_static" + } + "name": "Static Display Banner" + "type": "display" + "accepts_parameters": ["dimensions"] + "renders": [ + { + "role": "primary" + "parameters_from_format_id": true + } + ] + "assets": [ + { + "item_type": "individual" + "asset_id": "banner_image" + "asset_type": "image" + "required": true + "requirements": { + "parameters_from_format_id": true + } + } + { + "item_type": "individual" + "asset_id": "clickthrough_url" + "asset_type": "url" + "required": true + } + ] +} +``` + +**Key fields:** +- `accepts_parameters: ["dimensions"]` - Format accepts dimensions (width/height in pixels) in format_id +- `renders[].parameters_from_format_id: true` - Render parameters come from format_id +- `requirements.parameters_from_format_id: true` - Asset parameters must match format_id + +### Parameterized Format ID (Creative Manifest) + +Creative specifies exact dimensions in format_id to use the template format: + +```json +{ + "format_id": { + "agent_url": "https://creative.adcontextprotocol.org" + "id": "display_static" + "width": 300 + "height": 250 + } + "assets": { + "banner_image": { + "asset_type": "image" + "url": "https://cdn.example.com/banner-300x250.png" + "width": 300 + "height": 250 + } + "clickthrough_url": { + "asset_type": "url" + "url": "https://example.com/landing" + } + } +} +``` + +**This format_id is parameterized:** Same dimensions always produce the same format_id object, enabling deduplication and caching. + +### Placement Constraints + +**CRITICAL**: Sales agents MUST always return parameterized format_ids (with specific dimensions/duration) in placements. Template format_ids without parameters are ONLY used in format definitions from `list_creative_formats()`. + +Publishers specify supported dimensions by listing all supported variants: + +```json +{ + "placement_id": "homepage_banner" + "name": "Homepage Banner" + "format_ids": [ + { + "agent_url": "https://creative.adcontextprotocol.org" + "id": "display_static" + "width": 300 + "height": 250 + } + { + "agent_url": "https://creative.adcontextprotocol.org" + "id": "display_static" + "width": 728 + "height": 90 + } + ] +} +``` + +**Validation:** Creative's format_id must exactly match one of the placement's parameterized format_ids. + +**Why parameterized only in placements:** +- Buyers need to know exactly which dimensions are supported +- No ambiguity about what will be accepted +- Enables clear validation at creative submission time +- Template format_ids without parameters are only for format discovery via `list_creative_formats()` + +## Benefits + +✅ **Scalability** - One template format supports unlimited dimension variants +✅ **Predictable** - Same dimensions = same format_id (enables caching/deduplication) +✅ **Self-contained** - Creatives fully specify their format via format_id +✅ **Portable** - A 300×250 creative works on any placement accepting 300×250 +✅ **Publisher control** - Placements specify exact dimension constraints +✅ **Type-safe** - Width/height are numbers, not encoded strings +✅ **Backward compatible** - Concrete (non-template) formats work unchanged + +## Format ID Fields + +### Visual Formats (Display, DOOH, Native) + +**Fields:** +- `width` (integer, minimum: 1) - Width in pixels +- `height` (integer, minimum: 1) - Height in pixels + +**Example:** +```json +{ + "agent_url": "https://creative.adcontextprotocol.org" + "id": "display_static" + "width": 300 + "height": 250 +} +``` + +### Time-Based Formats (Video, Audio) + +**Fields:** +- `duration_ms` (number, minimum: 1) - Duration in milliseconds + +**Example:** +```json +{ + "agent_url": "https://creative.adcontextprotocol.org" + "id": "video_hosted" + "duration_ms": 30000 +} +``` + +### Combined (Video with Dimensions) + +**Fields:** +- `width`, `height` (integers) - Video frame dimensions in pixels +- `duration_ms` (number) - Video length in milliseconds + +**Example:** +```json +{ + "agent_url": "https://creative.adcontextprotocol.org" + "id": "video_hosted" + "width": 1920 + "height": 1080 + "duration_ms": 30000 +} +``` + +## Format Definition Patterns + +### Display Format (Flexible Dimensions) + +```json +{ + "format_id": { + "agent_url": "https://creative.adcontextprotocol.org" + "id": "display_static" + } + "name": "Static Display Banner" + "type": "display" + "accepts_parameters": ["dimensions"] + "renders": null + "assets": [...] +} +``` + +### Video Format (Flexible Duration) + +```json +{ + "format_id": { + "agent_url": "https://creative.adcontextprotocol.org" + "id": "video_hosted" + } + "name": "Hosted Video" + "type": "video" + "accepts_parameters": ["duration"] + "renders": null + "assets": [...] +} +``` + +### DOOH Format (Pixel Dimensions) + +```json +{ + "format_id": { + "agent_url": "https://creative.adcontextprotocol.org" + "id": "dooh_static" + } + "name": "DOOH Static Display" + "type": "dooh" + "accepts_parameters": ["dimensions"] + "renders": null + "assets": [...] +} +``` + +**Creative with pixel dimensions:** +```json +{ + "format_id": { + "agent_url": "https://creative.adcontextprotocol.org" + "id": "dooh_static" + "width": 1920 + "height": 560 + } + "assets": {...} +} +``` + +**Note**: All dimensions are in pixels. Physical screen dimensions (e.g., 48 feet × 14 feet billboard) are placement metadata, not format specifications. + +### Generative Formats with Output Formats + +Generative formats specify which output formats they can produce: + +**Option 1: Generate specific dimensions** +```json +{ + "format_id": {"agent_url": "...", "id": "display_generative"} + "output_format_ids": [ + {"agent_url": "...", "id": "display_static", "width": 300, "height": 250} + {"agent_url": "...", "id": "display_static", "width": 728, "height": 90} + ] +} +``` + +**Option 2: Generate any dimension (template output)** +```json +{ + "format_id": {"agent_url": "...", "id": "display_generative"} + "output_format_ids": [ + {"agent_url": "...", "id": "display_static"} + ] +} +``` + +Use template outputs when your generation logic can handle arbitrary dimensions. Buyer specifies dimensions when calling the generative format. + +## Discovery Pattern + +### Format Definitions: `list_creative_formats()` + +Both creative and sales agents can return template format definitions via `list_creative_formats()`: + +```json +{ + "formats": [ + { + "format_id": {"agent_url": "...", "id": "display_static"} + "accepts_parameters": ["dimensions"] + "assets": [...] + } + ] +} +``` + +**Purpose**: Buyers discover what format *types* are available and what parameters they accept. + +### Placement Constraints: `get_products()` + +**REQUIREMENT**: Sales agents MUST return parameterized format_ids (with specific dimensions/duration) in placements. Template format_ids without parameters are NOT allowed in placement specifications. + +```json +{ + "products": [{ + "placements": [{ + "format_ids": [ + {"agent_url": "...", "id": "display_static", "width": 300, "height": 250}, + {"agent_url": "...", "id": "display_static", "width": 728, "height": 90} + ] + }] + }] +} +``` + +**Purpose**: Buyers discover which *specific dimensions* are supported for each placement. + +**Why parameterized format_ids are required in placements:** +- Provides explicit list of accepted dimension variants +- Eliminates ambiguity about what will be accepted +- Enables clear validation at creative submission time +- Buyers can match their creative dimensions against specific placement requirements + +**Discovery Flow**: +1. Buyer calls `list_creative_formats()` on creative or sales agent → learns `display_static` is a template format that accepts dimensions +2. Buyer calls `get_products()` on sales agent → learns which *specific dimensions* are supported (300×250, 728×90) +3. Buyer creates creative with parameterized format_id matching one of the placement's supported dimensions + +## Implementation Guidelines + +### For Creative Agents + +**Format definitions:** +- Set `accepts_parameters: ["dimensions"]` for formats with flexible dimensions +- Set `accepts_parameters: ["duration"]` for formats with flexible duration +- Set `accepts_parameters: ["dimensions", "duration"]` for formats with both (e.g., video with dimensions) +- Omit `renders` array when format accepts dimensions (dimensions come from format_id) +- Include `renders` array for concrete formats with fixed dimensions + +**Validation:** +- Validate format_id dimensions against asset dimensions +- Ensure width/height/unit are present together (not partial) +- Return clear errors if format_id doesn't match assets + +**Format lookup/matching:** +- `list_creative_formats()` returns template formats (without dimension parameters) +- Format lookup by ID matches on base format (agent_url + id), ignoring dimension parameters +- Example: Request for `{id: "display_static", width: 300, height: 250}` matches the template format `{id: "display_static"}` +- Dimension parameters are used for creative validation, not format discovery + +### For Sales Agents + +**Product responses - CRITICAL REQUIREMENT:** +- **MUST** always return parameterized format_ids with specific dimensions/duration in placements +- **NEVER** return template format_ids without parameters in placement `format_ids` arrays +- List all supported dimension/duration variants explicitly: + ```json + { + "placements": [{ + "format_ids": [ + {"agent_url": "...", "id": "display_static", "width": 300, "height": 250}, + {"agent_url": "...", "id": "display_static", "width": 728, "height": 90}, + {"agent_url": "...", "id": "display_static", "width": 160, "height": 600} + ] + }] + } + ``` + +**Why this requirement exists:** +- Buyers need explicit lists of supported dimensions +- No ambiguity about what will be accepted +- Enables validation at creative submission time +- Template format_ids without parameters are ONLY for `list_creative_formats()` responses + +**Creative validation:** +- Ensure creative format_id exactly matches at least one placement format_id +- Match requires exact equality of all fields: agent_url, id, width, height, duration_ms +- No partial matches or "close enough" dimensions + +### For Buyers + +**Creative manifest construction:** +- Fetch format definitions to check `accepts_parameters` array +- Include dimension/duration fields in format_id when using template formats +- Ensure asset dimensions match format_id dimensions +- Validate against placement format_ids before syncing + +## Format ID Equality Rules + +Two format_ids are **identical** if and only if: +- `agent_url` matches exactly +- `id` matches exactly +- `width` matches exactly (if present) +- `height` matches exactly (if present) +- `duration_ms` matches exactly (if present) + +### Canonicalization + +When comparing format_ids for equality or caching: + +**Required fields:** +- Both `width` and `height` must be present together (cannot specify only one) +- All dimensions are in pixels (integers) + +**Numeric precision:** +- Width and height are integers (300 not 300.5) +- Duration can be decimal (30000.5ms for fractional seconds) + +**Field order:** +- JSON field order does NOT matter for equality +- `{"width": 300, "height": 250}` equals `{"height": 250, "width": 300}` + +**Example equivalence:** +```json +// These are IDENTICAL format IDs +{"agent_url": "...", "id": "display_static", "width": 300, "height": 250} +{"agent_url": "...", "id": "display_static", "width": 300, "height": 250} + +// These are DIFFERENT format IDs +{"agent_url": "...", "id": "display_static", "width": 300, "height": 250} +{"agent_url": "...", "id": "display_static", "width": 728, "height": 90} + +// INVALID - partial dimensions not allowed (schema validation will reject) +{"agent_url": "...", "id": "display_static", "width": 300} // ❌ Missing height +``` + +## Matching Logic + +### Placement Validation + +**IMPORTANT**: Placements MUST always specify parameterized format_ids with explicit dimensions/duration. Template format_ids without parameters are NOT allowed in placements. + +**Parameterized formats in placement (REQUIRED pattern):** +```json +// Placement specifies exact supported dimensions +{"format_ids": [ + {"agent_url": "...", "id": "display_static", "width": 300, "height": 250}, + {"agent_url": "...", "id": "display_static", "width": 728, "height": 90} +]} + +// Creative matches only if exact equality with one of the placement's format_ids +{"format_id": {"agent_url": "...", "id": "display_static", "width": 300, "height": 250}} // ✅ Match +{"format_id": {"agent_url": "...", "id": "display_static", "width": 728, "height": 90}} // ✅ Match +{"format_id": {"agent_url": "...", "id": "display_static", "width": 160, "height": 600}} // ❌ Not in placement list +{"format_id": {"agent_url": "...", "id": "display_static"}} // ❌ Missing dimensions +``` + +## Migration from Concrete Formats + +**Before (format explosion):** +```json +// 50 separate format definitions +{ + "format_id": {"agent_url": "...", "id": "display_300x250"} + "renders": [{"dimensions": {"width": 300, "height": 250}}] +} +{ + "format_id": {"agent_url": "...", "id": "display_728x90"} + "renders": [{"dimensions": {"width": 728, "height": 90}}] +} +// ... 48 more +``` + +**After (single template format):** +```json +{ + "format_id": {"agent_url": "...", "id": "display_static"} + "accepts_parameters": ["dimensions"] + "assets": [...] +} +``` + +**Creative manifest change:** +```json +// Before: Format ID encoded dimensions in string +{ + "format_id": {"agent_url": "...", "id": "display_300x250"} + "assets": {...} +} + +// After: Dimensions as structured fields in format_id +{ + "format_id": { + "agent_url": "..." + "id": "display_static" + "width": 300 + "height": 250 + } + "assets": {...} +} +``` + +## Common Patterns + +### IAB Standard Display Sizes + +Instead of defining 15 separate formats for IAB sizes, use one template: + +```json +{ + "format_id": {"agent_url": "...", "id": "display_static"} + "accepts_parameters": ["dimensions"] +} +``` + +Creatives specify their size via parameters: +- 300×250: `{id: "display_static", width: 300, height: 250}` +- 728×90: `{id: "display_static", width: 728, height: 90}` +- 160×600: `{id: "display_static", width: 160, height: 600}` +- etc. + +### Video Duration Variants + +Instead of separate 15s, 30s, 60s format definitions: + +```json +{ + "format_id": {"agent_url": "...", "id": "video_hosted"} + "accepts_parameters": ["duration"] +} +``` + +Creatives specify duration: `{id: "video_hosted", duration_ms: 30000}` + +### DOOH Screen Sizes + +Instead of defining formats for every billboard size: + +```json +{ + "format_id": {"agent_url": "...", "id": "dooh_static"} + "accepts_parameters": ["dimensions"] +} +``` + +Creatives specify pixel dimensions: `{id: "dooh_static", width: 1920, height: 560}` + +**Note**: All dimensions are in pixels. Physical screen size (e.g., 48 feet × 14 feet) is placement metadata. + +## See Also + +- [Creative Manifests](/dist/docs/3.0.13/creative/creative-manifests) - Complete manifest structure +- [Format Discovery](/dist/docs/3.0.13/creative/formats) - How buyers discover formats +- [Placement Targeting](/dist/docs/3.0.13/media-buy/creatives) - Assigning creatives to placements +- [Format References](/dist/docs/3.0.13/protocol/format-references) - Normative contrast between `format_id` (pointer) and `format` (definition), including named validation errors diff --git a/dist/docs/3.0.13/creative/universal-macros.mdx b/dist/docs/3.0.13/creative/universal-macros.mdx new file mode 100644 index 0000000000..cb9462e565 --- /dev/null +++ b/dist/docs/3.0.13/creative/universal-macros.mdx @@ -0,0 +1,677 @@ +--- +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 formats support different macros. Use `list_creative_formats` to see which macros are available for each format. + +### 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` | + +### 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.0.13/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.0.13/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.0.13/trusted-match), this is replaced by: +- **Structured creative assets** move to the `creative_manifest` field on the [Offer](/dist/docs/3.0.13/trusted-match/specification#offer). +- **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.0.13/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}`. + +#### 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 (`{CATALOG_ID}`, `{SKU}`, `{GTIN}`, `{OFFERING_ID}`, `{JOB_ID}`, `{HOTEL_ID}`, `{FLIGHT_ID}`, `{VEHICLE_ID}`, `{LISTING_ID}`, `{STORE_ID}`, `{PROGRAM_ID}`, `{DESTINATION_ID}`): + +- **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 tracked at [`static/test-vectors/catalog-macro-substitution.json`](https://github.com/adcontextprotocol/adcp/blob/main/static/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_id": { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "video_30s_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_id": { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "display_banner_300x250" + }, + "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_id": { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "audio_streaming_30s" + }, + "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_id": { + "agent_url": "https://creative.retailer.com/adcp", + "id": "product_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 + +Query `list_creative_formats` to see which macros each format supports: + +```json +{ + "format_id": { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "video_30s_vast" + }, + "type": "video", + "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) + +### 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 query `list_creative_formats` to see which macros are available. 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 + +Sales agents must automatically insert click tracking macros into clickable elements: + +**Original creative**: +```html +
Click here +``` + +**After insertion (GAM)**: +```html +Click here +``` + +### 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.0.13/creative/formats) - Understanding format specifications and discovery +- [Creative Protocol](/dist/docs/3.0.13/creative) - How creatives work in AdCP +- [sync_creatives](/dist/docs/3.0.13/creative/task-reference/sync_creatives) - Creative management API \ No newline at end of file diff --git a/dist/docs/3.0.13/curation/coming-soon.mdx b/dist/docs/3.0.13/curation/coming-soon.mdx new file mode 100644 index 0000000000..774640628b --- /dev/null +++ b/dist/docs/3.0.13/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](https://join.slack.com/t/agenticads/shared_invite/zt-3c5sxvdjk-x0rVmLB3OFHVUp~WutVWZg) +- Share your use cases +- Review early drafts + +Subscribe to updates: announcements@adcontextprotocol.org \ No newline at end of file diff --git a/dist/docs/3.0.13/faq.mdx b/dist/docs/3.0.13/faq.mdx new file mode 100644 index 0000000000..a21fa80bea --- /dev/null +++ b/dist/docs/3.0.13/faq.mdx @@ -0,0 +1,356 @@ +--- +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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/sponsored-intelligence/monetizing-ai). For the technical protocol walkthrough, see the [Sponsored Intelligence overview](/dist/docs/3.0.13/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.0.13/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.0.13/brand-protocol/brand-json) (voice, visual guidelines, positioning) and [content standards](/dist/docs/3.0.13/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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/intro) or the [building guide](/dist/docs/3.0.13/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.0.13/learning/overview) (the Academy and certification program), and [governance](/dist/docs/3.0.13/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.0.13/), and documentation are freely available — no fee, no license agreement, no membership requirement. + + + +AdCP is at **3.0.1 — General Availability**, with 3.0 released April 2026. The protocol is stable and production-ready. See [Release notes](/dist/docs/3.0.13/reference/release-notes) for the full change log and [What's new in v3](/dist/docs/3.0.13/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.0.13/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.0.13/reference/versioning) for the full policy and 3.x stability guarantees. AdCP 2.5 remains security-patched until 2026-08-01 — see the [v2 sunset page](/dist/docs/3.0.13/reference/v2-sunset) for the end-of-life timeline. + + + +AdCP 3.0 introduces breaking changes. Start with [what's new in v3](/dist/docs/3.0.13/reference/whats-new-in-v3) for the summary, then work through the [migration guides](/dist/docs/3.0.13/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.0.13/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 a separate specification from IAB Tech Lab standards. AgenticAdvertising.org is an independent organization. However, AdCP is designed to be compatible with IAB standards — for example, AdCP's content taxonomy fields align with IAB content categories, and AdCP's audience segments can reference IAB audience taxonomy IDs. + + + +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. + +Our read of the distinction: AdCP describes how a buyer agent and a seller agent negotiate, transact, and govern a media buy — product discovery, pricing, creative, governance, and execution. AAMP's work streams, as currently described, address impression-level concerns: how agents are discovered and identified inside the existing programmatic auction, and how agentic audiences move across that layer. A platform could implement both, with AdCP handling the buyer/seller workflow and AAMP's components plugging into the impression-level layer alongside OpenRTB. + +As of April 2026: + +| | AAMP | AdCP | +|---|---|---| +| **Layer** | Impression-level (within the RTB stack, per published work streams) | Buyer/seller workflow (product discovery, media buy, creative, governance, execution) | +| **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.0.13/building/concepts/security-model)) | +| **Public schemas** | Being defined | [Published](https://adcontextprotocol.org/schemas/3.0.13/), 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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/community/working-group); change proposals flow through this repository. + +**Reference sell-side implementation lives at Prebid.** Development of the sell-side AI agent reference code was handed to the [Prebid community](https://www.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/). AAO owns the specification; Prebid owns the reference software. Spec governance and reference-implementation development are intentionally separate organizations. + + + +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.0.13/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.0.13/governance/property/adagents), implement [`get_products`](/dist/docs/3.0.13/media-buy/task-reference/get_products) with `channels: ["sponsored_intelligence"]`, and accept media buys. See the [Sponsored Intelligence protocol](/dist/docs/3.0.13/sponsored-intelligence/overview) for product modeling, workflows, and measurement. + +Sponsored Intelligence is an [experimental surface](/dist/docs/3.0.13/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.0.13/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.0.13/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. + + + + +## Certification + + + + +Start a conversation with Addie, our AI teaching assistant. She'll guide you through [interactive modules](/dist/docs/3.0.13/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.0.13/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.0.13/intro) for an overview, then explore the domain that matches your use case: + +- **Sell-side platforms**: Start with [media buy](/dist/docs/3.0.13/media-buy) to expose your inventory +- **Creative platforms**: Start with [creative](/dist/docs/3.0.13/creative) to offer format discovery and ad generation +- **Data providers**: Start with [signals](/dist/docs/3.0.13/signals/overview) to make audiences addressable by agents +- **Orchestrators and agencies**: Start with the [integration guide](/dist/docs/3.0.13/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.0.13/). + + + +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.0.13/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.0.13/governance/annex-iii-obligations.mdx b/dist/docs/3.0.13/governance/annex-iii-obligations.mdx new file mode 100644 index 0000000000..3761e6b3f2 --- /dev/null +++ b/dist/docs/3.0.13/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.0.13/governance/policy-registry#seeded-policies) — the seeded registry policy +- [Policy registry](/dist/docs/3.0.13/governance/policy-registry) — `requires_human_review` on policies and categories +- [Campaign governance specification](/dist/docs/3.0.13/governance/campaign/specification) — `human_review_required` plan field +- [Embedded human judgment](/dist/docs/3.0.13/governance/embedded-human-judgment) — the architectural principle behind mandatory oversight diff --git a/dist/docs/3.0.13/governance/campaign/audit-trail.mdx b/dist/docs/3.0.13/governance/campaign/audit-trail.mdx new file mode 100644 index 0000000000..2219c04c2a --- /dev/null +++ b/dist/docs/3.0.13/governance/campaign/audit-trail.mdx @@ -0,0 +1,317 @@ +--- +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.0.13/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.0.13/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`, `status` | 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", + "status": "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.0.13/governance/get-plan-audit-logs-response.json", + "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", + "status": "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.0.13/governance/check-governance-response.json", + "check_id": "chk_0ac8d7de", + "plan_id": "plan_2027_apex_athletic", + "status": "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`. The unauthorized seller's `governance_context` is still recorded — the trail captures the attempt, not just the success. + +### 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.0.13/governance/check-governance-response.json", + "check_id": "chk_8360a36d", + "plan_id": "plan_2027_nova_mortgage", + "status": "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.0.13/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.0.13/governance/check-governance-response.json", + "check_id": "chk_enforce_001", + "plan_id": "plan_mode_enforce", + "status": "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.0.13/governance/check-governance-response.json", + "check_id": "chk_advisory_001", + "plan_id": "plan_mode_advisory", + "status": "approved", + "explanation": "Approved with 1 advisory finding(s).", + "expires_at": "2027-01-15T15:32:41Z", + "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.0.13/governance/check-governance-response.json", + "check_id": "chk_audit_001", + "plan_id": "plan_mode_audit", + "status": "approved", + "explanation": "All governance checks passed.", + "expires_at": "2027-01-15T15:32:41Z", + "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.0.13/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.0.13/governance/policy-registry#policy-categories). + +## Related + +- [`get_plan_audit_logs`](/dist/docs/3.0.13/governance/campaign/tasks/get_plan_audit_logs) — request and response schema +- [Campaign governance specification](/dist/docs/3.0.13/governance/campaign/specification) — plan binding, drift detection, governance context lifecycle +- [Policy Registry](/dist/docs/3.0.13/governance/policy-registry) — policy versioning, `effective_date`, registry vs inline policies +- [Annex III & Art 22 obligations](/dist/docs/3.0.13/governance/annex-iii-obligations) — when human review is required diff --git a/dist/docs/3.0.13/governance/campaign/index.mdx b/dist/docs/3.0.13/governance/campaign/index.mdx new file mode 100644 index 0000000000..739be9417e --- /dev/null +++ b/dist/docs/3.0.13/governance/campaign/index.mdx @@ -0,0 +1,242 @@ +--- +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.0.13/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.0.13/governance/campaign/tasks/sync_plans), then calls [`check_governance`](/dist/docs/3.0.13/governance/campaign/tasks/check_governance) with `tool` + `payload` before every action it sends to a seller. The seller independently calls `check_governance` with `governance_context` + `planned_delivery` before executing. After receiving the seller's response, the orchestrator calls [`report_plan_outcome`](/dist/docs/3.0.13/governance/campaign/tasks/report_plan_outcome) to close the loop. The governance agent tracks budget from confirmed outcomes -- not just attempted actions. + +```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
(plan_id)"| 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.0.13/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.0.13/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 seller, including `plan_id` and `governance_context`. +3. **Check**: If the account has `governance_agents`, the seller calls `check_governance` with `governance_context` and `planned_delivery` — what it will actually deliver. The governance agent approves or denies. +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 discovery (`get_products`), purchase (`create_media_buy`, `update_media_buy`), and periodic delivery reporting. + +## 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. + +Seller-side governance checks solve this. The buyer syncs governance agents (URLs with credentials) via [`sync_governance`](/dist/docs/3.0.13/accounts/tasks/sync_governance). When the seller receives a `create_media_buy`, it calls the governance agent with what it plans to deliver. The governance agent checks against the plan and returns `approved`, `denied`, or `conditions`. + +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. + +Governance checks are optional at every phase. Sellers can start with purchase-only (one POST per buy) and add modification and delivery checks incrementally. See the [specification](/dist/docs/3.0.13/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 — callers always receive `approved`, `denied`, or `conditions` and act on the status. 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** — Return real statuses (`denied`, `conditions`) but the organization treats denials as non-blocking. 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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/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 + +| 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 | + +Governance agents declare which categories they evaluate via `get_adcp_capabilities`. + +## 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.0.13/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.0.13/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.0.13/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.0.13/governance/creative/index)** | Campaign Governance validates that creative assignments match format requirements. Creative Governance scans the creatives themselves. | +| **[Brand Protocol](/dist/docs/3.0.13/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 + + + + 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.0.13/governance/campaign/safety-model.mdx b/dist/docs/3.0.13/governance/campaign/safety-model.mdx new file mode 100644 index 0000000000..d034248fbf --- /dev/null +++ b/dist/docs/3.0.13/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.0.13/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 real statuses (`denied`, `conditions`) but the organization treats denials as non-blocking. | 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.0.13/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.0.13/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.0.13/governance/campaign/specification.mdx b/dist/docs/3.0.13/governance/campaign/specification.mdx new file mode 100644 index 0000000000..c2f124a548 --- /dev/null +++ b/dist/docs/3.0.13/governance/campaign/specification.mdx @@ -0,0 +1,1073 @@ +--- +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.0.13/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.0.13/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.0.13/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. + +#### Spend-commit tasks + +The invocation MUST applies to every AdCP task that attaches financial obligation at the moment of the request: + +- [`create_media_buy`](/dist/docs/3.0.13/media-buy/task-reference/create_media_buy) — committed budget across packages +- [`update_media_buy`](/dist/docs/3.0.13/media-buy/task-reference/update_media_buy) — incremental commit delta (new budget − previously committed) +- [`acquire_rights`](/dist/docs/3.0.13/brand-protocol/tasks/acquire_rights) — rights pricing +- [`update_rights`](/dist/docs/3.0.13/brand-protocol/tasks/update_rights) — incremental commit delta +- [`activate_signal`](/dist/docs/3.0.13/signals/tasks/activate_signal) — activation fees +- [`build_creative`](/dist/docs/3.0.13/creative/task-reference/build_creative) — creative generation fees +- Any future spend-commit task + +Invocation is NOT required for discovery tasks (e.g., `get_products`, `get_signals`), reporting tasks (e.g., `get_media_buy_delivery`), or operational-status tasks. The MUST fires specifically at the moment of financial 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 seller receiving a spend-commit request for a plan with a configured governance agent MUST require a valid, in-date **intent-phase** `governance_context` token on the request, verified per the [seller verification checklist](/dist/docs/3.0.13/building/by-layer/L1/security#seller-verification-checklist). The token MUST carry `phase: "intent"`, match the request's `plan_id` (via `sub`), and be addressed (`aud`) to this seller. A request without a token, with a token that fails verification, or with a token issued for a different plan, a different seller, or a non-intent phase MUST be rejected with `PERMISSION_DENIED`. The seller then performs its own execution check by calling `check_governance` with `planned_delivery` and the received `governance_context`; that call produces the `purchase`-phase token (bound to the seller-assigned `media_buy_id`) used for the remainder of the media buy lifecycle. This two-step flow is what makes the buyer-side MUST real: a buyer that skips `check_governance` cannot produce a valid intent token, and the spend-commit is rejected before the seller ever reaches its execution check. + +Sellers MUST persist the accepted intent token and any lifecycle tokens they subsequently hold, keyed at minimum by `jti` with `iss`, `aud`, `sub` (plan_id), `phase`, decision outcome, and the timestamp of acceptance. 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.0.13/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 the seller-side execution check each produce a distinct `check_id`; `report_plan_outcome` correlates via `plan_id` rather than a single check identifier. Auditors reconstructing a spend-commit reconcile the buyer-side entry, the seller-side entry, and the seller's persisted token record. + +#### Interaction with idempotency + +- **Retry of an identical payload carrying the prior intent-phase `governance_context`:** no re-invocation. The cached governance response is reused; the token signature and freshness are re-validated. Seller-side replay-dedup keys (see the [verification checklist](/dist/docs/3.0.13/building/by-layer/L1/security#seller-verification-checklist)) MUST treat a repeated `jti` carrying the same `idempotency_key` as a legitimate retry rather than a replay attack — this is the one narrow carve-out. +- **Re-plan with a different payload (new `idempotency_key` per [Idempotency](/dist/docs/3.0.13/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 | + +When delegations are present, the governance agent validates that the `caller` URL in `check_governance` matches a delegation's `agent_url` before approving actions. Matching is by exact URI comparison (case-sensitive, after normalization per RFC 3986). 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. + +When delegations are absent, the governance agent does not restrict which agents can act on the plan. + + +`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. Commits that were denied outright do not contribute; commits approved or approved-with-conditions do. `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. + +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.0.13/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.0.13/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.0.13/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.0.13/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 reference (pointing to a specific data provider signal) 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. + +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.0.13/governance/campaign/tasks/check_governance) checks budget authority, it considers all campaigns tied to the plan. When [`report_plan_outcome`](/dist/docs/3.0.13/governance/campaign/tasks/report_plan_outcome) reports a seller confirmation, the governance agent commits the budget from the seller's actual amount -- not the requested amount. + +### 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` reports the seller's confirmed amount. The governance agent commits this amount to the plan budget. + +This ensures budget tracking reflects reality. If a seller reduces the budget from \$150K to \$120K, the governance agent commits \$120K and returns findings about the discrepancy. If the action fails entirely, 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 + +The governance agent evaluates each [validation category](/dist/docs/3.0.13/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. + +### 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 infers the validation phase from the `tool` parameter in `check_governance`: + +| tool | Phase | +|------|-------| +| `get_products` | Discovery -- validates search intent, seller eligibility, product suitability | +| `create_media_buy` | Purchase -- validates budget authority, targeting compliance, flight dates | +| `update_media_buy` | Purchase -- validates change magnitude, reallocation thresholds | +| `acquire_rights` | Purchase -- validates budget authority, geo compliance, flight dates | +| `update_rights` | Purchase -- validates change magnitude, reallocation thresholds | +| `activate_signal` | Purchase -- validates budget authority, geo compliance, flight dates | +| `build_creative` | Purchase -- validates budget authority, geo compliance | + +Phase context is cumulative. During **purchase**, the governance agent considers what was discovered during **discovery**. + +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 +{ + "governance": { + "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." + } + ] + } + } +} +``` + +## Integration with `create_media_buy` + +The buyer includes `plan_id` on the `create_media_buy` request and `governance_context` on the protocol envelope. These fields tell the seller which governance plan applies, enabling seller-side governance checks. + +```json +{ + "tool": "create_media_buy", + "arguments": { + "plan_id": "plan_q1_2026_launch", + "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 `governance_agents`, the seller sends `planned_delivery` to the governance agent(s) 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. + +## Governance 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 `governance_agents` URLs when governed action events occur. The governance agent maintains all state and correlates requests by `plan_id` + `governance_context` -- the seller does not need to track governance history or chain IDs across calls. + +### Both checks must pass + +Every governed action **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). If either returns `denied`, the action **MUST NOT** proceed. When both return `approved` with non-empty `conditions`, the applied set is the **union** of both responses' conditions. Contradictory conditions (one side requires X, the other requires NOT X) resolve to `denied` with a structured `finding` rather than silent precedence. + +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.0.13/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 verify that the Bearer token matches a registered credential for the account associated with the `plan_id`, and MUST reject requests with unrecognized or mismatched credentials. + +### 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 receives `approved`, `denied`, or `conditions` — it does not need to know what mode produced that decision. + +This means: +- A governance agent in audit mode internally always returns `approved` with findings attached +- A governance agent in advisory mode internally may return `denied` but the organization treats it as non-blocking +- 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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/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: + +- **`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.0.13/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.0.13/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.0.13/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.0.13/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 + +`plan_hash` changes across re-syncs reveal that the plan mutated, even without revealing *what* mutated. Parties retaining tokens long-term (sellers forwarding `governance_context` verbatim, auditors, regulators) can infer plan-mutation cadence from the sequence of distinct hashes they observe for a given `plan_id`. For most deployments this is acceptable or desired — mutation-cadence is part of the audit signal. Sensitive governance deployments where mutation frequency itself is commercially or operationally sensitive (e.g., a buyer does not want a seller to infer re-planning cadence across its campaign portfolio) SHOULD factor this into token-retention policy: shorter seller-side retention windows for `governance_context`, or periodic rotation of the plan's `jti` namespace to break cross-token linkability. + +#### 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 requests by `plan_id` + `governance_context`. The seller does not chain check IDs or track conversation history -- it posts what happened, and the governance agent looks up context. + +### 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. The seller calls `check_governance` with `phase: "purchase"`, the `plan_id`, 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. +6. If `conditions`, the seller adjusts its planned delivery to meet the conditions and re-verifies, or rejects. + +```mermaid +sequenceDiagram + participant O as Orchestrator + participant S as Seller + participant A as Governance Agent + + O->>S: create_media_buy(plan_id, packages, ...) + 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 by `plan_id` + `governance_context` and evaluates the changes against the plan. +4. If `approved`, the seller confirms the update. +5. If `denied` or `conditions`, the seller follows the same flow as purchase phase. + +```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. +5. If `conditions`, the seller adjusts delivery (e.g., slow pacing, shift geo targeting) and re-verifies 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: conditions (slow pacing) + S->>S: Adjust delivery + S->>A: check_governance(phase: delivery, updated metrics) + A-->>S: approved (next_check: +3d) +``` + +The governance agent controls the reporting cadence through `next_check`. It can tighten the cadence (shorter intervals) when it detects drift or conditions, and relax it (longer intervals) 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": { + "plan_id": "plan_q1_2026_launch", + "caller": "https://seller.example.com", + "governance_context": "gc_from_buyer_envelope", + "phase": "purchase", + "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"] + } + } +} +``` + +**Authorized (purchase with delivery opt-in):** + +```json +{ + "check_id": "auth_001", + "status": "approved", + "plan_id": "plan_q1_2026_launch", + "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", + "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", + "status": "denied", + "plan_id": "plan_q1_2026_launch", + "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", + "status": "approved", + "plan_id": "plan_q1_2026_launch", + "explanation": "Delivery on track. Week 1 spend: $12,500 of $150,000 (8.3%). Pacing is on target for 13-week flight.", + "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. + +### Multi-agent composition + +Accounts MAY register multiple governance agents via [`sync_governance`](/dist/docs/3.0.13/accounts/tasks/sync_governance), each responsible for different validation categories. For example, one agent handles budget authority and strategic alignment while another handles regulatory compliance and brand policy. + +When multiple governance agents are registered, the seller MUST call each agent whose `categories` overlap with the action being validated. All applicable agents must approve for the action to proceed (unanimous approval). If any agent returns `denied`, the action is blocked. + +For accounts with a single governance agent, pass a one-element array. + +### 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** | Self-attested | Independently verified | +| **Budget tracking** | Yes (plan state) | Governance agent maintains state | +| **Ongoing monitoring** | Via `report_plan_outcome` | Via `delivery` phase | + +The `delivery` phase gives the governance agent real-time visibility into what sellers are actually delivering. The buyer-side `report_plan_outcome` depends on the orchestrator reporting honestly; the `delivery` phase gets reports directly from the seller. + +The buyer-side and seller-side governance checks MAY be handled by the same agent or by separate agents. The protocol does not prescribe the relationship -- only that the seller can call the `governance_agents` URLs registered on the account. + +## 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] + O -->|conditions| Q[Seller adjusts or rejects] + 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 delivery] + AB -->|conditions| AD[Seller adjusts delivery] + AD --> Z +``` + +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.0.13/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 + +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.0.13/governance/campaign/tasks/check_governance.mdx b/dist/docs/3.0.13/governance/campaign/tasks/check_governance.mdx new file mode 100644 index 0000000000..e073bfd62c --- /dev/null +++ b/dist/docs/3.0.13/governance/campaign/tasks/check_governance.mdx @@ -0,0 +1,483 @@ +--- +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`, `check_governance`, `report_plan_outcome`, `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.0.13/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. Callers do not chain check IDs or track conversation history -- they post the action, and the governance agent correlates by `plan_id`. On subsequent lifecycle checks, callers include `governance_context` from the prior response for continuity. + +## 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`) +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` + +### Execution checks (seller) + +The seller calls `check_governance` with `governance_context` and `planned_delivery` when processing a request on an account that has `governance_agents` (set via [`sync_governance`](/dist/docs/3.0.13/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.0.13/building/by-layer/L1/security#adcp-jws-profile)); the seller's own execution check produces the `purchase`/`modification`/`delivery`-phase tokens bound to the assigned `media_buy_id` for the rest of the lifecycle. + +``` +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, + planId: request.plan_id, + phase: "intent", # buyer produces intent tokens + mediaBuyId: null, # intent tokens have no media_buy_id + }) # throws on any of 15 checks failing + call check_governance(planned_delivery, token) # seller-side execution check — produces purchase-phase token + proceed only if governance_agent status = approved +``` + +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` | 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 spend-commit request (`create_media_buy`, `update_media_buy`, `acquire_rights`, `update_rights`, `activate_signal`, `build_creative`) — full stop. There is no dollar floor, no anomaly threshold, and no cold-start exemption; every commit goes through the governance agent. The buyer-side call is an intent check (`tool` + `payload`), which produces an intent-phase `governance_context` token the buyer attaches to its request to the seller. 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. + +Seller-side enforcement makes the MUST real through the [signed `governance_context` token](/dist/docs/3.0.13/building/by-layer/L1/security#signed-governance-context): a seller receiving a spend-commit for a plan with a configured governance agent MUST require a valid, in-date intent-phase token (`phase: "intent"`, `sub` equal to the plan_id, `aud` addressed to this seller), and MUST reject with `PERMISSION_DENIED` otherwise. The seller then performs its own execution check — calling `check_governance` with `planned_delivery` and the received `governance_context` — which produces the `purchase`-phase token bound to the newly assigned `media_buy_id` for the rest of the lifecycle. A buyer that skips the intent check cannot produce a valid intent token, so the commit is rejected before the seller ever reaches its execution check. + +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.0.13/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` | Approved if caller accepts adjustments. | Apply conditions, then re-call `check_governance` with adjusted parameters. | + +### Expiration + +`expires_at` is present when the status is `approved` or `conditions`. A lapsed approval is no approval -- the caller must re-call `check_governance` before proceeding. + +### Conditions + +When the status is `conditions`, the caller MUST re-call `check_governance` with adjusted parameters before proceeding. Conditions with a `required_value` are machine-actionable -- the caller can programmatically apply the value. Conditions without a `required_value` are advisory -- the caller should interpret the `reason` and adjust accordingly. + +Governance agents SHOULD return `denied` (not `conditions`) after 3 unsuccessful re-calls for the same action. This prevents infinite negotiation loops, particularly for seller-side checks where the seller has no visibility into the campaign plan. + +### 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.0.13/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`](./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", + "tool": "create_media_buy", + "payload": { + "product_id": "premium_video_300k", + "budget": 150000, + "currency": "USD", + "geo": { "countries": ["US"] }, + "channels": ["olv"], + "flight": { + "start": "2026-03-15T00:00:00Z", + "end": "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.0.13/building/by-layer/L1/security#signed-governance-context) so sellers can verify authenticity, authorization scope, and freshness (the 15-step seller checklist). The token also carries a required `plan_hash` audit-layer claim — see [Plan binding and audit](/dist/docs/3.0.13/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", + "purchase_type": "rights_license", + "tool": "acquire_rights", + "payload": { + "brand": { "domain": "acmeoutdoor.com" }, + "right_type": "image_generation", + "pricing_option_id": "standard_monthly", + "campaign": { + "countries": ["US"], + "start_date": "2026-04-01", + "end_date": "2026-06-30" + } + } + } +} +``` + +### Execution check -- purchase + +```json +{ + "tool": "check_governance", + "arguments": { + "plan_id": "plan_q1_2026_launch", + "caller": "https://seller.example.com", + "governance_context": "gc_from_buyer_envelope", + "phase": "purchase", + "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"] + } + } +} +``` + +### Execution check -- modification + +```json +{ + "tool": "check_governance", + "arguments": { + "plan_id": "plan_q1_2026_launch", + "caller": "https://seller.example.com", + "governance_context": "gc_from_buyer_envelope", + "phase": "modification", + "modification_summary": "Budget increase from $150,000 to $200,000 and flight extension to 2026-07-15.", + "planned_delivery": { + "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": { + "plan_id": "plan_q1_2026_launch", + "caller": "https://seller.example.com", + "governance_context": "gc_from_buyer_envelope", + "phase": "delivery", + "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"] + }, + "delivery_metrics": { + "reporting_period": { + "start": "2026-03-15T00:00:00Z", + "end": "2026-03-22T00:00:00Z" + }, + "spend": 12500, + "cumulative_spend": 12500, + "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", + "status": "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" +} +``` + +The orchestrator proceeds to send the `create_media_buy` to the seller before `expires_at`. + +### approved (execution check -- purchase with delivery opt-in) + +```json +{ + "check_id": "chk_002", + "status": "approved", + "plan_id": "plan_q1_2026_launch", + "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", + "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", + "status": "approved", + "plan_id": "plan_q1_2026_launch", + "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.", + "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", + "status": "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. + +### denied (execution check -- delivery geo drift) + +```json +{ + "check_id": "chk_005", + "status": "denied", + "plan_id": "plan_q1_2026_launch", + "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. + +### conditions (execution check -- purchase) + +```json +{ + "check_id": "chk_006", + "status": "conditions", + "plan_id": "plan_q1_2026_launch", + "explanation": "Budget approved but frequency cap must be applied per brand policy.", + "conditions": [ + { + "field": "planned_delivery.frequency_cap", + "required_value": { "max_impressions": 5, "per": "user", "window": { "interval": 1, "unit": "days" } }, + "reason": "Brand policy requires daily frequency cap of 5 or fewer impressions per user." + } + ], + "expires_at": "2026-03-15T01:00:00Z" +} +``` + +The seller MUST adjust its planned delivery, then re-call `check_governance` with the updated parameters before proceeding. + +### conditions (execution check -- delivery overpacing) + +```json +{ + "check_id": "chk_007", + "status": "conditions", + "plan_id": "plan_q1_2026_launch", + "explanation": "Delivery is pacing 40% ahead of schedule. Cumulative spend of $42,000 after 2 weeks exceeds expected $23,000 for this point in the flight.", + "conditions": [ + { + "field": "pacing", + "reason": "Reduce daily spend rate to align with the planned flight duration. At current pace, budget will be exhausted by week 7 of 13." + } + ], + "next_check": "2026-03-31T00:00:00Z" +} +``` + +The seller MUST adjust pacing and re-call `check_governance` immediately. The `next_check` is set closer than normal so the governance agent can verify the correction. + +## Fields + +### Request + +| Field | Type | Required | Description | +|-------|------|----------|-------------| +| `plan_id` | string | Yes | Campaign governance plan identifier. | +| `caller` | string (URI) | Yes | URL of the agent making the request. | +| `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`. | +| `tool` | string | Intent | The AdCP tool being checked. Present on intent checks (orchestrator). The governance agent uses the presence of `tool` + `payload` to identify an intent check. | +| `payload` | object | Intent | Full tool arguments as they would be sent to the seller. Present on intent checks. | +| `governance_context` | string | No | Governance context token from a prior `check_governance` response. Include on subsequent lifecycle checks so the governance agent can maintain continuity. On execution checks, the governance agent uses `governance_context` + `planned_delivery` to identify the check. This is the sole lifecycle correlator across all purchase types. See [Signed Governance Context](/dist/docs/3.0.13/building/by-layer/L1/security#signed-governance-context) for the JWS profile and seller verification; see [Plan binding and audit](/dist/docs/3.0.13/governance/campaign/specification#plan-binding-and-audit) for the `plan_hash` audit-layer claim. | +| `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. See [planned delivery](/dist/docs/3.0.13/governance/campaign/specification#integration-with-create_media_buy). | +| `delivery_metrics` | object | Delivery | Actual delivery performance data. Required when `phase` is `delivery`. | +| `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. | + +### 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` to link outcomes. | +| `status` | enum | `approved`, `denied`, or `conditions`. | +| `plan_id` | string | Echoed from request. | +| `explanation` | string | Human-readable explanation of the decision. | +| `findings` | array | Per-category issues found. Present when status 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), and `uncertainty_reason`. | +| `conditions` | array | Present when status is `conditions`. Adjustments the caller must make before re-calling. | +| `categories_evaluated` | string[] | Governance categories evaluated during this check (e.g., `budget_authority`, `geo_compliance`, `channel_compliance`). Useful for verifying which validations ran. | +| `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 when status is `approved` or `conditions`. The caller must act before this time or re-call. A lapsed approval is no approval. | +| `next_check` | string | When the seller should next call `check_governance` with delivery metrics. Present when the governance agent expects ongoing delivery reporting. | +| `governance_context` | string | Governance context token for this governed action. Present when status is `approved` or `conditions`. Attach to the protocol envelope and include on all subsequent governance calls. This is the sole lifecycle correlator for all purchase types. See [Signed Governance Context](/dist/docs/3.0.13/building/by-layer/L1/security#signed-governance-context) for the JWS profile and seller verification; see [Plan binding and audit](/dist/docs/3.0.13/governance/campaign/specification#plan-binding-and-audit) for the `plan_hash` audit-layer claim. Sellers that do not verify MUST still persist and forward the token verbatim. | +| `authority_remaining` | object | Buyer-side plan budget authority remaining after this check — not the seller's allocated budget. Present when status is `approved` or `conditions` for execution checks. Contains `budget_remaining` (number), `currency` (string), and `budget_used_pct` (number, 0-100). Orchestrators use this to track plan-level spend against the media plan's total authority. | + +## Error codes + +| Code | Recovery | Description | +|------|----------|-------------| +| `PLAN_NOT_FOUND` | correctable | No plan with this ID. The buyer may not have synced the plan yet. | +| `AMBIGUOUS_CHECK_TYPE` | correctable | Request contains both intent fields (`tool` + `payload`) and execution fields (`governance_context` + `planned_delivery`). Send one set or the other. | +| `CAMPAIGN_SUSPENDED` | correctable | Campaign governance is suspended pending human review. | +| `SELLER_NOT_RECOGNIZED` | correctable | The caller URL is not in the plan's `approved_sellers` list. | + +## Related tasks + +- [`sync_plans`](./sync_plans) -- The plan this governance check validates against +- [`report_plan_outcome`](./report_plan_outcome) -- Report what happened after the action was confirmed +- [`get_plan_audit_logs`](./get_plan_audit_logs) -- View plan state and audit trail diff --git a/dist/docs/3.0.13/governance/campaign/tasks/get_plan_audit_logs.mdx b/dist/docs/3.0.13/governance/campaign/tasks/get_plan_audit_logs.mdx new file mode 100644 index 0000000000..45203ced6a --- /dev/null +++ b/dist/docs/3.0.13/governance/campaign/tasks/get_plan_audit_logs.mdx @@ -0,0 +1,281 @@ +--- +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`, `check_governance`, `report_plan_outcome`, `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.0.13/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. + +## Request + +```json +{ + "tool": "get_plan_audit_logs", + "arguments": { + "plan_ids": ["plan_q1_2026_launch"], + "include_entries": true + } +} +``` + +Results are grouped by `governance_context` within each plan. Each governed action (media buy, rights license, signal activation, creative service) appears under its `governance_context`. + +**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, + "committed": 425000, + "remaining": 75000, + "utilization_pct": 85 + }, + "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, + "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": 15, + "outcomes_reported": 12, + "statuses": { + "approved": 12, + "denied": 1, + "conditions": 1, + "human_reviewed": 1 // supplementary: subset of approved + denied that went through internal human review + }, + "findings_count": 2, + "human_reviews": [ + { + "check_id": "chk_esc_001", + "reason": "Budget reallocation exceeds threshold", + "resolution": "approved_by_human", + "resolved_at": "2026-03-16T09:30:00Z" + } + ], + "drift_metrics": { + "human_review_rate": 0.07, + "human_review_rate_trend": "stable", + "auto_approval_rate": 0.80, + "human_override_rate": 0.02, + "mean_confidence": 0.88, + "thresholds": { + "human_review_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", + "status": "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", + "status": "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 + }, + { + "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", + "outcome_status": "accepted" + } + ] + } + ] +} +``` + +## 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.committed` | number | Total budget committed from confirmed outcomes. | +| `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-governed-action breakdown, grouped by `governance_context`. | +| `plans[].governed_actions[].governance_context` | string | Opaque governance context identifying this governed action. | +| `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 | Budget committed for this governed action. | +| `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.statuses` | object | Count of each governance check status (`approved`, `denied`, `conditions`). Also includes `human_reviewed` as a supplementary count — a subset of `approved` + `denied` that went through internal human review before resolving. | +| `plans[].summary.findings_count` | number | Total findings across all checks and outcomes. | +| `plans[].summary.human_reviews` | array | Checks that required internal human review and their resolutions. | +| `plans[].summary.human_reviews[].check_id` | string | The governance check that required human review. | +| `plans[].summary.human_reviews[].reason` | string | Why human review was required. | +| `plans[].summary.human_reviews[].resolution` | string | How it was resolved (e.g., `approved_by_human`, `rejected_by_human`). | +| `plans[].summary.human_reviews[].resolved_at` | string | ISO 8601 resolution timestamp. | +| `plans[].summary.drift_metrics` | object | Aggregate governance metrics for detecting oversight drift. See [specification](/dist/docs/3.0.13/governance/campaign/specification#drift-detection). | +| `plans[].summary.drift_metrics.human_review_rate` | number | Fraction of checks that required internal human review (0-1). | +| `plans[].summary.drift_metrics.human_review_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 human reviews where the human overrode the agent (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.human_review_rate_max` | number | Maximum acceptable human review rate. | +| `plans[].summary.drift_metrics.thresholds.human_review_rate_min` | number | Minimum acceptable human review 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` or `outcome`. | +| `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`). | +| `plans[].entries[].findings` | array | Findings from this check, including category, severity, policy ID, explanation, and confidence. | +| `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.0.13/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[].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 | Budget committed (present for `completed` outcome entries). | +| `plans[].entries[].outcome_status` | string | Outcome status (present for `outcome` entries). | + +## 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` response — the error body MUST NOT distinguish "unauthorized" from "not found" or name the offending ID. See [Agent and Account Isolation](/dist/docs/3.0.13/building/by-layer/L1/security#agent-and-account-isolation) for the pattern and existence-leak guardrails. + +## Error codes + +| Code | Recovery | Description | +|------|----------|-------------| +| `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`](./sync_plans) -- Push or update plans +- [`check_governance`](./check_governance) -- Validate actions against the plan +- [`report_plan_outcome`](./report_plan_outcome) -- Report outcomes to update plan state diff --git a/dist/docs/3.0.13/governance/campaign/tasks/index.mdx b/dist/docs/3.0.13/governance/campaign/tasks/index.mdx new file mode 100644 index 0000000000..410c2d07c1 --- /dev/null +++ b/dist/docs/3.0.13/governance/campaign/tasks/index.mdx @@ -0,0 +1,22 @@ +--- +title: Task reference +description: "Task reference for AdCP campaign governance — sync_plans, check_governance, report_plan_outcome, and get_plan_audit_logs." +"og:title": "AdCP — Campaign governance task reference" +sidebarTitle: Overview +--- + + +# Campaign Governance tasks + +Campaign Governance has four tasks. + +| Task | Direction | Description | +|------|-----------|-------------| +| [`sync_plans`](./sync_plans) | Orchestrator → Gov | Push campaign plans with budget, channels, flight dates, and authorized markets | +| [`check_governance`](./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`](./report_plan_outcome) | Orchestrator → Gov | Post-action report: "here's what happened." Gov updates state and returns any findings | +| [`get_plan_audit_logs`](./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 — both the orchestrator and the seller call it to validate actions against the plan. `report_plan_outcome` closes the loop after execution. `get_plan_audit_logs` is read-only, for monitoring and reporting. + +**Setup prerequisite:** [`sync_governance`](/dist/docs/3.0.13/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.0.13/governance/campaign/tasks/report_plan_outcome.mdx b/dist/docs/3.0.13/governance/campaign/tasks/report_plan_outcome.mdx new file mode 100644 index 0000000000..af96ac6bf2 --- /dev/null +++ b/dist/docs/3.0.13/governance/campaign/tasks/report_plan_outcome.mdx @@ -0,0 +1,242 @@ +--- +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`, `check_governance`, `report_plan_outcome`, `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.0.13/reference/experimental-status) for the full contract. + + +Report the outcome of an action to the governance agent. Called by the orchestrator (buyer-side agent) after a seller responds. This is the "after" half of the governance loop -- it tells the governance agent what actually happened so it can update its state and flag any issues. + +Sellers do not call this task. They report delivery data via [`check_governance`](./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", + "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", + "status": "accepted", + "committed_budget": 150000, + "plan_summary": { + "total_committed": 425000, + "budget_remaining": 75000 + } +} +``` + +The governance agent updates its state: budget is now committed based on the seller's confirmed amount, and the media buy is tracked. + +### Response (discrepancy found) + +In this alternative scenario for the same action, the seller modified the request: + +```json +{ + "outcome_id": "out_002", + "status": "findings", + "committed_budget": 120000, + "findings": [ + { + "category_id": "seller_verification", + "severity": "warning", + "explanation": "Seller reduced budget from $150,000 to $120,000 and added geo targeting for CA that was not requested.", + "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": 395000, + "budget_remaining": 105000 + } +} +``` + +The governance agent still commits the seller's actual amount (\$120K, not the requested \$150K) but returns findings for the orchestrator to act on. + +## Delivery data (periodic reporting) + +```json +{ + "tool": "report_plan_outcome", + "arguments": { + "plan_id": "plan_q1_2026_launch", + "governance_context": "gc_mb_seller_456", + "outcome": "delivery", + "delivery": { + "reporting_period": { + "start": "2026-03-15T00:00:00Z", + "end": "2026-03-22T00:00:00Z" + }, + "impressions": 1250000, + "spend": 18750, + "cpm": 15.00, + "viewability_rate": 0.72, + "completion_rate": 0.65 + } + } +} +``` + +### Response (on track) + +```json +{ + "outcome_id": "out_del_001", + "status": "accepted" +} +``` + +### Response (anomaly detected) + +```json +{ + "outcome_id": "out_del_002", + "status": "findings", + "findings": [ + { + "category_id": "budget_authority", + "severity": "warning", + "explanation": "Spend is pacing 62% above plan. At current rate, budget will be exhausted 5 weeks early.", + "details": { + "planned_weekly_spend": 11538, + "actual_weekly_spend": 18750, + "overpace_pct": 62, + "projected_exhaustion": "2026-05-03T00:00:00Z" + } + } + ] +} +``` + +## 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", + "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", + "status": "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 | The `check_id` from `check_governance`. Links the outcome to the governance check that authorized it. Required for `completed` and `failed` outcomes. | +| `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 | Total budget committed across all confirmed packages. When present, the governance agent uses this directly instead of summing individual package budgets. | +| `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 | Delivery metrics. Required when outcome is `delivery`. The `governance_context` (already required on all governance calls) is the sole lifecycle correlator. | +| `delivery.reporting_period` | object | No | Start and end timestamps for the reporting window. | +| `delivery.impressions` | integer | No | Impressions delivered in the period. | +| `delivery.spend` | number | No | Spend in the period. | +| `delivery.cpm` | number | No | Effective CPM for the period. | +| `delivery.viewability_rate` | number | No | Viewability rate (0-1). | +| `delivery.completion_rate` | number | No | Video completion rate (0-1). | +| `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. | + +### Response + +| Field | Type | Description | +|-------|------|-------------| +| `outcome_id` | string | Unique identifier for this outcome record. | +| `status` | enum | `accepted` (state updated, no issues) or `findings` (issues detected). | +| `committed_budget` | number | Budget committed from this outcome (present for `completed`/`failed` outcomes). | +| `findings` | array | Present only when status 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 | +|------|----------|-------------| +| `PLAN_NOT_FOUND` | correctable | No plan with this ID, or the plan is not accessible to the calling account. | +| `REFERENCE_NOT_FOUND` | correctable | `check_id` does not resolve to a governance check, or `governance_context` does not resolve to a campaign in the plan. `error.field` MUST identify which typed parameter failed to resolve. | +| `CAMPAIGN_SUSPENDED` | correctable | Plan is suspended pending human review. Outcome reporting is blocked until the escalation is resolved. | + +## Related tasks + +- [`check_governance`](./check_governance) -- The governance check that authorized the action +- [`sync_plans`](./sync_plans) -- Push or update the plan +- [`get_plan_audit_logs`](./get_plan_audit_logs) -- View plan state and audit trail diff --git a/dist/docs/3.0.13/governance/campaign/tasks/sync_plans.mdx b/dist/docs/3.0.13/governance/campaign/tasks/sync_plans.mdx new file mode 100644 index 0000000000..8d412aa4b8 --- /dev/null +++ b/dist/docs/3.0.13/governance/campaign/tasks/sync_plans.mdx @@ -0,0 +1,238 @@ +--- +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`, `report_plan_outcome`, `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.0.13/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 versions follow a separate pinned-at-buy rule — see [content standards versioning](/dist/docs/3.0.13/governance/content-standards/index#versioning-and-mid-flight-amendments). + +Multiple campaigns (identified by `governance_context` in `check_governance` and `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` -- 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.0.13/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.0.13/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.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.0.13/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.0.13/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.0.13/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.0.13/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 active for this plan. Depends on the governance agent's declared capabilities. | +| `plans[].categories[].category_id` | string | Validation category identifier. | +| `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 catalog: + +```json +{ + "type": "signal", + "catalog_url": "https://signals.dataprovider.com/catalog.json", + "signal_id": "likely_ev_buyers", + "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`. 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.0.13/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_PLAN` | correctable | Plan is missing required fields or has invalid values. | +| `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. | +| `BUDGET_BELOW_COMMITTED` | correctable | Cannot reduce budget below the amount already committed (on plan update). | + +## Related tasks + +- [`check_governance`](./check_governance) -- Validate actions against this plan +- [`report_plan_outcome`](./report_plan_outcome) -- Report outcomes back to update plan state +- [`get_plan_audit_logs`](./get_plan_audit_logs) -- View plan state and audit trail diff --git a/dist/docs/3.0.13/governance/collection/index.mdx b/dist/docs/3.0.13/governance/collection/index.mdx new file mode 100644 index 0000000000..0508ed2a42 --- /dev/null +++ b/dist/docs/3.0.13/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.0.13/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.0.13/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.0.13/governance/collection/tasks/collection_lists#create_collection_list)**: Create a new collection list on a governance agent +- **[get_collection_list](/dist/docs/3.0.13/governance/collection/tasks/collection_lists#get_collection_list)**: Retrieve resolved collections (with caching guidance) +- **[update_collection_list](/dist/docs/3.0.13/governance/collection/tasks/collection_lists#update_collection_list)**: Modify filters or base collections +- **[list_collection_lists](/dist/docs/3.0.13/governance/collection/tasks/collection_lists#list_collection_lists)**: List collection lists for an account +- **[delete_collection_list](/dist/docs/3.0.13/governance/collection/tasks/collection_lists#delete_collection_list)**: Remove a collection list diff --git a/dist/docs/3.0.13/governance/collection/tasks/collection_lists.mdx b/dist/docs/3.0.13/governance/collection/tasks/collection_lists.mdx new file mode 100644 index 0000000000..804cc05f21 --- /dev/null +++ b/dist/docs/3.0.13/governance/collection/tasks/collection_lists.mdx @@ -0,0 +1,345 @@ +--- +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.0.13/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` | Create a new collection list | Seconds | +| `get_collection_list` | Fetch list with resolved collections | Seconds (cached) | +| `update_collection_list` | Modify base collections or filters | Seconds | +| `list_collection_lists` | List collection lists for an account | Seconds | +| `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.0.13/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.0.13/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.0.13/collection/create-collection-list-response.json", + "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.0.13/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.0.13/collection/get-collection-list-response.json", + "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.0.13/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.0.13/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.0.13/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` 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.0.13/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.0.13/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` MUST NOT echo the presented token. + +`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` is SSRF-equivalent to any other buyer-provided callback URL. Apply the canonical [Webhook URL validation (SSRF)](/dist/docs/3.0.13/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.0.13/building/by-layer/L1/security#webhook-security). By default, the RFC 9421 [webhook callbacks profile](/dist/docs/3.0.13/building/by-layer/L1/security#webhook-callbacks) applies: the governance agent signs with its `adcp_use: "webhook-signing"` key published at the `jwks_uri` of its `agents[]` entry in its own brand.json; 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.0.13/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.0.13/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.0.13/governance/content-standards/artifacts.mdx b/dist/docs/3.0.13/governance/content-standards/artifacts.mdx new file mode 100644 index 0000000000..b0e1a3ae94 --- /dev/null +++ b/dist/docs/3.0.13/governance/content-standards/artifacts.mdx @@ -0,0 +1,337 @@ +--- +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.0.13/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_id` | Reference to format registry (same as creative formats) | +| `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, paywalled content. The artifact schema supports authenticated access. + +### Pre-Configuration (Recommended) + +For ongoing partnerships, configure access once during onboarding rather than per-request: + +1. **Service account sharing** - Grant the verification agent access to your cloud storage +2. **OAuth client credentials** - Set up machine-to-machine authentication +3. **API key exchange** - Share long-lived API keys during setup + +This happens during the activation phase when the seller first receives content standards from a buyer. + +### Per-Asset Authentication + +When pre-configuration isn't possible, include access credentials with individual assets: + +```json +{ + "type": "image", + "url": "https://cdn.openai.com/secured/img_abc123.png", + "access": { + "method": "bearer_token", + "token": "eyJhbGciOiJIUzI1NiIs..." + } +} +``` + +**Note on token size**: For artifacts with many assets, per-asset tokens can significantly increase payload size. Consider: + +1. **Pre-configured access** - Set up service account access once during onboarding +2. **Shared token reference** - Define tokens at the artifact level and reference by ID +3. **Signed URLs** - Use pre-signed URLs where the URL itself is the credential + +The `url` field is the access URL - it may differ from the artifact's canonical/published URL. For example, a published article at `https://news.example.com/article/123` might have assets served from `https://cdn.example.com/secured/...`. + +### Access Methods + +| Method | Use Case | +|--------|----------| +| `bearer_token` | OAuth2 bearer token in Authorization header | +| `service_account` | GCP/AWS service account credentials | +| `signed_url` | Pre-signed URL with embedded credentials (URL itself is the credential) | + +### Service Account Setup + +For GCP: + +```json +{ + "access": { + "method": "service_account", + "provider": "gcp", + "credentials": { + "type": "service_account", + "project_id": "my-project", + "private_key_id": "...", + "private_key": "-----BEGIN PRIVATE KEY-----\n...", + "client_email": "verification-agent@my-project.iam.gserviceaccount.com" + } + } +} +``` + +For AWS: + +```json +{ + "access": { + "method": "service_account", + "provider": "aws", + "credentials": { + "access_key_id": "AKIAIOSFODNN7EXAMPLE", + "secret_access_key": "...", + "region": "us-east-1" + } + } +} +``` + +### Pre-Signed URLs + +For one-off access without sharing credentials: + +```json +{ + "type": "video", + "url": "https://storage.googleapis.com/bucket/video.mp4?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=...&X-Goog-Signature=...", + "access": { + "method": "signed_url" + } +} +``` + +The URL itself contains the credentials - no additional authentication needed. + +## 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.0.13/governance/content-standards/implementation-guide.mdx b/dist/docs/3.0.13/governance/content-standards/implementation-guide.mdx new file mode 100644 index 0000000000..250b1af303 --- /dev/null +++ b/dist/docs/3.0.13/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.0.13/governance/content-standards/index.mdx b/dist/docs/3.0.13/governance/content-standards/index.mdx new file mode 100644 index 0000000000..080dd9585a --- /dev/null +++ b/dist/docs/3.0.13/governance/content-standards/index.mdx @@ -0,0 +1,396 @@ +--- +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.0.13/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, and natural-language policy text. Same shape as registry-published policies, so bespoke buyer rules and shared registry policies are interchangeable. Validation findings reference `policy_id` to identify which policy triggered: + +```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. + +## Versioning and mid-flight amendments + +Content standards carry a `version` field and MAY be amended while campaigns are running. `update_content_standards` creates a new version for audit purposes rather than mutating the previous one. + +AdCP 3.0 default: **pinned at buy time.** Unless otherwise declared, a media buy references the version of the standards that was in effect when its `create_media_buy` was approved, and subsequent amendments do **not** retroactively apply to in-flight delivery on that buy. This is the conservative default because it prevents a mid-campaign amendment from silently re-characterizing already-approved delivery. + +Governance agents MAY mark an individual policy as continuously re-evaluated by declaring `evaluation_mode: continuous` on the policy entry (default is `pinned`). Use `continuous` for policies that must track regulatory changes without re-approval — emerging regulatory disclosures, new legal prohibitions, accessibility requirements. Use the default `pinned` for brand-voice, taxonomy, and commercial preferences where stability across a flight is the desired behavior. + +When a policy is `continuous`, a finding generated against a newer version **MUST** carry both the evaluation-time version and the pinned-at-buy version on the finding, so downstream audit can reconstruct which version applied. The governance agent **MUST** emit the finding to the buying agent via the media buy's `push_notification_config` when one is configured, and the finding **MUST** be retrievable through the buy's standard status surface regardless. Delivery-adjustment decisions remain with the buyer. When a policy is `pinned`, the pinned version applies for the life of the buy; the governance agent **MAY** still surface advisory findings based on later versions but **MUST NOT** mark them as enforcement failures against the pinned buy. + +AdCP 3.0 does not define a mid-flight re-pin mechanism. A buyer that wants to adopt a newer standards version across all pinned policies replaces the buy — cancel the existing buy via [`update_media_buy`](/dist/docs/3.0.13/media-buy/task-reference/update_media_buy) and issue a new [`create_media_buy`](/dist/docs/3.0.13/media-buy/task-reference/create_media_buy) whose governance block references the current version. This is a heavyweight path: a new approval is required, pacing history resets, and in-flight delivery may have makegood implications. It is deliberately the only 3.0 mechanism; `standards_version` on `update_media_buy` and partial re-pin are out of scope for 3.0. + +## 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.0.13/brand-protocol/brand-json) - Brand identity that can link to standards agents diff --git a/dist/docs/3.0.13/governance/content-standards/tasks/calibrate_content.mdx b/dist/docs/3.0.13/governance/content-standards/tasks/calibrate_content.mdx new file mode 100644 index 0000000000..52a988215f --- /dev/null +++ b/dist/docs/3.0.13/governance/content-standards/tasks/calibrate_content.mdx @@ -0,0 +1,232 @@ +--- +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.0.13/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.0.13/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.0.13/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.0.13/content-standards/calibrate-content-response.json) + +### Passing Response + +```json +{ + "$schema": "/schemas/3.0.13/content-standards/calibrate-content-response.json", + "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.0.13/content-standards/calibrate-content-response.json", + "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 back-and-forth dialogue using the protocol's conversation management. The seller sends content, the verification agent responds with an evaluation and explanation, and the seller can respond with questions or try different content - all within the same conversation context. + +### A2A Example + +```javascript +// Seller sends artifact to evaluate +const response1 = await a2a.send({ + message: { + parts: [{ + kind: "data", + data: { + skill: "calibrate_content", + parameters: { + standards_id: "nike_brand_safety", + artifact: { + property_id: { type: "domain", value: "reddit.com" }, + artifact_id: "r_news_politics_123", + assets: [ + { type: "text", role: "title", content: "Political News Article" } + ] + } + } + } + }] + } +}); +// Response: verdict=fail with feature breakdown + +// Seller asks follow-up question about the decision +const response2 = await a2a.send({ + contextId: response1.contextId, + message: { + parts: [{ + kind: "text", + text: "This is factual news, not opinion. Should balanced journalism be excluded?" + }] + } +}); +// Verification agent clarifies that brand policy excludes ALL political content + +// Seller tries different artifact +const response3 = await a2a.send({ + contextId: response1.contextId, + message: { + parts: [{ + kind: "data", + data: { + skill: "calibrate_content", + parameters: { + standards_id: "nike_brand_safety", + artifact: { + property_id: { type: "domain", value: "reddit.com" }, + 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_id: { type: "domain", value: "reddit.com" }, + 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_id: { type: "domain", value: "reddit.com" }, + 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_id: { type: "domain", value: "reddit.com" }, + 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.0.13/governance/content-standards/tasks/create_content_standards.mdx b/dist/docs/3.0.13/governance/content-standards/tasks/create_content_standards.mdx new file mode 100644 index 0000000000..fc1dd59ae6 --- /dev/null +++ b/dist/docs/3.0.13/governance/content-standards/tasks/create_content_standards.mdx @@ -0,0 +1,126 @@ +--- +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.0.13/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.0.13/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.0.13/content-standards/create-content-standards-response.json) + +### Success Response + +```json +{ + "$schema": "/schemas/3.0.13/content-standards/create-content-standards-response.json", + "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.0.13/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.0.13/governance/content-standards/index#calibration) for the full workflow. + diff --git a/dist/docs/3.0.13/governance/content-standards/tasks/get_content_standards.mdx b/dist/docs/3.0.13/governance/content-standards/tasks/get_content_standards.mdx new file mode 100644 index 0000000000..e082dbc85d --- /dev/null +++ b/dist/docs/3.0.13/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.0.13/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.0.13/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.0.13/governance/content-standards/tasks/get_media_buy_artifacts.mdx b/dist/docs/3.0.13/governance/content-standards/tasks/get_media_buy_artifacts.mdx new file mode 100644 index 0000000000..e37577e99f --- /dev/null +++ b/dist/docs/3.0.13/governance/content-standards/tasks/get_media_buy_artifacts.mdx @@ -0,0 +1,285 @@ +--- +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` 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.0.13/content-standards/get-media-buy-artifacts-request.json) + +| Parameter | Type | Required | Description | +|-----------|------|----------|-------------| +| `account` | [account-ref](/dist/docs/3.0.13/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`. + + +### 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.0.13/content-standards/get-media-buy-artifacts-response.json) + +### Success Response + +```json +{ + "$schema": "/schemas/3.0.13/content-standards/get-media-buy-artifacts-response.json", + "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.0.13/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.0.13/governance/content-standards/tasks/list_content_standards.mdx b/dist/docs/3.0.13/governance/content-standards/tasks/list_content_standards.mdx new file mode 100644 index 0000000000..68a070820f --- /dev/null +++ b/dist/docs/3.0.13/governance/content-standards/tasks/list_content_standards.mdx @@ -0,0 +1,70 @@ +--- +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.0.13/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.0.13/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.0.13/content-standards/list-content-standards-response.json", + "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.0.13/governance/content-standards/tasks/update_content_standards.mdx b/dist/docs/3.0.13/governance/content-standards/tasks/update_content_standards.mdx new file mode 100644 index 0000000000..7aa0c44f3c --- /dev/null +++ b/dist/docs/3.0.13/governance/content-standards/tasks/update_content_standards.mdx @@ -0,0 +1,104 @@ +--- +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.0.13/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.0.13/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.0.13/content-standards/update-content-standards-response.json) + +### Success Response + +```json +{ + "$schema": "/schemas/3.0.13/content-standards/update-content-standards-response.json", + "success": true, + "standards_id": "nike_emea_safety" +} +``` + +### Error Response + +```json +{ + "$schema": "/schemas/3.0.13/content-standards/update-content-standards-response.json", + "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.0.13/governance/content-standards/tasks/validate_content_delivery.mdx b/dist/docs/3.0.13/governance/content-standards/tasks/validate_content_delivery.mdx new file mode 100644 index 0000000000..b5b513e5a2 --- /dev/null +++ b/dist/docs/3.0.13/governance/content-standards/tasks/validate_content_delivery.mdx @@ -0,0 +1,184 @@ +--- +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` 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.0.13/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.0.13/content-standards/validate-content-delivery-response.json) + +### Success Response + +```json +{ + "$schema": "/schemas/3.0.13/content-standards/validate-content-delivery-response.json", + "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.0.13/governance/creative/get_creative_features.mdx b/dist/docs/3.0.13/governance/creative/get_creative_features.mdx new file mode 100644 index 0000000000..bdc7f13950 --- /dev/null +++ b/dist/docs/3.0.13/governance/creative/get_creative_features.mdx @@ -0,0 +1,175 @@ +--- +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 + + +**AdCP 3.0 Proposal** - This task is under development for AdCP 3.0. + + +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.0.13/creative/get-creative-features-request.json", + "creative_manifest": { + "format_id": { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "html5-display-300x250" + }, + "assets": { + "creative_html": { + "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 | Creative manifest with `format_id` and `assets` | +| `feature_ids` | string[] | No | Filter to specific features. If omitted, evaluates all features the agent supports. | + +## Response + + +```json Security scanner (clean) +{ + "$schema": "/schemas/3.0.13/creative/get-creative-features-response.json", + "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.0.13/creative/get-creative-features-response.json", + "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.0.13/creative/get-creative-features-response.json", + "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.0.13/creative/get-creative-features-response.json", + "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" +} +``` + + +### 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. | + +### 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.0.13/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; +} +``` + +## 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.0.13/governance/creative/index.mdx b/dist/docs/3.0.13/governance/creative/index.mdx new file mode 100644 index 0000000000..94de44768a --- /dev/null +++ b/dist/docs/3.0.13/governance/creative/index.mdx @@ -0,0 +1,212 @@ +--- +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 +--- + + +**AdCP 3.0 Proposal** - This protocol is under development for AdCP 3.0. Feedback welcome via [GitHub Discussions](https://github.com/adcontextprotocol/adcp/discussions). + + +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.0.13/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_id": { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "html5-display-300x250" + }, + "assets": { + "creative_html": { + "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.0.13/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.0.13/creative/specification#pricing), [signals agents](/dist/docs/3.0.13/signals/specification), and [content standards](/dist/docs/3.0.13/governance/content-standards/index). + +Governance agents that charge MUST implement the [Accounts Protocol](/dist/docs/3.0.13/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.0.13/building/by-layer/L3/async-operations) handles this. diff --git a/dist/docs/3.0.13/governance/creative/provenance-verification.mdx b/dist/docs/3.0.13/governance/creative/provenance-verification.mdx new file mode 100644 index 0000000000..afaade7c09 --- /dev/null +++ b/dist/docs/3.0.13/governance/creative/provenance-verification.mdx @@ -0,0 +1,437 @@ +--- +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. + +## 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. + +## 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_id": { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "display_300x250" + }, + "assets": { + "banner_image": { + "url": "https://cdn.novabrands.example.com/hero.jpg", + "width": 300, + "height": 250 + }, + "headline": { + "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' +); + +// 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 in jurisdiction requiring disclosure +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**: Requires that AI-generated content be labeled in a machine-readable way. AdCP's `digital_source_type` field provides this classification at the asset level. The `disclosure.jurisdictions` array allows creatives to carry jurisdiction-specific label text. 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`). + +**California SB 942**: Requires disclosure when content is generated or substantially modified by AI. The `digital_source_type` and `human_oversight` fields together provide the information needed to determine whether a creative meets the disclosure threshold. The `disclosure.required` flag provides a direct signal for enforcement. + +**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 | +| 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 | +| Run AI detection | Call `get_creative_features` with an AI detection agent to verify provenance claims | +| Compare claims vs detection | Implement logic to compare `digital_source_type` against `ai_generated` feature results | +| Enforce disclosure | Verify that AI content includes appropriate `disclosure` metadata for target jurisdictions | +| Reject mismatches | Reject creatives where provenance claims contradict detection results | +| 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 | +| Provide detail URLs | Link to full reports via `detail_url` for audit trails | + +## Related + +- [AI provenance and disclosure](/dist/docs/3.0.13/creative/provenance) -- The provenance schema reference, digital source type enum, and inheritance model +- [Creative Governance](/dist/docs/3.0.13/governance/creative/index) -- Feature-based creative evaluation via `get_creative_features` +- [`get_creative_features`](/dist/docs/3.0.13/governance/creative/get_creative_features) -- Task reference for creative feature evaluation +- [Content Standards](/dist/docs/3.0.13/governance/content-standards/index) -- Privacy-preserving brand suitability for publisher content +- [`calibrate_content`](/dist/docs/3.0.13/governance/content-standards/tasks/calibrate_content) -- Calibration task for content standards alignment +- [`validate_content_delivery`](/dist/docs/3.0.13/governance/content-standards/tasks/validate_content_delivery) -- Post-delivery content validation diff --git a/dist/docs/3.0.13/governance/embedded-human-judgment.mdx b/dist/docs/3.0.13/governance/embedded-human-judgment.mdx new file mode 100644 index 0000000000..a244f697ed --- /dev/null +++ b/dist/docs/3.0.13/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.0.13/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.0.13/brand-protocol/brand-json) and [`adagents.json`](/dist/docs/3.0.13/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.0.13/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.0.13/brand-protocol/brand-json) (the brand itself or its operator). +- **Actor owed payment for the decision** — declared in [`adagents.json`](/dist/docs/3.0.13/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.0.13/governance/campaign/tasks/sync_plans) — `budget.reallocation_threshold`, `plan.human_review_required` | +| Governance invocation on every spend-commit | [`check_governance`](/dist/docs/3.0.13/governance/campaign/tasks/check_governance) — called by orchestrator (intent check) and seller (execution check) | +| Three-party separation of duties | [Safety model](/dist/docs/3.0.13/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.0.13/governance/campaign/tasks/get_plan_audit_logs) | +| Regulatory policy registry | [Policy Registry](/dist/docs/3.0.13/governance/policy-registry) | + +## Policy Registry + +The [Policy Registry](/dist/docs/3.0.13/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.0.13/governance/overview.mdx b/dist/docs/3.0.13/governance/overview.mdx new file mode 100644 index 0000000000..c4e1c37623 --- /dev/null +++ b/dist/docs/3.0.13/governance/overview.mdx @@ -0,0 +1,304 @@ +--- +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.0.13/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.0.13/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.0.13/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", + "status": "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**: If a new regulation takes effect mid-flight, governance applies it to active plans. Content-standards versions follow a separate rule — pinned-at-buy by default, with a per-policy `evaluation_mode: continuous` opt-in for regulatory policies. See [content standards versioning](/dist/docs/3.0.13/governance/content-standards/index#versioning-and-mid-flight-amendments). + +First, the orchestrator reports that the seller accepted the purchase and committed budget: + +```javascript +await governance.reportPlanOutcome({ + plan_id: "acme-q2-trail-pro", + governance_context: check.governance_context, + check_id: "chk-q2-ctv-001", + 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({ + plan_id: "acme-q2-trail-pro", + 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 committed budget, and actual delivery came in at \$24,850. The governance agent updates the ledger — \$25,150 remains of the \$50K plan budget for the next buy. + +## 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` records the actual amount. The governance agent updates the ledger with real numbers. + +A \$25,000 buy might deliver \$24,850. Governance tracks the difference and frees the remaining \$150. + + + + +**Embedded human judgment** + +Every step in this walkthrough reflects a principle from the [Embedded Human Judgment manifesto](/dist/docs/3.0.13/governance/embedded-human-judgment) — the framework that ensures humans remain accountable when AI agents operate autonomously. [Read the five principles →](/dist/docs/3.0.13/governance/embedded-human-judgment) + + +## Protocol domains + +The Governance Protocol covers five 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.0.13/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.0.13/governance/content-standards/index) and [brand identity](/dist/docs/3.0.13/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.0.13/governance/campaign/safety-model) — separation of duties, delegation, and escalation patterns +- **Campaign specification**: [Full data model](/dist/docs/3.0.13/governance/campaign/specification) — plans, checks, outcomes, and policy resolution +- **Content standards**: [Brand suitability](/dist/docs/3.0.13/governance/content-standards/index) — privacy-preserving calibration for content evaluation +- **Property governance**: [Where ads can run](/dist/docs/3.0.13/governance/property/index) — property lists, adagents.json, and publisher authorization +- **Collection governance**: [What content ads run in](/dist/docs/3.0.13/governance/collection/index) — collection lists for program-level brand safety across platforms +- **Policy registry**: [Community policies](/dist/docs/3.0.13/governance/policy-registry) — standardized regulations and brand safety policies +- **Get certified**: [Specialist governance modules](/dist/docs/3.0.13/learning/specialist/governance) teach the full governance system through interactive scenarios diff --git a/dist/docs/3.0.13/governance/policy-attribution.mdx b/dist/docs/3.0.13/governance/policy-attribution.mdx new file mode 100644 index 0000000000..046e835a3c --- /dev/null +++ b/dist/docs/3.0.13/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.0.13/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.0.13/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.0.13/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.0.13/property/property-feature-definition.json) and [Policy Registry](/dist/docs/3.0.13/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.0.13/governance/policy-registry) — the shared library of `policy_id`s +- [Policy Registry Sync](/dist/docs/3.0.13/governance/policy-registry-sync) — how plans reference policies via `policy_ids[]` and `custom_policies[]` +- [`check_governance`](/dist/docs/3.0.13/governance/campaign/tasks/check_governance) — where findings are emitted with `policy_id` traceability diff --git a/dist/docs/3.0.13/governance/policy-registry-sync.mdx b/dist/docs/3.0.13/governance/policy-registry-sync.mdx new file mode 100644 index 0000000000..d45e52ad47 --- /dev/null +++ b/dist/docs/3.0.13/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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/governance/policy-registry) — registry concepts, policy structure, seeded policies, restricted attributes +- [Campaign Governance specification](/dist/docs/3.0.13/governance/campaign/specification) — plan binding, `plan_hash`, governance context lifecycle +- [audit trail: internal vs shareable views](/dist/docs/3.0.13/governance/campaign/audit-trail) — how to surface evaluation history to counterparties +- [`sync_plans`](/dist/docs/3.0.13/governance/campaign/tasks/sync_plans) — `policy_ids`, `policy_categories`, `custom_policies` +- [Annex III & Art 22 obligations](/dist/docs/3.0.13/governance/annex-iii-obligations) — when human review is required diff --git a/dist/docs/3.0.13/governance/policy-registry.mdx b/dist/docs/3.0.13/governance/policy-registry.mdx new file mode 100644 index 0000000000..414bc71427 --- /dev/null +++ b/dist/docs/3.0.13/governance/policy-registry.mdx @@ -0,0 +1,359 @@ +--- +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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/governance/campaign/index)** | Resolves policies via brand compliance config, evaluates actions against policy text in `check_governance` | +| **[Content Standards](/dist/docs/3.0.13/governance/content-standards/index)** | Creates content standards from registry policies using `registry_policy_ids` | +| **[Property Governance](/dist/docs/3.0.13/governance/property/index)** | Declares `registry:` prefixed features in `get_adcp_capabilities`, evaluates properties against policy text | +| **[Creative Governance](/dist/docs/3.0.13/governance/creative/index)** | Declares `registry:` prefixed creative features, evaluates creatives for AI disclosure and content compliance | +| **[Media Buy](/dist/docs/3.0.13/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. + +**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.0.13/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.0.13/signals/data-providers#declaring-governance-metadata). Governance agents match signal-declared attributes against plan-level `restricted_attributes` during [`check_governance`](/dist/docs/3.0.13/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.0.13/governance/property/adagents.mdx b/dist/docs/3.0.13/governance/property/adagents.mdx new file mode 100644 index 0000000000..722d30b309 --- /dev/null +++ b/dist/docs/3.0.13/governance/property/adagents.mdx @@ -0,0 +1,1017 @@ +--- +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 signal catalogs (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.0.13/signals/data-providers) for the signals-side documentation. + + +**[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.0.13/brand-protocol/brand-json) using the `relationship` field, which 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" | + +Both sides must agree — and the `delegation_type` and `relationship` values should match. See [ad networks](/dist/docs/3.0.13/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`). The values are the same: `direct`, `delegated`, `ad_network`. + + +## 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. + +## Basic Structure + +The file must be valid JSON with UTF-8 encoding and return HTTP 200 status. + +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.0.13/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 + +**`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.0.13/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` for grouping, `property_ids` or `property_tags` for property linkage, and optional `format_ids` for canonical format support + - 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 + +**`authorized_agents`** *(required)*: Array of authorized sales agents + - **`url`** *(required)*: Agent's API endpoint URL + - **`authorized_for`** *(required)*: Human-readable authorization description + - **`authorization_type`** *(optional)*: One of `property_ids`, `property_tags`, `inline_properties`, `publisher_properties` + - **`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 + - **Additional fields**: Depends on authorization_type (see patterns below) + +**`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. + +## 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.0.13/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.0.13/governance/property/managed-networks). + +### 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.0.13/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.0.13/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.0.13/governance/property/managed-networks#security-considerations). That section is the canonical source for blast-radius guidance on the authoritative_location pattern. + +### 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.0.13/governance/property/managed-networks#security-considerations) — the requirements there take precedence over any `Cache-Control` on the origin. + +## Authorization Patterns + +AdCP supports four authorization patterns, each optimized for different use cases: + +### 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`). + +## Authorization Qualifiers + +The four `authorization_type` patterns above answer **which inventory** an agent can sell. 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." + +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_ids` to answer "what formats does this placement support?" without relying entirely on product-local placement definitions + +### `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.0.13/media-buy/task-reference/update_media_buy). Read-only discovery tasks (`get_products`, `get_signals`, `list_creative_formats`) 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_ids": [ + {"agent_url": "https://creative.example.com", "id": "audio_15s"} + ] + }, + { + "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_ids": [ + {"agent_url": "https://creative.example.com", "id": "audio_60s"} + ] + } + ], + "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 declare their own `placements`, but they SHOULD reuse the publisher's registered `placement_id` values when the placement is part of that registry. Reusing a placement ID means the product is inheriting that placement's identity; the product can narrow `format_ids`, 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.0.13/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.0.13/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/client PropertyCrawler for discovery +import { PropertyCrawler } from '@adcp/client'; + +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 + +## Next Steps + +After implementing adagents.json validation: + +1. **Integrate with Product Discovery**: Use [`get_products`](/dist/docs/3.0.13/media-buy/task-reference/get_products) to discover inventory +2. **Validate at Purchase**: Check authorization before calling [`create_media_buy`](/dist/docs/3.0.13/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.0.13/protocol/get_adcp_capabilities) - Discover agent capabilities and portfolio +- [Property Schema](https://adcontextprotocol.org/schemas/3.0.13/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.0.13/governance/property/authorized-properties.mdx b/dist/docs/3.0.13/governance/property/authorized-properties.mdx new file mode 100644 index 0000000000..6d2681c6db --- /dev/null +++ b/dist/docs/3.0.13/governance/property/authorized-properties.mdx @@ -0,0 +1,280 @@ +--- +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, using the same values as `delegation_type` +3. **Agent Discovery**: Sales agents declare their portfolio via [`get_adcp_capabilities`](/dist/docs/3.0.13/protocol/get_adcp_capabilities) in the `media_buy.portfolio` section + +The first two create bilateral verification — like `ads.txt` + `sellers.json` in programmatic. Both sides must agree for the supply path to be trusted. See [ad networks](/dist/docs/3.0.13/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.0.13/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.0.13/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. **Portfolio overview**: Includes primary channels, countries, and portfolio description + +### 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', {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.0.13/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.0.13/core/property.json)** - Technical property data model +- **[adagents.json Tech Spec](./adagents)** - Complete `adagents.json` implementation guide diff --git a/dist/docs/3.0.13/governance/property/index.mdx b/dist/docs/3.0.13/governance/property/index.mdx new file mode 100644 index 0000000000..9ce6e00edc --- /dev/null +++ b/dist/docs/3.0.13/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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/protocol/get_adcp_capabilities)**: Discover governance capabilities including property features (protocol-level task) + +### Property List Management + +- **[create_property_list](/dist/docs/3.0.13/governance/property/tasks/property_lists#create_property_list)**: Create a new property list on a governance agent +- **[get_property_list](/dist/docs/3.0.13/governance/property/tasks/property_lists#get_property_list)**: Retrieve resolved properties (with caching guidance) +- **[update_property_list](/dist/docs/3.0.13/governance/property/tasks/property_lists#update_property_list)**: Modify filters or base properties +- **[delete_property_list](/dist/docs/3.0.13/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.0.13/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.0.13/governance/property/specification) for implementation details + +See the [Protocol Specification](/dist/docs/3.0.13/governance/property/specification) for detailed implementation guidance. diff --git a/dist/docs/3.0.13/governance/property/managed-networks.mdx b/dist/docs/3.0.13/governance/property/managed-networks.mdx new file mode 100644 index 0000000000..94a5db9ce1 --- /dev/null +++ b/dist/docs/3.0.13/governance/property/managed-networks.mdx @@ -0,0 +1,629 @@ +--- +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.0.13/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.0.13/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.0.13/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. + +HTTP redirects to `/.well-known/adagents.json` are not prohibited, but they are not the recommended pattern. Use `authoritative_location` instead. + +## 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. + +## 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.0.13/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.0.13/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.0.13/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 (recommended: reject > 5 MB) and enforce short connect/read timeouts (≤ 10s each). +- 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. + +**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.0.13/governance/property/adagents) — full schema reference, authorization patterns, and validation behavior +- [Property Governance overview](/dist/docs/3.0.13/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/client](https://github.com/adcontextprotocol/adcp-client) — TypeScript client library with network consistency checking diff --git a/dist/docs/3.0.13/governance/property/specification.mdx b/dist/docs/3.0.13/governance/property/specification.mdx new file mode 100644 index 0000000000..d617af8b23 --- /dev/null +++ b/dist/docs/3.0.13/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.0.13/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.0.13/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.0.13/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.0.13/governance/property/adagents) for property declaration and authorization +- See the [get_adcp_capabilities task reference](/dist/docs/3.0.13/protocol/get_adcp_capabilities) for capability discovery +- See the [Property List Management](/dist/docs/3.0.13/governance/property/tasks/property_lists) for CRUD operations and webhooks +- See the [validate_property_delivery task reference](/dist/docs/3.0.13/governance/property/tasks/validate_property_delivery) for post-campaign compliance validation diff --git a/dist/docs/3.0.13/governance/property/tasks/index.mdx b/dist/docs/3.0.13/governance/property/tasks/index.mdx new file mode 100644 index 0000000000..a77f8f7e02 --- /dev/null +++ b/dist/docs/3.0.13/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.0.13/protocol/get_adcp_capabilities) | Discover agent capabilities | ~200ms | + +Use the protocol-level `get_adcp_capabilities` task to discover what features a governance agent can evaluate. See the [governance section](/dist/docs/3.0.13/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` 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.0.13/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` 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.0.13/governance/property/tasks/property_lists.mdx b/dist/docs/3.0.13/governance/property/tasks/property_lists.mdx new file mode 100644 index 0000000000..a54788b40d --- /dev/null +++ b/dist/docs/3.0.13/governance/property/tasks/property_lists.mdx @@ -0,0 +1,699 @@ +--- +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` | Create a new property list | ~500ms | +| `update_property_list` | Modify an existing list | ~500ms | +| `get_property_list` | Retrieve list with resolved properties | ~2-5s (depending on size) | +| `list_property_lists` | List all property lists | ~500ms | +| `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.0.13/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` 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` 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": "..." +} +``` + +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 `signature` before processing and MUST 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`): + +| 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`. 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.0.13/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`. 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` | 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.0.13/building/by-layer/L3/error-handling#standard-error-codes). Sellers MUST NOT distinguish "exists but unauthorized" from "does not exist." | +| `INVALID_FILTER` | Filter configuration is invalid | +| `LIST_NAME_EXISTS` | A list with this name already exists | + +## Caching and Refresh + +The `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.0.13/governance/property/tasks/validate_property_delivery.mdx b/dist/docs/3.0.13/governance/property/tasks/validate_property_delivery.mdx new file mode 100644 index 0000000000..e229a7b52f --- /dev/null +++ b/dist/docs/3.0.13/governance/property/tasks/validate_property_delivery.mdx @@ -0,0 +1,401 @@ +--- +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.0.13/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.0.13/property/validate-property-delivery-response.json", + "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`). 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.0.13/protocol/get_adcp_capabilities) - Discover available filter features diff --git a/dist/docs/3.0.13/governance/rfc-process.mdx b/dist/docs/3.0.13/governance/rfc-process.mdx new file mode 100644 index 0000000000..01dc247dd3 --- /dev/null +++ b/dist/docs/3.0.13/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.0.13/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.0.13/governance/overview) — the three-party model and campaign governance domains +- [Embedded human judgment](/dist/docs/3.0.13/governance/embedded-human-judgment) — the principle behind the governance system that most RFCs serve diff --git a/dist/docs/3.0.13/governance/working-group-charter.mdx b/dist/docs/3.0.13/governance/working-group-charter.mdx new file mode 100644 index 0000000000..195916f262 --- /dev/null +++ b/dist/docs/3.0.13/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/tmp/`, `static/schemas/source/sponsored-intelligence/`, or `static/schemas/source/a2ui/` — receive a downgraded decision class consistent with the [experimental surface policy](/dist/docs/3.0.13/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.0.13/images/guides/creator-economy/content-commerce-creative.png b/dist/docs/3.0.13/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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�?!pctafXnhnhxgtA?h8dNWwME6esG>$uJIZs>yk!cz+vAd? zKeVPlg!d2=Ea{-8qCK4`1)xr%W(syAJ11Z`0JA+tDsQslsOOD-Do{YXSP(0zf05>LtNY0OVx}P!K5+#N# zh)^D%spP?v%L~gUd96VXa@FN!BO7=B>BC>BX<2aixfk`q;nYNJY0;jip4|NWeSi6j zf2>*D#8)|dI2JRs=tDLOy31~jQ&Z_y&4(-+E6fq2F!Q~Tk)Bf4s!VIaB z#NJRRhOE+xl8I`ag&E5Y^z#Xz;Zo|k(cXt2xUK#9$7U>=|MqviuWk06k+A{F_p-&a z=FF_XVl>Sn04LT$=itF^F*Olr(^mgQFB_n-$e*$!VZ=imJ8r=NV_iP~8U zE`Q@Y<}O~wN2%#fNo{hxvZ83Pd+*g({e0si53xhm@#kK$_JmV;tzdZAr`9f_%Z=98 zi#(yoPsfeJpA6feqFYD9K%MkxeE zpu@9tX;m3G%|eNgf=FUT4-eQvIYfrM>RAoMD`U7E2cVHBIhuNhN^r%=*2Y69$U6~6 zQ4E}_&&fIPPqGX0mp=cGxBls-ipDuJ=PqBhdd=cPk1VQg8e*H{D3qe|NAb331yNBd zyeBx;8##GfNXEm1H4CNWxe1=RlX@Y}+f=TNOS~okm#;HR(b3iU%+rtW-nOl@taQ^?;#ZXap6j36SbI;N+$Eg!|gktdicSc2X<{Z`m__)9&^I?zxl)RriG`Rby<1!tf``WeM7~pwi$lP z*$1R%gua*x#_Bw`karI3h>ie z4vG-Z|340tg?m}3U`_r|ttL-AYrH={3Ual?aoaXU-H^xk2&h9 z-~JHy_bE~M+yOu-9ZYpPMS9czDeGBE0Ee~ADwHuPQ5bB%J+Bqyb9;6Tz4P54y8n(x za+NL3a}Hgw?8x%!nd7-~Mk=&n^ad!cRC+U7TV~IhRo~FS4(c>QK4DW^xG1%%#np;K zUT~D)s-VG8s1G0v$cw{1vRc_j?Z%78G%bSzJjd-=|J-BGK6!6{*N)-too#bkUUAWR zPd@SFwjH}&Rl{!fxvBExwX3d{7=j0QQJNc9~m3ar`R-+-Cm6`Qz5TP;* zqi`ZSHfFLzfW&j8>DW=vSo_4Vj_QetiM@OG@7%s~_paS+jn3Q7!#p5nPL$$Ok!P#9 zriO;*wi&Z#&6zc;t);1=!cXJ5Z2>P*K-g{R6c>WFtb~(N=qG3q?twu85(XyXyx|C+ z$ZTZ&7IDrO(hXC8N(uk+Y}k%~(OjeMM*mnMb-W~i8DqvVRIiQ91Gs&OPz8u=Cu2BH z^XE2|*ea`+VV~Fh6vdvFI9%=pQ_`pZVfhyUivbtFuolKQ#x7OfcW@7T39DQ1Go*h|uGU+@)nk@;FK~Lon zi2!PZzrvw197RJZEN<%pyU?)(HA&mCgC^mTfnL^6ZR^;}E(3g+V4RgO_4RGlHM~kw z%>y2C&`X${7#ryC?CaS(ITX3aig&9R3cenL%S>(pd9Z|U&1d^Q^pOwO)HSoBK>(ZWcXxMp^z%N&_*hj-^Pz_x#+rd8i`cfHqOZGa%jQiR zH$1;__b@HP=I zt4$3K5AlV|?w+2`_OAAh4qiam-`?K7w{xVwe`-8FE>Ky?nz@Aw7cE`7WchMl=V|Hf z?SJgCrt zmsloCedo(bET1K%X>MTa<|psH?oHqR zyQRk;GCavcJ^SS6^nxTFhE%tLg>)(|VhhPuRJ0KaXFg#Kr(zL!GNh&@tSRCk zG=VGb31#@xg~));m{f>_lhY+--7=P1xFpcf=6CA}-7g_4u= zWEp@B{N@e$6DrS&8&Mf3F-9i<5;Nx2jKExpvMz`^FaeW5N87a^x|^`*IIZoRH&&&Kn<{^{!F3x-FBtom`;G<0R0?;N*dI=$Js zZkCh;5eQQmv&|>I$wYt^mjlBo`UN-;@X&_|rw?RW-^D>~@aR*hXdsDaiaqeB7R=5o zdZ#nyGfQr)&ZUVq^af7eff1VoDpgcaxJgz&T)>>vsqHvIo3O`<9Ov|~P*^o327npD zaI&C=DILgc@l)fn69)`YSEP)TK6ik#DiCF;oD>DN!BqtuUL>gR0Tyx@r4el-%qP!S z&UQ;TLTqtx@ID7Ie946-cyM5dIf9s#9DMqb+crP>aK5?eZSQ*Lp(|GpjSdt~3@=>3 z6l)a-kWs=86kP=bCX2QLni#}L52bK5f<&_!iX*|q>dZ(mQe9%yNSA$@H^SCGM5EC3 zItVdVp}0B{IbQ?ul*bwgKG2pzl8HTv)B-WE$?(X*64Av)HTj|kAAIib|L(JUx9wfL zhFa(Kl{GD+%zL03UzKO&{M2I)-~C4x4s`8nTCn2Wi>_#%xp;7dFJZZ6kZ&2_f=%@` zGg=ti@Hhe{bR4}d+>v|h>Ck}As+wd7uGK>Ho527l-ZJ@VGR))d;TeBp110VV^DUiQci48F7U*}9Z1DEeT0{U z|3Eu*1ONvrl#j5a@Vaxxv4TbswI<;RlmI6vrE)4HZ8?sucPM6iiQR{9$$C+j;HR)RZP78b+3KPTi?X9rl0)eKY#k2e`{T~_T+P3KRUrM zW3swBKYLCq!zPAjkW7D&u%HExlqOw{;->zsU3H%@AUzd)p3d6P(7>kkPp^CEp1tc| za2Ktzl6+H3>&$sGS{GE-&M2*@n_$Hv!$1or6SeHmRa9O+HPGF;{`m(xH?FH|tNhg8 ze&o`NPHe1~C~QDoO=K)smN={pLvhpb!6Q*b{P|%Hd`5fGq_Fu&?tSn7?C<{j`rrNf z=jWWUjK{9ic?u}SFdg~l=)4Ez|26&PL1Ztn5$RNRv0wuQCUwIhM@SpxC@M!tkq;*| zK8XG=h|6Q-iwu@Fa;Kst5@PZEzy8<{{`Fhm|LkWz`r(hhk#F)57c)JklHp|!k`AOA zigK7KgZt?tga}Z%g@LH8sr%@`S5}v<-_UvGmG55v)b?D>yoD>)&Rw)}tO%dr@dD$i zsj;zPs<7F!X3bwXpUu~;_4ViIVTT>Lfl_#&*blHYO&``|hZaEJA*@7>ieL;cux=!f z6zf_SHihrr$Fi{}*WEeVy*oEG)H1W}$Rm%UTft5lJml=_AL$<$8W|oP8yV~E?U@)J zSh`~2yWa7}x4!8W)zvHk!23fN5TzW@Hl+@p#MBt%!m#?GQOThrNHcF?!hY}P=>PyA z07*naRIv$#Ol2(mp-fYI1|%2z+1^q3^dUMqEIr}rs4JuBAy2uxn{{&t2b|?Jq%%(h zoajvWus#{}r{EDkkf<3Y5W>fdzAvDH9T2n8-jGN#hK@QJJ34f*#-US~T1wQVPe4Hbin7HN zu?#zwQ5eO+FwDPH?A+7Y(?7y8cVdG^vB+qVzx+1xm9;nJ0- z4^Nb<49SQ&Mjt+77i%>0439!RAeNiZ8Fd-t^Z@L}nNCRbU}(|D^Tqf~Pj~0GeY>{| zvSa}9`N(@+b3;=bgCHTzh(SgtMtTPZ_V;w}8|&|3@SMw6FIaNu(Z`&)XyI};m1Qq~ zstdGAkAZG)MMZH9-~FttU?Wc40YSB58f2mi6{70sY^hZuRJdhD=R}m~Ul~a*64aAR z1{5bUYS@r7&cyL1|J1&A-f;j)aarkj*Pcy3|IRYiOBTQ5-S4lg z=Hr4BEKB1>nD2h`+kJcYHnGoW(_CbB!o>q!fp>hI7c2&Pdb;+E5A@Pp^D(IT3+63f ze&~{AOZiqJFZcKK_3z%jcRM=-?%c6&-|qH~_7Rpm`T0OtkDdrVOy7>8!MIcB2fuBe z90KBFz2d2|(o#O`SXI;5*w{LwZO)w8bLK6WJ!>XYD!fU%bLV!xKk&>m&urVab8MJ> z3d)KrnRjTasc)*}n-L}D3`KNti)W@I-Ow1PVSLP{YD28-lBvu~40mF@D@+szV_^$^ z>9+DNwOg)Hh$h*icZBabP&rPHV`CyU549z2BvTTc+5CYIn3k62OG@&52 z_E9Uq@S!d!g?9bXx}8Ex0mYTsDIOs@+3v)JbrGEe?#P0<8G;}%Sy(ARBr6E88rI?= z8yLz2W?wI0%;LvrCQ8c7n+KZ{NCGet*HI-+AJt zrwokoB{2x{&kxSv5pL2E7BD(gp?m?E5(7vGGDJ#>jyw^hM4Hq5AQf#wlQOF3fC$*+ z*FpzI5E_o6q%tjC=t}rt1~66b88j#=RA|wY28YNqYElliL$rf94M0*X)`=IvB9sIQ zR)i9#{k9YWj}kfLhvR(^#ft_iiApf>MW4yvJ^zO4yr24Z@lmM zpS|lJR;)dze$lEv3udl5H~#ny|2;a^{mSorVZ5z=bYw&&Q9{5+#|M9=L5mpXyIE6$ zuBO;H1C3eqVV^JU;ga-3<1G_Xi8skXb3D_dU{MJu8+a^(8~`Axb9}VWmS})OaO)%Q zp-AO~K`2+sql5&IDssYG=oTks``f7b5i-Pgz!RwOYq3ZuWe+`b3wjGoL96z_*<4gP#&C#`2CA5z51)+&4IA1#`{aWg*WHz?D7xaxD^ED(l<`r%gEl;O zPQ(29wZQ;WHD-o_`YaqNWJ1yoSG))vBtnUUC@YaU%Ql_gvISGhK7B-DSch0{aEQQ0 zFjIP<0wPQkw5+cKmY0PzV)piPV|o*ef9+xU-IhlV&3cI4Js<~ z$$VL^XaDwV{`;y;4?oD;f2&SB@1)bt<(Iy}rR*abpjo=g}@c|qBW63b2UXe<#t48@)P7U0@4;)6f{YCDgB(RHJU>8!HL>eqL@`+fU6 z#}8e(c3`Av+s2K#{(bWgUvus&UR%>Rlb2snnbX@!0srt}djJ^-69rdcMZ1mA;Sxx> z5Fac#e4!A_Ln^B3Amt7}5mae1gKHteW+$Ufuxr;SUuA5lF}#28-i@1I*s*a-S5HU2 ztZde-ne*q)qocqAcRrSE4MdllrHIaAT6nByf)j%9nGRx96O3B*1)B$_l8t$Yq*pRT z{;*pie=>P^c^0J#3aMTXPz$9`Q$_{WE`N5UtkS{g#Un zreyBCnT$<%fQy&;esQ7S2#29@NNN+F_rVg>>DBNgmIi#NXV2r0-23nY_l)f2@mO`) zj5%}XE^cj`ldrBTE@l-{5nr6=j0P!|mZ`~!ic;1HcJJN&!V6D7I?=P|h~tlY?_a!g z&g|Bj{M4#tHQGM}m#)Mz9cb)=ItZjx9VDqek_^jnx-rQx^&@*BR~P;9>U-bzo{zoj z?Qj0qe|k@O^7KGoCx#vP9#`MGWRzz~OzN{)AI;6!aO=z& zOO`F9t4^!#vqw7V9(Jb#9Uf>yob|1gRF0C61qCJn3KCeI`9hlg2&>MJG9>V^``9E^ zR%LzLxtG3v#UZP1y!O}a+n#UV*FAT^;?I2Ut@L~Q2VF|k(=)cey>s`@J&&$?{FYm8 z-n@Cs-~7#I{__|A_4&{J?Kx+y>K_CrZDVj@Eg~Z!cdGZeg#&nI7-o@Hja1t*E|@h} z^kHaRn2`37V-nip7aP55IMG`HQP8tn2BOjT5RDy}R9&i%5HeLNx>T?tQ(*8w3Bit7 zAqO?o>4hss6VMZo;i|z*D9jLpOhzxPQX&S1B9VL|pccvcVno1&wPHdOgADZ}+JrBo z2S8M*)(J-OlaV+J8Dalg5ySL|S89C0_)xWE2_qO&KTN_&!jgMiTLN_az2!;*GxD*3(c11%; z9C~e3O|%}gT%%0Q;#j;Ouzkaz^OE|BSo2)1+sjkX1HBeUOcCWrlFiH2C zkt8Juwb(XMzk(IZX+)KgX)}3+QF1QNg!LXJN+O^$N5rIrsDKFNiLrKhNlkUxz~Cqi zD{p$V%$#@h85cZq^NkA^E&R)m{?#}C>1#jy-uK@1?swPK*9{B|wYARrtB?Pm|M`WSe_*h!ZDC2i+C3~WjZ1_|{pf5XdoI+EjSLJ9_V)L6KKs;$XV*Q=&bd{MEpzA1 zTex5`n2$Z?*v50ue||d zy88OM+Pa$BdR|Z}EvpzC9q;V!-LZ4~&9~jLecQG@JGb%11I>P}ggljvGiTS-HdgQ+ z0UJQ%_}Zi|?K)s}%0W+x!+w$lHQiX=Q&%pj7~ynM6O9(uT}JIPPnF{wx+V?K_#}Mu zmeXKA-y9wr8J=SO4>iy@U&cy^$sX=!w+34g54MoNfMv4uUwWPRtEa^xHz2){|&{vY6dN zS{k~x@^a7+U-STqV$Ay(0lXlGg^I!F*T6)?hf zwvZkfkl*PaBSo4}OA$`fedG#$QcO@K5{p~Pl5|p@?$s-$JQ0zAuyn;_X~*t;=(D`4hFnNwm4gfNqG@w=Wp%zA zR}2KAS5qGHrQH&4R|zBosg0l^p8zMni~gvB2kXvAIl}ijv5F3ha0+&`meqw;31rzx z@xTYP{;Z80*}Rt1f&#cDM^;yaQ^6o$nbMUDyowT~((J*XdIJWw zc^?i^HfPa5iywl*k=IH+vc!5_!JHHcSG3M2P2SW)aI1}Dd5v9y@QBc^k_#&L?6DLY zQoM9TAUR-gs=T?$+M23-X?br?KkqNDKJuixnyN?dzvEXw`YACNUvkOVSkbPX9lQ#< zaA9MapLL||mE*ujFvxiURf>!YDG{OYNwCNQFTq60Z+771S9@gnlYk`Y>S4Oblf*K& zYTy7aL?bJcoZ(QxlxTdR3Cavp`N%Xcw|(_1-@N~}dl>;;@P@aaaLQ?;*8d=2)l%uu z=o0<5;Kx~-+IjMaxsZb>!NCku%m zOQk%8K#~uykdeeA_deA@6{P8(nk+cR$5S>DWe34zYaG=m(U{W%OyH)T31^EKMQ4tI zi63c@C95C|P|^7C$m|)ffh7?OZsJ}NO#7+WfDGpJBmi+|2;z23&RMxl6nHao$hol>oe}V;)0NrNpMrtWGK}oiTgvoOyGLPnjI-?cK9` z`!r|K_fPSM6^jB#CxAGrkGTOBkU<@D6mBSLU!suO`hAor=zE9 zfY)i^-scu{-Ag7aD@u61`ks4k=-l)~zP|jOfBpW8FTIQbR(EedDxx@-l}*0?{eQ7> z)7JG5-Zo>#+_{U6>}Sp1@W}RUyJydCEo1CXM;S@gX>bT1$%kZhLU*Gb$c-{(*3+@) z&YSLd^1*v@y?#red|ZxclP-gvbAJ?{}5>dBQ>>E>Q!kW%!P2MF~uaF)K6%TqysVPA+v)3 z0g?g$PmC3vc+v@T=gq(2=G*q~fBWnBRs3-PfrkM)`P)v#Bp~JsB%hPf-=T z97oAE(*y)5a2HAG1~;N>oUbg|yt(VLSG{@LmY%8^E0(Q1sitxEh^x0~&e?8Yln&Ce zrORi|Zlfy|B_6d{KgtLrdjL_G#V&MabthQJL{mZC2e2T)gqetl$_2T+1)V_FF!BX* zYvb^5Yt-CSRaw#S!2X-A|IPDHJv7<3|K!t7`0-D^%Dw~RBR<+2w@-(*O1Es@`SV}= z`o!G$0vfK29_6lQPC&{F-buQ1~e>km@1!C<;KGt;`sbo zsVrJBD>Q6dryD1bzZ98-QGyg1Dv7Sbft>0gW{T}Y(_OHQh%qFJQ&rhv1y3e^p*mD* zCyK=2krcwI|0Pim1hLHni2fk=JnY~UJs(F<0Ryu}CZ*qKCmSROCu> zil1Aeqz)U=3p7S%nEQra24JMYpdd0d3m8gE>Q)9-TwL1MKe}yKC!GM=>dNwpCm(zG zJKy-`RK9V=VXJ!kx_58cQdCuU_?i=@%33BT%kAbcO0m19Slp#I=v+VLou$=T@FEtU zbMFH!X0Ujht7K|uY^0;7efyqWn@0M2;jO5$uC}4AwqXX}!s9VD2IhH1u4rs*sAsTm zZ+G{;@%}D4%|+Gq%a$E-^x6~VFIdP1c%#&XJn2$=%I0Lgs#69f&X$*g| zQ)YPS%o=k9c{V;Rn!Ns+>u$OF54qBO%gp&zwJi+4 zeVKwziHjzj`O{1e#C<(rbYz$>@eU94@$myTH-n>!e7>Q+ZbnOUV{>z3BmWImjQ#8C zc-JPM&-39DKV_Ppg+yUSU5tK5c#mO-SqJ84x;uNi+S@z!?c;5Oj-I{&9(n0bCCnJ) z^ObegRdu|#Q(9VudnB8(&r}4E8&3|)6I9EbEv@7ZcTlOJmQZi_dAhYmq5Sd!zHipE zH|cO}pWHV*$fQQ!;LxBiCMh}&RhrB5khLyfg=uT6s%m&-QC?QT-mUcA9WL^I6I~fT z!!SHLz+&H_!NGyv(ZR0V$N*o6$Q6&XK07@)a(p7I{JvoN9bzkZ*)4 zEgIUk;XYb6Jquo{QwOTRck#YH%yd(!M6!~t_Hk&^_nU|KgK{LiwKHyb4sf2{rb-~ z{_&3Gm%XlT#!Mzw=rdGJPTh6GZx@`g^8KIqK-YM0EcZb|3F^biOvyZ&B}}Dn$3eW2 znoTS6(-j1ZxDeSBTG2f2zNiT5Ph9|uXx7{D#zev?9I0XmOysq|Asi`iMgoMS0D`Dh z6OZPRuuzGggvQ&%AZVte1Vzo#F~f9DLLA0TAELLMi$q9{NLN3GLToMuiO8V5@H3K> z1nI^0D2z-6!=X@s$VoQZr`{8zqo0_O4R>?g0cvWxrsBF^edm`C{NS2n&bd5S*F4PB z6IDll=i`6)W&IILF8jy-v!`UtW&db~YQe{Q?ib)A0T6k1WffW^Qr`lAs$NLE%tA&M znt1h!zdNHB4HX7*vjf(VMS&e-aKyF+;v~)!LL#d0u8Z+aPumwVhpwnu4bV{1%LOpZ zB<2uauRurS_dcaL3#QCsh&WN8C4eG=3@F4@o6Ka%1Bq(gthg0ou=*m3Yp@%BlTyV% z5-~WEsALTu#At2~&fFcC{D6nZ5lb&DWPqX*v*Dmhh6q`1@|x_-4i&1g>7cX{&x1$C z25u@oHeOLuylcm%hwr+sXt?L3^Ul2d^4Gxl$mmdObJe1S&8*0ck5TIpvX?lMHz}mM z#7RcLDC}V6kttAZN#6_!C}k_~6gf1e5&U%7=$~j^qSCAZ@gY!XNuNgcfV6;-QdG>o zXJaF|pZ)AVfAnuZAMYK>&szApH@$uF@ESyuG%+SJ5&c}3BTX5M(q^U_PI8sS262uXPf7UfY+(Yd{ZBvTmkpdj)D z$M7bw=5dN5>}_6@lDBSZMHxasRr976xF zoz^PAJlL$s0y=RYLF1z}iT1(-qM2c!MR4K`)pJ-^GBo_FkA7^+`kf0_o;+v%A!QYn zyLWGY;h{TdLC$&A6-TW-nK$|DN2n#J1Pjr%l7+w_CRzviCjvrI4+k&urMe2PkJ|z) z_evBXWTXbs17O!iB`JnP1jxM2ju6klg^#5)=$zU2c=$Ng*Wbf?i95FM+{*&S_Psp1 zWYu9yW78}a7|fd8)ZENhjmz?t6jzL7J>>FEN!zahVPZr-#;v*aNVN{PGAWj;wVWYGRHt3yMj6z3{7Ht1`=_s&}%yywnb?_lwa`Ae3qnl*b~ zacLzlFtJ9K4Y=IMiN{5-?_wP`x@IS-k@119-MgOKw)vUyp1s92Rp*{_&gEBJ(bUvr zk9cB|UACsidJkJMqpgK?g&{v`NSZ(q{9Er7Vz8|m$f!6x4!;mp#2a#LLGXKtMV?!em;gW|31Q zl^X@@rGz8L0cH*&a8OXJ|BHhhX!ZRc_`(lfN!$gyq4uQr7wPClH`Cn6KhHed+ea_D3pf(HG-YICG_7)2kBmQ{?hCr<4oei9Rh<^?m4!x2f1npaLzugT|0 zVfD-~<|2DCT7XFhKeSsI6u3v?pc1OX?h=ch39&BN2&EEc__SkpcW)oNE>*%?zP#ke z|Nid}-Fj#3-1+ktF5kRu+u*KkO$!z;Sb75A>ZWYUXlMzX;IQWe$#BOoAouqAsg7xi zecO9tq_1n=-n~2e+qdS1x>>+h!GiV1*_Aa-xw2YH03B7;GCnfU-`(52d!%=NZn&2j z?HO}s9eLEzs}Dc6rmksxqI87KSCCoElNA*ubUyemt6)q%N<0eo*^z2=Ti`G(fUuUh z)8ZTqs5qOhH*zwJS>xfbXd>P$dY^FiB~?2qibYgP6|eCSC@vWq9_{KL5P~L$9hnC9 z{^CD=JkZ|pmiN7f*Dt^Ejjyw!>@}}{{mG}CPHm1M*bsZevrqr$FMiRnZC82o%%-MU z71j0hLMif8H=t$1&9ErFb^4|-fmz4+?(NtRuk`dY&}XneIZAIL#sQ8$Y3z6jhwqj! zIlwXs-juZQ(?=LnaIhCaynf>>7hEG5z-9T;vU0vXkmu<}Wfk8~Enyt)aytjFObUb( z>PAQp2Vro+u%@UYK?!QX$kcxgs7zIMr_>XToVb|S;T49_(Lp9V*tKzdpf5KzgrD%D zYK0q5u#re>eG?BQ8n`d3sLd6ZGjl|TiPEgUCKIAx{tB$vS)#>2HKV-)eO+DcJNNJ3 z-PN&wYG_Exl{M@xUQ^dtUQy))RIr+gh~)&HG2YbB_6_&*dcv8PynnK^NkR%krw{3L z8aq#j;XN*0;v}B=EP_!NV<8K)V=^+~Bp?8mtCmY1#G?bhJLWh)8dbg-E)1I1%9x^u0M>N<=sratj zudSF{@ekklOkeTP7{fqRkGewpGOw^+QkVo{P)7K7#458wW-ug}N9iLAvT=>pBicJe z7I_H6Kr3VoHx(t29@bb9^n_gaH#x#-f<9U#B|JxB)A?lEgy4Xz-p56B;z_(kq+pR4 z*9Zse0*X<662TD|Qy>c#(3&-qw*Z#1n^6sr9tIX?u%G%Qwyq%OlsF@v(R9m>i^M zXmi6$J9I-J&%6L=EX~nk;e!O|h%zNXJPiaU@k|-hKP@c$@$f5J6sc2=?W_~BS^!eM z!ya}hLs2#%jBCOIO5xrF;lNxqI0xm1K^2vfqLIp~1TWD?10v9b`b<@QDp5w`TINd{Lu2lLlQ>Y@ft|eHarzV%S7{6kPK9=>ua)0SvxCCsxT>OqEC`O(4wG4hA%tBfw0o-5MO8$d~7O z_HDcOt{cWX_pUl_?VI2ERyK}ijaPkL*^;Ggyu^zoCo>&^Fk^BdpW zxnWDLwC32;&$-|guV$SK^B_EG9T*yT>d|#~-hK;TyI}}3f7yx?PCjSmoTbz_%nrEL z1A;6Zs9^)G+A^xUa8?vdMVQpjI8)l%K-;Kj8Kk01n#F!iEu*5=3^_aMa zYw<88N=nETX+(zO2NVKZC_?}}CoqLlRBk9rt*Sgspq9{Ec`5kE#|DRbd%Je;-nnc0 zF1AMM?&)Tj%Cm{4rk3W`R#q7_x6G(-7IM;{oux$XJ=Tc6Jjb(GYXpLzOem%ZxMbLKDLV_ajC z6FkainfcV%P;+Dc(537ak<~8vjt-JE5a(oGr7kEn1*}FPp5l}G1u7iqlVft6$28a9 z`21Vm`i|FLcGkcD__L@F**MXf==G8a|19J?=$g^v!jU*Sh>3#$4Nfzc#UGs6B2Jkg z3LlKFXB6#FSpqL$r_zK&^YY^;#3!i2Im2DJebF_WGq9j9E*$O9p379mcZsjtWd*d5EaMO(sSGFFudd*o?jdMoX znUeCyg2S;9o}V4Q>ag-k_MCG7gyqem#KDbyN$XeJd*VqKfaVMY2Q!M7P`QM!L~9gj zFd?HHR*Vz^@n;cWqvxIUpG}ZVvPD*|s-o!L+pfRk=Kmfa*vlNjPk-|5#)fi6G?aUW zCJa45!ea>@2Y&tw-~7qXemycga@e7Ze)5y=u2|8;n`ypdWwl_P!}t*ytT8l!gsE(U zd_Y(S%9xdw^){kgnLsJ(8ZwztEl|;f`G5~YnjxW6ELw6=vOWsqU1!F9s7Y=U0XKKo9|4sa8ABxz)1u_t(w9EwaEVDvF5=3nVs=p@1QvXwpQe=G2S5i*RsynBoX3CPaRx zBKTS)4|X?g+0FW?;^K1rXk@7W3!nRBe^>wP700m9eCzs0*rRUo;b+t|&tuD~*mDut zL^kb>5|cFtrM#QQ3k7Alk+BgTQg3C(d9=6N3DJBF?-A72w^UTr_-!OO)XQ-5?!o@9 z-j3b8dqBIBtFAqSxAcxZe$k>uY>mVFHNIklYV;VEW>wbJuw0%OyUDL=W42pvFr^oj z5Ot%vl}TfXbR1@HL;b)c36??4z`bsWDnhFwB~N&uhOzaEiI?z&f{z9bpdf-HmK68& z4EGO?(9Odd?99~Nx#QQr_|fQK&ud@*mL*G)5e*?MWwHdf6pSZF9Q2dKnT- zjE-D?{dITTd?T9=)Hb))H_R-lsOA#_G(_>pSOKIC6R1k3fqzSlBVxAL;5>Y0t^Y&Z87P4%%;Kz}Z9{&9l&e*#tgbs0%2C>TnPj3e%pcYoTIP zR%irK@p7G0ut+kb>zW~*P%m8b>2(L zcJ0{EwQD0E%Vg+LU02`OIIFyN#^h9m8UV&k24Bxe(lBPpWT?r@Hl+{;u z(%ndt81gC!Yf{6*64hQ>y5-RhE(dmp}S zY<%Are(;sy+KJJqiJ>2sfdkx0zYif4E%Sa1u8QF@>wn86d8}2uzyh_GCZHDOo)Cg+ z6j6Cf6apY-YoTdv999Y9=7^e-!Lmv;7x=BeFcfzIY`h8FsWpOGE>aV9OR9v^0Y5>5 z)LXIaf>Zt+Py!+8)$ijfPrlp*j2E(63ylu{5$lny|}Ao_?v zp9XaV9Y$<`A*>m!ZY#!%n#QX?@%~TrZ|Xn(^h?;qoHwPa%F1?a-LUhv>yCc=t5?41 z6}u+b=*|JZ+D?X8?ag-Qf2RTTpgCag$JP>Nd6T?Gz%$y(^w@ewys60McU4nWMDs`5C(M}_7fdms(|5ht4U zs1z)QAtDGc0-0hiM3zJ!m?WckM$nbvS(&V%Gx-b4s8^{s2L{>i zwV&Fxzh~b)w_iKHZ^yzTR=n#SZ?9{l=hMqanU^e{!xmzUG|ZmpfdcnbZj_=`(Sc=N zeHkQ->^5B1j8GPg^a5WBE#Ghvz9%Bny`U2;OVCVFqHz=whyo-EAUbCP8kEHqGz`VL zhaYaP0X2tvav`88QGHm=gb;#rk~L{L z;?W4~h74@On3<21zyzF$W>OmoZ-}4p1%|*L44@_`svs%Jn*;^YK&G1Py~wy~7VdP% zKowZS|HWV=NtRbV1PBp3Lj__Vt5De!TU^Y>$+z5m+gCpOgYhj@MVSP@2WQ`U3u4wb`V3rz$tCWcb*WNi zd0~jjT=J9bk@>VffFB7I6aqyg6H2h50;y_gmB6PfnKJU9GCnpj%G7^%cTYz-XV!~>YAF>1+t z`S?ixzNeqKd)u>*68);zTzbV7udb=ikFj$zs8k@Gs-cpiu{m>Q_3@Rr{XOMnbrVyi z`Kqel{Py=h`PTPluUvcjIj`>@W$#koM&t#@dGp%Xa>J$7)T>hygv(1Nd-ms_z-al5`6~`v(=uZg`ysM#j0++)k{-zcS%zB0Qv)MIoowB`WBUt(d$;Gt2CHVZ zoqhJ%=bnG=oLO_J-Caqmj7(e%7w3i+%x+vbw~qdZE?^%wxgdo~9Yrl+O|A175r=y7 z$YRJkeP2j|8=Hp!;;9DTRk+~7D|ngp?mMq%MSGdflt95z$dizW_0M9mg#YQHtD45? zW%6cB(l&kaGoQAWgfW|A%Lh65Pf`bpL?T6-6p??9)cb>=Gqw&uC5pNc2NU$S-SPAf zfB3W0PCeKdvKU%k3KPwP%0q6!6J;K~A-Y^v3o&Yqbh zqn?0mY?l>uYc1#lBNv?f8BQnj85#e=MZGEGlq+Xy*|$ULJbs|sU$OiUmiunqwt3t3 zZJRc1y6m#EAr-~Qh6GIXG*}jK-UY|i*Uf(5!AJJ(>;CVnuRZ3N;}@dJl2+YNrf&(?kXaq^KwlXbJQe}S`9L4|>3J^pU*!c@i;uLj2_>HI(fK!$^?(Jewj!?L?6G2e|h81XQ*^#oe zn{O8T?Rxejscvg-TKC|CeS;&cVb7P9_H}ml4-L1rwoDbX*Q;g*Tc}Akf@3h#wHhlg z9W9z1=FJcthS7+x&#@WMe}O+a1-{^F?7uk5NN1mb7m| zs}~*%SK&{pUCoCAWX~dQnGwKyjTXS^8vc{S!Au;aYQw-5mP$?-eO7adBWcn*`x)S@ zC@&vjPLZV!#k_|$RaH~Fc+rCO>(@Va?*lc>4R3hk8wQ7l9=zlB``0~MRZ%%_;lhzo zCed?;uHu77hj;b%?ArKzZ+9o3ETa&W^UhiLi`Imi<3%bW)Xw8{I4h05dIfI-mXubN z=WAFV&zkxwzB^dc$kXx~zI|HPRA1lB!}HquCjV<2t7_^is~eb_DJ`!mEn~3&FJ%ar-pwTGkoQc8ZP_T+7Oa!Z6sM%=oX`)JeGlFMM zeLY7pu7&0ZQvp9h&dVpNZTcHu!GvMyK}fPp)kc9eDUyD@fdDcT3J`$G=Cm% zrOfA*2^K~UcXsslbg?%BuPLzo>i>tdzkt*0I1je*XX#nyUD1jeEi^Mbj^mIWriR=$ zNz~-RE6%QE7cSOGk;C|MY{FEO=r!!O@2AF;t4E z9K+n26{-RVD~6OJVai&8NBF=ZPFU1ZsmulxbrN!F(2c_YV5-PQWCR2_UcPW-q=?BF zW~071WR#*N+0>OIIZ$(nIbc+EY!ao=oIn;7Q;yn9>`U5YIxp0Sit=FfkTOdFXNtY1 zhe8-O%SlCK#y!3afU@9JElR|Y3kao3ZVqF=(!P;9e(>|+vgWB%=ki<>{>@^WhYsxR zKfGtr6&KddpVl?%(-2=Kr{1>I6?!wqW6fSHAYbi!N`TFr9c#FD5Z25sF9a>iFbaV|680wp<#~ zx^)0~(YZ_pbLmv&!wL4aNWD`Sl80;p7dAlPTkaG4VIyUYrYw{-Eete4D2Ony2?dK+ z_s+mj9BB!fp<;154Iv^_YJrN5Vl&ACb683^0D^ZbB*q;bTOn$S#G-^;!;p?nBxW=i z%MUGHxS+D8;^}p3j~+TwSKm@q+fbgbo;qdH!Q;pFY)pO}!`g>#>)5w-$r_7B;^`a4lcFVL#Nm6E^j!IO`aWK}?2pZ~h zJ9iy@=&`3T?y|*g49l!9s&RCIGux%i(`|El>FH@<0y|6mmQTnKC(#U~(GBtDwLDrqGlQT6Fsz_Y&w{^O~#j`5ZU8Y*zMHvHc%p z949M1fVKE|in{;`5>l|EAR?WylUbr)-nRaWU-&^$Mcdp3=QmE8J;2v17#jjJI$T$m zU$S%opX=jNC@@5P&txp%Hv+1(7zdDv>5(KgA>iT0`TGbkfJKH?g|IN8v7HGOI|C_q zKZpe38Gv}3jR83$D+jN+T+hJB`Ilb9qpgoU_{%%*did`?^Oe8-)J^^UxHut$3%R)B z9Lx3h72R~xHIt?^|G~%q;_$J~8*coaZ+!g=S6zNa?*NRsIdsuUq2_2Co5!e!lvB8R zCBfC(B96B+W&!74X^kCLCSmyW9J~?u#S?bp43JpF5e*6!&sGHWsBQgV17u0&2<6^& zK_^rD1M|ROIawz2R5WnUbbaqLXQGch5+<2;19vWOOh;BfeT1+BS~Yi9~$ZBwtQWE z`N_@!ZYdA;4=h`;`pok$c|g*WhQ}% z*3!EAMdzM>)>-Gwm@$KSiot=QuC7=yE-nMBs>|wYYFM}n&m3i~BcApOJ=*S8k?z)Ca@A<$-c3-jU_FI3t|D{dc#XHLznj7j{Dk~f4bH`l78%Ckx z1p^%k5=Dm(bx-71DYU9CtLt(HnU#@XOEW8{x`0X2lm@%uGBPhnd<$9>T$2MN9uMI~ z)(@wJkX1be!cjSf#{_5mZJ)X7vkb2}}V=^UZN_N8Qp10L~-cC>mhFF8&v~g-6X6_}r-lXAHC_ z)Dl9Ft7gtAkdPMSk;2->x?D}wU{4P>4`SqveaBc>x4oBj7`mFK)q)Y%0ND7V^WeUo z6IUZVE2Ff-8N#8wata~RwWU!vxKBz5|Ho{B3k)#G-dSt8vQr3#y-srk36%(psx1rx z3rYYqjKE0<G^lunONcNx~Bm7dTC8pa}bm0t8W6 z$BC=zBED6U>*%SPR7*AaQYoW7e7-baR5zgsHEJrV+L)yResPM*KN^7onj>jcf&3sz zj8a*Wq0-2cz6>y>X7sb7m^`Wo&X6j4VQ8tth?4Z1!q{4&VA6$kXeVND4nokh!4q#$ zBnHgPN>B)N5t?ogG<4(Mz0{-u03d>b2RIxiRVsDJC2j~tlL7@Yrj0H}b=f_K6`U1N ziWJ`!(bG&1Ath%8E>p2+BPDRgzfzkH0Z_CFi_GFLAdy1Uw1-ep6xzrHMRbU9%dn=B zOM>Fg_KvcO#`7+D&HBemj_!K#-#+`VAO77BO`kolvuAYcjw9VY1G8r}qYkhU9=Hc8 zR%tlMf}}~+o?IWqfC(H#Am|0TyigK8=6ey`stA^yMY54uY}ci(xThmNst}P-9sKj- zDKfsL+Ht(|;fEgi`7dsL>4hytqxqW2GcUdJ+OyBOprNjzudj34mggT|`{>3E&y98W z)GEaLR=Ngv6Z zdsLu@yzy;sf4N99^6fK&k*<}Xu4*p))Js1)j=lfgbE$BuO!JKCCB6-xa!I)mMvbyWXizEC_^g^!OIR~edVP^Ev;2kCNCMwFm8gbLLND1iAWGBg=^zp+!Rf;#vFj3zN$e9bji-2APd-E#ZgZ@ux%toS$T zMTS*hohW4dmSX}QukxD}VKyuEsSH?3yrpLLYxRB${{KI+w0&;u=!wy@&wq2@z~H^V z`r*`R^@BXQX|PFMV~Pi_q7nQi&Hp-gVG%NQV&5e)rGB$5WaE9|BS-r$yW)m}dj}@Z zJAd)=ONP0Ea>a3G+a@Zu%&>lhDmJ!RtV4;+Ko+4dX_{h2%|>2;2u;?JVVZGlWHLG^$??*|?YDe?;}iGghTFgQ z?Jrz&&B}p3;2p;hGMG$=a9>hUS#;06FaGZD{qc#DodnWv-2A!Mz5cAuE_6aP0Wm%Y zooMD9-7-}dxD=sbD?$=+M)X+5cmqg;KiFp`$1#r5NY|Eu1Oemc#S@r9XfTW1bF`aD zM5)8Mda)--DotgcTNLB>1f3~fK=JrfITZSI8X_@TjIP*`71Ri9TnXt;@Q=X8>6D;~ zoO7M-AqqeejoSX-h{(pkAq1xq2@LBggtSeBOa&xn(3fQS@<}_A4u5h6K%~vH%L0&x zW~lE)3|B2c4Gov=+H+ud$d{hE%gW1>fA{IX?&<2AzHkj4)&3nDxKlD``4u${)49hB zPF~SUa^}VcIyzXhW>@c#ePcsi_(6GHO@003%G#FFGNKm`u`@4Vbm{6m(cO7;u;X~q zaCfdO$C{`sR3hCAx)vWMk*DJA4i5gtXa-`;(yvN##rRhVS&Su16#Br-3suqfcJdBV}`oq zU|mn_gukz@~ZRCzpNx*&38h1;J>nr#Y(q6aNn=CKL1>9a5z`lP*u;z1$iTbNAfDU zqXARcYBK z5p`?6sOfA+2KxJYu?lM__Vsq~q6iBCIF!MY%kp&%^%EzxO`JHrv5~L%*5r80ZiIXL z@E(ITR%?b@G#5vh4%rgB#;$B)OW~NF6i~6T4&F+pETo+Yk~C}0O}^}E4W=rweX>8^ z&e*-YoLjP8dtZKf`_|`%J3DjC%1oM$fAT^{NzveeSDxVosEe=v-F)q2uUZqakW~u$ zPiPITLoJ@AQVq5m2RQ6?aNCt0C4?7)I2yw7vCn|DkvW z_=Z;+vac1`3vz>j>cC(tp774)YKuxH^c9U>uaN)%AOJ~3K~&xR$xr9Hau;9w#-V(k zo{EW(lgAHiz3=Dm{rf+jf5nQ9(QchZ>w%HrkQ^Gq5jWs0xS*Jg(ok8Xfv`;GX$H}L zj7It%RSiR#k_BW#X5|Djw4cz2Ct2!-3~&PfVNP%cs387v#xLRSa;z45R4S4Qruz#0Zg%u!#{eq(U{|LN62%Iif;jM|}bW0Io^} zOiZFCwD2P>FvPjkL#1i*E;G8!Kt%T%W7#*tGATKlo=8mR&w$)>78m z^i`jtp(obfpX=E7j?aF2bZX17QI?j72f&eGc%;OY2y7xoN5VP@)W9@8Yke|5h6bFW zrHD+y)D$_^i&Sr|uAK?~FDd8UkhlQZAKVe>_X5W;I(LZ8p* z>RoQ36Qs>fRS@Pv*mxvfq>fA-n}+dK0-)G0sgyJppf$i<7zubcG2#URiCM7hOp|1l zg%e=_6BL6=fa(X@J}~(PzzDZD5EcU{kq8xxVqA->dU>|Jq7w>WC7O)Yh2t{Vh>v$U zD<1U%MJR`cjRvuh?;1dNpl|48XKxwJccgFKx(5%w^jt|(^@o4=BMTQT>h9|t?CWZ* z%P(6zlcz^DrFhYXWP?5Mf&&veV2Fo4$O#8dyal|fp{C7)+cwOxGvlg#!W)6s23nVz z(YS4)mKGBz5TUPkZ1d(#cm3*D4?Xa3?~!AC0Ht-tyo)ZmV$Ip-R@XKj+<*A_7dCBt z`l&7y%o@0sz1OJal|?ogfD z3Ip(~s*^7J)YD7f@_~_Sq$K$E1mcVI6crXmTVFaA3k3p%LK? z7N|gI^+*=_^cI)65^q^5nG=BM`6z`+9f$n5ILFa-CS}ntXhNQe!Xu89sH*W~s0fzO z=50**p-sw_Zlp*W1P{hlYbvY0_nq(F{H1T@%9TBP0Ls>=5&@d|HI}pLALz7_8y@Eg|X;ntlF8N7DFTq3Kx&a9~A&Vmphj^Y@W>BzP zaT0!VGNmP1k;|496>Lgg?jyCv!mZ%J2nsL822k66j8~YINTLa>ObxIRtK-gvh$E(v zDc?W_l)#>n8T2?$u0d`f3RD1aOh2qH`KV2HrUZKec`pJOdVZL5CFk@=Vl*v^*Zpc!udOd+c zEi&OywC6zoo;{t6YA_iO-hT2=|MbY-(5GPMAC=S5h_Xu+1o1DjNNNWSGx=A3b_#-=RaV3>`mMG}2pKTfS)V!b>l?Y}M-3 z6DGBAtBLPJFe`w_qkd~?xTdOXLQ8#1b9q&z>Iji_4^^foQ_aBS$^WqZPl$g5+$KS$&dugY(cO2iz4@CzzWmC|-~Fzu zc_&0v{-PL)LGyINDI+U5jR2KG<>fNy&>>Jr!kGaj z)WVg9s>Fe{o5sTk!4r)gE3HnhE0P+gxKp&xSZ$OCeQlN(PV|-Own(ylD zi+96DD)`D>W5e@LZ|EKznKZG5%lrP0&aT0Mme$rH-(4>$E$SWaJA8EiradpOKe21` z5Q_`)tb21?^W?b=&9llXT6j@QR#|GZ|5(Sd-ADGn)OU2(aCb*VL+#R4XT9$AZ@uKQ z*G!qlJ9y>&13W7|*AKRG*!2>)YVq!%gV4*+-7!23;%4o89tB9j)i?NURnH) zM#2djBC*Ff>Ld9;jM?!URT|g&(G*n*SOU;l9W`iuDywt#nFjk}vjn{0rg0>8>=89Z z3@~H$LA2f5H(-y;49d_@X})H`{H1)b{G}J3fBdlr>+7noy5{xGliId!efj05pWN{5 zGsVTjZBwSO>(0jlA_Z&JY?bc zLiyw}{3EXA&0&)x9YSXbWjUZrJSK2rjDjh(V#m0O-UOVEZ@ndgLouC)A0s>$A1(tq z+&|133%%_<9f!M59PB*4zw5-Iu9HW)j~wV9=_?-U92sP8JKr*e6?xBFy!`z6i_V@f zWqw7~gwb5($QWPH zuRf?1<^>y#$g5LgT4ZPH(ye4ENMMbmUtQ9Cd1PZRlWdVMY*e>if(RVJa`>MWMCslq z5y-?=vfvKJsKzWoUA}z7`VG0mC)?&MD9-ajK~NbRIkaud)J1b2RU{D0jfA zKxLA{!Ic*P(S_*+V2#r-TCf7JIuj%Lq83(CJc=1v5)cm};ptg3rJBkLAJC!nXWc)z z0fW8){UlZNawNqA0>2(%rzboxb{wMeAMB99z|(988vvfCGuc2s$_OAkT&6;bu~715QD8(5kP^s)XKE&r>0nz43}%`i zodV`eMhdIo2I4I$W8s{9884I(aN4HM>K+)!I7>)vp~l*w%`zx3jrxBl$bTYj+Z z=_h+SyIW_?UvueeF1qyES#y_^SJbMDQ+)u$6jH%ZNMKcA7@o(d zu;6=qw|l6cHJF?uoP^ZXgO#$O;vNZxo<)+^8n77y?V7Iawj)c;vr;h$<=^rPz;H zQ(K`LL5u9i;c+{eQ0Wkx2X&b49qAqFJ$CHK z&b>RHd+GVL`?qfBI<#YKtastk`Pbj@`kQY0@bz!FZqD2}<#`@N9pt_XZ#wYZ?y}N> z2`!a#r?<|WR?|?&m#UNl*iEfq(smNEd9vNjq zM>Gif>N41JFCHRIA+(Sap)QjqbCQDcqgtw~9EJxT1Qc`0>{&CnzVzaey?Z*lPh9`H z^BIMMIJ9a*iddE7i|n&zHJ^R<#rNF%02fZT{^GWIa~G~yF}vS)4I;QCQ6nCxDSaO1 zBRps$Gwix0E~kW+=oit1&}>l@05Kmzj=q8er2@Nl1&-c467m*#fs=e&l63+hJL^WK zdJ-KvH%lZObPkRI4?k4aUBf+7Uo8UukTd zmK(|=tf1diU)$VV-%wXo;p`c#No-2lCk!XB#6oQy z$SNvp&RDwif{QL#ylio4d0AIyN5`?F-5n=7PPDgocJ%jl^KlbiJt`^Y3G-o==I8l7 z7P&8>f2nP=w zWOjVjIhQY6d0|c6#Nx6#R^J(t!H?KUYA zt0wC?c%kQZ2Dz8bxh=rAg;}n#YU;FUO%qxP zm_5gj@vX(`%6wnfv7y0{84K3rt7>r?Z5zWNeE?+!2lAaPZFsPMkX$q|STZ7o8<1sw zn$5Ik;ucP#+~^6Uyy;D;!3V49?xo^T-HE(x2pSy#XL3cF#|vu9%C~RYI=F3L+w28J zHPu{UA}vc9AK0<2zO7}+c`N#IEU=^k)J4b=eA-;}QOXD|LU5En@>Af1Ew(6dm&q-B zD#=PIiCS?zmF2;oSwghX>fSY80}goze&v%Er)yg=6JiYO&tHm%?;!x{>Maom!u*imZG(DO8wwzrbz zwB2DlK$E6rh#|FSff5w8#T73<{`{7;&rV#ps<^xs#IDHF*S&x1=G>H~Gq1h0lc!60 zJistRSP`$w|A0xO>1VhkrS4HU0CDPrH*$dU%T!!&$0!P(7}Cmf_Pm#HqEeaEP$rOo zmjs@idMT-srxMJMLJz`m5;ZOG`YPqAea^sGFi=pi5FCNbRG_n>s)=k*Qc58GJVfFU zxt@|#fs~EcQWxfnkLeVWsTnGc^ANEC@WnxD>z?}DJw1S;~lD^68ca=^U>YAHazppgh`WU&YZ=C9v9oh z%=-Fu6x5<-gV|#=k@gtJaGSmxBTpuryh9V z(4PJInucX7c(nPNRcBq;I$=5w0LGJh%nR^9$xuakX=6imb2DF&Wp!$J!tJ;#uEqR? ztE+IY5EV*xO{wa5QX`lLKBhp09A`SLl!SNEhZ1v`Ukf3Dvyyf(86!t zaF`VFCs0T2z$y~{%m7>bg2w`*K_$p0^0FAG!Dm5aGu;x00dfjKD#}VJQ>h_pz)P8W z){(UWXXbfsVLGzc$wP}eM)G(O+5aFxfSpFRAPwa~B10FngAOSQplb;gIfOHW-Cf_Y z_|W0@!-r3Bt-=LY@z_vho{woAT>r=~U)k_rN!iei?|jSe{r>OGoITeCu!n}cUSc9( zg!MN2W=?IHJF~f*Wg>~B*j@>3?h-1<1YfmvtQ=p|&BqdlhFd4JE?BtW{yTrQYyaL^ zv*&Y5?18&}T2)iIbj6xUQ>Jl6M)$*7h(iONCywkruy5OrEgN6i^30K)Te^b_mEi`XiA&N+`w_dM%v~mdFk(@tOfXB*W=f9|gGR}mo0MZNo|CGsoba=s-7+-L zd&7;__$+Z@3(8hYztc(z5dY&5W?l`Rad%n;$^&sMsA~|k4*eh?5fn}X{l80E|2OEK zUKR7>P`o#~@8IwS7haRkm*0Np&nL9-(QF>}w}Su}46nxV>a)|){aPA8HgUMw4sa-* z^5P?8Ww{$}_@f8z+t@Pe{FP^4Ia=b{V?1!x)!W(AdGex*&tsu6t~4+VPM^Xr4iQMy ziq93KMm1K{KhSsd;1S+<;RbAcKDBh_%sF|!=^3u#9Vi$`V-3dypyND#GG*E$n~q>U z{|q`fW1xfHxt2%;G!~^+2J#>q~2({ z$pyk`y=DU#Peq%GNv}lL6?O^-C6Aa67*E+!!;Xu7B$HhE)E*-)_R14o9B=^;0U?xN z)c|F51yu4!8>LE$z~R+8ptOB2WCK{#aZAf?lN>AJ`1GVqjR9w#2@frp?dyy$uUR_hqdUz8` z%d7Z;vd{c6-X3L|tG&0Yy{oH(RR-{&n$}5YtXQ*Z^_td6lX+Z?DFMFr=hfX9kJgve z*H+Zl^1Om;4=R_JiLm5&j}!LTcEl&F*z~>>6M)iaIIEKge&!?M7!?3v?+)F7CEP?O zLLg8>)mvm?cVG-L3`00XMK3M&78M6jOnHGv-^Z7DRV0ClG@1;A(lx8xfm5$!&A;NV zuD*`W9!6KtGLsM0mF9*9Iv#uEo|iVPWr2DYE57W~%R77fA9(PA7dCDf?(8V3sXk-* z%CpWsXU?2?RW(&;2&Q@UfHi3j?AyO-(`L4V2M@49Lym{}VXm~OjHMCzR3U5Tl;#-_ z@(hyGjCP64c5`DgRDx*eT1HW(cOgAEl|kR=T<9RP)I%Qj8**iVvEusX)>SK4o^|H(j*b(*{N-)?cO9soxM1bkmsatO04Ln>$xxQ$RFa0& zoN{9tRq~IE+Z4k6v?ZRys*5}v;bs%mj~xgnf7TuvNI?(<3D|tL7RTmDgn+~JzAcq$ z7YKnVQXTN<1di~T4JqQYMio32(f!QRk96#LvAnLlm?ahaiY|KNO*M_vQad$1K+HA+ z-&UtK{sRiQfN`X-@hL!jPhPK-h($g^L?Wgwa3uhFr@(m}^vK+Sj^$HKj7o40ZYlXs zxQ!7%&8P5+0gHH0R)~#pT!6%$(J2s2DBJ4XwZX zwpq)j-SpW%I+5#;;n*Vn_`U&XoMl5f>5?f6Z^%aV5LF3@#;Tn?L;X0S2~dSGj3JsJ zbSWGFQ5t!Y)5$Qn^)vctg(t-jSF9;d5^kIUY#WXrC+Jh6F0EM<9lbtG+07zQ{dzQZDtvQ}p;kz2dnd66^ec<+z z^H%)M|N4VN!ySwbb*~{Jaxt&%;yXTE1f2j9PJ`!lp2*VInU?88#9FH z%Z?b{fMH=+n2VQu0E0b0b>f?67DWlH#{_|fQF=B}+j}CL$U}b6s>#@C!qkjyZ-x#@ zNIC4342kZfrh0*;O!b9VaV}-;=JS)5NiW$eAjwEdv^GpiID0?>hNu- z32-H$2?T^Dlu~dK6=akmTDqq(nPhc1caBaxk&j{%4e_Y)P=O{c1siRY3|KJesE4q? ziS`bjPA)4M-Tv~k&#!+dS2TFz+ipDPk}G<9`$k#ZZK!w2qUn>TRAOT8qjP&+oxnAi zgBj?$gT23rBQC+CV)3Tx8cdB)*XK374=?GKY8Z7d5cy|n=z}hq8cr-*&D!0(Qrjs zFy^;K7v^BhC;kUEX(q4{uBY&Ea4;xzPz=b6Qh&%MWjA1;{BtG#AqlQ5BsSE4<7XzmkYNaLa7y&4c=e6wNAV zBQ6`pHu?r!QZSJu@B{2kIq`_oga~3%R|9&QvSV61iVT2Ojv`=5C=2+Bjg?hZ$BrKT z_ka8RlWU(YscxP%Z{>`+%Tdzi%`Y6@v4v)T) zpn<@cKt;_AB^AMK6ba1PJ~Rm76l5e-&}k}>v^)e?fiN+{-YjqigW<3CS|z=GLkA8V z<)PG)VlUQRAZp~s6E5yxfiXmPT@|-HCvtNh z9(n%(^h%l-BCz9l(PwLGxQX4)T|Ebnc8wHa!}`1K`qh8@%jaq*%q%I*A3wZ*($pE# zrp_H47(Cg2ysN9d^W<@Ey)aK;5U;MDI<;-_;zcW0oUvrlf~KY>uDW?ilLLzy*>_ZKqUNs3RMxRkY9+yS0X!YWm{AI?CihI*$spx5l8JhRKys2HxV!)G!!JB=@7m&;S#uYx z7%i^A@t8GW2(Wd_rZbi;V(9^1OhE~0fMPVIuAS4k3bdH!DjMVV-IU3bDk^7i?+A(5c^UwP>eI;?v*QOZWM(;`zY8@vB&N^$}*S`9N58w3BlP7W?`oPEX zrT_KX*PYkh75KS?Vhqhdh`3LbgWF)2(-4|dkNnIa@Oxp9oxuz&#R>8VpioiIofXlZ z3A5uT8an`0EG@%5@x?;5Dvb3QYH*+*;z~qyM+xY{E`X5d7{$?-HAx0pOVlr$qjT}N zkMaVabY0|IgFkUwAXza;*P|Ul#tu*b0SYD~Rp2KPbvzBUH5Q|v zJYiyYWz}HsalX`B)zHWSyyX>jxzcJnWz7wB-lyWW^T|V_-N$o-y}8PY1xuH#UUS~; zd5g*_YloN@9e~ln(GeCe$g#u#iy>9lRODS<$glJ%M3NESVhjRfDh8=JSQPeBu_{Q4 znm+4V)Snnq2bw92yf8A^cE*kwlb+4U>@QkQsg0$=zQ9C(9-xvJB4}Xd-X)z!;;n_)DTCm1a$t-b8Z>lZIv_{byoJ$&cg8#X+5`IT4m)rQwx zdBsyttb2OHhG*BWdv5&`byFs-IAi6Cl`E!Boto!~)qLrUSu^I&oparFuRYOz{LsO@ ztOLAn?@pc?VnJQL7?I-_MPAR!A}ot z+fiI!x9WmxCQm(_`4AorTau`Zl=Q4aBfnk0|j(VrK^d|oTQz{tb~nhS3g zP)miK!j@K6h?woPCGiR%;3$!dPQRcMWZc~C+;a4>+9{V zlLLk0hGBJe?eU|>MvRC;<8!mARZ@X@g{rVryf?)dSZ zP0w$7eBF~zJo&`F?K^V=gSpa*>IoB9U9x7*oQ2b7&24F&$m0Opwr#)X?t5O^^jz-5 z5xA{toiu;pvN`jX*EdfZE3ROrnBF0#nYl!Ao+)2eTwBM->1yK9Ggxz-VEhX1al)i0 zI75TkrouvLwicaLQy2r#D~gSwDV;#58?kWpB(HU_g^nKf3jIcrCTDCb22;^~BQ64J zcwwWV7^;j#sigo(5DwgsW%gM!3X9I7O1OipVPbj=E_*2rJFx321?Ezdu7&wVd#f8~m+Ub|r7LZqXMiF70E<>H5n+MD4$ix`w|5*q+(9~DTF!l_>MFjD)xP$j zyNLR{8n)DID zM>XMylFihU^q}-?!KH_EraB8cEvPfV#_OJz$TS*yOiIr%LNdUjS?S%La>K7Ccjap? z`^SI&(%ttzvS9Aj0<#5{01vyF#o0J+&rfagr*#v&U$$%k z_ux=o+=h#_TM|ZlAZfu}OmIO+!Z2T2o@Z7TPp7rUy-F(3T^LWf+IG(tOrgnfE~&1$ z!*_7I05azABw1fqJL}F6c}pvuykHHiAe^eQk8z2&E(p&#=DRMt;`&{$?0n(b7yk1L zKmEPmzpKVQ8qD5c$!av>gyPq5ws(kMUKKk{qfAPB4 zp3~j!#~XM(fhzPmiX@-<1xJEAN>czf*|&EGjvQpByD`dmO`{vuY~ZZX2s zzQy2e7=Xd2f2vhgV}>y|wJFUdA>%rI8*F%cAcX{>T{n!&2>T4CbY&L4Q=je4BUu%> zq$ZoqzKnc}z>=Px z@LESs6bk~W8irG(s6`p1ojGt-s(@wiSyNS2Thrg(+0VokuNy31b>{QuzWCg_XNK!5 zYa5!6clT9Rx3x~1F4#FS#CB;pE-}<8;J#hbB=bd-q z+2>tw(dAd|*uLZGXP$X^%hpHlzUPs9?`ddho&c0UYrj2b&Z0&0r_Y?-)ZA2ERnyu! zskL>&;-#yGMn+f*r>m>`czZjS@h46kXNsB^M|=Ca26>&4hXMG0n$s@aV}UgHpOK@a zyrR4;Us+jMm9MI*$k$ZY)G#4XTT{o^Bl%QBRdpq7cXuA&wR6`?TVLcGjXftjc}ii* zwCU%ZckZgyEAW%2o>>3G?|=LF!6RdpEpu00G@JMK%Xr+0(X9&ML4M`rU;hrT&YTrZ zaOvn!i7#%KmGP(pQBT&webt&xDzurDoW&Wk^lOX??6R!8tbM z6F_6jmeIw^1%D7SYi@=w($Lj0jkmS}qN2T9sE8e{m>LiZWZ{b>ea#^AG05TbFlRF^ z;ya@C6Pl>i-PJjXN+JcpSY1u^p_6+C`ua;NnW9A}kd|xPO$6S{!T_3hLqkeNk2=wrs0s26n~A}!t%!6SyV{Mv$PJ?k zt)M6;f;@7W6LAiN0$L^8Vp_#qH0eVcYC%q{A;ZFE#okQk?j?wnH_T=#^ah+wK8uRV zLOxYt!t%hAxbyC=aMXaY;7xDfbt*K9#R>Uz8g#y7#wEOUH3Ep3*g^@s3Brn3Cl0r> zawiY_^gAg;tj_WI51IlK1Q-|0Kn0gb5G*FU=(ni=7D25$xepF?LngQIE(>)Ww8@oUL!qU>K8h0B=NFyOlZQfWX_HP^RRSr;0kpjk+?=F6o1k`K z!zM})-3F&*N*pjoDAeN84*tU5#AX&aqb6rwd3zOOCDrPzC%$BZ7KEQ8ghFVt6?;W1pw&0>Gs~>sjjt6e}dC$q?Z+y$!ZCS+?TVLKkHa2NmTWzc~ z$YM3H5>^tqMCb#-#eraWKVeexI!;61VSp+h@%d2_w8zHP}liFt0>RXx zLn68h!1*V1P=>t8DTPsNG=SN|%sR3tv@9k>@qP$SzvC@%zQsWMDJ>(y4-NJ+4Up*5 zsc1+xxiI>M-+<&)q%tDGzfx!hsoA(~7HK3QRq4V~Tn^xhfzMz~CHB#OMbioqwTcMQ zAYCoEeCd{NetG_iGcLUB%88R_`-x-o@vNaqT7`v@Rb`w(itMCJ zI6TPEbz-;DFk(DP4#hmZVtE3F#@O9{=)9 zyOJZdWL;Y+huG`$3Rqx0D3L?oDK{aCVFdkQGR70E-*@o9Q6Af5Jwk33j1~1&mJc1; z`Rs;u_YJilSa{}&kNp1cv8DqzQ--)=hf4IXBg4H_`P{4-ZH*0O(a3z57aqdBxmgJv zxq^&)=w~{WIaN|z%rX&-84ew0EH?J;cfaef5>)2B_F);4`w z+k^?NEKAAY2Z!=uOqO=;ILQF2Tg#i@_BKC^ z>{X_rD(dU2HgdNxlWmRApce^2hw50^_!~oEKmoAyl;X%xm9Sw;Oq_Et5hqc_VrUN! zcJJKra&PAeI>w2Ur_Y+RATG%iLVC7iIzoC7Jl4*&ytJ4VnD4#q+cgzK-}?SnctzQZ z5nh^L$-8_RC@U)~s;aANxL_*FHMNZ0dDqSleBgJv+s8{RU%UCU*IjphZ?|lOyT}k6 zjR%yZ_{g$|o*_vs9}pKTrn9nTG%&AiHE^$p{&22M-j0EIwNR9{X!x1oC1`oWZ*NU1APdlk8FfLRN-G zN_X!&#ES;S4noF;`uqR!AO3!5ps%s1{^*_q^;70HO=x3sgbsU{46vF;Fn!kivWnV4UZuq?eeT|e68R2NO9Mf&EFQ_^(bhCu!m!fLnUF4L<3HI( zD&i^Sbi1i23k;dGD5QwV2}q!OA{X4NP4+}raE7_GZ&YR<8U`8&)EiejbQ3JToCr8j zFzJX=qx%>ye5gAa(>Dq_RH^8e9*(w`v>#dwJ~@YGI7Ml1-(dTR4j;16KkUrlj*pd; z(;p4>ZGK_H(@(AIJAS;Rp@9zvuRiO{*)wNwS-bV6Et_9>?v+=zcOE-}Fbsw2S|+v8 z*G!u}rLC={wTWrw%8D9RG~rfHSQtGqI%2s7CI{SXDGIJ9^Mn8suU?XKQO=->r%-*& zN1gW%^!If496fey&z`*p_wC)iXJ>c&v7&+gqKf?VnKM_fIdl2S)eQ|Td-m;p_~A#N zd+ynx_7f$wb+hLzK7 zT5t+TjOLk4$QPIAVQjeL@XiAV56)PyI$u$XvbB7Qw@RgJc%uWnDAa3Sk?OI8Y3N!K z957VI2YKKqe9w^#+{6HpSP2-;!tj>&Ke&8wV9(r|E7%g-{fZU;#SDFMM~b*+#Hw7I z@Nf;2OE@wwdT?=x@Flsb((>YiCvN@dr<*3uUUKPGUC~IYigO3IJip_mCqME1&s0vU zXT}cpLYJWt_>^lfdBH=F_f)QRcLR@?gD8!@4=DjAtx~h-A?1+8OjY9%s6c?NB89+Y zMq9HGGEPQhFkw~6owgZhqPa>1z`#ffx0NL~>x;{_3tjPH4hKs?n(`zB1Z6mKQ(e#$ zU@*8yvd$q@OsKOO0OGkp5zGaJ;0Ce~c!MGyrm;gkRPlo0w1JqwcwG##HIwP^!|1%} zGF%v!)>qk8^4D+qqx!PR^Ul7w%SGpk>q^GIp|oZMhH+1a5`cIU@bHMvGD%ekc8WGbQi}vnEV$s}0H;Mj?am5P);X93q1#N7jSQ7j<r=EQL`3+Bv96dHP?(!>m8div)G`Od->2uo4hXZ#-00hzSpAQTw=# zlE)C7geB<|Jz*Z01*$Kh4=Hq-QJzMI!>OPF=N)U6)XA%2Cxt6^SLET27l&S3Y+&6}R>JbZ|$pVjAGbnf{V zG&Z*M5Ae=`Z5N4c#kfd93T-<>6aaQ*QER~u)-+{^6JFUOpPXn0niqb?;T1tdYKeoQ zYa@=)MpBdri7h&9^9+r#M@^K`$3@Kmu^rP^LP1gxp=!}Df*yq_E@%pQjC|qXBv2WA z2!FZ+mMZP+>^gj;oyYTw`7AUqt`?7!mGnRV^nT9!#H~hlU4uR)8;b^B#dR@ce9bRc&2$LtO=5BH$Y!^cRF&G-5n~ zju9ZmAxs4mlDC=2f-aevB|AFSNW5Wix3uS&6dHK~Bx4sqlKzuS3B-Lm*Kr~ls7|G2 zF~>-R{^zNrf4$>VF6hpetI71gf*%rRuc7uE5ZK89?dX? z66hp_nmlCNIF>?2c02{~YX$$`r)dAKdmiAq=<8qqy4H#L!G4tE{d<3APi*x_()%0KM%8ky^Ool^A^nf=68Sa{`bC*@1}qFL!bEPfBxU^ zeEZcsXg)Ox@T-B~Qva5>(17teQ?lbAE^^H9`b+@YNQ5y0wl5$g5s?h7_^PG)iLo)O zv)K}r0%R)9VX+n$xBZ6mGg@4Ag|Og_)7XjFYgwo{lNEfTb#k((tFGeGQ`)*y@IXrP z0ZB9rj|vWCjciC^#ISu_IKiQJmV$n;Dsbvp6;ozI2oyl4DA$UlKT(}NlyWot>j4HRYvT zl@E9Hb+(^uKgL%Hkf5q{;#pT-y=u+b%`L60VlXf?(#OK9tiL)oP?{fWs;{nZ;B|IZ zb#%W{j(@PuB$P$~y@$+H`0`xjHAI5v^q%b+3|e z29)j97Eg}}jr?d<%MhpiY9v6>D>K zlCm~bSy|drRDbehH&049Y^NS-XA$E8_^Md4^5Xf6&)o6y)@Pr8dgJ=1o_YN73Dc%5 zTe@u78Oz`P?)UHp-GTiFx9`}oW83xv2M%oB@XV$s*3{;11hR`C84aOf`KiKSw$5U4bV3YahGCnV4!!Px3jam>qPsBlPCDP&ao4`rO?rl zV?8ZoDyyt+YFx5%<+5eV7cW`V)X;F`=)tF-TL07&PaWE~H#b^d+AwMM>N97|T2xV4 z$H13w6DSU{$CymrM+3!?RGV{%!<99>MZlDhcUj4_NG+lVc3#DhYZE7G8B(xqIJu6h zcZOb#UO~n>S{n0sh^A#-U4RPFsL(C#T`OP}A$W2RMU<5=-o%-hByfw-fTKi)z#~O< zt+N^?&KY1;MKLRsZ4hdKIB3c+qXaOM5IdtftK$No&zi7BdPV@p_(){_GJ%u#r3RN6 z3{a&FFr*5aN@R2kZ?UqY1;(1f@$$fEU43<~y0W*|bwC(G6StVwuc)Zzq2iP6owd^& z<3Wy?%uobX1ZFF%Zi$(Ts2uG_V)BK96Q)UOXDR?Ur~qY1K#}~3DKOf)9RIp`&63PU zs{ud|=+Q(Svj!oc{iiw@QCc(~9L5X~h3Nus;LpG)V*`^jc4#2!7DsimL=vJzDWHv5 zM?&=Cp_I#u00<@m5HOG_iA@u9xD}BG@eo{TWmX1Ksa=ZFkcZdmz(^D_gydkCjHEN8 zLEP%@#UU&1#po3^=cPp@J-l|*)l)UC4i0f4ZUhpuDzvodCxQ>VbFqcQTG;9!;mC9Y{K_+D z7)o@OdEI~ys)10tms~2-Q`>zY;S_7Zvj#=Mh3mA?DHx<{5CpBHU|rJI3bw$Z!)Twl z4u~QERGoV$l9h!}t!FKgooBVhQhT=O3nTlfO7APJwe zLi8&L!?Z5(^pvjbKtp_$gopSvjcC9Z_KH3Yq_{4t{gc_#-Ct4La`Dw~ee9uMZF+ot zPj|TF6%`|6`B!!y`omv2x9fnX~vHE*JdN&X<+)`Pt1I*FOHpLp!%@GQwBZPg;D| z;$>$}nlh`btdfrgb@$tgf<8tbL-~^8hK9=8+UhbNZYKQjEgl3(uFo-4tX5b`K*3>2 zDSO}U0g0q7G2)Zj0SOHbpo5d*#5dw1>P z3-&W+PH&ksg%xt*ZpCQFu_Mnt`^1K)p4|5GmRxU_4X~`@n%CcO<2&Bl>nq$WNJOs= zF)+uKbDU(|13dbegv?4#cOryF8xBvRK$9bqve`y(2b|J2M2ii!NVChzvr{O@0oerrB$HJ(l^87)gA^S&cuU~iXy$`QE zFeW~1v3~6l2?RYGB^1j(3vf=0xJbg>PcyfD^@;znd|Nz zy5!xvj9Ozn)cCF%&H@-cgqtRn|y{bWhkQ}TEmWr$S^WoSy9GQ zTg7F0F6iRPIov#2L(~ZwBYJ4BTxIF#b5Gp+%UixxS>F5b{kPAaRo6Gb`wn9R{kgvW zqT?s}PImP0^fU8(-F>|W_wM5^=)?(={^4)`hA->n26{jCM<4#gCqK-`9r_0Bgbb^4 z1NV;L$RO!074$-u1<`)sB>HHC<3TenJ8@8R!vDQn=a@1D6y;5*5d#d-D#=5k!b8P* z1~zlZBGYL*s__RefCefO8A8Sj06P9q$;1+DX~*b4`U@$jq~W9kK?AOjF^G`Qu85Kp zA~uXAyh4Ta;DImq5)1v1fxSQ%AttCHAwCivB9KsF zjzbQtDL3{j*6|!hi;o=XJ$ZtWD?RQQkAK{G`!626{byzMO~u9K1FSyS+nFmbo4aT+ z^VxG3EY0Vu`dKCpwwOIY8Ka{W6%~z*ReUPBj9Fdpe1RW&Aw_y%z~LbL`_rzW4SV5~ z8`4uk0W&8dp0b4~c52GchN?rGV1{^Pou&uDG$%Ss2gqsAP#d~cZt6fW`Uq@D4gV5$ z6(Vn(;}vicWubPhjy^Mu10Q_S!6$U=Lpm8|q+WXRL}yRmP`I$I&2}7w(LtUO)acNm zL%Uyo>4jHzY#-|EWH8z^ZQ9~Rymh!}>f}k)Rn`4{Jx7loKCo~1uHCzi@Dg+TaT%IOGg@yeWI8A5_OYb3_!{&>X>@L}Qe`FwRvYjgAD$x~*{ zoIPXKtcg>m(03g=(*D8=tdaD>-km#hy?wdLnhBGq&78ZSWzwADlA3{GKFiF=i#8bj zS9qRJrG_RL!||j7(Sx{VH>fS`{gOWANAk+9xijU#54r_LD}{<|ZJ{3bxNxR-3S&si zQITVdG)l(+0Sv9wDuoC#;m@2gRMGU|FEK*pl1W$7g{&I&!D4)fHcvWY{G2B8Z*LYJ5U9E%zfW8ZP9sYp zOj|$F>N0Ljr|T`_3dM;ZYoHfzs)K_n2_`Io2B>JXOa>J;8CC;$Gt+a4r-6K+r6wZE zNm#@x>1S;*MoHLOFg=zH;T)r(7nw0o02}DjG*%k!WDaX(sD`sg?NFVSr0gc!9zsU& z;DlZ)z=}NuEI_8Rq~g%?yT0^0f3;xMl?^lI_b`^{mCoX!=kNJtfB(_ffBrLLQyTgP z`e1@jlo+g8VvxtZ9btNnVsDlf8XWdg-B~PXVhR!z`46c8Mwqy!@jjV6__kDucg`?f zC?|Rj#L>f(K7=CFnxp3^ASobBt5SBHxEDj}Fu|?@BoNKZ%K=U~N3#We>UdU*cC1tC zB5a~9Y+*v~;-a*8ga&j{VeB3dreh28c4X1IRsEe=7et;F=*W0A}s3d8SoKk z77Q8dd*<jXEquV{Jt!LF}+I^a9u9EsIsDH z@80$w{p7!Ye#@P`$J%pM4a=6VTyysMvu4dLudd@u!Hhu&xjd*v|FC}j<4-=ZZeagD z43%$cS+Mwwc?(w6Hcc5Ts&qEk`_4w;@EfjP%9z4nL90?8S>l$JI>LJaQG2mZ3bt03 zVM4VdrV}RsI?xD>1Lc*p_KqBixCTcl+|>y^g$_}Zs0pAp`7mM0Xjwkb3dVc)?q*S* zjn8a2zI!LPc}wdX-~Yi6FJE)!wwGRd^uY%tBCed3o9AKL7bW z+xEQf#&^BpE${5*s?2#wp7Ylnuo*%Gr}T*WE5Ric$|JX`8ZL2iVzQ7%m5?xrgFuek zBG{PiH-Ov_1JTJ5S`suW66qRAEZE#^n-11@3Pw|sg=Mv=s)0%RO6Iv>Q@1hpM>ceP z*sgrf&RyU7+IJsWyCFAH*~CX{mMpKSuG+Jc=L?zf8K`KUc+N!^pRsaHMRncK01Mou z7$!UXX@D%EksuZ*WkD!PD1(-8K^thd2o~}nI|5NhodxFtnDF1gp^O$qhJ|imW2Y_x zi+!ny*y0e_Pp=}G6l+8bfuI-Zp&zA~RY^_ucvY8>TwHPIBd0&f{Z z8RA0e|J@NBrPz>3KKRja!4rY#R9qQn*y#NKJCWcr{GI8f+~&>4Ha@#~;oP}ru3pR& z(P}X|^^9)PZW3EwWWy~fGRzd`k&$KEN81hqQfk;$9T)L>?Aphk+P7DSK7yC;T`+&P?L1y;kH8)MIQ0oN`d`*f>OZFWHqzL>T`%49%Ucc~-aol*#tmD%AxJFr|BA;Faa)F*b`xPqG!2vKyR@Xbx|%PWR8(^0NrRd?7b2`>?c9dOCZ@ERXB-|H z>^OdeuP{FH=z}|6+0lORxbK_h`F!uJDQ$Bnwau=ss>eTQ(>yhx=5e9$PbPzq6Qy&# z&C`*kc~;!zc>zX@n%suL(ao`B_-#51da3`l`BfeDhpX+{7`n}@V?+eJSHTM-3=5Zyt>oN3@`E%%_v%z7()1n z36cVvVu48Y#L!t{kR!$e&iD-;M1#NiU`z6BuiImkOhAzV$kH=~Z+I#lYRFfi?igQD zYie#jxZ}{^@L)+rm5sb;jCCd{IDY7u55aPbDW2}%q1z>IKUq{lki&N#k|S^^PD#K7cY7qxpgcM45E& zoB9b8+MMzvFndt1 zI}|`BWmyUsk-2eVnWrh{2P?9X6pV=r!1`yB!D4FLkmOGgv5FC399jX9LHD3Ua92XY z2+^U0@`MhGK%iODU~+ysT!V(Hm9cT44t{9t$>sr_Tq^K~&Oyo*QRHTkR=obZg&TTR z3`ek=ZpUZkZI?T*5^EaV|Nicg;C;)So3 z=Ur1?+pz8F2fzGRzxw4L z{@{l{=|9m^+S+!>8{c#0S?4ykwqQvXY#;6&%<}+1ZusR*&pq+@qg!6wGTPOf%U9RW zS+ZpD%9*p~w*)5wwW3oZSOV3|+RG;7d?VTFGIn;v`mW6h;i2U% z4=Mv5Z2=N~?FDT>1ugOr1YaDUKE3Tz|NAeVcxuDVU;Ez9m!E&)$j<4r7tWf$ym|7R zZChVDyl2~k|NZ?Z9=&VLSr?qK>g>w;RxV)}X7dmVU5>i-$uc;w$tL0mf-6FoKa7_N z75r0_SVk&+5B^~{P|KxYsYwNTVWCReB3oUkC!L!UgiJ&+dx(&5I?g63_VMk9Vi=oY2zcCpSUkK()-%C-SEK= zyuYHnyq|WJFfi#l%nAh~v!+gHZRSI73}LhhT*xQn*d=@Ev1~M9I|&MC=N_RiSW1Q- z4C0&{ODoF87R+nrlTfIYxd85WQlO8AxH3;{VSR7>%{XC!@hm)vLr_dqf*I?{lKHWx zPRa?6%`_(g6f_vnLQw?uR3oaXyQ~y94-a<#_sxfQ=x+QEGPR=8r(?T**|HoZoiQID&%@Bm&X?P#Af?`oc)8Xn_2 zfks+~Zq^fx4wcLsS96>YO^@#1_3f{GiIuE*J8IwN=kC1iXK#G>2SFJq-5X77+?n8;;fDUG$==s^?(+Zz6S23Jcq0(zwSryRcMC z1}L^q;s}s+0~1FA0dPqVlo}PI^$-t4D!L4*Cn6O-!isn@2y_>jK{E7{Dn>DJ#NlPC z6>1~arNM@jDMqWzFhsNv1K?@c#z-Z_5s$`4Wf#35a_8P_5A8u(-h(}1br|pbJ7!8k zD0C(fRaIrEfh^!<7#)o`nJtr1pG*DL*82Si+oLPt(X8V4y!S&JmORbED^sV=C@L)< z92jEEA$p#BDH>rB7M3-tsx9{sMVB8KAm9eq4E#VV8PL-aLM_@^3^gDZe0k4E0qh(F z6|_v4IB^0i7tWb8r+UefihSN%;@%5}QhZ`mVR0X?bK!|~P8k2-SqwZ_Ag8CNr~TxK z&6{34a^&!#LkEr@J=)iP(&rKAZtLnM&ssEf+RT;-Gs?>AM~f<1VYg?9_v1q!>LAIB zSkBAvyaLo2(P{)bU34LcQ4fAlPbi37)Pa^%STrE{5)m7E%Aj;)H*BNoG7DSTW`e>) z|5$(qrC~+p5HncvB(j1CXBxmF=>|wb?zNhQ0KUc6 z-y|feOLMJ3Res`$J7<)0?lS-)k~CZ517@X)#}>wmQDzi~TF4bx-Rtn6*X5#fHfFF| z7)%n6i*ikqn-2~3_4oDF*ERAc56URXSKuDU4jy4BDxB_>sg`pH$#L)uJ8E2MU^Fsi z(1eOrYMT@1QO}y{$zoI13v@~LK&&E?q$!bbB}-c)Q$tkqgg?;)jg*d|ScU{b7RJ;G zRZfe>5dcFmi5D3ONz$H*AzF}^AMr?vTvSS(bctW+4TPiNP@>f1m}uY1FVj@DAnbP#+G^c*DEwoK>->i@#e6dKMELESS(9m2n&V`GQv-6l*E}b`IaCOBB<=MMM3bqiBXh9YAqp8@`nC2muU2-eC zAbSK`Gn-GNqE+=ob0}j8n39gp&gVD2wC?f8Ha-7L5ubu9D>-Aul54NK;?hemo-~C= z5Od3yFZ{ime*eHLTQ0uzlE3?hzipXV#U=0!H@tiMwpae{@Bik?D=(ckeZp71^o4i4 z`-4CI_SgC3!o`=wLd;wSei&ZuaAR#z8!CSB%eCoB@U$J6`$f2SrwQA@nWDC)wT$t#(PE`tF zJdNtAl9YHOS-_r=F)uI&OhSH&3ot}ADo28ucD#s{vj-0!Jl54Szyr>T0v3e$VdM0Bd>eo4gGu}V4xq5wO1YG{r|qkx{BE|oAWM5$b$o3-^dwM2@$$_ zFsDI-TpSGmkxw29;LmP2%LW0Y=k2*=*Ec!|Sch1WkmcFiPs~ zqc~BZ9%f5vh3DUD$(15o7G%IJ?cg;5EH62?P?e648XYP!ofad^P<7#Bb&%hAq$d06AXW*Ppxnt_SkvRaaeosdPZ- zEf>)e_+*Gw=*6m@XF^k${>Mp0-9oN-@W`wVdN&~EiaNV;kFI?>m#=3TQih1m0!VeN z>#S&;I(z2KtuH>gb<1;| zCyrOwPQc6YFkO_C`87wvhrM4`?14^j!d08t*XAkD?sI; zj>O$ZD20lhb6g4#eR#Zl#j3NOS$EgYUE9|`x#6#xDzxMSX-*Vf%S6y}awO3!ceA(jqM!)P1!_4;D z?V%RE5V|^_L0=)f8%V2z6HC~6$4)m!te7qpo>2m<&{?qe5sVNAMUyQydpZqfw;tH3 z9IG3MO}QZ~c40K?ITWS-n0+&VF zP#FIRWL%Dv=F7{urvftWFt7yO;4tg)Acp2}Zr)I(er)5Mg4=8cn|$}Usj;g4L@x{IaM!x1yz;zDF6Bb9kC)|!2Z1eOz)><< z)0nSixKZIkYJRXV2DnNTTTqvXc!Mv45q}VYpx#AF;{(N61<1$@z=7KPED=0FnM*cKefu^DbH`a|fZcVbh7aY8M zrN}u_1dp&n*N(!;4>{t7gf<8?T!z5B&qmeO@|s#{Pfs5o?BzC2VUpVM3zGBY0Y2y< z$7OYVKCo@pauzJ+TZUZ2@87@g*s+5wn9_du(6*6{(k-94Sy}hie&ASP#=L?3?T)wKTwrS#=6)h8|wlq(wt7|GQ zt6=qiZe#P*T(l8eM_jIjXp(ho%`>TaRw!k>iD=G)rm%^~n9ge?G=SdepQE)J?;;j* z48vk?weFT_8}TC};MKnhrxdGGq?Ob)o5}_@xhr58h&iMv1TZ`!yuvWdl^pzY*(45e zk`*r^f(&_LVkH?YJW0F|bR3Bpf~5RgP5eqHb!jW8m*IegZ`!=br7GV912|b;8Io9H z1B;Wd0cdkb6ogeIvSm|&q8i}QRq2|64TyxKY0?Dzt*@`QA*0G8YGvG*K6>~F4<<8N zL<@nxOaVc~s^+jqAtu?y!Kh>_fTjf0Qm8KreUTZGCm_YQa#V*kBTz&W0K*2h5Aw;y zQ@s1iNQoLglC38}fVOCT%fz0^mdINd)dUjQ2>C)a1slXfjd`luK>`a8sTZ0 zLsdG83xyWNHx4VRee+xlELT~|D3-?9*xJM!LOeW@R03WoCUu2&q!rwdYrdQY1IeNk zMGoSHuF(~f3-Y6WHF#r}?lpKS+X&-;B)mR4 zbybGsHhZ-S*O`BYw?G${b{f4nS6)%nSj49ddItuJrp;ejT2;61-rK(R#V_9Y&UdUi z=bWydTzkjR@#pr`R^{vKE2d1S|L)hn`m-PYI9F72?o~HjcGYXDYwKBu_GD)-uNv_b zbNi9~Pp*4x!&B?~+D{Y}Rg^Wg&7Hq=;i6^CBQwZ^T^`9qc!+z~JU3ENUd&=Z+5-jQij+jwGb@|4MymBq)7cg~zM z?VDf!^1I*pfp2~F3k*fhSh1?tCm&032|0p$_@&jyqgi3q#4SvQcC@P!>aALke8kee zL(P;1&;g-_+;kxW7|(Ga zkM^cYiaF|zTr&dlw0)wXcO{jHgI_?T9r+oBjG=TIntK(XP)f(Y=ybL?DddjhOhBF{ z^#`?Zfgnw$s8Tx0K*t|RfCh((F1_S}+Pa(Xyz7xqeEiKd<&=bKt#Jyo7}AzfQF5yI zRb`y$Fuz_UV3KFRl5asF5GF!8T_oB`hUc_H0SmO!b~;zTri#;83s`kFntN{Z&gY(c zo)3(#SiY1Q5rP{*%)TC8w7pW2@Ele+1x;czqbR`m7LY1aM^=qdFO)@2d0EK|n|AKs zeWhac{Ivb}xBj_tr+aQRhd zpLyn&KljSX0|&cKcGfpcBB_Tx>B&G%V-5d}QM0qssqaVBRybI3%=pX#au5CMbq3Hhm9((lRM{8>;&s=kc zv!^T0m_4(#tRlxF9;`WXKZ5Du+MC1czi2A;UwoE^^^mAUKXZ{lPPP zBp&GJ!U3VTC{(n>{zy|p-Qd7*cMl&4^RbZr{sG6pK6N=( zQJ$}@YpAM*VFcp}eNgQfY4rzafJU~GW)ea(<<*~3vjMHbIg%=<9LW-&=vi98C>Jl% zddZ=EU^@mhsGG{Tq*!1&L=szJEH=XX&I5F&{ni8( z{j0XKC4r3(iVlNmJ2#N9$(&kDd0|xx!uqyB%fPDzvffxfA>UfSf!7B(fb&`%AmJ$mJ~bvK zj%?+X(?nR-0%yc66qb~&}&9Z8OU%};$zwjgGnAea^#t(pM3JkCl2m>nWwI6n(MB6(>1Sq9g7^V ztg9_%%)=x(%jP&kM1(Fa9vB!r>zw8P`fva82fzRE-}~@QfBSd;`gV78-kbj8v;X*K|IgpdU9^N(UxPn2uMp|^$lzH?qVa~X z3Wm&f*1AEm6;+fCh8alUPAJIc=$x1n0_icbR4aJ^&E5fnEjRp3*WfQaGoDhisRT}g zgxVAgc=A9PltRa*AQmj?)iT!G*IQd#`THOFz_r(2cJqIIYwbgiA31bj`n(l_nIpL}xMc)G-|8rg@D_cMT}+^ly<7yz z0@XN6egKpL1weK%4O8yP!N{l7mZ2HXK?a5*0*cz5RRg67w-jyx;xwyn0$?-T8+#ah za`kce;E|IjdwfNtI3LRg4AoVR?%J{O*@tf{>Tf^yiVJ@KqrcbGGO4$}KQYbitFh7k z^2%a9G}u%h69v+V%P&3Mw_WH!WyDT{NlNS|qhS+r!(7ov$ZD8R-~y|-3c-&I8Bfex zofAM)N%FSwLTTwk0V7;tGe3zOi9&W(ar~6?0)>>3hA|Sk(;$L8FyM1E6@Yk0 z?w-3I;N8DVFTJp_k=Ntx)5G7j6aRL?!m@ePQ({YkkK3{Uqsl0@Sk^shKB3g zrY~Q$hI%`Ke=4whF`P#Y0>xy;cH_2SYdVq@yx3If>IMHIt(7*k1t_&35^#1G$p z@4DN6#*@!QHT9!iowt1d+f5Di&68$wuQRn74+%cIf(!0g*~Z%tC3EL4-tpYJM;}?= z-RZ>$l~e+Mu~RVbz&PGfRuQq_z{p5X>Cz=re)8k5ee|QBc=FMw2CMpB|EAZ?oHhNY zKlR^;zVL?EUw6T|D{E`Z_$&e!#z+!#IhfS|ga|P-R6sgEdv8?$dAmDb zzx6(VRp_9+hID9>!Zp0fpM9eoSxEIbbr>K%EWyB1&7*gnO}?cEw5JUG5uVK}oJde^ ze6YI6;X{4fSm93bGbr-a28Dj2l2Kz>d1=?luI;do>xR_hA z(a!>3T3-70x4q>(?|m1y5csr@V_s0ph+RK_I9Jx4;R0}p9^#5beFXCE`VEk4fZ&P4CErqZ!FUQ;nqA)JCZ900LLtQ`= z05A;}_oO`0o8{8#ss><3r8X6Z?XoWoFC>A&S;$fy5+q4Z79Idk^3u&Y3Q><#6=htX z!An$-4P1juz!=A(FBDXotK(^cDqbQT;emo-Mn;O~!$0W?DLBxJne~gwZlva+%+{uf zt*w(6CBA4q!^6Xjl!ke*WPlLj2A-G;(<`a&4G!)%@il?ixM@k_44#1*0syLMqrT>Zict$kq6p@k_lr#k8KJ;>B)|m^ zOkU8wNU(8dCRoA?`EYj%1Q^b7lO!Te1WnmwP~s(!xFDflk?AnMOdg^{a!GHnB2I5T z$xY&&GLgqH1csE_O#nL~72uI9m<~c&p?Xz0;hvHtBjyYE^1|pyWlMdoqO`B4o1V&r zY|v+Mjuk<>jvpLib@B>c2?^CnMj0h2^GRWxa-x#SEhsI{)UDhgGnEYBh!<@r^3(#G zjCv3w%HXK&Xg>qC&=*&?Lb)C{y z#FXqIfNfGFB+uSXbmqG$5tXP-1!)EC&(!j3os{;gK|*F%JnYy_7OT1{IY4Db-}WQ0yAhfRK9w3(2wa#TYwrIUp~ zo4`01jI5+n67=9c{1iB}hg!2CsAey*!DILZNnoZ>H4(LKHWd3J6wh`Ma``F;jFUIc z1jB#TuSFsOTBVf&XaQuC_qg$=S3wgWmr}GeN_bdB(6F^#MQ98oCPoc!A^@R&;VG>g z1ZpiELtZ$JO-qDDf(E?AoHa#oEmwSZFZEkmO(v~CHr4ScnbHl&AY|%GCW*SzK72X24hr$0M+^vGM@@|OM)J}6MX`Kia&-u|okXJ2vSTi;WZuWaw? zb7G*VXwSCI>mGmfeT6sANU$PFQRi*BsqxDK8i(YjG(1O!3P)kIS*=GB8J+12O@hei%87qubH_VHW-XVD zfbFQstnyHQ@22OTef-f!pM8E~QBU_+RoSZZR$X`96_;Fe-o(lEXp`mRdU@bMR8XXk zvAv=}xajX2x$3HOKm9j<`RTv-^rt@kx2)=V!`rUw?aB2I_P)4f$G-gsR-Un}xU_D? zswH3f+UNh^V}JJf&;85)`m4WdojAn^=14{#VVDM<6;aB0zx) zq!!{NC2>TLa0{dODXytkg{r*kud>L2>u>^l6J>GK$AE~G|LRfSv94%2@R}H7Q1>lS$)oVGv+KSuc+xCE>g3wqq)HbaWrE~i_P{I-T`r~FWdZ7 zSZW1nPi_EY3`Jm}qCASmY97)LClqU(L@_BhbNGcmO{sy%pkY{UgqP7kW532So!y-S ze8`ZGqZOC19wBXNprm9tpX+*d?R~qRdyMI)w|?M#Z+qL@!N4ce;Gbt%d0>vv^B^TT%@0s!nz(4V3em_R9BkVtXW8t z%(Q)4P6A_}Xvj(0QUXX42|m*L4|xT$S*=2)>=-IFZN-9xqfDEN(twKOo`NwW5d;J) zkW4O|01~Ar11*0nl9Defx$d=BKlI>zci#QLSxgW(RyTr5ApW2bWV2nuF-|5cJ00Zo z^yxJVX%Lot>eHXnCD_Q773gV*?5qIlF%u-wO^Oiow^0euBr5gBa=ZioSD*gp6CIs@ z{=Yssb!ww;OzQ!v3@9-CHY8F^`Pm-b2Jq=jMLM!W^BRIR1j~c!?-IZ}D=zb%)aUQ`h`pC4TD3)4)8&6X|8oKmW|}Bl})^-PMz)H25}jz$;FW zC;GvWXKo6_Mto&;#`^m5*Ij?z%P;TRzGK^qFK)T;!i)avzdki*&eFq2k3RU&1GoL+ zwnraZKQNe^HhpGub2-}Ms={a$^u-ko*kd>kIY{L-frS0p5-d$SqNMRFv!`B@c^NDT z#KBVKi~@!}!n4tv@^9A={VIA<3JRjfB@rye)r=U@Weq}#RunQE8ju5eg%Y%cFH~36 zy!`U^|NM_HedaU&_KP3i`p83TH$45^j#u_HPikAbVkKXohUywVcF6e{3q{Z=0;Qrzh%N>Uv5(-RLX(DcphO_7VYJTlYbuCo zG&Z|NAdy1t%O?Yo=#5k<1(6+8MX!#vUlJx52`m{gRbiKqHEt3Tvx1i2DNKXX?0cui{;f zd>&9(@f{6CN=(Wt|BM=t55FV9(3%-W=In;Js`qUoUaBkSGuRas_4&%$s;c_(s`|iFbHKE_+JOZAp~CS!h5vGGPvF#6;3{KyvE9E6WZ2A(bOD zv(>(cUcH%T*y0en09ef?GJtv(5iN2=k{YIAF2hD$qpb%v4Ng*OQ5PUjmBoRcd_+?> z8x*t!!ICJ7$-m=Gz@kcutCGrcG!$fzOG!-w67@qVaVa7;3cMtCfTCM?oy{y4Y?5#R zOJG2N7!GW~9{-GWxhTjL*Nm1t_t0a5xssXFXR@Yih*#9pb+UW+j`Ln~X-Q)RpOJxr zLQ4p8F&0cYqL!B+b(&%VT2BWos;2tfevA?zmB_kWOe2vx2)((ZB)}+6T9QBl4s=$O zuv-#RJc6cT8L}vTQuK@sSdzhjg=#6CrqZYZXWAl)0Fj%ReDncc#)C=uUax`&bq2=3 zWQy|wRT5SR3W452k;gtfD$9-<1$l$Ps71Ca;@>J9l_~VV+}>zOzIW{Q@Bh5McFKf_ z)0ms0De<|H1N(LkpE$7i>PyPoCiF6?1_rwr>iS-SmpAk_dZA(vdl19vSNbE`1*Z`z z;%Y7&)hOXKwDOs<3R`H16RL-}B$J+y4%c_Qx9?DRHX0}wSM*pRr zqOxo<#u1vlU?VCAZ?f!P>_SqJN>kzjhi(8+-3Dlio&7XOSX^LR)rm(trTi!X9*yj()$OPQJI=s5Q91NVOSyWf1|?%NOT-!*Oe= zL(GmdR&?e9C3=CHX-pox=Af74jf0gd7gbg@t$pN?2OfNI@#1BR7R~7C8DizefBA=h zs;aI&|NK>59eoQIP2>5Dhwi-V!14BT&OeWSEu1YR4m%@qk`&bN7-?;-^+H+!LLfR4 zV8~5|)$HMXfqm5mbB6ab78n-DIqA0Et4pnM1jdyCE|qLc;@NAVr>CQaY=jX& zl=+G|T&ol{G)-)tIPK8Zy-z*;%*s_W2KtTm1~}=3(6W$i_8`Fn3E~cO1eN8*U;NTP zeE6n6eEjie|K%V4v9_xCkN@!cH^2V84I8$6{p&xt_x^|f@-P4C%Qye<&2M=9+ur(y zSu-m8_>eD8fU8OeRfqv{D4}(%>75FOQRp8(vOlv+N9C$ShLSHML1-2AkcG88jgahV zy0@wGz+}4PhED0B%%kzpJd z;laf6)>^Y2ys`iRA~AYZmbmSPShiOApq~9oIDhDwyI_j04#oiK6&9ak%207gFH@HQ)x0LJay-Ws2p)(Hy1ox1Uy8X5)w$VyL+MFe7Wlo;cTB8KmJfT$>O zOe8JOIH$fslMF-wQB`lIU=b za_C(&7F*H=@sOAsq5%egC?haokIcWln~r+$A$~?R3Gs*!J!5rMuCXq6qSMEz%6PY( zM}IR z5mv|y!32O`-H;3|2Rnft>2x9T83KSnelVCw$cy$CI5igdQaX5MH01RcI-!EV;!D08 zF-la%)o7tyXa|5wlO>H17A!Q4sBbQ{RA6X3c!WY?CYgdWS`;{Z%Z5V~Cxjrkg~E0S zuAa4+wMEQ72gWSK8Le}Q6O$C#R^XXv$D2x6%SvEERT#uMm+avdu%)PhQpQnd=A}xK z+lXP1mVA1)9DXp6?&@TzEtT5%lKr@mT6MvQz9wY{l@O40#E@V_VSdT7Pk^$fmL8Ql_dxYf+(R`|#OmtEdRHDDoss9F91 zq*23zLc+48!6Hf9qLWfcgs+4Rw2%7dl(OV#WC18mY)r_YOs|gw5z@}lH3$#w+xghT z_iuRmiT;k`MU|x&U2*Q4Z+ydf=bTwnTS9llAcE^%8&J5V8Wn4}oCLtGcSW(Hj;$wgOwQt|NZ23~Y({SmPS1w(&Y^ZPS*s+d(`poC4n!ZPD?=`*&{N(z$Q%qkF#l5kgAJXu>n6 zm!5atS$F^Hz6~38Uvj|==Xv-;38AhGiD{Y3m`eVVL74x4+Mvr;fWnCO2Vf&7A=Nw* z6etn!B(ZDNQz?^d0p{Vfk|=Oz9*$QucIVv>@x|0DFT1$DeyqQrIt82wNmP(4OH_wj zVjy^poq4B$d+HVj1{TK)&t#Rkl4Hkv_Z~Q$tFEoAu01tgrD+npheygQ%E2CXQADCp zl2~R#kM2%+3rS{+Ik%MdH^}`a4$;We75@|_19%8~QZCcs>l|e>_C_{IGoY$se3`GD zFm1-{h0FLHTX{`wjz_~PsvSGH-GW=pWk}n1sAMbv%H%jrdkgff|)C$`syWsYke!E=li7VIB1^ znXG2O!9co?DnBv^pMWs}fk5Kel5iU_*u4dlN(8CcWWY^kf&-Lpbrm5WW||(~nIYr4 z4@160OO=Io6b7ynubIJ=RM~HN!2I+I5~_G}qVHhY8}kG^najpIQtTqLNE<>F>xKegGw@>uy0IxR1O4ItjVT zV?DUU-+j)W_X&#lNMR`#n>;7L+SY*3AG3!|)08OjAi7sF;8QS7i&0$*`=7-%BYBfFV?Hlq8Y>P|Lr>ScV2fA+=^G zAX7J|Z_=}_qL2uDag6M+ps5gFpAayCCi^Ca6GWIIBUAuOI*)RyrChlUt0pf|-ys*` zQCrWktp}94u%13)Aq*v7BvVxYhaz1=zP?$y_I;q)jq5U|Hcyex(##UqEHkz4)7IEs3p z63VDq^bGTEW967#7m<2(UA%!g-c4xmz;6#lqqdbt-E*cOE2e& zD}H|KU4z{NIpzR(fxo3??pYVin!AY4U~#*6c%-PG&lWn|0WT}4mz0;6v0yEM!3F6Q z!zaCB<{~}>1qWd?6sqb@X+{gFXSfR$_?^_Wsn>!^QW6lu1%S#T5>7%oFj9m^Q&qza z4}Smq-+l72hjT-{6Q)mo*SkLO`Zv6G*6fM2Df%@&%_xgNI{B%Wnaqx10kbRzzjikd zcN$|^fj|1>@Ar1~{op&_ecyZD|BY{a^PO+K`ph*K{_?gv|Nb-oap09*Obbn)J-=j9 z+0kR|$(w@ZSnY-Sj58h2(8la;LJ(<4E0~Z@H0mH7*-(eea6kM?nL~|0gC7o(3GJi9E?N|vWsiTo){-^Trp+%Z%1>;YJz-*7SNp*|JGLG_xM#!t_ib3We)bX; z6F+bI%sDJ=!~zb6nfOCOT{Gk}kl!n)1D>ku_ya~Ri=6+<~@ij*H{-T&HVp%oKR zjyfK5VK#ni96NHntD~p9rnNYqXZaOMg%u~;7|YS&%cPty)Orb1lyc%(LKyh1X_qcs z3<+ePd2vu$Q{&jp(}r!y_V!_&U>-!WLk4w~jS&j?xa1oc8meuY@V<}yF`sDeAEd?R z>gp%H>86i2H8l?*2u+Wn481q;%NCuG5LAenpc54ohsKH~PMwo0sd#bo%e*0G7wgvw z?Rpe8{mWjG!IEqm&o`dACZH=EXl^XO`R4z8^NsK5?JfC}|Mj=O{Q39l>Rg#=Gt^Lm-+2Mg&> za+p~td4XY)aSH{3tc=3nZ#qGhPN}?{lEk3{6N_eY-{1 zP27Sg#o^MLCuT0GpCYiG_~r`Uulu?euwO38gMc zV@VjEm6rrPxeP`e(Wv%(b~)@F8uJ*t0w}*W)1y=vTaru}>2ie#tjV6bfhuONasxCK ztA4TKI9^Su<#B9b5`n=Pogz%BO3xDAz#AQi94HD#WhT)rDxzOG72dsEf!-DYFK{Va zsY{E?PR@duEC@#h8@~q$z^n@MUv;ISxCLMXCP}SMR3mgH2p+tJETscG^uZMvqR8rC z4u(Z76``X}w#25$ zZa(_u9YIi25NtX23(|3+3oN&ZacsT0xR~)IuNRc@mO+Wx1QLbjX(sz@Smi|Y__0c+ z%n(2!Tmz8YNNspOG{Ngfj>7;5&eQ`asF*m6hGEiiq!g&pV9xQQ9C94@m<^*f?}SfJ@Rz#8nO_wsG)>MMEc$ zPx4Y-b)Yy<*}0f+PLzk#$(V4WloSa7*J+D9&qLdVT*am&RY`o~X*>34X;efM5sm>MPtH&jpi3VL}-aiyAC$KYD`4l=6JK4I%hAjn`2_V|_hE zQyPjZtGo&U4{oCVV+Jr9U))iI3Z=9m=c|&iI;IhX{>PROjtZI5ScD5vl3Od2?73$n zk@P`DsKpa-tXD?~40-7oAU+(X8aU{O{E!!(cy@*1nK$_~0L59$NerMri5SFefSiP* zg_=YqeK&!Ej?Sl&qq#==D2W^V6j~|%)SfoAy_ldXo20_bsy>oDjj04;%bW&4Yb7=j z4P9B=Ay39ih7D;$so)O{z*HzC&O<2jm5bQU_>`HQ;KLbPrPA&Jm7X*J7x60MPew+f zN>5(`0~E@lmJ2O715#a6S=v|J)7y`Ns~Vj z%Y^a@zI}+eW!&5fq zvQv$ZYQkse6ax0NoO%RYF!z z^-uozPZus+y8g+HeJ6U0>nE~vxiGqvvStbmYJO=kMG*`(usrnUfJ-(E6=T;JZJWrvoBb!w1ON z!YiM6Tux6UbUo; z1viUi=gUTBPi<~$sz3GG*Mu#aIOL~8Ldz#eifJAkuCY_zy50*QYJ@o$pY3_)q2&5VihtV z#8zl>rZX%iMfKFvFMsay-(0e6@y9>*Zoq7)QF6*GU6=NFEYYTL7Ub^4b?^?h|wnik) zhWL}cxbWa%S?-xmn_g30-Tc7)YfpA|_V;yPapgJ2FrKCz8ksnu`P%C)Is2@OkF}p* zse;EId;H$}@2#w?U9@NcpYZW(6tV{;MUF#K8&nMhP&U&x>CnNX%y7h^qeieo1~Nu@ z<{)Gn1`yL+(veI$2n<>xDkKnTh2A(75%=w=6jz%@KuJ2DAxRkf-nYNkexj##!i+r! z+DmwYysq}>!Ceph{HH~gJh`HC`@fMWfsJf*xB zz(A1|33-0C3~=r$m6q{n0AnRy2hH=T_42AJ#+i94SLS(iiMI%tiC~63RN?5KC}di( z-IPV%OosW*$hLxF=-3&r2%)nB4Paay=#HVJ2yNshzX}ZQGNHkPO~q!jk|yb}uxJ9Y z8ep?H7;qN_!MFSbKFxp=8kNF=$u}8^00#L)kUd~YJ`!1jwW_&#L6|cWR6_a$|30D< z?j}!h3w>|#CmUS;oU9xhdBrjHic~9?w zZJUbbPF;SXg4}aChkOW)Cqz!lhlJ7=EEOC`9&#|0X&fD@1Hn>NdKM9ilRRA&tf2v& zO?qshx-fN|3af}j1Wlr0?5mJ8;02^K>D3vTAec}I9T;UmG*YGEX@`Vc{)5{Dm@-LQ ztT<*D>>8OOF*AzXWquMhVcp^=jb2;EEYWinLJ>e4c`29r$svT|FE9wKut71!fkYGx z-X)?AOQ~^rU!1Sv-tX)=a~CdNK6l>I36rK*)wS|zn*mB$S(Z0Txk1dU_BB z^Z_~uR7OUIf&jXg8>t54?lblhlfi9r*5HSTAiN3{F#h3`3psCy2+f9>ZOS2ZhEO9@ zVpZ}Ln(~pdlA>ofJhgil&o_1D%1f@i=JJ6dKFrL7DHBcUejKy|R+Xea1NP-j^!)1w z@DT!p5S~Wg!b1|afYGuI&pdx<|B;=$54X)&c)=B~yZEwe=geKi7om6UdS(5(brU8} zy8Mc(0+|fPf5>OxkZR^sP71!bj`K=2uYs(Qeg?gK!O`bF zdAN0;si|uAjMlokQZ5vz7c(*tmq;QmHH9N5g~6cDx&H|;@n5JA<<|O*tpFDVk`U|Z z-~zxz?4wu^HqFg{s-M!qfcd9yzi}FB%Ial+<48D9I8$Q0ZeR`;68cxO7+5f~b*&QU z3Uv$ZS}DfMO!8AMlhMbF)i;!Gdg;j8wU4h}v0%xP>9o_(CD^jMRtO}SsVVr)Es2-% z6Yw~Um_nI>#@8w1TrQ}UlrRoV;x}{5Ebw66fGJc-L-BA~Y6h{}@3?26ulF@qU0zeo z$MfQ@q8CrLdqaquJo+n~aXfVznJG%7a)Bciq$8YWv4mM|#-GIKMtN|_^7up7KMGX*~}G=h3}&*;0~dF}1D z-M9XUr+@IHTW-AJ#zl*#@U|UH@>ST}aPe7dX0N>YA0B+*$h452)4;>Dykr>e&>lwcT$f?!bwwN|K< z=!l^5Zw1{zpfC*y?Fb5Qqyy-*27+0G5gZnF=mvk(bzT~E=5oya*VWgJjqYZGqh(Ud zq)C(cmfhO>?#d1JpL4~PGv+So?&Y~DK2ZZbZqttOwVRUSp~kuj*0bHWcgK+<$7a{m z1?#0=Pr^V5i437^he;pPQGgIbNn`3FBvC9l4sFC3RxTZticg7?*J3q2 zkt&&v)E${>)r9C1B<=$`IHP9hiDD`W%#oBDcR&elZ!FY>uU);iC{`5CFAX?1rq!+?`HEi&83Of&=Z1x z8-pYQ%nKF#36FvXDvrugNF55ucPwdmP!Mk%A))O;Z&KonBM1cE3_;d3DU}~Bklls| zEod(3E2nhQF>obG4I`X}AW@io=PGRAb+)z$HkAUgB27XGHMd?8T%%+CPzKNs*2bM2 zgGUW^B1%^z;4zj5I#1%Y_rl-?4}D2D7vOePEhNI_>McY#2E z2$nDic_byp&dM2!!JU2)$b)wQ(_{~@It)K+a@)Q1=)q%L{FN5x2V+=}FDdHhf9HTlqy_!L@d)$ zQde={xMnD0QfHQ8DEUZUBML{}_oCFc0Y?MjQ zY;J3!BU&>Yl1J=ejpuwxG0%uC#07F#o!W;@U15NG^ei2$mB0Xm z!tmo3Hy@bMbE4x4+E7zJh9%;SaX@lx5KqlF99C^mBAX!52}KE8D2J{Efhd&>boi-f zubAZ^ZCXH03ROJT$EW7XD;BI+{K%bme5yS6FaPrQJPm%U2h7w-53#^Vh%igKf`k&R5qKS2bP!+PBYJcn0@Q2Ku_UY+^!ykt3V|^oolc%=*{Xc%@yEzrg001BWNkl$JHolcp~|c9?e&c6T1wd*6@0^TeZfop-?{OIEC@sB9Ww zwJ}zhqPd7O6G2mR0za~S}}!Df`k|{twqYrWYMfv_yeOzMisBS?yCR($q#P33k7 z#uT2IFe}NG<$L=2jNrC(V|+pcP+^mx?!vFIH>47AIT8_Z z!tdmZF-PDCaG;?S>3sK7p4AFp@4dF;7S&ceTmtEm4N5aK0FWLUZUw-nfZ+Ul5_rN#4^@IQX zk5BgWz_Ra>jq&;0VdovLxbmzEFF5O`KfCkhuYL3Br#8I%J->6~4R8FzkAHN^)P|m( z=zdfTOi3DokX2Wa!CqOA)0B(_JER5SJnBcch32f|^&NG_AK;5FH!xdDLOh^TlhNmd z#vp(@)9b*B0}K9vhFs=t!PslBea(ioPw(BewQc&`mip==hYohMAFG|%dgj^Z^$yz+ zA$Z9MlgA7ye2So@wXv+Iu65#s-P>O}d7_J3fBc6S@BugW+ot&QSV$*_iPK=$9c2oV z_|dW>O(@IE*;N)BKSdh zfe9S^*_npV2^qq~qq^7wY2ruuLmk1leZM0B8G|st*s}UT z9S)@Cbvs_GG$asNnUjvPE>8tJPL{n0CPCKz9TLfnMWg3)$>{YG|0!gcC4FkhiOQ9i zP`|bzA9l@?k6@M>s>uTXX_X2~lOlj%~92O~Hm5cC1MJ!x7 z3WboNAl+4sCb!iklG?&=QDj_pg%^e92&L))rKCAIC09A~e!Ad3~t)ptMG$JGmGGNxKv57t-5eH;VRkKWp%Rp>NKPr}g2nPp+VnjAK z07I846>ua29aR)S!K@pUR9$u|odVecTCrFjY)V)FXHG~cNZM3Mw`~lpLPJNodMkH?%~vN-Si&r78eOm8zivXB2_XGKyS5psccTgb#1C zN-cf8Q>#4T#RqDg94Ig0K`x$NyzWhJZE9}0@3uSs zwyySX|K`t;iIEEL#yMP30j%YrQQ%ruH6-_hWtkWUIR~KJ8R7Z2;@rLiCvUs$&L4jN zXUF#)DXwX{{_XGY@9Dhzj(aM~YxeHm|KjE?uWa8kcH(e(Q|+2dE?u?ytlGxbj;@{> z@1|rvkOW|C$vD$?6s)p`V@S&Z#6l8v0zYuYfzSZ3z5!@R=>&=i?3==3G|O=`;0PNh zpClW7A}`I`=?N7YvPwc#ix9IGex{17vz!K?2Wpxv0)U{2UcjEZIeY>}| zAJ}{MPk*+4{ZkiQdifd4R^ftut}f1}kzkO(6|*_=r1=S4J_@S@3KGJE*92@d4lNl4 zR*q{*PD5SDSCBLHDFq?%SXR6nJGB3B$H`t+K_Wbl4)s@-;Q&3)Z+LwBrpI&r?Tc3} zz3KNqHf{Q}zCoRYcT8>EBYm~C+jSu>|T_|W=2 zdvi0V1r4huz;T4*nEvk)<6NEwj-s5bG|EMD)c<6R|KCF9^xV_2>B-iMZqXo%I6 zkVkG3P6iZK0W{?aMd))VPbItN1St@N4U}0g0$!_m;Rc8&G+gCNQ8Ok7bP?In@xaA6 zr=+g7_P{7B%C^(h1j)Fy1s>%Ip4`K)j2hu!h63k?WQ8my!Uy_C&pLC;C6}K6t2-aP z%T-u%_C|L8~m{i7e;a_@bQeDq_# z|F*Zk0hp0~p1qa(;1C_iLU3xIL<$bj24fQ!orFug-YpbZPV@U$^0aHBMfyuZLRbI|#&KOl1^1MRmC7L_>jOpzHf2uKjMK)xa1Jpt& zxD8)WMs3PZAww_1AcUtJ3-i?B1u_c);4pP0R5bxC*g>6lp*vW$|1r zhHyT}L9ren&U65!Kw7_{BjUIK=Eg|oq9H;!8tRlHf5E`GmDDmyfe2tRh6F5NgEF`S zA}*XB0_sReraG_@ zYIoEg(?+5WQd%@22yYB5a$4B*X*9t>90n+TKEg$^qggaN^vWENMuv~Hhk^$6l1|+Ub9s!-w(2R*?*h7(BVQ9FrR@^Lu~g)0ksl|A2rfB7z{!*k$Cy>){F)ffi(g1>=I);)Fz^sCuHJ zL^AKD3V-;Y3KUXRTOqNY$rH*l(*)X2sD;y}=r$;M8Wj>`?5z?BJ%f@x%}svVG-*>FDda>DL%!sZ zHMjsD-Cy=#Ov*|^$ZH5F54y8FWqaDMj-+P%hkwwcQvQPD5I=p8LH{BXPYcqCO>i-% zVi(DhD6t}u$}C`4bzuxKDx5^*fL>C&l5HkvAuAhH6)bQkX>A7t=a^394l^lqY8~&t z3Lm!8z7iroFpAPg);WY6h~~&ZVp0%JXm-J^K+y(*N4zEB1tRrx&QTBo42uaO8grll z9sOyr4LI5akCsVugWy$i*-9Yt8TL#bNm20R0tTdoLKl&V(4a|LvXZTVL18JcgQYoE zZN=p*>(RtxAkblEn9e>dY-rK}r6%Rb6gk?HBE0)pMcfWnsZ{e83)kKZ4$zfC*#?3m z_%XB=)(8tWgp_W$i!UJ-g2OUig1{KWEN4(|gsZ_g<`C zEO)s9w!z?n!9YR?BqX`HH@P?kLcnkVg98R*Y_N^HEXhTdY^(RK(P*TRMl+-7?ezM7 zzrVHrXO4uEH=p;td*;%3XoiufZ{m? zI{VnzI5(U8+Q0Z`S6zF}@BjWMw>|a9!~0*^aKgDOHl0yx0wsLIe_HTdge>`@=hO4f3W2Y<$=5y<^kUJR&*4XE$ahd)jA??A!X#J>MOA z<@s7y>rFrVzIVOzoo#LHBTVU~!_6B!LpQNvY2UJ?Jx-9ZaQYD~Myj1cOGhY!G{;Dm zZXZdgi>MJ8ES;dT%30q$C_vHBa@i_1OPlh9k!@5}wfON@E(90v_e+2Mo|AVHV|52iTv>PmbW8BSt_WL=RQ6f7ESGwcaw0>a4U zQpHtQaSHZ@+wZvdgYUmcM1AOiovDCrfi7G-Awikhh8U+Rl*9y zKiviAc=d5fQex&>5?O)Z43Nc3n0@1$xAJAE>#x76y`5!Rxf(RDQA7vK^SBBrWt~Bt zugCF0h=h$`MVZ87nQ%Mc0qZIj9Rgl(^q2`B_tkW^cN{r#gp`UH)Pg5g+@zr)7oy6* z0sP_?4h{d}PiF(#E)z&u(W7k*X0lJ>9(!g&W7LkGBZf)@XaL30dCA!5T?Jhy@hI^CETCOJ@XJN?8& z>qkEN!S8?nzGFkjZn^FIzx=UxO^n;94TultD}4BX+wmF)2YdeQzx(Gmyz$2W{`-G? z@4ff_`+xWEZ@uldfAz2aWnQT~o}vdp<9wqmuO*L^uZ z;KYw-qD(&Cp{Y%{of_WIQd?ajO(^o~OwpC^LRnx;W2z$WFqOs1NB{_sP7H#_EXqei z8b9%gPki#f|G~Gv`t2Vbo4n?_8@l`Z8Q{1)IOD6VNa)5BV>F{TZvdVghtmuXao}>E zAs3(6K?WTdeUg8Xlq&5mTZ^`9J;#~I=H67TG)5j`r4;F?0j?q|q_iMlytzdOwJxMU z4L`sPD$mb}d`%SQ3dp#Yv_cJJgpLWJAl)2dcQL}K)F`+V_*XbuAs9xq2vJ&)iUY>= zm`Vr*7N^22#sP-oG74zZf>&fLz#t*MtR)!#A(7X3;f|c;djf^FY|>|o`RP&$k43;V z*%Ug6q~M^W!ER^^2UaQr%}S*JiYMneR{$m;(+r-UD7L}l)_MSF=$4i+j4jozFaprP zCzeIY220Uo7tN`3P%Y<>1x6Oy4nbgrTFxbPG}A6c4EKUv92shv3<(B$=;#hl6I8x# zY8fXqB`8$&r!<|p+ZP(N3;v-oGPTvchVPe4zd!ChGHkl*$Qf9xftI5 zSzM6DP@Y2()6qeV?8e@S!fcO;jXBDAc7`6tg)DFpq!Py%fL#)uZ$mPBsCCQ{eZ6On z-YpLKHe{5kltimEe&C%G5ar2t}wBZotbjk{3gR2#nzwB|_b>fHpKFXrBr{ z_88s^wh&Fa4;L*Gv?7>w{42Jxq@eC47fV7fD0V^PkV;Q=lu9~6GmCLa2JtmF$NIO4 zapd5>{fm26LoG2t)9lF6A)MPc&^JN%lpo0qa3G*U97wq8h)I$j0tYWS1|epIi52?9 zNq4ar$10C`=7bASz|<{b&<2K(D$hm)M{Y$|Mt=PBJV!Vy(`Dcp#l;K=G}5Yosnm?L z$si)Quqjmz*-?yB0Jj5E;{z|=w}|N+DFBGo1(yJ70VP2Z*~F2V!>XHm&SU7Eb`zvi z4guLDCK1)M7H0OU(j^Lrv^8x+4nm3qvcGCzfl)j(a%3gQ{K>8;EohMqtte$yL4}ZU zlg<1QoPeg}Z&d~k>vA2~!5&=ZQ1HM&yqq=y0%uw@L`*1NhQh@=Wr9^tm!T8;M|Tyo`QC!BQ3vgK==+xjME zYAjBWG$$vAySq3|&ZlG)UXe8wig|CkAjf$#^|`i?A{@QP7A*LKfmxV%>JBl5v64FwL)+GbJq;2mR1||v%g{_U@exZ~5qV60(G#u(8>$kk`y%#mL>RsUUco+t;$ONVY>ic?2j*oK%xo*z_T@a|{bjUV3 z7SpDj(jVt>yaf2XgCcFks@_tCU{#wJy4GsD_l(_o>+K5%mt1+(8&E6>uTCkw5veq+ z1E2rPHYXy70w7?$wKUBKsIbb9*_atJcZhMvPSSL^#c)P8OJBV`z5Dm>WX+Exhzrdk zuy^P-r9r0fl11_oJ(DOdl{g_|yiUf)Mx^P6?@ZKMSiNoJ;|M;p&3dYXg3=q!)KM^H z(NTHEf&7(j=Sj0LI=v|A0=XhpV$oPJc65!GppsOZ2&2onwYT%Nt;Qi92}r7fUsg^* zMFeNRa%bt^9^|DENjMnd4FxMq=<=f@Zunji;V=!e4y)kH7roukysf-FH9u-ky~4OM}PdlecQLcLK<7VWXa}JHm_X1gr~C_xV5QPn)FYSCk@lJ$s=RCb|0J>Kf3$X-JR`i%UAGr2G$sqL56B)Q8C!K z+*E240M;Zj3oP8pu0g_}qJpbN#zeWUu79B9IAIfi1>DNyQ|8(&Q|bql_GL-9ZGP;sxX<& zX)HAq**S(U47V2m7prk#*-g2m5JQ;l=SPX$qh^GVJyrx7UuvA9WGn(l;>cubzR(E8 zJH_-GC*iNow1uy<`HSh`5+kKmCsBx*H3RT;4)p=HGFA0kH&+Sr*jqc;i;&f0HtvH! zSdyjZ2^fZds>N8xUVs9o!E=PNT8m9_0FL_zksK>Vo)GXzT5O64q>L3T;i74yYDES* zIwc5UO-T`rOahRLMbZV=3xQR`s`g*ap+@C5`V{Or;x226VV&I+BQ069t#G#Q8~Y zE~%-^$V5FaE|oZ^krO~|MXw~!|yF!y!gg9T|PYG zTm~#jgWu4C)=pfxhrU*O?2)Iw^bcRT?bh#49v-eOSaQY{@3`>7H!NGRn$>^_ZZjC? z#(;^Ao>o8SI6HgJMOR#T-HoHXux@6Cr2*M<$)#a@;liE;z1(+>tuQWskxhLyP-2P} z=T-IC6cvRMT}Y$B#p0SnBFC8GSnB{~ImR_sDJ8ND9u8vz-HA!0AtpNJ1e-(-&19JB zZYkR_9F|A}sa{usLaq1S;y4Ou(CQjW0j($xap-#y)ty>!M z8?90|w>u6db+_oNGu$K`$CPq8E|7AApZhwi90c$9u23kPD+UF;pcWRS zS0`_hVpy5vgss6RiAaW~EwV=6f*RQ~WdHym07*naRKcCww;eikXyMXMPM0}vEF%a8 z!fEuvs*6cTf%wsOWvBIJLno!qZpVFDP@f!r@!73IhmW+iwk}?=a$xZyZdv2jog_-v zlj$Or5>QBwQqhc5afU|lRzT9fWaB<^}H$3$4BTqfG<;87#)~;K^NqR|#1r5iQyQwd*A!taphH4{oyD7) z4#9}kSY89|c-+z6@`W#a{m=gNGq3J^m3!Q@1M3~V9amg&@rOV7a~n6W<=v{P%fRh* z1dZelnUg7T81jQ+9*lOl+`%M}z`;6YLV*bgl%g#Pz`C{Tg%`I!@zm3Y4j(*xc!+m7 zT=a&kk<=XQISd;wd}3sr=)Bc*}t6}9zOk|vsbKKF*z{~TUeG9>6|T|RuZo7lUXD3bAro4t zWbl-NMnh4>>uA&=Lvc?O)Fgn)Kbmk@VC4_FG|1Y&*k3mllh~R!Fjx-_fFKjNXlh_Z z9;^6^NQxYlprI)V`)VGkyA0<*`~q4g}a{HH90=f+}=ek>^c}|8k-O9J;;K=Bm$KAu_|aI*nm!S zsgL|rtlBhXsX-4RwQ1V92B$?*4wM*JuL@QU0LYf;@&Jp{Uayr}Hflm3$HJ6aT?KiA zr9vuQkyaq<$lyXqzS0 z%t`^&=sB*2#vDqL>_U{J+bU-MfQJqda^)AI+h1atVo^$;i;#PzfSUS>Oy4?=WY;L>Zuw4!~SyjFugo-Te? z1*`P0I$|%gd|pw~T%FseSry>N;6YR-RVs^q)IlLp39MLU98_Q;uW%QfiYzY(pw2nr z16{K~25prs;UL*)MQriz0PpokdNQpk3S6{K@hQ)l_SQy*o_yl5i?6(ary#q!x<39Z zzx8{c_}9Pj>;HD;ioZSev~}a-tXNCkH7Raf!rHhllPcmD0)e&MNmAK+7t%Ql~K z!8W@UutW^?EY7GZGY({W&qv2gCk>n1sj`immlvJ;49Is z3l=PCZRZ9DZp+oFh=wVmby2gDI6}wQ?DUcP8JjAEJ7UM^1*Ep4caS^*)I3^MUxhxv z6vBjF9FrtGP?3hp)Ws1}Rw#JUka$i&A^;Uo_Sy^%)!<~25G|{6(gG8A*s(*HXjXyf zCcaep=l!ZSFv3nxkB^R?e(Fho_31zTV<8cy}Z_di70n6 z`+!kH>zef^Enl|$`R5*gW!tmg`r=ofes249H{3Wduw-;{0w{ztA`O2uguF>6x@96~ zg`1MaCTVgN*8no=N;4BU30?f zU;g;7oO=3cEDenE^-ou?xYRk>+0nFe#q$1MSNHgMfr(I~U@nZt;Hd>Gb07*$?D*4) z$`I*AQWX(Rud2eon5$l>45=RCyH&qb)oZMrSFYNCR5Y|FTLrAytf=D( zPkD}E%2friHz$YY^?xBY$4-bq+nT^oQ<_Vqbw%lVjr_u{UZ@}oT`=t(aw%vD1Z$Y+ z^mH{`cm37B_j`}r_T4)+Z+b^1igt}Sg=3wLJgBJ-Jt|wV2GzERSAgb$a>FGu=X?@X z2!R4y3@`^D%e;m55g8 ze78evUCoFQ`aqJ0O{NZxHdm|&@=By|gR_%`hS_5W_x!`({KvCn_SPWXw$78R=?3j%8&8@LS@{g=pZM%_2GF{L$Gmjj_Mc zoQ~()1e&s%iy=zAO38r+Xm}c7iX^}APdD=qhdbEmYZ9@8T&;0*tajOD=XZ3p9zAm8 z{s$jjzu|g5{_Z@9p^SF1AKOTYBdbIv)5N7HyiFf6bsC=A}dGtu?(2JZ6s#P9skXFu}~vrSzM-OCm(Ue?v! z|K?5aeAAI5BeH91ogzwzb2{ky+Aw&zf-YvJZIEhMT(+hfT*ojLgqN+V*udT*!}82mWp z@i)CLSJ0#s-cW@|q}7VlY9oue?4eJ!RBT5haVtyg%p6`$2<6Cw+@28zG6K5uUzP+6 z2mhS>!^5*>b`i-0l49f`MD?Rf`2?*t8-A1qBTJw#7S@d8u{AUxiwBg$CY6kmBJ`GeD#_vnhRu z08+YcWGl=|;5gV(8LLYf1g}>V*6H9%TQ)ldkkUtL24*iRqd8h8P2_^S=i>1Tsk-sV zfrA7$SHm=_GumdZ@6|>|nimi9HPWNglZGYG{74hnL?)`j1EH;kX|ge7tuZLPs|kV$ zU5@mFv5TPr(1=CNqC}BhT3W*_R5wfX(lX(MW?pQ-tbl26DXXk62QGYz3rak?5(t5E zYK;0}=2QnE%#*b7W3`WVd$k$is=NpbwJ@@o<=7|bEldv-%nyBt>;GbZ{VX~DYYPm9 zd{VI4j1kuAoEQOwQYgtIwBU{Lg#=aw3x|j=a1f~l8W=mWA)&-xOSTFt0;LP&2${k( zMxuXlXO=-a;Q|B-c5>ktS0{7OaI( zQWaV0I0jW3sEoWuC7Vng>|~F>1f-Eo(MnvaZU%b$lTrjCriv3|9SP}M$rWA-AQ_3F z2JcInZan{@OCP)MN8kSDKlU$Lvf+eNhlfUcyLx}^*Z+_I@*n^8um0L^{{7$o)q(}R z;}g7KmCx`t4j&%-#y4*M>}S8Qd+STJ&i>QhaMSr0T*ikUd21IhY8>@65aUeqitna| ziJdQQd-%S4pMK)u+VGKuC!D-y!^V8_!P`hX+M5Rk`r12Mys|unS;e#KV>2CBq7^AI zh%tZ$Wv3Oi1vT0&HY~=8Gjs$Hq!w+N2Bro{{)zB7PHV_SqJ@+c{WDtZYYDdCC-xQ3 zICL*lK!cjmM-&5$dfGx4vM!&cBba%xw+SEs!uS`j6R05K!|?aMz**iq$m15j{cnEj ztaH!)FaPJ!Kr6lHn?c@Q%^p;?U9E* zv;Dbiu7BehXJ0tNnvgfNrTcgiK`%yu$d+lCie_`BDQhhOcoD-Qu!!sjAR2e=K6K#V zA-=`T+chR8$NkLW$o?PS@!dVoKi<$h^~Rgt`u?ALUw2R6;o)Ia%(@ud#}+MYU$K0! z4R4mDhoYu1RF9`IMM?mABw6E4DZDJO=%f1{+ zu1-mapS%^K6~j76Veh__D7==GM~F$S{V!;9093@`5or!Tk)y`N;6X`afYqyL2N`*l z&4TnRoUka3iMQiWg{qK9R8?bGDUlN8W7nGHKB4Qbz4VVi`TO7c)^|Ski|_EetEP;C zQIba;x%`4z_;FZQrT$wWB9p~Z?IE08AgC(+jRxsL$03iC38W46&5m@uxn3ICituH_M{N3Ms`tCdX7Hv4`j1x{hYxSB9-3u1- z^pW3b;k~B5^_yXvr`fW6uL_2gqC3=7POe+Uu|y%GDWFaPNLuzbiYBcYZuA0IS?zlX zB#kH@{ZcUTB>-`HW65)+t}X&8ixt7qvFX*T7p_{d^oheq@4oke_q_Kyv5}6%6Wf*r z3`Qjd))?^Q4m7?3)_ld47oK&_d7uBnm;T}Ne}Bgh?z;Ql```ZdH-Gp;Keu81^6_z` zm>{XJWRvM9^Xitr{>;}t`!`>lZRuZk%9(F_`#TpdT{gyZ1rw96?%whJTfe&f>4*Nq z|M?$#x;w7A`pO|*4N%U3R8eDTDdf@${5sy6-7$vNLt6hhL|IFmxiXDlve?$b;`%M$ z`OZK5{TEmdXVrZ3d6%7k@wF@0pLpch7|X0In2(O}C|wtCF5bE8<+0&o&prA0_7|TW z-~TGB=pXvnM@~BV#AC;Xa$lZ;c#DXeaZ)5h&Q!p*o$>0F*EVYA&7I` z+Uht^@g32C6+E!+0ro-`(X5Y+S%Soq>wroy&Sn>{85>0aSXLm?(y@BdNd`ttl`>K& zf>qTv@joOK#Z3?arJ_Fd)>5lGN?Sm~)Ob{$3SQSKe$>!loPR1Q>ChTAqbhyhOjC^LJmrUJ%LmZaj7UJhu9p;9+@~S zZb%qZz=AT(K%$77lS4kwAttA0&bAFX9x{VXOSriM3mv&MM1V~}Tn+pmAut?OkOR-V zg+Wk_2#eDdk2hbzQLapta{Dxwn;_sl!?fmB9u+Z+?E$DxF!PQ{tU=htCWUIrISTK; zbPtw#V^ci{XGcXP(-}@j=>s{dfQYXhak++tft+-}-nSmw&G_d@ON4-j_X#+;RSm>s zM#js^@u&24rjZI3fc;Arp~l$w*aDe1z-;C_>@#)H|!Q zUBj8f%aJwwB`B=nASOmwiW$0fcMz2>J*kpFB2?ui&8HdWK0V!~}zDqdo-^Vu&8`?TL;!2n9 zCU^(Z#8BVB2112fuB-D(SP+QXL9@8PmeoOZ;mDQAN(xn{PF46r6eG!toNlV7eHG4J z9K%H3;_)D`N`)fx2sUNX#W=`-2_QsW%;C zhL@&$KZ7cv0Jmdk5EB%e;H(Rll+Uiv84n+1czl0(G6A4` zHN9ce#`k~t!=L-qr#|=BfBE5${mP2f8~9dN-@>K8`Y-;EPyVNW^)G+(-+$(B{;<2P zW7p1+zx({>zVL;A7}Ie+(2*@$pS$Ot zA062G4D+@{>(*WJ&YwEzl+$^DfyDsE&w+uSzP>JUD%Y8FQVeP=EE$}H=!lJ;+8!h5 zDHY-m_2XVmV-^337YKNLWJu~s=-JES#ek~6lybnp1trSqb(px!tkMRZ^g+Zh_UNRT ztaR|W6Dvwa?}c6!AQ;-XH#QWru&csNsT4`P(k1jQf9%X2Qlb-qr1rH&J`Fh2FnZk$ zSDkY5NuT(?|MO$_J@xo~M^_#`vf;$DTH08wDK~|%M!=ZZuypzQg^Lz%dGh{OUU=qP zU;NSwFYUPcjc;mi>z$a)=*0y*m4!!9eeOr*kD9=`jwnIk&~RxJA1FMjyqH(buL_t9Z4#gSX^=qRzbYSp5_0iM+M zG$l%FLfFIzI!Kn4voxg#7$SpNk;K+Hsfw+NTLWGZ3n9Ct=_slc73+>Eoa#EFK>>1K znFEO8g^>D5yMj}1sVG{RVlgV@&@9HRGvlb*<}rnry*V`@QI%2+JxSUzt4;q{6TyR( zrmDJxbD-reT#-gc6_`{?B6Qf(KrZ4PdZ(Va=+sj-J@m+vTel9MctU4Mn4+01HT?IlFYiG6JZce7Hr40Wi=JVR!!UfrAHz-}UaR zR<3MiXf8vMKB(&uYlLQGDW?TV!%~_PBVN<~6<%FKN3KGw>}fYed*8r7e_vN;%h=cm z8Pvg!xHQV)z_{2pxNzyt9j{D|kJf6ej*-qXRJe#`4heZfKzhm%;grbsu(AoVuBS~* z?A`fdZ^O}l`JoS9y>YN{dZeN4nwR$<`}Pm-{o42MdG6k?Zn^(^&3y}(EMLbL^_H(# zH!!%kyKkVayVomlzAeu#MQAuJ(eaowJn_m5x0-U0oKzVp!ni_fCTALx%UG;9@NtOg zwzjs|M|49tNy}cVhp;8a_8^Ds$)*r3sT!qBwaods;NRWVbmEDdpLp{5r=Na?7xrhC z50dv(NFo`)u?lNy?u59mot+#T?e1***hhcr>MJh!AAkMX?|t{qFMi?cx88ckJ8yc+ z2j2HntJf~%ORCq)qCIn zD}Vp_|MAk}Kl+nD{fl!hI-l3BvU*{lA^`g=H);bDmmbY9fsD-V$j_Pn7RxzN(zwkn zO??Yfc~@Qc)j=mC`nsK3!5LX&!^D61u|qwX(yqCXHzy2QsPkWJMpuUrm8P7ejzyKW^-~ZJvrJ}0U^j;MW(7?>1^oX2fbhFhz`xc zP|2~))Msr9YN3M#aipA;B)H615YfRCYFd@XkOmu>VV)*Oirk%DCQT5AI9%*%(DBp0 z%B*4{LWHj3F@Fex+mtqP77!cNN+By7!Aw{sbG8)SV-qMVmkcryl1@l9l)hUwD=ylUETE#@&lwS}n z$=r;aln4NVKsL2;787S@CZ<`38y}q*A03+*ner>(eBx_-Vj_j<2|o8V#q&|D`(Y-Y zGnG9YV{}A7v79S#|CF!#=CqqBB`-YU@j` z0Z=Yy=^NcaJUc7*))!Cz@)90GN$Zd(ay9~Bl86ZOD9G{WrS+ag{ZJbkItDx3Z@@J- zH?(yf+O@xF(#x*~f-9|Fn9eN=l`BHM$ZW9$jV|KPIVHbU6o&!_RIzcVOo=$KNWjIj z^bF$L@W(w8HAFxub6%sDC;$S|2+j-GWP&&`OXwLV+D=FSj4r{2R_jc?hfOFZEYP4Vw}dH|0th=o0{rhGRTS)&)i81 zX0Z`F#EQM_LewJy=~KfLyD6&7A}BIx@&sMvqkCc0XhR5TeEyrEx%O5JW3UYjV}G+#-xBCBAj`pyaI5RF*`L0B`()C@ZO)Pao?RYF*Y?hYX6-a<6*aHU#OEF zJUPxYeSB#MV894M)<7c_hSP~mbr^XG7ET+Qnz)iof8;ZM9h^C|w{^C*Vk=%-PM_^+ zY3;Hvx3n}hwb5mHicxE%)0viIa|57g9Leh;W~AvvyA*)f5Oti%6tl*;Si*!yqXq&F zUqcObVN*<_w+(ZRV9Pw)2hvLYqPx8t0zj>+DB9Cbn?kaN!ywR9*@@C3SHa2s=}L0& zlCFj_uqj#P$u0C9AA%&ahV-TpasYo_MOJhISye0DWTx7!NO;ViVvOJ2<@~nzoHu5Sq-9V{JHqag%nICk#dSf;YnfPGI-I9s4uSlG7Tv=8`V0?4+t`NJbi?TI__7s?|K!j9@N=L2!l(c8 zbFXaq;qcK{H=cZ9@4(85sfLNE8a78xroIhL?WdmohJnSao_^wiXYRXa=SwfV`K|9* zz2T(caVK%HEr5|<&17VPhrb8mOu<-HC{iZV=0k^ucJ1De4d}(wGZU>XQ?;pM5B=zS zFF*YdA1u7&nkzo?k&pHdEEpOZWz6?>1-9vl1>J2cmJhIwki~px$wMhE@{1)(Vyxmh zJOOn;(xz{9Utyr5Ks^*zGONf}{7+)A)QZ>||0 z$6+hp6^sHGnG4OjI?7;~E;HNN-Ehs-mp}CQ*6)1(N2i{6{hX4nStoJ5Mp4D6gHVnn z6+r!GPOwzS3V*mj5Lx`Gr>1%6KY>u-txsVdtaQ@@ZJcfR#y4&yOyB;t8}<5}zV^4| zL7@w0DT$IJ?H>5*xY8wJ8mg6rL@7n>7}YFD2UiR(9$36^@a4USCMQN4T6%B~oz@7f z%}&lVE?=?g;rq7k-?Mk&ign`?yr)3CI6?qvn3pZNRX;%3^NZz`Ho3mNrLCu{ePm{$ znVIy+f$r%ejoGSjqW}OP07*naRFkb6x;sApt}8xp)3x_Kwe6NWA9#4ni#xaec=zK! zp02gcG<9?jE?c^K{f3jzIOWU>8hCSwqgn2(gi+EKL1;Hihf)rOgEgv`PLy9@s8z_B zQNG&PQ0wjORR_l{kkS@kfTK-FUz$LLI0{iJ6P5Xqo?t?puz4fy^vGL5e-SnQLEDo@q%7qfgn&z>wQRXUFUj4?; zZF}P7mv-#kb6~@!wWG&I^$Owvhr^ObEM+$4M9sUf%#BJEJ)#TKp{BO3j_03${!jnp zPappAJ++3`}VZ1vY&Gu@@xNs z-VN(dx%Bc&&N}Y@rtN05~tpZ1BgswzQeVt4sl43ZiBT$(HRMP@GpS4N=yI4-iR7iMI_Z^^3SrG&l$El;_GrydtyOH4 zWzF~E z45IM0U#CC%n&XU1`ss3DQl=~CoHWQ?fJSVIMHWF&9^bz-WKHE6uxFR;+@TLDZk z8U3KiT7fal9bFn(pkip(3&iF~Hk|Ht4-VGaTUa3AWzhLVjy`6!cj(YQG9L-h&cHj* zf{$H`GoncaIAK?%IxL!Y*`7)EEX6xdI^*{ z7a;72xx;%8)Y`flTia(DSCaWgM~8Xo?ZA@7SzQ&?^$vJoD^5dTR|K#n!YH!<7+T5w zQ$5cP)CZYh%uevqJxryZ5?coj$&@Q{lvz#Uxov9T#tRhvVHJQ|q*}AO?NS^)c4FG| ze%9<*xZ_*QL!%=@$V}bX=+HFF0h4swNiIs%rWo;&k}C|Rpezv4&sgl@e50|YshQJ# zdki-ocy|u53qP(pF%O^SOki?+dW?kzH+m~KI;$3X7)q}9wbYv08k#$rS~@#AyW6|% zq+Ol8?Va77++5emnPCSVmSsTF13skN@UABoD)knY^zfEvb);1n_d+tZ_?}#1pYgs??oExg_iLUo%g}B}at0*phVi=X|2H-}tf^8!Niz@al ziX51#WX>-D)Ub3hImHJUGuP1ukd#GuLQuI}g(zZTjHZ#%nF}v^!=e4Ve(;TNeBra7 z`MD4MVn=uX$mrBrXI;AW%B?ql@mrhDIP)fWm(1#blX2Q~joXi4H2irEhvUBgD zL&r#fj7PK6<6Z4D2ll>n|6R9@?|im<@q!P3_?ND@`bw7nhek#*jqfm@o@{BES+sb; z;=v9y^;6Pic#stliyd)E$YZ5Bj(U&Ysv+$iij@d2vRaMFlEx|0s+}-SwGr~(r4@Cw za)Ak49VEZDq%FVfTjAW`2kH(N?Fp151bKK?Ww7= zj`@$%goIr(%>{3cR#?$4GgWn)LoBe?*pk!`mxi_0Ed_roBr`25%##goyz%-!{L|0f z{GHoB{*fCx+6v(ky@6&&-5mXL__~@pU}^NI2v%hA5d(>MRF@MbSI2qZ^TuP2vOb zD>*=8fWqr<-dhoOb4mPu~5F+wZyTmv0(7Jlx&XJUzkp zU?zK;+O9oi@l~hYG%_)}d*9&~cI`_j|fw{5%siDw_W{qaZ7|Cyivctfp| ziy8DpRqz9QsBI}TQtC6vX)419!!n{FoM(DWjLfk!!+d^bwqfDIe!|LYVzFXT3C&nO zRq})snS|aTR++1zOtG?ixFUy_7}u;>&DhUr#esbX`v-fa5psCeNjIRF*h#uGMh>tQ zWQkewJF+nqBAH!$;mK#6{U7f7@%{h!m2W=q;6tDJ%g=x9tGB)L-EV#0&%Ap<|AKFS z=gwM3?=?5PxuLmziaQISLoBv%?mg4i<|83}{RBbjO~Tx41ab-F@K|SDbw6sR#BS;%e%$Wy{vAUA1J%5>n^Up~F*CV=I>}Y4Ii7 zWnQ8?U;(#83x?D%sPCPkbr+adH7wPE7YKe?d@1 z=ezVakOExD(Oou(~ z!2*yro%t(ACY_4m1W36u@7DPa>S1a`x*u<|;3P&sznwTke8XY=z?8w2R#||7la^UE(!^e&unix4&n;Nb05)c*j~+e3i$4z?JbK{pkpqX0 z96WOP=;7fbNB8i~(V@L8%f%?1hj<>>-Pp$U%LSZ%^z`(1b@z66_qXxAto9ym4(Dad zvn&~SB8kzkG|?ljmu9h2A_)tY&vju;yii<5JDE@%#Rgqm-p)mZ2G{aZpqh)QK5U|Q zbPF!TYsK=Z3=_!2Q(b(3xThB-8z!fkcqtboTAI3gdJk`Ve(Km*Yj-!R2CUOaS+Bd9 zpv+qM5aKdT;991u$c}uHOD={|K@!gRP+DU(fx;0z&g%3kqA#5uShRw+@tK(>4uUU+ zs-HGt1MVczZi!X(2U%$SSvFfiDq<%Ughr}j{ap0*c0AO>{y_SHSxp9vT_!?sj97&- zcZh^Ga@b~*$M%XSL^*;Ql~n5(5u&+CNQBsm(+rcHoHR;_2H><0I`B{X234ggjn8lg z!O;UpYkhspe2p4%!^{khgVn&&MOX*q5-#2bSou+={?02V4zicEsa*!=#O4!-o&iTiK56Kfv1? z4j*KHn2!7Mfg=;VxkszI@Y0Sn&27CMU47lXz1_Y2ee~JB0lGkEcVBB;hpQ2MGL)4O za-b(Q_FnCzX)vD-)WHUItVvm;TAmk8c+((pOCq*EIf)B8&{#HBO-$(*jLn;E^hl`j zQ&z?Sa4agGva1JSZGpKxB?uLIUVye?`*MrK1x= z05~#01rW0ieGQs;zw~_2;AzSSl=Vedw4C|E+6LtZ)2^D#j{Z~_Qfb$W8DluYw9ui2 zN1__YVu&z0K6~wr?>%&E^3m^q`wO4@)cZd0D-Eq3qQvU|hS;r+Xwed6IqAHIL+)xEQgtplq!opatLCu}~Yv$LJM$%cl<0AfXV zK`+BGxD|<_7O-9ZeziwnhdYxW-pv3F`Q76 z08;1dI-S`$LrfkmC0QiqS68YjHJnhe2a-?+fnKge?93O)mGE_@G}}PmUcX^2pZ)sm zUw`2*KlAzLAHD7Hz8&jNJiBjT)wnC|r~%2@G0xSS`%XRU@|XLUKL6x{Klu8W_wLws z&0F5x+}7=hG*c9GBm+CoXG0kk*EW&YQK8m6GRk8G`?#T~mG=?iubHvV_KEG!KJ+N> zBOEz+>V@b3(l7rK-z?;gD$ag1J)anw9`EgJTE2WyccG%yk=9y*Hi?ADt$E9GFK2Z z5mgEWqE7QTMoM-=d!L4rsurw+=-h18k0c^rVOptJ0fi9qgit{cw$L)X3#Cw><5$QZ z-_LKATU~&vP>7WjGCMgrd-BQ4&p7kU2OoNL%kz8AIAw7{L!nD|l6Qp>4wV-3h#qHL zFBN$9Y|$mRMTSo4u64jUVpYZKkE?1a&6%-|>+g5Jf9KJ|M}F$3-!m{+8yR*+XDuwl zE5*vzl`vQv2}%Pn1#%8rgmX3LgKt{i5L?E-od4#}=0Tx4M^(f^WH6enPYj&&Sm=fKNN@u!`0 zG1s5JddCA7own}XZ#ZLQcrT}sEz{#XLs*+6k2G{Pws!Zm6C`ov;;r|COtY73K6-WMp!^x9R8VN#Nwj*;9x)32PP&aj|~kW&T+p823eDY zm9mkGAddMC<|Iu>GX{{#+nQ@vU3JMNmtOMV!;jzgo$vhMyLbGLPyOY$ZocL0b1&Gt z|LD@?Yu0T(X=rrZ(|+X02bnp&#;Tp|t&iXL%+Rr+R_=IgY2|_n1eFgr7LGC}Q^QxG z*-STz;7J097>aR)N!#!K-tXS__1hXddN*Hi`5P|3zIR~R*aS8kf9mn49=z{ILwj~K z%#3yP_gwadH(Y!Djf&kCamXiDO&al{ zG;llkjG85IBt$%idSNUR{xN?6B-0tV(XL3^xfCM+B2oc%#aDI)9w0(xZh-k6P*qj= zMWM~2n-o=3TTofimRDLMSRFWL1{GoF;!f8AW=0c@W;-aZ8AVZbEo$38Xf%f~ z@CCtngC2uRnS3~{61~_#V>vVN%)^OFM96t569=y@GVzir@04cB@8ugp^8hpWef#(A zICSvUp`!<!$9aE^YXNPwfdyTBN@?Ztb*ok_U%P50U*A}1(*^1^I&(|NbAbk9!!-+&*K*J+uqa)MDjtzV6 zvG2g1J^Od<+4u5}T|0K}-Lv=LfdhMv9DM2UZkBzx?%CSV+Sb_7*Ve@vL2p;rKnJg! z?doao?r!hw^dy933qLiczwPP-ruJ`+ll?TQ|ES5Dijw5~A4LfR12C%UYa`N$vI-Rc z8Y8KOG*(VD>p)K>z2wM=TCKmYc4*XP)LI);8*bj{?CU>tc;uej?;qT>VrZ7nyXth# z%z%fi#=-4W!3g{EA7SI)j7JGuMN05S_QV7;T5n$vTiM8OPOAf^N?GQ!>!wRZP=VqZ z^e=G++u|y9GBnkgA96|kwxK9#m4HZT+(yn&a2CvniB-~j*`uJh3 zn;6aTf?dWXtMQ8`kI)btUZ%#8yyCLhoyDXjpuw$VUH zo@u6TJ2Z5(*4fd$Xn+q=A_%c!AA~Fvksr8pWU~!D zSK}rR!ylKx9vNw)EW;8?Kx)~D0*X2qLX6xLUBxqXa+A&E=;+AU$mo&7BS(*n96dP3 zGTM0!($7S zQwmBe0`uBqzrg2l2nX0sD>a>EA%Do4dRf|tnIy~HqFN%94Unl<;1DgQwpZAoycJkN zLD$O#ZBPeI*cB^^A@91}79Fz)BL#?7IaD@+FsvOe3}pM9qqqqqV#o}Lf(N&x3iry0 zrKqvg#M$P%-~H25V@IF7`-flthrfO2dpDg9pDB!zPJV(&h+%Pdd z_R`kvJWcSz(~sAN4mb4mo__IVr=NN5;$`cm`M}}S^vJ{%?}{4e?rUpnYHj2GDAESE z929|+PmX9A#_SX?UiMdUkUf4E%-qUy0fAO5pmWP6J{u|!qcK)0w2w^S${;Qf5dk{3 zQ+tkzC65oHVvEWjp{eBxS#bOeM9hb~Lbj~ez%7DlKAAxoZ%RY*x=%jG-9-^7wz8w4 z7(UJf-Y_hD1Y>+CG6;^CTz2C9e;@m$4_ryh7<-=QOKe%reiEn79pBOQqBlr08xW+PGrW;|gL zq_+RS;eC4#@eEOWTPt6p?BMH)lfw_*_1#yVdbrj)@%|5g@a;Ff2j!0NS#;k`jzM^Z z#O&h1?xo9mxu=P!GlIcIpSS+grZ4;#ODVY{i zY977GKYhnOg)&nLbdVwfhvgtJDHgqL@KDs0-6>i*uGb-g6>3t4)W@YdKt1L@`mSqG-Lb{tGyWWphNEcUZ5k|Hh1169;%fdAhT`=`C-$ z{{DOK`tEn{IPK*3Mmu2Z0z|iY$8|FQi{CnG0bvH~qeDtmRQX?EMr@;_Xi&kwmR`_- zAiBQw&D)sa-1x@p{oF9ro&0Jk<0hjKV1-uUnJ_8AQVBt;5Oe!V?YgM;-LesCq#|RD zqys0Sdup6*DFaGr(|NB4t$0H+SKljFqXUF!< zP7LwTj|qaMIkGBAe+pXAKd<0^u$YBp7_Cc zzdbWPe&r2Utys3|=&@r1gA1JK7k5BeHV8~Q_ilgwqa$WfIAkHj_*`Oh>leTJrQ5!G z%cAwCUVQ1bE7xu4?dsY6%FB;G_VANWKRJ2$AV%z8zU1OdF1+fhD;6*6=RVHy(IdnG zSsnrm_Z__*?XAr%yuEx(5Y)@GTA^O*N(82V3xj*5j9XQJa8nHE zvthBycnK-_DFUkMW3bdi6mK1YE-?nKI3P*{ZDNxWin4e1t|p?&fiiA{ujGX0*8}IZ zXk;vV>u9GJS`v`z29dJAqp`KmmhEa*BIKv zF_|BV8l*@eb(_7OB1Jx&D>%JR~Y z-L8O?$~jUMMZ*ZaMUOQ!hDX#BOH9T(TWh^tP0JSb&aCfkYFH(2O{S^G#<{vOb724B zSNH6Hc^5B-*|Ytnov-ZPzkA=ILx=b6JNV4hjQ1Kewsf_2a_N%fw16v?ocnRpK}&l_ zb88zW<+3H`d=SjU10mA;(3y0pP(~ekSDsEI&qWX(Ua3M-H^WQ8B3cS&Sv!*EGeh!S zlg330XI_1Y$Gy4Xh&5xJ)z#BC)6(;gpZpt7`@JI=G175yDP@^s2E0vldJ!_b!jdAt z3MQBZGMm?t0$=u+k?J}7MofL_BoaOxYhz-p97sHxN>l5~zM?0g@G0_Cl9)b>2sU<9 zDhycZ6BPwah{ z_eJu$OaO6Q&c31Ky0^NEtCAqvj*)@MU0L44-m>oeQ>U9+xQEwA`nl@K9Rv${+k5-Q zaBInbbZs+$!ts+};MY@q&nWON^h^Nm9eMo)I{qLr5*gGBN8O3&GW&vOQl7VYRBGz=q6kn11=TDdDmKdtd24(I zud8LYzo)%nd3&wKyE!+}f|UVeO=I7Ikyl>Xy>;sgTefU__SqMne`&|gT{{kJe||p? zdCa!XwzM~Q^etGx%ErQhg-iPfmvr^^H@9{$M0)9&u}^jhCw{Q5hsFuT^t8mSHZ>U{ z5_|!OgRwsyog)A2mY@P*!Zbc5mv{&)exfP3w&eP25agzP9bIBrJG#NGb7knj!&W7S zl0PxIIJ7eX^E!b9u%Bcgg2&3(Vv8!}G_DH>ZiSbM>BZ{K_}w+wXgB2VrJYiXHXu%NT2v!kt@ zr_1aioNCHe2~>a@CSq!4}guuDah^oAciRu1BO=wP4pEdR1edkA4C%q34M+o z9ep_;Ia`*xMUyk2V*v-xfXBxy)W(0zYY`NYB1%%0FWnOw8c8>j(ZNpMLK5L{CQ|u~ z40VPv(TM;6AOJ~3K~%i+KhB3GBE?y#BLR=CYU1Oj6iVXA@M66RFePNTV+hC{gzCV= z7I|5p1Wj6;FANQhY&>z@pMC20|N1Zg?r*>Fr7aKMd~ojz>rc9{XTj3ZsU}ZF@bOG- zWMZbZd-3^~-1y|<_wIf1nZN&=KfB>=@7;LPX`_=6!^D+2peZ!tITzAKrgrY!KQc1f z($emyqGrb1+GdXJdH&&hzJFxLwj~=@{n9Uej1L)(^7azq1eN??>qJ+3!?I-qeSPh& z|6o5XJCj+5%4z{E8pFry@u1x@_7DQ=`YIoy1P$>6k`baF0;}t=fF`v=IK086#IOv~ zcSL0NYv(Us<+#2@h(tiC2~JhiUr=DPHUiBZ;Sj^n+JeGCVJK5k!j1xfRZ~^3IH{5M zoSIB8fK7971zZ*tVtz~)qH+Qj~z#RF?g5ionku5Ms}58@cbkM^4zZ?yNJ{@oAx?^a?v3i^@SLPAp>CZzCh16pquJ zJGQQ{u0vEu1ze1j8d?87?evou40IjbyJK>6sHts`#~iSkp)gDL<*cu3`HHpo+;b1_ zrEh59lXWqwsVg%)bV%lj_Y3?@ekq2U!xOKr=4@rv15mB`^w+_$4`I#iD#bs z*t_3&>YB9^1T z+c-4c%Y~9$jAn0M4kP;SYzv>S;VuX=A!)#{$jL;cioYa48VN;-xB?+qk^%&|V#rZu zGEnE@e;XfNototW=Jhw+aQzK$|NDRV>MdXS#*$?#czW3nO%jG)xm84@CBxqKt*;Fq z+>`d+(>>+;c8C z@x+tvzWr)M5Lk*p+C!D(eimR?Z>#VbS`nq|2OH0#C&tM;qTtk^0uMws1 zD8x*W#O@%6wG0Ro0ar!v2vvrIe2Y|8XbFC?LyQbOMayLj<-n?9Jn=wK5w_9+icYpW zYoSdapeDyS)L;0jcDQD40lop07?!=Oi+W(*W@jBFs zLt&4D)081GfKoSb91>+hKzed6ov@`{s!>f9iajI}C)rp7&=xrIzMAyrXuZV~_n zb7#g9l5!wpFYA>gJlM0bLcyat4(XWA$d3HLRHqfts!(W(7LkCR=9P`WYvka`NW2YgQ~;$QL}p(;N9` zyvjDgP!dQQB2_#{DPk#JT|~v4U!H$h>LChNDF?k+iAspjdyLUaU-PMun3RNqSqV60 zQ{_Z+V?%dGt-GUf+2Fuwn+IlVCkPx*9rZk9a>pyLZr!$H%hngRZhK`1O9ip_a+krok0U_C4_2#P~=@tsfsw&o=e+^>4oXnzqJT zdq*dlP5J0%u%H2+VUVbWI_uUPS2xna(LhU{XRa1Qf}cs1Yiwo_P>JsRq(%DM0QMD!=ix6TM7tf?xAnONWa*Fl#Cg4MVqqt$Caa$d3;HWNr`kr z{>4Nr_dv(4&NVg$!kHQFKE^lh{{qB)|tuM6gSV5Tv9pD@Qa(I1J*&4ziw`dodB* z)!Ov>QVo^?AGkn3kY7m|*ha6_*}=@L4q0sgyUeUKkRetK1vbGW4Wr0qqS7rRPf2%$ zn)*mMLWM>~9eo9Fc{*Hp1lxE)akRXIAxZ)R&Jj)RwNEgEtT0LrxRsLd#8o_=cYOIx|Emqnm8C!T!X#cx=)VjWK#@E)j< ziD}kf`+9g!Oq*x6$i`$&0kuB`jlm)Rqed8(L6asmDFQ1>42SO|!*TS|R>pSOD2J3v z7lK6(YBRk-t@Lv8ahPHNgF|g&Psd0oYL-N1sN0;@gp3Rjy9lf4N)8O?Xp+;~IJLw& z(7{$)u-vN{EcLK$nOLZ5yjQYE=kc)PV}{Do&8dE)->*M<*XeAT7D z@S&gY8(esFXc!!>I?T@U;*hCeTw3D1f_z*NrHlD&5GjXs(i{ZzJKwqU=&`Z) zUG;_q{k3C9pK=z(!Q%k+enW@{^!cb{^~ z#=Gu%;pmZ9`<4yPPC3e|A+tI=NW+q4EBEc$@xlf0^sg;aU zCO!@pvh|NS3NHuWw|f_l8E@KfYX5>}-bb$3EED*mSJZU=XHs>ES=|*Ia&$ zMdg~1mv;(VdCNjQ=ous;78H0o`a9qI!M1JNTiV<2{o(ER{OE^A`05oaF@4=Lf<_yJ6Fe=P@Tz@mpQ! z#=N>9mZ;29P;>yEaE&`YQ0jmtmOueXS5facq-`_8K&@!4w$a$^7SUpWP^aDlq;L;B z|CE6mg)su8#%1V4gQr8z2^9%Ww1*@7t7#}2RhsG>8ZoP*ohREF8F5!u7{UXVStj7X zVaxOCBwf!yT+}h5ts#UlrJ`$8HANv}8i>3GO!KNWAqAJjt8=sjl2bsIJy6iM4>j&?i~yBcxY3&ak{|hMpwO3Q&fTpviH4UtAd$qCBesJqY!E4vmDoCi zsCeoloKc`5!G}v36(gbAb4ForWb@%0Dymcyi#hw_csf>|85ury;K1HJyIu4*RNXG&szeJO!bUTeu~SZjMWjzSXDdi zl=f()yvSj~Np-{rBAaGaGdI!dnpBD)xeaxswF?{q+?mvQz#UuGA`=$Y3F|; zKsRtFbbouTZ$-x|7QG0dY@Jlc6diJ@Op4qzXxotalaVN!|9S2_J z{f4~hu)D3hr=5GTyLvl%dK=q2dAk9xZu26PotIv#JBv3x9m4UE{M-@-| zailkqiAg%|(pk7->AtDa(PM`@YAblj8>h~VEp1CSZT8&*06GJbhI-8{(-|K2BO}(U z(5O;^MvnC@MY|fvi9iYp!P~$9qYRabG?nTDIlYQ*`5I_NDCc_KhM>#S#e!Mf4;87> zY}yG`3A>tHl%*>5Xss{YDUY-%(H$vs6a~p;WD**j4yRJu0%8a>O)*JErqs#=gLAsa zkil{c?+X?K=`oI-1~KGEXHT|}xk>=UY*l(;00kApGdZiza|%jD2Q#xpDjD+84z85Z z$&rw5!rgFV!@X-(`6ezd0Nx$I%>q*sBQxVXv^dq@-MV7qg3W6-oV01}#&taHyL4ecx4RVaQA7Gk4N&pW zh&0v33q-4Y%b#h8-b+v z+ESX=ajocXt#z(yTfgdrYp*_mLvH3daB%9y7hZbgi7gL4@c5%oKKuN(9dz1VPd7h7 zpX^;YxR@vQ)($RN*|T6#b4SnYEVn^7Ok!rzB%wgQ(mDh_0(h36w>z4v5!U`_s9-bi z0Ky$S<(_`)h~bO}i$%eVYm_|Ix0e_ZOad`v*XG0?h8rKM51BHET3;|d=BP2h& zkgMqvBJdTD{%M85qfMEZlz6us6P5}9wXtL+kT>|)Spy^iR|$P)Ux{QwOGX^Kfk_}L zNWyVY?;r$smB$t=u8?l%PZ0$8soAEMwx9WhU;c--_WQqgb3+IBLbiYElmBIMXtc)1 zWflxrEj-`S`121sELH) zS$z>da*9Sw6oSB!E#)G^((@sx`j+j?Gj`u^{J<4b&d=)4Oq=c;3M zIx^eDv*^2b@8tbHjjgQ+%*RdITW4z%2OhZZ)?Hg3<<60x{n#(w_{JN!yJTc|968W^ zdJ34CrAr3~`a0|cd?bY#o&l&iO~sz@RE8r+OZ=;iA*tD84-94y5){0bA?Zs;<#dA< z`(lDYN9akjx_*oWVo4lg=aeL%#mF46m7~HZyo`l;TO|Z_5-M%Q*&e}+AO3<<2-c64 zSawPpkOC}iso54p53IEI_y%&ptWz$n!4S$q{UE;*lvGtY2VMs%T@0o$VDxfB0iUGg0Ng|w&#_tgUe6M3N|YO-q&F+NTNQW|sNlc7DJnKLA0C<7 zeA?;U@4=d)k_-h=%ewWSMt7x4bjndv=;j=i#v)e;`q8#v?2w_f$e zw>Px)u>wR^kzvTwbrsP`2v^=q)|64g!l?v>sHwj&YE#q94i)`@NF>EAsz8_HjDj}6&l)S~rjD{2l61jo@^oW!6KC2qMUX-YB(s48gXK^D!-vzl zoU{XD>6zyT`n-v)<4RT}_ z(W3wZ9e(*qy`t)M_t3PtXosBG4lEvlDJM2E<+xU^^BdR*m-HTSU^J&AJrY-^U&>hP z*v#|=PucIOD-$Ej1h9173MK78Dzk!Q$_$~Po7@d5X5|!%6H5dfpBm*sq20T;@80nutCnL& z_Hvnl_X93j)O*r7r=EM>spp@2)=8&qShAGYlcS+tU>X!FN{|ZvV<|^=9i{#G7mrwo z0aR4Wy2VT-X(C`K6_~WLtB%UgT$9L!b_mVY*Rg)`Z@}DPthxX)C_zvJ;?R>svUgql zbP`=0U-)=u56>yA=vu#G)0G!(nyy_lJXPC!gty_o`pk3No_^~27q{=&xqsK;o#O|1 ztzvs;TUURZPa^cS@$!PM9zJ)+x>ACl_jzGGR>qx)Dsj@jrbBIPiU4#{v!r2(U@^5W z8=o9oyKc>v##z>H7HvAYr?~|jSD~2qp$z|da)TGs*p~?gl8c!{U&kfhT40Po&*`^I z4xaMpK{8=NsCbh|5t3`-E+}Rkh-jVw6S=e{`uuU@7hXkv?F#}`)&^Vmhc3safY{WV z!e9*_He_@Q1qtdW*Z>@>&`_k5bd~-gs)>*k{Y2m&+$@EOZ_=ReFz|EICm|`7dj=>t z;<2*Af{UvRh@`v{2rC1!I_5XxI6LtKNfjc21;pXR$#ZLQ>B$a?-hv>Nd=zJTx)pUB zW?E*O_VY~H)WoXIo5s0e1pDyEKli|jP_hF>c|t>znIG^XlNy!a-T#x5d^>rPcXA#( zIyO8sJ~lKnF~)jBM|5e%)a&{h2yozoK| z-n2NwTLp{yG;79)6>lq1(Fq#TiHvn%>HTkQa|m;Ve}V?5d5!amuZOg$YL2~}KcFvq z@Dz2^?6O78ix;lH@PZ99AHI>5nOAlWJ^t9Uci(&e{r5le%$DstpWU+a+52iuovnRK z2bZm0x?;_er7OF82AY~Wre<4mcbk^-w5`hR2C9RL^mUw}tC={aSmIPWDkfFd>Q=Ky z3~7jF)2kplR2a9O+{V<_miV=`7+8V~E_AID3lgR+@hni3Rqx7IApt!i(V3LKX1Gs( zwC95zajj*7DuFsvCjzvU;4>;iGrbc!xzP-KWhDd9wSdqH5he1|mRsvf=b%e8HH`Bj zfu@f4fAFKX4lMZLx4${c@@jkMsuNE-_4IQ$pL}{tXV3UJXBRE~i+Gfvy;;wZpIAAY z=H-?SsW2-xV~-LlYn=w55KpLTJfrBCMZW-DY^+8Y*)fT&3fWkt9BWIVu>usGHl!eE z$i!B5PlaI)8mvf!`fx23f+qGVZ$xH2TWBDyk|PSvbUlY;;INN_z&DVnFP`)yMNo2+ z)>Rtu5)I)+N!M1Wk)5PqF2N(Q2NV;M&^9JR-q)SzXy(*m3_=_S3gbTCzG-Rr`JaE^ z<(FOZNB_^K?)l;U4<6XH@`SV2Z8)Q|y>EDg&mXifX&RZVt=V{5dt2kvkKA+Tx4z1Y zNY6U|@=?wmW}A;59oqfs0cO#xyg3NfCVM)j_rJRJ!F#_qzVo>?CvW`NFaPSg^_#}{ z`svIxGYTfktR4;Ywl7`M&wKBEas- zUmjuAE~K2O+NqL%GIo`aQZJ)W0rZF?hjJ*L^R9{UqdRxJP-~ez|NILkCz7O;s+>>q zEgu#j{o-``unq-R^M#;!HPcrI%GAb++Thr+W4yh#qrJUvK_8McZGkbfX;pXBBY%)> zU5Jf1F_VqvXsMGdlr^np3;t#1081VKXlm%{=3d;HeS7w-*vK7hyl0Uyw9$JB_|Wdu z^y1|!YwcaTUfuhL|NReGMjagBvye-dFI_ay$7^)EJA1pKLB8h`O_P%o!^2}ohmIXS zbnL*v1HSxh{{dgwh)bGVmaks>mbbih*~*pAKK;yw4I4I{u#Pnptk~1p%*)c9ymKci zw^>!LjXDex4gu;yjwC|R1L=ziF@-ASDufo(6R~AkYt>5BISdp#m^;{t#bBIJVzgsW zRSr{Uu_?6hZ?g;?S47e$&{h_qDJ1P`Gq{(Qf%T!^5_;5mLe+(hu|_kbae0jJ-qd6_scKr-S^7$C{aJpM8FN|Dx6FH*#&7dpddRDa)yz?dKm?Xh@HC z4Rp{|KHK7Sk#1+aQ;SCYYvxvWcu?bYGrZ?@O4KgwsmyFu5T~Ju_lTtdLflHFfouD~!kB*=J0gn+PKMPM>>ynUI+swxWWkUG%IavqJtd@kf?DYGbYxBDlbBpR zrEzuAXMj1T2lH7R1BYQ^YJB*}OWU^2cDJuN@q|&D!Lgf~kC5h@PO9W-o?u$tS+y~cNVA-V*dN0dmzT=4h*dAlE6r8??-d9KJ(dkA4WjvU z|EENB*Zf8gia}8*Er~|d@Bo8!w$)Bp*L}kJb8mY4x!hc^d-ur0k3D|pkM6(k-bbH& zX4~$kp56UKbB#AcELyW{#aiBww_tE-dv`zg{xF4OKnV@I7ArJi6|s#bqamS=NsTSd z=Nd~S%r8m_7Tby&5Cb^wKx?lWi>pg2zePQrq%st2w49GMR|&$&7}`W9%e=Vk-qef{4Q8uzUqDb@m2t z?tz$ZHx(&bBDSx`absyhWs7y>$mU!i@_+#U(2g0)pr%A>9%D(u#lfWTVlte7Ns&h? ziWX~1RYN=VjRIN@W{?s#_RE?FE-R0HAeGqBOczo#XYuQQtNp_q@dA&9$D0tXOebl; zl(wkF`h(~3;#lLi)uyIKRUsPdqd#B2hUUVo#e6|n*S}1l9r#!NoD{atYJ}(`Kgp5c2Nzsk+ z|8xUYDF9|aAJED;M`CF;9#pMtb)P8Q908l^0G5wSp{LnWQSCX>Fokw7RTBagg-D|f z{Ik7mv{pjbEBOsdUCcV#) z^ePIMi0D%y^Is>F>7!OcQnXQ_;-CQ7g){#l$F;S!?A`t@sN|G`k$Rg4p0Mco48ZmP~6oYzxlu3D<28T*T&$k9d$H-6|27E|}VBCeQ@Gy5@ zXcu}s)sJ)KB9!O!b(Uc)%K$n@nOXy+c#T zO2w2F7@GDACG%oW(1By_h0@eHd*lvu&KV)at3MAN+WYG6o!l(2f6vRKLkIY_(Sn|q z3(j1B*(Gnf^2!U(JazNJMU{G$k`T+5s8R+sp{5R1*U4&BuYl)D6WZJE0rLjT~;}<03%gT6V$Q}j>^;-JE<|S2m;Fnl35XJ7jqM)unT=nU~S^j@Kv6WjbtQhQw5d94xp9m=$fhi z(k#Q34bw>|;Z0XaKnSmho@1reP9AUrG@f(&1xTw^n9d?&6Q!Bo_zZc)ML2}lP8x)wiVB$ICPYyjn^i-dbwz_R=kb97YCsV? z{n74M@Qety=}GekVsOYkjYG#8#)mI_?>iSP9ypjzAK7II0OO#2H<83WAr0JMI5|E& zHZeXlGgx9}{evYJ95 ziRNUA-%{1vsH(|4YNZZ{S9Gpib>UmzbRl=K@7ytR z?|qNn`NO;JzVD$eTOL31@}tkTb~g1cUA%nV@|EirFJ05qv#_y&yF2~7tkWA+_w<`6 zGFI(7)Py-~jK{=ZVNRn$XfX?@DKHLaS)d@73fug1xDz3Pjl3a<*s(cLoEQ|7Hsi+~ z{mC$vNd%BiPOTG9u`7pkKN}!eOs+f#4Hg{Jdos8~L7v>#FR}U*RGF)Ar5f(a?^RwP zFoVM}hOuL%FH?jILYW$QIGmSuHViIbvuxEy`zeb7prfLvi{tj$lCA6sg@R!lxzl@< zxr}HYM()@p+CR{$UzWYeHDt0HTD@;eV>d7DQO^ zxsxCSrRahn4YK5)R>`>rMaWR4!)U9zBp{H_gx6*OJf;>q`20L3i3eqtdbPu{(+Z_VcQn@%4XT)}q@crn4mOxyC+o0}UapSt(1TW=J?#kVF|NYp+cxsZcWw?oWvx zT&0@ONKQ=L&#_H^0Snj|Dtqr{$r*}BG#2cXBUa(VaS8%Nhd@?4WvsB{3xVfI$*rPR z6{4$EF-I{CAcZq9F-GYW73Oi73Y_s2_g91~If@kvZw-?zCaM!JRh7A`gX*WQxPeN? z6un+$yzy4cDPGh3#v87^?bchq_08{Ibp9_Ebqb@R$~=m7?#D$x-dMHGtH8xvR1MRr zwy-}AQj9hqvo78Iy7&gc8)mtW>E>I$$GcB&c;mJBodLbFegO~pswS2!)g_XSb4B_X znwmLhrM1qyfYwD2cpkF!2}_npTWat7>G$0Jz58Ez>FJegPH1W9oN8>zMH#Oix1q#a3mFPb`Mdm+7aoV#5-XLC+n@@h&)Y0vKG$}tA|%Erg&PF z{=(;J+iJ`}TRgyxU*PqLUg(yOQagExJT-OX;-vHRnXX+{k1vAhqXmep_?X zmZzVnjg4M>!9|M}H}VNw5UO|e$Rmu5Aq_1pWk|uq1yRBcJ5Y(b*n^RVk~6*+wmr{< zx>YNe_4e|yLslNhwaM2~hRW&yJ3baqoa*d=sDEY3=Ov`{})XeFF;y2L~2*_jLOl9Z%9BFd9#fu};EA zdfMB%czYR2&rDSJkvM4k!dM3wBt)^I1i!4hRY&F! zE2$@F5-7nEyAUB*tjuqdMx=~EToM8WIRy5^M@E>@^g%ga=-Nkn856#EzSG_?L-K}Q}k2_c{H0Y}S2fnNRmbJvHT%~P1bPl~Ub%uP zO>+SA$y99WRX-8txPWyqe~l<(A3NtKY;k3Q3Ek2(7pgiWw32HoTDXq?IY{>Prb&^B z3aqe=`=7eF<_^sc!7kU6HPuXaTFib+!eO553ac@NK!jEt}@Fg|>Aa`+gdbz9@i z+GPtiuGz3@Gkz-9$pog#0bMbek*szv>a z^U`2jD2I4Jsd$a2K+%c<%mLML=Lp3pg;oGx3+Yk(P-3T!U9pz%ae09)63szX1wquI zkgj0n_;6e{ld2T#VQ39jTVunzHJ$6%T=L#`UpzKZdv5ElAO7&3?|%13_dop1?k8W| z{X}c6d%tWOJgy4UA6O%tUOy zpTZTof`@uI4OybBq%|UyDxo2i4C+)-bO{DT@AlG3y3VAL#bD3p0RWQe1U{CF3sYWI zQn?U9EGXEnQqYWtAubgok4A=nezc;d_dmvh5mwh^9BP1QJu*7l)!FeIzxmIuxa#sh z{^P&c`plz`?A^9}xu#f;PEoh*) zfOn_5@OeH48k9K1%gj*ZPrWfpS#mAjw0AkRbqs_8$y!8?;TYZ? z8g)>kDReZpG6f)}j+lT06*6g22MX{lg;E&+<)J#zDbW_7)QjM;2yvUob6cGYm6ckh zDKPH%tLUeYL#a_&{?C;u6nOTcC=kDuTt(f|gm96Cqt|SO0$9#VOA9~Pnf?JO0<@7! z&Tn|b`GbSq-~P_+zxA(vvA3I;D{}(Suwk~sm|}<&N@ZUGy#7aV*;uDxHA^a0g%ng_ zevNSaRa^0J{V2eOfPJI!hj+dF#y8z`$|)y*{p)|r!Ul_TgnnJI`9wsIL5xxwD*8o; zdCcb61ilV7zxH)y=oQbWbMqaDtFQl=ZOw4g>d;Z}6 z{?8rD*S_st?_0QdEyBYch_?1N@F~npPBd|PKRd>ED8BWzFHDUe{j)#$o%4HDfxT3qr*aEdJsc*CvMV}%VifA`+d{UV{ZcXt5e1vpgN23QZ1o>n> z_)>0TbO zanGX)sUQy&)@Y2hs)~3$R*3PbWzA@L;)yhf%=Y@#W)XXFD&KAL@gEcp{@zU1A z!~giNerM*u!Smkzu5&Luzon;>2iJJcpqyP0s>(q}$=n)cQN}PtJpDl{&ZUBkj%@aq zobKkcf5nM$9%v>XErAoP5*mFITF?f&j3PXmM7zP7jbddCd3weJ3$uznh9)b*A-~B@ z1wlOLh-?(GEAUEeGG*X%m5qi774Ha-Nal5Wci9kH0np143-jX{4x_rY078ozv`3-2 z7PYO6AzN^=if5I&>Q&jfAi<{8zUiAa#Pr>VoMyU)$oV3SJkbt%W{e{Fs-Ea7}M^nkF*`u^qQkcAquDXE=RP-ivF;Y)ZEfCJ~nmpw{HHM z&wTE{o`bcfo`E$dEMBr<*|IflZEfQthktncw-zs6e9^TxP1Rb)j~#gC$@^Y@{Ks5? zd-F~2xapnm=6${6eldsVTzHUnf=|0HUpmmps82TrF@H^V~}McM_m;1gxT1enAd)sm7CVz9yAk~1}OV>Q!LME-yb zuyAY@hV|I9)LB_CS|gT!_1e&$hbqi*bYnpXYuL{xBp{ng&SwC){UU9_te^@{5$1@X zPt03@g`-qj=L*4=NxdcFRIsJ7!jr2|F;_J%gqUL~=h`3o$iKbimLGiMtDnF8(zU#Q zy&5|hGmB(%3@FsM(vqWj#d>S`%?*}y;p({6?`vrm67K6@b9SQ=yO?lpyY)`qH-F8w zSM>GGj*MubIcTxwD1utgHplAcwVy<=C*kn)r+xhvcFIS?QE^LxAu`=_^E&W zo4>n#+v9^vHX;u*c-+P^w!dJ~9oxIstl#|D!;cK~b}n1BYK*7(6YgX?vVuA|(UDq7 z8LotZ7azG62Q+`mDU1pOnIv11rJj|StEXP7h#4XuWH6A_Of1R;ss|NJn&@Mt9~wp4 z6CN{si13-mo;rMB_quh?5Y;2>W^gZ9IuadI=zHFjicOl!L0-%qu@EkpBm>I?mRHNdc&Dl zUq5m47yt4*x7~K?=^GmwCYg=1ss(*ya*w(E(0XHI2XACmS{3vxR`oCk*_o?D#3!cp z-MZ!kEvu>7=ZDh?tyRjp8$)t!LZhe`dx)kSBchrxj?pp{z zsz8ibvDcVstwIKQ8Qvj*cH~z~#^gzMxv5p^@G&Q(SZqWMi}KXCZpK#zx#-O8%}2QP z<>eP%dhxlPue>}pcBnQxIyl&V;SFb8cip9zU3&fr8<%wOW!0asc`^~zG(j|%Wj5-o zvWnEJqc{h)x*1@lT*oW*mE|kU0(_jx9AV8^CmnJXwuI{qabcZa+UJ@$nqMx+5d@_w z{2~{}ajV^e=nbB?HdazwImenp01DI`Q3zUJ#Yd$z-l9HPnGR1b@?6du;=*v`;|QJ2 z{Tr8@wsG-P?fm^mN4LJTX=(3Zv7oK1qotj1su19u95?X3 zua;V4&ur7zzx4Il9WS5uj(1-D-gg|B8l7q3o7hHcdIaZ-_9^FBR#iINsiO@eP9mAd znILQTprx5JS;vwLS0EYPBC;ix4N*y&OKY_S3R((%$az&1ARa3Yp4!VE+P z^>&lOq4bwHHnA*Amr&{)3T;mulz|)$_2MCL${n)kL!I+!qgLulqI6Y(cA4qpWWW$m zDhQUI9Mwwy4zaYQ?^!|>x?_ojFJ%V@ zpSMsZbVI_Ck5-t*NjkHH0gOcfd-pI)K68`v; z$hB*-(axe37ql4z%2^z-FF%QsC6e0}$M_+#y?Fuc2yZl$HidH4gki)9pAsuuC3}F( zBgSeZ*A4U!&$?rLbc752%3yWEKy9@#8W#nt&P}!K!H-Gk-<*jkXd)DGsJ7$U%P|xj zB8;{LLbbezJ6qVjkX9~ytxd){%?)mMD=D_{Hi*KgVX;=>1Dd}_yng-e#_ zvnWgYcI|v&|BfezhKHYi{Qj}Muk>%V#Poj2cl$Ca0Vu*xXmOgzpdn2PUl(LgV84+Ja#03ZNKL_t(r5v6`q z2f(w{5*sb^K`Nt^%1Y|eJ|8M5RrZtQ@KEjBw|uvwqx**IujV`PCe_z~hwYp|Hl?|^ zU)kqD&lNR6w%4}*Q`m~k938{9HaXew)9-!DpZ~?@UVM4${=F{^EIol+4hsmf(LG>F zOmy`wm>eDao4@&+pZ=M5Z`izPgfES9*@)D}sNuQooUF2iY!M0uDU<*x5*y@n8xE>K zDOw?1!oL7zb}WP}lA22ggBn;BOv*)8NSa`6aL3K~eA@8-yYHBt9D4JO?^wL3ad>#L zQ`SCqp z`od?BcrcY3_3(E&YRw;XX8UjQc~G*y%UN$R=Im{2y~0 zX_Uz9aMVT_COA+!hq}DME^;ciQnANU4)Op5C)ySLDAKDORUBv~W1=XSgBCeD)-$4I6D%>QN4J$PjY zQLu_=MS)O@G9hXZ6nP*Ufs|Wh4FV%ZFb`81LmekfF9HG%Sloh}aDmn6($>1_Bbe>f zsYW^C93v;*1t<2^A)+y!*o6w+2&7093ROj8gHo1o!c5X46!I|_wCZk)EWw9*HoRj< zAXg}bab;{xMr6e_Dix74^N>9e3UGB^i(8o&kwy55=WK2A=%IZtz4Y9R&p-R>ju)m! zj?@|_7BA|%_?q+I_SWmJyyAjY%a149N(#v%wPazMnNVp#jnY&Xqmrgn+8AxsD;qUx zKX+VJ`%~&9$TokUir4Q70JRaU-dY{ZtE=b*U=D|)`Q821}# z0R=;xf>+fj0=xmJED%sARKTPGJmM969u-IgQ{!20dK`U)m--lHOvM_S7WXy{p0?@S z(@q$kslBr2$kvy4y|Cj|URN-B=-B9R6JJ1W?dojp=-|6x%}sn5yjD9peDI-1YJGj@ zUUK2#>4~9SX>x|0nH`fTp2%_jE%5}CnvouuZkB9f@I-IkyP`q}!e9K(gcB1vaHxzw z{!9LGejtm|bJJ64PjZt}!2%@VS*%(5n`9uHG?qKG%;Hc@Fk2vr63umfN`&xOOIl?P zM;mFi7~FQBfC8#3Rw$StJX{@W?&Sd-H{aCR^YBt!5Sop(W0RxjU3T&9|M=DMhacbn{ENdKjl)wT zwaJO@*5(z0i$}wE2He;r?WZG0#U?ou!B}_-y>U5IYJ+vayK%nACl@9bLIN@6_93HqLjvxO!6hoF{tDMIu1poz%Ce3UAgR3E@cy9GlgrhC}N2JnZaKcei6|kfNCq*{C zVBNwgy)z6shi)R6o*quh;Km-1M0O-sAPFUC3O|{9t_c+MB1(Zm9($`-?-d7mstJu! zrm0Ym08j-Lj!;fYQL2iMU?O-Qn_@*sq^QvCywOyFV@`#M)q*&ukV+|{{lWwjc!ydD zDSnw3SsR0Z92T%96-rO$GA-H%u$uu1uJq;OuiEv$Jk^9Q3yLVjpA}p zRsL~TtdN+2S1OE+PxdY7{_sbC{$209>4$gz_*>uj){{?ddExO_UU;s<<(Qe-yYIYt zYGjDj&MR)b?x#QS^X(m7po9x=r<~~HjRQ;ixwg!W0}3Ex8cW0$9lgCbJ+2Z-2#t#l zC`XH3g*QJ~&Ft33_=M9UI#mdwkpH4lnnBM4q*y*{%JHb$fgZa0An>T*$mZ||RjDPy zIL<*TwWhKF#}frEj=+;i4tC-1fbH z_gg=^XaGvdOGOP3i-WYFOkN}Fe6kYFR>bBpOF|&MvffajD+2Si5g=B54fRsPo`uW@ zA9`xbv)fKT>x`36Tsy-lcFCTQ;=kUOX!TdnUPI6pH-YoNUQw!FvoA2Osj6fHzrsT+ zWSW`o?rHp&zy8sW|H}XM;+BV(ELt_&*ugrO%dnpxry2AdZa*i*QDkk!V(MXRuk9 zjj&0HN|#V8HOxYqBtaz(v}ape8u_l*-d!&Y4z|7bJ#U?yV3C}z4vyLzW%jar^jc{zU0hREBnX%vICTXC>E!yxlZabHk;Q! z;Axieh$O`Q>s+;y0r6l$K*wBhjTVj5yf?S6r{mD!p{BM@z9H~yzwxg>JNVfjeDhoP zedo(hKYsVdjVG>Ly`i^%No#v25BiP`O|>*N9@~HD*(V-Gv?WWIP4akw>!A7}r|+oY zF*1;AxLSx9=n$u9L!1n#R>?I*TVv0xIsbE7>{EnOjGE<52p4-?*!2; zIXTraDrgLpR&1L^ehuP-9;85L2boSAOIj@AClq9(K8O%;Ai|)E>F`EO%HC7(9HF1Y zsbRK=Z2@Sjk73 zr9gw-D~1j(YUV`5d9uDJY&d~}7ZTLhP^7~lP?GQxg0Bfz*+}f5!&aOWy3kSZkcfV^ z=^0R{(3n)X?DrTb_UJg%_UP^~#I0qlX)6;{yvjF1_aLx4-R%Yp%Xz=~BK* zY=?>ELV4bjmx^%FWWqE!AVDkN4D?Tzy0Oi zJN6wK8a^~SInp-U%XMSEg)p*jU+utw+L{fWOP38zPVhJ;v53!VJWgUfGmsEGSTy9> zF9R-4Mp-;k_>Vf1Td#sEBSbugG{nanEB<#daf5bph!d!jSVEi zjrB-TJ-#&pdP5b?5dhS-fnB1N(HEno2J+7)aNx7^}|y8y5{;}g_0k4^?Hg? z5q&gp@o>m{>|7jnRZ0P;&MTlOX0!=iCtn~Xt~%O?y=H===Pn%a@`2fN&s=uSS?~Wh zzx{z{o_Y1#-~Qe=Z@%NfN4Gq4@3YU`-!-sw&8qb$u3o!&!NR4joxOZ0p~M=vlB7S- z(K(}nlN}BNQfW(KTs{h=+hseG1u_aKR@~t1M@bYM2NNYM21|xRgp0nm0c3q~Ju&EY z>0I~s91MbnG=VP+hfq%!;{b|8O$LBm0-zP&1oFmTvTzv z5(Fq2nn?%97j%uT-E;YfXe)BV6uRVz=%-L{FpM3!sbp$L1&CUYR&z@AFo7~qMW0dDfMj|ePlJs0QcDMcyV<0h*hM4b@g>IW**peamf@^S{rKMY;K2`*=M z+6_Z7Nj4Rl@Z_Z=(v)H1O;>QuLDJfxK=6ezGp*BA#AYm^9?A7}2q@7EZyB7N>gsNP z+dJNL!<%l{wsqU>KltIj_ujwl`E50xjT#+Ud+KTLdiQ%zI`uU4ofx0QanqAy9c{CV z7x(k2RTr$C9uXVlQe;6YTnT-NXM);XR(}=De!!3ZED{KwsJ7aB2YhXd5(6kKJ&k?Y zX(*;SP=RS|n3}Zf1d#c(M{^zxQ;^~^jT&p%(FG%TOSeQw#|J^NrEyZMCcpX?gaSZS zSQR1?vZ8Xolg_Fgij-)PA*3z&>%UaRIdBv%ZJ4ccX@wcpY0OrbR>bR-;axwN`z@eq z{6F2~nGJa>aDL`$Qz>y|*8awQ`oGy=>5}F*Tz2W#zw*_4?tSDfZ#)OA1mOIA2#H^D znJd;S!mAuaPEr9^1m?ghwByiFns-3+YmXv1RpE;?yq<7ka_ssWuIlWX9Ub9|0EA06 ze?+bR3d4d`0P1^*#f1V_$aMilcB^32f1c=bH0za#4FPy7-86l)cI@u6bNW}EHd)_`f`lCC( zH#u_XhBsfoaYOI8cjZS2V9Pv7A?t?Hkfnb(Bq=tLW#UWEAX{)!$noqd0z%061X%fjegN)8E%@l~jj#kv78WXzFw6LEK@Qx3U z47aqq-uVk3`S8UTp7-~k|J=4`pLyif9gj5K)xbB&+IzaXI=NA5YKpHw49^_iyJ+R2 zE3dqKa+(*_N}MMQ;1sEj8(%3=t$y042ug<(W?gkB5hIN1o946;5HSNg4PMS6O9YBQ zwL@dQyB3NjK?#UnN+#bR=`F`C=9SeVd;lCoaRNKqH3~c6@p4XYajWm;Rw`vO{f0$> zb5I3ZUa+JwjLRMwt)tmWQ>)Ta85mm=H@ZJf647pa;i5Xx0IQ--o3e$I<+4d%OG-9T z6a<)tmNBS&Xz;|uz`F1g}7?iXNPVD-wJ!5BhnlX!(5Y~3W7 z`ni27WKjwUQ3cS0sgnO3zF-NUulWDB z1i?AxW~7Rt)jH=jlv#S3ORYZ&PRp+ zt>*=G37yu4#{RB`-u25)UcY*HdS>6@;g@&s-+A!x!SSJ~qoYS&+FqL&UA1}BRD0`W zIXfoEiPKE}AkfGZsByNnp_SKsG8OVk;i=rGW-Nz0Rj_1b!l8#6ldrLBXCjTV5&f(t zK}?zH?}$ejX7S4t06OCoj3ivM2nW!>VvP-a;A`V4C+_;z zZGBD6*Is<~RP$7eC;U^5wGm09W~e(SK&WJ=xTB24x{C%{D8Q}nzE7>KECZmGj9 zIj<^JLY2Qb1PX;rg+vouNbxIVeJfzJ1tT!^rvILuK<*}QBiy}U6wKhY(@$P{%8Bp)jeqg} zr=H&X^{?Lc&2N3@v8SFowDYOQ@9!H}wqfmtlUJ`hVQ_F+Q%gJ1IFa|U@d;8Qg$H{| z6lEYVc04;%Of6dq@+6{!Os`6ir3sHXvUo0MSlB-zSLEZ^>nH}Q0qGn=rE_duLKiJO z`=L^*064D8P*PNYkG85ASEpF0S!w6AiCE@LEh1?piq>fDvUyou3eqJ2W#!4O`6pDs zNq5U(qzqX^q{b$&lu}_l|5J8EPM?Jwv|%MB*_B-}9|uZP<_Y{#fQHMOv98ddA*`~- zhM`c5rYbU%v=1-k$`f$12zmhvhNOj;oC0u+C0zqbb9yK^5uNtXtlHubp*Mey?;r^i))k2v9)}v|^+qixY+irLsVDs6M}L0DE4#Km|9nGJ%gVJpb=y8N%100| zD$~iSg#(?e4z#u~6Q9Vnf0ML2g?0Ksk*#RPkYTXLUe)xtlDzr>(e98TN@Wy1sEE(8 zgw;otN(fsS!y0;eI&p}2S^NbSDKV5?NdpLOc=F2zVg?QHO2?5`p+6@NAjOQBcvIi0=w_kka^}JD^lN%sV27XbMJ!cy19TA`-J5M3X z6$K88K>4X+QvFj8q(lmg(q&5wS^~()O)Mf++(UA~^Nv>D$;=5#TT9bDKl<+N-~Mt> z>)6-6`stHS;JP|5sh#pe+@3kJl4)Po_RLqs)BbXWpOZ(En#wp4!Z)5Zc`0amwx_T2 zcmBhl{N-PLZtd#TU;pZ7x_er=$dBSqULA)V%%Bb9Y_m{~w{E@fp8KAC=DEGE?&Vd|#ReTc-MowC#1q!P z@w&^_Z&=mS(+(uIRs)G6J40IjDG^nuiRS2tRKA>!eZ56z@Pr*Uz*WT&8d*{fhf<_1 zG&Gvp0hO52bgZE|{1+y=PVq;V60Hj%11(HhaAUKwfWPxHAfpL+?dLGEkz=2XQJ!sJbHHCy~0cC0s zA*Ui5F4XltytEmeMri;yNGU?WR{kfg@SB*yIQ|n#aqKRE49B`Y%wdonwo=I4f*;Kp zy|@SmKQ4>NMnyDEs6mR~y4D3*C7=R5PSa>tGVmM}7!`b$*wcQ3K_DU7AX|>Cha#`6 zun8IhfG9fiOm5zpnix8;`<1QFJ@vxYCr1vwTC0ur_O@Ph{^@Uj`wiD$d->|sojMsD z1GAdohPE#He`!;skfKnwa#%n5f8%$K$7_hyYwN%D#<}AZFr5PFz)DgLDJ&*1GwH;6 zTY96ASUeFGw^b~PsAnU~aSMR`$)NVp12z^2 zI4r;+<%H4L=ByDSXyEJQI16qZo|!r@K0bYT;+9W;@%w-JnG62;zdY%(OUE0hr?|Gx zO*-@^gi60|tu?gGG`#xajjp;A(d2w zd>YcLYC@#naTFLL*)s!AG!o)sNiy1d!OIx}|4ZCQ1e8@8IoRF!j~D>S6}h~TP8_zd ztq8J)QG^A|@A3iyH9xB@%d}C&f!7021I{ug>%)f^mlF(jAZk5dmS}WNe^%a{M@uw+ z9qZLSRAG*+Ya9o(m+1K~ zSPt2j8WI=+^F6b&rT_r-Y!vi|#f;C^8zJ7$X!i4oN1C9+kA})&x#%``Oo950-c_B@ zRE2KANqMfSYMy^A;cA;-UCQj)DsmiXp89cx^#AJ*p0A5p>@Y_tJq4zCq_R)}l)c6( zTN>^Ex(&Or1Wx~gTjG;Wo_-eRFh=rK#bDq?u*>P*t=(>7e1@k>nmR46;uQ~?89 zIiwC&$O4|Wm|5Q%WHyyrWsJBvr{x__*7Kj<4+w?{U@8>|!oEB&!V@GKj++iREcdP} zvO>FoTp%SEYDS(Tu8s8OR0CsUs@y|c0v6qhnCwe3De@Fc**yiwpE-t}=-H@MxuOkM z2%%8mTN9rW54-0pM36r3ZvQ(3CL5nE4{M|91@ZJtVBP;^JMZNT=wb2BzL1HU_p`B)6 zsghJ_jqZ32L7cHPy9UwRl-n(nep;G%7pmW|+;{NE!9!!CW4v5os;8%8`I7$L?lvZ% zkTyY^(j-~LP%{;y220qBXz^}Jy<@Gwp!km~qnz3ROByT>ujF3aLM+3QUPL^e1}4C` z9+p#5C}g&ZzR=)Le=*cj>3tzcRT&~i2`f&#ST@ghy8t%1nz9v!|0ODrE&re%%cUjl zO3Yt2)B|e{pkA#*-6Zjv4eoMC+q@>plxi>%nsZd^6u=2WA)Et>^&?A>qt3Ao{u=J{ z4+_8>{ybskpk70xKvp~y(Q&G&@zAl_4L960J3aoRJHEAK5g%bvqw zZc9uiWQ~>M+dq-GYLbF>DU_;8frC)*ps5EW6p7KPsm2S=U-Qp@?dN{~_x|d+C+|M} z{Oe|F^rF0K22>4TALmj;SMT5@mtS|^oj2e1r7ym^|KOY7_Kud;_K}G^-Ii=`kHOAJ zAaVM!Qyz-7#mi~WlGzW7Gt^v)eG z+<(^{vtx(e{_c02a?&y;u6DvE&qY1ii&&~-fgFKrz?LRWrZwyFjB=xgsz9LD(B9hq z#A7f0{oj9ywb=K(_Z|I%og*V-s%L78n3N=9jW!4|QnM7@DwD`r>WF~!%rj{!*(XwP z)G*uD(ztB#K+D0S2aXJL!Z$y=G!g=vLHq?u-}_SLv0_CP9G%CFkBqYn6VLGELPG zD?l{RP&nCk=Dq3{HhL}G)SivCe4azjXV-E9t0^395Va5%KM0CMpVmJRotiG6|0z@| z;lvP}Ux<@iJ7vQM#fO9t?xIS;MP@a8g}3YPJHKyP(y_r7V-9&nwC+Py*@Ly6cStADytH z5N&*^6db;F($+LJIeKv4tJ|J`nstF=dv?@jM>;y1F1&E_+uw5STi<%!rVTv_wUBlA z)HXVxY!no(`gvV#{qTSGJ4Zzl*%Z27R?fMGxyqkZC@9BaUw`~soa1n%9*e0}rNir6 zj~@%iRtZQwY;28pI4bQ#Lu!xnEYX@u_(V4L5&{FT)MS@3rFhuxQJ933MNUMGE2c*U zGOi?v;bTa7s?9ze>@9&Yi@?fgCwzz@qb8AJSn>L_{UF&FR+wss7w|?UHYBkmhnrh8XA&3o03ZNKL_t)WqX6ly5USUz3xHJ`RCmJy zF%ei8cl_lxCCMaVRJNy#lkCf2v7hFvgctq72hM%V^@m8O&M|XNl=FO6X(wi9`W6n> zdb)SM^fKRkYv=%5OBTy%b^ajZF+!+5WfKRPjWazD6+!vjxuokbk)c6fnnQpRC=SE@ z6(|c>@f>EAM)}XLpdO(H+0`RRh?Nb>RY4{at+&kmf>~uws|rGe9dSi0$L>>_t0}bW z)z#5);Cgd~SQ<*@KP6EIe%hxJf)v)Cmj+J`;zhUF95J0n?ss3`zt>11N!FddUPO#~Zru$eJs>_Nn%iW*W|VW3&mP6G<0vh00EAXY2Y znRhqYPGAUENl=pK>55tzO28cYI{1Q_Yv1rY&<5ZtM@NRBWx}jd;Q|&x6+~)4(QD;fg-pK(`n&nk_ul>cdG*_pMg6=pmpL-| z*^Nu3F%=lawy>m_I3uN5$yOJ@LM1J73+XhE&5JrE0}4U|V^=Amml`rDH&KG5y24~f z&a}FiF$STTL&6f)G@?rp43iY8z}76vK?wjij{(#mC4OTmc*Q)l2g)5%xnryUTDCfp zgt5zAGzKl32wv4a!$(Kf zY*_hIKlS#ZQN9i)@gz!(n5invoESq$67uz|E8)$7^+4(b^AD`llJ&)mKi-l;5l;g%y>U1%q5R~N_rz4fd!6W`e7_%X{h!&q0Cfk&RsbhFAl@*dF?UJ!vlJU%0 zj`dV3xv-L1m^R%c4WRvY3T$hROZ)0HYf^##_WIdGO@OrW(H zjn-F0LZYG^Y^c+@oH9=Nr5^f+?HgS#sck?ahHH;woGihGQGM*%>C~>SBwqZ`Y zBMoL&F-U4J?F}{4y_Zolo(9FDq;Y;Mjw!8jjRFa=aNFac48mgRSYs`8=bB%yfqM5bU`mYsgCh000_g5V2wuhAud+a8a-+= z?JZn8oE$lJV9R4qJ^$PjdveC(2P^!Tdv-VqxKI z&KRnqHd>_&QpzzUex;>Oa-at!^y&8Ya!#VnjSB6GO|=!R1kd=%59@M>iM~RVvBhGZ zdS#Z$DSlDkAO3lZ0i;>`2Lo!IjkPE5xbvage{{yxSJc|{8gTdpu`Ia=JKNjU)i$_j z-|jufjt+PF$s6iRCWv6g1Txhg>KFkMGn6wtl!MUp94&gOxydeh(OXWih^H#1Km9G0 zvcVyo%vCb?kIg$TNIP(4D>PFAVBYU><5^j4gro~xB{h5o6HsX=i@19{WxZJjH9MrSGCp+R^%)=?AbK25u@#L$jybo=XWbmiLij&5dhlLSrH;+SR_9-1C+ z(n;wNzFJ4;hO7~obwdD(qbZcPpURrB4jf^Wk*>@k1l5l$G5TZ!BeBo)Nt>9^80_p9 zCIBgvJR&P9X(zffkl1THB9;nB8X?GV!w`yKIVlCl`|=SK_pM-0svyUYiHMZvNwj?koZPj;xJd&k5kj0a7P66@OokC|T=Q0Bkj3d~mUK*le63ThC76z#|iOH;Nr{Kgc1evJM^ zO~msjL_jbx%;DmCgvtFNa)y@_psZs&2Dq^Bek2uObE?C?G#9NU!XI}`;9klQP!q$- zb6SzKnWG3Ol%8ju|3Xx#I&MLU4WyAn3KG$iU@KCow=n>PYP=&Q5&fez@|6Qg@Q$B?ag2M>TU0N$Jrpn=22K| zoyu0!m`}3QXP@fAi=g0zlg7I^bNuIkD|2{kV*y|4wgZ+9&_$KV5&r2cCN3F21HaxMbb9FC`@?bEYX%gWRhN-3u?j;?0jf@PnOOAOF-J z|LKiyed~D_Tsk~HH8JJYM|y^-PvOm3L~P=LLn`f5k*c!LoP=N$1(C;2qYCv#F)M)yzyTO~bt@ekiM47WOg{d{QZ}I`42z*;g9Hrzxu1c+}+(aGB!@V+Gy)|F%lR5QKbs7 zRu_kY=$`(f*-ZkDjEO97=O$AyJbFb(5kO_e$N67pdqc<40SrDiGB!FsGd9V^Y&$Z< zo7ozhTU&cNxvQJ0!1S0RS9%~BEXsrQ^5amIOn_jsVYafRfg<$~WmZ6i-6omqcpOO} z{u4AJ@T>K-KrtmT#Dv$EHZqA-NX_FUK(7K9`&vhnjS}!r!vh~6_Sk|7;4nTp60p$W zM`DpKm>d9F$U!Kiibxd2lR^H&tvD9~b~{Lshl3(QhWRuBh^)N6L2*IWxeQxzpLi}6 zn9?;eq$80S^5F=!JWqrBl*?lbg1zpU995=0)w9hLF?diHT8lS&!%ISO-yd3;Ki;R%QvI5J;Wo#!6pFgS6`vHM=EdL&1k*WI6jL@-i!e&6g^N~m)T={|i43SQ z7X=4kF*%l|1acZr(D-3OgBi~yH6@;uDfMCyQRFW!#7K<>qGy&IHM;Ya-A(<2ZJq5y zkt_@dayXUK{o2&z#LnklXzA@AT(V>&tFC4urq>AWOP-wkmE1$@Hu<;{NTO^AUzaOlX(E*5a_U>Q1WDSeUvNY!SpBwr4RhDd=xNCc8D7>p5=u>acb$)|N_$X!c`RBAb zYQmjlrwr6*FDEGpFSMyJTd67Kv{S5GCh}EHb3b*2`Y;zc!nF=khbR`V*XFlkO1Ta+ zzxj1_uREL%X}Qn>Xs(=^IV??-rn#EB&Z#erz#MO;YL49NgfFxTKs<$wU{F<42$jLU z+D&h};HI}vdmeoB=?9;G=8+#QShjBU`jggeIC=5nrHw7E-ofSw z21EO%(TBSUKF36bNB|f5)?2FT4doO8%v=bEI*NIQqmNZA>tb0=utyOKHpzz|Hnm8> z;ma+1;HPLpe!bYK z)~(yFz51Hy25<=#%63(0nk=IEb_#?75_OQi)jk?QXiLW61xBZwwD5O+=eK_SH$L&uz2CX`vNv}Pt{C%FhP0JLpj9*qZv$;^>^kq# zH$Kz9WXmHz{>EoN^Ymj6U-!lv7cO6SY=lJumeOK2L~$rVF+!OfZTy;U>irnai)ta9 ztWt8T9jyv1ZKWYHt3yo4nL?-OPPUMBn;Q=wIkt1>j_&5!hwk~&4P?? zL?b{FAP5$*iBvDPL{Xx8mt59~W5-UBlGw?{o94~NNt}06K8X`2&L(y?8}Du$$5maH zL`kGXi6SZXPOvu+mFR6S!2A9Fo^$W~X8_7}-uKS@?>*-^Pe0Fj&bj4(|KGgh-~Zd+ z7&>|4Lm&U>``&l`v17-@=cl-w9$22CQ4GnLO%Z8WrqB6)A7Y)me9{bXRz9>vg)E)H zgA$M==&Z8kqd16{NRKTVU(7wAH0zn*;Vu;T?0-8z%NXD_)knY+e~`X24GjeWzPtASVnl3iW`@6w1XK z6p&iAYx)pfD^xP>)>mE)kfYyfpfCyJqEJ5}an5;lecK%5R>KBA%K z2Jm$!b5&O45Tl-SA&#**3*Z~WZ8Fd*B;zGmV-&nVpV2N}`z^iQD!m$z>=MFwU6>sL zcCM(ksY89U2?xiSivz`?Am;TLo+V@i*L0ns3 zm<8A`gjxsC_5@Lx6R|yWk?20d+h(~{fpTR4#zZobW4>0}A{80{J2L>si!~$4psma) zXGV)Jz!)0ZzyILToqN___L{M=@o1z}Gkt=YOf^0{e)Q1(Q#*I9y5J%%!*MlP-3ep| zMP82Xi>%ZOWr$vvzb^h00!lyw2DN(1+N+tos-MN3r_R99B)Zm)%ha)0_dqFz`grTm zyQ6vqU~zR!ddF|()U-DP#iW&mC7Q*(S`9RJ1%2oNAX3%4Hn^pLMHS%!BsEFJ1e)_j zQwEqBgaOR3^5lUhyuu|$bjspp^KgbOSrm12NnDTVlpw83nOR}l!KjnIq80vLmyaA! zlhx>nB@3s9jvha_@4(7+t9h&%BbmB#tyCQQe{6K^dF!6J^~8(MZ{Kp|X7uA;@)+MJ zH>1E#7i(9%Lqaeo8GM=n27O_w(5y7*cRghk!BYoRhwY@C$e!Bd!rQjI-|RC6kg%^a#` zP%mL_p~zn#9C}4O$fdlJU5SrpmfZT7`1Rx+z}8SNx+ROr=O>QF+k{1Yd`! z552?J=LvF(+(r{gALTs<)@DCQ^n3d}BVbCURzR6jcV7cORh=8L7!XAflvRO_aAi|` zCC*lWG0jZ^Nn((JTB&a_;braKa|c)%25fqmoT8ng+3UJcx0>nID;=Z&mnZ;aX{pxD z3Xwm)(Ba;;s{YVSiG8TCa1a!4tBVb#7ap`(zG0#8paC)2WdWxqs>cygAV#|Vt5ePJ z0)0m=INT0YdlPB?H3)iyYXoh+hZ_cQjx5SW(MbgLC2n(RTh;UmsyPmm-(weSR4Kl| z7Pm-ANg*i|EOt>ufr1up^&z-4G@p0PJw3v;c@}P$b{k|pqJ?H&YsQdSB?=}lO6XCc zE|IPuS>ZOa^@z6AMqw5@3#(FEW}AB#CplIWfT*;iM^FFspS$jX2Oj#* z|LODJzwPUcSo)RJ?K9iPc-2^_Vhm>waA*c-5!?N}m9Uzr|ChYIlw#H2{tX<}fIFUp2g zp#x^J-^~|{_U>7>WZ`Y!_|mTDpIkgO`PY8#Q;Mk=PNH$?WTa{%6ArAXCW$ND|0FnF z9Z&ioge%X{g^MO`yZzz+_3!=Tg9i>={_0o#-M{@e@&f@F#WfRj;51y#CDJ>LVdZFJ z^1f&38po-7%yS*p74&3iH4FF5Iz>-cwo_+cB_>9$zVoPngRvAf0kyxHqeN@`D{~S3 znx;|_?380J1t|&zU#D0tl$a4NaW~c4)U}+Yl&B6McFV)g)54^wA}HEa10n9ALv!^z)X*T(3j(0&E!_(N`m_awTxepKNyMHr`93L0HCo!TkKg*1FZ{Gqy<`> zZ?dFFn<0(nky)sgIos#m^{1wf?b*HkiN_y)YTJW*w?8v9eR#p*(YL?t%8z~gy&rh* z+c$1lKxg0zd5;m~`dmfpfZ!Aa2|w%Bkp2X?vna*B*x?GtUG|-TxL`nLM_I>NT@nYS zY)3lp*ii}|EC+3t5v9JhFPxp#EKzG81f(2hi9j(hZO&FhCIO&@>1B_gb-AP{N{@ao zldeH`K@5$M{MIWa2LvO4(W6U(Kp+@YS%Cvh7U9kwVaR3DAzuD+di1&H9~nA$eC@d# z^30UaN5K*$x$(|-p~wsT;Q5|i`-YAjn_9BW2QM8pSe0Q$EL&rPrOPkZn`B|QD2~`Q zz6e7VZOc4TulKzZuS^E09Bq~B6UK&mavdVnK1&l`TNU?cE^m(l?9fn8(-smk@`H^` zbZ@y6W~taBx(hkyBr5!+QQwdWK%hOnzzb-#k$-^XYV;-(i$*&a2AD>p7zsc!cBH^ke6{#jcnKG5Ee2LIrG9XN&r~hzul2 z>iG|YP0jQOcpw?4?xm&4N~)eZRE4SzX!r#TP1g=B$m~0m@Ccbqi;oNppN?m6T3f@{ zh}mZOWs|a0?VEd0Ux*y2;USCih^1^D+I&9M8oeyeHdkp-_l}Rp;@fji)BIg0QaIe$ zdPuw(Py;i4U2@@yzx_8p`8R+5legdT{O|nk=f3!*Z$A0>t=k{Jdw6QqhVw4oa?xey zZQi?QSP{ z=FN;*0~b`|z~}J5FJaixOxJNv(CuEWfet@L4Q#|_bC*t!Zs-Yt0|Xc&&l~L46q4{j zInMK95*h+`aulb^a)h623^-%Fj50FaBeU8WYcWI!m(?i)FNEk)9U@nrnTjuf;M!nz zd{iq8afsXyR|0fd@<};gH0{=-K)e|PsgF4z(~s7~-QwwuayU2z^@|Mkj3kzM0;Ll& zvhgi97hGSZ8`Ot#5{kO84jtpc)l(-uvn};VmZXua0kZxv14F@62F*40rMC=WWsj>H zD&-bp?qftZ9R{H*XK(Mq!Og(XD4XJI_pzJA#x!IXff>@uB(ecr)x6Y9FC#B$j)HLr zd%{5-*vFA*LOuo1Wa5g7*uo%Sa4vjkHW7Q&7Pe@Me)f&i0$)181teWn4s|qxqKLC7 zHN)F?xGcRaq7Xi1Wu`pJg47X-$Q4D~C^=rZqK*7OY${8lo7G|&p7BRu0A~@xKSl&M z{39-Us7`rYnot`M{nmk+oQBXhS78>v_2%66jKD~){-1NMg`-~H~l{fGbXZ@>7(ul)2+eP98XWh5RnD(E3Cwi1VHb`4f8LMgB7 z47zhJQjgsV#aokN4^Tp8_nx7zeC4Kd*RKBIAAbGxbTX8oM~cV>rV6%l9oZ)=gjXR* z(R7{$C2{~*+%&uMV$ZV^6F?Dq5>?=gyP=t5$HxBAFa4DlUfA>HFWq|At$*~ox4dh7 z!SZR-RDK|viyMvtiKnMe9Y1ku;naC=x$fiqlG%gz-hTU+zj*iezWus4z3JN5ylLsG z4g3n?3Eq2y)(jiPI5LxV9ntv6d}TtirF=ly3>R~N)%_gvsCQ;r9^*Sw@WCaECm#6zcb|Od?y-^M?|JuoHea~;#EI##h2Hug^O_t~*sMSS=2YpuJvGDkDzo18&Al=ohWYuYd zf6|ABxSEBRmV;I|_O;NglI7(`001BWNkl z;F#8MkVcusox1Ra)J9VvzBUeHzF=3aU+LuC%lkB^0g82txN=oH?QewIY?%+ zLYhV*WP6lX0#)rM1^e-w z!J~i9o(iDOKV9KjN>w0?u9)RIgZV8(TpPeQ)+{hZr6a~TJpcf+>OKsu2LP(GoKu;d zlo&sujMoIvQE?bTC43UYrJUT@qN)%Pc-lg%%VaHp2Q756PO>Fo3tT#HD|*30Da@wh z48PIShxYA$a@#|XKXU(zFKin+zHex3=JHo<`p5@=^kW};@8y@Qg}tMNkZ<0FG!dwt z-Bu;d?I3fG)zFaa*nusTIgmjvb6J9>j|Qm+E5NI22kW1zxt~j=@pIS=aO_#kN0>*_ z3m$}5xiz(h0T@LjH#o(F-K=iViIJ@et!j_D6)kASjMb84zyix&o`r26H+YX=ol%e> zK&uJPu&B-03d`baOpl!!89#n7s@JB_NqqC!)LLM{#ZhNzs zptOTs-q}#rr%lJ8RIXw&23)5`017jb$wVmcDhy_E1&e0SCA@IpK;lcT3<{NXjSC9w z-N)Z*6aCabZqr7yf?lXrjFgBC2C8e806$4UD*eUYVaou`B^y9O%yQv_V&R`$QV>^; zNc5R-0QLRnTnEoHYtCmgCr?fA9m3&}mv_B9aeDNq{Lv!Go%L)K<(dLt{TLb>f9i>6 zbTvx&*sHS>R@$vmKBh@eXE~$CTv|lL)M!*Y{7Ao>3(I0S#zF8_qChpUZ*`=Tn%7-y zN$$2Cufw}=bFkQ|w%1lD_C=cPK6M#r?aCd6hz&i5IqhA=mcknpGb_IE?3XZO-$BGL z_D#r~mTK(=i2X}*;G=n5TfA!R1zRrLvi0&c8#j%QEjmd+5pQ}MC#Sm-nx{^k9A_*$ zG7Oh|htfeyM>Ho8RaT67@3BIhaTFD3<6MaoD=&JP2YQ#l93tml3UGju_&|az3_3j& zB*IE4(mbLCksmgUbd!>3stuG&9gGH}tLj~($tzkqF@xziU?3RUI#8xScy+PwTIMK2 za5&qHdc>aSmeI2)U#+pVl0>#)kPzfOuHk^M=Jn0-XY1r^}II@ zV$i4rxU5+ij=Uj=8h=s&%{mh60F;uh)#@8cFcKq7;esDw$qJSes#r`jLNOd9mC9-* zFLK-ieF1D!B`YWXgxl#8dC$8 z5EBzNu9^r+SX)JV@%+tMt%hIhVV5*dGEa7rAqvL{3evZwoDATH(cVxYKJ`+4ICNQ$ zG}&Ui@z4X+zhc$%FX$v=^n}6WyKvZD*limc*gv!A&&1+FaWS8^8!!cKWxYg2t`&MApkB zei0ngZF=O<$KU#tduK`E*T?) zomet0CDLv&b>?i3ov#!V3*sKLt&T%JKv?9IzFDRd0LK;!g88DZu|zcvXrjDDSL&;T z(}wnC)h}Eusew`8Q|g*BVH5eLU~n3WDcO_i7#7;5QWykDaUk_?9)#^@yPv8JoeCuL%WAYj$Lrxnj7Bv@sEG({cn2X)&&!Ou@gHw|3n2Xche(P z>i2>Qd}d?e7JNQk&)}?uLF|+V0cWF#kUt)C9-Cg}zAz5~Q9x*|tw$?J4=<{!cD_pg z+uwRWZtJLvW3@Nm_3RPWbB(*5iqo3z52zF}+v$2k91PM8vyVS?$58Hu74Teb^eQfx z4mSoU3k?=3jtjn+!y*)P&*byPs&USy_Z~R>%=YKDJ-1``o_$LeOg;O|_Tk9|E7z{$ z>J#rBbb#~yJS1`<0e&+x3x-E`KK~+bd|j|)%Jn)rC@#1Dv);^k2d5R#;t50E!Qccj zG{UJl1&bLPp>*zNo&ci02y&60aYPM_JaWuXkyA7&2N~;(Wp?nEn@c&yotEnWhb_wU zWdwODknz%=I9 zsfL!WK4)n0lE=3_cl`L!=;BGvJXoiCt5qMPj+mBxuuYNphYK`W!)jYvf%!w2tPnGC zut$>JfSZt~!uC!!SXq*m;M3V`dcYzg+I0jaib)Hog(ap{8HP)d*@fxb(zB4VmzY93 z2x`?HHqaD`PEfS!2&(1GeUH>P7354f2<3#r?Cm)#=Agbk=Q)L5>sKlOck7ySB#bg9 zBC{c6VK;Po>5}0OzV8hm`oJ4rcz*g1KlA0^|NSrBcISf+eDCQ8?*7io^_#a`awRV* zSh<2<2^;4plZ*iajh(T?s!;bwUdEl4;^^3zuBovQ1a_I*4S~{!(LBm!N8UCE0i!Up zR*hf>VDR&8amRWyh^V9`_^}KusM+M2JLCqP3N$mhqmprF3Sh{nt^0h8VRL~)ycp{g z=;fD8Qt_s_(Fmjxmk=#uBdvOvJ;KNa7@?q&DEEw(thbf!@}q{nvFvD2Bg-lj1*}qz zoD3(Eik$S1>hVXb#Y!7i#G&10cBTPYHh2xlBrO{>R3UtYDya`z#;og)&@?;smon7N zU1YjsPciurE@?ur`3VfH&EpcJKt{A?gp@Y*0YW`q7j7jo>^D&171MPg%~WDUb)wCo z5z~z+pomhfAcu|j#R^jj+e)~C__JSR-@tXqde44|e}zR!YbZhtNz%k>qIjy06Y`EJ zh6CR7L1QV3iDcB`uBdEmnCm0l+11I%ygW8C;Tvdei4zU}T)II*89?XAH&3ED8sZ%} zWIV!9e<3cOh@whSek>?9DlEGugYFfglbdDLDi&K2c08*lOIymV(MZ&YO4k`OAOYw% z1*QTk8-wnCRz$H(Tghp{!AiY^rd>|*2+L-!FgF~SBOV>)dyJqhUOaTe4L|(P|Mj-7 zfAhN+U-%BMT|o&J-n3%<%xzHnYL&0g&)9Nynlrg5hW|=tMRa=TGoSsV(<2kSK9NxI zo$@?`n`9b|z;~t8vr=l4*8#iZES8W!gH5TZgf?UkJ&>}MYU;4T>|?@q2STEZlYUOA zP96Qnzx=oVm%sIo@4W4S+rK??&FkMbxn#qUd|#4at_U-R99YKi(Gw$Mqf?tMd+UZR zuYTd#Cm!GS;G^HY_0d~zS+Rc2#g|>S^^z;rtvh$Yf~7+v6DPB5BhoX%T+?vcY&v9E zmFMVT28mx5wL25jT++;UJ!VcHI&}2qz55RzIhK3WLn{`KKlac)_uldKp`&}RdhKhD z9y_pm?>_F97?L^l_E`gr=P&o+6=DM)gqZ(oFkuppQu9R$=$0%Vf9jb%|MZ{z%GbX3 z4el9T`-a#4vw!+a=dL@4A5&#sDi6nXj7?(7MUr~LI!rU5UC#=n;s~xh>-yUZlb&J< z);N`v%qVC*|qGI}6vmnt|$ zMVV1jA;dvRjslXEItx7;=?lh~tVIkJ3%JU z3;~h+g6FdZu*NZ70J=BgaH@Op5)No>C;gwQLV$l2#7kL3G zwba7Zl8Y^c*^-5qdeeIVg6K(kyXcLzK0zjy-g8z87 z#Q_L+M33@|^||4=Z`TX_B*C^v9@xG8>C>kUtz5bA?eBc;CqME2>)-y?6)WV0cN5&& z*jz1_aEhkr)Hc;laTX!<;$llw5~=VS-48gFEgeD=(97xIaadpJ3nk=C>>i;!Jy4y) z=m+RnJlW6NASqxKW;rw^=xw$Z_Mr_Rt+dfo@k~$G$kOrjy0K!L4$WQ`Ri;2|_H9R1 zZoy|ql>q3*1aLZ*y0J`HFiCNvooIF$;;M`4$my}kLnnuyeSXg)Pd@kji@T4Wm>Hd% zSiv`ymoDG);-1sXmM>X(4zIQ&i{v0${%I8|*ZiV4S2-Grvq`PV&2N7-GaZ{CohqWpvHSSO^E8U>G}j za0a=0K_YMNw44AAu8a4C>Q9*K-{cK=cyz4ABQk~nJ0V1UU#g&#$a29McCrbD{`RM{ zIZ6-Eb)a9fqJf=@0$tz6vQo{{@rEogR&^YFVOZ$`pi=R6OqQ$hc%bqC7lW28TROCA^`RGceCK=jthso@`tw#T@rRs9%O|)r zZ|aF6&MSzAP-RSec4X!bI8%v7X{Y9mTI^Mk*-b7Qhzd3vy>v*P;LuQ|@X=h3>^T#K zrzaP|l{P*IvY5pWK0(P&<|VcGKy#KYoLWCA;c-NexW4*S*WS`BbV0qw_J9OTL@xS)z4}JPmAG-VA=YHq+zWDhs z-SpU_ci-{M{dZ5DbKd4lFTV7u^EYjsSUANG6FKB_wgN4L3@6W@>6T&+B(o%u!LV>Z z6U2ru8_~xQaBL?ed47QFge>-0Trhx$f9zw&=GYU9-ehy^2%y<%xbg|0l!<>a6ObWN zqR9n$GGpgjfhylo;`fr&R7u_)ib@JWv!Ei^K+RY;k_mVDXASRLdrUiyG#ML-#++(W zjfuL#VpK|-Sq>az07X;+H6D{l$r2z*rg+9&rMAxa=!_8a1u}1g<7W&-0?4-baG0)EH-&?5=YU6SXh0GNs@Ps#!hr^L z!BiiurAe)ICGi%&DnXh^&>ZbbMV_(M(A7mI9f(P0=mToJ7bR)7g^=Pv0MHsK_@2L< z-=R18igVJO>o}yKfe+oAUviOy5?Mx)IpGk6bst~K!1uYu98k z7%4*CP*l0L1X^DyS8i1>g0#iQT6>6Q%}&wIn0UdL&LC%txO z#Zy=mr&s3Jgg3OR_1FeYLpZBGJ+P+$QsthkYpQ@kX##%5Qhq!1g@5`_e(8Vx2mkbY zH{EvY(IZ#C?)v4cHyt@a;Oc6uGu=tn>L zv7h?MKf7}IqM!ZgA78j&=+GfDh+`M-JWHP`0iK3~X}LB>CL&3Z4*tap#`o+!_M89r zZ~ex9`pvz&_l-?1`q3Z%=+FO+PcL3HcKpQg_?q6!AWtHR{m~tU#gdWDX+4i-vY2v- z3D{LQs>DKe$$d)4Hb;pGhJ!U7ia*)VCQ5qdCSlsy+u0$~AOaKgG}0p93M=SoGQAZU zDkO(Fr$kG|SM|EhHM)e}JL>Dhx^jX~pC^pVhZVE+ya*nD9XH8B$tuTlfIGB;) z;|)@rCS{BXkf^E59}SUE9x8p|D#P@S5H-wl0SSD^i7NIq7oe(-Pj?-G5SnO3KrPw2X{#YK@h$Ljg50FR7;_F2sD{gfoIPQws)9j3h-|z5pq8Y7bSW^4%N=EGbDMcEwwD&Fs-vLhO%V%* z7cV=sYcIbCJUTuy&6=_lQ#`7j;_GE23l=Wiu;KW9_q?=y?~_ONjcpsb=)7~cp1)z) z+HA#^ z#6n+_du^eS#7%BtlOwy3dWg>@pWQ?*K#_Iih0(#Rl@0~3{UBrza}cMrncq4{IR|^N zauy^V(#(P7Sr9tlKvO(fY7Dd@sFVV;wn2vT^(|bd4Bk}vx@*t7=GA}s7yr&*{?;w` z|L*U7{_Eeo<*EB`dg{UNEj?%B=1Z=+=;EtZtzADpw%{ZSwLD~`-;G14t0$>6hMf|i z5W?2LBdEl01I7q+=lQ)_pO4T8vNFdZy>Phkk z8N>yo3p7`LPN-2u6_h}|0Mh z9@yn5fMyP=nwi4HV@!$48efCjutVqgL&ajasBw=b@W-ZI4Ob1dM>Awc%sE8 zFl7Tj;?xUrfCVva>LMplX%v?Nax6GG8~GV1jv1As0dII6zx6L_luwE(#z|c!ND#ZF z1;agZsp+B1FW+$at1i3!``>@$p&eIUu@*&&y7obSh22~XT%8-& zC9wQxS(Bp4nOw*Lc27FXS^36q+`Mzw&L97=>({QGJaNMNnTn7Yv}`q>C(;XGW2Xnl z*^Ouk`7Fd3O0CE1)an?_;?67e6y;y~!j4b`_iBcgObsnrG`Z{L1OM$BHNh(hSQ7ZqX?i(hzxjXWEh3B7n{`rR=9b%nUSU7g_-rH|_#K4g_(IYKd`d?hIk> zH@hx2Dp3^`;$i3jD5sQ5SdsP6!{nLebX1HHahI>`O5#g+7p3v2T`EG-H+3oyyVMH^ z+NhV}Xw){dqy{=YO6Al57u1CjBrfP70bkw1r_yb(ZLk&m5$~;ISAK!Q+Y3rkFq4)` zUM~?xdwVxSon2V+EAC0~I2Z%`Vza!XMpTr&zCyX0n$QnIG0CoU zmNSf9D+$eTtC9>t9i6o@?u0?Q#2;xB;0e%7Y1SPjl#>v;uzPS7D`?o#*^z#P~pBP)PaB{_}B`cOsE?hJ=G0wOkOpol_GrVX2 z%B@!nO_Iq^I?y$NP%{!3EnI;*edOry-aV(M)(wqK7`J9GP4l`TsgEtMh_Y1KBRPS^ zj|sPTnoA@uTlj87VEKnp20|?7$7M)IHIjV-I-@EHD$NeH4qDQ6B)lA2+2qTnX6o|l?Lh)`y-O*X$t6) z>`#;U(FQ~@&8Pm00<(yS890;ak!CLGfTsyrO!GtJ8r;nQp6DOs2 zzV|02X%VUPpPusQc@tBN0w6*|b>fstASPnJ@n?G1&*{l@n#O{vwVDC*FchLA%G-eL zl|oFDi1|3ZvxP-=sm|_{2CfFY(spLknUF9E7qveNrv|nIUqM*II6HkskVeV81oW7F zq2zYev)BY7t%XqK!M)^YXFOUgDHbddP0-PQOQ%l1?>$$(|Gii2*m3*|U-{PW{_f{) z{oeie-u&3Tw|)J*^S5rj?3xRBm*Mi&ya$XMMMTLMJs+0zaL(9sA~nR@osg2?Rv$&w z97@D9ScyWEA@iVy*W$T`T|Md4kBX!g+MR`Kh#4|Cm;1E3*jP6VIb~5e>xEOVSuM1wag@Nsg+2eNoCX0QF3wR9iDu_CDo7T(O^B!QI;d2s zj1{BA4Z{|~001BWNklkRFjzB1zETRHMSK818XkV)Z z{5&Yu2Azji$WnmWHLg>Y_*L|HO^7yPa8UIo3V>wiMUuS>PcL8?B%n#eT}H65L-qVg zDH`aATxbB9i{sogBUVI$f^gCdK}-OIhmjI=cmzLap!zt9-Ad1~MNe4A7#v71-~iZY zh(Hk1$evt`+7%E26^qJ2h|bxCr3^zsP4{b*ADD_1uA)n-iByJKkWdV_-T^>F>>EVuw+^a@X^3a(@aaX1 z#@~Cxb@zV%j<4N#^Ocu>lE&6qL{TzN&tZO{=O{xxmIbm5+NUWK&vwXzOn~v9i9dtx zbD#SvJ^SwWTt}kQDqnQb`lXoS4hdqTF7VS@O607;>A_iHlFinNuCLSh%3G0%GC+l7 z-0Wh5240VR-g)Qj-uK**!w3HQU;ir`H=Oq${*V83-}nA#@7~>)T>konlgo~s$SB~s zWRiu?X2_Giwa*zEoMG`)qSp;`Jef-KlT$pzHk42Zg>69fAi;#9@um9H^2UuKlQ0!`}dds*pGhno$q@4 zxf@n`2>_#*D0qU6zHg#B`iJ5fxen=Cco(O%gw8NhU719F4o_)fBS;KtVgfL8XBO^KO2ECHrjI-InGx-)C2VJ9m&un%+F%LtdrG=U-8 zhz@2fgr8ksWa6tt^l6&W!g+YlK0{rVk!5FNkM|SkL77B5nZbitg_W%=XJSsY#PE{F zoR>2lm39u$^jQbSwy5j+CgOCYXewC#DHW?#cx|G{vgCNwZ62ZK;D&nQ^Dh9eNTWCo zt`~wtCG(;~PS=D4noxmKY}?fomkykua6e(3VLN>CrXTynhu-my*REPo>=TtuRP<}$UcQoQ1FOmwBxx#k)Xk6%{f|A)!S9&NQdM*I zgN-Q<00xSo9jMP1DfQ9{+PC#hAk@}3b%1spP-qUM$8Uvn^*q`p-zhY5dYZyBRvM@~ z($H&^a)ydiu3HNL#zjVscc$$XFBv zzWvSzw>`V##HrDVCCjJIS+jU*YHVr|ze&KWnt8DdLu_Ph!M^RgxE8za+;d%^*SK<- z=jz(y3}09tJ+gQA@czR~&RfnSr*(-6rLc|Vyc+vXGYjU&ggQG*D2m3UL)aS6q#MUF zOk*o7ocA3#q&QJbQ@IQY1O_hDeC$mZlp_JhL)nKXRsA6nz&I)(%K`$7ci|`~m{oAt zNvAt=s3mD5Wq>+bZQ*MXE|@SKH=~tPkS8{Bl!3_4^|W@Yb}ZtAA0x3*3#4Fg zHK{N9TIGbww+ixA2RC>~tE+s3o7<+NOO`A>di2IyOeTFO}^IVAOOL4ts#v#K@3sh zRuneO+iYl`AA~lK>a09_`2)fRc?wQlHLGE;xhc{g=Cwrw{ggsHRHbeYKHHg8J)|fL zt=FJ{Rc)L?P>`bSIf%f|;}Kvy|L2%myJqrd{@lC%{7>HS-~&5<_Yc1C+0T9L!G~{u zZrfdxD|ki0t1i0q)$2EI;x{$p-}RPS+u&MM0DNPb^Hl3JYU z19?E;s15_!;7!50h5=vIhAHo?M_^xLjfSWeodDVa(9%PuX%4ZER+VI(z#4^e8mh^U+NT1lV{L3uTiE@qhec1_6^bF#6=oBktT35C zRh=F-pNF}19mPK$(g-mVAs;x|GGCN=+Yn`rHk(ok6&0#hwXzCbJG6GamiA|ZVD+7=p zjg#ZU7hbUbk;k6je_-fCAN|PsjT`>eul&2`AN=;dJ-5B#HF{*|p<-M-|ajT<(sUcGwJf`z0Q)<`e! z-TU10+qXUOg9d0uH+1<(WAURZF#!|HcDrazdoA;Ig(>dva@)1Z7bkBMk23+n2FL_C3`~tB_ z+6_eR`*D%cd|)t{mDHvlh){-VnGkeZXl!IiWQ}dN6dldxEx+Ss0Sx;*$9ykc&7){; z8wbIY2WJE21((F-<#|;Q#y-=r$ovYVBW%*;P;Laj5dA*aSp51l@BLC+fkibg&?zMxc2*8z#|D4Rw!w!`?5x(O+J4 zNpFX_5H&{ztP~;tf)EhS^Q`00&+A&&UBvL50Lyny(g>m91N-)Fd+Ld858wa9lMl}v z*)ujaea#gY{>UfZ`{572d&`B(;p#;Z4MO8?Ln)(BO>mXFY7UxJHZ7W4NKG!ntF1s` z-FHR@<5;+Z`)X`FI$j`#T@%<74sfzKSL8tBU_+G$Ap?lBTz&vT;h)I|NT>Gz%d;}l z-$6fXD~8a?jyuDmV;fWe3dxpWvTFQ569l6!Q9z;L63m2ie&dgDsR%R~JEFmnBv+rJ*TRUH;pwTaJ@P4 z#U$V@8Xt0?O$+shX~GmlVl+721JZ2T-ID`kX!2xeNQ$&@5038BY4LJ#)jZjE?NYQ& ziEsx2CZ+=jZOti)*2KFtlx0$y<=1DxXZ(gKBRyW?aAcGP;#! z<_BoDLW$EpEGUSK5yOXYp=ZYvMuK?;YkIa zCTN|<#D$!61?fAtaGWw?%q2`=Aq(dFl?-7qn+Xqq?v6A26{7#h8XE*vwm zy+9VJY0Z!*JwR|qcHlBTawc8_mu7&f)WXCVGmc40CKmgkF_V+?s3XORQVU{8rJWe$ zwKt8=tjSOT*{~E-LJ!{O*B91mlofq0r>aO@h@}7m*H#@kriAjFVw<+!;4*O}Ihp>@ zQ^v5yoisR7ymW?#U2~E@Nf;CB4VCIXWUg^bvECw`A*8B^^ zsEkfPyoT1<9wxFCO^s24w=cO05ULr`mNr$?2^{Pg1V#z!wd4>_CE~WIUW*e9$?PJ2 zTfd?NOmg0?G4>z;Tn$G&3={PUH08kQO@wD9xy)!a2I^fdS_aTz$|8(>lGP z?(v+7R~Eflu)trSGHoPZMRXj68W3xt?G)U($ysc@3}*8W_m)oM~>WGcFR zWNStTQLTX46Hd$(5a7y-2TsD&{I2gbfIsoQw!(|DXx3vn-N={>cLEkQaWHYI0$~!( zs}v>RFFyq-t2XM95s;M*g+g>M+*yJSMLe1F=M*5R6ULz3j3TS6p?;UH3lt&_nyKef5e&E(5K2 z6u;UF={|#S%Bt2b5JbzKymUB&SAnq*J&-g!{Iwgu{qnxUANt@2*Q^~qaU6iqrfP`| z-*^OWC8W62zKO6BfJj){Ngf2w>fUjJf-RxlH!5EZ8f$(fVKPH?wrycRCW zwMzA*8aa$16D>i)bp+#G*YF(yJz;#0j84!@2>JcBO31iR2a?iH`t+%T^Yr-XlamWa zcI|ladw1Wu`h_>LyxZ% z996#ARy@2h~y zsasxPRxbfI4`3sygndm9@`13tW(w)EP}Y!9xcX8n%w}*v^-|m5$v>8IF)N5bw4rSE zsbC#zQzj^VU|p^8k_+2x#n4)elaptspvucF{!t)X9o&aG+||lW7e!jMz%FtxiUm(b z3Z|>g8D38{H|8{0pd@vM1Q##QCZlrp!z&1^*zYiR@c9XQUflGuM}% zNMgXqfeTWBJE=PvLNKEvk0hYEPWRT_@ULmGgXo+CXyHAadlUR-%J$d_Gci;4# zJD=bF@@ZZ{wrtJR%GHZ_ym-L`qk+dvkpU9~ad(hk9H2rNZh!6tuHi0UvC?OGy!Cx* zjEllqToG8gR5iML$4jTDPcL4)jN}H1Uu$CF&7!Qvc%qmV$l>pKF09y+Y9+{6aTVnS zJK-c%HsTx|;x&}hP-h}OexFaDm=ysyPIVtmdI>=5L2vuS2s;7ul8j{to)=od&VZCS z0~3!?&i6!Rr>C>PBPe18|9VYG`Wl@Vl?O z>fP60wQJYuFMsu>-~HV$eCs=R-Ffq)ciwvAx{ViYx%BGITehCFay=2vy2zmLl9pkL zVHsZ*iG+Mng#fbZye~otcOWEG2=x%6B#cA^#~?u|Gl`Qm11muRsUw;2<8+zv}Pm4B{dS*rfHxY{D<{+Y&QWir9aGeotJSzpq*4Jd(3ZGpx~GGJR>JTHu01(s5xf(dAfK+1jTc=SE(2uH9grdhQ zta)aJ7B3un?+w@Ae%k|I{_4%wUi}fH<&WJWJ?fQc_|`iJsyc_hl<5>K%IKlL;sS!< zb6@!S=;*?C-EciEqPjeDOSmEk^|MLdmD3z-N)Tm$RdK$1bahDvu@#D(ecNWiGNTqm zp_Z+ARJm+cDp8ORbj1Z5r;Z&yv3K9`BS(1!^3>n{yMOmBKXl8l|HgmW@#t+kUU+QF zg_mD&(Unt6)*PQ1Ix+33l%dTYcjwHCBFup}hI~lhbWDO{$%3O?HSoGBH*Fz>W!!uF zfw9EvCIOC(4^NH`AKJI$zT5A7>hTALj=a2h)smn5$xpxUeK&BDdhFOyPSSAosp%6d zmyNGGXOdS?9GjUQ8yo%j$FKXyN3MJRxjlE@b@zi0JoNZe&+g?7gvX9y^TLITmakm4 zapT5|FTVIymtD5$!V4Boj`3q%M-T0qnHXQXY--FGF6Oy&gA^Ak!c`Px+=seob1K-@HOMQ{^c^bNsWrU zH5rGZnneHxosSM1EL>a=&16nRA}tWXoLPj>$qYn~DCK0CKGIUT(v@6sX&j8M;6*Lj z#VgK{V%RDf#}Gtm#Ho)>SYuNW=@ki!%x11*Q$ux0n80+rT%jti#ualIxN^~Q+C(-~ zDZ<$3iNWRfk_SSXkf096re2BY$_KS4Ntb(@SU9UP8_yHK8To2hq>&Ay;-YY$Td-T% z+r8*yT5>fK>FHuLgqw!IIz{-=VOpr+NtARF6dDA$BB-4{<>WyH>=(S?d6eE26-Ai8 zDFQ@uFS{v#K4t7o44*!}Z^sJ{KYZ^)58S`=rKeBN99g<_^gZvs<|lsqgEw6N)>SLg zLkSxh4QvKZn0sK8X}5Kl9L2ITQmSgOIzUJA|NrBFK0ko@pdOUjYTuI#0%LMa>M(&6 zu*dHU^Ej6}c&xl3TDrFv*B7cO9ZylZqK#_J4#FI>EA=~7QoS$y(p0#%C&yaa!oiv=S)x9@~{;pD;u zFGG&kpK&Ic5s|?H90JCN0|*NkN{mZ>b=@aoGHwZSUp|0ECILlM=+7%&QGVO?L29gz{*SkAP@?@iWh!*)NI579N(Nh*+ps;w#Z&jlel1&h{Ax(x( z269(h^N_zcIWt2_AUSY#esXdF?<(B8W4FBtF^R9-0D4m7^vubr#f!(6uROf{r6UIp zonAa@cFyw}!;=daubSi%!^HT)WBYbLzx~h?zxVZToO9P(-+1k7ufA->g2~goT?i%U zD9@41RP+=|qm8adC+!O)h0dmC9*S!wo0vI*tZ$mr0*$(bgm3g@v9;oVd}e`?`ZApCEs-2b{B$Xu#8(f7fBMf{_mh9-xM&PxDBGD@8R? zlsJdIk>&M4r%@s+IU$6igD48wOa-Ch))E7N$WN|vjCwIDc6c$J*^%cTsVX%Zl=SQw zETG!x7(q8zLJ2fb%W){f@CQpJHNtVJzD;eXVtyagvv5HmFeJhgVRbU@>Z{oKF7#4` z1scmg6tnIC_Jv?nIjcu71=NWp+_>~QD{kOEF<{2ARQQZd{z{8VC?=LoJS3qmxJO@U zqkaMrAgNq)ZQwuwZsih&w4khsydJCuN(4e6!G$(aO~~+8nhO%vv9TN4yeB$x#FBmZ zk&)_xMLee(aEn&}DA21C)!jxLRPu<8IMj!d^{e?NL8)`RYb6}Nr3L@1lMk2z!lU6( z^3qf+8mHT0txDJJ`1m9?pb$X?suE%kHK_H1j3sn&MJJ-+xN2b!e7Igq z1Allvbi}37jej)NQjINLXplt?z+o69(U^-RBAD$*Dp0CDJ1m7F11w1Dm@V4QDTg!y z6`De8FDp7w-&!nERaL5Jq!cito5Ph-8?$<;mnsgbcl9sSGL|5{L=*j5!vT0l60n$}5qu+Cwyrw$*zSD?PndI$ zoqEe#-g3>=ul~#*e*SZx`Ro&Sefx=R51zN>$_ut!F|}+hVd4Akcs-4rUHc&}@=Qh< zokCn3;VD;55lV;~VN?yz?0Zz&uU)tD10R0pM?U(_>6zi<$9Y1P zbH+#zuVNqTc(N7iY6(nkhbVm(nDciC)u(ndoxNB>VknGatffh2)6fiIE*uWBF93!lqE$@NXq;u zXt&A3oi-s((i_5p%If=TTL94vL8|Sz8cZ zEn=~Cm5`?v{DN0whf)M*?n_344^#$o%aX?VuIg9=}KE3-g+K zwq1za{607 z-m;$Hm3ajF-ow*h{rWd=y!nn7b{$->=$z$iFJ8WC?Znj7&_Z%#mVm5Y3>VhQ86BRD zIt#0Q=k(B?ox6s3Gwp&2vMviZ^0;3I z!~g&w07*naRIt&i1>{vUa%q^X<$x83<*fH%P*;edUQ;O1W^QRkFpe;bfjZ*XPZew1x$P9f0d3i!qKHL2nwS?TRn$>HW^sI zn>1`e#`yT;smVn3 z;aV51{Bm7c7tgu4S6SzXwxNhVjZ0&{O+gmZTmvyKX>!D@Bgj;`UhY8`gb1v{?{M9 z_j}9Mo`2ybmtXp-YgVt@I5z699x%)atr6#~Xjo&U=_)seiv7taBO_WTsB1cQEa=f# zVQk38fBqPwEGL|)1B>wvA~->2E6RKQO>B^AP{l=*Poa~n$Ri0yMu91if2uUu;&@}p zq9-dy81osY2uB-mfJb{R2u;B>i~+?WCd2|WZ2gJlI8(YL6p37WWbtWU^X#%cVw3?D zw&g!H#!YgH=23wnb&@eTrcz)u362DD8BPcvgq5O>R&;Re^NayL3~KsAa$4AXm4Mva zq?t-6>r=0cNTBkl=2{64Cj;B3f@y50cd2V{G%3v`!`*JQ=sf9gNVAQa`B;g`!~~Jp z?vPu(k=TF)T)*03oY5khmg!MF-L!`)*FLBM217V#u}$Um0=(6PSc!2QVgmTOr}Pz5 znQF!{8Ya!kQA|~oeO#^p61LyKp%m-r>pV>6B{RLqfd>S3Xw{It!Bp5~4ZsG`SJt|!{xms+Y<8yy-AZcTY9XW@ zb8%X0B$dIm_9SAI>IJfmQd6&5jbefQR_wuI2Hd)J?KQ8y=Jwmach9{~y!j1VX3=I# z(#?@M%PdHK!EZiJQP1TOBz6UbBmaEAVE_J?KlqUku30@c&GUD5wjt?oF|gAs#%W-X z#<~Khm66_Rb?j>5v(3@_jB4S`*%twOw@5XBQ)FKS1}&Oqv4(V}Z@PVAbokPX&w2Fm z-7gPIHN1!iQ5&9zVK&`%BM0`}DRQ&pkcF z1OJnwuX*#;KmMa1yX4X>y!qznk)tj_Rgu-t$%)Yu7j4?Oz}w(HcFM}sbqMNvW_9ZH zF_N4zaPcT#uoZgx=#l!ht5bYEcG1E~9)kpvbytQYi!cVe=>P-bjXK600C-KwG0Jff zxY?^+&x5{&sbe`=#Dw4mKjNTfMJi@$V6>)IFYIQZFWQ44?{XVQb=Insici)&Ox>5P5TNY=4}UNL#Dfps_2`559oY54(COoA*G|3bqu2e}pZMro-gG%X|EZ@P0lGkIdmT%` z0#e2@S<=~hum{JPoh^Tg<1B+t@T@$=G`=V_TN%WdBTB44ZX0CTmmwM~pIHS0b8ybu zRIO>8MH^J62zy9h=t-*3_H&v`FN11!17WsmshS&|!E1ODGSRxmexdXy@ZdUrGPE5d zJ{mu2dg1Q!@aWOwL!bZJZD0E8EidgpIKFUd-MN=9TfKH-(K3E=$_E@7AnZNk=H?SC zEXI!VI0XbuC=$!OfZ))+Jwpc$ti50>&uwun&qUZ3P6Vq+BV&`NPoCV(1%gFO#>OU& zV+TR(z;fZK_WsMC@mC|q;bw`C@6X1lE-k=ZPp~!bz=5KFYz!2y7Uanr#%)rRuY(fZ z>%m3Ez|j;cUXq3$Hx|7f)lE%=P@7N#sChf8DoL+9;8oC)?dXQ%?G`IysR0EVXS_M) zOvKC*?%^ydo6C28F&kv-;pvFi-Hvey6-HYyRGWgvqP|R%agmbL=})UNqd`F1=*Sq; zB5+p8ysUS@!bQ7x?LKkbmy*Db52=WLB!`se$xCb3t$p_P<9m1RT)%P6QF~CG$W6?M z;1W(FV@&cBixw|gv}DP_m-p=4v*-W*tv~wuH*UM`hu`>)w_LMieDd@uzIF&(aG_Rz zRD}(p6lY+UIgKESwQ*k@ucxX%C?GZ)1?lBO(YX@$3ex~xl098ep0}M%Hh+pu>^~jF zpMv=rs3qx4c|D|zD!Lv>b&koM`91q;1%HrSs(2G1TUzyBm2(`xPeZky#UFNDy0T)j zpZg-QSVk0qxOBld{X-XQxx`vq*F4v)eX(X|zLbYs6xHeZAYzlD4pTWl`X%RIlnZaJy zqhVB|ViOe@n?gCcaQNEDKviQz$x%=Nfkp-hu6dMb2GB~glv>nzuVV{0l!}hgh%DAo zK?(7J4EfWak>@glK^kA+AnYbHWa$HcvV_k;c+*=0p|D?~oGNsioRQtea|X5iN)6L4 z!hM7|eufMtGDqh;YG6W?t4b$fYL!Cl2zK!i%_3FCpbN7;0ai}&8jAf03esGz83;+K zIHCoJ@iiX-mGO4 zB{s{mZ3D$lT3Y1Rq!*3QCL(YZ5vKSumqX0PkPcJrWjLp7gV3nNvD>0aSMewVEF%nNPA*t5`u=xc|K0E0^rbI;^Np|HBI{1s z;uiJ8caX(E8F7x`K-jB6+ve7S(m=YEA8eW#`ob5!N?^YGhPO+X=-1_?g4Pv&d?CdE zbE~O?lFegcsnvVvT%tk;R;u4bn@j2Z zxcD?}63}jLv)M#nw0coeHPO|<>#Q-bQRE>E;VAiUz z(%j(CgYjuQUG+B#lzOU3UjmK=P|)hcL)8~I5^beJiGv7*04dpR zh6jr1Zs!}BvpS06qS>38qrz+!ipafAijBp|*Mfr1=o+7-D^Bg(xA*?LA9~>4J70MA zvEh?P7ETWT@LMkb#K+$M;SarY!v-EHaAlo-g|~SZc`$W@c~|TU>da;rTIkya&TgSB z@>jsuEDu8F%NlGO)U@OL3P;F#>_HY)rm400qyT zoJB6~)+t3m2`+#PN~*z~;hI>rR{}67NNTlg3DllTm_sTSpX5PSy!0w#jRC|fV}`!` zjXVD9XTJW_3;QOPtX;nD(p78Domjl^^yoO}j!=1;Exsps1U7*fUdSX|U8>T^nsj1# zX!}b$hYlZIy>=Y|%2y0nOuOpi%#%#ra>UH^vFW3G_DwBbF*Y)O+|z7-J<BOXv%` z7^fAK9b42j%?c;iRH$k}{Xyd^wn|4v0SJ`=U?4J-89y1Z=t(P&pGI$5%}p2woxk0s zT?~dwy6|-T8U74C4yvXaH91m-|-7u{ts}wPe@M=Z_pb zG`eijNrb}H1-#xP$vt9JDLi#@_lw&vc+J((K;507bcQ^AB7q5bd}86M)jTvl zHMM&Gt{pq~y!`+E*Ux?DrdvMzzUzMI^;c%1<%eQT%bC$V=ISvKh-Xq>6dVhs#1a{-4EFQnC3ysDDubfo5h*On1*?fLDrP3 zwMQE)RBKO8p<4TWu^L1uNFfw{FQP{)oF3j+t1t(xX_L-5OLI?33=vHsb$P|;zTmti zKmXT0_Nh;O{LVX`{_ns0dA{`f#N)TUuLpqRTFQ)vM1tZ_DBZiwP>mB^~DS zhbfe=ALa5LF>X}HJN7DLivXbzhZ*c98Kb`fB;k)1MPdAt&tPmIm5U7)N4ZMM&;T?- zRo3W9#6T|sXt2*>Mm2x|kx>FHgm938%W%SMB4`+POG}D@2=d~a;-zwf zhV>NyB`Uznn_Xi>Xm8F(!=Co29+c2vx5-GSz~7X>nz^p=scxu{$Tu1kjs)!u6IL=~ z(Kmb~hpQc9I)W4Vp9MP^L!Q3W02bn>T53>qfChvxzcXA;25ioWQ^ip$AR0~uis)d{ zh)!_JrW?c%E~;3v5nMvhOsFgsXaG{;RSf8s3}d@F*+>XGERh*tvS-^DjPY93T4bg|K$o{uIz6rd**uGRn>U-_|dkRS~f z;x>*JTE|%o4h5SnTQKu$quwifZK&pyW_OYe@D7^}Q?DY*=1xkG0|De8ZShE$MB~`r zv4|EDxyhv4E4O5)5F+iBBkr1G4{T$M)SW7gnV{053O%6&-4?b0;4^k|dg%J=-|{d1 z#iBp@$~XSj-}%|4ldccIjV&Q4Ej!x&So~Da_o;v%qQ1Eb14u?!(8QxSJu~$96Nm1( z=b=p(Zg|aWui%~h83IWe<%)_RlMnR_t;9w+!=U1;tJN`DlqS(EcJ#jMG^{4}Z7Zr0 z8c>I5MKts+P!+&rGcB4}TsGL{W>a$YMHfyjn_BqfGuuzhaN0k48fSRS1nqybn%j9V-pknkRdlT z7?!+@n%5Bce#2w@+~J`E2lgB|uMS(#4l;e*4?s^5(a^Y0c_$ zrcccrKXJ^P94@uYP^>pjo;tQ*{M4rN*Q{L57uV66C7}9i*eS%g^6`SG2GTG}9*V_2 zW{_meSY{TY+0A|sg8(G&(lv5nrJG21$!30Wg(*bF8JT9tjJ*nfye63UV`W-{f1Q^B zCF9v~Llsnno%5FKT}P0Q@YzH? z)Y6I*|8uk>K?Uk1Voff)C_<+WDutp%KWE|YP#_mwomF%%VqRgO z>KKtdJyLeq)?l))c#(TktquA_JFzNNNQf1A6k@egvW8U0vCv;({k`4>ENX^_ZGQ{<% z9WT5<)UG-ATwgRxFf&}UiiTYV=*;BU*rAsX3?Df*wQdClqK%rEn$4m$*f@PmhSDqM zA~U1+%uELkKZBNHoW>3$cY4Xu?ik5EH1>{vhppm82ui6O5g7{N=83k=>|^hF_11H9VbWhQ!YA<;eQ#$~)n6y_fdbJS0T6}IrzmaZqh0j4Zis_I zq#HFlN44dX2F0c%Oq@<4z86_sP;vBri$v) zZ?U|uRiO|d>}e^?q3Q@qgtggH*EV?U84Usl%GE9pN_4UH^c8!@%H-JTH@*IXH@@+& z{eyjf?Hf1U^4q`jg>T$^`y+Qe|Hz%UtXRA8qODhKz4Xep=Uy85;tCz^>nH5KI$M^% zOnl;46=ShWN;gv#U^LJ?&i0)Sv_2`TY0Tb<}rSscnS76+~>zIWQTvKW* zVVB?fy?DWbYPI)56Cgc*8`G=$bb9EbO_Q&G{WUjzJ#ReC1Dc#!1VcqU z$f|zDU{HHmXis4Tt*KOYV*%e)`Q|sj_wxS3ANj-w)~-2y;ur?&gyLBw?#l)ToEA2j zX>NTmKoNgOkE~hb2ZQGSs2oCegUa?YqqP{-+NwP{4NV!BCN6LcCf5u({WT*w>Q4=? zT{FID$@z~zy?5WfLt~@7muQqnH4Ys+xnO+s(#tNs_L{3W-GBViZFk>&-vbXk^z`#D z?0f04y)U3KV!0^E3C)B#&8!QMA1OFtE?vv~%%V#SPTql#Y4$7b31 ziF#@+Nn9W|>qx~{wZ^p$HmYXPElWove{m}5$8Q|7mxoZfdjyhkSqw{xlM0iZj;e14 zf(c?>0uZs0*h{6Adn+}?^1WtnT$Px((J76dh8DGAloPfTf*_sEg-oi3uU^w*!GTjr z(q_61lE^E!+9Z!KO0W2`Ul=s@(WDThrK;p8NVg_Ck# z2-0xk1WiPyP_N(6;{624xe_rpv|xhY1Ua$mrRN@e;2vH;xSy{Q%p702eBrx4_@+;M z{C)4d{!Ob_X*}q5bsH0E(6(8}bdbSgj26%r`qtPOIBj7)4=1o5-NKoWG|!`(Lo%;2 zz+s@+A^iYGgV5T{~2!y#7cMyfQP~C+Xkc^2j``iPyWaM{NKOw%{!+@roImNoZv~~_EIUoia0dP&&KZL0>Q-iigV8K zE5#;UBbWRqOQtG0Q7yPndExKTsHyzH%} zBp4Vu{lG$=suhXIV(px(AuvHl!186UJ|$jKfDTGE1}z*&*SK%f= zT?y6n%*>J%D~Bc*z5K$9Bgc&b(@=UI=3Ex=IXv^cem5z_y>OmdKDlJ^@?*=_?c4d{ zgO9!VkN@efUH_(Qf8-h+&0hAXEfiX-7)2#&D|Ubmhk9+rv8y#ou{#Qz<|ECb&nbmzQ$7u6r5j{iS6q7OmFKM4Fg89p%@aPv zB^S08;EL2z)jZR*#~FPUw`nsb6q@vs7V1Q72Ac%vLee3+f&&w$Tt|mNjfQ{~6^$v% zn!utO3v7T3@kOcDk1#Wpp$hud4VtDz&Jd+kA6c;X>HrMH$nuY>2?KqQ?08_$ru^7R z&BdDnC^+Om0j5FZDb=Y43!DJw#tEJY0~j+reQ%#^`DndbDzga2A8aX7)PYTxk(rm`RzECktwcT5WR4`V^Fyfmh6qdNJ;WuHeob9Y^)D z>O~+#RKF{?)5|fE3T!n$PEbA62`GE@nzJ?adssZ(yIZSh3X7NH~V%>8YtfpLnmVNuWN8t`qbV{q!;KtCMo;m%+FMosIFL=)l z??S)243lpTG%npIa?6X7tyI^Oqq#ic8EytLrC7xo^X=B3CBNo<(Rj|0wlKVjrmS6qJO ztFH!i-@$`BUgAE)i!Z&nW5=%DhYlV-#E)o!M$Y1!XM7uV;rQZ(3sJQLEQmzFnf4&?#E}M5 zkN9v-Z)qY$dzgIKOH+VXK{CDgTs#Qmm$JM_I_&ryY9HJvdU)z1b#|%D!1UQM<&?u| zQD+Uz<uEr*ullzZQ?cUv*rAogbOWb(a5>kCfqB5C7HWN9smF!07*naR9n-1 zwAiLE*?ig$<+KNN5G$4q5OEA`v`+&NQ@g3n&1>_{`Lc|`o<+ecQzPeCa@BIaLQGd3 zc=_dfAARtl2k(3C>BmkT-#58%=ndCg^pOw0`=cMa;ljk6Mg+ z1keVzzB-QzoWZ6dDOQ8zJ@Y{zQRaB!bkJCF zVL^$o&xq7&0?_p*$;Y22lqW#Y$4;C){QUNz#Z!xyt>ihc(?jE)^%KSfFE2ab=M%GP z-uu!{B7DJuB|cK)0Aft3HGV*dSE6h1pogd0%?L*Xf)M3!RZadvrSV1}BTbKqgsqNK z^Ki0KiIFy>O5zjxHtt9¬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

    bND$7 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

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

    ;#pm&n!)H?d2_Tql$OLt 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�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 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
  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.0.13/images/guides/creator-economy/episode-products.png b/dist/docs/3.0.13/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.0.13/images/guides/creator-economy/play-button-progression.png b/dist/docs/3.0.13/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` zJahKK#fy^@XQ$7fe9DntiLYLF^z;u7v4zvv=*Z~c&}i?#V6CgGQm!Q;e67$z%@Msx zOyF(Kbrk;8$;dcXis*1s^<WsM!)UyCEz@-#2wCZ@Hiq^NjUBwMRHRR~!N(I<*O<0m zSZyw^E%83u5^uBf(XBP>dk*$kY*Dcj;4RaIMIPDDvnc}8c=ExsBiV}f1VTw8ut*Ef z4kq;m+iv&u_YIDWA{`rXGc(fF-Ah-Nl1OKrg)Cjw&cFGazg{?hwr}r&YNPAY#q*TX zJ6?SEeV@D+A)%|J>l@eK^89n>&P`vq*wtv1YxU95(ecG+{_d~e{IB15tg}#KJ4o!1 z+%d$Z->;eQNqf1Pgj<!UqYCK7b7nH)jNnk`Msf{dG8>CE9RdQ7VM@-R*@e$RxRNg- zBbb+p93ZYifslwJYfLNTK}fWrtxg@f*f9s51gn3p{sn_b*~vB>=u?MPVxKnJ_UQON ziqeg9h9X<eZ4in&IHwmF#V?^0X)w<%hjE+1Cqy~AtCDhz&wbsAM2JKyo!jWH!nYl} z9eQruDOT;oPu(d)YEP8J1dFj(RFL3;3%xl0h_?0?18_;xbRc+?(`qgqIy5>m)*H#5 z_8-_?*tnM`Ev#S9j=-HzCrNkG53LgsT!rM^$cz_G7I`NL<Hq=%M{vJ0A`9;T+YwY8 z5bcP0j;tvPmY)+WvR{K^Ct%W}?55ZqcqH9E5<sLTU?V~m2`o|9R-uYaPA^#=k!2*J ze5<LzP7Vs0POkYp;nFIR9t<OE$0;=Z4!PH<ya2IRyjkX@V4JKcAw1on146%&0u(sx zv*hH0s7z$?=unZS0aJ5eip&rZ_Di>sF;1Bl%*H>|iLiVMA7W%F2pFAa#Sq3c>Q~1J z%18A`n5E7vR4&&C_a5q98QwQJe!e+Bx!!C&`S9n5_8l4<+sCkqNsrCe(xp?6uFswQ zwwK=a{jYm<M{}y|3Ny6Am<<h;mx}d2`^)!qRVz2$eB|8J(#3Np2X`MTmh8q+;V1%7 zR-uY!Z-I*}z#+HRN$Z>IXtBAz*1=m~&AAg}1N(*tifhZgl~PY>YkqaQy0ZAgKlH7; zy5V>=T3v=A3<kF9rQ+=L)Oxw=p@$!T#jEaWElu%SSd0-R723)Ikb<sJQde8@V|R`t z6;ac<)oxaPrHRQY+6_Ko5P2LLr9{9&*JLy%)d(hPisU3dMa2Uc`*k;J2lniNl#YQd zqzLh_pU$zxN;{43d`aLSm~oMi%U@6lPu7^31YC8Tt&I{7p;4$kcrZXB7*R~=a7G$} z(cFtVZoKjzxFQ{ZR7gTeNiS+Cp^&WkLUiK9j`0!!+1JkGPby@tr~2?Ck2V)tz5Dyw zfWVm=u%jMk@|*J`yGE}&c6f7xeI@NpC1hq7rz9DVhlXi)e9#^MNX|Gxy5;~8<4{M) z_Qvhh=xd}CfSu_1t+!tKlG}gn*Z;V=ywF`6h%(~Hjd?2<HIR9AjRlQFu$a_0Vcde# z+@*Sb&!NHnhfi#>v++DTc3hm9zPva$wKBJ~GP7Vu1;g>gqUv@VB|jd*g~v895IoQa z1dC<UGkEQRtgkT?X5j00YIw?#epzAg^L<6W*TBPhpFAeRsEjz0S`5Z|iUNBEebZ~d zcB6xZ*||Dsxn17O+(*wJz3GphKKbbDzWFt~ch@%7o9Y66TG&89oz(Nh6X!No7ry=V zUpq9=Nso+51TUl$S*Z?Rygc>9sY#a@@hnemav%Z>0g|34q{%!Js7Rcjpz}``R%QSI zAOJ~3K~x#tV<52tV^_xXXdzsYOcGb3C}Ls?rm1#Zgy3O)%icR9!@ZSqXR)sva+q*s zX(mm3!S(va`mw|Nj~_o)Wy^t1Hzs6S22*XU&9Mxxu(j-HpOq5mJBp4|A>wWju*SoG zyw^d~vQ^9^WqbrPVQ><|^#g`#%2c%#*_ayU>){$U;zb<so)L_0QM!*pmLo#w01}Ii z6~qE9uB#G=3$Hc+E!EXpUD?`bUUz&SOXxrLu_yVyIj`rKRe1SCFKAQeiaJCV6E_xj zA883JKw_Q?qDM{uGHWJsDW75+O63bku}Mfgfm_X`P(U&mi3l*G3@iUg4r~$3I52NW z80dpUxIk!vHjBEEt~GD*uy95TNZP7V#uFavvEV>|Ase@p+|Jqg1s-Mvb+yoDHGyWV zZWC3$7`S;h7jT>?l3Sa-z4Z!HSo#`VXVgq2d*Ic$31g5CHHjc1^AjK`ckp7yl*#zE z2sv=Vw)2j#(x-$r=5}Bk^f{s;k+PRe+a`MzWN_Y&$pVStZQNO?4R&n`dZtF8x_sud zpDFYVH2Qk__na8nwR`v8{bQrMM@C0`dwWYf+wH7S&0*Jp$4~Jr*Lu%UGp<MH$mvm% ztP!IY*WMDuPb{^jS-|irFN`^uI%M$WjTMIuM|T5A>Rm_JL=(gEgm@i^Y>a7Waxphm zBp)3LJ3BXur%`5zUTC&{=tq9|<P#6Q_x?{!{eOPvNB;Ti?|#9FZoX;4LV0HIJA4qd z+$v5^FF*G5`A>Z2^Phh3(X%siix4|>Z2wDMbolwVmil{^dH1Kl5LlzjOjLaOVKO2z zQ7T}K){b<(+{q116kq}1FgjdOxrvOD8uf>jX`sPvJgimpOj}L=$UqGoe};*+(<c^k ztrgb>#s<cDQ>V4^P2c>=*L=e(>6o#FFAE?~pFaK6Q>R#bb?VI7ix(!QpSgJDiH*lm zGV`7FMsFV<z#bhQ85<eh+dnwc=;`5|8@3l<K9r|iEH=XiOwS^UpP3CtBxr=JaJWK^ zgS(JAWI-G86v_uvZ0wC)C}?~>v0ASU^z>^bFrhkf!3cFUx(Xce!YQo>{TLWvy90;q z(I7I&XZaal9B={J8arAqEwK!Zch_e5qBoymoVsvn>eQ*H*H>-jaJ)vXySHc8?p^!# z@87#;&+zETgO5M<`A>YLv$wl%pm%m@d3ko>C9nC)>rdSHxrd%=E%Blroi9J^%XbaG z_8aed^Z)qolb0{<J#<~U+TA-kG=KKgN8bDQU-Q~;Utm$}7F*z;7Z<wVkTzAxy7;k1 zRx?EC5ZVU47#H?4DFJw&z(RAz1E)d-Fp+?fnpz4G5qXI94&sKO8PqH$DizzLoTgrL zm`!&I+UE6Mm|&8KR1slxJ85kOq6I;#<ircWV7De%)YXYmN=!&O!bMr(6)4TFB>Y2= zGj~`<_JYZXkp;aNPfz6~!sd_6p1$}IX^{C+Fy@x>v!IB&HtUzea}_5$GDkj$BrPhd zWgrMdxs66yagFqvLg{XsGh&4l8^|0Lum*=o*yG1;t%XWS;5e{vk5lWdHS|Uf9Wg|S ztXVk4WRwD9(99wNQZgJe1PZOv<|o%o#!SGa{0WueEPJGx)fkBT_azQ9rp#XqEaEem z;3F{aK$!rDNK|*E1o`|v;ZMM!dVNgK3xK$2B;^*7*PxoXyGn{&!C9mY6*ZQA8xluB zNrP~mKcnIFj%$}}e3&=0+i2-fP4uj3NgXK|Ly=94!2)-2le3wtIg1od^vDy_cT{q) zYa=U;?IVGc87AWw%|=)_NJTCX@u%2kwC9x`qlE=sx|B0PQ3pS*7|#{UJ)?WO2AI5^ zoH)O7W&FySC$3DKJ$Cf?z~G*zPd>Riedey~$A13DzPr(yu8;#9(KALTJkR;iy-(cx z&=-y$+WkAf{1ZR*i@$yG@}=qV^P8>EqFr*xD3!9ws>+DcV-ri7-#N6}SueDhYi^ZR zX0N;XSc5UZ#_C8{?Z80C<L6I)=Qn-xH@@Qe9V=7dbK2aQdg`l{1AB*F{-Rqy_Rtd_ z{n#hp@I&9rK#ZLf?Ouei>XSjNa}#EZb^ZjxJ))!S>}Pfe(DqK@JBpK&lf+?E?8zee zPQP}e+Cz$fCq$)S#ca<eiJ2ZVLfEBut<_!oXodUSi-8Fl8b+Ew8hCpU<^(<O!HO_6 z6E;&PVLL7|wS5k$QmF<;)@i;s`F0PF;Pe-N)Y0a^swrdS_LMRUC}AxJhdkL14TOhE z4=7ln%Vm0&H)}Jpdtzxe5JYH^aD`TCD^-P+WU;gQ>3cp`EV2r)ugKodLdh{t2nuTp zFSzwKUJ>VoKNbl1R1#`I%K|4VOhgXucsLS<Bub~zVFC1&9*mFd(R<OQ?Wlx#Ob%L% z|2x*7_q-dcy_My~>7Idokf$4lqxqg=sluZQcD!R$O$>b$7s7DWTPR$V3Kr6rJIaGy z!~K0D$M^FTxy6h2%oofo%ug@QO)oCa6`FHf3rnqywHEUVXx@UAtP*;I6Qt6tXc(ig z6E@cpi*yRL9`*yS)%XTTPot}+n>Ca5(jyOily@9#g3aO)MoQ*~IaOqZ;IY+QV>den zkl{vpfekcX3N&MKrf2xZ=}Hq7EYb}nYxst!C?0M^TIys~#hTk*r|C8vfgOo!#Uft@ zv3lcE0ys2^0xe^HX30Qd^A8HHPMBIiplNd!u_p3wsz7Lh)bJAS{liyum*jbLZg||J zh^V{OUGFKEs5#x&j4lYh%H`(5<|g}aM?Tggum#xaLTRhIUZw|0M)p|nDLQ`0t6!jW zeGVlQg7iuqDOhghkR<@gA7tDgRyLnZ$y0b{>e_{fAPoJJjN5|+)zCe4&wRrn38=V= zP64!6s0DtwHNh%32QV?D);+SEWCeH92OOa#mOrfV${{Zl_jL3RjC|~)51}B&!os9s zzGcqaz-Rg6Mi#^g1*DYa;3wi_2E;Pyi!rtsAu>uKgl1e69O-$_7B<z1_&CENq^TdU zDYxXplT2f3C!XkM!V+b)hcYF7=oPYRR{sJ<auTNBzs_RydYw^ZdYcusT4{J7o-I@a zlrL~{TkKq3-D<8<@Z+huwJ?xjT8cioU|vSxO5%p4&)G5=Vg*CNAMdF2cQX~WW`5a| zLx9B-Aw44tdIe0pqT?J?h_((gzxAOY!BgZCG!2AOdK*<h$4QJvCw%SmHb4sPVB^{( z?-{2^i-Um{y^&y!yDTy&MDmVPN(=faHUrK;a>lq#xEVJwJ5Z@qf8a-d<lvDLY>C%d zsxfWOD};_AsR^h(S-eDfVMx5*YP!>=Z<4EaQN({zE_dXJSaqGVf*VHA2z-kRC7Fr< z70XqzbG5n9xxUg{sYOZMs+2ZsJeT3Cb;Sa^|N4aijlklfwY3GdE4sj##g@jN0vN44 z`CJ_}?yvmj@BIAF{=54=`u^|xx4(4j(fu#D@#wD60qTqSrR9s`SDrb4`Rs+6MV2LQ zRXTh6SF6LfeB)Ohc*Tq6x;mDMe7um=COQ?S7OMp_xgoUCv`%0ZZFy!NyRGV0vBGkd zLV1NZhOE~~(sxjc69oiaZv`HaxqzLzHp55R->|Ngn6&&i3k0HWK_nn8-6RxO3oW)U z;{n8Dk3TlMutGEEBdX5g$VlJr-M7EuWw(=&@2AerEnU7ee){y8r%yif^r_Ql&Yqu` zxctncPe0=pIh8`CR_g5^;tBlN?vasQg!l|#t=`2Ne=1z239vPN7v_0_cPmE%a6=`Y zN<MvG`ZhKTR=Lq&FmPl$+$e#rK8td#K<Ft{N8bZeqcm+yqk_c|N`Z;Bi<cx0H$WA3 z<G5(}P$aM9F<fFRo>pslb$MxiVVd2yXD4~DVPbk_>g1zeIQhWmoYF~;Tk8!vVlX*7 zGu0R!edWtvwYa#bEHtVi2{dQtmrmSp^YwSU=<(0qH_2Xx!$ZA&153-zPkrz`C$7I~ z|IynPnYFM3QDX7}2iF@l3o<9uDw*;T6)YMEfq{bQWKfBQZKG1j>JU|eJt-T3Fc4|| z?IR0EWMF^<a};_)>KO&zojK$!zvl`g=$1HG!xRP*D+Yv1aVgpq<g*wWq}3&NfZHeV zlT_kM;)XYZfT+M8_7$5rq!X8naZA6BkVR)#?t)XVk&-Z{?2(eNTy+-mi=}M?W)Oi@ zo+IVUXWK@Q^ZM*Op^qr}SxpccY>P%9IdjUHH~<@(NPMIim9JeCIk^PIVr`wr1*<pb zI}|2v_U+w`sn^}|F7FD4K~Y4eT`?%4WiFa5E?HuRJRm|37?R40(hVD_@s&#AHJ!cZ z5MKm1UzK3AT<5%RCufk7PTmk1ug)AO1Aq{4a-9PQM&gXlu;-)$Qs`^25uaiLAaoi~ z?Rf7v)K91c5LFbJGF-%GI06ab<iljkz^JoDk)ng$(10Q8E(VApG9j7(BcdCf2Ft!B zM3<V{kwVUx5+w4*Ihe>O1z~B(XZrwx1ml7yGI=Ajfh6DpSuiSSKpQVib}K~uOti;E zDHcnPC)v_FMl+<yXpD{=RoD$>YuAB&hq_jWcTHYCy)u2}<YSNZ^p7u2UbyM-@PGc9 z9~`W$SDC$nrJQ@3iH(lR-@pG88>RZ4w;kWpU)Wk(qSfYcWJfnke4Ux)Y|G-jFzVx= zM&lP8z$b*Me5iJv8bN7{#FuV5ama^DYb(4?{jb04Tb?;P{;l8qwdK{BN`XE9d@r2_ zR0S2c8s)|tzW+P#`;ni$@4nBnFs-Lnam}i7lN=iM?f0ZVu6A*gHB^~LXg-vL640B< z%1TRd>dGt;Jhn{8Vs3>7EHr0cQKSl;fv0z(){s!g6Bs%2dc?u~dwYAjH`lM2WSYYl z|E#6$X}e)NaXG&zCTkEuCjQixiaZEr=Kv37Zf&@78|-#iF{lsdlIsKl;lm{(KhoI- zM~^(BRTOcFmh5rZ^9WZY3zh<@vHFb!xQixT#6$&Ja0Uj|K|9{TFs|dCdmkwBK6tG= zP~nX9V2e$9Dx0e>f7y#%nNA^L38C+yfK)cJ1LE8==x4>eZ`!LUlY&pJAYnHuvYo@G zrb@&Ph9i^U(+wb+W4lMMJF)-sUzq0EEFU}Miyq+&zU;W%S|~E2ES2rjSy7NTiR+z$ z+STz}+I$T<X2>g*Mo*<NGPajK#fmE!Ru}lTMr(~#@hob0tt89B+#M^p#n<V&;;Xzn z<6=lUV7#tZtFf0evnPCjfI&UZrM5R)#myy$gO&z6-RLItsoip=q^oLiKna5k{GGhi zdNCZM2%!!N5px}`0xTC<p+SA-)B2cT0I6eKJ=Vfbrxs#<S%X{-tvTxwWMy4!Irb$7 zH(#i9l8@TXk_!g?M`je0<(UkgVHPnRqVtO)CWqk|bPyeoGgOFF6m0RgQb=c9kx$L_ z_tY6HhM6_02(!W>A^N9INNn+>$LS<w76lB;l6G>r3D3lshw`&{jv-lEieF(})f?DE z1S%B}#XEVMbdZF9QN~Sn;-V(pCY;#^T$j(Ig*ifYxFeTVi2MpJAtL!BYv?KgsZtfz zwxoHC(5;Q+21JZ#_-IOTqujB2<lq=DQqk!xmFgsGV6wz$EA$o!<d(#s43aoxFycI= zBV7TLiC_b|S^XBQW^i#4IB^Q55Jmj5ni6ufN(xgdC`-%$K!BlwD^tAnnu1d2#|f7k z>>r3kJdO9t5+ccmVlrK2IaL?Dch1ev`v6bEX5B$D5i~nJE6RXGy-WNmZMxIWu&}w& z=&SREi)eAQV;Cx+5_y8rghZ4#5;Z4BlpPe1-5Ql25$R)L0~~p#lr=?yBLWglP&sq? zZ4QxA^Vl5rnyYJ`Jt&=wr(`fPJUdtLZekwTLEpHYId+CcPSIlau2emE?7DvTF{Xl} zj$y>OzPQZ$+E*qSk4;>@eCg7K@rjAKnYoqu`2z1LR%_wkR5OyqE7I%*wv3^MRt(?J zD9JUVX3|<#7Zh*u*)Fmpbm8pDFZ|^n{no(n?yerTx*OTEXCJLA<3m=XHD@ne8lRk+ zI6uQ%VUy#lGZTf?g+gH^UYZ7X^eSx9nO<tvx*Naz8~^RS?|R2u-~49}oO<ek)1RTb zqEdhmqdr!Z4~`wa`?lxZe*266;LUGdnZCUH#uE#b!XkUvSq;%MfJgY|2|0ZE<Hle7 zqf$MONdYz%+9-VL?eE)s{Pg}4*YCUW#NgiH&3b*A<#TpVqLUdFMxcohNVuVL6|YrP zEY-&}xH7x*m6$2FnuCXUgakPCBuZjphUbaw`nT1nJ^joxi_JAQJx0TuYs@ih(lW6h zBX=mY(Otdah9fuLbflx>E2u+RuQWHiaQ@Q8Q>V^8_4MhJPoF-2{^G>>FN{C_8B0G^ zXQR>AH^`QUyLRnk^?py^V6EQ6E9V>K3aj>GiNUsVqjqwXAN3TYO16o@De)ctttOpc z@Zk=q;XJ-h6jd%Sx3LG0M&}eIJNY72p%oTRU?O4zVSrTfi$%OaptDipS0C*eJ-q*z z3we2QkNJGwUznP>I6Z#m3-^DdIXBbj9q8&AU}J=>g}Gv>^uc$%eSZGR`qEs%7nZWA z@70wiOBG)JRbT)3$x{pCmm0Os8n4Wbj$C>A)Ze}JFaG6^9`E4ueoSQ023ZB*+Ns&l zNZex^6pbXD!cU9}iGz9g1u&CUfxuuhju=*20E#3(L}Gr=ktYQMrP$F;4k{d}q3IoQ z2{elkh4l4MnD!S@fm`B<3Q*v64jAk~fF1^(ucPAq0uf@^gUu{96lyXgi8D&Z^RQ2O zq!~RFlTZvCfF{sNT&l#H;4c6oQIH(aY9K{Mj)ciGM~<nTo}$}%+c|gQ$Y7p*`Qkv= z;BVjN^zA{Cn}7RAq31+8p(Gy25K|a$)J}#b&6gxs$BF{rTq}I|eQWL3Td!;LN&Mae zd#FY?{7e+(FK~q`07E{hB<kK0=RfD1kg?L_<e!{6J0QU?a|HkGj5~l6>Oe?rNEpHq zj6*se*=>Zg6I3I%ZQtNcrW0`Rm6r%TMfea)1m-ph=!|N*6DATfipB!fMoQ2Yocl~{ zLt;*VB1@r^FWQYrj%YH1mpYCBRj7rKtY|Un;>g0iU1^r~nM6Gv{Q+u4QmGxCHmAyt zB)cjexp3Ld)fY*Gm?5YRW(xs!S$3Mpx<l@BRc8Wd8FM;L=E-Tg(Mb|Q@<;C(82J=3 zas-xOC^)u0vyLUZ!hlMzDOI|M_aE+??z=oaabe-gmD2jsSH0pZZ#uSTbMh&gZBdsP z%pf~sl*;(@;$x@I_x2Be^Vh!m%#&Yu^6{tEi`@ggLxa2aGPA23;Dj+pJ_h`m8Cp)H zhm>^r>DIG#-OBvsGabvDM-S{}b$;h&tFt-xnmcYNzUY>X^#v9b$TXF*k1G_N325Fp zII?T#hQoV4fBNFNbCWk5?}0x?5t+0|7UF43gVtwpBsIy0@#(~!1ng+pJQX^oXXcCa zPS`QYIuL?^L|u8PSghy8qm3ur#z7q7vt7cG!-p8F`MeHx?Oc(|?h1b8oH=_g`bfsd zp;quv2wDj@XAJ`CP+Fpg{xvV|C9I_R<}n;nXE5S+%w!z=!?T2dlA0Z~$QL{lZ(k!= zAuaHLmb?-p#zb6C{NbWp1?OHCy^#(?Kod+r*)9|~d_X@jG4q8dp00I|@PfuVT7`1F zuD-gw$k&AKe#r|9#a8&9&jX|7F{gMbc;dE8zy;mtDRE08IwTAj3ZQV<WipFu3nt7H zWiq|>v%!}5ciwT+gAaaib8We^-tbjM7WnW8!tNs-Jx8`lhvuW~iI4Jcj|4F@X%j`H zhoP<FvJXSb^x6vL8Xudk*4Yvd(`gRQme;IM5kd3lo%uMtW!<G*ulPVES%OJ|fCz0n z_|1F@RzlV4oV5=Mh}1D04rJ~k9X%uy<UUkjwZ%jw4#2xV8rkgN2Zy5h)6XQrVZ~*i zi!=o$o<tx1M7`#h5Xf&PKrvtfBSXR!)7X%9oo{Dzb*bFZaDi{hT<93&SY53mseY`6 zq~^UiL0u|tj1KgaSUV*DcCYYU8MCgSS8mb6sd*mh$_A@qyvzq$8S^~WhLX4mg$|G! zw7f#H$rrVJM3t!%nE>(!4XJzPwFI`U$l~)POAQB10>l>__@JgvgSR9TMk<LQNvs+X z`ZOlTrm4_FMv{0S(6D5w2m#a4i54ldU3`*bZG|#i?c6$ca4+=_ucCC;=%+E=nzDv- znmw?ZOTN7^=n<|QCO1Zda#s8}(00@@Ik;W7Bxx`gkQ&<@`o46@YA)gE4U&p6#7eAW zF&PjU1>+@^ZpD<2@XN%5=%}2#YMsmq`D~As%RwXf1gTTVOvVKwH71!D-85HQ%T0DG zV4B8qBj1#S&?YhBP4x5}RGSMAxzy<3=ZRVD-Lc-^%VHU<;NTGo@)`Lflyj~6GF@dM zKph!~$`oQV8FQt81#YAj!&|`;Oa`Yw34M0)CV^ytZIlV@%boKHf`l%e!IUH2&fcci z4s568QbdeCnsc2%e8P*aS{rA1=zQ_=#Y-HQImX8?E=*l1EHCgOUm+=LwR)|0;J^*H z+<e=My81_$vD96{B#@>2!kTi1y^_G&Y6k+tgT&FgdLoILX0v&_ap}|}mrg!v{!*>j z-9<f9sC9nk-j9CrBOfTNtT5|LQ7v_M9X_`I#v6{^c*|`seDO<GmRG2XvKCbQ#ntt7 zs*<n&me+svH@x=TGiOene0qL<p1P{9uW!$;J-hde@jb*wql1kwfBg^txY*rTtCm(v zTWeG?EKPJj5-O$CiJ>NM%YidkmaV_66#!D)t>tEsFR#)s`Pe6ldq&HATIJ}0!Li|i z?goqQVa&;3Dgj@b(i7#6E(YpCW{5@g5S_Bk)w$;M!d$h#tJ>GiQiv#<T8+Ai1_OpF zY~VLCeC5=oD^rt=1N*2SaYDx4E&+odwd^7fmQ~~q$k?vbH`FySa{aBhT@Nr*Aj^xZ zlao^y&YpYv<kL?*#Ug{V7cP&VdgPf?pLKBWJ9Rw+-Ti}ZdDzPf|GWE#N4x6XNU_1& ze(UZauon9Wz!=}N<-^*IMlZarFq~#eg@PI76$a28yTs@jw1U2Yf~bh2f5iHt&|j)X zqLh&ujROAR97Bj>9yCP{5E6P0Fzh8uJq>}aTB+8>$8nAh^!0UB9{9uuOMH@OV2oui zGjlV%&$=`*ec$;Ho0SD~jRpd!(qeI?*;-g$>lxVl+Sh&O+y3akPh7sZr_pHC8f#;t zbLY-{;N5@sP2c)mO$4>0g%gu0)ETt|)6sT-!f#>5gRqwbW<BJc)xY(Zy_j?)pCK$f zm2Ct(D+$pN5mix!P$$W<W<*E`4@?Aiq@^I|@Rpzr->_n<E#VA1S5+XX3^hJMM}oDf zK{P><%f}LsPpkE84(LsRd;>+=M)THI=o04bvP5Sn6GIZpWDT9n8rs2x<Oe1(dCj?f zYw|Tm(#uYf6M$5%0loS@N!X6dZ`%=h=8Qmo`<&MxhD>C(gQBvMl#zf^b0w==jwEVC zs*Eg7U&?iWi&Ioq*~+_Iy#D&^69$p9uxHl@mER@{XPiSUW!+y92O<>f=uzj;k&Mhl zNTDE>!E(WN)<9Nh85<eEb6wgPGK?8a+y(J3k78$*HW$Gvr@)aRO3dd*l(}|lPKv9f zlO9ugN>Y<MbLMFQ4W2yFE`o<e$p$+iv{XhYyA2rKUC=mL%zO>UxNKY?hKLa&x|~)6 zbn$?oEu--uPc%bRb%tp>pp%mfmQv{jQ&1$$i9>S%E|*fzgq1}rKYkQpqQmWEFgwVX zasdJ`(xt=LEG%kKByD6wh@e8{CXW1SJ;BdnN;-wy=|UU2j)CF5{oQ>RPoHefFaGJ9 z|K`?x1OMpdx3m@~I@yw(XL$~zXf*2gKXC7r@$)ad^Um9Dz45V=r{|ih<?60Nsk%|D z_)O4V0xDwENdKA~P*JE*pbC(5@am`8*~g5ba$&uz5s$=qHjXM>2<jsBq^YQ#@^w`_ zD=lpFl#62n-HQ(|KlJFMH=MYenvdA%Vj!cI%zQ%Ks1jA1kf{SWP**0(M(UcxZK25b z*?b0UF9kI@u1qM@lvn~EClPXzMGo|dq?mSntx3P?*wKC3i44(o51-b=M5T^yotI%N zoh&E<lM0du_!6gaV}!IoqK%Y-pltgrg3)S~x<c9tt06Q0F|&X$gIoccJPt^})Vw?U zC1PgRe>2HMFTT)D2$yj#brNVB0y&*INf2f*rFWT7tbP9BN9Jahd-wL*0kGYSgU?qk zFO7}%-FU-sN9t5j;SpfKYBCEX_@e2u_kjIk4?NM!3#eK&%^qZ7guqj4QUDVI42Tf2 z%OUY>pV7SQMbG=6zyFTa<z}O9XNm>0%x}|_nUPLXC;N?p4je(90s=1~G%@tQlF^Y; z#LfY_LI_qYF~tHkH6e=?$)UL@M<EbsRY!!)6C}L2^|(uFQX+z<POJ>$BNP~jTG5+< zBSOhCGOb0DjGB)MK8A&)P!#kF29!228i_dLMJyLdFrMkFofv*669P;+g~mS=?sFiZ z6AI4sWhuN=bgB35EL1QL7FV4sQlnn~i#Nad3y(e3*TWaA`0PWYn;s&8z8>~_>gJEF zM7tU+++cg^Qi**Eoub)jt&9$i@a8LKa#tQ-8dA&3sFy*&fWs}fGjy^5{Zn#K-YPp2 zY;>+|)%mo9U)Sb|*TyFO|GBxvE37k}p4@l%R&c<dc7k92k{;-Vt6OVnujxPqmaa%q zACgZgd@7O6FkPTvFBHZ>l%NI3?5e`NNoO)A9Gq=@5|!f3-?#t(AOJ~3K~#t{i#56x z0_f7>3hsG*CGu}{ZngI99b(3>)oQ9Hl?=X^{}4Ne=)+kg!XY<tj*^}tBPC+7B-uTp z6$4bclduVq4gy9|0F@KS^bxlasbzo=S448+J`pzzhER;bq=-mVkCKxMM5kl3)!)ab zE_k^Zj3kE6%;Fs<z=?_+hJ)YI-29w-gxPH7DJh>BfKF&4gvR-^M&M^rAPlUH99dcV zUGHe{<@hZ|wZWSdIYKJ4gmi&W-041nk|b7PNDs?`Q+N(YWF;-4vRE<zV3vSMm#fby zO{5^n&sT#y`z}N8^i_x&EG065FCl$)zAqaCzrn^%Kn4nw%#Gju)nCH)uG|8K{o(43 zzR}TLW4Dcr@{oD&(9kf?n;U$&vRr2$NmkuxMyKtfAnWp(d{&V`CKFe+5{IQizXq&+ zk{lvwwchZ9Z+P+DFZ}ESpL^`&DZWX|I{D?vORSq;n_sRC4jg;_ZMWQZ^R2hudi2Qg z!QlZup2rGsw!UNEJ?mu#ky5nc05>05qMksagU1h_xbc{+x}Ag=X!1_r*6PYi<?{HI z)upAvt{!(s!Altv@fw5OA`1Z}Qhc^j;dz-{T+|&TSn$ODNH6}jZ<&1F?aw^)*!t<S zg^4SzvzMOvhfh6ItrYtE>w^P*!-L%eeO*0l!e8#JRh<G2H^ql|*M60q`kKv^`NjFE z>6yvNwaZflUTM4j;9cMQog3`UY)J}z!GdaI1D1|~vC+$qo;-8z;-SMw7_i%5sB<~O z1ntN7&Z?7zBpz0{w~Cb!3g=R*b?iSlcKFb)mwv@v05n(Er)HKeU7S2~?(&(_XCM0P zgQuQ;W?}O5!i6W!v#yT%yIL)=O?OOgZ2B-{GhV`o>J|Mq8Y8>*9z1&Eq2o6<`gb?i zitt4DncBz25y74;QZLbh(Gy_IsZuFdmYJkzf-L0ckbk_wP7?f@k1P~!_Auneu2qPs z1wiQb2P}$X8_KD_d+VF2g!yJ6FPO~F&8*I^3?I4q?yvYd-bPrOJomt-K86Nq-CAoB zW;1MdJX~1Wy7875UHQ7#ed1kzJ3TSEch6o{QY<d7eD1^VzTw7WM{l~5&mlt5j(}xP z-QiritiF`hkMbFZye7X$J}*eB(~*`01dWbig323=%>5&8U_f8dfez(ZQbK_tuITM~ zh0e4$N4n%tDUKYv0~*3DqBMG|4~s4k>d)%a60es;!DmTo*77k2;zL0J^gCKtw#V*Z zB8o?O6~1R(i7Fi=OzKhB0wHEY9E2=r=?-lr2}}>_0rTZf2~&n``{wFw#3zg?kia4) zqumA|AMtH~o$yzqe9pVbY90cjS0fo^^~g^Z2GSrAn)V)0^F}D$2?n?^TyS%~c)UD3 zJa};bm;m`PG}P1EU7KENGQn2t@C&B=Y>&-}aD-$gcR?8tp)iI36DEU~BoIDs6-EXE zUO*4?<uTv|LBbKyIWSSzWZRMFDs(AZJGFh=jtT72ky5$|AbHODxHeY;+W}1G?Yr$z z%Af8ja8bE9xr!Y$MI51`j8@dE#D=P}Y921gmjEb0WaA4f)YiVK*jnQ$a#W)LF*)n( zZ#);<sF(RhortKRw39_%yVxhqc?A^(CQ787$!4BLIO9(~H7_YJMCpta6O&j3+J~_c zBhADJc*fG<d1-)<s!`JgNhU_D&_jxdB#<Ew=?>T!$wk>0Jv$C{R(tjxx#_~$;_OWE z-~IPD?;rW07aSfcZY|M^mEA2~8{V3k9ItFl+;!{0)wPugws7mHtg>pXwN`DqG@Dx{ zyd)}KIElybwp-!FkYgc0JO^RRTJ=PqjwfLhk&O-B6ixDkBsO#0^PZdYGZ<M7SeAJ4 zkVVi$UA}P1VTZD){Lpo_Wg#;PY9V?GPJxmi2rt%D{;3!ZNj`7nq;qj$$>AJrsF`(% zKw=<%8e2$W31DGU6v2leJm+LNePR9R(L*NN0_#F>s<V*ADwz7Vv+iEP<&_n`zmRB$ zUj}aVBtqEY-#d7K-OP;Q)C?t<RJ}G7v2&aXhC-Z$Q8e{uGZq*~(dg!qkfxWJ>?U+5 z22z3)nG#b80Aw&hSY-0VVP+2S^0Iy9Q=fi-7aQyKUep*Vn4cYoTAM5Lx7~Ha$Y}4@ z+O*vQ^YBk96GP0*ZKQseMC~`QV-j6?`*~sx2j`YMa^fK#$Uvh7n><F~#6S~BG|Wm* zINDfw!SiqJXjB#!r|Uy|AjoU?XcV3($i+&92?9Des*ct@)G0SMw-N*^Y6<?3&*n{j zgB4sU3aj2>0My3kz*;$UtFd4v5C(wqYE=irz!PM*J~$T|0EgTe1<(@h9gczP_$3TF zKD-7Q1>JY}eX0$*AQj#C1nvG;dLzze2RX=q+losu#ODc{hYLelHX)*(lXJ=teO5Ct zFyn;hGI<cT#M_t)V#*B4#K^(s#^}iK<oFa_ES@Z$J-f;)!0rp6sLTy^@D>bjF?V-& zcj4~c-L<ZIPgm{4k$ru4+&sD3<P{lu$j(hzAY7iocO|7s1e1}>T2#8&tYZU7I_QLK zy7_ghbG>t5W@+{E<qJFtJb!-t^qDgg>>4sT*<7AoSsMR|pZvG%i={+uJ%;4rw=kSs zMm5MJx=aVc=t~;YGSb0EF8GK6&2dx|sx4VWFaWbl<VYqbsKS9FP1K2C77m59kyzbw z;LE%Y!@L!WWJ9l!fyO{@Woebo7l|o{4}!&4IrI_fXOhS=1fXW5PA1*$BRnleHIZ(i zO?lI;fP_*Wqx|PyR1uFHCVMdkdr;j1rhL{*p@1xxccBe=34p*MjE8v~8?;#4&zC@W z87Fuqa{?CzeFGJvxrCHNYQ#>yQ@+T@3knrWwe)4VT{O5)r~(rhC@Kam)9FhbJUXSQ zSb&J$=<n%e?BJd-(iBz3qKw9WWH%TP8JGw|18EU~mJ>khnUAZ#z(|y7DglU$Ia9v$ zkqD*pmxjzZqj5so)T$|NqIY%HT#Bn>ztmmuz5{?An03;^*5K&K{=<iNkL@1bwR?2e z?(W|HYQ2|zTo^t3$bgZ8?+Nk6J7D2TLDD%)g;I3(hy%b7;jkvEiaTYo)`tUQ$PhI( zXL`mjdGVo}ZaqXHXg0T|uPmK@=G29=7kYboPuzIJz~BJwK7&@K1bDu?$?AEEPW0EP zP9zl-TX=)W8KA-{Z}eD2@#Y&;*{fM*d3&Evt<)#RC)puvt9O67&L;m(R9guF04SnG z<%+U(PW%lquslH2=hW(k_*CoGW~FoNmSYEQI9^&>ox3<WdHU?-Gv}5sPi`&DH>a*N zA7z3{QT2C<l6^K?5^H+8Li|t-RK>{$7wd(g!TRAtOlZRfRc=(=p;DmuZ52ii?7iHv z`T2(){)(5~ZObBCvaZ0HBeGP%*ZlMoWpy%G(r{pZK>=t3t>qn*Q}>n1r7G`TFaTUx zUR{`9;9~={x_n8N2@D&d=JG~oQ*kvFPmsw$piJ|repeR8pLlru(FgDA9XWE#3!nGG zmktb%t@^cF-V#%5QQED@d=kJ88ZHge9qg;2V$lku)?H2kW~v`uC@7Ld*U=UfuF+f^ zfFzw*=~v1ffA{WpY%MHwjqGZ4^)u~q0GB{$zva^9Vx|A<zva97#}4l0)xha94}9i+ zolc^hIu>TfAH3&dUHxNo_1YaTc)|HIPoDn5=Vz*wo}sb9;n6G2rN4XYTYl{54V7|t z+N7H<v)_hPqw<69d>Eo8Jxoa<6|QHP!Z}>qfPMpAPaGj~)F`?10Zk@rI}PR$NVtm| zb)s%kUaH3|KEDLKkU<#AIu(SC4@KrYW;AdvH6c0u67;NZ!5D?EIvZuJFV9b~!z1hS zSR;xVV4sPh^|b{)OI~UeopuF(jF0fZC<kJS{}49|%M6B0-1<<+(hhh=*~_z!V0v4w z=LX8NU6Y#U-6qfm*p7<4DLzbv@HslJpvZ1>Wa&Qca5qQUcwx$uWT6V6uF%-z=U;ob zv9#le&fO###;Szz)#~!mTle+%?qH!%=;|&E4D?UWF4BD2pB6G0NOq+($aJD8(!^@w zo;wRqK$u`x%hykZ2@jN`9S8Z_F_~0m0wVCY)3%{Rx&y(^u-Wn>#a{!QCnh~zg=ahO z)p@SIYa{p~0iY8i<Vpo8*+rfs0jX3`GFIp{5l9LKs|qnb_(%Jgqo+||KZuQ$OBbK% zD0fq1;s};$zKzsc>#lFD6gT?%8cD@;WMh=74#N->+vt^uQzGKU7vdx{vcoA-GFFsL z6Ii_&^qyzLVO7KC@E{>8#sOl4n5ATzVa4!l21-2%Q9+qIBs9g$z)-Du77Nu|v`CRe z6G1k%CD?QLhD#lt<C9PR)Gz)1|N50T9v|uISYL3I%Y<TK>t%P}*{XKG=9|8*S?u|Z z|MgcZtfjB;f*arQUhD8{>iS{g&$h`YvaZ$(HtcxN$AJ$*tWiSg?1{s>g-a_<8U+en z@Q+QR0Z8&#FTr;3?xco~ksIv#=C-@#R*Q+8I?E8qi5B^wfgcms>i&_{D+DD828|i0 zx!3sWBOufB)#Vk87|%}g0Wnap9BNB&^1&@fMk7VQ6<riwlPr}E96rXzi^YyEaNA!6 zp|q)g&BRW4Ro>TRo%$+`3oWG#1eY12#FnO#S+BuBVl=_<0JV#cX%srT=t<CQDn?{; z97!02v^e^%n8o3hKv1)1q8;q}5NjnPF;3APkFFkVwr#T=DeOs;Y)CW2*}D{HUPk#H zTa}M~;(@IS50m(~U`P}Nk2aalQr`LEyXYaXbv+|b5tt<vSrBgW2vr7YdU&L;&XeI9 zmQ5^*BM1V(3!^M3+$dDnw~!hbsMvE)8qqd73H#4)9XxRK@V<RdUs&MnPrr*Ka@G-q z2Jp|0QtYOmX$2*T$=u)wRd_2u>Rla#V&vJrREiAh1TFFbP8cvUL@x7-Of1QN%!upa z^`<zS$6*AE7cQhO84uY}g^Xu44Ix%#V-7z{h+-fIF1T@bC=Ac!44<^%`>SZkAuvD^ zuwwu$F_Z|VlkjPm2AaC=qaeFAbdc@iNfYkP3tL12N<9GMbVY!tOGz(MQL!0VIb#*R zSoNw`zv`8*_)7Nk<7*8oJpWo=Sz20Rqv`ZxL#V~&g*C?RvvZRZ<9xQ1r$1|pH=cjy z3(OppSO!q?Ti0dwg=Ds@qqD2pv2XMa*uuvsBOm_M=U6px$MbJKeteLJYk)BS@W!9` znM;??I273I;IrBN1H36abmI732M&%N**9|i4Yxe-&|k*$Ep4IlVVY~Gl{;^gmIzd+ z<vobhQrZil>GUxv(^|u+dB=eEG;*6Y{5tF*WS-AZ9;w<@PQ*pz4u_Dc&&4zzZ&z&c z)o^A;803`w++%65zh~ys5)W&s!h#+3ZzvrRml4vukWd~&aRe9g)Rsp2{Dl`q5W?^m z7`0@c(?C*EXiRmP!~<4~p)7!c`|v6gGKB_AhD3%@X{MoINL545R;#zSo0^_}C{cQu zMa7KVTMMYPP+ZDKj#9_`9Q%hm1Tlwo4KN%^XI2py!HEz;6L20Q<c*S}<wM%daz{r` z7aLyi+LJkhVy4*~ok-$O68;4{vM3QrCbE*^M(rgw)J5pSNk};X%m055UUPE12c6*L zx#)dS7BV58gTY+BKuWrbDYB9L_x!*QA3bryN_-LC73EH{bnws}Z8C1x-ayizhGr8l z1fe4eJtbL|_mfQw=j1{uFdt{>1{hb2s0KwvRmQXw`*QIr1E0iWyWoz#{_YptaqDd_ zxRqLSb={rznHqo*v9kS$WjV5nIofx;UHUd(vcW~X6gS%~!psk{h~2q_XztHnxBy#S zBZI7*-s)%pfsoesW~PCPryQwum85b7^L9ESWVvQqYI$RYr39r$q2t)_z7t~ywqD2> zyScc$G&{FQH-BbsVSa97af$Uqg|(I+wt*F@V5(+5jMLrK)zi~6*w@|9XCit_U5(9p z=Q5hGs?xPW!en_?!)y#3+FR%<-*ewR8$a+b?Z??0)gF}FSf^xnj<>&*0IiUp?yTK0 znu8LP<5*>3VRd5S(wS3dPn|w}ivP10FJ2m7oLk&lLDWvlA-$PGN2A5md#%oQd+2wN z*EwSp!^MCGlQ75T7GE`F#o*fF{Hc52f9k=H9=YN9*WLX5p<M@<DJ~YPxB=4$ngErC z6)56SyJ#d!InO$5)xrmYZB;IIE}oFjS$&#6qe-B)zz!6N^;)_3*?T@Q@x&u#Hh}8u zW9x+3smm<*d-1n?b7Sbh-10`XgZ=$zC@TfNeL%BDn7oTu-t%X_@2&*gGTFiIh8ycw zCN7lgyfV>P9U5M|bm{GX`<8$F-QPdo^xY5~#~zICl=up_4cCgO@UvhTeHa}lV3}Tt z4BCMM5QXsuPBJJHBE`-IX*=R06DsGb$o8<!2KGciY#F{pK!b#aB4?xqY!H@=v>+jy z*dppsQGpzXXTt4kzW!_9_YWWD4WmMVx4h^UxC}C=F+f`73mE_C^<UrJO>fUw%X0W0 zD8QUVmqc)<2WGrVO~Qg_OjwRGCQaeUB1DuT+EI~`B2$(OGzV*6cOu*w&Hy5+9k1q+ zvWa>&Mirj3m?Tpe8v#AJeV7-UsKAKUu_LDt(n{3^1hhe%Nsa`jTX~zV)x7??qu%d0 zD&@l1=-|nd(`<RwS%Idd1oDAFQ^jAHI#^GqK%RJmgf$ePi4=TOBkiD&1%bYXGzr06 zcD*J`U=Nf*@>zMG74aPC+q%96INeGi*I(l98nA0P+IgEvLx$iJCD{;&kP|=qD(Zxo z&|OwopOXMWVo=U&YlWL{x?yzJz?Frm&dM;~wxQ<12dI<i$8~Nr7gy$Peg2IH5A9vG zb@aO@zKI8M`|-%a+m(8aVe9F%7+gqyiLppjt>lQ96rClCinM6p5+ZXZt^vs$OA645 zJl0iF#HlZ2p?$~^&7X9si9<fJ2OHu~4i<fV-y8}CK_~?EGn=B<_8vNMack|-iN}BP zSKjo;|M`dddG5{f3I?<rt0xZb-hJ@IXHQ=G-9P`|_n%zad;F#|7pGgx3)7Pq?DD(a zIQyNI-B~dBaRlpRt6EWPnqC_dx*N2pz9vU)KXqj;Ys}+$XW~o|ZNNQ;ffa_f34LFl zo^3gmG0<GA%+K&X9lI4^C-jjNMHOm;h)Rf8ULs_HQz%YR!Nm|DCP;XIS*};Rit`J6 zL`^U_R4J(v7J+x3J-m@rsyT=Vz0v*Wdpte81Kqv5W}6inLgW-kk_e0PtVr1|j}A|j z-G8pEh=j~y5O0)aAByJ(k|(NRTg?c+w3*B-RHx?(%gbw>^c0+BpmRc!vciiPWQn|9 zv_4GuWJPi!mu5(q>4%uG3|H&}5L`Q&O~cx>ac&4~6-cZ-4SG-T&ok$0z0Q8g4?lFe zR2%3hH$v6whG*Ri%Zqe0p8xz8FE-gkiA}6nS|WY=32?wUFEX^Byjx!4&C2ynz5&TV zsReqQe${QGjM#iG@YK0k28Or{gSe0+@WCpoR=*vkYLzV}Z@lrwr=R-B#`<a}`xJsi zRQ_3NdFbKD+N}tZLO4f2FA0TfSGB{LSrU~;Um`sNF(Q;Chz=Ht6DXDa#E!}|N`1#a zwpa1QkwSs9f>Hx|A6>gZrrOmF0vj@?90AI#bZ2*?m+x)aRg7mq;o7{iR%+C{Ittb0 zWgNJN&sc4=7D1S3%RZ0$s(q+-Wo4sYAFg*X$<mVI2Gaz5lzwo%Ra#wLx47vO6g9}% z{}2Q72T_EW9N?Bii`qZIq;kqYnvNcCA$C_gySl2yp@9rYqbVR`b+>Zls}HNo3-eb7 zdh0#)^8EblGHYp9)3>mBqUXkAz^>8_K~TPLvd)6wt<QY!@$soEy!hHbbdVQ+bd|!! z(IdNG_0ki2#s)@)2Zo0F2L}2Y^$IhLjArQYHd$E2+(M8>ZE$M&3u{@$nZQ4qMd3+~ z6r~-hVZt^_iF5Jh0#hXddywXZOq>YPdqX|qbPB@QKux-qgD3}JTs8NOVBG4{EEwEq zEi+kVN4&(woE>AseNUdbNR<dDlG4zU5?8_$q;t$9=^{H0S(36HN3_K_iF=I&rX*b^ zeugdbCl;g0kxx+s5-gkw3;_8&vq`~IWRl0A9)2nb^K+6Z`y|2o#%8s;+1tg2Daa+u zmJ;jltRj|W+sae~)F|EPja5Dsvcjyhy<~93<IYqqidQ_6HZir(;#JWpQbpKKXw;3( zwLUhyh%c1^1yAs&kn+Mo#!QWI(a}jl_`od$M~D<10p$w@jCRh9Tc+3|ntZyD>}5wz zB)|Xi*Ds%gVN9;$Haf)7ZNKdCB|!3|oPof{mkx`i1;00^+1x*e?vQOajVO<Qqs*wx z5LyNj7Y<`|-{42Y5rS(Ok8($S%pj1%x4(P`EE!ikxBy<O{#j4Ro-f5sz6fADRP6Lq zU*TC84cp>SX{v#`3UFE?+5jzL{R%h9t^mr1Pv_xOH<Qh<VstbxBiXkK=g*#{)bx!G zxP)3QM6b_}|LL9~q9s!9lmm#sD=rO!3A|_eAJ}3cIuV6=-J0F;I*PUKp5fm9!U1~t zRJCq{OC23mf7*#i{Bq?seJo%lh3Tx70{wU;A}xNINM1TSm<S))Jyh7c`|KAUd-}<f zhfW-2jdDn~#oVi`1Yfi}v;ifjU=?$DsdeGP_>)gP{e?%L<b3AL`6)J)Sn;DguHR!G zxwBHL4%GS@bmKbwpfBxZyzH6QWhi;*F;sxQDP~Z@Cm@YxYTcFYp8k!&fz`zsUiv!q z;HRE>@Sd%DUpEuEL%Z0*fHehu10(f%gD(YlQo=PTO-|}5qQcaox_n=acuob|+DLy< zLb^Li`%pKTbERYJ%H=cnf9TzXO1Xb%pi(Y1nX8_f8a#61=G*RCVHJgA`weC|6jM~- zVg{5okL5jw4|a4mwlI80kp^;p=JMrJC&w>e+<)*;Utj;?($XUz`Ot&MuYd6?zItJ0 zl_m|Im04eqL)}n5!f#OvJR2wO@ChykZOE0u_}q|ONmEh*{7Z>#5T&*>sb|Va%$5k8 z^evdeXGeIoQDPKdFw$niNN+MClFS&1NOet|xe%|pwsFUuxBk^%|K)4G@>^EcI!6y4 zUH3&rX0*3jOVd+lp7_V#@m;_83;$|)*#WC%M0EsRspLnHOgDktdLPwTftZwYo?jC~ zI}+LvIV^PKaR;S#-kfF|YaS6&<~PrM%`}&ACG4DcqE1M*nWk|y*=~};hqs2_!!_XB zc-c>AxQV=hCV;^nRE;r>M<=XZzxC!Dc5rAKKDu}B?!xAid<2oAk{UL$nkTDs2ysNE zm2k;9>9AnHKY5i5RU`duT{wAY2oc!@{o;q5T$8%<erNa^urGc4<ubO@+kr2QkJOMB z@WisZF~+JNb2*V5s8W0+asnjfP)p{_4vU0_G?~BEmCYNjKlZ^7yyw+l{krMpwWG(b z-*C03&P+3P=8=0|@v0a6$shfCoe>9`PMt(eX2A}9XY~cCbWWsW-#%0;p`aXo0|1FZ z)7%+<T;*L<3?^a?e%uGML}uv{*ZH!a7cxZ*VWG0akYxNPT85P*JX=mPhJc}-cL*g8 zn^1>;w%WD5hi|;N+4}TjkNxT&yyZXt<oEd1F}~?o=v>>V{PrKc`K|B2@4|AuHnewY z@(Mbt*1DGGmkMii?2s%<4nl|%9qEw48)w);DG^CaNatf?u~eu`Tv>2RH<$n<^de|< zHc~@iT?C^{YA>!8&s?0WmK*=+=l}D6`Q`t#wZZFTP_P>Tg2+VwCCOxzhx(363}Nk| zqYS)8op6xJuiBUUW@k5xeCwX6b`w+@dE`g5`4KlZG-gl9T<C-Nh56-X>ou?W=FKhE zJTiK>#aF)|V=<=FD@?{$`DoOYnUz9kFP#}`6rW}!G$94d>Cf_<{3LW13Jg!<O_=f@ zzUfc@^iTef{SKTR-~n&Q00<+u$OE7fgB4*3F=Z19aLnO7|9Yot5Jp*jtVs&sBGVS| zo!9`qDTztWNgJ@o%O2>w%wEuq!TH7Y{#`?U8(WN_w9T#Mg*kR|_}BmD$2;jX`HT<c z)4J;74pI@_6T6u4DrhiKV!XOlsMh2WW*y)_&4R?(kuURo)3<zk%`RL_$Ez+~CDazn znPZxsFEI0ZC8OEZrN!QQpM6n~C_3-!(=VWRiVzw%kYgW`pb!p3K&;SLQGwjV<hV#? zP7Zj=mYsSdYLI*N2!{&RA}OHNW`G5|=rs*6%#3uJ!Gz>bz$H{7MQI(=S7v|jf4qq< zu$^BHAKh3e@Et65{_J?6v;JGZ_b2r#z4$;aR{5c0RO+amIXAJkR{Z@x_)As|vK5~E zNvKpT)t^2!P8Ek8L5)q4f1ntY5!`@-1Cr<u)Rt??70L??p%`lm)uY>}CzgRkuUm!K z!m&Dl4_h2QFtlfEaC3vcvjxIVuulQq?uw1K*Vfis%QH+Z@&PNht$>Y}yyPy(z2we2 zM~8Pk)-}#D1v=Vq_`&ZT>D|~`oh@NQoWEn051`;la0Rha=MYRFMc6u&tp$nW%r!LZ zB@ZNfc#moPQ|6A&7RzGsuQF>%BZh>80C`jk%GWSRs&3397{Ab%7Y?J%2S7kXx>gA{ zSYKb^ed^9eZDW}aI^va^e0*)Ib*jL(khL(`ER>=7pcyD-(IZ8}wOmNvlk`(E2BqY9 zYdMT!E{maqjB|5je1QX=q?K4rf{-1AM7js3-4qT0Kn!HunHWInj&rCPtVRd_Eal$h zah}W09L@<yo_HAB&Xn{g>j^ERhM7gaEyh%s5WE)v03ZNKL_t&pt{+U{D;$a4aR0VK z69YO_<W>cu*8voF%g4b3{dE5ENXuW?SVSC&&vw3uj3h;rLQ+*g3Z=<GU`opFIc|_l zw{PF4Kn9oJeA#P|Y(t4HNJ-2<+z_S|gbwm_t{N^evXf?>0RWF{Zd2s5&LNu6i3qPZ z>E`Mq*#HHgYix-}*uqi~!%s+`?2AhRk*a^O>qnFmwMnc@aCP>%leYtSmh5CE)rSh# zKGrM*@cmMyquN>M?k=;xKy!@|%Nj1^4#>$HSVF`^j-x&o-9U(}jBR0tu9phZyis{Z zBf@H+bO$Ugjx(2A>rk<LQ1PvAUATCGS>U135k74Q3pSc^9^%_Rhv$U<gd<8&XW&r# z;oPBNc?TyGf2z=mf>-F&p-gVlv=KyhhDdrUBA^RB)3W2dHAmn^Ctxww4k((zrJZ`T zU>kt@;!34F{JdMHo;?5VcfIq+Z~gJDRXUB(bzLIw3@~xZcOhwWuS_qUId$gIhaP_T zkw;l3z+RK<OLUlANx+WNg-TbYznhmVc-q2JE=ST(iY^5TfFR1^!XJi-EBvY8I0*O_ zgStRrh`Ukby~&PJcZ2N}y9QaEu(iBcEG}&>Ts(8?b7#nd@SXJz)=3PH433Nq4e#zB z+TF#gE46+WDRi*;Q%5Np><)SawlXe#Bb%fh*@y37Hrq_}uU5gh$&$E_z5i{+)y1yS zT}+uXjOB9%9mVRazxo@PgknP(xrbRMq+CO2R-@K8N_``*{f-|fbk;ifn5S=8@C;+& zFaFOTT=>F6v-K)#ANT;|WOL>3{_6iQ$=%1NAV+ucP1<U$q4u2iq(_G_X+P;>Icp`a z!LF_Y8AYZ>LJ|zAAK^@}&G+U|nmcOohgeoxfO24TA13Hr+?gt*#YU!yGFqQdc0Gh5 z*0x7V4ug>c6lCDX1(0a3vU4C0TsFl5hU?*S=ArMf$+AFJQJA}2>8SKkBH5aYuU50V z0D|-<fs0Jm)R7tD!JI^i$Zv`Bk2qB>Z{7j(tfL*5r=zszKCX$+;Q`KqTsQ=~1~lTg zPup<Yao2{nwQKo{10gIU+9614rD*f4=!EbDY?vUpP)ErjQhi8{41&v+-&>(3yWz$Y zDK?0hkJ|%G5Nx=iaa2dVj4AF=u%TcGlxR0mjtD5lHJmG<(NUORi@J}u6;i$|zX-q7 zk#Hu6pq}d?&y+Kg-?y({G$A)sKwbmoZ78da=KnsBi4TK>K%|>;r7uAZ5XD}b7#}!I z)Z?XRT!J>yTS`m}4lKQ<QeX=sqYVl~2Ty=~0g?q)u^5U6)P>C<wsRdUEH1Mn4YO%c zzlZPW^$B}Wwcd|FSS@G<u{>JBWS7ebSPiBewkB{9KN-w&q}+l>O~RE%5EQryH6PU| zT++z65}35y=H!YxC-9KbISVnX4}D3k1O=DaMf2az4O;5Ftx~D6>+mfXTg^Xt--9<l z@4@f+y4#zJGo5{V{^&2>|E9NpcBQj>y<`2R8~6A247}q#A09n=sN5J_Sy^uRJaDVI zFxy(3VfApWXNW;@O#9MeZZ-MZ`TTT|J$kBL)Yo(|svBL+iN#Bkv&>0Q*Tlojq?a_P zgDXp)vY;pXtK|nDKYjY*6&AGfYO5cE=9xS+)Q8%L9*7+cJDBF?WFuqqs=A1w@{S6V z82((Nu*slclQkl(Ixqb}9w<j)p-yzgZ90)TkfKYg@o05S0yc(Tem!n>VUC^(69n{G z=r14@x~3YoKLRGc<lAhzD}G{6gvlPzfs>#VEi|+OB$+hC!)~V2Oln=&Z_!iWM$w!F zP(0tZu*HEBG2#{WDM`1JVcQt=^o1CN$URB1BODn~gJRj5;uN6(?xK}e4+J>bd2xV^ znDEHXz|&I;OlnoTx^Q6h0&*ss*H;+$EtJc=uhwL-w%r;#btnU4!6fV<AZOf-uOza1 zm4)=ixcX5|r2}lyV*2tQPXNk{Cm9TqH%pFAp^SjkN8Tucy{-G2Yx7Hsb96s!aFLMl zFY7B^KEPbO)(;YplOJUY-9y!dr`iM#s3Fv$Eh{j_(gDoqA`OT_1m!}7oJ^!t=A5T% zNJ5zvRrUvcaB}t_9c13hhbA@$Oa^fwmX=oD_BZdN)WAGFI7n$ttc=&KZ&v8rR4X6* z<o%||yE<V0B^*EiW^kbXws(DkCwJmT7<(7KzzeqC!2!npV1jzk=E5x)08}XE<Ydbr zh6lUfL4;R5GF&LyCw+vRvITZJKe4a2)c87hd9%N})>>PPSqpqbWEJLWm~lkN9wu}; zT1|Q&%qBs>Wgj;k-%H|XA01ihUd3i9{^r`^`s!*&Ymv94;U5+?2|raHopN{uCF-<F zh6@D<wR#~3VBQku6#p141F-r)@D7)!;QX<xI4~g*L<}lTblAk+#$W&_?CZFIn>Zw4 zw!{Nb0WS(aQqH$Otr2j3CEnWHJvvy}X!5QGUB}d%Kp|k0`(;SYoW)0?(Q+7s620g& zhb>Ig(&6n==ScZEs~k}UksYonQ`Vvy3H_4d(i~%>GLmVqU{rv>tj%rlf(Nd8w#qRB zPwYDTdU<QlcX}e5fMAT=!AdY>bro#jzI;Anexb?t?gOX1z$av+<pC>+xP?O${(!Ow zMU@rSRA}m(^?@$7$h1ufo&d-X^QK$Rq3U2EuoIzf{1-0y2c;=U$UH~lh>Tg~8VWGS z|NBE4iCUs3206+MlrxjS;>kgRLtsE6IuTYPLg>Ejb8T(_%u@qzJK?H8LJ0;%)hXf^ z5{ouq(T8<@)O8^|6itaCi>eVxPD{nhoGwB<BYLXHGK<{H#lA+Z#=YBt#z8Xka*kZd zvOy1v74CJudBT@c>db4FSoY4U{M9v9K+)z`7?zTiI;2wDVp;#>m4&mX&!0QXNdLn0 zmFfAp`4-ERc*BjBwp?y>clGx5k1*M|Yxl0*yGK}o)Yo09)#!&{-FkKF{Q2`N^4~wU zYmF66R3^+n+Cn*AQaEIgOI4saAyY~)(iHTY<VdO@i}&W%eb9msh^ntfdCa;GbpFf{ z<_S$e7Lag&L>P+Ev5PqDf`%E!lZXDr_0PZM6Yu)Shd=hQfAPa_VDCe|tIIn9>np{J z<5R2<_}qh^f8^1}PM<#4oSvh4kM1lFW4dd-)k>{isj-D@jc*S5l}2YOGInF`9%7bc ze{_OX0YyqF;Lf@iektqf0(Kn4D;>2bohN6T?Lu`{x_9q8HhJ-x*244;{m8$%`|cOt zd+#Tip?LD-(-$vIOpKqLI{A4=_k5?M-c{-y9q_gPT|-P943G8n4%WJOUy-tFJ?V-l zhTwM4WsJ(e&jrJdyH{=2It!n>?-N&^dc4ABBfSGWXqub3SeTo=>7`$F;Lwq!)pefz zP<vF08*HkFN!0{KL57%ZW2pnq!kQ&sB<4$r#f=sA;^fWO`HAsLy_atxtdEV(Ts;5w zKl{T%XO&;MXK3$%!v_u@+P8NfUxZ{GTaC|FTRqu&xJMH0fGr>u5LB$TWSxt?6I!GM zIktoaV@y(!LTPffOrlkodZnllOFVVDFMcKmu)~8*XsRL+8eYvR6<x@C+ZbZaE-|wj zj)PDn2pzF;rWDHy^;##-YMO2#zDh5%*s@%*!Xz420dh=<LhzjM2J;z>i~x7Rj}j-^ z>5@VHUthjht{w4NkV_JLM^Z%XywBL#8I`z841pj^63`%ONg-8?1;UZg7qLmZ8as{* zbzm^3ipXsv8l#9$if0jZtGQgNmyaDem{ANQfI;Zcfqk@~8$4QZnhC`IkyV-j7J<AP ziL{hE!9-Y!Iurj)2)TkF=S)-ykt|<DJyNbdwP{`*9gI9X?b$Iqvh5^AID<vDl&~}T z*?5TI5GIAP8zVjP44FKl#9&!UJ4cGi&XF%akq@Y(XD)H)$u1CW5S>vrT&CNzPET8< z*;GiD$2-=Fz){0Q&&e){s<-!)F&oSU6Pj=*c{oh+b0!I5(HR7YaCX?rM&>*sk0-0S z^R&RF$OvyO617Um6)A#7PC?A5XA$EqQ0biA6B&8DB@kiH)OEZr-!pRH#!G9>pZo1M zzwovbM-LqQoj1Shf4=!`GwYpqzx2+Z`RN~e^;ewu<zM^TcfRwztTbo8a$20N-py)f zaq{x!^vrm*tG;jl0k(#-JH<Gm#8SRz=4PiD$?VyCu#*>TXeL`rXXhu*UY=T8FYp37 zy##27DXemlSoVTvyDW?h%Z;~x;G;_$#ozk%UwPfPeG~JUR`|m3Y`~Rr*3MYW8C(W4 z-0`S1Rzf@dOcf3?9|?qQZD&y(?>R75;lpb$fBCnbn^@KXY}c*jL&K@IRc&#E;@YN= zv}WTgWrelocmA_){cpeeBlB~trFZm&)Fj(xa32Tn_3=F8TfX)C9=PXm9|VwHIjuf) z<Z$NjND`uXAuS+eT;HSlS$*SA{p`Q^7vDBNyOf(>MgdSPI}c7xBQ>xgW=tJMgD#l9 zEGDZ9Trco*;>KwvSkMJU7^4f3%9`0=fP9&6Av4HXiO445-}Y@k{*jMASgkiG7^xY; zkgID;#pe8v{q!4t=4ZZlex3){X1BAWRbkNHrR3=9OVZNEEc|=l`-y+?J#Pq5nKjxT z0X%55cfRu-2lkDvtuxDlqyU8K;+Y|+LE;<%U)@+Qe)ZS9{?wT(TdkFj3L6&ilmR2J zGk4%u@|;`YKp3439detUhz_o}Cqb{(B8iGwB4b3TiAV~)M-d~QBksjV94B+cDaKJC z#3|#j1EG9AfC*7jbg&{Fe|&WaV~+0H`@R3_4ZIg0>n+0O=!`;TmjvW?HeEg`Zg4r( zVL3{T28s(UChR;u!~f&?Mex?aBJc{EVz9i0NBwll>B0xkGU*2a(UJ)HVK0C13@zbc z4ayJ;S)m9thNPEIx6N1hQILjR?eAmNCp9LkMer^RY5^6!d3b-z1YTd=-0CJ4n&4|K zPF1=ZeEYmoMQ>o<uya?0BPwCOaRwCrWcfu8&;mkvshQO`GIB0OUobl4L=vOthPB%P z^G9>3cX6W%*;v!2*!{P3=FmpqBi$qS0pgNz!AfSW87Kls(?%fO1)!<W!{qb_kf^&} zU7IDFrrf=2n2pXhH(K#%#u#u)8>z^Yd<u+`60^hu9l;PPk~k5cinLj>LlKB?-$z!F z1m-C8W(R;jF~szcnN$I!f(NHR!d@hJ2$&(+A#4zVads%*WMhRGRa5^3hA2!yB*-Nx zaxp>;#kqxLYH=ztqXT<Tlb4KU#;JF~GeGzvPN2Gc%BT<spo<Ll_0R&SMS;U2i9c8u zp}^!)K7!t4fxr@o5G`(0su)CtQ{%ec1zuC~A4n`TS09PO)p6T*!BKV__#&LeZYQQt zHbLOcRdq(tj}s!8x}9+c>Z{{Jt}HdX<gTQAwpxJj4=ziIqHD;gtx$`F#3<6KP`LP` zAgZu9qRz1Lpycw(9czVF7MA8_=H_N*uguQOOg;UDhiS~{{F1{`7<)dc%IqJ+)D+w} z^-FJIs}6ZK-6_)(t5gfT1$y6oXW#jb_kZG(_ntm;VP$T?6^Z(SJbLEHinr|B3jrm~ zd#&8Z(67IDXkcK^-m!gq51c=Ho@dv~r!Q63NBRc3*X!lQj@Almq4WtwR7wk8l1)hi zJ2kLABUt!@6%WANsf`Fxy_*Zt;!3Vagw>qs#s&cxS5~IAqy+yK8mstZ&lnpM6GK}k zX!!c>+TLBGyPtpCrH_63k%u2UeCXh3?z#8jhaY|H(Z|l7zp%QnOryZcNWRV6*)?2k zbhG4=l>+Yl!t-A`C9>y3Y}7A{Q4pM+N!6#E$Vd_%ONQHXA=WlrFQ?M8^-=~Z9laoi z@iuUd>B(Lh+O>ajef@v@-tWKaD_`*)-~BoqhA&jI*WtvK>2v2UJn`fcd??|WXU?$s z!Q{!)lV9-V3?K5>na>#*7#SNK+cz+>dvIv1-ZQ`sw6xza?B`Ho(vl7JSxz`{{+ate z^j@~58XO*`nQ5*rPESpZ969ne-}w5Cj#{PMT4^?U19o|3es1a<-A$RttvFaMHht+W zzw^tif>hd&iNTnD(!rbd8#7avy1VQBgCk4L)wP+4vHg37_a2#BSh;lh(%Dldi>n(> zo!1*|K7U}}UXI<ncMpw>@HHPM?AO`Qn|6d(zBgj39&1K{;e`$6&LNH|DLp8}`kH{1 zw9gz+r|UA)B#?8?f?}NL2U+9<X1R2fNRpT#2w}nu;bj&jtP-vhv%FeL=LJM4O&s>* z5)mogJ7C1`kRmxOz(%Bv!^B`-tu1|<a^}(f6bO-aNr+6`MyEpuvzp)>bh*-NlY!(k zqPqG3Lq<YgB$mzzN-7bVZg-wjQi@5ro)fZ-&A=C9BEuV!5)QrP1wZb?R9FoIl9<wk z3nna~7AUb3VVuO`4^ZvmB^ssBi;7%ZSv<IRXl$$>==`9JTgVRV-$Q<uR-$g2Me9mw zdW71!hRTc!^%)Vg1+)XB4dq8LCbSvahB?GQOmLV&5z{`IJ-Z2xGngIGJ3$i@DFzS@ znc#RX_(-_wlu-&vu1X+(hG<802K}6<bE-*3&pFb>R>&K%*2QWE#JX);6XApEHpedn zY%o~~q>m`L#r&2tdWtbAiZeI}B$v9P)L|^<1*l}L7|pIBEK}ZzIZ+gq{}DlyaGDBC zG{K}K=7Ul5P|Q+Hy2;S(P|?-ON~@MYPA-XqE@~Sw2gx8V-K31H-EqVqO9?79X^BSY zOK#LhvB)#Vdhf{a!5c3<wff_~@)t*s?Ejm${{u@4{?pI@=uf}#pE0Bd$wxl%(L$}k z0NZ8aZj0+0V|FNm1Ey2Kz$~xhidg9Bmuu<H7t4!_OT3bXiaUyxj#~Gbi<c+o7P`B6 z2JS;>br4#LmQd{~10(!O&*z>z`@WCed;484`=|f>wT=e+t<7B%MYXnBrdQ~2GYu9~ z0gJ&6sZ5hQuahhG>MO5K6!?O{I&ZDh1F=#DrOLBjRd@0q%Cu=tF)G-gYNQL)WbcpS z)?F{WrN2?=Z}3p`xes4J+$s$4V9g$_10^T~A$nvQ#Q*r&*+@1L06Ostei%9p^zqVn zH<dSuHXHb1)CD4Bt|X+E@9?-F<D+w90(qkHtTTS(p}Kbj((TT30Erb@7M2T7oqD?3 z*F*CiT@4fI+OXcFqtyDwuX_bsfAUge;A@|vO-pxjh1WPrWR9k<*XPO6g4-FP<0+GF zX-S80xxcS6GQ{d{U}O-M!tXVfF#${oCjVV`+;ZxP_inV7%9Se5AnXvauOnF0Vi?i) zKODfyh1uIj*q4)1c!_{a1kEsibd=IyG!$h;O#U33<tscW;e;^^A_7DeyCE!rfax40 zq$V-Q5G%ZjK*?;l)H$|q_liqLvnQ*#Hjiq2UxNNO<D!HYI@C(c+vpO$eHz0vOazXE zP!cF7`lpnwAckJ(<^csZ-{XMA=o83d`pLIUfu5&LAmGt39nDU@dg3eq3w9H;REN>E zP*EW)=gl6LYWA{WryrS%&H+-Vx=PpOUlT`-3Ufk4{{}p9gOrqA7Ba)CKPCa~p2CDm zinbOEib$-TRcvkL?X5i%m^LFvs6h*bskEzyXV>mo<Hg|z!hPvl1{~MGbrMD{Qzp;` zXwpd-K9FSEB9Ro(nJ+n}C^DU38WtC|n%%wi8*VuIi3|4&vb8ljI?Vcx^;XMmpCX^` z0S;&;YThVLAeNrd-itXgmI66cVh;=kU;rp<F|+MB>=lEHy1`l(U3v!%)RlVCNq#+& zXcUzmASO?@1c)$5U`X)FKCEx9v*M$>tHy**I9p;OsSs{pLzY6jQuAQ>Kx=bup-Hzp z90fFyVkT**Ln7MzM<D!wG@DZn6&{|Br*!ebp?Z~(sTvN}B$?xiAjnim#(_js6-dP8 z9pqd9r(YX}<D|?;N^pTW7&MD8J9tdtFjb`PIPC;$M;j?Zj^|8gM3Tqn*94u>%<|@O zS6%b8ETe+7)3=c!J2xC$9p4~059_1V06vsUqE(0!vXnd*8v^AD3z(on;!MIC+ZHb^ z^A-B3@yYSamnX+Bj89ycpPDQzFR)FPgJC)Xy^RAmKfk}fpG^mO-+&GE)VyAS#e6gx z$ip95H9+gl9Oza@ja6Xf!rR_;?{EC(|NPu%AGcyDHTdp*??^w}pR#I^K?pO~@SrXA zV+NE|BfQhVV2wT4*<oaDc6N1o>cTVY&q&TkA#8Y1{_vaLT<EJ6c8~12<%Ywz93L6! zU+dUfVXqaYLS+WQ!r{@ISaoc5!av#w!>c&Gi93DKTLVPIIlwaghEIYfa)&W8ctMFr zh;0!P8l8`oZpG5thTG3{lvXCE*&?=3>G_$T{g11Q&B8Koc%qGJXSGou=&SK$zFOxa zlx*<J(+ag24-MS@Q6_9(Z6t!pbV@`KH<~XQiDGZz^B;9$h2R+@WzAivAt}QCvh2rT zR%h8Nm%A9@Po00_zx>iK|K9Ka$}A5G7*dvsV@z%A9eL56&jSr+SzwQviOFY9J<Y<0 zlTV&Hd+x&2)VaCK&z$}|iv+5LQddXcz^+|;#&+%5vv>c<*jT0FsyX;sYc9O^?Qh*$ zT^u^FpKmC!1Yq*=dA<=dGCK19_rG^)dWl^jmzNecnhS-Mg~IZ*OOt9WUX76|yKOZZ zqr3OiYdvfV)#&P~RYl8N34DJ0<jKdMy!TUACN7WeJvuVF=VEhd;_~H%)nd=U=z+a^ z_>?d04XYU!S*JKZ`<Z*s-M`91q0K_Q&Zj{49XNRC;Nd;{_KysYb+H9)iEn2zvf~Q? z_z{&YHKk9hP$aD_RWDjYyBNZ%&H#nTW>BSbYd4Fvps^ej)2z2DW$HE4q74UB|H4FO zFjshxrAaH1W<dyyOlXA5MY)Jv5(FSQWf(8Q(PamFIEdW=jW23A;ecHW7PV|N1VK|$ zAR{tr3z9R^1R^MJ5d>~Khq+R+A^C$=mcAoC(gI@VX(w=sZ|6;cq?C-TQe;O)Ccphs zSM$Jj;Deq=EJsb@z!+(vH%?hqU|c8`4QJv+K$epc0x3qvjS8*hqeqUhRBFc&EN&Hc z?Hc2`4b>Lg5IB~KZb6be2M$gGZ>BmeWTM>2PG~+Xm1{P#UX3Mk<R~L^`$oSAvs@kB zPQNBvg7Fh&pl#=F2U1>cbC7KcDJef+%T^xW&bK4NU_!YgGL(Q3q6ydA)qcCU2&ivo z5s{Yo57u*jRbm_j;%E6IQ$m&WW1~eESbIaj;zI5)fSI|?FmRD4Qv=e32$(AfC7VTU z8=Ofou^%J@Jj2$;X}b#+NpWPv0$W7siZZh!F=fzIQetY6GO%Dy=!{RJ0};R(7TSJ$ z2gOqF@V@2crB6Qc)IE=$<#nY0@E?Bsr+@NwWMxIb{9@rV_kX^`$B$S_E_dpm&EeR{ z77h7&ns}W{bvZh(9yFT+W5dABOwaTU46~^ruj(^0nVDN;E3#rQ@BceikY{VRXr5ve zN{?c_qdvD;|K;ENll4;PzyG;^%UBO!2>QMU^%;bySfOY23KC<a9vVp_NMf!!B26G4 zG22d22HCOIDmm#u#idYaCnU@;My_0GSaD;m*(`K!+<3#`=OU4ElH#&_s$C|T>6Y;9 zq@wK;n-U8fDNnGjbn=+e#p~N{3^C}=#CIFy6bRCjV+9KF=}qwycLddj$=Pj+y!M<a zBwU6x>F4J_(uT)4flRkOdGZ`n>I1uPba+W2;dM2b+E`y%T<Guby6O5O*Qz}*XRHLq z#FdYl$~>KxQHE%t_vF0*0S<FpEE+9W29q2>I6>y1ha4(OO}KP|am&^#zv9k6|381b zva(p|?sv9CbQ^5=A0qOmifv!`J~<3UR;(Pngw%<uXAc#eLuIg`c;b*R*HqG6DoH-h z3=n#kw)VO+DKesxvOwO;l7XC%CXJ>&7?Uh0{NN#nq-Z0er;3teO+MzfivjbD-^dv~ zSu&}IT&_?N8biG<IPe$Z$dg=$zFqE)MU&I19ZMnyvNKq4BV+Q>`DWI%RGOr>&sQS& zE@ipQOCt0wx$qp0g%0*xXhePAx3z0zn3XheMFS;+GURYH=_Vr{POR=p#9B<zfe!uI zfzs1rLY5H)du>%%R|z5#oFU;=9j8fHX;Ex$@=}<aXUH*`$U_wtddvzGc}P^9{_i|1 zD+~e511g6rc#)kbGoV7P20)hCtU)Ajz+ET_MMgY;9_C49MBHXb30R1ZWpn=ci9@&C zaO{&G^o?lJc8&Fw**Kmr9Y%ML++l>wNP&?PC?pI%Q~3{C5tc;qH{u9@K}gORMKB}6 z0vUq|4F(Ylap9nW9)G4<aYmea5#|C?-8o?*ipT**v&8{!g)j;jhGUq1pu1k_U|<Hk zZW!Fkso5kGc|`$_Tu@@?{Bm=JSyDy>kti_#<~4f&hN=_ML>XMf;cud(VCZ3jZnby< zNgvrxyLfg`jEo`=-0ic3h)D@D8Mo%knZz?0wK+_Sw1Ac#+{KwJ>PC68BLYU}5!=@t zQQH7SCb~OtY-b_F1Rl?kl0~%-a63V_F|~7D69w~$vgbrAfeMFc6n|r}ptC=QV^HDa zEcFn%#X!kZ8zNzXkUsA6Jd3rj@WGPHmoHwrd|`b2{LGc<0=rFG8L+~;T<Go_*u7_L zWcRLp2X^h=!}H#O-afwP!(-sJmP_fF+0$R*@r8KP;}^|Ixwb;&lZK5(=TlG5zVVGe z_u&tHYOAAO>fT-NW{r2Ro2@va4rO4Xn7Yz#RBy~4x!8!^`#|AA>tx-4FEcN(&gW6s zGj$Can4l}ntQMxuUwq{9f|=L=03ZNKL_t*a#dm(F_lD!w-Fe%{bqAN~Wwuvh*I_hZ zgR4tf(`r_t@V?B&xrVpdD8aYM`~#P25*}Zu;ee*EA9Xp*06?wGfzrtl%?W^ZgOUYc z85j!^#CVlzfG+|}E<X104_~_X!NSZE^CPSCE0wPPN`E!&Ccuc4DI0R3TQX7Mr}-8q zs_CDFN<#!EUgak-s&-&d?iu<~m#cGxl`eq%JG~4mh+_)4II)?fYBoYqi3351fdov# z*BX7*{?U)W|05s%&}Z(t`%b<|gS_jTE#?U@gO7|lx5~BJ{zHcj9X;~uuYL_Pa?8uj z$*C*PoH@(;5zjbXaOu*;%NHNN|Kb-4pMyZPQs<MKeZB06Jv%eKG%?vdJk;pv#t#=} zCN>sl*-z;UAOCovSSyt3ta03APor9+clZ9mzGKgve3GZJsG3D?G^qo-ulx3Y{sSv5 zTCQ5EC}A0qnE^j`<K5@ZTwIvCT<Mw{7#J8D-F4;irIp2{=JL6TCOazeQf5b~tKQew z%Nr{P4;<q0NOP?<GdDjsH~Yw^?|bB<AG0#->mC~$+qZx3zP)?!d6q@+r3%(GGOy1Z zG&uO7qnMuM<QzSQ$5*XS$**yAe*3jii!wV_saMXQd3y5F1xl7?VuFhmvSbct)2x~S z6c~aZ1(`63*~21@3HEq+AY1?t;0RZZ9I+NF@@a1IQJ{1IJR%;p5a4+Z-B~fq8Cdb> znA)%f<A_eQC6OWnups^{8WzETkvTcG9uWpYDFMKpM-DB5_CX}K=}hF#+XTN29D=6E zEPJE{#T1cXp9`6Bkzd~Yi+csjq7#C|J!p_F<WMPLGo;@^KlCi;l(a};=5m<{)$6Z6 zp7fTZlOvE0^LVAJytu-8l?^u$kUscwPSZ6JPvMY6H4=aX&J=C1LU;rQQq$26gj|s) z*CYTbH6hG%JnNb$T@#&XwIjU^xaWw^liI*L0?&ziNBVOFa|+p25h95HT4g6b^hk8G z?S=^`tefdLM-3>ob3jx1v4u7`_)#lzO$fpo8YVNKK`BKxgBC7ez4xRl5?`VXC~qUo zRpuhEz^Nf4kuaqs_%`)f2k8*99@fy(lpVb-6{(<aLLe6rDEucmfo3UUPRwSQgbEz# zDmdKOrr9*m3ug{@WY^J^#l@BR%eUTi?2SM9I@<i`8x%hH;ZMy^%=YcyPtQEs1=Y8X z!*8rmsW~vRF=5J@Xi;viH;<pVp1b=#^XMiUk7aL-^C_&Z!M?tZ4z|zW322yz9L(HP z{ZW(Bg(#NRtAoG#Ki~f8lb65y`@Z|DUVSU+ijlFKE7ut12>BI56>uM_2#uwC`5|`a zvAVLd!fOIPL|y02V7nEVk~&Wun%-M3$*AUpzJjr-GfcA0T2D{?;J)3aTyw}s7G>^Y zp}VKo2HfrhtbthEfj{vJQnDmjh_OPoQBKm)w{W9k(}@neI-u?YTp&oN3|FoNxHVVC z$a7s3W(P<DO_3=KwW!OpDm}pOx#xcNu3;8FQK#*r4Om}U-e}I;{DSNH`cuxU$+hDk zm%^b*Ffit`4N+R|5<f_aPq<jvo%7KGhZ%{J-S}5KDj-g<`Jy|X&*sL9i*wyWyVM@v zHsT4qZ_&~7!o_%EWp$xSoLy4+w#oWDcTtcN^-O!Db1!X4Xv92O9E9aKx>N!g$1On( z6j_raVLMB)k_izeO=y!yw&IahApv%}Bt(jVGQKET6eLMi61Sj%Xa3?gyhdAx#u5o| zzzJRG#HJMa_kf;7OpY?jIJ2Y`Q9|_Fm570#Ug$sLzx8Uh>+SD&_tPiO)azZ<Dxc(P z@BpT#ySs}g<G4akf1|-CDGJve+uy}FajV6Y0=<|JEq#i&1l1%M%)<o5-jzFcz@flg zNUO863vvuX;KP{)Ui;~&7R$Uq#6lIevMMj}ef0U}g-cVHE}Wm9I{(_&zMjzx&k3ax zyoL&+SRiOn+m<_oj}wYgTc%qd7x@ej9oJZ@fo`H3K$;5DW}Z}4eptzc7aAYd)-quX ziD||Rb$9_Fd_=LZx^&&Ky-c5x)?!Z$_P!bFuhlzO*}M?peZf`}bEqQwW^Hm=AY&k~ zOD3}&8H}P+hL8D-ij2^(0bo>#!#giyR3Hu#dVci!WIE{N#7t;Yjz}w;2!t%zO_DWe zQD?#mPR4!`-MtMwMdC2Tk?0TvYaXST-o}m(n;r9ueAtDzMI3IZHQCRU2`^-&gvK?v z@)StJldw3NGb6|f8$3$x^XmzGB8SZ|@BtNS1|375f)DxfNOvM9nB<9c<AXyXA}=Zw z2r@}q8G}Ze4o^v1v0ifo^5={bdHYC|!kH4sK`vMXzx96NKwT5Mn%quI8NHoR<W09p zhKyzaa!Pm!=p*=??VnHAx0r@xEjK>pB1^Q)M@^TP7iX_rnVOoqe2L}Z7cO7Cym)15 zYh{U&Dpm$uUA2*2W4p%o``Z7W-2)@L`uc|}wJzRGM+*1q2bDYWI0=}zg0=LZ6$bQE zstX*~^@LUdR8@`c(%asC@4xxc|1dMTT<<^J)jL$KHFymRgnm3vPt$l|V{SqWKm83I z7?)m@DsE}sIWfOkWDA4p)@E;ixE3E%X*QReJQZFj%s1!ndE_&nd$e$D|G^hO|LF5> z>}b?hD6O<X%#)#sq)Ckc-5?y=g{rsejsqYfbPM_7))cR_{uu^R1p%0gB74!99a>Q_ zGsOYhe4U<ZkHr8iRebc5_gwnuJ%z~yzRy?b9%I;9tM{`slgu=r)E{)u(gt|AZ?Ixd zPG#D0gBo1LJ#_rZnhgyP<Xg;9HkX%|>r~}keMz(sBp3umVozp)_e4nZfE9VHXpDgh zbtp9s%7;>a|JeBS_?!RFTVDF|7m;j%<#7JNRnzra4btqMfZ$9JZML>b)!N|buCBhm zBZp5c+&(`&J$-q6;+{|5!$ym1OUqlU>&tvY_wq%atim^|C5DCup}fFHcIOu=-F*j+ z9PjS#$KSemk7RI^k4V((-L<YNTk!wZZ~WKR><VmCFCYL*S@@3T%0{I{-ypM@-GbGP zt?p{~H@xmU-}*m)>&m6^p6;F+AEs_?H3kR2<GcUa)b#A-OP42{1-mpoF*AK(0+sTv zLAjr4i~eIrk2b2%Qjv2rGc#ANutVd$t(KdpcQ?8RMu*3CQ7A?^M#lR4`??xEG?jFh zIWV>3Y>dxAMP_G#^?JeDCd;d4S*!WE&)oZk`|qVUM7s$bj!&|)Kv5xvRrI5DuhVO% zFckJdHf_Zv!k{PUKb;8+hY8%`5g65n4WQRbV!<@bLxdv-Qo-#U2x5en@GWU@m^1!K zvE`79xI}cIAR<5`M#jvL#h4-B(>>>O8*x{`r95U10TNh>+=*lxZ;BQ8s<?zX&N<CC zmMl#k(KUMUvs<VIF%n}}VG21SWhaS1mbgpkR7l5Ge8y?@h8vD+!_?g5vVxti6q8W+ zJJXk}$feE-G#S-oMbF!+*L;~^luBmYF(~>cjCJ751G>4igoWRkD^J>%sf{sD+P)@E zwn4X3t_~%L=R_1q&xI$?lNh`j-?o%lJU|?gWt$3OQPk~)>!*kxhg}ODR)<NjVKMWn zCX30oR#XiUVM$Yb>Yb7!&Ya=dygEc3>^LG;L<cJ-1vUwX5oDV~q!Gw&gMLILWC0QP zK@D!rlmOc2EN`$X3m}Q|8qfeEi<v^iD1*6?gRLB$k!{S1zkMgA<iYY6n7E+1piHLl zB`P*HEF9T;{M>5u;m4kM*Lxm#?bp5_G5Pj)0FFR$zrJ^?)Tr=<K)474;ET(wEw2{# z?%I2vn$!9w%|vS`7JT;fR*oJ%{FzUFhLr{k23h}ASed=^MK_HO_iwGRA3Jq7T9yI$ z0OeMp-0G-o)<^%~uipD7Z-3vBn{NI2pZ|}J-lOGHDIq~HPtc5HN&@Fb@GkpLE)ntx zWN!aC_#hkmsc#k<&TIIzfN1JWIY|1*Q3M5IWiZZMnU-E#I&^4oXqY$NpLGPGWG4)b zpY-*y%#FTJ>?a!3tr~n-Dqao{Yu4;GiId=rv#SOG8VK7X0^)}nk|>_#%rkXDo-v6L z0_RadLR1EXPKt`V=Qv%JO;92}{>l3awHn_Sq%&Yu1d5K$6`qA|tlV|i9otAk95b|! z6vJ&$HHF2aezlJN6J97&JV&M`ivUlu*fKe33`N;1N&KP<+QC2!B5_ep4;>jhbadb8 zGc$Bl7-Z7(<n2NpIp|UZ^G%uP!vt|o)|jExh!8g@rLaRi8axN(DycA45SPu+h>Q~g zGece@`H!mE9CVG1qdOJRqKjzB>1_OKSLp^V6zY2fDVZvWy}ObfWh)O09=SmhuA3?f zM6$XIu0RpXPoyWXuEX#<*6Y|8AU!IFV8(K9C5rwX7(_Qh%LZDx0oj55`<hFXnAO$Q zm5HgzwTtIBT0EMgYY!e)`4mS-y1)8WcRyMych&h6X1&p1>Y&alU{-PR)o%~K0j7m{ zrI8z0vJ61AlTU$`HVV}y6HleCHJ*}evdFG@d1~>Q`Ag?7o;q{pq95(Pd}U!_d8x_H zmg|+y=F4CHDlpIocDXXl!!JfB<Vj5^cKjy=<S`1PiBe(a?Nj#9=gtbo1l5A_lb!SY zDUXH-y?M^8Wgdu-Ekaxb%I{D(@6oVt3KIkeSn5J=ooa{l!T!cTZ`awGB~<4g4yXjA zmM73iBaU=Uh$CL(>KQ;~<YZP@d5%0m9#nP}6Q7aAL<1Rk_=p)L7!31X2W+T=cm^a7 zfjE%nC*>wjWJwTeezVon*X`Rpy1JFPFxy!oXuFx^Q@eanugUx@+s;+wDcA_)88`9~ zd~qM$vJ4`)(lG-G^rXn6#QuTqlA{eUIsIhC3L8?69Fo|<QxJ>@F@?SZAVh`@^Jox_ z2@<c&n_Id`2-XY%C4v0Nk>-&*({h-IYXce^H>z@Hwv<(U_%XI^upGvi?IYm}KDQ%x zgm%y)D8+ObaFC~vNV~pX=Mw^@j-{36{N(K1^wjwH<%#i2Y=h6dz~an&fw#%2jv4B* zJxFig$bkc+qdX<uJ2JL=cxbq{ueVyO#!NQz=OE)%_ri*=kx}z;fjx*|c%PaQqVb?I zAl_|D<xn}pWXj7^<*r8Y&;IPg|K`X4{l<EC-|m}uDV@PEgCrYk(CAEoF={f$yBLP7 znWaGrT6L10WdIh~BvF5Y8u9GGQt9feboKNOjWt&m=jZ1(S(pCU<ugyb?aZD}9lHIt z!?)j9+da74v9-(#abTmfLf(ww<b^?(6HEtnn}JX)@<7A5_#>5D6(5X5v<7Bjl$gn8 zM&wX?rS+|@LZ!a4dG7v)9{<Rv3YVq|9kq_WJwwd7RM`czz(;|>g!^-#2^?OXID)Zd z#AgyI>olKyJFpBcyr&I8iM)BSz@|p5{A3w?x!T>=4;Pxr>4vQC@Yd>CB1&RL+9q&N z=~7p?S_2zcetcb$Tc3Ynqe`Vw>l?b~Q};ae<oW%F_Pat0(9JF02H^uXA9&9PPd|Nb zdUkehadDnO@WSHk%)<QAJPSM6$cQc6G$Q*ZASo*ihWGUi@%e+jdv=d5&tLrXM?b_G z0bFQ#abbFVvQX~*w(t4={YQ@TN(!u}*%fOfs#QLF!}f`ev3S_+QWZ4dl04-Imen^i za41P3S2i|A58QCmSA6ZGAA0ZP#d8%VFg6Oc-l1Cm?!5#1_Z+(wz42|0`NhQv-aTNk z!G+Va6XO#TPfoN}3hV;e)!ozAGcY)^@8D5BD2$gcH`m6;Czw<_{qSSYeD(o~1fAVN zz1rQ|J2*5jIK+k+1N{Si6r5U}#SyF$b+-bht5_v*{^Es;=h=Ys;zo0cp330C1Kpj) zGmqV`vuh_rr72HN$GsvEiDgLVuod^p0gR6CU$~i$L0Z-W!0Tw;Gp`T_Ce-*s7|q3^ z1vc}EfD}Rz*8D*Rmt}G~a_Rgr!%bt1OX6stvsnYRK9DkyKQc;0ydrGJB$l&tq+EMS zc~dzeZ(=E(+jyQk&zFu(xDrh8Bq2n%Hd~=Tg07r<_E0oMC8%G;MaU#YSY~IU0Hj*< zd|=>?MAsibZaItGmPt^Bma2R}dU)u<nK?cgZQH0`GfM|Z(8w$iSWOT7o(PFCHxuY> z&Fz{d&Jqac;Mp8IQWENb+{P$OcC<mCGc||WMyZ0n2xv;WIx$#ER?V{Qh{<T@ENr6= z7-(}%!zn98k`cpIGf8d<8AOq$z*qc-`k@uznbNY9U@ftMS(171UYF~VUpyL<a5}*1 zFIh94qcV()VU=)oiCYxnnq}Q_iD>Zvgcww+QMTI<xxPY4GU_jC;1Iz^LDAX?kqirw z53ZCXQZ0?fniN+_SPjHA-Q-%~PO!*qL3iZjz^u|W*gtx3=G@ZH{LFv(+E@QIv1t4K zANqK)-czbIqG_Th4tE=i^H;7vcI3eR0~gO;3To6(EH&f6IXSJc48bO3gH5^C*PDx# z=G?b@^@}UTmTgTGI=6_FImbquh3ZCi<bS>6{{Q+X?{4(>zUdEsb8wjL+~qPj4Vl7B z3P+^XnvWkyjlv|X3I>@KlPWVO1VW*l$Uu|8GQ(BAHtLE>+Y_dN!XBoF9$_aMLma^< z4sp2r3o`3##r5WaeaCruEk96+bFvw*8T^MRTrklr4{0oC?*vDapD>TUkb&k_0|`H3 zdFz{V+GfZIye_0sW<mm`BbPE^N(eKwfi#EXDuOuFXbKQ1H*hce`hwT^r2t?7ytq`j z_x=aVjlN=unUT=E=i)LwjjfHBzT~b9<IYPPLylx;B5l33ZoJA$!-hyPqhddw#)Y-0 z!4MS8l=zZ8xj_YLP^0jv#7f~MFS`BolkaG)H9KqFc5*s+Ba$g_x~25Ne0$#JRd>;q zGJk+rbWL-VK_&pg0P5H%6_XUN(4i#)q%bN<@iDeifv#nY4{Eb&T^3`lo<-MAnulk} z$$fUuO@=2+0W+F#ZHC|h>+2QK&x_7&7OCr~8d>6kED2+vrs)qs?J#5nf(QD!PN2YA zFrcX=kDEpS0Raomg4H$*2+Hl(ef?K{?bk4^w#u8mt9-CxwY9Xgy3}kgEiQ6m$?=I} zdnp^OrR9bB#VgaZd{Es1oT}%I08G)zGyzpZsq9V)Y)d%u>KC!KIZX4B?*|?}Gd1(* zb=Mys9O3Qd+0JTpX{F<*e)hl2OpmkRu2L=a_0;x^4efjWjk|XZ9XP;)%Ax*|eqL^Z z2E9-ItS41B6GT#t3fzZAMCNKnX;E)wTE}u0SvUEms&Hv_GPV{qlUCsr|A7N-`W!du zNo6I|Cm?g1!6PmL6XMZQlOgnVCk{RJ)LDS&qq6S-uj`Kv_nn#Iv#)IG8ikL1ks%o& zs6<5Oni<xdn3zK}xUn0byueG?oQfj0>jPYXbnzOjDP0~H410<WKhXg}rX(iiQC~<s z)0CDag(`8l4T@HOZ=GisB!pAzQR#?~cgdY1k|4eJt@(vDK0|8P9Bu1~p>rUEv_cRU zm8WSDZ=A8g8mN_3m*?8c#wV^{U{s1791&SeKnqqgXOt7BxXDi;rX&n_WMR6$acdE5 zCk6G0hLv`X6p;g^yDxU$<|Gqi8*nFr1eQNOQmAdX#A1RlntyrD&pQDljCxE?prS&G zl-r{1^D%bKX1&hld*A)`h2_;t7cR6GVmg2celk_7wZ7i{hYsx7HMV>AzR}&gcu3pb z*H^B0=@i8>i@f~OfZz4qTJ@uWf!zgjP>+9A1t?`d-DZBvgn7Z0JJ?D872d1@SE|Ji zedMtp`O*K#limK^M=P~HKFl6YA|5g*m}sfk#F<H_yD26qoKjs#NHF*^KBVW?d>w01 zW#B(_A8NHeRzfj<u(&X@xIDLYVd2chkDmVIXX?+p{`eiY3?JOL!9!w}v@x`XJUX<2 zlD67aO>xAPK2-Rm^(F_r$qwBSE9jg#vIggoEzCeg$ug;}LcOD2Y^_~*=&`3hc2D8y zi!9G6_v{|%8!1;COi{4pRUCS@g)$_Pg_vWsO4s?**i2P~;yD{n78u&vU<1C{8Fma} zDBe+HTk6qz?*Nkv@`#dT9!R?<pt8V)Hcb#+z+j_D0uY2r1l33|PV6DW(z2DQOP~D2 zC;!=rZ*MJz;52CE&PN`2=s*7Gj}$7sd_|(ORN=c<d_=HXtq<c=U42d^*Xlhzy^X%! zfx)q^zJY32FS`|XmKw}Hoj&={J^%2Lwav}*=f_*i^H}gTulv@~11FZ&kk7tDRD)c7 z>xtbdSY#27V&BjYDZw))gyD!*drD;^fooz;HbQ>YYrcu?G#<a_Q%nC3YySc7-F4n| zqNn%%R_U$kk|nvQTC&^{LK;a(f)kiD!!?1SgaI;PAj1$Ykjp?SGcc(PDP+=yfxs{+ zB#ygPY)i6a$+j%%Re5_ky_fs_{+_-6=e)9PlKZ*)od4ddJbgW@?6uckyL)^8^>6t4 zKmBdnJ%dbFVFOJ)&@(<WJhgw{ZMWUl%ah=x`Ps`C&b)H!)t6pAcmB-9vuvbr-n-$! z{;}!lnVEyvA3yrg+uq8jUoW^T$GIyP&tJTBVPRq6rRPt*{JH01N~c#`j>|aD@?p5b z3w4BeRbyy!divlkx7~2d8*abtw%_|tzkUkQ@uAGuTjWCN3n?1vLIo@({_(o{hp2(< zvJ>6KaiyaEzyq4NDkv7OWvv}a#}z`+!VRlj3FE>r7uuB2h+Npzv8hsMZL4t*mBlup z!Duc5)v-6B!ku$Rp-upl$_<xB^-dyLmEMr<Tq?CNJBbx|4e3r)VD%0|_6qVtMBVf; zWhe^DdKjQIYOP$sQspqSLhOoU5`84AmKJ%2a{T16yeOi<FlTE~ZZCEYADDS^=h<xa z1SwcjT2~3yaEpZ@DsoC+GMJtVrRU5K7iJA187C05JtAKlX|72t!T0E6rfq;asgGG5 zY4!+~tgGTUL;R!3*?TGb>`iHPBCR9au0U;Co3)GI!jwo10k8z(LZz%qQ1ghOG$xl8 zQKI~{r3zB3WI48^Xf23T{Zc(`K^v))YY1k-9Mr||O(_<uG{&W2q>&T{1S+w@k+&f$ zRWr-Z<Omr5hziE)FhiQky9>_Pm&zP8H4Zx2EjtoSu6jvkQ>2h;$hCki6O(t3I9S|X zDRl=nh2DQ;b^hXKpLzbD{^-B?f$x9sM<4n8xmPX@A9zDw-!Q})37LzYyZq3%f5XKK zmm{wQ0$CeeM(*5)Y^>dV_Z>V_V38tu%U90bc6|DQJ8s<BTBNOGWfZJ5H#g55e9x$F z;@5ufga4nO`FE@R!$1FXKXv!LH!>iwjq#xG5;o$=AC0wy7o!U8;l-M!ARZcqVvOGa zD7f#puk*bT9$+`iv!LwVj2=*Sciim(S$kJmXnrJSOts#%xpu=1C(>FcOGuAKl!}O~ zWYZH9p!;w;yqo?vu;i*z><{bkAtITSrTOewA9~3&x#{eM0+!@Da}8Y1DlLME?KRQP zsel6jP+~b7;wRbscM!VRfZ#N}^USd~c}wMU0fpgHQ7g*}Z2R-ZH{P-bwhe}GLrp=- zyiG3OzH@NmdnRm2<(&viT=he@wc`75>;xnvx`a${wUXLFs?m{J+|~8&cfI{re&ILS zEQ{}4Z8Kl*hNG-+1u+hSi$N=vl_F%pF*gzs&L}mk%nw6=>=Izu_*R4<%WFx57(fx{ z-*MX}8!fY`0{5;<3(G@8BYbh$-d4fsLR}Eyctv>e%hy`!azYHdXhj3cYXhoG+NVJw zIaC~73-9o`l0*z?Qj{DWDk;VT2`exyL#=b2MSI};@fXQ3z~qT3Li2>zn*^&4PdC;H zvH!rp@ZiWO?-BHqP7T3we4T7;Y+&Ey2rE{(`D1qvo|E(P>FV<8;_~w9DqkR5+u(sQ zYj${WwYWxfb9IhbH-lkHysP`l+`^^V1zzeL=yT_&O%~hiY=7goeCyG}6Vu}Z(^KQq z6GP)8z5U(mtbyP$d@nDx?5sH!wpJlK!lIUju6S7~)@wCX?-&WAa78INclEL+B8qER z$l%wI(|&vK1mw_w$<goId{Sg)u75@wY|O>>3TvxNY+7~ejn_T<%opJ5y%<a4`*)5V znSS)C)9x$bB!TTt(BPnO{u<|tClCqoNG|Kv4-DFXT1=Ft`H=Eo6b>oHN4XMhf(?|6 z1e7ad$bhFgCfNw>6>G>#MdEcNCqY`mEk0f_#MiOBHz6$s;7V9gDpV9qlpW*jwYBXP z7K(KH;t7D>^x2Y#p4QNUkc1RPR!FH80rEgeBDVlr8>3@<nS<5?m!XSPBwI+>7rF!_ z6LE@)QI0?~bld#Y#nL4Lk?jzGp2s!{D@m9i?4`QP1i*&hZYW%?Isx+KvKuLi5=L;D zO@psKZCDTOL^|}_+%};Yao%&N0Jc+u@G@7Yw<JIPhkw9+@&i*d`;K4Fdji)UIeN{} zYY*-}$R_~!LLl4W^8z`haBV>D!Mxk*<|HZSW1(AfnsFW<TN7xWGukxPLC7l4%`OOK zK9)4+UJfVXMvi;n#Y<h^|2KbVV`FIQ@QMDRaqIvr<_F#(StGktLQ};l8e~g~m6Jxe z;YX724Gg^vj*hf6a*R<-1=`syJ5^>cC-xm2pE<a^w!-rD?S;9OKX~%fA9<qh`eQfV zb;sd1+%SG%YPF|pnPo@3#TIeAwbZ1}RfVVRyJAKdIm4Q49g+)9PfB$v>Y_4a?C|x! zzA<|G#r4xqeCjhFd9>@rvu+15ad>KCKf4cdli-XlO+857!{xq?D`r(Wl;3j00rG83 zG!?5f>_i#XbbOhP001BWNkl<ZU{#wJKBls?aAkId4W)UHV|Zj@`tZo;B>gT8DlI;6 zF6UG>Z}zboVM%MESckL8r5eQ%qsDsNVFQC8l}S$T08i2TKl!OA-@E<o5a3lAvZ$HI zPM&zvJKz5F<Ik{<%;p9kd*2=zAKABm^4Q56kDt8p@R8$eVX)IPxX9BR)~9J!Uft(@ zf0J3LgGaA_;7@()laG9K`O1}^@q=IaHD7n<J#VEc;pq~9$Qo0li;jTsCTX8|e8v;5 zZ~>M^#-5LRCkzjgrGVc0<xc-se*K?)%l+?W+IZ&RLFO-3*P(`MWw5&K-WfJOp!Ez6 zP8>M4@9+(`y&2^f7U!>Ay!gtg=bwA_sq?2_UOfNO;@KBodYW%S_rLkAZ@>4UuQ_;< zH3<6d>iX*P!W@0#0^YT_w7k6FNOaRBD(vvXvb)hq-jrZ|Vc+D~RPVqbdu*<<NKTjW zpA*7j?}#49Rv~{;)Ha--Y86H@bqrm>0_4oFHKS?_Ahd=cOIui+aF7~dDHxWee+rRI z(+G-yQcx5z`?V0I_3S`lEhuEb3b4>#{%FU474nM#zBomWNj1Q)jt(4wy@{2MwuO`2 z?rwZ>eRac4m(a45M!^DVjnJqTb}=N3<QIyvsFK^-THRS+zV^ue1N%ozr5!4XJY!<X zA2=|B5t)rFG!u(y5d$!aL>SB3k|HZmN{r7_Y+`XR>t&|tC2$clD|iOJ=!nosE$Fth zsdUpCDn+tLH=w)3noJYO<JcveXmk2<d4e>o_M*H_SOr@%d2Q532H6^KypniXf~>GE z{z4Hl!Y@`eDG9(85NDeSY10;m5IH_5udr^DTu^OL#cF?FB(s9ZG-p`Wl}aX+42;AT zBr1dnM9N>RxS<ReFo`q@M`+ZI1FN=5K!RZOZNa3PgyagKSqjoitFl4T6;>c#c(Gp~ zN;U868#r*y4KFRu{>V@M++Y4H@BRJ%^0A#Qp5~3Py>R*tzv;cQJm0lG|0loV!Jqn> zUvQx;0=XHBdeE-BN}_A~jknKSbM3whmoM_9Vq@Xr_x$;<J20}{!&i&QbWt45HOAoy z7K;joKX-BcM}O|uw|o13>?eNso4)BGDiF5;X_Ym&<z0Hk0ET0On9HQb9;WYx)m9^? zwUeLHak~<7kOh=fG)5!3ve1FF8D&FlW5k~~`P|#^UHO}CJV~4*QndnAD;hZ~kKokI zIH*>7iI=J2OD9ECq6ESgT5V;tnPokNjlJ*E+qfH6f7LM%U%@}PlF;;hMJ`aGN}T^f z>qsTX|JtDiL2Qr<`s0s2&ISZSL*vZlWHLo<w%PY-W#Nr)y#Dav@z)_*1QejexC+E~ z&fTe*e^si2V*KL}hzIfOtS1MaXcV^q%LNoI#tgL(f8f5mx`+B#<`yPKW_Y3nGj_SF z{s|vRjVmFvmS~~WR4nPLt35zjDdkikVctn+00_Eur0Fq{l((LE2HnjjlpEVC?9lu? z8#J$9UbyX{uNd2ROx6zB&;vKG>K1mSbc)}R9W2x}HB!4$sHPwlGgmeV`Y5(>g#w<y zwnvVIlrA$YKq{}JJq~qIP<3U{X!RnLk(?ah1u3k=BMXQ^o98azC||}{1PwF(rB+)( zp~k`>TL$TG^FDD#yEKq|c5q^ZSI{^5k%+wqdb)>r9Je#n+dbpZOX4~|%Z~Y`AYZLw zf?)RInPC<pIp}5BxOwfNsfXTn-~IQ#g$>Bw|IyFzEyV8arLTPG&J&0FyEf-F()J=d zZy_wCus8AEo>7QK;8+Y&%AIjE0YAJKd&)c#G-s<$%%ok(%N7KI)Fvj$t~^B4Dg#1Q zG$u7FLACH25K;Xl-G<N?kJ$}ldH>AV(c=ewVv6-rsQukr$B!K7+J2tRJ^Q-Hp#u`u za8^v#a+P+uV<Qgf#X(>j1F{8ld@nXX30Z*lFwUe<f`}wbspU}1irAon=nV}4nh&mN zA`76fAZ0pqWgkQW3@XLh*<zE?iLp^5$-`R!E=D1x3o0Rk1Ay=Fth2lO%KQ?>z)_f3 z06e=os8a*l@L|iuP~y%ly=Zzcz^obgC`1PacyD8amo-SG^zl}x<+iUWzYvH8N+!=n z7006jocWiz=8OWwF|ammJ9+`Y#A2Ep14zLiEX6Xo_Yie&yc6D=`no_Z05#S^DKaRO zLNt?%4z&bc6KygpwayAz$rMXPpv<8$oc`nP?OXr+`)<AcE?(+pUXxG9pdrdylXiBN z*-_i60PRE5PeG>QiK;Ke?lC!Wy)R+|o^WFFY&-(r^zCN0pBWxxIT7W*LBq(>a*}Cb z_`KbZ{n#&l;j=G|9=>^aY-Yn*s_HD^X4BJXBA3!Z!$iL(Y7S*p-V+^3p!s9!^76uE zW;zCkhS<Me-@|KMy(THzNHA#Bcnf@ZXn+mrcGmYZ^F6<GdE?o0&wTckXJ>}HZajJH z_M5J`{@CQqSl<w@0{DKD3)sVqJ9M5}%PE3EO^ss>`*Lo0BL(}f&?3W??VjlThEQm8 zd+yAoC!Tor@+Y6{Iy1*@YX9i|si}kgLu1`NgWM@=V?5Fm<j~Gy(4^&)Y2QgFN0v^R z>Y{|)0JgiA&7$XLXE&D?DCvQrv5D#FfzdJ2S%XhUR%OZEI9ArYv75xJ^^pZhb{~!B zAc7r{+{*QhAqp&k)G28D2KY23pEO)v#wxlT^k|&-?K|+ZKld-$PxvSP=|5%PO5o4D z@YI<vJn_`W{-A4Mbcpx$kDNSu;?@(_-?;DKk%8e+Z{-;^?ex-l^!4<=`z!y%yB>Ng z-^5~#S>NCo6IN`t!rFi`c!c4E!1iHo?!q?|`KsIs^9}5m!7B@V<)NPs5i(JaM_^BD zGjgZRh{5>mLjTOcYs>?4YjY49+)pDu3b3}8CF1m8TU+zYdoM07Ebvi-D+_b;OG^vu zYs;*UUA%IIk9+d?$kO2X{Py<aANugVV|VU9d>yk&ydAN%HMr3=e)!n&8%9Sr*Vdqm zHvnt7%2QTM?NIfYGhl@ry7QzX13@hd0B;=%ToDl!kK!Q^2T>yk=m3_f=7{v9TB2Gf z#YroI`+)+!=7?M2l>!%8dsJ9S56}<?QszSNGg<CXrDqFaG8)N<n}ln47C3o1b0S)a zocBf(3xftlmV03eU@x^VCRH#+b{D>Ih)YhH8wm<x_gru}ds<jpTv^{78XwSFx&h)u z^mI!aFT*48qpM?9@Puq?3^j;mw2!6Pe)e<qhLg9kW0REvqft`M%~h?#k$Vp8+viiV zb@ugyHtmvhHD#5gmvGmzWf<$1+ySD26gYi^P^>|&ow}3S;t`Ri=P!S}7D58zHR<ie zYX`KL>`AyPcon}QM^YnLG9k1#`kGuaVGlqZ1ssf6$dK+z|AO_f9jT2&w?tdBRVlWF zEUki6k!aWil5RB#9ZO51#H-a2$|SFrXAz-9VkccBSwaDz>|q61j^q}-&_{N_^s`h_ zi3Bp_WK?pJyK96HtX2UD@(Dj2E^PM#iK!A?B&nge<WSrq?U*MlB1ZrNUl^hUP9?az z9~qn4cg@L5FFf}BKk%bZKmF_u%Y=u98B8FBw{$z(3s)|TOpZM8z-|BRM`nwk!ba2L zGsx27?ym3nj&J?(AN^N6YCdsr_^aP>ckkvRts>5wn`8|ULAHAaMnCf86Bk!@-t*q~ zeDC*u3s!PzSaUNL187NWRP>IqRa0FWUBjMJt7g(;e+^?Qr7PkZ%h%ll&q@_r#&2@- zQ{bT+d$#I?Di1k&*49?|c-i&WACIkKP6@x>VF7o|Oiy8}_6<1gO^cBn3r3sc5wJ4o za|jdSSoXOL6Kf%U0IGOO*_=56uD(&PNs}z%l;o0XWh;rzF}s20(gD~Tw!4p*E%paL z`0<_I;oe>cSM=M~8eZR9Tjskh_uc)bW}$<GL%j;6L(qVh=Gr-IzLXnrEnlcQ`sE=A z?*RHLt8ZIUqXdaUoT7m=biiPyxOa|UH}i&DZg~0&m$x<#V{C>~z3f5YxG?mgA!_== zkWz+-Qm2M+r2-gHiIplPb;>6RWHYv)aJD!5x;L4KV9U$PtRZ~$#kn&tbuV3na^HcY z?ER!{St1c;DNc#T*`Ng7Dx-Aq%%CL`-pXOWQ5BshEew+_#)#>ZO6-8>1Oi>2t07Hs zJf~Zyj;XplIoWjq!0-op+^&%iq<5x_3>XzT8|hR+fI*MdWze{glx%{GQ-zuF<9p@P z)8o8;%+M+B0t@dr;Ko9Lu$3`CsPTRQ%PCp4+`F?z(F^K66l}i5C#?BI0UP+Oun-jW zNZeXq*j{7R?Ys?y0`c><P*OGu+^|5?wnOnq_Uh2pMpE6hR%0L`wY7#JjRQw;kj`cY zc|%s40KpORmUpN&&}NuZ+0aQi)-g$gDMG{ulo4cL`eAkP*v*H=M+aH%K#?%Mr2XP@ z{K#SMjJDY)6;EQ6AQm_!v$DrvMh)g?UsA=ZXeFX~F@Z#^uZ)?~xIj?@MAVWN8X7=x zIT0+2Xf#6FO*Um8Ap8%!S8vjls3gI3nS|QjVv|Zf6t=U?R^^QfKtZCq88~PMP-W{N z7bCB(?<_B`XZO085t?L{h%Naf87X{1sl@`KBN*NTW%N5V&^yYDD!$YX5x@h3;JQSP zluQK`BR>f?pe38CISUpQV~$wKXadQw4hZ5|Z1PMuxc8{|ZYoTP)Ojx);a#9MV{Z!Y zkGIJ{?#<~Wf0=-~Mn+E^WL4-OwP72xt*)cj-8_Eq2pjw_bA!S?r+_G$qL+d+GCSy$ zv{jdQ?xQF>@&vG+8u2WuOMEC5fbAPHNy%$Q+_kZCW_xw%>`Q0Qz4{Vf$vP0J<1XEO zr(Rz8nV<iq?$H^RzO&=I3l4JgAq#Dd&6%@Ayc`PQ&nVXvM)?xKWQvk}WZPPuyVA9> zve?%*G&(vuHa##h<`_gs!2Cx%S4LQ+c-3KObYO6Be0pttl}E%|OG{mke&OZEKL7G) zZ}*}7hfZ93;P}z;!}~@i$NR>Ixqs#Pf;;BB@f>4&R7ZL5yO9_PxRYhu1-4rqaBJS} z-qp=5UdB3m>3J5MfA;z9m(O;su~cHXd*a$jUVY~+3!d#Wm5`1hsy13`06o3Nkg7-< zZks1iW<|}l5oZ%_9#_xJUSX3-H0vE1otT;#86E?Ju^sIM&LAm%5{;Q`7bxafva+OW zeM*g!vfy%e)d4uMHpx^VW<Z#`w)y4Tfvh69eEA9=#2OhN=Oq-|CMYo{(cORS$hBST zi(mKE-}K`@`S(8hk*7cO;SYWEqYr=Pna|B${OpUTKl9?JKJelGk+B1ZkDa{b_{r<9 zIePu{zH3J&CVKk^T^%$qHZnPifNpbvaWFA=Q}TD>*cJ;-U_}EnGJMT7*S`G97tWtO zwaGi=Tbn0N+{kVY>^sRK3%d#31v`mAAI&19-u?l{BN&gdA@9Vltt>6EH$^_5c;)i^ zY(Brmrk3*yo69TRtd}cWX&@e$^mY%94opm3bMu}1*pcwS;Uh;5y!h-BANo)K_w&y_ zvw#0J?3&DLIBX2Lw6r|IrVq<}N(1LkjY-p^0}_KKg=0IMmK~e1fC4e0pNR~`1r(Gj zwnQD*lrl830BVjJ>{zt^6;`1d!&Vpo|1{6ekAF+Z9E;VHQzw=-X{qqxS+w95$*b=I zKB#p8x5y-|nf{1gjU3Pm+gt-A7uh5dbVG@DVjZNyP{cY~V#eCEChJRI0{FVnS0zIG z%H;*VJ<#7jh=|%<#xW7Z4Jt=O(0*o{UZqnaTB)c2AZPb%cPLcZvauDM_m(8hqz*Qn znVu$(hd(}?cK*I49~;Rya<nEV7f8t|h@}$l>BlKPcY7-Fl9eKs0`On{cwM0XI@%wL zbR*dwL5e}=j1YB{G>Jw9QX2ue)IUhg9wW3iHSeM^LQBIG3P!F%NippuPPhSUvOvL# z`Ai<O*HjRnRnz0q%w>pGf>3K1uUZ<7Kq;X{yoQzBQ(MflZvk}gkv7OKE%4m(q_K@D zTajd@4%O@%)EBE&)peXk#}Ck#dMxc?L5g6Vh*)wbF<Bx6Jk%R&MGV66TN{#wo^3%% z5oPJ%*mZbv-!+R1$A9S;e$9?_bgI9Pw+?MtG1NBSw!3uttH1KD{WD$c;fn3314^h& zc3BLO{Wf)1*I)Td-}7&O{$DR$I`>`Q`RxbT&}w}?jX9RE2LusN3Szsr|KTT|-5DHt z-(UD{D@H{3Gssjos9@qqt3pvqqgApBn`lZb;w9GB4B{FWLUq-X_o(Uf=(eM@iQyN` zi<%``?KCZE4M?B_03TLf!6{CjJQnuO(MKF(mLLbH5#DfD*S_gV9u{zSU^`ong-jNR zzjSGl%_30>g<xEUi6z3q$3dLRKX8gu=tq4ZeD0|H&`?>Eb;6`^YA^^jrYKr!*JLJS zjAL&&gZ@G%hi_PY^bs~7n94^kEq_N6ESg(cU`K|B9=bR9IfZ+~YocDHyvHb&gXPji zMoRm@rrSmXUS3#Vj}Ks$2C=2VHTovqL>?FP?L7Fl`=0*vzuVkcaq5R}@%8m9BZ>;4 zuIQ3d)ySn+Y#k4Y@rBaOA`Vz8LV=1eeEbk{x)B>~u<uge*5ZXPyn5={i)T-FEv>jw z_T<3>*FV5wNp>*a;sZ}iWr8j{M*GgHSqPFW>Xjvg?YtSR+TG%<{hm#xtBulufbQIN zs+41dD*edANmS~by@X^sdU5M74~Gr(L7ZwZ;MM@qHB}FuWP&42M<k-h14VXN=u%u} zW4(odcw<AkFu>qp249mNA0O>uPbiWc1TxP+?`D^$uWBsH*bM&AhY&P*d4vZsSvlfB znsv+F?CU|<tE6XM({NQNPh1$yiOZpmHvBdk$`Ut+m@@?`P>1OLarg?8PeeqGb-=+) zT3@TAHnOLJk~&bsF4nVf104ENZ30G04AV?h1{rA+PjQa$E%r3?o7;RLYwfmMPxi7p zitX10;<40v@AlfUYY$=!K6pHYz!qOs_An2x)MG=@REg!QR^c9L44SNpD3FupHJC9S zIo{x@N=YaQ=XM$*af}k3b2V~&ID%<eQCcjoRh&A7lr2bhyJz<Sp5FV6u*N94>yVr# z4rEXXqJ*V}3(U=}FfPt;DG(_bgewH8r}rh$w7EiAD6xYi)R{u$4ywOrdUBK}Zdj$z z&5okdF_0_gmVSF}!DAXZ1cb8~E?Waop_(J)<2j}SmBKGCF#e?v0F(b^fp*bL)QYFc zXe0`g$fhm6nB{BI3NmEE*m!HdQjr7-1m9y=LF+(0S=r#O-Fp}+5Y7Z1)!TZ3siQ9` z)pXI1QRLFp=e=!7Wy6VC*aH+4{O%rJ&Alttn42&5C|F-zom;qa?$uXbeDU+IoO<ER z>6ce$FLiCNc6BY&P*)2!*x&t|zxiA9mzE|D9_H;V>pQNZFp3Z*RRgB7QK#|-1!*l6 z;{+i32g*FYhtfB5_}Z0)Sr&P-!h3aTmF<++qmWmo*eo}<ux_2eojkza*1*T-%)Pu| z!FngZwX)9VjpvtFS9V^wa_0F9XSyHn8et91NY}oJem0!j&l~FFBNJo8V@xd2YqR$X zjUVs1VHoc6HaC{m=H}+-&$HA0+0|FicCpRg;&PX3Df_zmN5=O}4iC@t4Ge9w{2t!0 zhJO@`3!$JQHGdQVN>OEF2~!cB`)}o^A?sROUSn!tdwGFk7+`0-iJ5`%35uG!M_rAL zw21-Nr;+Flj4h>)ZY)JJq~6r!)}ma^Oe-u)WdxGSp$G`V$StiwFH^j{XSO;zF=jdH zxArdxH^P=dJOk)w4}|Xf@4w@rx8K>*^WV;0*?RVwXCHp}(T{%ovBy9C^trR2edeX7 zp83d7*T8uH^tA^MA3u8XrW4m+&l-aXw!mOJO$K6481SkG4^<F5UaL6vAH;Y_@Xg=) zXMSgJ=f%%IgM;1jmbX3l(A(EHR+*V*_8EB~fhM$;zGJ?$a&hkR!u;Ho%d?ab-|(E9 zyRtdYW*jR#{m>nFDrQ&0^0-0%$7d!drY5-0XMd@EGyC|80`pD7e9wAdluaMGp{G~r z-`SYIe738<Z)tJXUJ*HCFP?v_Z!q_zx#)i*gu?{4P_dchXFo;5ioNJO2S7H7VKVpr z77W_)hprXlVv#3-Fv)OB8KzzaR4#(^1C##-oODW=INgTgC5KbBG8t6_KVSgs4V4Ws zebAa|=O7{%v*nR`8HPk5tOJB+SeOBLg*{h7frOv=%@L8BtTxSSXq3QBa);nvu-6HT zsS@pZ7vzh0;Y}~T@-lS-uZf3gU#%ZI7h-BrsT{JUJj9(xkGZt5JbjqfwSD{Te8Pb0 zo$=nzruAG=tQv&yD_nsos`QwxKvf<ZSI(v)L}+sI%3+oV=_yScF9yMSl*!_ySgNo( zXk`f@a#S>Y+N3|)^)+<9G*Tn3Dl`&*F>GaZAPeBCXd-d87y=9H_AZ8_SJUc{U<{#= z_%}N#wiG&ZxR(UNgc><jUdbgDuMMK94y3qv7iTd!3CyAE7u_aiuC$vnGPM92zX_P9 z_Glyl3KVHNfGr;@uPM<GyKDkP=_d2&1|CwRRKar~TPXI+;Zo6(3(`15h@qSc0+ZGm zr35$bwUCn!ezXc*8rT9$5=&GD4qto2skynXm3cNJr^#YnU1hB;UD;Wl{kHdf6B4bj z)6u64P|qO;{#`umYM=Sc=jSe+y<ukXo4@Mb-mPU<3)|Af9BJEWeA$cd()`+Io_lff z;Ncr@yso+^V9E+eExnRcyBNu@A|`n3=5$I$t)seuXm8d!UqPl*tGc;|R-i)&s2Hp= zu{(;P7cRKEv^X&~a`@08JTW7pu-<#J!tWjvljBSaFhtO>9F_zCZR^n}Vg|oBMV#5L z7C6Sid!HmlhvXx_2O_DVp`4qNCBgh;NkzPXww@GbL2S^Ah$LHrMK38`U7vgY)t6s6 zJ$2|drzEtaMabil)y3KF(cU+|`HluIml9`hN<+(nG_wxAYOgWM<+OII4BH2E^)TCR zSBW@Du9B8<Q8$qoH5WlN!n@!7;LrZcU*)ZDH%{g*hd1UW2vnFh>dRhC4K2sAn)osh zQk-P$71q396mu%hz`)ispMLc6QxCJFMc3Hafg5kU=J?H{QwO{HM_JCePH9^WaCOEn zj5={O`+Hpuso)_SsX~?uw?mPW9WXa8oH@Vbmy&#W0il$YpPvLx-QMCmBlTg1vZBH^ zV@2WcNqEG0fRC&BfP}|aeSM>&Lu?O4v#AA;E1%I}VlQ|9QCpD^NZUY$?+qGphN8cg zF=(?Gkm|tD<>0<apD5b70iR3;obCXk#EC-+j^0(2fh{ekUCC@Lp!V8>29kI3;U<e} z0aV31MKYN}#9LUWN43Ku?0X0eZvDwcmk8xp1e<w_Y!IAeDxQTGi$_#ZWWt^a3PzJB zG?z$KE|GjrV9A63oRm4Z6>pNk4n$nh!lZL%Jg~ycOmDjLRtD_-esq&6lS!iOwIhcQ z4D@$zZm#KVXzT#8Lp8E#22w2X7(}LOLtO0)6-1y4+O9!WI>G{~>~%EQAuCwuGLq#` zeCg<D3KUi%n`=2q#2hc4fEyhh7-BOD*Aii8ZZY5#kPgE#9JrRePpfzqw#Y=I50tG2 zMP70_lrNkOBplY{$sb~>Eq8D&GnSd~mci;OU&Upxg$G0r06GE$dN*3wy8ul&H+<!y zOpW;hjD!|sZo~?^L{%6?Y<TT5tnA(MRXHs<*}BVBd4<v@6(rA_t@8yK4D(x<T_#th zi3$jpIuO;AN>aa01|m4>p&xRdfaw8N%X^pNpn&qF5oLysx`_pVVjc)g3(~8zmtGB} zLm)x}Qw<Gap4qOhE?&OKmk?fk^_7=ie);8#XJ47Sc)p8)f@7>rKP*2obmGL3d+zy~ zcfI?8)ir8u&*JjVZ~Xdy>|!U9(Q$n#1+LeX=hZn}O|!s^cxnrWunLxv0_l9jZ9G{3 zIn1XLCpOtRba9^TRX5jGcoDpJpnrH|Y;<C>Z)gmPG}xToy|_%J$tVKetn3@;V~76n zF<PmujkQhoIbP>;0Nu08T^BBGZl1f$94hw2ShPz#j~<{4>fNF9h7O~R)wS+5zTdjx zhXb6{=cP2(;U65H<jb+VY%$1|IW%lO4Yyp7fi?@vL(#Uav}~@{lG2cJNgBes;LO$N zYio=1moKccp)ln!IyFACe|Th^PJu7A*~q04Mmd6Z4w?w2p(4pN3Mi2r)+5nx(V$YS zvg8z_gncScV<WSGayAyJmCXiF44W^HBn5rDi!U0onC#hSpMT`xR}Wvy``AP51+{Og z_igvz&i~)~@7_DNxc=N1UVP%oryqIj@kbwh;`tX|IQ`Ufr=R}tqrC$?Y+HHc*s&8g z96NF2!D~(qPfW4dAv1&<zJ12S6j-pU3&oB`+e72~zWL9-kK#tZ{(*s&<yH1Ia#6+X z6~0M0H_NvaSQl{l(v{167J&lFyEZC-Q|kf)!`*b4V+W?#5@7lOAFZ0&H$BFe=*B3r z5kEcPO`hJ&K}S#RVQJ~+ns;YZqhUVHqhI1Hc*-g}f8&8nPvo0EtPn}r`6d_)y`|$s z$W9YN3>oaa+387_pl%XYDAdxVP0OXuIn1(VTF=wN==ILyx|WWE$&F?-iE=uDuyQMO z9ZF!!(JcQxs#~f8%}A{A9`jN=;!XuC;owLYD$uHwqGb$%4MW2X^Svp16APPj5QDJy zBp0&^tim~0a4+cVhKuUev|H5n3JbjW3!i%dd-PLV!>{UN2c#jMiqzP%S`N<|l)_NL z001BWNkl<ZT0Jp{rN)kJs}#>|x7=jerUZEYnW{!P1L{DZT`dVSj&Yxpp51NG8%BG~ zu`9f6jM-CZcbSoZ6ER0=7!h<CS;_XQ<I6{{0{ya)*U)KUUu&s0y{?^H0vw$v#5&;) zWCc1|0^kPm*>W$CGW?Bk)zkh>r5OiO8o5MFX&8tXX_%HBrAyd<`dt&{kSJ%`OoykY zmMG1c<wG*lzPXSO-_i&W0?`FY$*AFlKH*UUB$$MdF6t@74lB}HI>lX9MMEMq3_fED zAulcUs8(!DY8-{20+%kr3f2l76n)pbT{0aG0IM&1^;Q9s^Kl|f?T!NU<CD|Zp1gAE zGfaciRIzr<M}OPv^OsKdkMw-)SHBal=j&%O1RxVD7@_(c#vC+E|I5GlX$bwLZ~yuu zW9%NxIy@dPXh8~ri|W{`4!wB#>?`NbzvZEKPw(fufH{;X;-{HQm1<Hd-8^9Aox^Z& zEQ=;34-)CP@+>iSfY_!J_cX=`;Aj(NDSIs(!xbi!0FsO(`C&CixqS6x`OtN2-jv6- zK@z?rgORHa9<dG%^}C&p&IP+D14tw-P=ZR_5Yf^2)1#aVu6w1HrbH4hU<F3}w%$u9 zN|q%OZu43O9Z>-e<A!vRCDITmV<4@*`q(3%;_W!zF(FF%A``tZL#>U)S-#?S@&r#r zuR3%wWoy;km9~<MGoXYgw|ue`(2o?Nd}hqM+1L&OWH>}uHj9=h%2Hfh5r7b9PK@F1 zy5}u@6T`d+=n8iq5cK86el2KG11JF(fre^SFG}G~7Kbd7Eog-DBr{^Dr03$m{XIJ? zS6;pH>?gY>r`f1z`q1$Kw$ox!IgQ8`&K@$1yS-QDxfBWwaDQu2I@pW?Qna}!wc>=> zVQ2ozl^^@zf6hXDZ;S!eHPcfgz1w8?IRL5~Wx`#5jO=Ge5RMXIgwNao;5@v>w9M3H z0!#lPi)9G6yy2EV_nqI)8^w-cusf1zT7HfvEavQI5FJZ>EsG`3pTEQ>Ncm_XHvxXO zaDbWVzQfbQQxoINm~k&b#{|u~UF?pD5y?dnQ88Oqpa-IvszD{sA2tbd>K}}}A(4=G z%)H?4Xgw`9l@q;eTwv?5zBTNKm#U<!O0OYlNVKjgCP-P!R3(;U3ba_jg$l`y3_{1y zO}6y%15Dhe#2d1bmP&JyQNV1<kU|W|*`^Y32~5xS?KfY~yTIk@0wdb?`k{l9v<eGr zD{NE1t6Lz1SxYU~qy(c$E<K7oy2Sg#5g=DN`Opcq;#l}Y2}Gfipj@1EFfMAK^?@Md zIF=O0FsMMV0%{&{6(RT%7T+@I+2Q4X#^O$4;W$Y(A3_#0bole%A5I|o{)_WVtk`Hu zS+22$ZWl-{N|*m4XiC$Jq#Wc03*<&ord)guhkC#?mryJ^(n?60O4H<V+2vr^dRB~q zv|#fyg?>p_$e|o^O3@-jrI)Y(5Dno5`gJdR092i$CB7F|N|o#C&`yq){qjeN&_L}0 zj^-^TsaQPx8*&=WSm|SsD$|(U=E0_mdhJAb4xGYzWl!0&!=8VXfh)Bb%x<hLEL^#C z;ry%2BftC-f9KAf<{iYYO>Ua-Ft&{7nVOzBe)Q&>Z@lrgJ8r$@mYZ+9>4w9H$A(9C zmX>x__&ohU-={wLxz9iQeBby{USo?W_%zKKex(zXevuY!kfS}!Q1r$^=xb&bxTyi< zwF$4(4(1ler-nu+XSUpo@X9(1$!BMm78d$O#z!ZoSS-LxeKhfzopD<xhJVcVDu>m~ zsgb^Z-ew=17)s$l*Qu3_4cZb;o9jH;W@*sQI#mN4mZy4jcMsD8^bPm+Ptb(Xf(|iw zr&)_))XQ$R!-IbFh?qFemIhgVQ9%ETqZ3ssPuhoDP!wnWmPHB|FJE4ny-2sxH#{~m zwQp!_hR+UC<3a$UWj0o9rLm``*TWiGDayEP=8!|9VRPGN1r*CnYgt1g29L#c7RPgd z(V(VwVtJaQ?f#K|z5wWhX(YER0M~M2QAXd;(Bn@$`IYZ@XlQKoh8vE(?ScE={?Pq* zz3DB-PF%wc)A&gLU2nemzI$$d-}}CW*9>2JY3{K{KlKNH_<=_s`_zlizk2$qmrg(Z z*vI=uSgp7J(6OT@u0L_zO-GI$pPZbART@An!6LQQ`Af^Qb64gUmg!UH=NB$rIzM;i z;>PT37w?GrL`#D>lg|7^U;og=#P~R$D%>}<Zy!5#j=MNuW@KcXoeS7ff%|UX9AQN0 zW)hrx*jO;^EL&_B`=mAEV;E#mn%GgRS}-WZ(AcF;tPjLopxWxxI05r&87`9I87N&l z=A+N(+8*rfn;PXsUG1r~X)EJUDXoO+L?(7t8p}>dE@`x?&@39w6TC>A_ZEQ!NZz_% zdI;s<hr?&)$jWB|C5&EBRWIqpAITJ4@kwY}lVT%HX(>tv#6WX|tKsAt2&LU<C%v-v zM)zV>x{Rd3sSO(a;~bjssw3im=9%ZZdk1@X#lU7SB5Df{jTz&B)mF|ZVI)@VKzLu} zaG6)Kj~zQoL_$^@+EENwq$D>s$_RUBlYPz_%3)ay$sjRenpx6DA~K)?NlKYczQmz_ z<YOVmj0-P>BDI<(nEc(-o@}87{v#eOY$HoW!EVzfr%$xUZYU`Q#+iexPHrcqL#MJj z=K|2VgIlNAA3dY48CHiPno3YiNWd};A^~Z732Y2%z6-2;>4R)2`R~zyR&B70vutb> zM7ipaY=I{^xwM9R<R!^bS8*&-2y3Z}*wHjBcP(RX{>7GHOI|uv;)UG^8%)EcW^uC< z*ds{^F69PLqlwZIH*7r*Hnzck2M!!Qv9dI~I(vbyn2n7OlDWm!^;gck>z#K^PxsBv z@~+!5g9WKL7>J^F2R(!RBd1^8e*f?O&K<`NfBn1P+PAU5cq29h3YJ<9BcL6d-+kiA zXW8ZZfd}tRFBvsdBnN>KuuW*LdlSWgWWhIuZN&6ONn;wGnS4LEOV<_$;e@)Wse-0l zgsgs#K-D?&cnG$}Ym7&a-s)3QmYG9Q>@rtFUSTz>SsbIIBYYNqZIRiAhK@3|k{Sq@ zSIw>{!G?h(7=R^TQgr}-b&9dlyD}ufQ9!y-BV@reMP0Oj30PPqiBRAQyQR|g;SWE| zeevM13kJ0nljL-CYfQ?o+<VWv{2s*BM<YWewzMGJ2F-}e(1F-trsF9)`ox{F(z<g= z&7p;rtFR+q!ghKlqht5cYew&Q!!3_L@!a6h81qfe`Py3U?Nc+dZOzvhx^C^HuXI)m ziSi$~irbKfyU7eP9oa3<on`sqfg^VwyYbGY_1+a0iZViy2)bB~RTsR$c5*NO*e!~f zt!56IXi-!mQN}EM67YtbuVVmbnm^>?DXjwz#v99v3}=^ax%oJ&La~zTcRA8!LkWwX zdg&a#edPFl2Dv@}R9;ot*xb5sY5wI?r`A{3>Fd}okY^tFqvE>U2f1`Nkhp42bCi+P z!QtWm_*?(?)6YD|Ypgsq9vL2>7dw9KzPI0d=g1ISEprSE5A(e$W)OI=((es#tO~Bv z5EL#;2poelByup7^$*T``IORGNJiuAPQa#;Y>tLkAuZ3>#{1Zvert?-(501CzLtGy zcJ9n+pGclP^YU9C_(~W#9Ho3QplEiET2XsaM6&b_&w33PbJU3==C)wjN`!WRQMQF* zfgwzDy9guzF^XBiY|75C^y*S1trKAZJFmHiVpCR@pI(36QC5=F)CXf@+3aj#z?rGB z%NJJihAEs%s1UKZfKsZs2BZmiPC&j2R!~txF>PBUjg<)~L!E^tiE%I?BjMD@Uui}n zR%i;A6s`vRgD!b?VN#$>$42->8Q-4cA%}d6mr^(My)^6yLcP0}uiz~%ueo(7Lu8yj zpvoEjQn7**Ch(PIC<`eE)ySE`6&d3Ip+H{0h+e|US^1LSDdFT-tjRM%s>Kx%atifE zj%W-mOMnWJQV>DohA3wT0UkO?b94f2!XN4S<*|4|x!ZVsIeLf#rPn7$D%q%Mb^*3J zlZH;zNpft6s4un(+>WH;6ehW`D={Wrdj?oI&*O0(l&-DKU%q(Z?3q_z=1Xs<PM>-C z(#3P#zV6N~F+_TXhWiiRu<zvY+i$z|=G)(J%S|`kbnN)isR=%AM~QW_L7Q72Zg#ED zDS~_KcJF-fLmy}N)1jeJSm9(gn$A$j8reIxAmULv8Bwj)7laf(rKN{hNKUp2VxqaM zi|V0c9qF4H8Rz3GtF)=}^P7tcbF3^F8XOrL9~o!0{{Z*>PV(B(;pyDkNgNuqVKn5v zTjNwT69#OMKRh_JJxI0<h_`o&l_L_!x|%1YNN(EnG>0V<{zkW=codborqdyABaO3y z*A}s^tA>;rTOX*;>fGF=MQ(km{exo@Gy8@|$5~&@U0z-YEfb~Kr4(c3ZceKxE&Y}i zA`=Oz@373D&>pd)XT!<CVamkJ4p<}dyjlZij|!HetUE(7IzkGyh!LLeSjxpaXR`0Q z<JNb+^DjL8)DzD>{q)cN+|U2aPyKJqWgNWb+IPI;9q)eU+aG%HZP(qfpRI@(W?grD z>c(U5{?2cI_xfhnsTa?G^pVGY{|`R$@y9-S>ZRu{&VJ#-XFvX_{*fWR%6;snLr0Iz zFDzX+cY0}Ic4=jikM8PWOrJ+f`okT*Dl|GeerVt1_ypeyn3|elb-?)4G-<<Q!z|)p zZpf|{!!mPgC$hc9CaQb})F~ADF&2MQHmGSgM#q8==n$lsnFsyaC&hyWo#bZL*7C*- zOcLYM11#pV1Y~2;Vm#VVVphWDnF1TTuqujgA<dq@@bt%?J@e8F8oSy(%K+FEg~ibv znL4F+ab2KhHo1DGDnsxM6gI-(z|<}WutX}4i@k_2fJQHg7%fCFlp)Y0>Cws`aV+}u z8%0h8Kpf$4Bq-!-4k4~SzBq+^Ilf-T9y9C-eko=WDm{wjRgpFcZTE7b5qka$r+96I zH+}s`julfA0aWE4ycny{5LGS>5knkYT>Z|p;qr--`wko!(}jSye4L;5>7?Ws!*q>| z=IN-`3?uC?L|qBBVS{EQ$$%||jztC2;>^(XvDS3YEHl)D)LaW+f|6_`E}DDJmH$UN zM-m{LvTCCp%DY*wA=iNvBEob45UdhA=Ook#qwrTHR%Q}C>`Byw{6dm50Cp#Fr5H^g zuVN5b`+?aSA|h!<YA3}c7Z1iR>4)@bVI{#o6`Ue9mT{QmcNrr<sG72SM6ymajEx0| zlNezyebbfB+R9O~)fInC<H}$+_W=Nd5R3p6Yl6`&Cn<)ST%={Sm7kbKV~5fq0L>|| z(abz8#*C*=JRNiP9X@u$iwlda$C_a4wVvVmmHDoXh4;MY8)*C(RIIEn_w-Ck-}%*8 zeTy9ocKC+zkNoo=9ay{a*WUZS>5(2@MNoFyCc3qVnKKVY`&PDkAAa&_?s?w*&bPG& z&=?*OKH??Ph^{^!5xLDxv{F0ilxR#)>SGMd?2UngB7iv6vr}vsnJ{>VZY3}ZrrR)) z+Z=kF^%EzKA`~^aU_~I@xDk4Xu*UWnVVT;<$fY^AwnY>GlOsJ{3%`|?kVr%;VF}eQ z<;XMP<h7@iUmI!g64hBH8bS90kf7OHgT;Qv72dqvEU=(bDWTA0uWoet34@_A_VKY} zL<a74_*msCFX(N&{cZP!affG7(a${U-0&%wCW+TVVNRV=-!hDK5j9-S!QQb7Ss3x@ z&?SX5h4wx@nh_(3uY$evZTCF>@Z)TE+0`?Kgvd!*Sgb-wSlvCm(ATA}kJZRB0zXfI z;nW0S#t|F^!go0q7cOIovFQV=?2GIWfYsW?M;b1-@$e1<6l8JQ!x@qGD00Noo-;UC z>#pwc@v;BzfB3$&oh->ISlLTtWN_?1{rms;?|$>&f8Y20(DV%VzHX?6xVB(qck|_u ziU0lw{^!-z<$wH-|7K733L^37%fSvgz2iUeFMjUhkA03^oY~3QQH#$)GDOii{NWCi z1zH$^oMd|$BU8co#=wzd*DWqA&AVaq(#FzU&(_2<pZ%;Ortsz+J^CVU+WCY5H;+TZ z!|WAKm`hK;OAgeYM@OuA>qi=f(xLAi$I$ZH)&gHh?54>0?6m7XSU>)`FI;-$(ep39 z_~NUtp1yGYGT)G1SzD%)9Uj;jAKHA=-S0$5{DxIdQ4xCFb!Na7>2q&Y#fL)j!Vng} zZlKZCkk-nLqIC-aJepA1An*dFWB~vf%&Lzu6uO%n(gHa=D@qI=c{X|Tjr;fSpWv=R zZqzs6X-&7+M}{U?MDY33^S)K#WC~>ChjL48@DzEP6H-R@oKZaPlR=&>Q+&wPu8wR~ zh@PyZmWY~yZhH6_PI{!W+w<X{!sS%$f(A>=RHji=4pMjxWM^_}3}UL9{t|zpd>z8F zP~3-_je!MknD;I%xhuEhSh5w_91fa9R4*Y(Z3HtnK*=H!`^XUkvpNV!>}L1m2()^B zL93WUJk*Pa`2NYS4h<3Lf=ZA|+{8kNSbbr^g)A|+5-F=!h$+P%<4~mn-wnMEdIJNa zJ}YB*3f4*gVw^9NwHH&@QERU)kp|Tnfga3?MJXPOvWqQ7TmZ#Nd5g?#dzLR<xP0#H z%V%DB`IT2rojrSI@yZ2uoV3Vj=7zfWO-)^Q$1S(qdea@Z-+J3^H=n%j`2K@@xXtQ< zW!Kku<z|~z`O7O-(>PTxg_&}2K8+sv;~#s3NoZyqag#`z!mpxA2}D}r8n7uWf+`d6 z6ih6oyK``AYn2#AWz02qM&|L7_s|&20mdiUn0|SFer080Zh2+y$^xqi*r8xxaL6?k zjWZTakwi_KU0Kxcj1b~uwa<`6S2Ds;foZI%A9fzJJ1T+Eol#bZXrzSpLMmekMFn+> zCSVf+mii4bu1wVM40>^XesS(%7aODx4o*%T7#^GAi+Qy8_6^X`z-bocLNqNt!8m)d z6;5_YV!@jzN1FkIDXNY%LP=8rJ?Pl15zIueZ4P}6ne-W3yj5}h_)%74%rDxz+t<dG zA<jArUJ1D2rW^mkKlol2i_vPm^77oLpLzO`M;`mgM?UgfzxD5b^Z)p_xXjG{19#nh z*8>mS|KJ1n-+t>Y2M$j1*x<VB58ib1*ZukL{<`JOu4g~<>hJ#U@Bi*^f8dFyo}It= z`Ols^_1RC3GO@hFOB}3fVcMGQ3P#5!XD0WvD1a9PW)6%`Ot5t@FLbz7W)CI8Eg5Im z%TkzbrpPPd^wmxdpf`4@w%#p=(3j$)N@QlojK%_%ZtSF~EF2<Ogo_mi^4qIJEEeh8 zUf)`?<?8Jj;Pt_P*mJwKz$J+mf*V||EzHlp;9eb{Kl94-tCyH`o9iAO!EcyqFO%n7 z%t6{ctW74A??)zu3?#);zF?FRt>rD^Mp~1s60Ycrw~*{$v`Faz{5Q<nl9#T?Fs*F; z-Nf<_X>(X3ibY~c<8+naUnWs{jo_dt#2(BxSW+}pcA2$gBUD(n2<E&F9H}itlY9Bn z&daZ!?im=Tgv?Y|en0^bA|h0{4IpIT%#XAffRbVC!qSx+ufKC>C^;fE6^SZkj2}D0 zkBmAiMy;?eayP{^pOAtApKwHwO_S1E*rp^UrkK39ohLS-+o}admE#_A9Wn-T1X?DV zyTi84z3Te^TW&;ew1Hej2{ig$#o^0EqHKp)#WY6D9>k_fNIO=FLS?TsT;<ovt3ue7 zDsrh`8ZPkZ9wTa`3^W|6NCH4IhP7)GQM@_@C1my}np_*0qE(^+1c=li2X>XPpr-Cp z3nQZmkSh^?w#8vbltXe!_gus@5irmTGp#|O5u-tsZW5Coyb@FtGyH*KAI)HsmXIcc zMPU>Bk6m~1`Ohvd&5w-tEL=X@Gu-!eU;S>N`A#SwbM5ARRKXFNyCd3Cd(}^U;)&DG zKKj5N*ZqlmZ{1nD?6$`6P!C|)t)&@ibMJI+ZuK*tf9b@DWB1&BM-*#L$fu&pR4L7+ z#B35P%`-nhJxU8M6;DRNsj{62#a&NmkcRP5v~EUy0fe(Tl8V@jeOYYi+Mn$k{l;M< zTFWAWhU-;D)73RJ&^0wRaq5+Gw!E6!Qu60vkiSL|1KxN5lCIjZ|7#}*3h(N3in%4y zWI?M9#pBeZyv&^N<(kC6H3AuK9VY3XKL3UDUwHnN;e9vqW<R~C-jO_B=wtHa!MEPi z^rIbwy|R=bUqlmF=QkO#xY7<ohbI0+QVPRW9tunyZzYc98oMij&}5oTXs7#~?|k4V zfAoLl>v3H}u4HDnASD8UzAs~6qb7(4Jb#XeNm0C3gygGY!zq$Q2w`F8MEcg!!Xi(X zMkl7-zCWTsr_6$h3>nEl*FeR?j988m+Z^!)^4#0AvbnUu=K~36jeTVR!^4a%mf8%k zAL8ur8ugO*c`=SkQuhe3z!evT*vj&y{=rp5c3`Hy4p8!LkhkB|X~w3kgvAb2LvAZw zJjpljF+dqC<2;O#=?zv>ZrsGc|F%1Qpa!q*jYCtsi#y0;x5dT9m4(HH<)yXdRX!ii z2c_m07UnnS>RufUxMSu%gR-a-FY>bHfF%MmlQ)i!ja|8N`QpX-C!TudiKm~xaPcCo z%=YGJR&@6L=#T%zxihDyr^d%dCiWkgzW3g{jvc$^I3H)fX6Bj$toWOF^oifJg=Nf! zMlf>cb(^ddrgw}wk{-g5lJ-h!iUnh7nchvlVt~pxf|N`&++elE8aqnN!%Juy4#70% zVTAyJfg0mJMg%Lj-u#A<kwIKf2`F2a#^~(ab{#o%plj<qK&)blLvqz`BwiAjj_BZt z>!I74OXGl)9F!qd&q)V|x~fn43gJ&>1o9xp2`MTX9g1jxywBE)A{~HcX$M=rw1P<q z!q(2nD6fyRrkR$|8-AGP7E<Aff)e&}FLpHVbO!T_E9@K*!h3B@f?U<G(Gogk#)utS zdsPvT;giBqS8#lGDAlB@$FD$l^;8l6ELJ&j2pdotR7MP*QV87!2O!H!)8v4vfV!JU z43tov8k#NXJvj*$e^Fa{4aAo~V9V1EXCPas*tNmjB|zvkRIdhUa$|lij_lluT13%< zMd{4l4fKvNC7_DDIK8sW^MLbb&Ypht^yyd5o;iKt!kP8O`5v~-aDhPg;MmBC<NK~V zdE1@0-FDmUx88i?bw`g~Gs6w_pgu#RLe0W0R~BlY4;lg_geeZ9iP6Sk097~3sd;<+ z%H`EByl|?^$;1IBoSd7aZ9*PZvu?)%>FE?Yhc1@@<e(n17O4uF<gb_krqZo%S%OXR zF$?4ZZr1(tU4zl7QNCHQFps9om(DHCUSN)ZC*ged095C<aB1xmRybcVGUjbwX1aYC z2z8>iv|%e0f8mH>65w7;`$JK=sxY_(<%Ze101ujFZ$h1%!U>x$#qV{%hkxGkWPji* zmo9EIM}zDKj*L$1bNRaOgrt>;A!s51S0E)pPEK+qTB&h*(vnFjDQK#n6-!AK4w^Ro z$ffdX<w55e2a+AVg6k}}aBT9n|Hj%q_uQLig~j+{L5rfd0Ys(VfscIn(SP_4fAOBX z-^A*YlP4xmUiZK^ea!<qJAZv?Ve83HKlz6r`p5@9_@Rd%dGx>h&hPLJ0B<5Z@V2*o z{WpBWyWjE9Ew>&X>S61?t~cFr<nA|q_uu{g?>_bN+<$rh$9~}#f9+!*dAfJt(AR&* z`}SXZVrXQDd1}8A?K--A-i2c3y1lbZ8_D#Ew(!sKOyo;|4JLfXh1&KdT0m9(){W|A znN4O>c{7akq-htzl7=2;lPW7}*%E@4F<Tq+XJ2~e;i>)C^b8IS4vhKOqo2JDCfO+4 zB?El-cX{d3+=UBgUp_}&d-W8{A9w}U-8%aF4jw)9C%@vGo_gY`Cm#FQ7Bd)hAqrGt z$+UCme!LSP^Vk|4$cq+MIi1Rzmt7oY0jq9BdSy-r=mc|oMjb%c=i?9R7+dVpFj{7* ztBi91DpepIJ42X(ML6%W53x?PbON{GU~A!=5=s<|XPpfT8?3|@D=~8_OY=7nbt&jb zwwo2;O6#0=0S!TscXlq%EeuW^f;R4Bf1pyuifA2$mQp86v*`v^jRe;7v+ddT=B+p1 zWG{<a7&aBXHD|ff4#NeyH5*WdXPKiZT}mZ*GzA;Zl&H;V=oM9h@S-4CKuKH68=-~X zNLo}9+10hl)4;9SBuUKUb>J$a&Ake%lNIc;@oNBH6D<}27r7JY@U1{$b#lW;@+s`X zQ(_t`Qd4sq0=hnfVq3GQglkzq=C(hHRf?^mu@=}#K|Gmyz&W)qx3Kzw$PAz9rwEB< zU4wTKXsy>F7TJvD(1#>Y>Js$7^{XV}Vm3cCs%;Sf--PiD7n_JqLDMw^mFf?uT}fn1 zeqe-a7+8M-1o=n{X!0UV)DBS-g)1&3nJ=h^Esb3e?wLNEuE951x~KLZ<z=qR7cLUn zTD<hO2k$<7WE>Ja72u0!+_%sbVKF_FyIfZY?mYYSGviwe-~Yb9KHfFo<5v;rOMF`8 z=XbShIvu(8o_h82h5425{%_trITj(>Q~7|#QpUCvBd;KhUM=))k~sxs=^8Fjafq+E z?kwnLn&(i(dhCG}sjf(iSD=k|JCcJQ18~;8@0>h&Jfg&4A?(R!Basm4oLDF~IX>RC zbJ_<7eB6!xN6r>2AxZ2aDJwCB!qMQDz2!Qj4D15$jkSdrPz3c4HMk&Bl{Q({5{?cD zvXj?hSs>;nk><Iv4I2=Af(CA6m_5VErR_s5UNhNPURt>Rx|1hPT$Xc&Bme*)07*na zR2u?CB?LMgir#MaRUw+MJf6Z=v2e;5BU{nbpZij=y-Dsoc#pM0+>qHZU=!ZH>n*pB zPLC`ttbvxQfVWYIIAj$}EMh?>s_yX))r2Rho?|1)8)(>Qrx+5~MNq`uT3lFUH7p<P zv&ryLBY)v(;fb9T<SXv9_0TK(Ctsc!qXk?fMt=@Ks796xLu3Lep)GF$x%Ibh(%biu z#}}RXZm4QHDzO9hCQVIc%t}Qp%lKNel4SP`e#YX+S?Y7OZL!XZ!9OB$)daX|T!ChQ zbw9jHvcB#xgU>qlZ?Sd!%oJZI+324fo}OY|(BZP8t7~WpHaAuo`fO~huB@)HP2bAu z>Kbc3jgYvsuzYEgPZlh^@s=Yy+haVaJN3e;mtQ%<=3g(rbo%&-ljy}>K0DhRfA-IO z{Y^)CYq^gpg7JwF_ExlVYNqw>t>q226}G{Sl{1pCUvM~Mzno$~hpPIziv}>EvAki2 z;yuhkrIuUSAi!ZM1w*qX+7v@eRYRErIIx~uq6+7j9*1MODf>ihF5hw64ZKIei`p6% z;2eS9IeN{(uAL{@-6{^3f|MnJR?ZNXXm~^@H843MBqzx{v-H6}$#FrHA)FD4!!xxP zR&x+bu6ObleWHl#_?C($1iP%rBH~KOy9W63B)QOcX2!-?{|bW`)rX-mRSAv)Oc|sE z(pjfSdYK*A;4N!b(Ae;^I$K2|RGL=Bl@$`;<KS1OLa496jmk`JG27&AqndblPvuvS z16hR;@g>Dks(8^3Vii%ZV55|X<W<oWzkr}rBoR@NwiE(FGtkH-lR5+diu^yufgBx# zy<tdnTD=Hb?g?}Uyu+nZRDz^fRc&|ab^zOeLKa+#TEv}=<x6K?eDQ@-d|%+qnU~L= zeRcWbxh__Sx$O}9kMvGWkKgvDlkBi{=NmX~K5^ZNLx(2VOppa`coA(iYwLIme?9N+ zDKV9S1=}oyz>L~Z*W#cWdnF+P$3a~Ua^Vs~@daiF{er#r7Nu;i<05b(l89~{Tc;Kh zlRO3}E{*o#C<;fBNKowsB?3_{I)>BHw2_0u`-g|Orzd%rYjOU{(%jtg;_A@E<k-X{ zlOKTMaqdCyA&oudLB*#bRZub_PFS=B5~d0PP6LNZ#B9My*DwZkL@X+8E}F?S8N-=s zOGC(RXP2&A+E|>UzZjaDnVdPq#};@SF*k^6C7uL8@*D#eNpmEH)p)2)olhmMVQnO} zoJz4mMlcgne83{1ib&LhtQL%9Y7<&)tgbF~jSjs1p|`PSgnFIkMR{y*wsz*Y0bW~s z>E##y`49g?sysI_Cr=)I;KBRf@!*5^-g`H1WZnPZTON4mEr0h1|2hj!KmF88ANatB z-v9phKk|uBz5l=bKJSIxcFWE8-goyq9=iX&d+vI}EyvO3_>sx?e%IH0&v$*z*L~f8 z`-dNRa&TnmniD4%Sg^#+IrmvC4A2TG6|Ji9(J&5JC52?#sjP+d{EL#NHgU7Xvm?}^ zp2>u|GY_$AOhA6<(^O%N{(-gG`QQJIUuT(m*Dw!<-F9yB;I)SiU%S4>hQup#vzL|@ z=DL;_yVjSiLcQHX<9trM@6UecUwYGBZ@iI5QOC#s>i7Nwr#R9jTYMgMPEY}Lo%o~W zVQNlXVs_;cCCz)TsgfP2)XGvP6oHgP(WtZh!jmY(FplX37}yf1z!ai-N!olHd?6a> zf@`U9ZI0v{Rt|ua+@q6jV)SSeQv`zKXut{YQKZS+bLp_(llD46xkB;ut7q^ZUZbR% z@bZwu3yuyA0s=NB@8qC9{i~^(&|U{pEWBjwa_cQOHQbP%BOug}R8BF5hlg2m>Clbg ziP-^<yAjz{&7c!>3X{4S)0l6S3|+R->|-LWb9BV+q%?t|5>l_t`qJ?h=}SN~F4PuS zL46TUC2-!GU(wejwjk<Th5#Ti9knnCy}89^T~A{a!wO(!Hm9f-N^4I`qS6b{csajF z6hix|vr(Dj28^(SB3+@?GmVOMtdc5?aFdYK=2RfNDVC;Xw<|{+f>FFP0m(6|0chiD zSt8|ZEDk4Kp*f6)XfkAD)GOykVxSt&Y6U1w8g?XlRGus<?m3pS&1b;Qy6v96<Hv7$ z?%7XVIQMGT+Tyo<%QuSE&EhupA!21I?EJo2y-vu@0wd#|jrl+QRqwd#mZLpu7swad znQ@=|(5z-!(eXJG%Afqq=eK$Xzww*CVV8R+q=cd>+8*i5CrWx{1*%C2*lP-=P}33c z<jo0!bY~6K=Fx^`3rX)+=^4EVNrRs*yL-p|;d*zDpEv@TJ%QjLAYS~T>2pkL4{s3n z&rI_~#Sh&x_KCEjRk;}FM*%{?n=tQpLKQEhh<UQplG<|xK)lyKL>C~18L+EiBdR<> zC&zBDG$`ZP0h%g-V)KU|_;^=0E5^rde7rAERz4L>zjpuqZyg;`jFyVw_GqP)(d!7z zSl>;a8ANdClr>6%wsBVwfRtqT#Tmm{!+GdYq%zo&k64Ee_up~HO%H$QGn8f)%aQI8 zcm)K@Q{jh*k=9UFBJvRjsz!w8B)*Nc|CvW*?}fFEg{9$r(`djLs|HR53=k}elWlwt zn-+N+PiiF#R!7K_ArIOcsNeu{A?(dOVR3vmlNaC+ErSH6*>FrrW?M%dCy@gVkDKrw z=Unh0n-&CdnLsF`CIu@w0<hHZ<N*QzyqE~%J7xH%ifc?}6lia2_``$<W4ZqBt?`k* z{WGJinyiJlkRbz#pm63}-+k=h#UwafN?(O^ws4*M{<SS;4pvvzc~~+rIl(R8%=E;~ zH{X2y4aeVn*L~mqo^Rqt`U4++3SzW3554uS>kjvItzG7Ja(iciC9J&l%kVO-5g$qz zDe+~D&9n<DxND<oYEe~0Broj|dq+W~^C=P=i^b+@pt-~iM&owqA+6*}B@WjT-AyLL zTs%$t^8!_O_cDXz?)BSly@9Wz(N9xA)p_ZS3cY!)69l{fy*A{%FGXX~hY=78VKw7O zIKi0G6vQw`k;B+aaA;ZGjGoPpWl{KoIZOvqfjtzKMYQ;4)^J%v!rYAV5Qle6L#e3> z)jc~dw!Jw#)W-${jCUjiaAAmupcZ*^P>W=YD^dY^=I7ZI%!gmNRo%=NSaAs7NF_Na zb*KnM1U!wRN^WN7GFTg5{8NCGn4v(LviDH5CM$rQIEf)D$Jj)l1v4^nHJlvnUU6~b zQ3=>kR0eVdH<T)|$!SSfqCys{igT`{itY`QvO7V5gJ<rkgS981D2bNsHI>oV&{BnR z<;qFea*xt{qvU7)mw&ds!bjbx4=xbs9UHjjntj)wy!8#Yzu`_^8Mx&}76?pDGa>2| z6YeWnAV8g4S)|dhq^0K^CF4;kLYJD5ce0zQZ~zbqDBX@rN=+;am0oUVc5a?lwYzU9 zjVUD@N^wk4t84%cm8wHh3{(Y#sUnsnr55FM<uC>~&$=a0_^}jDYd>Ff@|2JX(Z1fH zp$Yb~ndZfcrP+lQzRr2&(%|UW#PsyQ$f&QR=bcYBf&r0+sS&_72%@&L)D=~Xi^g$j znw>ldYeev0X%(1oBRK`4i8M>sMyiw3egsHlQJIV1Hx_0u^PvLBcaM(EOdS{)9%0hW z*3rocYzu{O0+9mVC2mAU76PfZ?DAr|1EdI!afRoP3{^;|B#ex7CZU3AX)x@FEN>1L zv|&ZUwDU{zSMK9h|K=0RD{DOAa8G~kl>2)IdwZBb`u*Si9i~oy>SzDu_19hV5w<q^ z*u$TA{E2`2%fI$-fAQCNHQ>n6<M-Tq&$}Ob@ZS6Gx#7m6Z+`RfH{bakfAg<@Co@ow zeB$x{{M*0#pZ}lV{iR>}wO{(h|AQT5e)X6C^|!s}Yv5kZ*SEdrPrv^Ik3RL}Cr;dY zr@PN0e@t0=t2Tx-#jcSUx>x{-B)3%UAn6umwRmjXB-^v5ch$mnlTd;Rw&5n;f+vw? zudjP(n2}N64R_sp{q?u94u{VuF3ew^yL4{u)Tie@`&ew|s}O$AVtjJnp<7O#yy4E< zZ~hOz@^h<8m;TJRe;ZF7*oW!NIm%YC-IW6Y%iKu+nga#Y&a!JX+M|6IMWpEx#Gam_ zRefy~TZCGprqu_>2pNE?m4z;cIUb3GqbyC)R}5%PFcTn+VVL8|GGoDct^=?l*CAQ~ zQ=3rvV!*>QvK4j<K`ewi)GGVx^VOMY6B@6%8ZNX*D&nu4KEvpWHz#p;3z*!LMWiat z8Qhs%A{5<1*C3Xb%_9ICY{JvibHj}%8OmX226$M>P7I0+)~x0>89Z?s7#QI5nkh|a z6f0fa60r0o7m}J)z5+!U2N^tc3f1kM!M*`Dxg`7QqhpCqKw@8fyk2Str6dT_7sCk^ zOEkj@&C{w;-V(7vEZjQpp)K9LWXXa?0CaD%lG4B=+)|=#X7uG47~A;I2sIzzYEjw| zUc*6TWuht+i4?F^j)y!9H>}wVjeQ9YIDxDd_HG<eQn3KeQPj+8#&f2US6VAV0~qKw z98pPWpbY5~);n9&=I8`!WT<W=B{hLg^;W(l+rGza(a)1SnyU~6mQ+E_>>L_eK~yE? z5jzmZ1S5_CxFPb4u#5-#2FLatK5^;Prza23eCs!VgA<;83>C7WYpPqiWUR>sD=S@V zv)2x-{f+PbQ(dbI42Ur>-dn>78(xPH-UIPXpyiG24?Xs&$wP<V^rkyI0+uvY0kmA? zY*bLxM%N~VX!LB-JJCRv9e|8$skTdt!60K#p~%77Uetjy99v+ew32MAw7xnxF>>wU z12K|ngt46wp!O%qwTDQk@e&+7u?ph}@7S7x05<-v(@B8aI@%1&M7CTUP2@|as?{7q zDta5w)s!|NHYF+-5+$6hCMs`(C1q3;IIyutWd}>;yV>gJ<9xzkV2szr^EKdz%J-{z z?Xi3P9q)Ls$ZJec!?oqu+R~g>tjJO)Zhh%K^aAW>=j8Ax_rtWF-PtFCYb@VVikQI$ z9J#4L+!Ymd2RhvkK6wAbA9~WSzqUFFh`P!YpEn|}#xAi>U`#As66n~^MF<VFOM7@E zwzIIbz!yFEyfo7{eAGD0LLekdnep>}(10e4C#9;HyY~P9I89@5SZ3U_!PwSFbO{7I z5Bm+$v!u<Z1rz~!oNbm_rj@8-xFqjADioG;kgV4HxljN_)TOE&Ra+7~)nOMsskk<k z0_4t_W)@tymr&sHWr8(6#&vlA1dAfIpuQOsg*dQafMcVy%~M2*(n&x#n$HGQu1fA5 z-x=81H{IL2!goC=`3bf>9U9udZ*t!hlM0L58-08|o5#a!WVX4rMkVdr@%v}Ufv6nX z!*0|$1I*}lX}lQ`Avv3mJ_4C0s0A8D6d{5X5dplRS@n$}^2h>#|CB>=O)N@U)@%-S z1}ISCg^4){K&9~U>5cWJk<p&(uRpTBxjNi4k-;-%<6#%Rv&|R2*tBYMXT78hW(Y}F zxl5lCOVLeEdafw~bu(SAmZFk)f&?z%qutah(VzxkLq!z-e4REpMO-a7Y|>12h?v2Q z;FK@^v9rzRza_>y13Fq`50DUnf9W=+^4`I_knaA4mDQCEo_!9GLOIGM0&tE@!3%2D zT0{q;V`g$7Ep1qCcd@Aj>n5Wmh6GA+Ar$2W3Z#K(14J<ss12IJ(O9EUssK9365vQ7 z6iK1^D~L#nO@z^uUK&1zn<MF!+a__X)IAAbBIpJ!4Ta{B_3Hr^#4hL;!Bm!Djf5n` zep=NP1oSXF-BS}oC+_5N<<XmNzTuWzZ@J;7>kl2A8K3B;B?W}{XZb)2bKGlu{)cVx zDfjHP#!Lckpj~WdDD8&3X5-ItDI2K>nVc~h%@1BcDW^r!$bd!`F-jpobuZ0bB^8fs zR0#FGiWc9NyQ%`2lGk%3l0(vZio!_PL?SdOLWEBeakFBLw~Y-S9$_ED#ktEX%kvjc zFZ7L0j7?7P(R;+ho2kj!h9#2>`XZDaJ*r_bvn3^B<!|ILK>&FcYp)0b)8enu?HX-P zK}2HSaM+xipIe^0)U~$RJvcCNaR2bwWL6EpN4`;4m7pZ61Y0fT1#wQ~?@468311C> zwTJ?61V-qh)=48Oge4T?ri9xBWVF-RT$r2fUS0m~@A?jIoRPz}vzt$n_CETtkNt1| z>;L-dE2o!dmruUoj(5HDUDsaIbKkwU_5Q8zom=dF=Go^z_OXXQ^udoj@`*?P!@v7? z|KT@&73Skp6K}lZ*1O*FW)=&)`7Lk0=iWEpbKjf)(Lery#~**?7yiw^{*B-K)#a6C zE!HY@{N%N?OcyVocSgF=sj+knt4b<RT6ndnDoHmnOO-v5g`0ASlv!}g5nf4fsAp4_ z=9K{fgBIrVdU)-YMweT`m6dr`7{2uU=U8}o<oGRbc+1<byJeZFlhMJQ-}%qK@$4fX zeCX@GW?*Exdti(`BSyyA?P9vSe~?Nw(zm(QGe8AfSej$Igxa--g*k9VO(aU!T~bDm zR^E1p0;G*57`=Q-&5>H^xuAkNb0<nr=Mp?Rsb<<hJUX_+r;^tC7WKTbm1f}xs|qG2 z^lqX|^V2ILCAoF&Ahrc3qDLpAqLt9%7IMWpX$@fFuT5-;<oabZuYx4f5%`stPBX@0 zbMACA%7-%L7eMWD?KnnDskMc)^dMFqudlF~=8>aEbFW!&MIfc2={@*R)Zk#>>T)U= zanj>tf_5C;5-x?(N&-dMl92YN%uea@{nWf-AlW@fA(GGu?8*G{!KO~_0YYfV)VY$I z6r^aqC4Aa8rfuUo%uDUPxbX_fR8|Y=H6#sa0i#W32ZoC1J%#VI+Go17(50u!q94m0 zCB(OWl;El1kdq~6qZm{ARvWzD6tGiilBXA>Fa(!uN-H7CfjsYOBq+T`4Z-A`15m^5 zMa*C)85t?^pmj=o7g&&D3QCZqWX~au2qIUKM21f3qI*;<m7GYTk+6|#*P2DZWGoQ% zp{vSLX}C5#xR4<#qgs}*ZB89Hw7hU;b>+;dS6)4||HcTyJ&NKXkWzT#zcF|DT=(YO zUw-d5UUy))cl9!l>mZ<o?d<GYi7GkE3Hygnoj(7W=U%w?E52%Kn%&EG4{em6Ns?~Q z1Z249h~Q1U6E2iWm6SB(%4A2aAaHWCTtU-{7nCXiI`p8@o(dFkSwXOT^uWI9nQ^j6 zF|o2NqLRrnG1!oj#=Zm7j3f9IQjgD8Q*I4xag`Qem{Hq^Pl}F7_G|YbP?m;xV}ueD zd}+$PLUJOZjuxe|l^}HDy%H>{5@>J?8rkl8?)jIWf8mv(v1465>@#oknDP1c3L6mg zcin&Qn*-S}zl!M|N!6!AyAZg+bG;<HUi;Ll-NG5#R%n>8P(4Dlcy&#Z8kU?@Z_Dy3 zwR8V{_jYyt42zlRy)8NFvgsh8WW!h*ildF`)h)QvzpZ(#tbtK8{_Cj&MYG9msoO$r z?~G5)(Eb!LL36-MKH<eFE+T)6bx(mbz@TBJG(FS_8C3%o`5L*DPKmrfW02sTAb{T5 z3DEkC%F-7D=?H-0<y!$P=&?5T(`L$?`@!rE%FqV@De~j}1sx6Qx#lfb?=~}$<!4I0 zG30fUzJZ>@2lfq8W{__lIK^XC7&;cV8lWm<L((v7NXfQwrqz=T--KRXTHf9s>ggS1 z4v2cez^SiqtB+{~SB`V<?@KuBT9%h|B?*yO4|<dWB}z<%FbKr)n6Q^c)Ncw}<Cp<4 z0W3oTpc;|`=zP;b2<5E&=3YUQn?|Z6xpD#*tJx(J4hdNlIpdm?DHa~z^S#TB<@w_W z_Z>OBZ+qiB=-g-{uU%K(nZcxo4^H><a19H%E&?yI<ibgDOLC(em1@hGaO6oS@B$<w zjc{zPwL(RyL&7<(l3IBqvlNmfL<Vtrz)EH#2t)vM)(D*`JiaVG&^<9S*v*<dADdM# zW)VO}J8?iOZpdN}Eo4GBJHKI-I9zMg;8X+*Ir1w}jYBUQA(%O2q!we{p6>Ax(wyF< z06mMv|Cc;OFFO$m4_O%iJpt_@OD#t5>O-5iiRu?E^|_>8h45O`s|hu+t1w;{q65e# zg}9^MUPt2|oj9otH8f~}8rb%7HM;`x+=OfZS)Ih)&M*G*&))TxquRmgH<pL-D0qiA z43?Y5DN}~}zJFMb!e{v~nNY$eBv~3|NUh32+oPLk*$5gFw<0G=C=T+sxE1ebYS4v3 z!KStZ(Tbt(?e&g;1Psi*N3jPZ2$f?)nbI|?cAQh<#yc6RV7&P?9-~}v@9G^KnK?YN zwzk4*a5gcVUA(w3JUl+JZ)9|e)sK`=Zn@mH7cVcjqFTU=w-%XqRTq9349C$-Fp8l| zAXqC`1V93wn7Bg0T^Oi+csxzy!j+4Qb60qqlLyXY*Idiid(5}d4m+xfLa_!X7r1e_ zjsVY*Zhoe5q%H*j3t(OlAR=!<DISRhG6FSbNVAqkK~ec<!9ps6eILy|NY0fE@ZIC( zx#f$e?|JC0Z+qyz#TB=q(qDSI2L`%+_jiBq^Pl=m@7NR@J)C;!@>}2j4R_sr`@0@^ z@V@)+e#@JVKXCu`58i*>-~Jnac4?*inP;AP<l)C2{`kY6_~fTP&d!A&e#GWwaOj#N zN3OsAhOhnFulVo&>UZ4r<Nx6A|KMLc;DZ<ZBqiL{J<O*hS!1!fmT$wbopRW#m^#_X z`WI~zO1E2zs)wx{_y!Aul%}}Qny+q9z;L2i=urFl<K-DTLci#-ygYa1%!Ny5&%AWz z)l-+won2a(-&tAiT3PBEo@O1&<t27Dz`1>zw$(k_)iZL-n;z^LIk>htz+MJ)%kvwo z7GU$<?tx*q1x5gxPk7>2h@UAex6>tqf267*lA)`PsM*v>zZJxhW*ET62w+=*8$;Nt zma3L?xeFHyxiF~S4G%8B#;J>C(;ZcMGKJJTxax^;!tG5EA;^W<)H=ca?H(bJM4+$E z+6CGh`XhqvMX9jkk=+B^sC08A5Xw7UFTV7u-x2E>N-F|@MWSsQFKH2DEpj0fOX?@U zK!qQpFL%9MTRwDn-~Rp6A#JYKr)X{D#p9m~3vKv_bl3KpMc)|24p>lo=`u`YG&=zq z8<8DtPN8kHMLdhXleBv(kOpfv`Adf)ZJYfXydp;C-t>~AWV<@u9LeoT-78LU+D!>; zG;i34a!1eNU{;|-3N1);OdWNgRrZo8P9I223`mQU(kg)}6;joH!dCRsj1VmRPa#zO zGQoDerf(=LGL<;#iBVUo4d!C;?zNIK1XzSR$|^~$U;}V9qOgUiEDc}+gykcfpd>%- zor3Q2X!I9U;38Jp!8Jh`aYQ#<1RGG|b}-R4-B?TzP-+E+A2@X6mKUG8@VEcg4}S3d zzv?Dmtd<cPN)(EN`{nt|E0<oq>xOIp+@E@P-|8&8575Pvs~M4q7K)2=GeU3n4Sn>J zA6;HqeET~dq^`Jh^s2*nWQv>>>1b7fCOc>qeoaagBrR9YJe^JrPm&#}vCtC2a!!Fp z>2N27;f~WB>nlf(9An=>iUA)qx%{UMDnv`5qlz6_w=Zb3NZSS`%}k^LEf~$<-l$Db zT5gMok+tS+k65|EY16K{R<XulP1zST=imxlgA<j6S2B`96oJ(=Kmro(?)vD*KgoMo zeEdm7RKu|dY;UYA&Yw7W%?&pm5j?;m6m~*QqM06z<5nbR<~}5)#y+d`#tP!Fgbwex zyOCsbD6GUy=TL}-5kn|5m5Zi$r|ZU>Zsfas_$k9IZil_)ER`&#;I%}Q$Hbh-l1!*Z zq&8D%1=3Oq#|W=?XLD}$A|u1Gu?Ymn7UW4<PSU8O)q`O^P}QTfd7Z0>{__h=EWxI3 z#BjFcmWdR?XEe>N71>lD@0@FbLkd(Wst*vFk`1y2)i?xw$l*9vQNlYe=Fk_pSTKzH zK~BZRMG{*#p5pU_n`HLh=Czt@_g`~pW^;WJVu;410VSn?t<#9_C=90F7dXU`h(9(j zi0!!L=bnNOLuX@001=VzsrR!e0xB$0&`Q3!sRF$7$Fd_wIZOsK&4CmpJ8}M8YLQVN z`3#}KaZ@)TbR{Ve^2QqhQpU)ZvLVL!Id<$_a)JOb-gJ?rXmNyK?G~l!7Qec*9Jm)? zQj56uDM!)*WFt7sL04C9zTwEoaL@W8nEE*f`s=3r?`-YcH^G2*iD$ElC)*fME>bhK z4#VLeWEoV7E&xsJrckA#4F>;|1L+)kEr&N-UicMy<$$colLx3k5QJ9hIh5j()uk%m z_RQp%ABES6C;%&+yb7xvHuBJn$CzaIFE6dHt>KG)Mp_yrPq9o`!6F(lB>+ft0fnN` z)n*!vS7=5C{f4H~ETIq>YajhcrVCmtD3bW8Kw%&;lJctrBkGD!A(l)D5KmzjN+U;6 z#5^(ZUcwz}uL(2^Uz4f~U-Bq90)k`??o^`=-J?unT!WC+<aU4>*xk#Q&Y`h@0#;+E z019-Q&C)iyov*Tx$g}=IM@tB45nwMnXiCYUkxWQTvf+46szZ|_Vv~zOwY1UBQPe3- z)+j>u(18P!6XO>zu>lF&7u&kQU;oY@h`YFAhB0}aWFV^?fj6@SSB6wfy&*aA9Z#V6 zQ(s)3lp@y>k~@tR(m;ZB^8Nk8GyD5D#zq$xFE1}HT{(05%Fvb3$?5UY2^JxPZR;gt z$tXEk(ze~fz@(ZU$s!5Sc)Bn;9l~TtD~RJ;#tPlri}Q2ybT%t&S=T*!;LybQ6mMZL zG3pjiwscfL8d|K?=#%8Ivg(wMX%(QK<jN~46mee>7ytku07*naR58+qIbt{&oPn88 z<|RM2Y09EwC?L{e03&xg+?~yp`Ae@b?fZBBhrgc1_Iwyp4e1SfyZhexj(7a_zyHr; zqgZRYZ;(aQ3m^F4!+-EQf55vG2lh|hb=U3heA|QfzxBR5@4WS%yKlSa?py!zU-{0B z_3l$I%|7|$lb`zJ<4-*K#1~$C;lm$%|MSm%`aOT@D^Ff`&Edl{7})+Hc8&4+w1e?< zbvB0D)e3EK*yfvQ0x5!VGMEmFGO{Jl8c!~e@BxOMpARG{5Xx(lsq)p8%kvBD#&zYw zg-aJNUA}aF{>r7D<wf2XqjA_7>>e86TRm$tM-Sb4`&%XtT{m{%_&VDmY<DxQ(A_)0 z(~z#6fw`3(KBlnV#iulpg`KG|k+w%zUadqNxLF)2L`x?Jx#?;w8gy%PjT@Ct6%<w! zYb1SQ8NsM3lVOF^<?$~;IrO25m=0?g(P!C90#ax$Q!J~AU<m3tp+VqGZ@V7xP)bc0 zYm_{&E{0)XeiK(HT`gBnZO}weq@P4jhISbiKqnJq|6~x*z1e%ih0suMpi9VNAUZYn zrB}}KF#x`{<;^<K9>~-vu4+k1x?C+OH5W8lNnv_mgRi5nA3J(%d|ZbGu(1h14!lI; zhc7ruG{{pKWCDb?5!*?OrXduIYDeO*GOc3~v+RJkSwX-%J;7F<Ag1=psdH3v6l&4} z+aie833rg1KyY81NW4ieHcg~1rRf);ghK<Nb&E#qqQtu*G%&9r018@5#QZ$w;KQ?o zt?(qKaU~>NSOL{w1kG6fTG2yLQgWtQNXc-fF^DTRBcKo=Ph@MZVsUcnhsMLfk%^Xf z>}!5ticQC%61CyU!9@qj0LxCGNiLlB45U6}Uh<(2WrJSAM6JyxF<P4y*aoj7OB*Oo z4UIMt3IvM?fu`9s)M3{q=BlZC`-dkE9KZF^kACE5e&#=X@ArPw8vC+ls7hmiMq3-J z=g&MpxPAHi-}e`$hqil{SDYQdR&=p(S7}J!&W#TPEN}Gv;Uk~o{_~yhd^-)&RYxh* zN$Ny9fld~I*G(*dHmk0b8r#EQI=Vuz5C*Yh*A!)`ZhC{JkEF5OLeq_vlgEzYd=6jI zd<ulv7Djs*ZrnOjb?-kgh5B?ZfC&pbnCl__`HUfxEXbf2=4qX~JIfZxMhvMF%h@o; zo*ZKOe5JN380!dTZUe!!K!VU91vbe#d{DjJ>;A(Je2lO64h)U*sMld5Sv=ldU*2As zzxVF9kMWvaU`rZ|+41RO(VTO+T3&~yn88;RBTz@YDh^*UAcrGT7oEf-bsHknlCnA& z80Rf{Uh8umJ}ob}c%G=Tj>U^wW0#UP_-(!F@N7-glq4;H1a#5u<%P=^x`s!17Ltxt zDPu917|yxocoIuNw?ZVPb1Lw#vP1A-ATh`wxxbICYN}JlEqtEDD;|B_gFIg!7#tlO z9NpX=!bggdO%OX^_D|&N*9=jndi&g5%m;D^wbj$#KiS7ZIouCDFieIZ;wU$T#=MnR z{{2Q3S9tr<Bhy+2UijQ+*XJ+HUYH&l9vB%M7#L*3u0iDK8RYKVW*8M6=}3|G(kPR- zQpAP4)4(YL#J8pFczsWdKCrj9Z)cr{WK3Tmm^)5u17WF}LkPdwHOAb*4(~`?L3-ES zU7cOVXGbT|Tx$agUj}l_Stz#lRHYPmAkr+FPLhJCv45#+tWsg;0$qh{hMTd!xEx#p z3XY063{Ik1R@0PfU{TE*C#r_MKSRm&)uo-Sl{?;WeLuS#c!Quq{Ij!SUp^Uum8Zu? zrp5;sW>?v+rMGto@#Vvz3MFoZ$~#Ha#l3g}LTS=@DP0ov7Pwdrjlu!cZIdWqkq;>p zARbHz`_celMMy?YuF$f}1<iK0hX;E{M~5vFT`H{;7i?-*1YR@;jxeQ521T~hKf5r$ zjnc6%kg(geTVyHz@&zUlVGLA6p%H=-+S*(jA7$5%z`D{!(G<Zzi(-+bjDsGz0z<UD zwirPq6`)LZNJ=P0%#llB8ISP*R!)cAEm&Z`_|%GTP9$tWu8OpYx$Z%M2@jI1MF@c~ zw0cCKJ&;#X_+v#N!YwF<MIXv@pucO?d%9RkWy2(VNwYmmV`BdV5>>#FXqu96#WFTS z7FLWXbmj}2*wv!RM*fA$jp^aT)7PIoe(~IAwzk(<YE2$IIpLJ;9F{0B4wsrW?}&(x zgjCT>(I5)f5HZ*?Qy&g6Qwan`VFho*wh@3jQKe5olLC}&<Tf9J8J*fcJTkVv%-35M zt}LB<WvQ=cd~$khf?M}tN=<*FJxcrJLsST9U<f5Fw}xrN^B$L~M>`r9MqsM30xa{+ z`s}666+f0UwC~`=<TNv>JYD8yoJJOUP>%kz<={J4NvoaO;oziX)+~+2xu&klo?jXd z24{$)P{>#zBccnHn+<EDR)T>ng(Ru|Vk2&&d$v~QFP~YTJM(>i`!C;q$H^;~X8U{l zu|)29xj$Na;J!EBb?+UY{P-u9mKVG$-r5`<9T^#$qNCwWf#3P<M}Ox(ev|^AJTP<T z?YBMnz<uw0*W2&A_r@D<n!4%wcYMn?y#qPfv+%{2U!tu&e&QNmKjRHEe8b|>49J98 z8q;D*C!N%RI%L}|Old`wY+JhcG2tFYAZ&CFg+8}M>ZiG48Qa!6yKAvvWPbk2#o0?2 zFJ3x7d->wx;_TwW+zxM7I%=WA>UWn;NK<CKBLLIojn&1)uHLoz;nizydgJ)a@x^7j zZ$8JtNQaqY?)hNW%SN#MNagmbJ_pGC1citm-c*}Ghi{1@o#dU}aHol=3Xsm}A?Nrl z<zRV6MU7x-nQeYnXA)xFRZTiV72=ISG>()!m%9)WsqkB?B|-T-tS*M*JI4KU4va)t z$HIhlWJV;x2$Z3#kK#&NxEb?^A&i7cGAk9S6x^Pqg>ASs;)=kpGRyZ(;)uW@SaHsk z)8u#JnpW50#g235E-^mfqnJE^P`xmhIRDjTNXvLsR|XCVB4+@C!z)@oQaO43@yHD@ zMP;3@5rgF%ilDNk`G5np<)lEWDV;J2dY8YabmSCEg=+~#g~d^9f_6rE8?TzlM$y2F z)4+Ewdx=!;UXUiN%8lM4l4^?Ll(`aUPZm?lr|>(bNubSbBhuP)H0UPA(<ITN>;bD_ zBfT&fi%P85Rl^<gRly_8Zbwq&IFr~Kx)h3Djqg+76dTPqnALhi*0LhaaurjlG<F0n zvTe+C{=|q08h-%DBS{IVCFQ8apyD~j=hc)ialkrNI9C8m4|#_ISk)cN$!y7(V?cRm z1E7$UY7IMhfosI`0^FWhOI_|s2Ad<}LS3GLFrTfNoVn)G<cS~rp&$9y_k1Hu5qZ|w z>qk>;Ca+vPyR&faTi$W!yWf1WXYH~Lk%XKhi1xaa)6H1fzNYWg`MFPh<|Q_Eot~Pe z0fa(xC`qGOlk)$M3sfnzdc`30<QHXAoQP!Gpp7UpyKYNC6bg{9)Y31UyzZ#OqN=!- zi@Eg&G;tLpUKuH`0|)lenZVRSVOAJ-Gh0l`sQLw+LQ8=lnTBurEFn8b$aZ3T1C8Yh zAml5z!RVyGrwzAqv}E9`V5JA*buTV;J@W7;clw9=huFf|RoO_(#P;$sFX6Ag?QN{* zuOrMgTA5EOMXNE8nrW522NMJ=B4F*F>1xcNClE%v*O|oGbC6av_oPKq;^cW3hUMsl z8G39Ea0kkmY0HP_3~19b6loey33yvmh}IEl*OicDOz}uwwShJYJ@oVaJ6r5Ow=~;5 zzCX`$f^1$I{X%QfKv(<5Qy3q1?B0OMESwOAF_VnAAwTupX*A#VfrKs*+TMQ-4-YNO zuJmm8ec^MjT(~g2z0JKR6kU;sZrqLSY@S_R<OxUDGoL*(Jkqnlh*qiDj-Y2~knt?t zkx$x7S8{mnnvKRQ2?3lP&=CG(N5*bDOw%w@I)C=ni)UYXc7Trz_|F6Z+m-pY-00Bg z(8%C0=OM%!=G#(qZ-WE$b1WFvB7Sy}LeRRdiQp5AY%k5c!v-6H4X~VYlVz8@$j~>$ z_s^LR>Bk=wnvH{}`p1Tr<`&M+EuFnEd+OygFP}d9;tQ|5`T(pzQ@_fo%jcf^fxr7d z_PHYl1Sv?WX43}mdUlEceHb9ZIvUxuG}>7*p!F;+v3VXIt(B$W7&(&0n=q?T<pou1 zEUiu{cFNOI%;3zzVs!x17_3sd{nqPtwwEiXIxI$sG!Ior#)by=PmaHInb$yQ8`(F4 z&dfn)9VQ}@>NP2bNoX$0koBVip%~D){jhpEOvZ-kna~cv0IPr!6XCxIiB~MJd6HwH zu;d=Zr^w|FxZ~u+G;=AA!bPE?F|ElsGQ_#3aq7o0Ha-Q4&w#tT7gjcwSJ?AzP}9mZ zD^|)Pje22~dXoIIa!Hqj1d$Tw8SL#I8RD%BV65#0ubpHmxo9Xshf$_D%tb38i6o;g ziKg^4DVSIc!38crsqJD#1^|@;P&w<#d+0V~zvQK1U-?%>cFFAJCm_!iJAH%F<%qPZ z6Ty>ck}0pnFR97tWOUSvJwgg~=!|K0t#wY>H_f*rD<5s;nMp@r**YPIH2z@ev_Y}w zY~`vW7|9AxLjHl>3RTPlo;MYCwns;MA9(A%k9_D8%S(%s!!tHsQ3@CX`~^qW#Df`@ zoOH<In{yClhb{>h3gL*1Ep=*DkU)!=xG4(TNhQkMB<%=S(o;cc>G{|~&*aPiA2(n_ zJ|-*|E?rodogEnA0sqY4@GxX^+aJH8BG3qGU#MF531Z%e0U%>pD5Dm)(o{Js3g3R2 zpS`rcumIZd#LVQ>bkE>0#Zz-)Y(vWPF&T(hM+(I<q4KM=D-fa^lx-KPjR4ldQ@W@r zuAUzncJ1jzyl<6&V>I$4WJ*~|jv68;m<#|uC)2aNHh<~Wr3){9?KgbI-}!;>p@APc zGL_a|L$l-vwfYWq|LU*&{4e~QU;c?7|LK8&;ahLL{gqc=K7Z~!AIMb*KC(GF&fO&2 zm3;K04}bUrANpti{GU%xjlKCzw|~XE-}TVj-ulKj-oj?cx7=_7B?0Go{KlrY0tgUq zbX%0=<rU^R=@?*#jIGOP5RmW&v<H>pi^Bun6tLB@4<(h4?cjJU*SK`?!sUzSE?>Mb zcj*$-0bL6Ve#nEHYa2V%rskuQKES`$WJ-vQbeQcJ<)a>xlan(C4o<xExktY6sZX6g zKYMKAI_nW-Z<EDT0%nE?1qEv@oN8n=c14t=0~*z8?4Z2?<{*?pQ4kJWQi=oeM#xFw z3!`8{Cz}vrh83-s5;#Z&4@+nhIwgvd2rvA_BV010BT7gb{L75P5J`10K_6@_T~cu_ zUUU!e;%yA!I!DNX(a?@$As$X40b{Kdlw$3GSvOR#psJEt1r$h5q>vDlPAqm2>}t>! z<@K(Osn^%K=4O|A`{=!R<p-+p=ZKtjMu$fIGD(P4egMg(<RQmLo$#VJ-u{*pKN={E zZ{Rdq*3~5)Ob`qX40rX+(Q4qPlzTHK)~Hbs`UapNa;Y4~o+z>yXp`4{#>dC4ynoE2 ztXGsljg{p>NO>)SmZ#UoRs|WsB9jWXg;)iZDj8Wq%syQFl%`aZ72FE7lAED7^M`7Z zwH|V90UE?y%;TXGSyb!>hYZ4z8et*VvT7(uC$t*!L=BOY)X*&z608$-8YmhPTk?dZ zYh9}P9Uj3C>aKn*ca15jNSQ<=)Ux=#y>Y};Za_k85A)zfyiSg&(kndaT24U*J)Ek- z1WlTzMN3Onib9D{p@frcQuyT3IVpJD0U(N!Xtg;C!qe^Ep(7`5dHLy&{>YF0t8e|5 zZ(%UQtsbha%wAkLck1Ba*5CM^ZynyA>*M7D#>9E4I7~8#gcR+NjT^no&?ley+?BPi z?Q`=V{^-NkAOFe-xJSB(T-sMKLPw)gt8|J6C>?|DK`(8SE9KY<Ft>eCzaqhT53K;} zN~XmXgUJ(4zv0xianlXgQ)?Z4h~8K~QfcZ`-*QB;i}St%GjwLGwQb@GY5~UOs|N>A zpKd%U<Sk)H(lK?8P%j-pFu)<HMwSM!(uHX9%`Vc4tjxt}52=6#k!;#AWZ{PGv!8wW z#g|U^PaN;<9n1%U9cplA!o)hG@(1s`yWv=u(AXO^p_AANv^d;DGCU$C+s2qgsUFsI zmfAUxDqVuIOF-31qtXhM<U@nHw!+Q@yf(%Qk+B>3X<ky1al0@RT9jBYg(ch8L;*54 zhpYSu$VZ3aX~6v4xt;Z8wzTf+8(OUeP2r!L24EZ1_>Uw~j?^J<nL={+RB^^R+{p6q z0<Gt+%>U32{ZQ`!s{`yD^g^E~6bb`K?yCEL?8kqSIXU+SBVDmDmqKzcKQu6c!~D=c z{9y#;c1#KpfbIHWFf=@obVnv)Qe!FT1Q{OCyphO_pIJUaAwlmucJ%P~y!X3!wR3TC zacymNb(JSRe7<mHePwNaZgKYFtc%VaLi_S8(+7yiH>ih)21l4M7#raj?q|tCA5#E) z=HSe^ODQA2cd)`sn%(`E=T<MyuU}c%piks;h$u{5`>p@@f4_X{*>mU4Uc5ZFxV+A= zZg^~bdg{OpH{S4-Z@-Jr34ijbmozNR2rh|2jQgxkcH>d13M|G)LDGRNuXZe?s>D_p zo%$*%x8~mCmQ4UBfK}C>1JszyN<#oHISUj}t`-8njP5{KUt1pN@4or^<2*Xc7=faP zc!~=^gx=a780y(KGu8ctITj$g#1#2RH&3!?rb8AFiZ@BdqDY{H4Nl+-h4(f5Fafw~ zoWm<W33y4=s?9BcWQo_m9LWbDwFJtn9Z3on-C~!q@v$K`<_v^h#ZTK8R@8@wT*8$X z+gWNhH#fh{N_hrXN{anm;~+#>iyL_&UuBfuiWN(Q7C;ewbYzePm?A+zGp4wUUCXu* zGAJuqw46G7<|<WtVDAeoapF)*AveZpD707=m4YIvUYJ|EifrN?q$bc|dQ}FgoufgP zAewu0QYyyoGu2)ct%jmN{$jb;!wd56sfABUSs(;d1-p8ilG32%aT+!4Ey-nL6n3B< zHk>Loh>|m)>`E4LNh^j;ys{iV2wE6~rRZIXsp&_V$92BxPkhz8e)3=Z%*xXI_|$rL z51-1Yra6XhTnLn4aSH#$l42{6ehX=2Rli6lbJ>-cg|`R2vXQFr@Cl_;Z?R$ox!J;! zs7-2z4NTWNG(K~9cw*lwkNamYuP<J{G=FJ$VtkC<Yey$+xq~Ej`g-+6PGn>B?+rN& zGy{~mA%x!M+QQtG%RYi;@y*!e)Z|Rx5UUcfPDV@O`*chyB7vVkv{U8yH&;uL?jv)v zfRkmMABS)vh#o>oRVw$Rj@CZdj0F(NSy*Gh<Bu*}2#rY1eLeF?%nn?Bb?N+bZ-3X_ z|J%R%CoJFV_Xd;w)?h%1K$&u68n}y{`2Jsi;m`f_PyOuBNcV63U;k=oVCVF!S3djM z&p-OfCqDV9C!hNCGpAoYx3S7*@BRGa0JHO5@BhH3-~aocK+ye%X70S>wuc^k>qGB& z+nsmbFga;8PJ13Tc>8m!d*L!S^Ic<OV^|jX)WQ<8Ut+@mq^I2jaD%RFd4U3(y?p7) z#q*ahU6{Lkg%>&48)t``LMGhRHbz%V%*T01PwgM#Q-#B0)1%{4>_9O&!wm1#=)?pQ z<o*4F^sjJY+GcXJd+ze9U0qKx*-vB4-rjCJTvfuG3exD9v5B+Slo5YKvXlU`d4u5! zEJ_b?X-9p;1_(`U)8<(493iML874-)AT;es;H2tgTa*IDP$;86@Wz9MX=0ku5)W`_ zgdIScB(gWI$qK9>BhCqlD&Lk1F&SaD7S54Gch5^NpZmn)7gv^Nd0kQMppT&RDb)#C zCfLD+g#g<gLk793nt%XBOmC8N=!j*A+Q=6~pr<HY)JiwAth|-yaV0|~_ESYDI9X!? zrhITD8mgp1h%^~;=&oE`LODJ<diu=V?EGp^&j?XwY;+3`DKJ%7!6KB@WJeaQ(q>eZ z;oHv?>gIO$lb^o0zOrNkBN^ud0cLAAgy3me4@;1``dDtFF&Iqohzr@_CbLi!jZl-o zg;>}DrDUXFmT1v4JHPzVhhOzw-E|&=*y2#;IEO_LBua{)_S92i0oiy^M9yakrbFud zn#u%@Fx9q3D$R7GX(z2`y0#uGanCj)GWO8af?8-6ojGu#983$80C3glv`ewJ?GL#c zM0wkZSACwyP8T1G>Kht4e_@slb>rYt$PwZy8$9_pI+O;D^3qgTh0~_)D5E$4!Gg6n zN*@gxH7Y}|150lVg^(vnP%c)ea4S(vk_xBhpUN1qD#J1=nF)02a!^F*91%hJS~`gB zBl<uJs6AU+4Oa3HM}5Szr=whwt9noq#9tXAIRUB=IkF3HLYA)>+9+)r0Ut_&%$I<N zCiV{>yzZBN<=>w;c`MI|a6l%$FI{-Kd-eSLzU%96J~Gv}dO_b8*LpzhmI^<OkGtp$ zd<FMok3X~7H?_9e^Wl#?_TB%@R|>?Tkeu}-C8#tnt#|?m5lD4zvdFKPC~bN&L$OKP zU^8Z#khC0n0O&;l|C6c_Eaj>-Lw25!-CzYlZ`X;F$BGo^DxpMc5F6`4F+z}?-g#$w zYHDz3aD%mzHd*bADi5S-8^bQlWkD-PsnWEjW++rDkwSQAj*>0%Hi-#GP!q`Sge$rW zD>KttfEdU|iX<&d$7&KCKSc1OosWI|Q(fzPdu0^Pww&II@h0Bp(&Friqld1)4pX#8 z(TsF$(tqVj&%<4!cgJCF8>V=us2n`NZp3{JnM#cp#Tu3Zr564>OY9A_k>!V&o*jTv z#8Aa-s3wpSmSYeo|4Bk5H{aq5U=y-!6qG21)4Q{{aFLz-`5p~s!YDMe)M|;h)En?z zq$CsdQi!XM$YPl)nx^lanwfd<-S1vwSq=~LF@(#r(GS2hw;{lqHx{dtP>6JejM8vt zMM$Hs`FvEsnnDpAIdcchH|j=47%DjqWG;no1(wWMA5=Qr46u<GM<fB>^xXsfy<<bH zy4>FC>mMJVq0jQMvMUtrep%(QvA(&sPSsyp=2&6+V0C$Qo%w^s`33ec*x)sVMut8f zv+%uzPks8c+ndX4i+2tVyy=zaKX>Nh;#1GOw9_|z;>c0nF}O0n!bAeE{eJi(9~<ml zJ#qBl{deDX;^>iUj~v>^qqOm{L0-V<?ONXAxfT7bk0=@+XbS+%RSS!nrP<<FRig0| z2Wet$ZuZPC@;xDf!kGwESzF(Cz+%CWrxgu`UPIo*luQ+Gl~D%Nn;UD(lT)MD9zC$V zwd@iKO4DoyExH4&x3(Ct?w^_H+F`d#JB1=bUUkS3N!E&&E*d-tRZ1Mq3aPFIng~-J z>|2cA3!t!8q?q42trB$v2~@}lh;aOK_YN((S}4R?=IHSN?#xV#^zsCgm9aKZW(cCR z4gW}z{sK}QeLYMAt*ox^bhBTJ!vGzVnML%JrNxq-H3DSxK%x#wwqs&iT-CN-YaJ`u z<k%=ra?+wg(D9C7cCWxwdcl%5)YUx!g)AP}OCwXhl4!zkNEAy1UWh1HI4y37niP)3 zx6&HCHqu-}tAo_W+Ur%oubUXEE(hiSpo%%XO9B!byh?1~0>66_vz1RfCZ{m9iLDM* z-GbCeSVE$W1xiP9%;gZE$aO5&q~y{-6?9<;Z+w?VrBpqutSS!PZ`j^mUF*8%zFTg) z^X6xsI<v8{)H}qd#VC55L<eXIMZTh+v1MS2t{{Pn3MDV#QCp?-V^gDgK`MHP6&^7K z@=|jRAjw73;OHITSRiZ6YaG+NGdeLdIy%Z*2lIUFU}0fpab;k9ab#kO<yG9!_yj$C zB1V`xLUU9>glS<G*6?Qg+}xG*g*kRR=o=ZCp58w&GRD0n%ro4ljfi;G*+?5nu}nw5 zMn1txsVEWv(qtXo>JpO*sS^~%Kv?}8o0-g?U4DcXsO1|Z)nYDkYi;H7#h2GEzx2*O zanJw$^FKK`maT*6K0si+%6%vTGtgm?m~*7P1H2?R#Jd43gIH!bf5Uat*PXoYtH1g_ z>N1Z{PQ5t$^i$71`sfpnJ^th~&wTdcxeMN|_Ybh@es*@@{U7}3`+xs~XfZK8eDjSr z+<n&@-~NubvFha7YsMIt(zHJN?28D+jt0{cL%oYDI2x~#uCA~0L4nIxF3(-Qbn)Cp zPQ1CXwlvEof*I6d&on8ep?5Wi+27sodbpAC$<c|asmbYysRLuo1&mGf3=H=44efLf z+4tDuK!d)O$y9XK^z2yBM}N5Hj6X$8+hi|-4Jc-eVtWjI()mx3LZWGp#IHJN6V+Ip zG)oLVmVgCo4`J~*^J1K45=@GUgSaO&2cu336*R9L#TM2AhPs?GB_VNT%008A2ICf6 z9p>T4BsK|cld?;noLE84Rh}0%e)(5^<rn|W&oMy3j~wA*E%gnKbRupn0kaO_1i*lr zQYcy2CLm5p(Tb)Gp)Fv{Kq#FzNgU9n`*A*42rNS!a@B3P*Fwph!GuZ&hv62h8wX}a zruOGvrMjZXD+s?x!P)ZTVqFgT;Abom!W1TJhu69WdjI|p{@~x=UXy)MP>x7Lf;QpQ z>o(GZ<9zYSEM2HTWh0ZIkk}|jiU+A4sBRhYL!thGhd=(<yWaUHS$Krb@)5tFa%~AG zt0h=2B_*gTlL7IHLnz3NluXyaDi8rE7>fX0Q>xJ{&L+x!&yjec7hidGj+j@@VaJJp zM5sJ|HiQsq%*tW6l7eQGcE<bxUT#PmD|r9_AOJ~3K~&=LR)h*$g4Ul<YMA6wAhHZa zqLrI-R6`1CxF<(25GWA9gB6bxNj8>wm?&pFx4AS_g9;d+4WVdcvI8wjkARXuyu*M5 zj00I{2g``VmpWt(CV3bF*j9oH8S9{hv?+>aM7myEx`iv{`~sS0r^uLEp(YNXJexzs z61AH1@)Z)z96IvqXI}c>fAQD(k}G4l#rfH_*$a0b8UOBYes|x-0<Q(zD9X*VQXxxJ ziydgo`{q|RpLq89zR`UwGyd4eKgpJ1Bg{M3QM#5P>P&jbnNOh63l&X}LrTq41J*%H zc8aW${QfzT__~*$N{eWPSHgyTh&IHitlccNUg{efxaQi!I;4gTo9HB2Man6%HB~Es zW8)*d8-ISWS->r7U}c;@$xB$rSD~1SAv=v)+hhq?hz)iOP?&WVq7g&71y+fiTV4U_ z<VDt)x+$eHyEjpEc0C{b&_~%)XK;9wD0>jNUTkM;ZDYA>eeUkN-aS4U-z^r9l-M8R zV1U6A0&fJMu4>iNLV-TCkDU=E+0>K}????u)QR*8ZW+eK7FZJKen8xoXkFz?^PySA ziHPKoLD9r_;ui!PM`~Q&Vy%*Z1mqp_SmHZd3zvB@ZHH&#v`9^wf`xK`WEAoVhy-JK z2866VM+7gpXg4-C{&nB@4a*zrlsr=;$-zDuCo_t2;jef2GIni_N~wA36@^9~IVi^? zCp+kLYnfVrIqe*G>>DmD3@^mMyP(n0y-Bu;^D@E~@4Vi6(+O_t=-{}g#Zd62O-35k z>FFLC>=_ywn(oCtrn&oN<U&(Qd9vRI3qaP_)>qfonKfYJfR*)io}E1QiBDgdTUckI z(cI-l<`dTW^!X~Q4ko7d4UdnG4~>kRS>a}(r)%>E|K1PWa&lkS)&he`qFdW5%n0;s zFYzI8KC9Z-f56*d#H4jpTbL_*lrcb?j*ujH^WBt%rnU{{-<N{>c+FvMez~u2(voq& z3o%hR2PtNiSRI<0r1Bw45?Vx(shg3FMHm#bt@Y~SvFi@bOiyet&(rCrQ)>v(>w?Sl zdT-zMA-5*s^Kt9)6kk^f6C$0Etc>YB0kF_X@vOWJq<xrs9Po~Y>H!(BKnUN83Pv(a z(_S%|{a;j3JcDY+^DsOLPZ;XU@_{U~#Mbnb5Xl;3(51`)O(}!Rz?l*7PT!UJE1CIl z`oD}ORDk8&33QOn20;6GL|~c#B!cBgf8WsP;MV4<(us>X>{JPf)zBp#OPa!=62i8; z$Q9JgcJyPyRS*>sOmzygU`+8JlIq!^8Un9#`Xhk64%TjxZ?h++5GBaoKmjKGDo!AE zjJp@Dv1>yp7wp5$IqjuBs=YgtQL2glrsc>`56xTqR(e|20?1jE0<ZkYueqAUq)O4G z5O)F!2^jOy#*B>g{l)iv*WdoWA6lHdG&4G7E2n>Q=S9nfC|0;4Wf|&AyT6pGQ4aHf z<KH1J?x!IUzR{(S3$)R*p~|IT>dkQ55F3WLWGFaBq)nxn<)&X&DWV-VmE}HTcwlsJ z|H$O(iXS>yU*K+kc4dTB=QD#NQ?!~;W8lQ7$U772mCc1JZ1DNS`AcgHOVqS(K=;jz zj7_9Z^c@phGU`;u>T=VX(MDM@jgng*_0$sIl-P;cxB~9v2;|WkBB2%tSh8ebb||P~ zxLFMgt0bWE)Bdh3&dpywy*2;pw|x88{=|>{Pa~s#W+9l7DifbR`?W#EVy;Q!^*?r9 z-dtbhJizBQ8wLtCJiK%3Ez`H$^x(IA^Me2{E$%%3!l}m|ef)zT`S>S4`Q)inuXL@s z+{<NqOI?pY{<+5<dHSb+>R0;)``++|Ti<lYZHKNs@|*wXf9f8a7#-+;^n<^B>eP$u zA2>fZ$5H`4xJ0X5zJyQE9MiN#qd_(i*clq`85!sPe~hVsseMe%OioUWj*RsW4!J)~ zii(cdnQq5GUF&qQ@i5w1N`^Gem@n_*8Vr(nH^}iZoEYG6r)D8pe;Di7LFmaoSs<iM z6QI-duAg^V_(L*mMlWqvyp}TIpqTYP{+upoiYsybUM6Kuil8aB!XpNX`N6eO^Ip`! z76+qX&ypxAeEq;0Vy^fNP2B>i<XcHW5r{*=a!J(TMPSg0a=iKGn{T=Km@7zlSO}00 zJUGD6C&Y=^AwVoM=+3pEyECLf<=#70MKq<v4ia!~1p9+8%fMS%Qfm}Df`Vagv)+KA zQ<>CUEl}XO2<B5M?$L41zQIegOCS5#GlIh;EfC;V`&cl<!Qe<`O(@2Ktlm}{fkDf* zy1q6(F@Dco_p!*DTHulacF6*!^D2+ZxDLCgd+^DppSyCIj~i)nd_kQxkw3e_7y$c( zVdn%pCCk6sFj05><ndc?#qt~5-0i4_WklgBfBeTy;V66tPp0b=*(@5N!lW6Fr~MHF zqJRRMLlF4Th*30&l(*V1>j+#dJPXqNXaNnRfF+X)c`GokCZwP+&>|Kt9740oKG^XH z3tf&O!gx|Z4TNd{xy9qaryl?Gi=TfkDAClCkX)o_%>%Kx9&&mF0$KC`FlA2r=lq{_ zSC<h2Bvf_A6cC0U5{aha&JATU$di{)IZF6YHA6BS#-Rz%ge)5z-G}I;h%acJLZ!t^ zL_?RpiV87+B@?Df>Jh6n5+*^u))#cK10p6F>s4$mI{68km#{E+aH~y`5T-(n#v!lq zL<gP%!s<Mo92=h*oId>IQ=jV{9A;F^lH<Y6h5zZV{<qf-ul26;@-4QcDCwsZ7PkPG zkmauz^ltSHzxdLnQ)jRAAH0>PzMp^Y#pho<cgM|#il5+Ld{kQ5rO73!6HlNM>!1fj zlLr*S>zk}$r2SF6n39|-aRYLO2!~b0qTmAD=IZLc>B)Wjrm{X)JkmL^b0clq1t9Ts zDMKY4?Feryj*Xqayg>tGMeq=_!%5ME1+_9D#BH6xof;`pR4~9%;l1Zhy0l9qi3({7 zr;;gfL5!3r7-C**4TPkCcDm@JANj<my9S2nD_KU4g_u?4zI1JAVS9b~!3XcP)v!Nk z8x3iK&wrZ|R$uBw>%p^W_WZ*oWXp^aod%1mpkwb*W3UL?Apsl-%~^vP_bdU(@T7qt z3llo+Mo_8OS3O}2IOgyMC?yp-NCBx`BUSOGSTfF}z<HZ&?#g+5L1w8aVP5h_w(ui2 z5vAg=LIZA(wD%|&Q<6~+n7OZB;Q<Rt5VgtTM-{bM1rA{_krM=d9Wwd{(tgiYoEqO) zKP013Iv;!Y@JkZXKo{S#sbe7OK#0Sp05UNHw+_>jL;I$OSJ#&YU4g`?#t8?Ek{<~f zAn_=dXZg0Aynthcf-!fgY*sMFXP*(ynR}+`S>({yKRkTfo8EHy{Ht$%!+`_)rziSv zJbJwA_dfXeSH1I|TTblf)!OG@7+@KBU+?zRIJ0-m^~_N~9H@ZST#zp*_He%2tGap* zkCr((4)YMsEZCDrEa4O<eqk!Fs;#VU&M&ed8s8<9ide`F2@4HEc5i^DB*Qoms44)k zg;9u!BN$)vV>r;YwQ}1{x3jC?$_h`mv>m+~=E6D_0)%y^&3*eOT{54oN#KH{4OtKj zD@XA%UF9K^L^ImM1h@jgssud0QMJj2Yzr8PjnIHIgX74n%!gQI74ook&Asb>c3Lbx zVa;?rMR=&GdgKAXNvaqOTSYUK!xvZ9x0Y8~Q(7-iD1v6=8hP;EShZx+Ao?>98k>+0 zCx~h4#`m`-CMUX_Nr?|*Jj+_Lp@|zCw)JcdtyQ#=-lSGGEX*v77J(}%mVXHn0TnmV zI*Wq)(fZfemAI7lkhm&Xv^v>EI1qb+S7GdpFxnv+j<AqQ$+s7#@|%=~Xs0>58jzUw zD6^ZTfpd_wMO#vqObV3hXhGWeu6;=%Q-f5XAPO<(HfOgKI));vv6}bV5W!^#u&2#x z*L&Xc^*{A9zxesjo?ltqH!`*#FC`Z?xF`*PG7}HqkO(QH+Eene2}!ZT)opHMQjF-; z;#O*<1-UX{sllZkwKEwNL|jke)?CyU9rmneCQMV;Kg2G%BO~i8;|sG_)|QsnmR5R3 z7N%zQ4ULXx(-cHw69IJKE0Qbo^Rt^vOI@4W{UgJZ)6+vE<5Vf$cdtpfk|dQv-;B9U zQ;cd4$|9sGt6G!e(fDN()nsKj0b;Duq+m(WFPc0W>@<IN7zOOjYjyLvv!xr@*<?$b ziwoyp>DpfUTR-rZf8hJSr@x<D5;|-e2<j+}3q)w_Xh#tRi5=FHHaR`WHa^%gx6qNR zo99T1$5ae|$U#BVh)s@nzvYd`-+bqZKmQm0G<05kY3`Gs{Pc%D{IN$LeeCm}`@-V< z8odnL-SF(<`4`SS`Q&F9L3Ry}jZ7c-z5o25y4-sfS?QWkfiZCYd2PXW-X?iLU}|dr z_|*Q%{Req%ZFp>=mv;yH_`){5R3>G*y175&+bi73VHSG1^f@*~>0)CjlQdsODZB`v z0(h~@1~fH%cP81vd57=!psNySOu$9(_S~-022>&vPLjoHnQAZY)Tx?8s2k#P%3(>9 z(-d|JzKS0JgisEDKvf<{#uN<NjT=cpA(II`4(_|?MdTjw=m!u<X2ls{jTB7?dhZ9e zvM8Cq<^V~SerITF<7>a}YyQzcdG87<^-{8C5#R!1_(K+46RdHSFEt8XVU*2mP%?Z% zIg?Ya3IhPGnz*&T6&W*F0IB|ACsCY?l!m-cse_7ZAQ}iCAe|V0{@vew?mgf5T?|^Z zbYzf1QA36(5rmY48IVDgI7VXwW(3(}YrAW8@#M|7{2#yilgu1ItZ6?|)<qEi&=atK zU)P`hmcQ}v2cERH!-St^a@^3`8=k09ssoUyS9L2z<gvZ^&_nnC>`(syFHu6qjjAMO zg+Mf=5Xhst^ui5Ds28b#nON1Bs0ES(WI|2Zp^1N_NEVZ(WFak7Ivp;>uD~=pFpUI7 zNfD%BqB3%pp0>A;n%0(8$NI7V!gbDZ5AG)Z=HLGDfBm^<ljq5TD$d2rH2F4Kv?7=$ zfZSx9d`wTRs9>-}vJ`CG`1hdMF9m57TO+8v)IueU66wehB}v!1DddP~0;I5XFsXx( zDg6YE7!^=LXz)*+2>~S$KROha7%~!taB~oif^;x!ipR6QJoSMu??&mBEoh7&aKl+S z+lYl^+%Y46i8Ner{kq3-q)UnIbd60+v%BoTzyQ<98?$G>?W^y9*F87)th|bUqMTGA zV4w^tmRu2%eRhV%9{bD_8{LBwBU61FtMlhKKJfmJ-f{Cc2f$PAkeh-?qDmXcDJgZj zI(~Jm0c#VvLWM<OC|HY&;s!#Mb(J}D-=-8N+0s;R?W`>wJ91=vywOOlG*N80M>K=2 zsU1sn^$ZMkP0vhqojUCecK1L4%JUoP>e5(8x-jO9_3c>q0@+Yh8SG8n8y1_R6pp$U zXp)lFiYA1GOK!lu=BA1i48Zf^&wt^?mtT0fYh*v0`#M3ufdg!BEiGK3)4TVcH*29U zagY(Z;t(t&wJ8k_w@$pWPQD$3z8sI1q)y{2@Vi7>Hbr9ZIXPn6&vsq8GRNq{4*?WR zY~_m_`3qR6%0=q&WI!p$l)ssk7qHYqH6W7;!PYP9%j?VYEc{<xT;ePC^dt}lLlO`y zqy)>fvbA+boTwPK?J4C_a>6#E`jml%6*VNuc#AT@9MY~n&bfldo>alGj#@6?uBw*X zzVNVDZG^Ie5x`d4uTjKD@h`WO^T2ja6>@VIf1_XP>Uz^1Z#b}Tn#Vrfe43ZN4gsz4 zkc_+$%n$~bW?1A+ojW7I1I&zp7-0aF&V~I2`sd~shI!3kWM*_=XKZYM9S?cv28H4N z?y(_Ob#Ab2L2oFq2DN)<J^P;Wyas`l44#fFm}KXcnpNn~E`?CnT9Kxe;;cl@O5140 zCAYvSDgiJ?&jmK5UR>*QPce`X-h<Mj9P&p}(#raxBprzG5VkE+;2hFh7~6a<y=!av zjd$F{Gq%!R1PObTO!l{1n={j6xH+v{BWW>`D)dy?qme7YBtQsik)lL~v~@FIL+Ig^ z5N_#Z*P#%p6*lOeyv5}LKT=87^^t;(FLX7X?gAitCG_r0jPt3IdTl|48Ay`PK$pU; ziYp1wB}WL?>YJZmW!5OmY*P@5yep7e#S)Pq){&dic;PTVI2QWm5HbwWQ1GBOPjCWE zj*!)I7}|4$OhceeZb?UDC|D=U;zE$yi4bn0UJ?nB=oj^aL1vp*0tIOAsZ_5_E!X6A zf}zk!-ixU;+^gXH)%sf?k)@^4T(x3?MG6uvKvcMzWMvi|vI`Y>Qm8`0`t~iHiP_xk z!EULhtW2-gGT;qdUBqwjq+Bi`e3O{8n4-Wu;~CaYA2E*%_x_`Q@IU-FfA%lWUphND zFxJ;M!aW)S@h}qBGA&7Uk9do&*p_4Qz+&-52tyoJKzOCN@%lzed^FzE5mxa^BAXi8 zSjg6*B*m*7VM<!B8FSl4uv9B8G6a2Dg8jkR|Bj^qgToW6E6a0NX17-sE}vfPA06ZA z^w7vCYq6H+7w6{YwpZE9ly{u@0KyDAwQw)t7i3^oQ@>4*tH{wJSHn(@R;uktnSvzi zu7YtyV7d!T!%g>YWiqEBBUIq^Mlr2O9)MH1{py}U5IF4mfWQ|y^EJbTi)U76U!6WM z@*_X`Bj5U`-|E+$_$-udthV=Qkl@M~6oc3kcRq7wp3m_dJaAxQvOhO@fbz;Eri)m} zpw_Gz<83Krv5-LS>Avo|sq3$M`?vg=w=?QIcW#k21s{0-hd=u9N1uJ>3(HH(y?q12 z`wy@HWBKA7pIqwd8|`8*1U?hP+X0gYCT8|c%^aMX-p_Z5oxh>4$&4hAv?)Y*(2dJ8 zVj{7<ASp2lp;UxK>@=}*G)<4B&CF&VlofYYR+`WuKkS6tZqsS<O{J9;hEfbQv962$ zK;RE@J}u57IA>0Fe6I^z(0}2i%qI|(jZt7B<~0)T`hue5D47z~f+TA*bHx-SRhklT z9s@?U^CogmPhdVs2*-UkCE@_k(S}+(0Od@IRP_;3qYcT;VN{C#wpmDsRe{BWm~+@# zUti(t;NCiz9w?neXsaZ{2!LtVA>s@L1BOt8Kk#|vpUG!x8~~|fh*M7;b#RiXsK_2) zp_zcTgBOleVCNvw6>2C>wI@Wh&V*1VC9kO(#ge<zb>{3#$Zwlr3*v%IsiKE)F`$H{ z8|#uH6D1J})fif-=q4MUZSP!n@)(hgHJ2xp?-V^m($pIa7R2uF;VTC01uPxO#1*Ax z=I)`S#Qc%bNCR1omeeX^whLWd+hRm%%V}5IP;uT2I14>|xP+7+)u==><PkhaDNJo- zm8MgL%AbGI-OET|i4oH?C>|%Bn=q+xW6%IC%GYf<z=b%ex}(@grWY7a8CN1M0hN#s zka<)YBqXg$5T62;qA7`JOE&Q~KH+5>1{3L%1qNdxd`YF19#Q;DK}b6cbJ5iHyE5Pg z7cJsf60$fWCEJ51g2Yk*l5vUr1oBTo!G%%h2!~2*{0JD}lpiitBMl=WY0OP3g}GAc zP)fiP8F0?U5GjEw3P>dgq6?GmoU2I!(Mus7lXuGti-Tiq4co7KTR3C_Rw9K&sI*){ zjFd(-wG6Ol8$L`9Sxes%Cv|;weg4W^ZhHGSSFRiyT>4w@{l=cPc>t(bsYgI*21+?S zywpiTo~_>g)t!Nle)2Qjy(4U4(B~v;|NGznk-zenzPaJwz;fvvp#HIrnB$8upt8vx z1Wrlm2ho?NMB>&*%^4Yq+bWn&bG^0A^Z$*b$F8*!rl|>Ggw;n3%MH(s-O9#M-lFR6 znwp;K+Iq?N)oi@HB><9hj1TirNRpC}3SH!2?7=+vp2G&KbI7rcbi$pKHb=>%4>|Mr zC1Nr`(zsHfl(DmmCJIh*Kl11kEEXRb9<vFvgMc~pvwL-Z{@}rxn{K*6tUQNqv<Pa* z8)_vgrt&m3%nJq=85tbv-npVZxvOzOp90~%{y8Mv)o%~MkZDMD!hziBVqY{m+MfOa zyW(imUIDPymJl7fJ|58Fs@OU*7umoz_})o#6FNV43BSimYkuIKBC=Kmu58d)!lcq0 z`h?|6Xjj@MRH(_It<xK=W45m-U(P9Uslm%WHa;dC$+rAd%CwMeGa0Z@r<(E<KB$pV zkBXWZJ7`;8Nhk-WBp3$}w=skrXuTsN6K{Is8|mGKN5*-PjmJBz5ap&l&7_?@#6XLd z4VuFlB_nDXLdmF-b~AG@JIgyZWNom<ju8>-4$x(Nb;YiO`9xb-{%vVWVZ1WF02GtP zbQLvig2L$SE3K3VTx^h{3|#V`;Q`65!=tk?EK%bVnsZ)Y>FK$6VSZ_4XJ~SmrTMmK z@q`#jqs4!eyfMCYM2|90MhcgZ8uCMTyDeJw^(B@l-TsCfcmvh}j58#bRG_1fG6T9f zIZ4fOiz4S*D=ox}Zc3Qa1k@wuj4FuOh^1|jrzwmrK2*mBkrqL7uzD+KF_4aheaXZS zh-B4mJ%Roinz|0@d94p1A-A_D$49wYAf&0iQ_Cno-;BvxdpOY343u~e-y>UC<iW)t zDXp-r8j%cITx}~81;&zWR8@M!Aq#U;47lCs$dEf<*yqzAa>849NGVzz&Bk136f>m3 zB_S##&796*6Iv`|D8b~^N+TSaAdf^k$pkyG!0(z_puI;#uLRUm500Fg#9Z2pN_(9% z!$goGgQeJNQ-oUVl03QwMmm*Oa4lUGR)z*1YiV%{SVIviJXmU+h?}(5ioqkLlUL+( z)>6fX+@M!-rM2=HBfZ3^EJUzZfrq__cOq+R+h6_FZ~3-A_YJ@PE5E%kJ2tuRC@qE0 zHE9*n9U^UH2q8{3%B_uyb#zJ4K?we8#Z03SH6x<Fi!_izB86(BO+@sf+T<4uvKER& z6jvfzObQAj8n=rGtVVsk!=qCy3Rqiadx0w(OG_74SNn!Xc}a>#4J>XS9UmJRn;aOQ zqAt)L<&CnmevS_;AnIwvH6Ardl%?#VAz?L0N)=qeM=z7xKbz!&6BhJB2_bkjSe28O zjZr;-DlBV9^{7jWwlI5sY4&{g%H^;9x_AHZKl=yAPmJ*Hm@6Y}N&r?YsQK_H%)Q8w zMP=R3eD>7)-uKteot>S%GXKlJ`hl<d6Av8PUvHG!<Tp~mi}x7m4`NZyD$bp4yw#yl zPY;_89R8ZOeeKsg$O!)I`L$0!_3Z!tZ+`i={;&V%@bz!}li%<itD6Je17qw8F*q{L zC%M^&h^-G;P0g$*f-cimP&CEQ3r2<s9jT*1czVB@ak(IAZEO(PG@<;8dkj~6k%2|s zM^r~(3VnNhgV*Jj*??#M^m7+pc=0)!r~mx_{MMnP*I#q^$PG8#JUO|KH|{J>ZdE9I z{h1!boej}WS3*z5Sw0}(*%_lg-xhP7R}LG?6m+T&AqXX?wbP2n`dZOE+v*f*;~gmh zeL*BL#4gwb4X5DBOQLBN8yFN{F-JV0EfA4H5;BP=p%pDm$Y)Yd2lm#Ie0u#XiL%p& zg6I;`f6IqMvkFEEn#UyVlW~ALDYI2DeKEOMku(d?av*~XV|MC0fOaCtY%URi$;({` zH$zlUn*|SGxVHh<dt5HP+q|{U>J+|TF$Zmh6<V%QTrt!-c7!`Y^OL7pDk)A|QFlb& z-n{9i>jrpNQehprz((Of)}xfeSq?_7eO*I?^%_Pf=2W~jhwQk7M~P5r7E$u@JVp?{ z$lCAB10yHvw_`i73Khl@b0UWX+s39r)Tg~ymw-iquo;A+Vs)DENLD+~VroN}4A_BD zwqZ&vkCdS8fXtmvAuhFyH7qZntLVwls;X7mDIIh&WtOtC94$?T1JX&s8neK`1=gy? z{vYH4$iKQODrKt4B_;!s#J4<S4_O*-^Ao{$iEB2gi$hDGOh5)faR`veIKAPeQI!&) zg5gp);?<#&Er7Cwq*>vjt??x3w(!mMbuKzuaW)e|9h_F8@QQR=NL5N4lJGOuhtHq? z{AULa?mKq;dR`W$QItZcpjT_bAjJ@k3@sZ$i>Q`T7VBM12@Y2bzp}o(v3$8}V`+I~ zt$%&xJOA9*UOPR+rwu6->=&77T-3yanl4c#hC)wY|GC+<&pdy2XyOPTrtw+m(AdWx ze)P)h4tskCLEsAP)xSxpODOJ1Y2o)ICAb%kaMv<(_ehb(hrWxj5bA}`85Aho6EJDV zYQAyZb;lx=jH<K~6-A6riMKI*SLCjJQ`620@dmg(3ked2f>n}hjADUnY0QnW@oSn? zWUO{f>dn#NR$MA|Z@2}FJdoGhuSzR%J85d-ky>gc$2}0@qaS$~;|z_ADXgXD_<Wlg zy5+eyf5n4i6A>C;(iuGBv1OIU97*n+IwBH?4&7bDO!OlhyQBL`zjy29Af#=xBbrQG z^ccF0?74<gL$4dRr(_wLF-sdvP9>HsRXDr}T50&})J1X%03g&+l31;%sAZQs<IP<@ z$LtoFYb%S}TdO_YqqPsGMW}>u4Mxszru4KuX(n6ruX_}Z6l_AFf(Z0YxswY~vKTu+ zkU#D=Eg%5lDZi)+nrRHBgbEc{MJI$y!((C&m{hw<$sxbvt_ISAcdEE=@WA0~x?j0K zm%6mXw%S+Nv5Bpq={VgWk&%p*97CazOyw9F$dVaxM+N}E#ah<gv$(jtxVpB(=fP~& zg-!PaH^!E1g@|ckj4L^&pn+nkJZA=OR!?%e`e~87cX)Mmr@y~vb!*tA1k4j444)v_ zQKZ=3szX~66Ld|J?85*6AOJ~3K~yA4AT|LESvmUpM^0Zj!)B}9e7@SLu~MKR1IMza z+LhI!4&jOm-C$4z3Q7#h@ZMNmo*eDH?)bF~3}SeiLORj(90W>v3U_;Ff?f9<o3Mpp zlncdTjP066Is(H@xh=jFxy(|QNl|m<+U^_R9bK#_HgKwKdWlMkPL)iu6kD0>S_xB{ zLB#p-SRIdTT-lGjXJUNFF-93k;dN*W1O&*14pcI%fCasD|LoixOV+J`x<K)lV}cdc zH9E#5kj#QDk%Q}$0QU=BlS~k#&sI+xAssfB)c<pEX+mDhR-DPJ<Rp6XhqY_YL{up> za9$KEI3#m5$~mOan;0j=2&Mq9bC?)14Um_LcT!1tT~tBq;Ps5O0-_3Pi$D<hgZLWk zMu|%0yq6JSxiyGJIAUKe(37N^kybn!pNaCe6y~&IM21k5N*!g5;#uZN6G~>acVc%W zBUIE#gsb(YL_k|BX4l$s*FXK?|M97(pL_bL7r9rQoI2FqJ;?oHiXp`pu9iZH?zuTa zS<lYEHsl({t%fph6l(DHBuK?p$7vJp%aq34*hQD;*N~&uIEo617|o_xCrJ~H0L*J} zXT+{4w0A?}`vyiP*Or%;78Yn7cs#+)$>0DxuP}WuK|SLu>A4AlWL3xXK!_}N$YP>M z86HtJ(HPRqzzC*hYO2Uo*<?AACEez_b2LFoS7F1SpxCNGVrfeqOFPV}h|T5s*~Kg8 zwiYfPKC%Dr|BwIkx4q}x0B@{eqHx1MLG&nhDmgHd^e_VSvFaB-|NM5>IA17y?|c8| z^!|xA-g)yo-hTf>Z-48X?|8%1w20hofM5-`aY`G)(>Z+x0+cNG8fn2Cy0I{}>)OLZ z2M@mKzWd+!;fEhP`||0Lsq03@4z2DCaYN64_nMDme6*R8Lty?nqy@hHxcwka9zilS zlEV-!@B7(s^{Fg-X|q?=Hm^Q{?MvlrOKZ#XZo%MYIv4pK!u;aprNssIZtmV%<69Km z?RAe1uU&ri)VWtq?QDL0bo}J?w>@zGLr0IDWGNnF$>Nmqrn5>#_a+p#$$S7kFb9ss ze#Fk*=N^ly0;Dd9P8N_##N33qy|l#DE*a4=MdHYX_A-jcQ_2KF6^$5FOjzmDFflK_ zt;tiLn8?s%VE}~KIY{;>3{eW)v`wFaA}3{vOnGvPZ6mXkA}2&G1oe}?A;QYw^8)#J zAKi$=^JeKfU7$t{f!5Wj^3=G@xP%8B8!6RCekHvj4Bzy2h|cB+4g>Kz*I;(BM-#bt z%+k^_ayksLnevEX?8EUsAf1<%n(7(XSel&G4HO+GIxXljeZ-pO>-j>b_kX@rVlg1C zx~g=}xT_=x^R*|)@|P3#1W@AnX;0EkL58{-fe{zXh3silbHj!W0a5QvdPPW=1?t@% zsu6Lbh^1qqQ~eOL@+oQ~2w`)<h)5|O=Ubd;QI2qtn<&Av&c{{cV&Qs#%mW9zVCZFV zSb2$?-w;DU=(w;%St%{521!U<bZ`vvQz9fdgUFI&<YAK%L^sRSl#K{z1itzf=Ryq$ z`3T{~%3@eKfUK#T6aY%nP*e>o2(e-!8aB$kF`k|!L&cVzM=_`{XH*0vQZ<~+3V0C6 zQ-Bt`!E0!dp>q66RB{Dwcu2N&D4ylTazG%IVBv}#Ql#A1?TnAEpMUxCK+nOWx2${f zMGZ^2suw`w#gt+<B1djnN;SNTyJIq6o+8P%nks`|Y_1LUZQXv`&7XSw86u;@!+h+p zix)+y;#JA@eq@e(veYOX%r))wjXd?jt7m4{hOZg#=7pb~ezuG~{px2w{p7O`J$Rcl zK^z4h{S*I^r!N5#J4XqbH{>MhD+b<sppH!q`p^uhm7bik!{P82zf6t_&W3Hc0nhdg z*PpCg_7crP6sdFUMhpR@N9!LGlOrrZ=-Pq^%_ghr%r9t*8Vkv(Lr3rDzL{xvzkav( zD4a?mEQ>@EFrh=l^ypG&%3{}11EltiV}*pKP#>yVS2vpqfBdn>c{Oifkl7^xsRcZ+ zUR_zhes6p5ZY0Juwh+O>!V!maM}ml^n-%%JXOrk~hllwdA$6Y-2ycTAFoUkWF-ULk z+Un9?#F$5{aM??0PnegzT(-HxzIV=YAW1wB!y*<%40fcHjuDH;Ca9uGBPfWMfLMS6 zA{MJBHWsd2aO6JFzsW<O&9&{mL2RY-0052#0gXSHd6rP4Mo~3Ef*#}sAi7l;Hqfw} zk*75IM~0Z$n9&TGQXsVDAw{xwPKzLXIJoG6puI%#;fisfAMParog*3m!|=^b>iNP{ z@4(njA49BlzV19dv+r}CeddWzJ;5eB{rv+&L%0K9`sVQSg`@2C%xeQfgG0P9;BM1p zUD^pMlL|nbj*pgmc77pyf;y0KV@h@c0$N3BclpYX%{F`VSV%a$C!VOWDJByNgKQ~H z!_TO4c7E-`dA?D7`p!G=W>8J9j#(JP`jV%On}aJf#3xzu19LqT=3a<6MXyw`6kw-c zW%`3JV6ksNYY+i7QkhG5!^nn-qMP=Q#i3`w5&@(vOe?`0;`++`b=OWF+&9kB81zUk zppt@({YI$rq6bU&xu0ig5~Pr^h!uZCsxoUBfSghdJGCmF#T_4Tyxg_zhrMmLkhkh~ z8n{SUT65cC=|egsgd_ubXlr;1#syI<97sCFJI1>otlrpRcL{YQH}=tG2n!)<um~}o z-qXhh-t!A<e9)N$IAc42MF!VvX=$Ls8IzDm!2_fl_>MC&+3dk+dwgVYkj1+6D>5$; z>-GWZ0Y_qro*WOjc+@#IAc(pEB|}elxQCm=ufQ7I7NFqTvn*PoDG{8D0dI|@TA=0% z1^GnNBE1Vx@tgy;i$dsX;L3L&H41^jC?m>7HUOi@)$lEoy{UV__NMRQ-6W&E7QryD z5u~jXS4r0hA{p?Fc_~*-+zQ#j&=SS5fmBq39A;7K8Ru96$|23I&5f<Gk^W!$H~;b* zzUez&ed$HYX>{TsO+&r}61^lLXm~fwv`o?FN)fs6A2*`391znk#A723NvVziDocqg zNgHx3u4~jC07*#)%3K=<lM0pqE=t3Ygis;FJSC8w0T!RTj-6I)Xl#%#wQjDiEH2FR zsTZC$pMB-@z{JwT*z~~2FtrSssYwu0FsLGle5DVmq{^klFe^t%<GJitXP`@0k|Fmx z2j*^5r60*le9n@y31V)xhg}qx=IHh|<}daRb-nj{|J>jD+kfTA;Q>GSoN8c;#vzWJ z+7>jy*al-(dvePyCx7PWe(E=W?LS<aUHI(ho?Bd8`tU~{`QV2?y!}tMrY9%vc*Cs^ zy^YC&`)<4SrbCCPvbSHa9TKX<tT3?hDt4MDZ^p2!vzQ~pUDsT*|MKaxS9pzW<oL># zpTNMkVz=Dmfn;~Up-WKG+DXdW-cs6LLX+;3mXwyqK1l7DCgp($V+y|P%g&RtmoHyA z&&Lth<}P+E&Udj_GmFG{D$E8HbUZx$9UUC!eTD-E4qkiB!NW(`Az^cK?flEHJpI(u zFFf_=3r|0B=;(DTYa6t1Hgp(8`_M;n*6DJC?vereGe*+LJ3w3L_ykW#XQvW60BIJl zhYn*sBSef_6-ma8h+;9uvmB}9obv1ka`LypNNUOtSkR;*xn$A>c}TZCb2T$ja}6aS z)+|(^^#!+-_kOq;U`dt39@<>0XC>H+$Xf~>h6rAA6{|1`I;TP-!^R`F(*woeNDXd~ zLM_s1AGwfE-<HaW5%mX|#$5KdK?tBs_#hTC^N+bWDm?+^PeD{#iKJLERxkC5VF+*X z(PMn{y6cZetPFJmVZSI9smrg9?yk|1;ikZ(gB>{Jo+D)hyl6=$FXA{8N60@6VTflr z;M#*Ygb~U<kA~4zD}m7A0U=_kORxwSPO%ClD}V^*T9w_z<U|G-OGW}7YP2Vm3Wuh_ zsH{Yg2}a>dp7P122t=!p6iBejF;_^=1*xR)MLNaP*SNSvBVRjrq>0BXn64a7!7b+x ze=Xe}q1b4VRDlWPA(plylym@zdCpM6975q8aMj0YG?l^74U?!sk~+0q<v;}a!z@uS z9c3tb=MbSlgBp`JwrF4);8;Riazy3?HDDo{$}uo7eC*hXSDu@{a`u&hA$Das%zoL- zRx1Wa3QUSdgWHgoav4c!B-xP82-~_suh+vWobB!9xr<}nOF#J6-unx`^eZ3uga7hx zf9?PL+IQV|%l?V&&AE*6D2GP2hDcb%n7!M5LmzzP>9y|B$&tyOZa#dwJv=tEaHj8f z-~W*Z-*zj_v)llDK!d-Lqa$c2sdEl(9Kp(l4Wl-<b1kI3xsqkD$?Y#r>Remu0D2OO zS<JSua0o(HPh;F2@_~}xuIsNq!S|UP5x6Kttkon69>HaklA^v!Vq$EZakj5>vqsmp zNpCKOQd6JMiBbuYnYzr-;WdZ6qDL_;o`I>tiwe<mFJhBdNwFVd2`Vvtvm*nvySiR{ z;rt6<IMp?BxMy(4y<M#UWNa~7;QY{o_uKju8EXU7%jad&IXdBxEM{az_y9fhz}+AG z!-vnl{K8i6aQA?>o!mEeZ!Ya@EKE*}bkKo~p`~ErE`h7mM1qyIb;^!adcXjQU=F() zD6dt_mRcPRxhA%I5w?XP)dqk;#LCK*3ny;8o}1%mo;<_TVrIH1U_B&qH5MtvascGO zcnG6;_7<fK8g{uB32uF2$*=}5P|RYtqQomfgP<L(^U;CQ5koyqWm5=Zhf5ltkRpj8 zgJV%L^l>I<T+T@f%-E5KNdRB{LfZj0jh|mxUS_;=<mk0@_p7{8G(W$2+4n2$=@}F8 z@+VLE*pP5=fQf>!OdE`hGIhXa14C?0(l^vUG&Hib#Alxd`UmNme3PhuV3=JbiSS_q zW_-C9<ZItOe8skZ*jBZ>hdrhShiAI_x6WN)5Pj;@%coyF_44zlUOjX6(!$~u_J8=% zANyYhd--w-4_df&bSo)K8!Krklt(cn#6A{He6wcz&C^d^K->M|%jei0q`zk%gGQSi zTYAs{vc#;CfRpB^kxU|GPSuyJaIz-IN&mnl*uV3{v7_T-1Di{(WJvphwHfMSV-SlX zXw0bc$*-P;t#t$lL!ix<R;GCgmAnKLohE@4ljKXDO@w05lJKF2Z47RybmSDB2x<uL z?TpGuM(5Eqp_2+?kbgDPg=n0(sbcwn_u{e(9W&Kc8VMIExD*YT%r7zm28dC11~<T! z6d|wJIZD;aBtZcc$6}LqW&6!1-f<YtBL~C<B3>^Ag6fGRF^owZrFw!22qlX!(zdxx z1&LBuApod61y`6M7aB6rWH}hz%Bg{FE*)CxQn?NKUa5+DxHOzP;WiK~A~s<bCr6uP z80y7wZ=xA{k8+c}DHSf9R$^l|-A&(<LXcUM_3b5CW%9+btYe|LFAzEomavrK-wh+^ z`3kG|W=)==1{nys)L>D4l)>WWs<Y6HIWOh&y54SXqD~we{f%G$`S*O=`(CAQ*jyi- zIza2N>9b@jw`<EhRMQ!KkV8=C<Q~Wt!AhMRKuSiyVn|U9<FY;@R$Q>+cw|^H@&`l% zFR)@(RF%zg;!y*j1qW1G-!xaw9@qhKxgr&cG21iTzi(`6bA5ebah{jw`FO#Fxhs4d zX?%Q&y$E{ynQvzA2~=p?o7mW<gJFY;q^p&BSf(gig^(-FhH|AyT}y=s=!cnF9g!&3 z69_60<cwh{ZUqe{bbMg9$<9*qS1zp0pXVO<EB@r$zW=}fzPs+ejt8PEt2T+2L{$j& z#ZiiD$mYgP!;l!S(OTQx-}H@d|As&Hc8q=b^2+Bv_xa!Zz4w3e@h3j_x#urlntk}u z&wubkPjvn8znDHSb>|&-zV*I)9(>z<ci#Di!v_ar!id`xfqMbQ6yCzq=<x86rWBJf z&FKKkPY&>IiN3*PH6P@q9{Et1Ce4XtP?aAVsLf2YbD&)td}3~WZE0y?Ze?kHcJ9*L z?4^a-OILU|WO=@eHjO=~C>X}i1N~jYL)`}_M#c|KPEL+bjE;>CaZ@+MD*@Pq8RCsK zcBXv!h0iT6&ildN<z+rp!M)1%#@e}OpX{QI9-U+|KAjZ)q20U*jkjjm0CMRyzHR_R zKlPN(DculaQ^Q!8f)=82uC|DVg5u;q#h4HPS={X%6R;G7E<{+zj}JK3&`s-{`fiCi zL;&6pHpFyZ0gB0VmxM@>sz>9bsfxvbL<=aDg2G_ofK+7UyY{*xCmGr;0U9ynm!KeW z0X;$pA$H3zp|*`d2dtNDwU>zcWE9}l%4t-JT2|9Zx!N93XefLp(X=XVZvgyu*V4i= z;5JU6DI%52)(t}1v$3g#A$3in*r3{E<9c2}>1KvtXl&%@QEtF&|I}QqCBRXt>#7yn z;T3~HZ|mK~jj2WMaRV0%fCv<PoaRt3)h3_C{FVt`0aa@O4Wu)qp)Zu>K$^Bz!je9% zG+}KndmFI2FC{Swo2Pc5bj+yqG9>|Hf@P)&a`Vv6VPZr$uN+k}fmI-6=uk4dz<@71 z1W%?RsCEUDA|Phm;tYSPv04bi^ctvG&yjJYWIuwcA|O%b_6yOrSf&(|rqHE<01=y^ zB@f`N3$b8`XVsC+k*s9X8T2Wv%_NOFm8V<XK&es^G>3&(#YQv&o16frHUSt^Z&*Z4 zbxAW=R4gihh0DLGDhG)`sSKh@C1R3Ij39-i<I%40JZNxy>fp&6&p-d%xmTVW8txw$ znPGyU+M{erj|xhGcD!9|eS(CefR6b?DXV{YwC8&yWfmU=^7M3Zeg4Aj*Nok9bm&L_ z&Y%B(Z_fUw4}bC>{=_f-+&}(nV|{BqJP=L+#Y-jV<F#tNP_1w1;{3{o9($^9e1G@A z2&*Y6&_R~64~+fx?|twG|L*(PuBV&~G)q*;I9eA(jz&fjo4f#AeJXQbonNsvZzH9F z(iCHPnKH)RVpiQGtIT3ygy73_{e66ry``6{2vr1CTu2kLl8hhV!B})_XMB8&1a2U- zvYC479^s*b@1UR(AQJA)BfXxi$+%jpid7YhBbS;aL%ES+mvAQ`XsztPDMKe}CdCC` ziBTuEcRu;(r@Gd+hG)jp))j5KNVYGYpE)#h%dOX8Ey@K9nk3yW3|{AC#%^f^pn-+g z-}sw<@gt8s`hgF8dV6SQXLV<hWf~i6-76Q4pP2c(fA9PDQd8U#xz2m@2&d8Jy0OO8 zAv?$OB~-xcCn%OGA;1Qh6>Uncca`Xh6tT?bFh2*03E{PT;BlpE@zR^#at{sgGmkyL zwXw$AjqEBRJm|WQLUOiM*Xg+=k82G{LNlz&2!Tsn5mQI<fWcudN86uBq?T7o-ujUK zk1#Pc!;x`Vu2vQ<#h7r~1t!jggJw$2PCt0|K2?g|S=%mx$fEszU;E$LU}UnrwZ>}s z<JV4a@@0i>21@IEns9Y(jgNWp`9jXCOdG8836u3JJYcza2@)I3C2aYvT86{0U0T~* zTHhEQ<1^BuqpUj^9_#B`KED5;D+^F~t9x;6`-PV;3=j6~UmIB4WboMA)i?34e*XV_ z{<+UzzH))*Ox$%34fkGqaQf~y-}Hu?Prl`j8xJ4dzp=5*J#oaR`M3FUB*SQmw-s>U z*qID%VrS|QOIw#mu$RVG*UP6bboC7Jt`j{x0~pMcBA|kbl&WY6q(qab1s&;V=+?y5 z-&=HWrF-36V>kAjZ$94Zwp}h+Ot&4zygKg^4eafjeR|>{wr1om(DfiH5dN^W>1!B! zRq99)CULQbyKhz~jEY-ldFzmGhq(|oPr$SRf@%W)bm{U(OFUYoz+vD9U4A&jp`e?A zF#MnqVpYgsKkGPH;86A~0+I~@+l%lZp`5i351C(Lan^vt6nWdkg)5HQSTx0;TG6sq z5Wgi&Glv=sMBBnd!vl=m8TO}jl(&18lt}<)9xEth)KTT7h=|u{8ZjYnf@0|m{=*^K z6sAEBuG+^_ftittR%%PS5QPqK1$JYSP@fJNi+vAJ%jBx0*GBrPuO~US+DoqkTC#Sc zoxs)1I>}8yQu=sYLvP0;#o&j<FkFL<W8n+{>lWqoVn#XfB@&aOUP#xqF<l}d85TLk zbm0UpsAi)cO#wwuIQ4@%+`qWib=~#*e(l$P>Aip9uRizb&#!N;j!zvL7#wBZB()xA ziX_@N2c+mxtqib-jbu9`Dr64%KoZu^xCp~P7lxH7(v}*4s_Ch`L{Tdf%Bm7l<_TIk z03@Bfz}P4^ECPgh*pWJc2M$h79hjWt`81o|&MnW+UAb`X%H_*L<I|(#6VCHFlgg0Z z8-WmmfGq3wrjex5R230C<%%pa<x&+OxyGX~ycL#2>lbAZOe<K7<#0%b+Z!yPU%0%+ zdbzIkyB@gb`~JpXdB;0$<&p6G3Qt45O=i?soNE#P)fRxTZ383L6b8%!%pSjMbP5=y z>(GJWYY)BgUGI9MlLhl#|NNi*^iTcdPv3O&ZLBi*)F&VL(1$+!f%m_kW@UV0<c>RT zd+`2y@45HhH@)%pqsI>Nf;LpKB*h!1?gPMpl=bYe;oU;LDmxZ1xfqMEW}MZwRC>L_ zdu>p$4c}U1T>$Gj+#urOmCG0DzP1);yOtODA{XtUyA1TPJ=Vb3#PH<!!HH?MJe;8q z8yp>_m0f4nYGZ40X?bpO@zpaI7Umb17MFKc7Q2}{VFcrDlWg?N*nrglL)-m>eSAJ) z-^l1t|Ep(S<)JdzK0?Qg8l!0;9fILm?9k{Ef-aU1Sl(#kGhZBDo12CPF+OVO$P!Q^ zzvIK<t!cWw6t$k360hkpAxWWlsMxgD;+X~wgpo3Gr`<Hos+4rk$&2SWyHYr&6)xhX z&36jLTdI83!nX(fW`%OrCK3j`Ls94)TpLpIBFx1`B><k(ko4x#V0kf9Z4y=raY!?u zfyl&5GOTHJ3~X+r#pfT9wW~I<J(5(?$?+9~MG7Oc2NIKA?yUsFI#|R|IM$W3QNUs? za_xf{L9HG+F|%*qu&)|KO2MR191Rz9(2!?rd^C~?97-vsFl!{NIx3^cQe+zO@p;Dt z96UY206aH930IHn8Ff>xzF>EZ7qZGsk_t4MX~R;5wB`^(Ksgr~p^1oBr-m%iN-mU; z784*19(s)#cCpDQ5rSPb;fFRwyNE(1Vn8SIRSdF}62m#cQCkk)W7#9v9ATD74gXXI zuu6(nVeh+wB;Pg{qR>#TW&k1$Fz7N6$#8Q9Ay}THP~Za5iHC6VfvTgtHk!7jqJ?z) zCQ%)WLW`pTDbkMoND$z76e0U+xp1=IE+c_#JpW#NscO4tV&)KI`q@*@zjEsN>u(-+ zsuVZDWtdA%^^rNB2urJ?5h1HzNDVQOK>$kuX%LzDSOQGoc3-}Hwrg$nTmIx%?dx4e zjDPg^{_4x$|35$WsV9E!mw)50{rPY1+uUNO4ONJ0oYgm!SQWN2F!-^LJ^kY8O9R&& z=^GebcXZs}H!w0dI`jDBpMK%RGq>GzO&KFLutZBQ6U$a$>^X`_U@AL#z!1xC7d<(w zK(XZsfEWH+5@P5LWamH$oAF*YC+C^=!9z29IcuJVM*>ZrbW=QBI23<!VjOZ#90N~M zY$FZ@ZKsUUN%n3ohxaUC^2&Am<Z7h~L|zbRHH+M8boG&hJ?P1e*vb*v%M4ZkM6f~h zR;TMDA9<A9C*C}dBASOpR()@;&cFF>_svWXhIeeIO8gh^lA~xgNv(*DWay<sC6#YG zeBWRHiy!#?zc`I;kKBlFEL}Kv_SBgl`k(&Jowr{b1gm%fH~5OVhh&Arp5VIA!|74I zhftIVrO#T#C81=D<`1JAP<&)6how{`ioVtnVU1II>&tUpn~S&HbmH`xbIe7sJ@3G1 zA;);q4WSSv5}|0`DOM<<$QK>*(H`*d);Ld(pxD#H1c%*gn1dCAl`t_K@E%@*T#BNA zcm7F1B3s3{h)F^sijNLBAVnMF;}=*ndcwlpgS<=9J46%9c*;%dcUWk%$|i+dTbx&! z^u`xQN7(;qum<6DI%QJ7^vfqcR@c@yHrG~GSJr8A2&}Ac?!3%X|5IO>U0hjNdx2Rw zo9&$*HZJM?^Iv~(-#uGvYo|}2y>x!|4}Skct8+IWKYk*ElitnE%~wvJWk`1Y4aW~2 z+<)TuwI`1sKKTD->@NT;xvInu__e!?yJzC=?g`nT3qiu72^MsbAj>Ycuwk)fu^>SL ze;g7ZAwWDcaU*UMon+j4+P%Nu@0@zCdlL5hzUqEeSB~FvrEcB2H67-qhT74pk-nkv zLAI!fugx)*az0B1DKYl`!Bk8l^9pb($t{kaOM|NYnW1y|Q&ZnJIKF;MSE;6vuWn_* zL{VrZ%Q|Z{k&H&UYH$yXo|RHShEopWM9`B)hWNbe$ez0|k3C_@M;?c)F?tJs@beI1 za6aF_3XA&Mv0nDBigFSTLduYxPu{2*=Pxpx{*h}@^Oc!@yM4RACKhQ>C=Lc<*q*TD z0TaV@pfL-jP08D;6%~utM*FF(-Y63^Y;9?B{jA)?k`GtnNmhwy)^$oZ7Q^<Xs_wo) z%9z#h(UIs|0W3)3RvL0WH%S-dG%F-vWjBOHefl}p+1~Eza37zB7%>VBxJUp2Y0=#P zxM@5hwqjOblhbr4h8+t2A&>}pAj@O~>JbS6Jt2B#LoWZ#ufPOcL8yE&4S-6P+E=0x zs$`W>UU;Pmn}SsYC&>gtl9`%V30DFY%2QK7ESszljMmPi%!sqCRtzkK2n{5qIRMmG zE#<V^pA%F703ZNKL_t(8q)jzzQtP5fGgUZsD2`}tiSy6}3`+_yNV5ivows{O1_t=t zE1POG{^%zc{r4BYdin1!+uGON-Z`tObw+hPep$nMNQP+Xt(=oNRP}S~P0^#;y@pg3 z_T~XCN_a!$Yl}=u1qdSxKBQo&a-xx~5-Kk?F{`R+0T}^W9GO_TI8@3R%W&%$yVD3( zRq;5H>Ah+;CunGD>zvikqwB66gFChkc5SI^;**FS+)*-7f){JXsG*imQPrU<k%F=5 z!7D^lHu)B5k->P-8jc`f6_O*qc&MtLRx_*K2p=)->+Krp?qa&;z@rX+(_7wr$e{-^ z7yH;#0|0Qp$43B~>+6~uYnmIX8d-i7)eNSPLsA<=RhOIh@!=wcaNgMX^#>OTGK<V$ zgL&Fg&2-+z8sUAy@fZKoX<zx$+xXh$J@-7iYSoRm-G1lYcm4g2TkgDN)g5d!$SSpc z_SyT0BMv$4=)(^=<lu!1I@o}Q(is@A=dAbrG$vemQa|d4a%*W5e4<BNR~jE2VYLQ( zc6V>@?q*HEww>E|VD7QLK9|qY2_jHK-9%$kJ&WIFFKB42Wuv$jzoEziGsq0{NS674 zZJVBZ_6evkEif?AKSb@|`v-J3Ht4nWNLZ?Co@km@#g-|JZOy!X*Vx1hn)UU~b@lai zb&a((WAzjL>$Y6Mu3d4X#t1LWrrl_^u^(m1IDs#G@oJsjEnOGs3<9HyaIs7+c7daO z!=faaNP_fCGUkczAwwnFVeP@qd1N?Bz%CMTwFNu!Weu{->@6)!0CashTdcOT5+;d~ zG8mc00ya*B!C|x9swW=X`J;<2hWf(!^XSxryeJ?_DLh32s?Iscq~FRTSjj!b6(Ej? zCU4?E6|SDrNG-wa0L+GCune1I2(&_a)uRkUieQk)bUOy{t3lqDj!qK5pv(!93dKJV zDPFVyAxq|k2nNZf;~!>QipBF+@)k^2kHaqOphH5HOfpmvz=_9nV0CM2Q@8<DgPIyy z0Z@@a(%$b{*f=-kWsfas8$O6=7v2xjU$8bcpYlx}vM-D#%WS>CFY5wSDg|cP&nrZM zR1gFC%Uoj~WzdAlv?81YIhz{roU+tSF*&m2qWBzYQV|19r9@63dsgp|9k4v&ieflZ zfR_eF;#0Cd`N@Su6uPY&6(Gsz1lmp8JGcqoAuDsaQt~b(VQ>i?^zB)+Gqn?*DGn)A zQXIzoNCP%iB}<vh1S`>yH?hSbeaaEf2Vp9ElOs1m!7(9Kun@_7xdcnGq{ubX0-TsF zFt)Mr$fXpznhLTi9{;JCHEZ$cz+m5|jn6&v_>$$jjZW0Fa$VQ3o=Xp+YKH-^7;T+n zK_6;`54v)U150Kv4p$LJ`iFLITF_B<<_U*1jQ3!;y1M57`SknW{@xG&;`f*R(?7jv zkJ*i-v0j8KWG?RlgDZ~J)Qpsx|8o6pL!;GgbuDs34DXR^+B;@!+4js$H{Q9&%9kRT zlf7vw2!%02u_CA;G+{Z-7~F`Kj{+i-60*qRacI8rMJgTuR-kEwD1J|IL>9u0jj~W^ z;gY#*D^$+%T47dZOQj~!*}Af9Q9#utR-&n-cPEh}MBELDiLJx$C>0|7C<pAqrt$8< zCN-I1iwNa8Q;H-afP`-p>APGiVos*YBydF2`2!|v=tR}<$iy9Y{k>G*TtmNUwmfk! zmPWGi#4$%4qD&zz#?$lSKd38yl!UQeM2&1tg|Q<F0G8DT<GkX}(@VCet0Ts<&@y;7 zpTxqIz?MWAxf0I6M5({OAIP|Mgf>TXgV7EormAohmn1~ofK5fno|kmY1Vv^#)xO?s zrPAQOdn|V&h6!$i`<i0EW$owTkRH1jN%}cjjS6IeW}-mlLz%E|8p@kVT6Z1N&tdvZ zIJ4}|`9}-<(bn9nLIyTL#S2xe!IleAYj+fq!YK%;sUGb3hZA<HX&fFKU}(iF0Lbr9 zXQG;R!yCS;n!cW1`WNp1<rLj&hLKC|e49r;jMJIkt8Qp-;w?-DG<6JXAzV|<1i=$) zp4or@efi|w5OYhTV?46y?djXN?#cP{=CMGA5z?&Lvlq{wchn&VoN(;^jH7mRKgUK7 zwbi2^e&0Fs+2VS<mll{61T5g0nAlbtV*H9K!%Su%pkvIMYJ^}ysHTQ5CgMC8kDWc) zRsf@r9W9q8wj;HC9sSgdmTG(Yhqr9+uCAX){qpWp>u64{D$7~x@fU^W;8_Dx7s_pH z7?qoU3}G?ZH}f2Bh%a1}#&=u3gmtF8Mv9FYnRDjlq9|D3Na3CfO^N$rg~p50i(A?# zuV5^zLL4QTB9GCO%mC!@3U5H@y7+)sZEd}a3mG2=3N)ZX5$a{AMXGo5ObT&lPbwWK z%e#HxZ_DSseg2I%HPp2+LE!R%I8vCP8JZWoGdEd{jn{Sebm0rm_ePS9y4_P~$c5(_ z1-XhsMS#Mg<SZaiovlWWi3U2A27G|`d@+B}Ob9ns2NdH%j)%_CLgJDz@)SA<5h2;~ z&k4#I3Rf04K_ZVx#DojFaTO?W!z&^dCN-A~YveyTBoY~uxs#z6zytk{a%oKpVJaNU zfX~C2id_j4NU#FfQkcq`NPv*7(X>q_2t>`nUvxn%8V!kgjw6EvI3NV!a@(ghgqB)d z1dJj{EzHSu2wT#@+&LQuS?o<XRvH`_?d=~J9vK;R3nS`u-O$ho%MCyIA0I#Q<deVl z<^Ngt<kNT<x6{qdo%MCR`IZ8EZ&lV+E^!!u3*E2nrL`ox0$n|t&``y&RD={nCFzQE zSkSe5sA+mZxnf3{#-YAslkdpOWP>#0hB%pM>udMME*&y6KWBh3F;#?_*S3zPmS)zX z_jd0b?C<T`yooRN@(rry);4Z5UEn|i6i*O>5!i|=2W=@)#qg41WL8-)6J=>5Ar4SE zVa+59iL}kb%<Q@{zOTE~-&<;^JNCq*Uw!s#_d9SuzEQyZF8)BDYA?el0Y@g-tbb>f zUqEeXs^JqOtu3{zyN3hA7{_rMHRK3hg-yKB!@1huOr&-ZHR9KdjFz5!@=3b<n{Hh7 z#S6w~&2B&Clruhj{<)=zb9ve9;rq8-dCfJ~-*D5t_uYHX-S^&e=k4G7&UYG`>h{`W z_al!!>d-?DKJv&T=P#JnH^9(juz_s}$GiAmPJdtb&aUlj8_>6NM^Df8F&ZY8|Iw5% zVT?nwII5wsy|byIrJX%>Sa8UaxsmZIJa2G}tp*3TZD-BOP>GEeco~&93AI|3B=^#6 z1zX?QIGufW_y$u8->s}~YOZg>1iU24d@~<duBUyaZS}^OQeqy2!2%X{ngR1QRgL#K z`(+u}En}E0Hzxw*#MxP1n`oNr*r*z>(jzU#@?mj$gn4z{2$-M1;rvo3C$Mx=T4eqa z%iI)zv-b%m={@}EyVxj^01hrR%Am<pFR-8sy3w%&tZI~Mnwm>D-SF@^Z+*wMEt}4M z!|PuDiZh3)!~iQw9MHEGIzX}f36d-qe}v_c!IUz>GAD<VdPZ2d$q<4@f-I6EC`rwv z0Gz~#1ad3s84Bi93H~Mq2Y4!yy*`C$Z4*9lxF(OVZ<%dj=j16Ijhmk^7#mr-Y+)TM z-I$>XdSGSk)ri2MT2vXu9WU`|6C`(Vqa0*K;}KyE%+JD6-82cshXex38IOx+zxWVS zW&uT_urYrCB$R;7^2-3YaY!aC5Z4S!v!HKkLS|x|%ZZUeu}vDo91w!2sY2jvVnq<% z0a2Wixd`DD!Y8fp%n*x=yh<Yf7&bZnaf}5xBh|h4-5clp-ghrL^soaLE$$o{fQaUz zuJPwGBg!Rt5yzZK66}yYG%P|u35Xn&npM-zN@>7}vQGIU23&X>;sBsXfyoIPY8q?` z`GrgoNHvS%5i*aYsyqVmA3)_?Ift$RK)$_mXcDAgmQ9NAkX7tp9#JvH%OuR^vo*$K z3l=Vaa&Tl|+osJ;&2ttk9p>Si>(|i5HV9MWuF<4RQp&a@UVV}i6vK{K3E@~iFt&a3 zGb1~mdh^>}yl75))xc(U`WhSSTRDHm=RW$b|NPSb^!M+qu9_(#R4fd=nV8C2ST#>< z+;QWb4^C9`beaYe&OG-rqp78hF9=_G&Gm12>r3qpbMOmVVY7lnIW7PcEtv!eVZ)#% z!z-0AXweio7>OsG;D+JUUae6LQzRX2NGJdlAHHK%!-I<#&ErGu&p&_yJah{NML5eM z`O>1cux_ZT+Akc%h?ct>$U8EK#uh>07t&hbHb!_npFCjm-0*GXDwlI1qjH222J)Da zQ=|mR7vu`3%p3$YH0B|mmY_s-boD;*<WmhzY!yUr&k)>$^=;hXF(N<W@Ph>p<_b=B z$PcYZtxyiMLbI~;nHFc@(3DsAz#GCccymm85*_eKZ26cBReU|ND(Mgk-mo9&8|3aN zc6L;!^f@Jjs9+(e;A&ktGKZ*SLM8nLf8Z2A(I1ZUP9nau`|eAgdh!Vd8w??&15$bp zZWIWdvfS;B$)ol1TR-;96^??)u1Mh`Hnf~;Yx0(uTsFyM-FUnq3Bh8vfRK(^AXW(S zG(U)iTDE9ZsDdgh9jV`t$JeOCwKd}{3`U!qODx{0n?2lEKRPy4*D`PR;x*hk*S0Sl z9o$~cP^W2lyy^*r;d4<epMgE(oUMTdbQrVR_@v2{2*$3Uht?1`^Kh$M`|LWt?9|Z2 zn+3IPJYtDv94ZUv&1r6H9Is|~(x%SV=3|aMWyS7$@H$OX%k-+MtxT11L+g#D_tsi8 zzH-78ghdu@^jLNCET3UDbu@M^n`j(h@kLGT^iplxNU3$Sets_lQF{Vf6oge4SThpN z0G&NIo@=*k-_|`^)5bRrYbJaSgzuwExCf_*Y1;@hxe#`?qXEbhG&MuE&R81ZfF17} z=xu46K5x-}{Ui0`qm82@L)fXNX2#GU(<L=SW6dLVa|W2;U`0l4{b+UT*jSS{?@@Hc zDTzxy+=**S0eKSim=J(O+hYngWYRrqs+u}W&GUyxc$c9MngB)%j0w0MkS?u?p3JmB z+*sR{)Xp6oe{O^!96G`Q6>+($sz$b)j2AJITOcb_2;()pAVoA4LOp$h14A&?Rsj#H zsu`APNY2SX_^=lvk>cC|MP$StkQsxq*4AbR$q1_=&<O-hE>K=DNtj8*Op3FmUKEq* zrda_B7&C*DG_+@m6qPE_O;71lBBN@OvJ#4ZEi7-=3yw)5FUTs3IVI!&fabkB=H-hH zCoQO?D)Ryi1dFuPs+^tIB34eUFs73S%b7rZqnyoEV!<iOjW#Ui15He0$s}M3Qiipn z=HX{{92uZo!6P@awOMw{g7AEXIbGh{Vpn*UDKRFNOcMpAABqXmcu)V(p+_9{qo4lx zx4-?}&;Q@gdp4};r`_N?c5TyYT=L{M=;E$L3E{=67e8ae{6SG-a0>f{BPd`fskG$i z_Jm9_%Bj$Uh*1*?lrju)ogs=wKP%FaK{iCa1YSTwBbpZ=B}v0cEz};CFKLKc8lkc0 z8!yeQLvI^qqf?$!^9K8l9YbAPdK(*BTRNKBrum5yrjU8G#gry3JX{K^5(?sSiXi+Q z&l1-f$yeTC5ll)h&&J2u6^W*Opl^7fkF`&He6ev_`^jg%?3J&2#q!;jv9ERSpiMa= zw!E=n<&zw-25vddcb~_*2TMHz{k7fItxfgqZR|tiiW6#VwAGY#c_^MOCv&sDC+87M zSban{!d!T%Zrk>4V`Ia!W=_9h)h(-TS~WKIX*T*h;D7^<IqHbhPCex#A9~&SAAT)k zwuc{Fd)@Wd-*U@s_uYHn0}niU&)**@RsDq7>3#P-;JIhlm71#ma_L3ALwqgMsRvs| z<X{BDHwc)yZlx(^^P6fuF^G&T<{TO6?c1__cxY_G&qz>W6b4hvzE@CUl?pffO*86e zpcN|un(G_bEVaqacKF_s6R`|3fQ)X}j?LLB`dQ`@C}hi*7S@?#!mj<dz+7cdRih!| z9fJ`%H@eGo5NZOCI*rDN9CNe0#KN+HFYaeBe7FzEh35(&es)eMKuZ~ouW<T@sMfGC z_AEf4nEFB_q^0FYCc6cADv9$&HoN+Uiwam*CrrAEuvm=M2&~%Eu!tRXiBnNKAcUxF z#aa5%53cy+CqF$p)c>LLKlG9F--Rfy($F3rRwopIh^`t6z(zOL7E$xGNx~XUM#2Pg z<^+J)fmJ9Q=t>$^@toOHP!zU&$S*1g`4$l6<$WE!kaP8HkJR7C2eBYin3qtXN`Eqt z5?drltp)f?^8^@^V64R)XNN+bx}b!K*f>c_9K_U|pa+?}R%21<xpaag#XC8UzhK}~ zBg)oZ+_DD=VJ#fwE~Eg1zv}V2c*y4CO3N&il$$J_j5mn`3XvEfMFJ^tSl!9aauF_t z6kdq5V1iDf6pAFUU`Zm_C^HF)z>z8#N?Or|naF`!nJlPnhJyk~Rcu=jLOsL*U-Ph1 zsPxaTI`i6VZvOpmFM0jhZ~fJ;em-kXGgCCtCZdd@Ko%kxOAbZjuPE{*J6OdCi7#;n z=P+`Z7duj|vXHG{-X4b%G<p)`EDgY<M4rszP)2z~YZ`tjbR>rOggo@aa-5V3dSp(X z64kieiuAZ9M)Fr(b>tVOD?rn{Aq(vc0=c%Vs($hE-Jg2o?>p8#-O|$9+&R<6$T2O> zr{MS-4F~izo(CNQHpE+PbfTHkB}oT<WU#w;)8qRuZhhlRk7c<p?;OzxR#gp;^=&!+ z;AOw~_UGE0o2$p!;6vM4G&V><9^$B9Q-8~y_igRwA^xbJPn)(7rlB1l1Zpldx8HQr z?K`{2I$EtC@=P7|N$pNtzxB_sC%Bl-Ve!NvP8NS;mi;ZPNro$IeVvP^XSB?2PlAv! z9swMS*s~-dE>tiE`c)IdD_1Nl$g3N)3YfU22;r>+jRi=Auuw;PE5)x0X>QmkEccBN zvSrDQW1`-Y10eTW^d#eB!}RcVKvf!*iVUG+ImWdt&Xgomm8Hn6h=l9`O+us*;hJTS zV+;-r@HnBiv2o}2^}IVrnK9vxU4{qxTc@?`x%Y0_D?tUFqH09_MLV6U&^*~Dd5o$~ zlP0T(giFzj(ekMuVi4lQU@_3Ap3IyYpA4t;LA<xG4=`7sDjFFUq}PIZh!dEm`HRD< zi$%yav7F46V&IJTLXAfgn`_&emM(0aF`ZSeV?%uL5n<h4JNi0N3ko6;lv~jkLzqs~ zZdgS<0vL!wam<5^-8*}K_QPL}(0MZAz$+{g(xW=+l#1qv9kMo0q$f}AB!abs(VvwF z`ZJ>-c`{zH`r=Vh)5nK+#y{B8*EVh8zy0?m^JcUzoHw_&am`5G{HCUci+;U2KRw9< zl!1}@d+vMa(KU~=mA$;^S1cZD2hWq}x46I`3Akt?c=O{iLS5s-kF0(2*$r%8NFFxy z%acA8VQE6m@Nj=)eN{(C3j?Lm(FvBTJhryGrh1eu4%e^SJW<`)Ggy7epI3FZxALVV zA2-p6pg;__3{Ff8ja9GPKGZmU>8HN@ho%PT)08)D>Z;$?H+ue;{#;!e#2CmE(s1&w z7<(cr^YWb8QR<1c8%L^I886ZZI0~~KDtmfq1}#Ih1DBBhSxZUPnABQ3VnMaBmS8YG z%HyWykAC)Nbq(C$jD)S&ma6`#C!d|DopJO1n?L#G-?IZ2C4wnN#;SV8d8=CK7+8m= zC1)GNvP3$jWh{N2Ne_r$3QZna_)B$l<NBR-|M|^74-Ry*JBCtfvp5tn0^T$cvUc%6 zi<w#WIqB*dscD!NbL$uY2c@XTnVAf|k<GDXm?mVBHL)-NCs$$#fS>K?_2UJuun3DN zwbm1rfQ<P|Qe3ok*cQ)92nllp9-HjejJ37!y(dQmk*d`rsMAMER2+!dXa+gycmQW| zNNu)**N`R)F0y1FjLT47%Q%@?CYMBmXYetU2YhAq|Hl#X1>9t47qqF#GG>DbOCHt2 zK5)`aJ<KgjU*=uDJ}+Y`(ZHH=3Nm52Ku)S<>cW{~kyDW@Q=lB?hg*iymBIwFuz012 z0zXX?)b-UE!`dhth&#ys!BQ7*r3`U@#=|adeW{HMiM_`Z9(Hj*Ni`c8w9R_sTVDUt zGtc<VuYPywrGMPH;fd1Dj+Tz;%`MYw>wIaS=}DXs`WT9bwIO}cwiaa+a)ykGRt)cK ze+vgf)G&i0XG5UY5mTW|79!LYw#bg$C?`|UPf+U;9u*)|KX=RXY`xN`<^kvDLkz{h zfV)PFT~pW8F{81gy@M|vu$W+AfZrA#i#N2kwzf}W%9c%{xfkXBGkVP^r)=y{in>Qx zp=n6q=q<!36tg<vNEml`aF|}cZ?Lc14;N2NEMB_k)EAw8`ioARJAY>X$Y{?X-)L1) z1THF^eQ7j6p_BVb#^Br?YsM#b_Ko)R54JScOz&Vx0Sd|_iW)gU;J{z-0j5=O21ks1 z5r<N0uJbv4KRcI<O?=>AKX}T?ORl@&k?XF%>5jYZy8qt0ue$QGPkr(uvuDpZ@@N(c z9C7qf$G+noZ+hPc-aIlg@#LDFt8cmO%4@E?`|p2$=%M?@+4E(z)H}Shs=kF!*Vfju z!3#^Z>zQvJ;clEqGlS6+Qzooj$g<<5fZ7H&VQ%hhWEP;Aw>{V;psBs4z6o5>+2Dl9 z0v>;1*Qz>uB5tQGwrW;ZS;pfm5_9$)1EL|0>iEYhV#n<Z?2fSMax5ML^k(sWFCp{< zcBBx6H%=PrYuILSVx+e;%0tg8zuOXnNoQOzpf%63oO)!;V&dTJfAF^42u6l}kOEO2 z$iq1@LQJ1RneTwu`sTlnGGNFjn_RFGclJsvlC%Px&L-HV5zJxh#%dN@{M*OA_JfNq z=0km7`=77A;Z0|7Zx(M(0`FQo@L?bl*u+9W2&!9|d=LvpQ6pq3LczM=A3_w^=9{a4 zK{{ZHOzn|&s6d;YyaOwsl?>c~6%dN!rC#23(eR0%NC^>$QH22wR8c(4nH;Lqdhr<x z%5k^dR?y`-_{n}KlnPKzGO!K8ON{ZsvkuOz>QO2oC(T9CXhq;~EGG&wJ53rc7jDKa z4JxwXbm$b!tbbsp<iR;aHAM{(AsD6n!B&X^u!t2%X@N>aNk9rnku8BD4nJc?<CjoM zMkvxXc;FOSMLZD_xr|gUvb6dn)uMHy1yWvyG&KJI`}NNc4-Eb3Pk%n=+;{xqR~NT7 zS2GFd04o|Z0HcxA<{?;EKZY40nW@lM!Vo{=Mku;W<Ba8t+(?TU%Fw()Qu$SdRDzt# zhiyWUCJec8DQAmGDLAo99wjXmDNZ3_meCZ&unp@}kh0w>Sdjo6*BGJ8!%WGjHfoJd z)bJ&;B`fxL`r-SZdveXvz1ga~69=>Fh!#x|LyBn06qF_}4Wg_>A!^=O&3OOj=N@ht z-TujUzja2#a4nBImCt2VwN=Ax?=rum!MSBx7adZI#h-1Eg;-s~%UgfF?sj&qpD|<l zj{coIadbf}?UIVtw6xFIxc<I-?tSEhqxX`oVo4@yY6=+^2^Gysx#OZB#gWR8R{;n* zkxSCh5ZlVq6~_z87%9rzafxa&alj#}l?qFs_9$E5jqbVU%7Q#OQm!0e6p99-S(Zp# z(ots5oWZRm1L;}|#pOeE4WQxDEN~;ueS*}??|yTsaqiGBM@Fxtk|A4ggl<SjTACpe zD#A<+h*wB5Nr1%iK~NB*5p?jzF?06pkAL!GU-<M_hk8ePw|7x&C8p0Cn+CeK9(vG< znR7awT>(WCiJrzXl2oKYu09D{$(QSbuyF*Q5$58V#EO+J%vu3VLr1&HJDORA6TGZq zh#C^7S_L%-5n`6Mm#u<$NwS*N@*HC6SBX^wibz?I!iZQt8lQ5mI2o2sbpFHr-CI{K zncdM@>g;5?2dCi0Ns)kqdw5I8W8BuUj2~CcK%G+@g$;oNFBNnq!HJQf;rs8oo1OFc zH~{yMx(bzxuTgW4ZvR5#5ttSf6|%B!03Vi%iJT(>L)p<V#=wA~Sri5A*>IB&efHt- zJ152l$Li`j**9>op<$w{cjxBqJlmErTGv$ZoS#9r#8Zd3Vo&muoh-Gl<t7ei)`Ij7 zj^1_G!~JY7;#>`FgI>T;m?p)l%)!9Kafl<5cpn6NF&Q@2P|Md>nsJ6-{`!yXM8F%b zHd8o>laN5#N|Vc?RK9@7Td9vdO0A&?szyde*usoe$<M9d1Ps)KwaH;w8D^lm@m3nU z_PEfKUZt;p*bS%}-AW_Iu~Bf85Eeu;t%xd~!Yhh0*7WH`sH25|3_HZ)L2k>jD*F!J z^T4Bg5Yk(2wDW#^q_4k+QR|kSgMYd1PUa};>l=qh*xqqyfN?{e%XIX1TN^D6$1r!Y zh7X1cW@$O43JH~k3>1y0rZu%YdWJ6j%c@%5d#z<~iJBoSZcz9GvRc2T<)j=7soZsv z7c;muvjAm}@$8(mDveT@05x^Gh=g%eOc|oY9kNta^$(4(Mj6dWb`a=@m?Ml8r$7iZ ziU)?_beRYyNrKVWjE}aoq6Nm|K7~X{<h_+mwc>=c#l>9ZD>x+A0w^w)FZkpG6?ka_ zr2ru1Q5gS{a7vaa0b(+4l!%DUf8Zv8BvOzr;CH<Mr+K+dV(bD@Ne(sS@042dD~laj z1(_5D5(!_Rb1CD?s7Q^(N_Z+;C`UO&CT<jCDD6dZ7>!oNIv-}+g_Fd!k4ItDh!Mt& zQA%b7s>BS)Am)>+c*MJN=Sa`M5Ve{&g5qXKj|mdsJJ`+fuZfnf&tv=N-*g}V03ZNK zL_t&s2AexN-}Qlaz3O$Z`NJRn@TWigscYktef67K+NU+ObksMtK`QRRbV(i*BOiBQ zv|wE211<H9MvTIbz7CEdep*1Ur^0eGj~Zz)NCk|tMT*^8dJ3W?ObBUrg(p(k0<-}4 zqE)RGG=+})9QuVT*tUiJwVC{E-GHOXX4JvAU0SC%wzsn>EDH))mN~>G1>IfE9n(6e z&8(?zpna22j9m}_txyR0qvj!3Oa>||6*<UrZ|gG$HjC+F1^x)H5{!+u%;-GqgcHv= z<3&8K=f0S3x2K;E7#5~sPS?sDJtIv+)bun0f~z!trbcAEx}J9t`Ukr^+UjR?Hq>K6 zA6z3M&5BJJc1B@eV5=$J`}b!adie3R&pg-A*vS5XJGOHl)$)fwU9oJ%+mAbT&l8W| zv!?1?1Z0}v#+z@w?)ufMZ&>|@Km3JC(J_7IQAZv5qEk;h?X;8LcJAqKee>zPy%Rk> zUF+AczxV!!fxP#=N7l0aEM^#Q;C+?SsCU@B&Q)q^;T3?o#@5Eh7Pft0y&7E&uSV3? z@V-B{6}cy9yvo5ES=3@>2WKRvBG4RKsJc`5D(n38A_@R&lc9%3`9-g$_xPuGOt5Bw zBBJ|gtQnaY83vCbb8Spz@r~zd9^MbJIl{JQH$L;sQ;%+V?unu8>*pT0dwdbWiV!`% zx9JYCi=*OnlX1W-61~YT-`b1QS>+H<ctx=^ZJX6ZN7sLJZ+6<(CmC^)6CffOa9*AA z70juTK#bWv{Vr@m#he&t*M_H_==#w6K6>*_x6NKK=NsSr@~I~uz!L_lQmDYZNHhS7 zlFbIPDUk#@xI_lx%1jvl<RFy!9_kV205LUFB2}Dnb^#w3lrE=x%`^guT0mNWriF&e zMJLU6%;B^#){#a!x)_M1H^b6Vl?*~!qe_fHp~SykKcDZeS-5baD+x5NDuU>9j~E2y zv~P-$0PSsU)DVmhRkrg12~YA#q7nHjC>2y$Eujn<b1K{m(>($+u#PSZdEgz-XfZo< zR5lbQ62d5d*?#Dt>~isdUgeOsaPkx*P~sYZiB!auDr5@m3OOj0jhwWDMr4O38IrUt zl%(KJLIgck1PC5cED2gQsweZp(AU55<sCiUtFK=5mN%aF;~#&owS}iK*aSo9VPX4t z;a{~mY(rHvr#v-^k;sYwaVq-cYCe@vL=9pKAg2H6)zT7!6iE;X!$lJfCK2tMS>jfX zAQ~AaK>^gr6t*}rm=*}0(nhg@MI;5NWothkO*t&HQ7}uvg^!>v>1PRfT2<FFZPxPL zHm`Yb-BXV(S-D?rO%nrli&HTeLWY}1FW_Vg9ZWO=wlJ8Lg;x`7{xZDnxkpDfK6Kt| zPdxsRJ?n<I0R^)Zng&c}I;Rw=9Vs0_bTyM<XidYTYd73+?<4b<?tS*_U-Ms|{|aA2 zU=9~1ZYEKxYH4Zj8?U?S${UV5YEM_Rsbjes6lH>SVW^2X!Y(O5N)dV&Co=;e;{^a0 z1{>UERE-VSFvT2&g^t)w2ty`O?@@;yj?p_eRHXBP-YL|d#|{*GLschOE&w7?6jcir z%$>hz=B6!McnDBc+su|aE(yl$41&WxuxGx}w}sgjjs;qLXLq>o;Db+@-r2y6H@+Fd z*-nAvN#B{&Xo_H@n-5veurPvJc`Boj82AAbWJIw3pft-5O9vl#AT;V`%&Kc_8{_rF z-kk&6);Bg!yyI<eYHUQ$P*TdWvjBn!;fO?HWSLSq!aN~}HD7khhXwFr|G}^~W#J+I z3YKJ&a#`JiOJ;^i0)!K=bVoh?eLTPBQMG1|ic^eH04SRvV4+}w-Yc2N3syEYMwQGz zn-k_k#s>J>QD4`J6^EkWv}x^#&cKbPIM(8jR!Ej*BTg{j%6}|(WwZoKVo=p!!6SeI z*8#xz*lsK4ee1%n_Vss-3{(H8-7!y>;5K6(VS9@yh9`KD+{hz6=*xrJ=h<3J=S;s5 zqgHXeL&o6Habe-uNJ~@w+&QxVjHl}mU@VOr#sW9_I;xecMv0a*t&&L^P*aiTWQ83o zOWPU-hQ@aG4ZDMe_+j7}!7#;<DKH1i96i9N(2!s|r_GzYUVP@u`CQ@;fAH;T)0&0` zdZ`c=f(8bZ2!M!$Opef)l$Sa~dMcEf+Kw{_wmpl3c11g&u$|>7({8|bbawvi|NZ_e z7kt}SQBVM{j|<B1d@DNDLRW8+V6K93lWjx^fU%%GbQdLLtq+gl`g_iJ)fv1ry=mLV zVeW$b+-z+}N9S*T^@s0#{eO>n#i<|q@V{={@SJ+{$fdgBO>cZpcdtre1LU{7qZU9< zyUNVE#zg~Z1$jl~v0*Vo2vA2#13kx{ane`6^0}^UTgE4Nbr=ybnRZY~yG0*iMs-6O zzPRdFRO{+nAA02Jx195C);myua7?N&@t!Kxg$>>mBSM36v{va=Ht}$&@9y4417<g* zjEb-9X}PRnN*W57tvnW70c@VEKytvuozz4}Yb%dA9eV*Qp!w(oQjjJZ4Th3v{UA}M zBY8!D1$l{UKw28jP_UFTM-b1n%#E~609HK6rCtC7W6>n8*&e&bGHsW0s5=F&Okv73 z;ggadp$}G(C~uF+l!)eutTK@)^veKd{olf=Rv36H4N=iJYU>msDqMmgr(|4aRK6C> z%q(n%hak8GsUCg(W81p;vI(x}nt8~$CcVH8E0wk33K0s?0*X7|q4CkdzLAdUoo|2V zIdAxvv#-78>Ps&9!($IV+P7_EO&gocPitywXF-AWpB2M2E4qwrWg14$gG0zgix5@~ zR}D|G&LD>XfuIJ+8&W8jhjmX{=8-`&V7vkr;YboxRI+mFFZiM-X^!J{PbX3cA_;D9 zVu+D6XgnN~u`M9)y3cHGAL|(C+1a&o$H4ZjV9b~~m&zM8LS>-omgUw69*<k|Ifd%p zU9iZTcM15m^I%`k*Z|L{`y1L?4nE@G(@#JBu)`1UoZiZ8Ja;nvgBmJ&oT9E1VO>Xz zdnr7pSi*pkRJpPhtg@`*R}5Ous_i?OgBY1VtBuFt#I=U?5KYH<af#>5=YRMMzx>4? zc$KNCxs7RHrcapxZ)j}#-VZMN#V>xk_ufm7IP8F<k2?IwLk~Ib_(P68{*X_6;yqio zmu|iF@7G?p`uZELUv>R;S6%sM^gG~y{f<5Q$TQA3>G<Q1SiE@J;YaTMwzr+d3vTz` z^YqJJ@dn<~Sh~+~_06+=!JwWEO`2TpRKtfPnJ}v34p2|vl|j{u($K-|CMhotOp4gq zy5LAmZ+o-u^Z*Sh&7Q@`hKS5U1M9;kyE=?QG4kaXmO%2U0^XnCStfsd%p4E)c8v~f zAMM?azq7yNP|v2d&pfm4na4M8c)EYnGbPpzwA3DO;65)p^{mrQKZOYbmH=W*r#GO= zUl@|}KR&|3nmUTkKpgr+;D*~r>uS11rQ4VZWq-jYYD&bMAMmhY)eXI9FO+o^o}OmW z;(X0bwO3ws_xs=fp)KpT9)8qO|NG4^uh^~Ak4f3}0_m(g^ivLO9lY>OX-Tw52}u=0 z*&;Vi0c~=on^r!+E~ri>hFXChc?D?lnTiWWcyLIin3}?f%40%qCwc7bpvLw5Dyz<7 z$y6J2WMw8bYlUW%M3_m_;30#<{jGchW6rEt(j+6<%0+VcR|*BFy!jumZf$R2PJyMB z60nBjW^yGn#xf>>%%BdZ3vz{Ga!etE5}%R|YY@Tea0|BO_9~Sv=t|xEtk9ti;h+{- z=Aw4!UI1l!;0Gz=!Wc0Kat26?^oW@=B{`WC39^+ySqb7sf)0uhfMNtPi6YZ0u_BV| zPqv}PC^+6SzVN%>dGnjzcKfQE&wcB8Klv%Umax|e@KKIgI7vE*R)kgV<fSSWP#z49 z^mkIi3<WOKte`>#ngT*9Tr1A0Z&D{cfE-T~z}&i#;oxYw7DobPy$M+hp2Bei4>1Wr z#ApIUMi!)SP)~nTJ`AIM31BVL0~;88$gYr^uF}Nx8M8-wwryX(?&-%LT)J`}rlD~; z`cdubP?9lW_@c;B3xXc?fN$c~RgLUe|3ufb51zc={PSM>qMDIz_MWA0gOeo`I&tT1 zoU>YoES_y^aOm;c>XDk3t5#jJb7<t`BM*PsOV0SO&wqivWTwsR^cfdx2&(wLL363D z?TWu#{U4urCvACjbYWQNNK!TsL%%dh`jm!Jg|tBO79oWqH1&YY{`>FA^0lt5>+4!( zFq>=-;#fk$HV>Q&Z(t>G)!693&|r5{TkVt;1chpa5K>n-Eun}?qD?~FU|rSOUVF_| zSG@VH@4tQZ-L70?n_c!Es^jzTybGw0fyNkpXqb<>4Y^OyIE#eG*_CJAy1oSqcwQ|l z%K^CJkmC!EipJLC1kH2$ZzVesBkBoI!NRiK9<t@owbxxwXV}&Nu0T=0Hoar|9G>HC zdG4vc!7Uel=UcBm>!egQR7S~AwQx{~Af}Xx11U`76yj(S6J!~n#GIGY@3>7OnSY#- z6$FlRJStjN0-0XPk(No&W|d(dFOJnT@FbaKtI;l&#Zj(kQh+bO!Lv=2Cx-?mm~llk zSt%J3Fn*cX!3G55LkAwPH_0=mPoqTmwx4ZAc%25cfbuXFa&f{$p2_x}U3+OXKm$A& zCK4SEw~P%FE0@;~56|`kc%X&&Aw|d&x=Ig6i1vz9I~h_!SZ`aCn~W_CDmVfD^LEc} zrH1=#m@{tl$$V3Tr0{(jyFm6V`50K!3V;kc<5w6lHc&}$J)-b!)vS`7_%IVHVt5`N z%z?SLrmA4jlNhW=$e`8CHj5TYS}MY~0S9@m<6ch-7S5hKlYw;ySa1mX1zX7AEQv)r z04WY&QFQ}22r6pYhkzQz>SaFUSXW|2Cxbe+^mCnrI)+*@(xCwk)UxCeFY8=nVpQ;K zFnzXWDGUzsUe)kPCm*x>?yZZ4Rx-xJA=zQ0v5{|r%w@^RoY{Qgd;0Fnr`Ol>xs6hH zFR#yP7%17nIa8*!6gpCike5_3^8+O03z3kQ&I^l-Oz&u3IIlFLeHM2}dIyBH9rzyl zQg}i{v<4}Ny>;7kTwGl!WjfiEz|n{^7hqG4X`+ZYF%Z^4?~tmhn(tNcb+4F+DA*<K z0zEHsm9#|`J`fUV`2r`z(^JOAn%Vffq1qJ=Q5F>y%0*oyL}sdFr3(5QFuWpDDrvF@ zEtD(H$vIP`n9^yKA`&>H3mC`L0DKdrAW(+M<XtIL@}>sLc+bB|RYBdItPEdaOhUpJ zG6ER!GLbSu<yr=agp?}Io|2EW(K${~B}i2lTnk1SJE$Usnh{ir6HP{u9*(4Mkz>hM zz>1J%12Md-y0l~G$hNKlp3TzmGtf=e-bU)Hih<)1DYpuQkx6-SkjxDmau2d#h#R}Q z>N8&c;xk@y<^vBr^oL6?y=nE$-RstLv(&AP1qE$&^=&k#d=G{v=_!W-I#a6DIn1G} z)7@p7vS&>BQxvbo5p7sV7J3Fm+DTkEr2Nt;4uWBQhp*BROc`kCqVy2M@e*~80h(q5 z#+F$u5%{D1j8QQ64K)p|(`NF`J$Bt=kAmJETYaX2O_`N*aNsBp(hl`#a(EWQ)M-r( zAC%!+w0w<bWT=N}g1U~Dy${*%*yE07!T$UObKt{Fd_Ow@A{djbc>_$xBdL&wMuDvn zVlFm~XgYsz630T3DT$E~!UOK3`wd%q=gw?xsN<<nHW-Ln)3bB@J@5a-U;cc3b$uJl z`uE&p&l65MY1;JGr=EQBzI*R}{PD-xTky6!*W7W(<KOt!Z<?AKci(;4QAZql{0T=L zb<|-mIrE^Goq5ni>HSYWwe`xYuD$x28*aP(?(hEK$KUwhZ@uExFa7CHzS~5r=iBq8 zBM)D)&mK!|y=UFD`71}NX4tneW$Ho|+sP1|x<zZN+p(%MOichUz*p?)EFT)h`0QpZ zk7t02iRryibfgydvH9ei%p<)0;v@hT=DWLW!ZO%D!hVnO86Q6C$i|z>6g_kmt8Hs1 zn%j8~qw$)*Ub1=pIzHFIkfM2J=TXP)d&+4ioOtpHE0)dS<+QO;9$#Zx++@t*QQ;C{ zbnW~P4kyEqFza3viiH%4;Ukd90<y#`yyyuD+vj_an$zjtkzg$E7Gl(6P1F^9>i~W2 zU!h2=pEs&fYH6;z@Y}!r)Mx&SXF6{<=XIa{^e5ZeszwGOp%wKIv2DjfdWh>P;oxea zfGHfH<N#zsmJ32fLM1uzlt0P`K%1Z-!>J%Ej%mR$azTJk(3AyfAxkzWfGTFf3(lHF zIzfaUW=C%FNYfkvRPaJ^NP0WUS-Ro}jCBKQ-b}&;?Qx0O^JjE+G+@ZAUm;&)h8jS} z%qMIp2pfX7Ru<1S@Ej+M6A}e+z>CHz+6(y?nrdjRB2Ps!%qWM2Iz)6_JsZ9{h>Eh? zf(f>z5id-pDGX{Y&qXfD#`r}R=-^?eh?lbhT#Z5Yn0h8!q;m=EFsO!-iJ6rEQB!QC zgNt+!RSmO&)657E>V{B3BJOc{!Bdl{CzDvbqkhp3zxBq~zwOpl*T4PT_g?hFZ_*pk z2D&Lp!4=r(VM8|~&i2VV`UvN(!{cd&0i%Zb-5G`?R<w}Qi!CHKuc?9;l7P;BOW_5H z!_4qk1K~O-5hWMogh5X-)xkE)l&};TX>&~y)<8hSfwY3ipzO?4RINhUvMwMz)ZRwI z5(!Z()-a*?;88<q*zl8Zzv`COj;^X_N4BnAUssyHc(1CO7A)@^fzsMlRY)P5bTHe5 zvjaOfJ+<wbd-q%1{Dt%1I;(l8hS%~H1`rF26AA$xF<9FW@k3Kp@J!9C-`rFB>uSEA zSM}PnUcSf5>2v4L+0?VGWBPpduGc9h*piJW)}0SN`1n&#Z`x~**-&Fk9|UvG!6#wr zDZ%uOP`Q#6R*Xym(jG$ai<ky6SSo$_i=WxCWAw5=ub$YkskXVTfep_Zn`;~RC_1aF z{m^a}5T7X?8SdqOVCz$7z51ltGpTXKfo%#W&4iFdmRSg1l#6Rv(a@3wji;Y{#O<rD zI{1)d`C{86k3PI}=jK6HOXs~Th3b;$`eiE?z4*niJMENH-+JylAAWSrKfm^z?_T)L z!w#N9uTd<VFRQ4jRjC}8IY%VReKI3N@iY~*oQP~u=puj{@>W;fdB;7>)G%Me#yz|W z&g#yN8SQ7BabjiAibndkjtU-9sH`>#x`fRyjv|*>IWuh>cXZB7$rb~cZw}M-cI4ns z6*!~MORPZ9c)IB@`>j>C(5E9AK93I;STevg6?%rkeHA)>oQnfY^@svSbey@iYOH(5 zCho!ZKVTnxxuc_lHwO96A-x~jK0DR(LuTSW5K{V}t5zOJVivcQ)<tVHd@JG<5cEq- zj_7@i+TxZTAjjt-k_Q=ulbjghX8?7AR%BTm4j;?<f(sbjf))>(^$|t|G=}xn!^2VP z<$g}mV0*7>(1q&K){bgGqHRwIA6$Z$IsrQzlOUMHk4@5yTJHlntVv-YdOX5+%mPE3 zIH=oELDH@a0(|+847f3{kF6-ov=li)37)ITjaH3wG|g@+6uENb=jbM_P6<cxlCC%m z(TKBbsKke_8L%=#0AAdTBm-z7CAcAyH05q_r7dMCeR~jukrzKKJI0`#fg*Qxd+fQg zZ@}G)*)5ai!-<HR1~$aPAiR&syGpFY_vvX3JADj0O!Y1StEijy;71_EN%kg0(FZf~ zbfiMUbOs|N@>woMqiilVJP;)nGK(1o)i!{KMuZ7qZMNGQWu6z|;{_1tA`$X97BQqb z3pd4baIq*;x)hfcR<%2}_QXDq=^1GgO9$L27zB_?>J+k@sTNS9XpsuZ0Hq_Q3#b}z zZ)>$f(j`O;>@ZHDE`&ug$8LwH?rUla1@TlfJl}M3boeAjf~c7u*NRfaQgCyFb3iG4 zf<vN$R|X0C#Yt_z4CSY$XSj?yH77+b1TRYkpstyRHkaxyN5&^pD+G3d+EtJWPG|#$ zgGX6biZp~*Rm~7tIjju#l!b!m7Uh0`G=T$@lURytY8(ZEXjOdZYjn$wKHji)8MFs@ znpVQ`iz3y6q{%YMyG%Wr3-31ou-IAWG}=GLlk2_r-Q%DG|9$JGZ8u!I>Tg$G`QQT& z4(!-is%znvx~ZwPzOkjImc`u6^Kw9%4O$p%prDNeqjo1vZE?ccLKs9<gODRb3ae_M zhl<J`N|rTGol|eq1PBUV2#3&xQi&rcIoO<u7s3S(HJ7~8yRx%-guc9u$le6)TQ=?N z-nwOCpqm*6$9M=11(bpdQ@+q}?|W9x^R%2dvFhi{n!e{=2OoLVkp~=fz>JyG81C^J zSbTJr2@+9}B31y%Nsdt97lPX;XBAToAfuon9QkP$<1~?3La^tvgUk_Z+1|f!PP6T) zR2A)p8*cpT6<4>n&+3@b+0xQ-&)v7(d++Vbc3W}$@yEXNym!r;H;+#c-goc)H{Nv1 z!w)^gX9(`S|MB}CdgKQ``bleB<D!N04?SofAWt~qxbxoenzz5>HM}IgYSjaO`qQPO zV}0FST`hAuxt*rZ7#+4$ORN#+PN=SFgxhS|GNr<p(UO;20&S(9xFcsDQ)v%<--#RZ z@O26Sl6=UDSt+(|7;;ZXrd?Q%F+NC3&!=^m1)$R&W_-ZxrZ(caQhn|8_SWf(=l1pX zZP>V>slMsRqmEh6f`KO<>mTgr>j(SqyX43t4?E_l!}r;DuQ_vDF%q-yL!;xveJuL3 z*2IDJ^&L-zxi$4aIw&yh97TjHGw073D3nX|Xd-h(4V1$ak^#XRo-l-w${|-<XCK~p z-zq3=HM>*lBy23n^wW6h1MmIZ&wuvwhSrWReEEWZdBYhHz)~W@gBpkJ$^^sGo;afI zma`noX#~V8QcP9MI22DqC__}5&~g$t)CjVIgGJUPdYMWj7j)$$WL_&skt!}NoF5>d z9@%R|QyiG)c|_+!%A^dYgp5&As?W<L^u_~A7R_sJ;A5PlOtpE_k5=js<b<6{*QThs znYUo-dI#KF&wqZ==EyeL>7e#(VtP_rsp8@hw6rFwcwN(mE^4%0X~miW4VswBk_SOE zl4x;`903x@3LzIE<5I>oJ*9}y<f#A%l}Qb5Av_rfWVW`@3}%O40Gv5eOpLUvARhVv z(rWO4h(wiP;F8oZ!^Gh5=*;O&Kfd?}Z+gQytFO8CUGMtv_b&QcbzLo!!VVfVhf@w5 zPNW!DEjF=%C_!{()w~*WFM(a<7i|Mj@gD;uWC)oRrZAvXq?IaxDM(lcEg~~?2FgQT z>L`7pjIbSOCm`1_3+Yxkl?~Ei4TIEiOE}}Ar#aLhs3Cg{fHG3B5Go*y7ray+Js2bV z-YIt;!%J5#;FYI!<6{e!?o(6OLN!(dBu!nSSg-&Dm@}xG7-mbLZBO65`^@UEeBvD| z=eAZ4Zbk+L4znmlh!?6xP}SsaDLMp1V%zFl?^^TN+O5lXUwP7r`>+?<F~=S8``@lA zjrCX8wbQI<89q(k(mA;0nbkMnwsQBEIvJjn)gV~PgI}R882)ig<{JZ4iv>npC+$ac z=Cp>lo%_bCuUfTu>6{H4HtyW=Y`-rm<|{t=<R)k`aOayg^;K_s$LlZn{D*_i<jG1` ziKT2AMd?a`hEYvcwbDIz-@yd*Ti^8Rx4rFU+q;H(w)bw|*)!mWeCfh!np;|CdbBh! z*IhI5`(OX`UGMqOJ$F5D$|*1T#@9dh*0-E#u}`v0jgw{NY<5(ykUyY9G^0_TQwbzi zVW_kq)rXdC-TLl_A9=jKxs9EA7-P8A-9Y!=2kzP4<|qoa)h1*KaYD($sV6NiL>viT z7C?4UX`n=im-#fiHzjmEKH~N80TD+*zyc<iv2vREQw~9x^Bo!(=B+>67FyP?!f6CF z76{s+Ow2I86sAcoCJ5k3_`s?z4e#8xsZ?LJ_a3_=c1K4W8{P4>ZdbF%-7GaF>=DkW zfs$Pc;GjeuP1b%~Bpqx*!r(_#yLe+9Eki)SEP<i!_DI%H+XRDZ$T{-U;mU&`^8kQ0 zwJvnX5fQ^ccO<bR;RcL-4!C`Fz+Dh5ByyY)HVNs2N2o`3xR#WyUh+3=yAp!XTrt{U zgkYPRig86Hp@Gc-WZrW+Tqh)cWa9zs+{aK1&3tcwsR^y-ffix1;O}77MkP|c5<)Jo zVU7^QCI|Ws@wB+`VE}zs)k;;Hw{2&4Eet>->LVhje8pEHnJIUWjC-h<(T-+}oU{$u zL5UNfu9_O<g^2c<)0Zw=#8*_|%5;FuH}lIZ*<jp=hqLCCeIpr_)7I41F#=(SvMg_` z7(BDQ<;<a9riw(uRv}>_nrWyO?|5NLdc7vMm$cKcp-)5tag@zc_8b!}6tkV=f>Ky0 zY-?heJWL>H*%-=*ARM7KMPD;IFy>%pympKMsq*Eiz$z%D6cutt9f3RL<PaE|X-5*q zo9e2Y8rh!EX^V7gdlyimR6>9tB&*;O!bLFCbr+zOkOGgcDba&b6kMS|fu8BXL|@&7 zC@~XsVgqINnk-x~fuDa40Scj$x95L+WJaEoLm-wX2;`nJM4&>Z04-zuAM|%68x*8Q zGKi8!G2Ki!ecKbEpc;V;2DBbxPmk&Z_~(ug?0C^U?sBDLGDlL9G9FJU&>}G9xvguk zs@l8OU?L$1D~Q+Ph_P8vPmhn>pc+lOJZwS0iA5IB=L2@^2Rh!`G3}MFdF3l!{m(pz zzV_PdR;{{e?c+}lZDo@WKE%@A*wWU}z_(QR>H&P26;nlOnKh|p001BWNkl<Zn^jcK z1l7qD)wj5Vslvm`r0^!+Lb9Vm;LuUQk%S}aQXzPuRFI5J^AkW!W71Dt8+4gOQ-eIx zlR?UW!OJt~z;MgOmU{y`4m)_|>t6j&Pe1t>AAD_YWnZ&)Ce>P6TiE%pxvgdErmp|~ z?{7Tt_s8nnX3U*6gH_*i7EX8K&_~-YUXEH94PkH#6|FI$NlF!E6oRID6|t4Rtdrq5 z(ul~ek7z?~x$F7|hI;zPJ6e1&2N7VNeEex{T^s7gfAh=lEnM7j-8FY!{+Fw6yz!Qw zeE&N?{_c0C&6#)L0S6y`_>mv{@O$UXo3nBA<{MVsaO<tNJo@mXT|0N~cyRp#53l?2 z&#q``ZdkE=$q`2!`cG%P=(uC|JM;8?Wf|=;od`Sk*chS&d$F<xsoowX2AB3HHgj%C zVcBzIOhbvhK7*no=To}O-;NIYO$WZ?J;YjoK~@CBq5zf&47s9-9VMj>P4KGuT;fDS zW9y8zY18Mh%ha4Xvv^x?_KX?r?d^Ofh_^bnZr%3hzg)3t<A$N$p1<FD%TdQ1@T#*; z*kjM#_t|^TxpP~Y52d)di-hVh-5m#1ebSt_EKH+iui!b_GeQ2ZL-(SKWrJBg91KrU zp+VKXapHuLLJSP7{H$;Yd+2`Q$%+s!XorqT#19lX#{!-3eKxt-w7LIX?|ApEx7@sF z`O*u&{f#4!*^@g9DB1TUYxdU(zR=U9^yiQ$?#}`SxA3ZzLhu)db<P6yhyeLf1I_nm zbun}5fof*uQ2?qvsYQBX3Q#1ONn(hFfqi)-EM~jlerkL{nQYO*6hXSom((b*NEF75 zD6PbxzqhL5R4bM&kp%g;UqS{+bq+yN7j6v`rn#xUxuvPQpM@>(^+9WJR~N0|fyE@@ z5m$2zYe?95=JT-JJdsU~XlSC1l@iCbK13J+Orr1$8j2KD0<e4nnIJzzNpXW8NyaiI zMG0aR3Mr+yAd4A4k&;KjRGu0`WYzPUv<XKtB-GlrFoXzs3h3}6+%ize@SYKYYiiiy zX5QSEA6@+Y*S+>F*ZuWx=e_fz-@fomzSd?z)2N1f#s%x7jgmM~#*T_>1A(#0hAIqb zJUnN+kyZgv_z>Q;VQFa5U=V7lD<G*!>K4L^qG2k3!T_kf2#TFWR~R9o%Vd&b!fBcE zk-VUw>i|r9<!u!ZA&m$`VlW;O#zF}!f|foJVwB1fpih1BUmtwn{{Q*%_qNs7O`Ep| zJHH0o7}$%?j0xna>|@oV{aZJz>3;T}!<Myu<>T+zcTsz3s2c_tMEPk{q>Wy<cdDjN zp|Z2n28Fa;8Jwv8<8`<7mFn4jppkEEkC#qA{lwq@;;+1L-_p<q2n_j9Zc}S(S8c;J z*RDSItuJHT!Cqgqm}I(CB6NcuA?V64(l~Q1XM2r|01>A+LcT;OegC^Z;N`a~{`eER zn;TZ$boYJtZQQi2yQ_~bROqS_8wNKvwEgOrzu0r-(hI-&(Wylc`OhaVdvz5zf?0P= zbOIIwjhEJ~+sNE{XJ-cktC`aqW>0Ha&i5cwBFFfIVplr5pwfW{ExPUI-~Ql-SAF~w zpE~cnkFHvM`xn3X?{j8HwNI4bCR0lSGezoTR$(P*W(I{qpkf)q<!B)S32x+8D&2R_ z!`<6^rY%^&dycrx7++-@9Xj%e1HHSAmc;5)=$dx04yF3#YZyWn`a<SL2(T<ka&!(p z7mwr^Db*0cJqY~HUx65MMtcnHWGipLtW6QjGwUUJ@w<i>B$RKLS`~1fLR@JRByJRr zcvk_Q&69j|?Es`79~<f$+PP)Uyjcqu&Z6eGHka6Azh~nhuiTg7P0;jo<Vl)RjS#9s zLz}C79`Y=Lrl)mGP@sgfVNfFE0@xu5f6+FgwOugH8;x92wh0iPvI%Z>bFw#CuP{gQ zSyQnM9WXS;d{x)c5pO$2cAOL!49-!cNhyU2QIb+wRG(YL&*qkA$yFmRjZ8O@hE0IY zli9?8g}GsFVxt8^PMap!nCH9>TH5v~E>Zalp#DI31SxYlBp+FXVN4pNY!DTPC_iq% zy^<O&y)?L6@9FNr^QvonmYJ4~f`FDZK;!l`7a&_N!B>zJgWe$uM8+Wm#1V&u8H2sc z_t|ZFXJfx_F9IKG1-l>#9hNSZhP`7VmGum<CxErUx!~Z!^QTb5g7lB5<s2+RA24N? z2hF*X5z%N9Y$HmL5wM9iz0f3p!J{m>wF#2pB${6$SlxFloFWfCK!))n56c8d0z%rR zo=e&Uuc@x8+tJ&@b_T5MO=Cy}qC|pR`5ckdf_!20##A;r%U7(?*0vTF5vUrTS{Oe> zHakfNIy_9Ua1ExWoJ~s=@XRoySWz5BfdK<h9O6oVqkPV5Bn5dw=^^3-BVo$~0<H`U z>Lj)@l<VGP>LmO>3YFnREmjbigik00WmEu|pZLY)9}$~OOY|~I&<ScmST~JwRiz*- z8w<mFtoNjAN+bo)>9C;xVF=wTSV+Mm%~M8@5KYXEo&CJWoi`A&35?<jLf|F}Qji<f zR+-a~lavE9Fbq-F_%9+3@#Z&c$i~N)?zZe*d#rrxx#v8!X3gsBSKoN!jZZxG<PZzM z>Kdz?+nSm?SyoWn#BD3vme^Bp?~~S0@FZTbbXEq+ztS7Xval1pBfqST!g{DnmV77` z&?>4)QyqZ92jLcpX;FPXEQvTls3?eN0W1;{5t)0+fdlqm@xFJzgxXoK4DiYcpjW^0 z*z-U7zu)@K57$1i^JhQ%(T6_z!C@YESNWwxnAxN{(IG{34y}=shJaMPA<9GkLI9@V z02F{EhLVwne~1>e!dEbt4GOJAb#Grk-*v~8LFT*cGiJ?%d*}3y88g^oWc>8g4?Xp? zL$_@kz2~0$uetWx8?L|c`fLAs{a-IH)m2Sju<+nR4n6j`6F>XeFR;AxfqU<}?&@pr zzyIE6pItXFGW@_}>+gT$_dod2&pX;14nAP-lTJM9C1;+x@4m}e6vp_Cwy3tYflD3V z<*VV_Dr%vVI0cPzaAuhSV~im_^2kDfp@E*kfqs?-@S#T@`IbideJ_9p-R~Ws7$4cF zu4&=pUmY`MO`kh!_S`wMXV00(PR?x|9d(UObTR$?{axF)ZQQtF-P$$x-f`om%^Ue} z<8XI3OCgy$ZJj=IxW4M>V-Ne$MW1SJ@dZ5AjlyA=Ib<x&kM}}i<{qQk4Tima=N4Is z*pG*YWQH=m@W`T!#w?0Woh?~OSaLSj)MsxEaSyUci5#=wq+NiEe+cl7fccmzn8zq^ zlxM9-+|pcq_g#;^{oHr2d-|CpPd@(Z|NGVDOQ#L-luJ(vTJn%>un1<Jf@e6fEHhxO zh#c@#wGh=%9OYc-#!*f$qKYUAzkrZ^ISX=Aqvf112ne=OWsWkp4qydlFU4Ys4b%6o zM1@GfL&9k>d4;kvlTucov@~XL48u(e@Apv5%a$({Di=FS%NUfj70E?HP_h=W<6}*8 zbL05<cJ76WRnw6v#|(H*K}>NvB|1Fmg*Xu5T3d%t8F$7ha;)2GDs~}Al8RCYW00OE z4+KvhKn0Smm7(IWz#}@DWKNk-AXx~B2Hgr=5zur&OVzRn0w!&4PHLtWNl1kwojCr? z(=AD%Z_E-<T#iLd(v+w@I6Ss!QOE!L`Hx=rnm1na=gU8Se)Io+^V2Nggq!6Yg$^YA zL4b+>YM>XGN~@8MAw|ND1QI|v=L6Dh8RAk5N=LFsXoIz-RUnju5mgNXg*w4gJkcdt zWFQ10Wjdgc4{Y7Wwj*Qa%df~brW(MQ?~kFHA;FTdb|dN`S(gMtlO291*f3?HZeq7( zbKdyc!|wh2UDsZBH#@w}oVy!)(84lN_+}wgt0#s=d$(;|`_OpT+E<^v|G%C0x<##H zHN#!LvjDR&1<e5e$`XnyLHwt5Ma1%}8Lw`B^r=m^+<8CCk<NPct0BOh?g_^nRnt=2 z-?xMP6M4fUMXsym8??>0+<aGGPl*jZEfTH7xzJbZ6w0Yq=x97d$g9yPu1qVSlK@%I zuG@LT4Xchh=E%hhn~9$F%H#RRh&;E3wtHDbjbaJg>Kp#j*SCZAyrCGc0q#)<lacZ{ zT_-JoMKmErZHrG}qOZSd`;IQWY}Tx4jyIHC_bUvBw*^@ojdGx3+;;o@f4<_X8*jRs zFTmmUKmX~kZ@&4)FJADev;O&b=4QbY6{X_=pcN?{CKEM~41zjR2$?J+kP=6-L2*1N zHZ5IReG{*NG&VGMup=n44-T*_bnMvUk7hZi^+-@@2Ln#(?IAOx1xTg_VAv~QjHb5` z0yG!+U~zRO!MuqHc6cWeg&<ZSrT7Ia60__hUT_*2;=6e`8XqdoH~14ZDS)1m!2wk3 zu0%oxT63H<!WcEYOUF)$fEpiUhr)rbz4qL*tyNxi^;Ml6Ezhp+qWza{x_j6|TcimT zTD2lSSc}S0Tq0b!B(TgPSxzzSrvnDMwt%7p3oN4?ac4-?2)dak`#_2&EZL?=X;smR zzJ&KKd3x@fRd9kd0WjlGe}yWuBhjoW2^6s<6?Q^($6ZRtL<6tQ@ixi?OG1=H%`2)( zHfW%qs(E{g!qF&2X^`S{fU_0R!qaB4n|Jy^QYv^BqDD+n<A6_0J0VDzjEZHWSN0&= z?yQgH36ZX@Zbr*&ZODr|$ci4JRum;M$b}RJBiEF)3uiS6FN!3xi1IZSc2L-3kKJ^= z;pkrMgM2LtR8*tLqDLbZx4%)|j4g3ANyA@FkW+1ok_;}PgiJ%OfJsO#>CF+V2&7Xr zUSF@p5*M-{MB_~Hm>Ne?hEf(`Tnf5KkjBdgID%Vf8al0z0xECBF+|NEU##fosc>wE zqz36H!Awj^gyc}tN~V<Ag_hEUZ=~`f9A6;ulj>|Ik`*8=Em6e~Ir?=j#?jrBX!kIc znWACM$QHafBB5YhP6M|vbJ;lMoT=AfsvR(y7xFlHm0wvIF#^(TBgRZntWYl!|Nl58 zNl|O@kZ5lcD@&rFK>jYgCkbbAMTSWzNfw9L5v4?;P*S-`BP+YpOj9ixl(MGi0RTkf z1EkN?u_SIBHUf)^7ZPgUa3E&IO3b~pZGhd&F6I+SlsGA16iN^=C(+B%;2%acOVB_M zFuVa{^NQ)vFsr?(f>kT_*mKYQ_I&HR&VBl+r*B?;^XgTr9(nY!zKvV@>Ua&jwV|b@ zxv9O5$pWXy>c@N!(@vBcOBKw6l<+QNk%@RwprKx2yNWr(Y}zSGy&w^&q8C3dmX4ZO zq{tsbJ(-hi^UoxyVU>yO;*wa5zDD@E`q<b2AX*>@gE{rU#1z2)eE9>s?e(p1{p`}; z{Py5O4m{=bQ~UY{7)Q|>Iv$~_<P4m=pn?G4X;DoZ<zdu@$@C}*uW^VVbKwI^RWeIL z1mVC`<>0VW{mR2YWt6Wyx5I=EgYEm8V+l0RucuG1J?+$kPCxyi9oye~&%F;{ebqIq zZ@Oj8lWVWK^pdMCxwNXeZJ)jNJ?7YBUh~>le&ECJ-MV$hZMWTh!|EF!e{4<nj&0oo z<2T*$_zkP>`RwPuzIe&}Q%*VYtXI5j`N};vZ|TF9WBog7s%i)Oc|o#!c(9lE0>*|0 zS?M+4EWl8S=N?P}aQ|<ahV*QJ-qPGYoB0cua?YDGckaBo^JdTLoIb6sr3I_^_x5#d z-LiShhAr!#yXWpZH*ejxdGnT@uI((W=M6{OcvkkaEp2Dp@&z*&9=3AX@)hl^Gk$Z) zA4^qDAO6t0F%Uy3rUnGmbv<Cr9ULx~jd$6q^q=7X0y=+8ZA<vTiK(P1MIU7bD8(Mr z!<L^#R(LC=h-4N_6iw0X=j<3|ZC63Lqzx2+xNHcB7*W2q<;RoRLE-n8-0-1){qRsv z*K6PW#tSa^6mRCT1C8+19Q!uFeGCwE?95b=H3>m8>a4wUQjfDB#wi2>nL`x#N;vYv z0FlHg<Vzuon3r;HfvlI7VGC9vmdwiLS3K`7Ls5)J<;Pv)`{IlZ_{b#y$tQ#mTtVU* zLPt<?_QZt_VSOen`8LP+(iMvt(!@Hef{sd-gQ^^&A$zFL24L0gEv=>Tt@wjR(^Y^- zb0nh8b_!x!6=kYe8bIOf5&0Gh%ju)54q++`RXq#^Vh$e_MY>2Z)y0&mY`hS$kkqu) zQxQ@uVL3u3u7PI50ZNpKEI1M&B`p&VwarU0kxnxNcw&evBEni`DYG16yv&!s$d7R? z4k$6<fwWg5Hd-~%KelYyw4eX#qPM>3oqzc4Z~5ZJm%j2zwlYOBJ`aYBl(3pBtwm2o z@N8Qg%~nM&Z?h?5GA$|3`GY06{!7TL&>0cKszL&)O0ZGz#EkSfi5C)JSFQm7b0VHY zF5!Y_8OunRg5-jC0bx%0C(A-EdKO(Q_)9k18_CHa(qkPgTdKCSHO*fzgGS==KYsgd z@BGi7|K=K6(K!oNFxwhqcHaFR80hQj-nzDD^O{A?BcJ%_*{?eJkh-z%s^KA4$U;*8 zbU*-c$GKq?S)oi^^q(lCOkgIgmJM?Lbj?*e`bS>$ikGffF;fXAN{bh@AGH5oci!{l z#De8+s^C-yy-ICe$MlWQKKj7@j~{V318$PBT-Yg$CwILs4;h6)GOA3Ht|UbQr${%I z@Re6x)7`z}^wUnXRU{?A33$td-D6O{y=%C!xqkk<d5=B%FpnE&O*5-<=nT6a!2%0d z#vXLS6&a9`7cjf|248<$d-IZIi*z)LE3BZv;Z}+W@<eyf=;^1w`0l?yP*-1n>d7a4 z=iC3ibjcpS`t>E>``(XU`<i$C^DAHcZ=d|o{`<|P1QT8*6vtA|ekI6xN?DXAaw8?c zB88}U9{7yPV*v`74-A(YnyVX{c*IH{+TY*P)Y*FQ0sE3`{S6#t57XH$N}+O;`DSVX zUFM_4S(ITO_WyH91RbEWP9DJX*`4_APNJF?8I!^q)xRRSLb-~k0j$|>tgT~+Wgn<g z%BJ(AB@{a0BgY_2@)Bn$3agq-y^w`n_=;Qa*3ww-0SE01CHfEmrggNHMz%0>)5v0S zP%uKUQOLp`x?xbK3G$T({w#GbGSQ9^P(VT<sEvYgZ~Y7xpdpfY(o`Ea0RjQ4Qi}f| zVl)7PIXU6cArRv<ToNLV+^YCUt}TX4yd)Lit<BQl6a+&qVuemAKk=ZXShU>ma6te& zUhzRyCJGz^$s@1?j3>|PE_)Z2GmZ#UmCXYivUbHsjErQ)MgRdA82dV~v?R?4*XY$W zBDs!i$g!aeO~4@8j+IFgx_ZG4K$Q<mMXuzA220)S5XkcoEP^0fMruJ*u8OMmX$0A8 zrI1G;$wr>)L@EYwa&c_Wz4w5gX&654GZa4bfCm9h6(TVUNq`X-peVsD3PP%C9_kfz z<P~fP2$&oRqOb{2;bl|Bt77LxJ_o}Q_iyH^5?2pUBa}$_N`+dWJ2NTFFQg<6-IN0h zD0K)SS0Y*<ZY%^)5Qeq=JwrpI+)7fwVF{3m1C#<e6S6gQCL0*R^tu2NkQ7(4jEuIm zHu#m&EPQwXm_Pa(T_;3|6mJLRU<7&4lroQe&!&1Pc^)z=r$$OSt9&g37T{BH%ZP|9 znJfc{@n29aF5+flP$_&U!vFX*1up?6MPx==UdaNJJCK=j>=Kzw&t%Vm9OjwKEr+mA zW<xW&Kz#+I05{3p<X%Q0HxdgdtZ$AQ+QbmGW*Fi2FEKfr5^m@|`TB0Kq2SE3kn*3L zND3lZq~>Hf3R<|MU}lgNo-OkjI0m%zMdEBTLTfU_GGQ<#7B5}Aa^;FQyyXoW);@R3 zO}DOIz52liAL-w`qn{n^8rvFNR?x;*68&;GTM#iXllv5?nL@^)fWg$7K#GpwymF)~ zsjgv$d5V$O2%&1=kmOak!rG$g*Af8DT*^6U8Y3D$pXg??ZrOX<X&oIg?vj&;9%OSQ z?@THE_ZQFKv|-!te*fn$eer^oD|cJ4WC<T6$``7_k?mg!*;Pcbk_yd=S(qYpOsW9b zu2TQw4liJXk%-CJZi(7xdm38s1l@n+a*MChf`tosD$9fRjT<($wJmbv6IZy`xFcI> zyrs47loJj-<)j05c8@*$@S2-e-@-QzA9!fZ1NYwiz+E?g_uIA8=gvFupu>(i_Jq%V z_S1DW^-n+j)b-b1b=MttKJ(Pmybkcpy1t8ka>);V^qaPpc2*bj%I4#b+&jYSPs6MT z;O-qMaylT|$GW<f&Q^Bqp2K2*dGlt^pEq~z+?g|GH?{JW-O+*m{w-U!Z{EE5xu@6M zeaDU4*xzE?w(cD}CI*;UVC6YR;)alo2I^Z|o0l({v0&cZ-FIKQ=N{O2+0vzKusf%{ zv()IT4SZLr^z&c+3Rjvtf11ujv3X!I>oX%N`XG9Wbe^Ca1!;xHYlIOaT*f9k?p`P+ z(swzeYClHlM86YGVIrj@TZ5eNHL5rNKzg>5w8xG{z>XOfwx@-ZMi5W`bn!q_ef77$ zdGQxMa{<Di|L_0tzW2Y0{9zuSsfc}pkGykk08$}h`m%IFh7_AT0}%<qCUecmq)J9Y zrV^a7R8lDjW@Iu^M(M?2gEDMdB0TkZG=PY<DBNGCr?6Ow${T>y)lKR7${HM$A}A_| zQd>zg=*Wd6PuhYxpW&hYs)o9S3+DUG!z{6>SYSmgFG_0?LNMGJFR|BVdut2RY1VYV zR1ybyaVWd|%5hQ2f_wy`PSWxL%Sg;D$9zE3$7e$?3v!~-LDm9KQ6>$Z1U)O1ZIm>O z78e5nUx;p$qf8;P6FN!)s1#Zl>G(^afC}U|$&5fDOtvsmE&m8e37DWGP7o(QL6lhH z+9eN4b8v8Mx8-wwcJUA2@P>1L{gYp`w{?8(bMNaN5F_6iU{cMxfQ_s`SW2;^1B6vC ztxPQ3Iqoeajv3>*RKY8%EBGWk^aMJn5Hga~rkGhy6;*;*B*4w$!|r;N2j?IZ;!Giy zgaw=el!_}fkWsM{AOw;Sq^RToR2-L7qc&(`tikS^J*#E@oEDp=Qfb-p#S??w+c!N| z#p`)Z?d-xb(96B^rt!Y*4YdQWf7uBiIQx|4omF+iTdKzgv*qFIEAUllti`QZxM51D zg0P02)xfYuhk0$|liP+bUv($1{l4?Ow~~_1N<VYz$;aJ!+r2}By|qoO)$%q9oYuCE z9UJOyxbfB_j#z10wxSk#lz$qz@LM<skHX<BD}Q012s`wpp^cW01U~39{?niRidOOD z6OZS`G8o=`)1BAda0{Ce0NB>jHfQ#%0}kHnq!W*&>)LJQ%G++eW5cGMv!->39LD7g zc?LXE&NC^|s;0CGU=0<_Wm$ggylV5--u{7+xwEFvo6Bd65t2*+X*@V5isnL{s);@K zT6yM6U;5@ZowHzGD|gUq9^d)Qv(K<i4hyC)`RyNhukC~HfBQ#2`aT*GEsYou;E$q_ zKv3pXIZQD*E(Xgv0XZ2#o2vEe`yPH|O+)LfhQ@a8_uS33x95mMcAq!5o!S$qVkIdO z3K9^{+~iVbGL=E#0B>_4dcfo>22zPJiH2dP4E7qVP%cB}wQ|Nxl`sJa3=9l09Eo*d z(1@l+nFwTe6|xkJ!N_57A-__AlewvasG@-0y<-c{g%8|+FF9)9s#!Cp;R1YAdaNZo zaPL1oG@&pRx)QJp=A_8l&_gwWLBK#j`|O+Xr?^FnGFAM^L+9eilQdIKl9Fi=m`o2V zLq0SUjk-!~qOQ&@0BFW=VA<<A#G=UvjYBT6v<g&c?^2SK)i9Yx%mt>pYS=H$DiF!0 zE0hJD0GR?>vI{`k4(f*BLCF(07a^04287+@JNN=4IkCA`lB5SHasH{T9wC5jk|Z1j z$q`#oN<oEIaBy&RXLk=D)~e!WluXPjZHPz<WxOi4(uJLgIWMn8f=ir002=BbFn2lt z{)*+x=+%P~EhNVEaSk+#fq2LuZpea16e@8)6V{g^EJ9Ea#f$>r43;S-6z8NP3J6kW z(#PS1V1cSbaWhbukY`k3sK^ev12bV|s}<ClWWAzn)`FhMAy|MQ4lAuDYIbz(WU8JI z$|*yT+C{#Q7}6f1!&WezNx33Dax8bAy_H7V_zG-MRGJ(J?Hi<(DF)J*%^Ff1<b`n< z7b`}xl#h%8-?Sn^JR%VVLV(PSkSRqH5JeV1k;aKkgee5nM};qE7KFq~8Ub&VW0HRn zEE39)3AM}F<yv7S)z=GOKqkTeFA}5|N)(t}%CMNHOt0vR)dd7KtTfJrjL9ajlcs0j z!&+D&QDaPCFwF&SkscOe1_}hJ(`j0#vVefedYOE6BM)U#7)rD_lol8jP%0Z10R-0* zpd1u}g|k)u`CN7sN0}(G74Y!z7$fEx^XH!R`m<jBhO@S;-*ori@3~?1P0SQ*-@0kI zdsC^Vskwz$$J=V^Tlfl24O8QGr*2`W3}~rl3?ONssLl!m<#ZUi>(b$r7$mBknPMrX zRuUyhkrdb=I`!UG9fJe|8?J!TtjU3RjJ9atJlN-y*~mo;=b{*>PFJVJ16=d#qj7bk z!qP=Q{NlFlo36X=_RoI$Q~&#|Z`U?9AwQE(=p|6WO(cp2yVHtuq=0y!<rBI^VwQ-S z#1U7t^NMJ&HKf<tbVlhgJY<zUEh^jZjZ`%^H?vIw6ZzY=buAxT%xK1zF<!sN0@c-H zLnD~Hs-?B&sKfU>_NYBSIQrIgo4Wpf_kB0tbnC6R-}U(8PhWTW@2~&UrFCu7_TG1& zLk>RljMGnh_q*P;W&5_<ZoB>Fn{R&Xs0vd4001BWNkl<Z;YYV@-PG651T%C8M@Ked zpoVF6)7qxb=G}l<v**p5KYziZxwGeWOrKWY(8x_7!`*FLHm}>T@t(W*WYoH?o0$vP zJkZxyV$TdL#8xQu?Cj=RU)|Z(I&;C?dGls1S+bD%rWH$<vfs@7`EzH_?BGM)<^De{ zQ=Ccs`(00TZ{K$O$tO(fj2+N4XN+jI810x1O1g!%<0nAeZ0c^rfv)68HvA;LrQl*B zq%?YTr%?pvfoZW2;ACq8U^FBS+kF)cL89$uL(6c7V8<glw{>J}AYbyCT`@FK_2CbF z=GPbhwA9e_wXc8eHD|wQcu?1bs_(5JHlqZ@2sSa?E~-gpx<-NnmdX`}@)!{}6C;H% z*E|=&sO`W)Ufj$MWKz6Nrhr+X3ORYmCR57h4nzP<4SR-cacfh}0F-g>L<3`kG8wKF zj0k%lDQ1NqCd~dGI16=TaImwpolPl<F+p-7BTGEWm0*@HD4_(+RBc;369hC2*d_G~ z1HnH20xZPJ<U$37NeP1xuNbfr4={y}Axhv;pcHu$Rts~<PMT%>RLmS9;|fsZDr_PZ z$pKRUrCG9!gcC`h$fLN*EA1U6G9|w-M46#j5=q9<T9Od5L32`!AV?{o1wro8;}ZVH z!xILSsy8?=v23>)Ke_n3XTScfKlsLlogLFY_~AD?W@9?QuWwT?QdNtyB0;pU)>B0Z zS=_uPY#)LdqS4f`;&xgeR}fEzEJ3tP$E#448b`EI*=GcG>=q!@O>*UGmCZB~$U}}G z%f+1Vjl!zs8Hp@P8HU)XSD0Je7}+J6FrUr`q&*3#^lZF!#U?BZ<}R*_=B$6H^xNP5 zexjy{U2e8--7wPklycNFp*uJ++{O3L-gMSWW;gYX^NnjhhwHqC`Z8zl@&Vd|kea*S zP$(<`fbv9t=R`b4aAL7k-+INWJD=M=e8llboN(OUu?I`E9^+M~o_y>Vzx4IN-kxbq zGng>5kgM3Fs&z+w(^Xfk`p8G#$eldaKp#|zB0{4$yuvPuGfSY7pbV<)kN?6LA=<?F zV~=mW`NmuJ+++8B_g%=^*sp%=!cUz4AAEI?(X`z^ij_wBoWR|8-@SNA=YIR_GcjI& z^DXzyoP8Yc(=jPPpT;U^^y0hmv<N;dg^?^A(8xKMrVUt=0Zsg*si|fC#vLrTTexT; zclDt|lmTO*vO<As*7S~spI`hPNHJO6(>wO*&s=cf4}Lm6IC9FVC%*2rulvJgmtFCf ztG;-_g}?j5m7o30C;s^rN3rV}E`?P=fm=ur7AZRyqLHd>X|3QCDFO#V)H~2irF-vt zuz%-3$AS)qNe~_x8>|}cKK7`?;_f3b10%4EP6mowkV5}7w+t%~0d9+cZv&;X_~Lrh zdP+Hq*Q{Y)CVl=v`Ywcm4OTBS7K=y2Z1+gV7o9qVW1Rp`w-wzVG#ts5%@kacbkQr5 zf<%QQn~k^c+_{zQD)-uRCH~={sWdTb&P;gmmRXBi&;eC;K?ut(8Ni+nmJ?_Hy%wB9 z{IWt}4^wm`4Z{bPbN(V^R-$w=as$z5$mWS7v<mg&;V`b1I&q;$GmNbq>@wdJ6)Jh> z4Y0)Zd?e3g&mm3uYD<IYi08uu4HP%zg|aO8U>hSovypNI4JT5ihf1lQCXMCD+K15u z#l*RguMk%m!Y`DS!`4ImC`K$|WicUi!d*q<2j$?&Gyx(;e!#@&7F-8AfkReRi8n_3 z`O-j5YYw@i3SuRVQ_wXK1hEtcscb7qg3pBPehO;DEiJ#S&HmOr!C$m^p%25tj5r~C zSf>0E<23{XL5Cpd1+ws@6_KXVIHazrFm~!5+$%bzT;v8qY6UUm8e{hj3K3m-f&nQC zpqTsct|poQZAXSy@OB`MoUT?4N>CNehrOf#2*%P2nc@OSHE$I6^e{7z@#3pr02YoG z=7~}X)F_!?8?6i6LUP&2-lBElp2lmWskyePfjJ|-tATh?u6j>W@IqML6sDqa!ftR) z8SU**g7&s-;^dGWRbm4hT!BdYrd3i9h>I#YDHb7uQ9hx0C0ABJfiU&hHTJ@s)HtAC z0IGQlO%jnu*(w5$NiHwInv#%$=eb}#C3i}&EEk{wot>6yCcm<cgd>fkK-T9>C=vt1 zXkoS}Wb;B|0wH@?lsELMShB=@o0cU9I%;K53ULxK;_z|0D)Myz0u|82jucbHsX*jF zC&*ZS(2BvZci?yly|B-+2kEh^#%9c#cIHb?d&$dR)ZaVs_@j^BfA1rA-2V4_?tO4; z*G3<|HMX$#9QV?VO)d3x&3Y$q4mmY|xW0;D+oY&rku(eO@YvKTOEa`JsJBwr3q`n8 z6jpd4$_W6fR9GmiM9k3^)!K0oL%0!c%SM+hTM`ONImi2DlY}+O9z$YFed#y9`O%p# ze%<Z2-SuxD``G6`e?iBL4z}Q9qkZTjp_-@<t(Y3t#8RseNC3yqaQCnviV{+tB3Y$` z4*ub;EZ-stR8G9aMUEdAgFsDb{=zv67tO!#-Ut5r*K3YH>41SgKIdks&_FSR;2Sm3 zX;ia<Fz;Y%#uv@&T>8@EU-9ze`}<2zJ+YRVf*WqQ>CU_EzxU1?@40pLMHhZ!+PnqK z6dZlbu^;)+hnw5lpL^zs`yY5<(}wjkXHH+vX9MTVZf<O1ZOG8j2>Sx8U&r72hab9k z!}<-IH*MasZ8M*ZWZ>ZY4~mVaRMpfsbn@-`8FS~)o4su5lI6>mEN9|(#lqRMXHB2c z(9FVsaPV61vcoX{Ur+1TuN&y?Ir@l0c{0rI0~HHKUtDo`4F*-~hgNrDS)U1`dgiAS z>lX^?Uj$$sbp>FHFmBOllW|lIu`NB2Q#Hn?l!zlv|Jj6tp4_nO3E8k=$Sz!hwB^() znNVizk5D(heM9fN-udpkZn|~WqQw_}|2sz>z4vfGxlD#zvy=+(-~@VNDsLP(7kTMX znUXRYCN<zaXI}6(y@=-pjDRe|<ki$X<eprJC+gG`6AQpJN10wqoms*}UBoz4GmIH^ zAwUDdAza95Axt@fAMB<OV|c_e$f3T4E9bSh*SPFD^Z+lcnq6x~B0-9vD*%AAW=v-! zGsb`c52H?Ez^Fj-l!+anM&(a0;S5?>8SeomsMW`S-PJxe5DA?^8`jCvC~_{4LPk>q zI)R^mE?`J5hm<=hatU!VGhz{hmxhg&It(a+M`#Q4;17)oO#_*3ma)(x8D&;^_ACH^ zvBk;ZVvcE%Dh!7WS$oQ0jLqQp*mK^+Kl#DgXTR~w|8+s<wDxzr^A$aP^bS#z;X(CN z21HGklz|i5cEGfXS`1+FtsCLp@YHrD0%BW9kOU?0nFp4SftQs%fy|UdQZ=kjp1f7a zj-pVQL44LB5d?{{7lS^?wm<+)Yl1Q+VWXtQCCw~MWQU7Ls2~=KqKP9ZRI93W6gxDu zVD23JiV@`l4?g?wgO4>#Uoma^jOjI1e7?1|mNEXw`llahZm;j{-uR*OKlGC?e02HD zmhr)ET+fG4Y=9XYT#ta~GEj_?BS%Yx#2U>mlmuQX<<lN@8@dKAx#HU4+WPmr_wByb z4w%L34fTEp?lXJdob5e3r_C5cYsQ-xmdUT$mT9-&ec#6Q-AfjCqN@rP7Lp4`8YU`4 zVGYtWQDkb0Xk)>oI+1Q3=kd~ImtQ$LJbvnFr|{K4(hfY}pf7#pYX={6*o+x7&|>?x zZO=XT-0;}o^qHN&@3r@yFuL*9yG}mixSf37mG{~JVjUGH&y<SIAlh=q7_iIo)|J%H z83hWnsk*jrfE~*x7A;wUnv+L}I~ko4f^>ad)mOjzrEh=h>-!vd=odc!g)>h*5Di}c zFQ;67#hst}^nddX#=pGg4QIaWj4%GzXI8G9W1kQnn$F<ES^Wm(=>ZTAdY%ir1*7n( z!jdGU9dBNJdsP+RH*DuiHWUc&7x13XamOA$RqDV-mN0ka95EB)h-)xT01{Oe{=rsZ zEF|6lMLxH4cQ&0DxB=o71EyjM@{`0OwCgGSB9cI3&mnZAS*M61O>>0O!P$wd<O-~H zBYdQ672+BzxCS<&a|LH~Y_MnNmd=^&OBT(KrdiZkvt}|QF*ZDiGFZl*IgAZoT{Rg> zkH-e~#spDw7jc7C$myxl79fX1$ubeIWyp|AMnw|52`V@_pb#P_F$z{{foIT5P*2Cl za9MUB7F<9j&2SjMNWw-zD-<zgc{x1Q9wC_BQii-hoDWJ7$ZV)0Vv!w5p2C<i6)GV) zhbCb-KwuC81rQvgMPW4V*cF1nhOB`DOsc7P0cgo81KmVn0N5Ckd#-^`*{e!@y#s>- zgZ1qVcDwwCaAtyDxK0oXQEjPIC+H_d8)q3sKICof_=G{{^tRcvXUEt~is(X#%irQu zHqIG0oyl#+z>uO_VKl(#G}Hi4+8WVIbVG?MB@!ehL=lK+8i=hiVnHI3>5@9TG@znM zG(#CD!ctL_>_1`X{AfHeg=Pv4Na!w;A|-^R4`ATY)y)`@_d;R<9YRGpDtm+j16In- z*(-!3km5M!4kX3SOFC8{_WpJn+8eq6v|ylQgoCpJ+MNeIl@nKr>R4zOO>yFc!wM@k z2?=Gngd{;YNhP}wGI;><Kn=estXhZ~aPm-^a<+1q9XOTLe-JGr2&#yQ5DM*jDi=;A z)rnJmuSnn;JiW?rl5hc#37i8W5+_4McZo!Hg#_jbg_1?W7UHJJNfk@%as++|Lk2C2 zh;+By^F<X*lHQSU?^%a;)<iQ=$1`P`(Il*kdKgXXsbut=q@?mWfk7@g<tcd8A<94H z5(FY89E-*YqR<I0z}R!)DNLcW2ek#sEh`VNhsL}EsAD(a{rBB>pZo8<XL#qvdGltR zapsHez5jtH9)G51BdbvBChFRoTG|_$T51}ad5lm~$9E8F>9UGZMYM#7U_o)w6O|hQ z7!=~JdXKslZltJj2xu-tJ%x>}wM+msYyyq|kT;Z6&7+g+uWhPZN>>DI;L1^&o(xJa zc$80_EmfCa`tw)(^XqS3ece0HdCU3#@gGMVd2nB^oh4hPV;GwY-V(Rjpgx1oA*B$A ztRkTZc!4>&RxqoS3(GyH<x{m76pgXZ0~0cUQ@<HHGN3u<+;jfz-#_!qpI=&A*M8<p z&e(I0h3*2udZdxj@e#hXAX#R4dGbeL`Yt>B`}3IrzN=SPwfCNj_uY3fA2{5xZSbB4 z9=iVen{K-Gwuc^k?ApKn;o2)Mt81CI$6kB0F7)^lkEPFGHNnFVJ^Hu5UcGVM1||b` zZtv>v?`7*b=K_4!z->+%n(OAz>6kZf$)Y6-RxV$$+j3R~ES@uG9v_2jYiX=wqr)7@ zrhS>~2=7$u)H@9o7D~Hg1Pv1g%hS%CJ4so#YzaDQW=&@~+X@C8=E`DpV<}VOY&YhF z0TV2?%gj;5u#q%y;}A4!Pk0+Ql954CU`+N&l9qnM5hdxc!uNL-oq%^!Ob}3Joa^gY z$muPRBq&jlxF@1~$J*Ma?buN|`*m-9{NekLI{Emoe)Y?X7Efmn2NbdI5>^NFqUc_r zQjm~}`DCSVMpA`xT)SB#cRiq3pp?_KS~&~_b74}hMTR{*M_ytFlgOBIQW#)jd6L}@ zG2)~siV1wBlH~(@mxx7N`k;d!aI!mzqN`9#20@PYg_zm?@b=+}ks+Q3vKKVFuaFv= zrhI`Pa>`k&8?lYT399)@R)@=uM_IR0VhfMB6{H44HB$GecOXb6kfRb7M5Jd<0}})| z8MVmVV8N-tu|!OdgyO6<HL@CzR2-9`pkGiZ=X#YCI8&2?l1T-&A`vWWnxK)bsY3Yx zjrJ}R3e>QVbg(FAO&p#VDMTg0j|2LS9DGJ(!*7Z5>by%cS;0<(yRoX?q4E9qU-*+B zU-<fedHW~-?LXKn<n?Et(mwzit02o`3G5uEfFX;YV#hrzBZ-cp(=_^B!IhgAFcAVq zu;5U})EA~v8VVDMDQ01;5FRN3rbLw=Fjb%?N+Ie^a1lX<p(%L|lY(Zl5(cj77?AEo z>LC^<FoRWr&xIp%v5q07<HF9I!=;gdMGNLRyD?F^{`#9sqctp?D%I4(u)dKsDHDF- zwQKvi?|ExeL-p6c^4WKO`kVjrsej#fR_nwNyJpaKV}z($cJeMj3;J>UAd9>owtNU; z9QHLBZR))2FV{c5Ve^59A9?1PC)R0YGL@WtHm7$^9C7%;mtB6FO*bxW5zryjw{=Y4 zv3C6}xAPePBz1&1S!xACBk&3nVVJZnX+qh>Xf54{QUsc7ww)r6l`gyNN*<%0cKV5A z43AEnbm9>wopg9?Pl&r!)$B31wq~C?rb)*Atj(fD^BY^6AAI;>zInp4G7YPMP>mv$ zO{H~LD2>e-33O*_ppPJ<eW$v!TCMK6b(^1DH@bWQ&stx2KvsVWJ&N2{pY^iCk397F zqmOTEV`OEsL9_kRGY>uaq~Cr2`#=5CSH5}0pRT;&hTH$`-#>odd1u+1)VcjNBE%pJ zO8nCSk)Z5e%FO~$21%N7(8b?$%Uz|~W*(f_E{zWl_I2|u=>reiN8zSG8qIk5EU`(T zg3m6>h%R(^et<GpUQ=JLQ$A7-q7%GKkyOj{h!Nz!pil`UKp3rRh^-A7^kD+GrVmC5 z9{gaf859yrNXs!T4x1%~pfb^Ef;f2|)K%U{EcJHpzW0)j4$2;{0jX-{tQi0g_V*=9 z;8>%5C)T!zku0#O5q@jcDa@60<6PkcPh~M4A&SgK%1$igwCHR(Jc^4~T#xJkwDr>b z(9j`0h@g(9z;BQZp~h?LdERS|l?kHAL<E11fJoW~(xd`p{gH2xD1CBc<$nwhB}Fx% zQNYVl*2A*!8op2@31(7Z`_L4gkr?bCYAZ>tlCD<gtO%|Mh=W>(IU+^GSbk&k8+@dp zysAMcxB<jJ!4L?@$aVgxyQiCBCrkOl06?T((O_w@<R}p<uYzbIDFul_nV?J-X^bWK zB=*AHm$kOlj*Pm7MI1TD&_bD%4}8tbpN*4TNN3G3Ic9jlxjeL8WZD>jitr(;dB907 z0El2O+Eb<GBfl}_8M6++kt9vV{6R(GgRI)3l<Z8gMf0h=+7YwAqX<YPn<U{p9OBz8 zX%2Yx^p1GD$F5$=Q-CGOzyLQh6g;p&%WlgY<#(-1Xa+wgh3lFbOZjy}g^J<|5=LcU zKZ-%ad-3WtU|A)F652DTOooHPhZ<DJ45vbh<d1BRz~QV|MPdN~SinIF1nMxiRItE6 zsh;E~j|?X@Qm1ASF}h1qA{G))QpphBSwL$J)8v>*WqJP*xhW7}RfxP0lw8L(RB#`U zL{%=s%TB+;jzI&c5GJmM^AJo1UO8}8sAM;dpww3zKE<{R?CfkE*xWrjG3>Ji3HeLo ziY)y|4T8E^sH^HG$01tyo3X+wP>`v`Yikv-;2=_XF@ey*x{$`x+n9Dtyb_Dvd6N9T z^WOXP!;h@oW68xo`sQJWEaP^4!-oEQ?tf_Y4Y%KP)7=lPd2;8*wX7kUsB2;3yt<*8 z`SbevW_lW?_-s*};r6bUZ;m2Om{PfY>W>zMvy_W5WTcYf%nsi}Vp|#I<7WcGMI8YJ zdj@_a`GUb<-_iwhSthTE0$cm4uLn@&pymr>nKgY{?G;!2<}Gi1{~!N!^#{&7@6G3& z%U2$3IEF`T3$&nWP`fmYJ`XmnA4DL?g&(CE$)<SY;fkXGjGj&DRf2zU#<)RhZ*OXD zj3J_HuN^gUZ+_b8Cw%39+Mj!N<AvY({&&B7(aPPIA9wswC!WY7_5)|nX=V^O&<`so zE@bP$pohf;aChQ>#jUi;9n%_5IqBdRoqBNp(EFZwX3Nd1@A%tQH{5aOJ@?;r^L=;T ze$fxVKf-5+`g`rE;A+oU#dnDp&h1<{f7a4P3wS|b<!(zCEnT=^;XFP{*xZz5grXHo zVvXoDnKCK29Ay(*N<d--#+nvfaYSKgkzJ0Zix%SVS6_MkX)iib^I|M;E$X76(9>#T z+Y*SjyM+@_@DAp%9bF0*&#W>7ETgqW(oB-YP?TYe?&(jdd-m*<Zn-MxsgkG6Sw3%h z(PxlQS6kE8+}hJO6on`VfUb_Ms@<@0^Q+H#!{ZM<_`&l(@}ZBu1A^@9QSk%14awmu z2tpe|*?{X$mrBtBq<}LiC60uEkX<GUp9c&?2Q<zFTme<#E)Z6bqi7lsDI!cXuVg7s zk`>5!0483PrF;^PGm`UO?Fh3hHjIFV5es$1l$!!dtzeB15D2=FOFzNA*68rEWs9`E zmdPUo33jqf!2%Bg_&M2l>&zLQ%=bXSZ3f|EL1i5c)!`tw)KG%5R9!D-NVm$8Ee>Ik zf<)CJA{m1mx+6J3gZv<oxd~d3C@umgP%xR28PqHBq#Yhna7>m;TI9)5ZiO%eL+k<| z_yjqH1IUJ;u$Rh!s(YK441g)qwitq}<TY+E;!6FQ=pULm;>f+f_x*35bIv<H_^;=8 zc7Fe*FFCZY&ov%+u@Eqds$t9F7qEk{xi~{O9LA#3Mv+pr@pPiJ1L#8?=CD(+V(>`? z9(vc(PKL`QhV+zAnW8udD`n_rrgY+nc|!q1pVZ#7cLEIQY%>xb1*0B7uR=3|o;WQ2 z<dDI#-(~Rt1U>Y@@z^zk@%#d2pQHNz?dt1GjLKSCcz_f40p5IecXgG<hhFreQ%^Wy zj|U&T``W);_5M$P`NGe<f90H6e1Dghau~Gp)QBMklrb4Qm&=@ye3Vpnc^H|#k$biA zy5?uP#{b`CSC{H*KK_Xh@!GF*?^c2|lQ^fIa^hu|t{NK|scYcl;n><iMN@P8j+%z6 zuUYlFSDyq;c%fxskx5ik#5P5o0>wVSG451j{AaW@Ff_rZF4(u0ZAZvjzi#v0cm93; z;>AZDb~r-zZ14Nb=l|=@JMY@Gc`I#eV`F1$Yx~^Uv-aL=`M-YXee)O0nmMy`!GZ-( zKl5}~cV9yjD|qn+?Tb0JdfCUV!Vy;e@ZKnVP2x-~6T##&1=GOW3b*XP-yw$|zTc@Q z9s8owPuXwZmHF5YVyOmZi?Ao0VE+U5*=OIqpsGHjaJI34WLs0|!ykO(+5d9(XFv1b z7ysm!pFIDQ*Is+=7ccnC!o_nM8>$#-V@IsP%|W<uK{D(jB_#`!MnEx>`?KqM9(-s` zZDU7mT@#KtJ~}eow|)QJmoHq<J}Fj+7SSnbWkLlfIfR9z{QN`S=oz(w55hBh?HdI) zRdKi`k-H{q>lDnX;Uc*ZT2yg|eQgjQ#(%h$`Q|l1t!tCj)Fhop07MC-qAn(V1kj6n zd%M~2c<;UTh`wDwy5N~JX5kBb-@z|<QI)xs$Iudys;7__22K-j%Kym!$EU<ql*qTJ zGe9|ID54pRvwS2gj!vgRfibnXkc^i*Mdegsbsf(koP5+JtWRYEQ5{X;FWE->CT^Kf zT!}|Tbm*uRsNtBxQ5fzP#??J#r~oO19WFsVOpZ3E$%0G3$x&S5Kv~uO@fUIGKv=J! zhp9y?h$3w=fdV8@UB<F82#NuZ(2JA1B~Fxfbah3Q<mOgs6QqEHVB*U)$wND2fJ4Bl zNH7Y;sEy3Kj<PHEvgJ$a8~B1%Cfh!QbP$FX<%25GtSf1B*DTJr9i{!u#$K`(0FY54 zgrrawP`*=X7J`=bW|#+iksYsvT458D!q0<Js-O*pOm5L0V{qz?_wd};*n$Q(h-+Fh z_}TG=5cGuIy*=aXpkx-bd~rBnh+B4mc}W_`6GkNp_kbWn!UE`tbWo!+TG(ub+F6uf z0Tvhn28EC$-9zG{!-#4Z#SsFSmQn?e04j42Yl0}>6fd&#RM^VAJW{{}4^={Vi320s z08RKpnhIu_#{YQ*t%6et><S$psS2=El3ewlBKY$Vr_xO7DcmmUyYk2wnuHNS5+kt+ zW>erRWmis9F3VAC0B(r>kLDnx<Y9spIVSaJEK0nxIIX>TYgfN-f$1++DvCR9fTO#H zZW>)pr3O8kv~1O2A{)IhB&5p3T?se|nqCq%@dW)sPS^yNZcdlt_=BHqc0*nLrVX3k z|L*rc^VnmD9lF==etYr!xqd0Mwz{-vLGz*ohraZTLs910XM1nC<E|T4-Ezn6_pW(j zZSRJmff~M)6Vn8ZEp=??%Lf$ca@jYWcNS@2QH#Da#vtg&9h)N<)a4E?yoNv)C0Xci zWkpL{HnO9!ra^U)s-3r5czdkuWAuxo{RbU*Xh*A)I;mixe?}(HBwMbP1isDtyI+6f z<DdMWuYUde7k~FVcin#H$3F4#-S$|{rwwAeB#O<|pwU6vQt1ea1A#Db44w^}WJ4fd z>z<=kq!rN8LSr7tjkGq`%$!aG5i1kyEG%m5(%M%4xi9?3zkTd8tnaU@ZGQI2bw7Ui z7eD^t@8-^%bL=sPzvzsUPdMh_Su^VxV~&sT+QA4`VU-~!R3h)y@C=G>e0aEu#Q@wk z@3wRn8#bN$<}<hK7<%%lji3LoZ>+ju_1xL*yB)f6@uInV^I@5lOP4HJG;iMA>7C6D ze%d!AWtgZQMp9(x+lk^GBxyEB%)yp6N}cpXT!^ru6ow@PJa*IDw37*yTta95(?S38 zhS&e}XTLo7u)|;Tx|4bGktWJ%p8$qSj3z-#>jni#T7Mh_!JT^-hc*A;u<zhNn~;UZ zm{Q>L;D~|(CMqhFkeX=*JwNVen)$$Ytck$4Iyzf<W0pN^n5Ol9$ECqh4O$z&`-2}% zYis=F?|*gjNeA%I3_UGtEVU)?KL7wA07*naR1vNlCBmZzMT9V{qTiEg7>E;z+9u>c z0)k3Hz;g;00V82ca#9td1ylf3pbS7VJWd!?g1xm!cu&DX3Cs$>;7hvkI4moGGv-+Z zBA?P=0}9>-u_lt^G=Un5raYl4p~#H0oW+#}3Y*1-yFB9>U$J~C9wjfOl|#Tqir~Np zvW`U=`y`utGd`k04lm!(CQxU%;|k>94*^NpQphZ%q6AIO2;ffSGuo@OCDy46E^!Gn zksK0>J!udVgHj5clA0Jth>*adl_AS?Oe>Jf;3Nd3>G2=2q%*}136tnaBS560*&>^O zv@}1-x}WV7Hn3nQ5rNGS#Cj4Q7i6@GcQWymA0pUuU~v4OUUc9$zVW5=-u<ET-t~dj zpa0;*<M$pM$VE4Jza*qyRcfkhVl_!E?^;_rW;tcRyC1w)U+d%=JIwKdF*7?%6*IPu zI)N|>jiDVcF}!n-r-ariWj2q9wOc6foGnx}i9{Tl28BFJIowS={)#gJ8*2VIhxXJ+ zqY0zhx`)u{f*A4>I{>6A?MNYFX0&>w4h=FvFu_)`%xP@dF?P#scbA&lYx&#^Vn71@ zMn-yfZtk2n?a)K^fZnfu@q?GY{7pBnTK%Sv|IgPx_5P!l&m8I76q9O<BaucSQqp1! zt#Pd(F<?YWCJ0)7dHMBEZyh-Clw)81l0%}63sK7wVx{AbJ)*j)zOTP~di%6c$aNvi z)K@ii+<4RNL&H@JEnrthD*}08b`@U;C8fyV1j%^SYiDn1=gxti0k&9WpCT=Ue)Q;9 zU3c^7;NYpJoY2zhz~qiQ@B03Czqewy-Pvn~=K-uy-`UlD$Fomgb=Bp2?6u+@?|5@t zOKItng-<+w<Hq$Hm#tXtq$=!q=<J09BOsS%PVq>lf<sx`L{j9#o%Astx*c=W5&P}8 z=b!%cht=2L^qJ3pZQi^E#~pLj2`3zj5q4WXgON$m@_`?Ptlavh%<^%J8OR<YESOt& z;kQ3|)~n8Z&-*@n&EKwm`6Ew$`#b+Td*1AZ*1Bn(?K3*!=|%`bdqer^QXVl7PZE(E zT+I0UJr8wv^>r**qNg%HFx*=j>OJhRQz)0zOCXPmx*65@6_q2YtbgVc(?()xi@+|@ zT=q$iuMHug^YRK<@rr@=ErTbasb_Pi#s~2gsxV6uR5KcrO1@;J&Bb$>Dp%_wIi5qf zGSLuayuP}+r)v{;ar^AEN3^%H#2PcEPopm!8tRP~@mPA}s3mAgJ{B-Q2tNo(LeAi> z1jS)NMldwgEOcii=2>CvazTyOE|DCo6j<3<3g+k$A19QpsO4NCuCyeujX!hBF%U@~ z)7IJo0)<m#XBwi$DM&zCh@hw2(MEt}Z=8<}M#p^4z#$hQ3&tsd5r9d?zzkWuniEYH zatHtLa|b14s{;*8v?F00n-^|Z**A$Cel&O1kN{O}jbZ;7WKB0Lln^PpA%@sck_BbA zv#Uo4KHG$CB}#t&LIf!UGgF;XPzDZ9DvkpAQ?sfu23doCFl%Jbl`BEBH}Z?E>1J9U zB<w~?{`1<EKuBJV2=pD6JST@EfCiV~r})q!oO%!d#uV5p8)ghM6N+1U-#U~Q)I#3S zjIh3eCL~I$C?#+xn{X{s3!2VyLDjwxv7P*36P3_JWKz8w;Nt}Y!@R{@s$#m=!D3li z$!L>gB(pq7N<qu|5euH2G|j|Fea#r(FW^1oFm)&$E<(QCgQnMPvLMGlhuWh-6n648 zEiwuSBXJ}`84aAYQD#b~IFyw`$s%BR6q(lMFhP`7GAhmi8i2vRh=K?z3V1H3<#m_n zE|Ch{<O+iHr6g6!eqNxEao5y;OjtS5Lr_Gs@ikB=o&?A&AOf~5{qyJ<1(ycPb_H72 z6%sAo^k)*}f>UsZSE`=Y!Q+(19X*3u-#c8u{c@7+K}CXK5<aIa;VGe<NeW&RT!0Bd zQpLm}w4_8-Hgf#Wfahph#HeblZ|>f{<Nfb>_cM>IIp)~Ie*2q?W=@M%BZyW`;4WU& zx_HqEuYKhSjMLXX(|!A$_uO>zU3cE;WWlyA>seV)s%@xlXyqM*y1K@?`sRiPrs%7A zTQf^OpI1<yG>Q#SwoQfLTvA3`giwdph4#-e8Dcudq&{RBxy5v8r0<L~PQn#k0IOyk zd5+-!uhSR5@WCUGIP$#ro&Uhyx4!+{x4!TFA9&?!UO6;0<|1f@y7}!}CD3~DGnj2g z7*Z87P*z9-TPz}QL(SI!M>^UXW=?P5hKHx3fTOYiF(1ogn$u1?`sf?3yz|a`KK1Ya z`Rp?rxXEX5(Y1BQC6`=w$!~u*V`lr|haPz5i(kaDf`#*%pguh8h@BaoundMt(HPJu zn#<SX-ToOf8Wzr3GJnqWiIM&v|L|w09PbeJA03(tRGK;nNh<=R5W|0yJ`p-ZB0O-w zNuzq0XA=N6If3hU68S?G{F{P}CY33dt=qbuczP|nJ#XF8vvu3{=GM;hKl*R`?f1Jq z_F7ncuqm_%8^X$NDHDu@M+Y0_<OsJdmoki%CbUqB5Fk&OV#;8_4n0T#ni#NvAf8q# z)vsN<Y5h8ewa+!RH1+q5^z;sljW#ggqh?s(_FQbuFg`Xo{MvWComUfn^_#2O+gjM` zarfO<@X13v6v$~rE}AOZ?n0~(55vGY>=jBNM8s2elY~}-Jd8lDoN82L4z2{!=n{;Q zFR<(ZvRf7~DeAvQ5?jCuRl-5iQ_>ce0<Fkt)f!<10Y%R}pG6()pa2<RBV^1&yrPig zLQv*>DW11aYfFolEOLC5IY}X8gierAv5*5J7D3eMWJh%FL&t_$MnL7k=>&=iQ9}0H z>Qfxixd#oom>Isw;yyn&%@ICZAjEAb-Fi}t+yb?r#wC~uZ(#EH2eC}@ToI>$3ZsN+ zl1_*;2@XcsjFe0S-cZ4`>;y8;d_x{(skBy+6Lu7PDkKzwWKzP0amOQwlc1&X{(*_J zUUOn^-v#G?_@gW(_|-3edc<MNcXpSyZ|m*p?xhyF;d52}0K3978Ne`Te8hDC@aJ9V zs+#-mUvudn|IXeV)QIWRI%iIw-qKXh8Zr=bxFjcQVjh%9%x8pDW`*+PMbJ4r15qYX z$kC2uCK)d{6a$L(3CJV_A-YiMrlBE~nwuzfD~K$lB?w5-x@A7ePBBdIh}CTy=gyx? z${n}gHMqT}dH#Iz?AS$OtF7KrU)RCM95!t_{Zcja;lIE1r>{TzT~}Xu^}9ayrLTVC z+*1x&KH9szp~ULa@oHBRI3SR9QAt9K5QG`5vD)S}>$-k(*;O@-ZJ+(me=pB~?xHi1 zJ@=Tm$L@<Ce|r1$Ig1cPT~V~AuDN~YQ%|mW@WE#fJ9v?bdF+Bqys(E)zA!;mS1%JE zecj!Ilq|b?m#XW>OAUxaKWjazs=e;|)oe%q(wCiy%xHY<amPII%oDSxch)cmVNw-q z+`4!6Z`!hc-n==ycR*9Rc)^0w$k^Ja*Y37*1+%Kc#jT))j=Ev&luQD!)f=^n?m)B2 zEeM4-R+>3;8i<P)E%?UQ&j0kM&%gclhc3JPiq$vX{QKYk=~ut_H4{=RS1dj0#N*C< z@o7gNeMDQED{ApgOBDjTK@PqoE`O-g)bpLak<zIr9emqO*S-C`k6eD~pWpw1kN@yz zKOUNx*uHbq`ufuB=^e9Xx$_q-opV+qVMHQaC#{*Khy1H=yp;zbjZLjgh|$*#4)pLa z;OJux2RH}k1fG9@CNW9tflA8RB(LS%kXW$HH!lEagk$b4G{l&Q$+M?X9<_u!d%sdX zDx`{p;F??_g*VGF8l6{gjU>5PJ(C^0gJ>l`>X&2`in59uXv#D>*_2dQjdpcyE>(@} zzSoK<TX7jEc1&yMLDSGcpVPHLJ=la6QVR=&he*`&vlLCQ9P*U2smd7#f#lCM$z)am zoSs#d7i%G^JVT=h6m)_tl=M=2P?m5Pk0b?#c(4{YxMTp;$`*>`%!;!oN<?l&oC|vs zG9?%5u&|8~l9NOTt*!YPPLDMxi*k_!9AyKzW6*+vS8oNANTdqlp#zg3(EyeMhv7J6 zridYi0dUM96$uD}P|XBE7isqXWgbC6l7bhPz*DjeFq=V@beQj<NmauO-*;j9xm2}c z_uT@#pdo;wT4W(@SuPv_m!R#mrATtoXo$ceT8ct$+#UoFr;wz4Rx_Ixsbf64FJ2~P z9L*nUtMcSg36m=mox%bu(jko&cA+HLdZAww7$L*#qQcwTQNl4OukG&Hk*&0Blulvv zZi##LFGR=$h*VNR$e5(#&W9S*%!+M>GY(uMm7tX`?)*(CbdphYgh4|&1<#`hKs+pB zqTwRfkV*$)QKl8VATLB1r-D%qC@;VG&uipNk}d-(XD}!yl+6$Y7{W;FA0A0<YBu-M z^uW<_fQt3a^cQkYg_Pj)<EB0D2;nq=<!yD-lu@H>YRR<}3sDPtDOJ!BJGcXbogCH3 zHGSJw+rH9rgH%Y%0s>&-1L(PQlLd$4RkJ$lS<k#}XP+Au@=6TDXBzw{RiLdB;;3YZ zPz<sVEc7lkvV;*|p$j-OgmJ|I1dK%8Qarsqos&9j8Ii}@o&Mgz^FR2pryp5!^fCKh za>+&0+9o@ig3SvqG#Ja4wl7<H{A<rTo`pgiH}yaC@S2-%z4Mk^@4o+`CpK-}FkY(f z=VKh~Y|z}`2N4)S`O#gLQZ}$s&bzKsEmcdi`$D*O<irKtizY8hCB#Rb@YpIIr!&7h z3f+O;9c?pPPCxay7<VzC(o(AW0#U;p6+2F`QmOQcmmPK3VSjt`xgWUxx?8^Vg)iK3 z$K4<O_($8Pwf8aS=W7Gr=vjm`0Um}hTj4Xo$)TzHCPcbkB&;p=*a+L<&z;dct*s6% znPJpHv}=@&H_sEydogZoZK?XF(+_&`(X&72@$WmfZ@c7=e|qk@9)^88w)g(!&#SNa z!?i8bT8}#Fh!?;3v{OzxX2}v}3aVm{AzIHUUrQRhF}XlJVYUhGY;Rh<vuh{wt{rXl z%Km>IplY-<5KtIVqCqn{a^kiZDi@0xlO^X+g~$1J`-FRXOIx>eJ^S3cr=NQI>1WnH z{S*Vm=bl@)Vg1$}Oy>wZPT@CEUSk72+jnfKtzJ0jLQq*3NBShZY=Rw%lb0nL4Wf|z zlNu;l+7ZkXn+{5kSq#TLyao$d-M&m-C!%{mlX%3#w}?kaS&Gu|%Cp|a-H)U}92o|) zG(NEL@rS8c;gc-k;EjWtiJHc5fAhQF{-6JKT@A-@-%DTp(r<p_D>w%>VzL8pUacV~ zHlom3f^}9|q)m$<6Iq~`Y4y#+w1k%$If-kgIbISF^hhD8NDX@WmpG|37sHX5X%*@b z6%!kypEDcaaFsB40%C642?-84L4cU3%zua?Qo-B1CCpZ25yo~N)O7n${+VK6U|!!a zf39C6m%KGRfH*0n9E}SfGQid8e_O=Pjt+nw1Q!HVk)IL}$cw>5jF8-&M}!j-?bJp_ z16bGLsk4j)GwIkKK`LlPdI}cOq-a68pvnbEt&cDU<M1l3Sw&K$Oori5?r>wUlx8kN zPa-L?Rv?8REn%>j%%4gzK|>&teYz3%)1ZZTVU2)?hPA0^!f4WhXe!HOpQsaq166N+ z%ZvK@wtx0NzVME>ec*#1{K!Q={K=zho@IAR_;CBfCY}uUCaRmBSo0tW_=dZ3@ZNcS z>q8Gd^M=>G*BZe#2X(cb&CQDzF6!Db*fwoiXp*`pl=cY)Nh%kgYI>yVh-&egEwrb| z1DPab&V)!UPFNN*@z2R^6oXXKu(KmXR@TGd6^uMZpdc8x%!11o6l}=1eg;@IF>}TY z>iyrYyqc|f8(Z46B^2>4M!NmorLn#jzvyJ3eKucJYH69c^pfwq?d_lV?Js|Q-e)fS z*gIeU<};6|9@tbnF$hT~#{<<8%E}e}9sTc6RsB%?tZ!ZXtu1~1Z+q{14n1h)R29`; zP1LHfu5|p-hpu__Pea4~)eX}i#N=glRb5kC`_R_fE3dx(u!G-N!4*OMD`!nb6W%jW z_1wn6oqa=NW8B#`hFN*~NApF?NLMvRec85o>x1{+*Ew^>k%u1=m9eU!wSHdfbj1i! zutR;_MC+{9xifdCx($!e;neemT;?C1UHcp?DQv|Cj^ZiG&I{F=GX;%!k)hE!1XNMB zvm0Nw+tPW9=l%K5fBnxd?ta2?#~pRl-lv?jH#f6u9@}*N^{cPD?)p`$Zu#zae|+J0 ze$qZ|`Z32H`I0kEKjxSt7cZIJ*uWjBD>YFQs<MExeXkx{PggZOL5KU(AAjZ51O3<h z^_st4_LtYZ@$Bw_+TqcvXEye4*giCe4_nUUg-N?n@S|l@JdO~PD;BMS{_2}<AFpk! zu5Y9jVX<gmUtd*2?V$%BAjCiP)iMcmEQBM4Bcc+Y+K7~y1w?|gQ4V_sObldSm_$mo zqwa}M;c3qz?Rlh<M4WN)D1wPWcL}Du<4x@71K<$&Rx=KYBr04aXBPBv-1wIlHZ>+J zKg+XvVvMCNTS|@9E0-^!#f6c16IJaUZ7h2kXU1)86vF~*??NvB!4)V4b105Sh!g1& zuN=Zg!_L{Dg2XMTy?N9QkTMVZCNx01*g8mnn#s{a$PQUdvif65zUIfRX7~({W?&#2 z7`Vh(Gg!+?XZ2DRHU%K17&n^9LE+$pqfD#X*$52LNt{$B>_DpZ8D0cv(8y93dP0ZA z9HbMp{T1JLKM6QUB8==Ycn({jlfa^o>7`(3ErW9O2n0ie=#L%Z1}J8LF+5~e>gnzV z+J~3E^rs+MYssPnHBSftPTa|xVA;ABEO}Gh(AU;JB;$KVxIul@iWSQk6wq*blf-5% zF}lPqs2?l$({m&S8Q8K1C`YvOX2q|pn5vNw7pNg3Qji(HP)ctQMN*6j{J1f%>cm<^ z5LDKz@FrJE2puU<kPfyaPxBHrff7mtcraG=QK0O!pd}-u-;ArO85kPt?PoQJi>cx7 z8LLHM%7IW&k}$uFBo89W?;)iE!mTkn`MTj4G!Z|MAX0ITGKRG=!&;-D3=xBldQb-^ zmv};Ds9=Z$K^uUAZvj}&H{Gx|XkqX$7by;b!;gZcryO^f&wm-e!t(`z3Pc9}F-{pM zazhK>4URG^XHBxIq`ZLFWWo#BWWk4dfs%wO0~U<|l}C1oAF5+i*$a@g^gsd1$zd-` zlqz6r1s!iyM0Ru*q(HFN1}8vqvT8mTSHl;Tw{{Kn^Bl)V)@UkiD`YsGK9G_`VMS>` zLz2=W5V^r&GGs0>P)v(-MI)xzk*G*yQ19w%YybTdpS=Ih+YUZtpWpxfXH#bf6gIGf zU1(8+yo3=vvrpmtc};U??|<Ae2b5~g;S0N0Uj68|F1+aOyYAx?X(QczT|HZ^+qh0` zJzs`vY;0<1YGsK*O&zP!m<eHW1Z9}m!>b|YxL!H=vn=pJg~zb`BQSmT$Ux6Xf7fZJ z9lB&8gSN_{tRWyLju5>lu}buL`ji&TYq|1@i!S)$#h<_6Yu8_S`IApP{@MTh{K~y| z>+c)#7R9z8ik?~;Ll_7J3ohtxZHSTydvFKrl=&!Xw6xSu>*P&L3n^EGp;3V-1zR2e zcsM#fF*3$0Q8lAO18prWAN%lY|MPS2zT>WEFZ=UfueoaV0}njHZOuUc@YPpeclDK5 z@zu9O4%+XGGf(4X)Md-3@oaCDmttvZ?I!s&jN@0EI&O?c>al&?{`k^j<<K<R(`yQ! zW-^jV_5k!cl!pQX8x10*Vo!+{%$)QMm$q!{dT#xOr=EW1(I=jG?C~cae{${G=hpXZ z<vR$x+!$*T*jCQsZYi;$!kk$PX3id3zxCNQkDh+&$>+TF^@kj^&(JW`AP(24<w_Hd zO(K0%*b9-kDqHl;7?ZFr5NUC)goFbXKto{&h}c=DvZSIB2Ms!^RI^djP(Mw0Rb5Nl z^r~uh+>C1HfPsOE-Ug7e*<qTBUXE*Mq$#wqv4Otr*Ia%5j_qC3rcYy{C&a8s1Xd)d zk>(CH()N0cqK4K4LoUuCc9BJ@s!AeCL01X*AWDW;&BY%X5tV457njHZuWZ~RGr5!L zUx+5J0#O=48pVAu#f24e(F1`etIA1GW$>(t!t6je=+^~3q7bWw2Kw0pZ~6?aRA{Aj z<U<tMQ8Dz8KFF%h#YfbomX6k%`dXS1py+$T%t)KM1rHGnm{dM8Xkp2RYkqghxm>k^ zr&ydMRUj#bM}<s8iG@gIAo2LCfFl3Y{6No438_cw7XoK7g$XlP2&pAh5K?BDnHJfG zlSm<hmxPH>q(;3==E@&Kib)wIOub-8P^1+Ti}<w4s16H1-~XPoxr_bWr!V->zn(wA z`}Pep8fqGIE(|^D*-}4-uh`FLCPW(8GOfjC0^8U4DLZCG`JB_=?|y_;W6hLxQIfXY zDY9a!SezAHiL{C-3R0+GfP=iq^3H)MkpevO62f%)2_um$R%j%Tf-P}k2_li;WQmZN zf1n5)w<yZP3bMh$_LjDe&UV&GTz|vOrH0nVhUOp`d`3t6dUurSs!urXNWgJ1u(9Su zUFnBExnTM7WncWSul>h2e)#m0Yd-MiSIum0Ee&<oPVkNxEeT@LvCu`(q_|PuXjQ{_ z%dDUMan%(!-@V5^dwuHPKbV5XSq1p390X50^~4|k@YjR={cR1?A;-)!D-zj;psTLs zuYbGt6CZtJ*dh=E4V0*MZWF`Uc>UJl^;>&~M(Wt3omB($8uoEa6eJJakN&u}=HW*k z8QQt?_|uP>K7-p3?Jh{Ult@8gJc0BW7~>D)%n{9)-U;lp>z+luASj5I&q&z2XtKiG zhP@NVK?p$2VxqH~HKXyJ?>g@@|M8js{OlLLP+zy_?kf&Hc<+;rJMOT<4|&s@&N}DZ zv-n8g?YBSir^_z?+f`Tp`SQR0`O-hKNO2)=LLPeXVTT;N*FJkLUb2|I@%U;FOBlHU zKnk`_w0Eqo;`^1%S08!g5lj$VdF7R7{ma>m;8~u;?efs*=-PEVdUw{XSlrQA&mc@+ z;qVjzHHhQcwcTt$P}el4zMhXhvV$XAv+rECWWmzqbA;6$3IxF`u@?p^P(ip{3<Zwh zVLvnJR5_R?8RUivgVRN$4@)Ov>WR=Uo-&oaA{0lN!Qj9EcHyaw!jWh}h6E{hS*r3C z;*lF110x(b6q6(k0DH|0^^Ny-&6zcG)=c`-Kt-f+W@MV$TbjDMhgg<V)!Lq09oiIx zj23(fhcj?f#R>$XwkrSVn6!o-Q&=bI0A5(2pl5P;TgqPMR<V@m(hJ|iq_D)-S*78a z-MP_t5<#sY!+N1SBu60pqA*Ix`8;{ky&cCoh~;M3LwO4Bk}ML6aub7cNR$K)j-)0; zmQS=(ir_yQ;A%Q}bhuIJqDhTOgQ5>czk)>w5tvCo1hV*LT`<F9wqr7LjM~%P0~C3* zR*@Foq8c7nR}h1KjuPQSn%N}cq2&7o6K$xpY(X&C-#TOZ>^ZafiZ^v1tf-yd`G~~7 zXc-I+oREZdJ<QxlRSr=pLae|FcylKaLk=MnF?=n;Nr4ifCIxU>16<_ul+q}+Y%+<f zM$QBNbbr`_M2DKDYc85FM~E6u=_8}IduLxPDX@D8A}L8YrMk$Wa83n@asXKZp2|Fx zizO&X(bQ1iK)1_+)+n@u@yri$ViZUzi1bN{%4mu_0E;684He5mn2)i_*~K-aOpGE} zKqzC-FH<zZH^+kx7^G9~QD7Chk|^g2kxI(*0;$gP5~oHLHYDb=nt9_Bxf;4m{`pK& z(&wi>Kb}M@5{5>Sj@oRQ1^J{!C8OBORW!{J=L8Zh5E7ag=72zmh!f>RK%@%l<N@`8 zMvzWjW0tDvhZfFi=;^KN>g^l!=88cBkJiy#lJo#v6#}ibG!17utHlkcfRd^nlQ&x? zM|u>#!-crHf@jdP*o3h8m}qOR{q{G1u==Vimn@m{n_vE5W=B5%Ba6&9#|iK_ERQIY zsCJaSZ70VBs}%M9>WLe!fAqJPTyfn^w>|Upb9{~%xf<Hq7A;<|_dfd!4~{(c<m2nt ztsC62b#N;qj=HM)CO&%Hz<o6P7qHV$Z5<nAA*3IBaDk$aHDEyB!$YjmnAFA9dBic; zv$blt@0>TiR&Wml1P}>4$A6}07H3V!e`aSHg~)1#i9Y%9Hy?N0;cq$TJ<mMx==<OM zzW==7zYab0puWK&mKxGg0Hn2&21KHc#lR>wd4ev5ig|flSvB6?Sl!vt+R_*`kr|CB zHn6c9;w5T+AYt4_kwGJCA4|(u?$**V<AN`KbNlwbm%j9jBM)D6)ZuTh{_NWyTeJO= zOa5@_<$t^X{>Mf}ST`}UYW02BU3Ygw<JS*7c;8b_IqtMmkK1qG1uac1MyO?xKQDY^ zA_}~=q14>eIyy2wz=X||Lxsz~BA7-g!=NqWPIo>HwR?Lewr<`2?ArBDuYLBZr=EW7 zNp_)nZteQ@8@FyN4Gd}&_^}Bb_YX}?rG@i&YrJ{-w2s*`T4&5`#Srb&YS^B!zIJA9 z-7OdYW}<KVYhU-WQ%~NvyN?zRmU@li7|iBXyG8S=oQP&+A=5kdob&{tz$oLDDHx}z zpxI`$$Fml~?%M8)e@UMbk{yH~S2Zv+G|2F{s$s^Q<$S@A>Cb4h%U&XLetENHxj7t* zX??(W>OQd6ZK;NbH8^95Sm?>F;u3+i#GLw<HNh}?ND=On3LuM0D|Q@)lur_{3nc3{ zKvEz*f7sC*8~^|y07*naR0fDg<%o>HHk5QT8bqRfDB_u^H^(8xJgm~lnVw!wmb!z5 z5gH{u${hh@P{B{m5w&?%6EwF+04%BK-pr*84bELUyREghSf=49bBbJ1F%*^-tSI<U zj}z-_s7VbC1HAWRJ&I9;<jEtdgn1D`OM8&7AjWJ*@rYU<l#vkgN+FpVL*23{qXktd zPaZ}Byg0*e61tohVt`x}vhcw*afFX@;%ZQNJV)yg`ic;^Njv!^Fgb+)i5HNP^Uvo1 zY9BCcfW=4)g^U$^BF9*fXy;=ggBP<T)+~z4@tet|{^6?koOgCxNBd_!{gu9<y4t4p zw&`=?J2ku_7K;s{bhsTUm|EU$q7x!xN0v;D?AY?$&;YBKT@?q>m=YqSnZ2Y@=r*)k zIC#<usg+wO@1m2a37{BHHNu>sVMV(L01>r54XL$)6UmcD*vn|9M%fEx^(vdvl5tq; zwwgoJd05j{^~l3p);#ufefyFsKIP&xHh03jF~A!JUAynTZ1<H5lCA@2-5r}$f9g~3 z*l)kR&U@#3zkB)W8}EPS!*4n3)Fbw48QU>2+)ZobZd)oO=*UFvSj+4`+;GnqzISnb z=gjY4^o{8qlM<IjotjcQ`ly3iI~oVNcXV{l$Ewm9=OcfO^(`HD-}CS@&vY+a(*8n3 zc=6EtxlJP*w)KrOje!i_nX~qbnw|EtGKF9!J@Vkg6vXi-91ne7a`&T0`83_KutmmV z76ykCsXol48RXMtJa62(c^jo~BOI%$oKCX%Eypkq1ssfIrVGI$3`dM0GZ&-Vx&~hM zs#h#py6jJXyzH*K?tbv`XC8cb&Ch;zX>(Ka%H3BUamb;^9(&B8haYso1t0kQ=imRt z;~THK`l@TLz2@F~?!V;syqfn%ouRIwrLC=V+O*EjX)R4nY<WmakF4FjeFFo7+c$6P z+On<0M<v&<>*?vKZD@{`0zLS!LF>-mp+}$U-fLM$Bkc`3qHMGrh2w<Mci;2SVDC`- zqRt8C!Fet^JTyMkd+>pWHWdS?G);h_D={^m5{OuFN`MMR5%3~jL@^jpZuG&84T%~m zNb;<5#9c)bIA9B^Q!dG1G68gEVX%_l>nW-lFa;QwaxhRRBe+EssaU{%5DAJ>l|Q}i zP+t$z$t#vEYiUt9O$Uz>Ya~l;?af`=hek$+8Z7&~VF{T9swl(lcTCOO(I~|~KE%t0 zM3+)9;(+JF-=HcYNkPN4JId-kvzZ*_#s!!d8hgtJFcn|>ViFMxc!Q~lyoe-O3k11? zSivaJ<Ww9H0)~Z6tb1kYIlitTBO53Jw%Czk-GCr6faMHg7zM(~K@>rxU{Kw>k*3Wd z!JZ&eIiY8ijF2`)n9^bjsR1>Ra*2^dNpih_G~}xgW&ntUT|0J)?+&$=3P9v@Mr^B0 za+ZbZV8qG;(z)6LMB~EMr=Qk!7z_=}TQR@AvoWSxu(kaOO-E1*%0xmRX)A*2VU}73 znQ^~CHmRJ7%_NXErBXOE3ZVoGHAqGSbCpEbotThX@QLKqHC-uf9+cABph!}+of1G4 z=@4gjgEA%AXr!2d-*84`zW&6fX4QNg&ejq0Mdv251P_!z&4hwVIkN&40iJO1{BN|q zrQP+O{uk3Ilp9{;5i({7w@{QaMFb8aat2m|krj6I8g>c_VWA)~nJqBvB#_P<s0EOj z1sj2|jV-^aF{B8zz?_7yger6@fl5{c#QR6b3&GvLTz#WJMftx_qi8DmFC;XD-4qgq zhPpT$$naO##1s-BRk5}Sk~Xafks=a=yq6(Bp=Gu?MgyB})Z3gWyMT|98AH8l7GX8F zv~t6>qnpKFgHd5AN6eib$><!3?1__Q@>2{MKqtL42%1Q82$b1Ih>Dv5`^xI7rn-ik zZo2Kq7hTj?U-zRQeQW8WsZZmjyX%2^)_I$gV5h5lqvfOpgN)1mwCaK{f8*{u@8xq) zrPj{<4?OhfqmDl4kV6(MnBUySS2=u$$5&o@cJ6rgnP=~R;QssXd+@Qx)@<3hxqtfz zFFNq3xxTrzv8ko5o>~89w$GveVzD^%A<x4p%~8b;Sf#F=+j_QbIOf=+UitFl3wKx0 zP&Lk$9Y~Y5N<FleCWu&^6D4y?#~-uTtv6lyinGqS{r3C*?V}(0-*0_qw>@`f&IbNy z>a1Z<je^&Tj>|yhrd*<9JPm4VW=vhzT%R{UmX|k<WT!I}<xX6_SyWJ94ua_N6)Wl+ z8#ip+@R`qi_P@UH*}eDO?Vrv#^~GnNe&`{4e*9zSeDq`IJhgWC(o6q*$?q<E;Gsv@ zxPsfRJMaAa?YG?ir7wML_dS*!f5MSxoPN^52OltdhIaPOeWcXU-cHNTvi?HD|LYQF z;C8*cXLR$n9lR9q<kL?-y5^}To_y}{r=EIl!-k#PwwDIj`~U+WEOWVyeDR_*Z+?A8 zNBhia?XzaJPw#AKZ)<MvtZu2VYN#8nu3^KLVK!7@?`unLe6*UI%!yJHFFTB{d1B4b z$PuoK#GA3jE(Jv_3P}TniNc7&>AInSM$Zs|N$|+?<iM1l6S{nalN|&2%pU%pWe{yU z!&Y<|XYs`tTWzsHCvm<)!@CE#vvZLyIfha;!7!#<QvfFyEcZBo!A1F47QSEOWQScW zZWsHGD!Q<`4jB@&WtIqkA$^7mr346|&^a0m5(3VgA`lRPQEpMv5}94ll~pjRU?)(d zmrvw{*_BDE5fAwtBbZR6qU{hLgjZ_xiTU6V$LJJdqy<8h6O`$VBhHBhH4`I)3+K;e zQ%pC8FYw9)f{Kwq4GV@MYG~c(<Df0A&AmIg({#2_09h3^svrlfwk`ycWFY`)zIhX) zK;?Fn0Iceyxq>Z8Wn8l>2ZaYW3$d(hpqKNN8q7+j=>;9dEQh@oc&S-|V4A9wAt%9- zK>`P6fT(y#B%44i2qmKSD-P1b8UhuE$VTxV+|eN<F&eM{jM5F8Q7PZ?wijP>)lGl7 ze0BZIMi$q^Egtu5MO{D{+Ck2|cfg>RDH}%LmP>N?))!#LFvFy{BrJ#CaM04$2K0ru z2J+8iQgB<!s4R+K&{WBU5ZB*SEaDu26j~Tpvw-o$FJXj=VW`b`91@bAE7B7x5fN{M z_X|qnv*yfTuj{L>zP>a((cId>P>->`6M*CKChcI~$tS&%#ptOU#FQ==BJ;~$aomB2 z-u#|-ozJ?j^FDjQ8AlxW=2x9|=svqOGu7gvi*cS|Rn<0b?iu;cg}?aeAFisMHs>e* z@5hH6xLeAWl9j_rwusG}U3bXA`(3yCvC-jvUhyalRaM>8GHvIM^{Z~YZRwKJM9?wS zG;NNM(Y*JMO*HU?A|1&d+|DP=9iZ9+(20pPkF6<HH9YzBI%a!nc|Zdx=8WT31SHTk zrgP$ynJwQ0`xj8rs@VCqrl+?*dhIZV5Gf58TZUi}WdKbrrmhMbS1wTGsW{(}*?0f_ z_dD<azN+xd(@)=X*Ijqsb=L#;KKS>0AL82z7k>W-?bBKgJYfH0jynAGQ%*hi+}EG? zo`31>E3H|x@xHt7x$l7oAAj<xb?Y~7-@g6HC!ZS`9%S^S2K9};1=HEN*FO92wsiSz zx81RJ!#Y0m-p;N`bO<pjvc0aZ?(H9VX8q2UOF9%Ud|xdJaSh(Y1_ad&jm<6A1YV06 z>?;iq9Cyr-LdB748Vt<hT#1rhfk=SBDo&NGz{Wg@M;+ph3(v&%3>!_at{&yNL7+v= zNlcWTO4RTal7<I{_y!W>e04|-JtvC1%9;Xc@##w@CqQOv6u8)q0PQ$+yq7gK<AZzd zxzdqB0Fz0J(AZR(IlbfACpNeV1XPqQMzT`MXfn-k<WJ!xP~_`o!7U_FE(OYlO;-w0 z%mb(pm5T*Gc|=xHvqvr{Gsw=5xVk4pSS0xbM9>WydZ{=3E|&|V73h+QtTI8xj9VqI zBO`QPp>J7|;E#w}k8sown`i#Q(2iiNL6KBZD{iktG4K)@{17ZYJR^0<DU``hN<{H! z7t15A<vJ%^VW!EX5HLzx6jn*HeQ6JK#CRQ3i5x+mGbs9)(<(;Pfh2Bl;zr*df<x|! z0Bc><^#i<Pu={Sy8yib~{pycY(TJ!|A!Ra(3M)+%!Hd`j*Uyd6^p4t_%Q*O|lst4t z`yt6hmgx#+)HGWF5)g~h;4_Eye&&!CjrGW82dv<M24X=Uf+{1e(8UT!ESxF`gF%)| zgyUqd=L5~!ojrZ=p&1I(bVcJ5!X&(eOeRr&Wif(O2$1QVZELG18f&WCTI$Egh8^7? zpN%koff)(OK&(6}!mF0>s1Y&{0k2>rY{(GO8RJkiWmEEk7jYwTPM|60RD*G|hnQL= zaD&nm$RI95&E|D7P=P8k<eUJNoB*F1QzDl+3P*^;&@M-rnu$|0r-pYycwR)Kg}JbM zu55~G6;Qj<AQm!Efx{QdoVn&KPSLj53x;uhJYx^6wK#`g#RQ-5^h41Oki{zValc^G zTxx4->>Ft4?i=hM<o*Q@cH3~81{ZN!A*n2qOSwFUTjc~G*+iYCQ=_znl{CVkWu#eh zEUK%n8t5DR`j@{lG1Bv~kALKZqxTGj3k?M<C`7Vs`Pa{ExfH@!w0si}Ke+Bg=l|RF z*Q{oAID6T$e}2_#PW`7B&z>_MA(-9fR(5z~Y{;)CJ5q0Io4(fp)Au>}z<;T#>g(^{ zux`V{4?S}4z4tu&;KRJW-rdbExHZ*{O^pqHMv>1V)YLWcWdv??)oOff=hltgTc2ae z0#9<j`i<WmcIZB=C!E!h_6VueE~GCD9C?;P9z;`o6jY^hI@j4VYyWn|PhbA>H?O+s z?$3StQ{TMsyL`%Ngr?CtPvexXul;OWd=59t4Pt$LH8UISE%hv@r_M86vT2qF6RMnr zCT4ZXg8<GzF~4ZeCPNt;Lb_Dy?dj?3={oGN{Z2pa<iGso&ksKM;63*}^rf$UYxmvv zI`btjdg+<}#3v^|@_~Qmf9<-#-~IM?m;L#gd+vLLf!M@E{iAEvKlISAzxSPA&6zj* zu)_{IjjtaZeaP}<or@PQXB;uW`vAKh>|d~DYafdM)~<ba?b>xuJ-wDi0Z%hAuzBl_ z?j5``?n*o6M{DaQ8X6{AT1(6K;2Yd6)0hsJ(K4;QwWG7CwS}!EcteCm5cmUSL9^J0 zce;oIk=RmBeF>EtbKe7Zx3kj3=FMBe@N{4lR61wKr}vW2C8~Q-NIDyI@O~Ikuvil> zvgOd8^2pFs6`66vra5qhg_9&amO@f`8g6LBr^$7*VsBu4(8crzG^=_3?@TRpZG$y# zJa(o?@ji;%8p|K=#4ruRyY2c9nZBr+-M5*_#SuQDD?&v%P2mE55vRHe8lFPPx)nzm zKOzAi?o;Ge90{-jql}mkG9m=CaJz^ksmPEZh(HOLL=vSS=p}9;X?B3E@`G3|;*lsv zUOY#0W9x)M3NKm95QXx!$tcFLv5~5=5k9DiPvyKzkl|GD2P3SL(wZ53eP^3-PeTI_ zpqe*t>xtqAhd-Fx9&xCPN5nE1v9xfAMVYajCRUQLkDC2#*d-Jw5Q78>Ni$-ZRM;xS zgRR$OLMYrW_$0z4a!43BWncwW@VI8;B$pSY7nDM`GO#rzxl1Wi%jC%Mz0DM@K=7$9 zN$Fd`tDs8J3hFcv!utf-u-<Mb!|-c_wF9_1Q(nX=8Y+sDvw;?0l1U1F%2vk)-wQv& zH7pky_lp$}3UZQg>I_1_glxgsF<DBLC1{LaUcz%TuKyVY6%q+lm@)N{IeBJz1PycI zCrYB35)wd=tN<4&y9zy-)Z~J{)Rcx<!#OcDbLI@BzUrDAO6<1V)GD-4wrRaRUGza` zoN=1cA*20tQS<4lF+K}emo99*{IUx#zWCBF{nwZNc-y^K+;-pYi<cg_-`>lYF79Y; z>K+(;<ngsP-gVE`ZQYBP@BXXbUA+H(i_{?w#139jH&UUp$;f9Xn(MB)Z)k9!rJ;qD zx|9uVTysm?&WYM9uUhq{e>qJB{S^nAQJcDV4zVEzr9}B4vSthauyh1=NMdr#oNnK- zqg31U;~)Iu{`((!$9Zo)>s2S!gBr6ze2@{_`54XyjL+*>J{vX<Jo@O`@BQGXY^O9d zWc!av?fzoPqon`~T@Mzd8VH*kR=+p{62o_-u)!JPtpFO=8s1o5vHKpozxM32`}zi+ zefGKg?)m$zx88E^efO?fb^EGoZ@J)$-`<U71&1GY+_6U=df36QKKqO}HJ*`^y1Z!L z+sk$mBSWJjG}nBZhIbCwr+_<HmQKI)rDxaGvkw&AwqESW-{Q4pubQacNePXx=W?Y% zN5;aY3<++$`3~&Uz_LfIFg`xex0B^fhaY-SsN$&rt;8z<n2`6v>`YIvU2?-b7@E$D zwhTW@gCQnVXrI{}-$G52m3k)7R5DY;Xxq<Tag+pQsp@hCpnN5g)zt*)`13#NlYqF1 z{L2U3C9ie&yC2)g-h1sP<tT8GftujmllIcY+L4h#iWTp{(uLE>2+C9<X{Ap@h}0=Z zS-40-3Z;&FLgkuz<c+M3r!S+K#aUoQ;Yvw&<e(J_x{Bn0t&Z=nn5$?ZRAC0~BTA&} zCtwAD89^y%B}zDusYJ<jU)N-WAR?Jn;5dR52yG}z94Q3_OrdQ#;TReSMza$o6>8Bz zTLyuRJcMk;?G*`X#SkX=0TX3W<mIIdRuLt71$2i@ti6|lpYYq+*GG@;e=?htzbp*Q zZRSH#s04o`ib<4+ly$%<T$wd7y2l<X!|?DxL2Yi+kV5J?VEJ#;3a<LP3qpN8OLbEE zGTFFt@-VE4)jUE)qB$l>FsuR%;9OLQed(qOe9e|YO)j`#;5f`FGq$LVgct=pNLb7s zQalnFYqIWgbb`i;HpkJXeinCv<XeAJ60UFn0R?3jM@Wax4sjJNf`sXW$J*NK{qz=l zn+qQ@8j@>Zmrs!>wGank0znpbrD-Jz7c7O#L--UYQ;bEL*#&q7slX{N1qoOKpjNtq zg_pt<*+Jj@3>37|kW&d)!j-_T+%l$kP(qQ|ZER8xv&BrVlX@mvaZc=AlKzi~q=E=2 zbncS1)RI7%j90Z+qQc%ujtmZm38ANU0nRo=GQ{-32pF+tEZZD7S`X_3@UGzH4unum zOLJ9AQ!{%X_YaKk>=_&y;RzmI=0bZ&;D+8SDNpc_DBOq_Nml2un*2hy$RXxo!o(O~ zLSg0ZPk;IQC)TVv=%9T+@}YAg)04F#s7Iun9G;AEQWx6;S~n_nRq0D#{{DY{;cFxP z;~jICz4h(yc=1bL*4WxSI6PtxM80<g+^ew>iQ<9JN<Us#1>K5MUA=VK(v`cfc*Uz; zGCDA_Y14*BAAXdNB0T)?W6wOhe&^O5ECnjnH`O$>v9f?gLH)fuM|rtmVz7C7^KBeA zt)gyDpV7|!@SDzl-I-?|*T5ZUsHl8#V2UiYa)Q^wa8r}Y;kM?|A1=N4<WtYO=bnfD z_iJDKkI((**eLrPYw)=7=fdqU<1u!ys%>g%Y-_4-WPlO3oK{^7NP}lXCFdw7&Cf52 z0@H@=%*Up-jT)qCqPx3?@5vo{=pmo{<T)Su@VV=r>$?8BRaako-3_Z&ef7V;^wlqY zam9+IXPkc8X{Vih%(2IO=wILP!GC?j+6@zzUG}%jFZ<hVx8L2%LWi2#t{nq^{p*dF z|LHpR6kD=*No_Two5o-N{x3u0rRSb|_UUJz;cEiy8t~L}>vnA0J~1>Bm0t&BzO%%4 zw_Dq)SM1R`qqB3?+_st1TBl8GWY6lxW>n>~)T|3(Q2;L*v#;L(Uzo%Jm`k^5$0NhV zLvgL0(<4|SI&lC2;j@&y%}cTKH7&H}Rt+3%g14qkblM;jw$X-KN;@JReS{WtDS)O- zYo=MBUzh>O4r(Ly)iv#n%qca*l)v2zRH#JJ0lMm|k;M?QA7*}>2i-L>5eZY=6w;Py z)CQ$hRF@q%8RF>GSp~j0i9868mvc}F#Zzozgsg|5fVEJHO6^}(R}$jTPx2Q`k|$>| z@(^7bNrg*6&ub<|ponE=m{J<rDomN@f>0nPJ>Wy;l#er5l2RHAh!-)G9-%XCTIB## z9^@&mW(anM{Uge27_7iux@@rpC>?JXgFz4xZOQ>thigL8IM7ZoLD1gWI`I^XmRXxk zzmwb%g%D6kBcHG@bP94Nk_snzQE<%eIU4h!TcS<jnMf72#0WBzfKgzRtzyMeyQm@0 zFkK}O%tI!mk?d5agpG&$WM*cg`18PwhTMY1&lIKer!|dg0^?pRg+i19K7j;OPpRb< zL|Q4UuTtZ(HB{+nq?za&uB~Q=6K20)LcT?V*)_%#L6iUz6b!kxfK+nsBgdK1quSGB zIi`{)=+vJ=kdQz@6}|X{aHJSdcT+3dQxgN!oFJB1WESbsEJSXhaKdGZIxD_Hl+jHH zQ$xVfcFN_MDBn2bTU-+h7cS`Q8^8UIdukdxYa7_3L>eyc8yy<z+TK2A`k@E!=aeCY zooFdYn_$m~NugBrrZ>In6|a2N?|*;Um%j4N`<_|<(8j-4P27paXijRH+8df@4%STU zeb6COX9o(Yp{FA%yMI%T(@#DA-#`7W{_Y(uozuPBifU0)-!#$Gdee=!_w<z7+f*bm z!iG{H5PU5$3eh9AF5s+C1T9G3&*C9lL&Kp*9eT^^tM9$<uCIP+>4_&CbHa(oE?zj7 z&m2-bm}tYs&Cfjj>^=A0f6u-5KlI?ETQ={gscq-oHfCp|%wrY-JBH;`o(N}A6!Iy8 zE~^k~8#)U{E8sA}dOpTlv=P4a>k9D2%a*U$edR09dNtpgdGd)TZ@=~STW(qX@PiLL z{_w*;zxd+DmWHKE7w@*hulX)oFmKw7nQiUujSWo@<}HAoy?xua?%23#)0!uqxbv>N zH?Q0DhPS_y<!|hwN;zUii^cZGQJJf%Ll`BCBMQUNbL+Zz<)N-&CND)Q^!Ug?@AgHD zX0BYhI3Xv`6`Txk=BR`#r9goH3UGmMJTUZ6e)KWi*uancL=C-$$tA9HicmO98K9t* zmjncAh|kf3<B+n#rGN}aF)X3vk56M9lCX<`v{XdEmjK+xdzc`onb>pB<;0@9$hxZ_ zb7#)5METyWYo(#ffl8k8PxS~!GX5DMV{sU>rk7LWN->$he^84vq409C3>R4u%dr?q zSStP`YEC*RTMrc9mJblJq#g#)e}NU)``ExTB@R-Bqt(P5l{BQK;pC|aYhfI)hk-1i zFkb<dB!i$Vl8sy?CN~dI3P}p|WS^`s3Dv|F)}cw{=(L2CDM<t*v@t3{$=TXx1uYC6 zCP_WSOev|w!{a6Ha%0~w#_y6%=3#iif@j!8^2FU|J*_|_BnYfjn%kWb_6{kH@4m-w zP7>Kl0v(wU=G6!$N_1_#SSNG{U_(U#;q|<IuVGl$AFFnw6oFzyC}b$B)hoUuK+&WL zQT~w+Z+a&!95qHQQbNyy#*v0ZM^fU4qJdK8Mxn!2BWtn%vdw2~$TVIz4|rLa>WUQL zLyoAK>L(eJwOGL|E~KJ)=%AX0W8{l+H1RY??X68b=SsmXCa^-Ff{aw-h(tNW&*2nD zQFH-d7Ks%E0aG3Ukt^hhaFQ^yz${DzgsKFgGPDqp5UQbF{G-R@Q2`}0fXxaV>6c9& zL6a-sg1z9V<g)%e4he-}iku37xn+Lk>n@pzA3y~EL6+iqU~8=7e<61P8)d0d1QH)X z3R{6@Y93+Rh{Z{1@FK&ELMZ3ViZf|G`3X~5uSkr+F?F75(NM#_!PV_8%_F1D{r!Xe zL!-mo(cvik#UvHB00{;-6R3uRM7d!oR4TJ7S{XoSwrZ<udUp=|{x_Gv@gpC67q_@^ zgtTfS-9l997eab>hO}fc<I3wvUBhoX_dS34^HrsqrZdiZ?YrOmfzDYo`UggO`dpR| zWhFot$Cr4zhDe#IIMyS{PVfr%DC@JSsWlUG7A#n}c+u%+o;ETvvT@VahaP_T_S;!i z_`uW8JlEH2tuBoWw$5n(*!dqj^ss{-ee973?z@+Dhb%p~{7={a`Le55?y=i@-+k^| z-}K6|I;pxw`A3J+6&`6&)$(X><)hX=Jobb$ufF2)<BvQ3xRXy99At$&MjvP2W}Y}S zHPtmY`6--e_-VefI!EnJbLBlTUKE{!>PN|PTdW~4t@p@PV==U&O{}S#=;Fg-rMf$A z|NHH?tv~4CdAlv|*lpQM-|@DWb?qFv>86|he8p9Nx$?^IeD8<fx$uY6XU{wC*yCPu z=4m{?diOid;D76u(j}K%a_Qw)F;g(q&*!u|nwzJyLUO#Xmz5$v{?V^~eDVKtD1d_O zZozZ!hT4f)b4t@Y8fMJwoIA5~#*DTZoeixm^)0Qn?0~`tHLB^vZI^lXgV!1G+%Xmf zI5k2kQidwzIs6a06g9=8>hUFWb&R_X61Yi-h7em==%^k$Cu4c7PXcZLJ{cxBq7DXT zYF=)@gBT63KIJJ2t6Ww=rBZUl;(%>qbHk5+_@h7k;S%6$_{tqCQ1CG}W#XHg!K<#W zrjbv|jt|B2(P6U3s>W(cyf7A?uSn5g2SXNoh)x}L>Bl(R<**EycXJs8U=<*lZooEr zx_v<?CZUifG$K_oqfTUUnR+NLFg&v7Re6B}E@+u6txPl+Tp~&GiY!+XI7QI<%Rj$J zF3y%)sAiU?4|p&f;sms%8FESpzQb;e5=}zp160t$kN~8mqzUODSP9d*O^mSpU8z{l z6gvO_AOJ~3K~%J4$x?h@ktC&^Dng}v=7hYNqb@?Yyt%!deXUrDr1vEWW!C~JePCvS z=^T=@G@O}oc*6ldrxy}Gp~xeuOQ$S_07Yg}Rh0~dYNBMj7P2O&*a;T42x6gBAQyN- z@UI0p3Wg$@Fv-Qt=N)1NYNSUjAwv2ZHa50`28;!V;zk&UQ<)0UxFjBDLH*f+rxWp| zG}Z&~pw=>RILqA?1Cf!T-j=bUI^N2*xrZ(lkqI&T8o($D;Nbu%W?wKOwUy@^eD1C4 z|HIl}!0UFDcl-FW-R-!=bD~HfA?_YRumTmJSZS$1DQ+RSl;RX9r9jaZC>kV2LIeqx z;32N(<oG_@{dZm8S<kcgIY8g{{eS+mpS{+|?Q_qpS+i!%nrG$_Ko}?q0e&86%dSlT zCmm-9S)f#v|5{p7PAc-JH_{EzeM+bv>Zqob+8`<jK&OFweTgS)1#<;~O$A*r#Pz?h z4P&sF?ckEMFnh?shg@^b&&PL;_ODyh+SJCHiqK$BjWISIJo)^S28P=7N$_|*R&h(4 zR^N&rJwt14Xt4I2zq)AG&e2!D>dngzKD4c)-+^%p3wPV*r^iNj>}YM{X0#F_hy@+l zFiSlypDG-A_<jc+u>SUYw=JLDr@6HgxloWdAUb;o@4NSwpZ)Zf(@s0I4jcVKoR{%8 z?c6!b1TS4Nrl~7$VPRj)WA!Yo-)H@AZoct7?|Ji$KRo~4?|%QSx88QkZ+`o4ANp9W zy``h0v#qOhZia8sjJca*ZML<&b^il5yyE4r=<Z(e4}brULqq*-%qC}S!yHjOPH~Er zwUYmfHPNUQ0J!KBK;0+RpSuFvFMh_(7VKj($rF6u^=NH9^oYYAdeo86e(p23Z`<<Q z-~Q(2pWXEHn|^-x-FN)<j_a5phJlo|HNRGFCGaK%W}>&PZSDHCfB*7lKKaQ{$>(Q) z)x`zQB^$V*!EWA)qJxk3Dy`HwE!1xQ`EMqM#|AbWz??FcpPQPPA0K(-BTi)GkWf@u zqG6)eY^hz!8}Sk;7<-qJu1Hy3y00HHC_*Hua5L=BqQfn5?K=Ok@zBT!2SAwu^LxnH z#pYr;KmHql1*<fhQV`VQ<U#S;p4-8YV6)5Vv60<;+xmb5_9Z9K3Ps?!deurgjhR{Y zn)NEIzd{wMbL6C9jXPinzfdm*i%<<O5-#NJ&Z`h=(vp&7hyz5GlH<seo=VSh*2g)0 zLCFVNH_O1homFNIyn`8G007ov@@!+0t{P+j!b3hq5n`1_(m)kA@5lxl0tTa)FWQEW zG-+=7WpLfe2v{YKB7r0$32QloA_gf$=Q(|8GJph5K7!dT)v+~0oLdk>At0D&%8-Z% z^vqhGO9X45iH-Rt0M8S}0#LESiHzV^6hPGqww?muVzU5XbRyjTv%-egVJ2%GZ3iB( zUv>2%9|CE6r7ocj2gZtCXbfR%yR5OdIi#F#5hmSNK#LNx4M$OwEmcwXLvVn#{^dnA zXAc4aD?H#8B)E})gG4H2EQvN4)&*1obHtZmrw2jDtCSHM6<3Pgd@6<=K)uj$ail`S zDT@uDnOfEXB?|G1aiGXC*lFQ^)LXt;!0rRQ9z~p&bi&PpU`57cB_p!skV49#6F`rZ z5^Am8LrZ0f3q)O@&51>-6Y_-y`E^OHR#GxTZxQvlDxfj-&!9_DgIO<GayCD#&5PxV zkqi7E!&)Rz#}$&%P8Et1)XVC*p6ejh`453C0xd<XTZKG*tayS{>b9t?3dO=i!-h+Y z=x~=LmNGv!(;-B1>{-MS0+>QOV1<}{CB*D77lkWA;Cy%<t+b`JsbipXu*t7VO-wCJ zOwCNNWS{FZZN-(>aPXSpLT4o??w}-;Q0Bp*TR<Wf;<4EK#vlJ|^8@!CwBNoLoOh<s zOM-euZY3oWH!ug<`i)P#Z@T%8r#=0-x8HJC|C;??`ifVdcJ{fvM8LF}?IS%xv?$-v z$!AjRmZcX(y(&deyhsJK49#Y4#*TyAuIAeMb<6kN=kyCMIFn7(@455d@BiTYH{Ja6 z{SMggFaG>bSFT<;Jv(#UiN~IN@`+5)Zr{A+`s;4^=B3~K`7eI*g6F^Lga7uiSH0|o zfBxjNmnif{qtWsYlpb{8z(2qF;%ENVi~i%^K6K_eC-*JyX>a#Nm~jv5?s=!42NH<P z^&?Z9ctAD9B0;sZ*VdOxvgobmC><+M1hQjSpm-L&uw(l!#x6JBc;l%jov`t+gU>nV z)C(Vd9-B4~4YXeP=+iE|@bszKH~;)+cd}{oH!r*58{fF}YhV5^)=D0C!lNF2;RTO> z^o7s+n<w(yva|M$Z(sW#AN%ahzqxz=jR*BCAG&Mv15@k@+|k_A*E_IcXmHhv?xDf1 zp}v;BuBNtjR+7+F%`l>8K`je2yxHYS=t~uLX^3xyb3$~b_X?`a)K@NwI=H$nahG!M zXNLljf=a?m4yd^-XfY{M=OV|a3Mh%vaAb;^ygHYOBp^Y?_c)Xg+7$z^mj;|GlT!EJ zd;k6S-ECWhN01@o5?08w5MrL8@>El2Z&PdkgAd%t^EbwiN`UD4F4fHs<Wh@1zGi+L zRN5uO7(U!MKQX*!&B_5k=LR5GQ+GLp1%J6_AUz?T?NMbpOJYe#u9+n_PGi)3{)whF zl?>BG93mFg5pA&b9ILDjhA8qav;hW#jPzB41QY<p4S~x1lJ#Fp<|Bm_Q?d%F(6o~I zi$50xC>E*YV2!omT0D$xYg)fyjfTgbTup+Z>;-E{q#{p_y(;}1T}R8Z<pWT&hciFW zo{h=If6@`yh&i4S-zY7Vi+V0rz-bzbMF$bA3b_bnSu&&$=}aXQvWteODzsi)hk<aN zL!&72klM2<Qe2Aa0K(L{HW*iM6vPvvIF$61I$o({_=bBJRhl7<h@oK?F>xJyrLOJT z0Z4nX7{70+Z9MESoOyg?*93R^H9j=MwgM0dqU5L-;?_vs`@!Aq0eHE9H+kmA$Glv- z=!(%Xk9#QcGAL)HOO?>$Wg)A^PX=eikfzr2ME&Pa73*kb8<JH;I7zt#E1aOPsu^-7 ziKKdCivr&OM4t*!sE`Jhuf*as2OfOz7ryX6UM;(NbX_dqRQCMX_;77*>Y|Gt&6IU| z2#MIO6wVSVN@Nc!WI;VUPPXiAn{V!&Yag<M$~ADInM(;D0B(;!1uNpKfrx)Fu&n0f z6OX>*Q<qLojCA#OxsHkJdvkMF?*JcF{LXi-Kkd{*E8I#ZCF*q#*`fRH-!bpU3us@O zST2Mx!q|edXG>GlnP;DM<yZduz3+YZhd=!KCqC&hKmF-#KluI+Zn@>wd+vW=$Byk> z>)YGfS1wzA;DP%;@(~Yv)NzkI;;?;~$9v<O{|omx@uU;!JAI9gURUd;+AB#4zwnIV z8~kC84Uxych@@L(h)iy}UT0ual~x0Hk_>@n_=;H5eDA=r<4->Al+#WJd~$4j8)54f zemi#V81WqgeXG5-g$+%X4=rCw*syjL-#F;%WLs!f@I^{%gex2_%^PPuowfCA`dl7B znYTUi^+K1c(skGUh|hX-cJ=ZOXj{`93mf?^!pSF{03ljcaj2q%iX=qWdZL_{XkM?Z zIzYYNVV<mT=bjCpsTRO#QZ72Ad78r7(=e8&j5KvcqQsIY(H!YpS^G{OfVL?s030a} zzP6~6X-QhZ03)!x79v5oIvV6|V0wIPc5?T+6$9&6udE*E6^0RI_3Bl$KAv%DKz44{ z?;vl5*RL5B`67K1(E%b=-(2#FX0|r)A)_5arT8u)DJT^V-OSe8r3me~Lt-I=>Rg^^ zG^B7U9`-c!jT?~bT&d-;0+;*@1!CQLb{GeQ?9zR4R5!HbZ7WvGX2wAZWGJS(M4nJ3 zPw`W(B2~Q=z-U)kB${f7@a15i+ejL-Q?D{Kt{PPkB!itw)G);+(Vlp@{Qy<8NQwd& ztZCA1_Qvrsr=X=5@?pXu&Bp#OE+j5LtS_#$Y{SWACNY>a(Q}S08|q)bZdH~VgjZ!@ zc7X!gYL$oL$}c3nwD2UptBVx`-iunS=h)P=peW&Px*j4V2?|QLk6zr_J3ByCvJwZ1 zdY>}qm{XXWtXqm)g-EN{e=;cXV`U^%or&Gp%6lRebl$h6efQXecLr@V3uqNzEo=mj zUJ<@xUN5rx!p%m8p!RYOfw05ETz_9DbEB~eBnb6rv3Y33HuV^CMG+5Lp(q+1upj4! z>gp%!0#S}(v6v^V5SDX-G)pWE*hInMh%HD}Bnr^~b}Zu68T=lnKZ3ec9G-h(CR@JP z_@AaM;g6B415i#N70kL21-BgIazs(sNjbd|*rfE)rKYKfhMIA%Db{$Lv@jwQ*%~;3 z)RHoZ0>xjnVGM}pv8=On(l8F7NJjC#u&1Z7D{p4~d`DZ;Ku<fbo%1#!?;cFg%uG$q zvv}JZYoCNNU@3PeZaS<cx~!6^m=Y5_vzY3}AAWy+cKpn<PVTFwy)CjlZNms@bfZaz zmPTQ{wxTS2;R{#&)pK9SF2096^7uEr<?ZYC*>`kehBdrJD;Sift@NpU<;Wx4%sN-s zG6@w+*^Ag8<y{gV`tkh6w#<A1ZLz8OfJ62_`0#`OGEZsHnN1uKhGsXDHT^>?S3T~@ zPkQVVpYX#U-1wjW@sXQ;{FA3Y^B+F*nKRz{mP;ObgtsM3H>i~%U4mV`W=I9Z9F=9v zHdyzyr#}7sPkr`FS6+Gb_r81CGoStV@lgf?8Hcgl(VE8)+`T}@t<)e;7!WNND7AqU zgNj%l7zsOM(t_;USM_fw%IeA4&RcK!U2S&mxRZ|V?d`t)hU-80{*Qj}gCAS9cJ<k3 zo$-XnUUb6AC$3!4^2nnPIQHo0Uh<mf-g(#7%dfcVi(mfgjW_=I+H0<V?Zt0-_`{C6 z=z<H*JNK-o|M{uU`14br_>`Ak`mL)Dy5O;of63oHSR0>WO@IPnSSrvDDf5|D>MKU} zDvDk3L#jY=Fqp7PPbMnp<~TK(92xn6YJ$h+P6vpq_BI<=iBayIgC=2hvY@$8&%v8P zNv+n?ov(%AS?OQJ(^68!o~f3k;mM!qKqLlz$RVH}*$7Lbi+OX?lT)vI!yAr2>F9~c z5#T9Nd@e%_|9C}qVPS&38K!G*e#<-V_|2Wuyvf4H{GbFN3eoM`n0Qw;KIeQ8&#c(8 zt&^Vuu-Q^8&sIBk?i&Ba&9|I>=EHei);R?Si24;%)KJ0*mHd!4iWKD-K?}QzYXq$8 zR+X3sMscsYlci$Bw}^j&bP3i@m21l?^+6pHEwCN~Sb#aEOC_(!T#6&5pip3p#M0cd zvlP$L>P$n31EDY~17qowT)hM3WzGA)J^g&qVwsMTP+6j(fc(R{;Nnh3O6}X4mJbf_ zNS9uLcma$Szz7#l)#PwAr(PCAV^BTSv7v#^Od%Ln%g?-Y1r?5%AyNb)^}mEd5P$%a zs`y5bdO~`OaUm<x$*$XB4=#mnIR;)w(yXcXhzCg%{P=emQRkuq6b3~KxtK0Sv1%{} z8gnUKQV<O9@dG`_Ym?vm{*P;IU2Flv>*aIfyWI%~1G4Qi?UzUp(ga!4;g%k}BPBgH z<D$9G&#_>~C%m$TByGuI9Sh%F!$XKN>2l(w#r4v5By6?hKfuI1ODVYGFUF#foEOc3 zSXO+@RXoBjEC#ErP>Ej*8uREn#iYunvoJX0<rby|dcSk^b+zuk_Rbz@q6hxSI@$5j zmhO%-Pd=U}YiJ&UAc3e+h8Vp7`IJO@dQdR!S&Iz1Y;<pJnd6bF_vytCqh8~%sBv*) zU}AdZZ94b7Q$P8M|7PF#?%tKL1G6y;9i3eZtzF-`^6FQ;<~i-TOA}Kx8vy@nhZfqK z2k*Im#}sqJtqdgExZFZ5Hi9t?*7=;N>A7Q1Jn`7G&;9IwevYkap7qRUo^j?0r<{B+ zH>Y+d^p0LDs581rRixj(@7~#WzxT6mf5-dwIqcB$AAKG-t?50qf#!|qN?$CZBKfz( zh_-<c+$|}2#Bs`Kt=+X}EQ^53tFg5yn7+Tr=X+Q+k2r0e9qaeou-`%Zx=;W>>q1m} zl}t0Rh5#kz=6R`+ckko}DKB-h<H9&O)YE#v20vi{HK!(WH-I#7lE6akhVT8b*4EM1 z(Zw~8tJ>)3FkfCi@wlVYMJl}^T8Df|M~D(F0ySV7kd6F0Mk$e2@f_ZX<Hm+YAAmfy zV}gJUe?z>2PM0TR)BZ1snh|8?R)|wte#sNO6kAZR>^_M(M-o)ZnH-QIrqymT;N83h z?){o)C-&d4uD8z|LyAgt<*FeZfvu>hN4EZ<y0oJZ90?q8lai?uP)G|YG6=zcs4XEG zJV;p_sWZbv6$%@%kd97=QJWMq;1)gZ7@As@sSaK)(6Pe+#`pp8%%AAGFyP?8qzL<a zVkE->4}4gL#h^;bc<w?YkzFj9m<~p(!4aXQu0Tc*?dt+Y94vR7l<SM&JGPXwb`D+g zpjDza>(Z-`rF*A@GS3<&I3>SGVq=tWMZj2aI4lVYD6+dakB?8uCIDrY06>_kgPG0& z(ql#yjxq<8Ncunl!b0kfKBp)5Ib<L9u;SGV@*yB@lr&X16=q^cOXl=k^K4hljS7T$ zm=!KD#3K20{1gPO7^`Bf3Bgxd^LfC-%~VTkn{4eD$s=FX3Lzu*WPoNSKYJYdk1RxC zS2an-jjf%`3)mchViDbZ)9C1E8#`DF15(v16b4)f$WjhXC|jK@oGlO`;@IgB#{l+n ztRCoQ*)LmVB_}|bLP&xHLV}}3a#CS@$l*aq2okso0OE=eP>BY~GBa%!^`bx^Dh2$7 zp|lF;AdnrRMO*n}SpnohSy+kk`=Q{IUr`n!)R%ykqNT?rg;kVmooEGBmWv=uqKlbJ zVvTYmjl>dp>QStsUYe@dG<p@K3k-&f*;HGtJ%y;2iwVgAlu+EsMq8Oj$U3KzNs>Q( z3g9$aXcTOZm6kL!Vp*j}Z6_ZYn_9ZsYJ7UY3;cYI0X$n`@C})nsX6wEg(?F#U;hTz zuW**mt+=!DAR}*s|N2+Iq6awf_+ylpP*}%8YEF`WjiPT@PFE_;g?IeR$6xcRH#2p9 z#zjwg#cN;7M+ZhGr_~gGs%DGE4$weONmx{DA1hSG(;!|0EUj83cE`f1EbD4WK(E9$ zJnVgnCUi%xT(Z^1!m2Vq?I)>V+IIA#jy>j4$6b5P)gS)A2fq2OtG|2w_g?w(7ryMp z&(a{QD~v3@!=pA(iB#pFdPPFZs=WEyC9i$iRo}VdbD#R;Q~&JoY{oa=#3Tr!a$~G{ z;tbKk{;Tx6m8oJd;yFuCo@l3ond|N^rB~(J)b3jMg`0kQ6Cf}Ar+<3PV;_0@ZDUto zef5=BUirNnuKVmKKl#~Dexjqd`^+;=d)!5jIs4304?JM?e*3O`&a?mQZ~pqv?%OnV z`IX=K;+MXB{dL#>=*I8A{tXu&x^dr6fBG{odEsAQdexP;-TZ@n&pu)I^3E}*XCn@M znet#@l3u1YHy1V4_P#joYGr0pAdbL9LMm1TKrW3$mAt8NdQ)34#VJuY=dy0B9%hqR z6Ouii++cHgTjw3@tFchqux>+RGh=aM6{tA|G<Y?RnIf?e+RQ5<Ez=o-su^h0KNL_w zF`Al|4fP#)<eHh8HO}LB857!iqPlpTH(T4XWn|m-ZG1js!@m2sb$0Q+DBc@k%>BT< zw|DpSuUdZ~Qw0*^v$K=Ko9?=!t7l-{`hB=tnx35FbF>p<yB@svx0k%}9ao(EX;%xY zh+eOuV-(p{5~`QUa`c>-c~LOUGRAM@TV|jV48f>JrCZ_ESy5g=T4tjw-BrNS@W_x* z4r!ltgaT?=#YO@Eav24iExxchK5loyoKNu6#i3KE7n<=Z>(LhK5W=<nw7i+|RqOcN zST{BY6$Eh%5vmc@kK%7YDV>L6&7r|%`kvG0kj*7sO(j#E02isyk}@SCC&SSI{zrnU zr!qrT1UQOQRYkZL-cT(e5#g=ar3|Z-P=S$7BIZ=U$>NY8LS3MM)DPvXKZqYiLP&)C z$R)eb5hgO*Af;c4mQv$J^umx3vyjQDQrX<PtQDS!1nR4!rTzNre*M}1{IAZz4XakI zZ*A{ner<MoVq$zZ-owahXlO-C2X8{cfpt_9oA1A4c5-ytntcWbSk*=Ap2O6e9=L06 zoUw8<SEV+VV3*5+0xOsH=RV7ah~96L9nY$iNo6RO|7aa7;*nIzqjn-Co?}M!$qZVo z6cg0zRyMJ%K%r$xfE%=fprI*X=ADnZ-*Lx1TkhZ7y?SFS%lL7<$jBgfYGm6<$3JYJ z4TD_2xB(Fd*W}We0jE^SP|=VqNr+mE|IrOGUy!wR=nf2x%e|)@2mF!HASFS$)%e)q zF};Ib<0Cr;mTzDUu)@(e+xUn~*H3Qx)!p}OKk$I%Shxt|{vGg61*{lo>gipvdCS!H zVJ7v<>jso~(Nz{cRaw4)+0=aT>)-gM`T1+Fy!_hlT(ffBs>2T5c<9E1_uY5>x;3l$ zejwWcOioVh*fxCkefR$S7r*-9kA5;fJa)*#9`Tm9|8swT?=;VfbAePNd@B`M4$(1| zDK(HZ2l|H+$i}2d!@LRYUe&51ji{8VIcJoCVpO2{<&fY<Q&^}y!@Ih9fJb&b-}?fV zanOa}kHIXrj*_P5<~;$tx3i;Z6>r@wV=-^4gUNFrHHT;D<46x|nf&!{ZfWgV*51Li z5v^cyY;<_-y48msazI3jm5VHuL`xEtkjYsZC!-{Fcpbm|FTvD(;oin@PF+zU2<`(t z%M3POt|Xo6Hour7#2{6OR>abYaQSmLVTMzHy5KpOoV1k|PY~1+Pq}&&N>U_?e|*Ya ziP><Zd30n4EAkH7cmO0zNL^J4_WMNoS*GS2^wQy1tx|E}vuJ18>H}df_d3l)6_DXV zV6;^UX6k94rKT#JwH1Ujf~X+tDi$O9eJ#ZTRFt4`j1z)j3_2Az9jzgZ#1kYh^DIJ? z0v|3&+pEvT)`g7II!3DF8G|Oait<T9O}o_Z`NKS2fO>~fvAx$>YeMfY0#;NJU2>3! zAry#`aH<3@fH{&wiJ`<)Bq}$zOiYgPb}hXhOy%V`$})R&MJ}dLj39@Pw1BWb3DJr$ zJs%G;8B82}@PS>eO%ptGK|U_aafk{siqJ)di}uH7NWc!0^>%mJP;HXdg+U`F)`*mB z1q+b?MR{#%ihKvHjsr-SA)A?1ms6LzPz^Qv3PC+`f93F#8xa?g@;wFAvfd#IM98)b zPfqeI$)OVn8Ox>`iaTgMNhwLh52B*TCF-Q!QZ67Z4DaM~;k@-*JTkHfAH6`Uo1-FP z0oNCYqlzU>&pJd-RbEwj5v3d=FMz3kpq7Lpu_D*e77N2ZX06l+8&}(U$pi(>?W6xl z5V{29Urf|9>v^T*50wMyoTEBW>@QID7O+T2z&g1-a_jjqV3A=DMkRrEa>+kHjwq>o zLIXB-4i~aC3sA9K2zxoCZmZkcMI;BM8MM`9isvY)R3s-NF;12I=F+LrbZBSsWD4{H z5pZoD14~TiEMs8}Xl<c`Qu;Z*!{mjQWpmu^&`HhC(g*rD#7T3O3fUmx)igfJGQ2G; zx;yCL{Uk-GTR1YAQZ<+&g@W*82vQ3#dC6P;^#lK2Yw7;W=fB`NfBn4inT0W4_Cpls z)<xx+3YRWs(xj(ap6x$uSe!JGS2qiTVC~4wlH}M<9B-kc^q}i{Hm=uB+qJL-mJ}-| zCdxuaQq1@=uP4&+r<``wBOmpVk9_FMpa0yeU-kCOue|m>?|IANhpy(Plrbw?)zZ45 zi%>;6Ql%!+_0$JxK1Q#dc;dlloOaT8Z@BU1n}7GnqYq)GJ_|E~%&1Nmp%oxNdc%4T zlxdH&QO0a=a;=(xuCA`J*`L$ZJnO)0tl`}?yz|$;_~kX<`R)xj{D2oDue<*GhaGj~ zzWet6)w3^p?sG0;b>xqK^y90q{_d66Tyy#5SAFZ7mof8s)KN!0`N>Z@@7%K=_E0|_ z_l&1q@K;a2VB3!AZ(VlTm%sAmd+xgH{>}HFfA$FvIb!24Zn<m6y?1x7I%Kp6n0iuc zCRC^mpRL7qPJ1FELnn1`W+o#_6POh9urG{>)S6wt2A2#`T0a{cQfJt<)r%sem^*D< zXu>7g#;=X1^%E1byGI^);J2H8`#VZl?7*f`^v^72m}cpVi~gw>`RE!j=SpM-KPo4p zIUMkUWUq%53K-`|MH(|mBN6BzUen}^yX*0QMY7CQaZLh3r{*QG*`BV}*S_}kBil!p zuRpB4XSr96)>(StT|2ha#&^%QcPuow&$YO_RU1ogXU5qcYI1D%?w#9v2iLh}BgI`q zjLv`ii(B6Jfls{bWzU=#p=qi=%{kvLk(KhqUn5v`KoN4|b%_=bWk)oNh^U|a0wh8v z;IT+40konPl#&eHVu%LsC~RIGJ~A!INaL$YLx6*|ZN44QJg>cJPpTv&>iBR-x<MDK zTV_2$Ayvub9$(yEyJo+xPF6foR0odib_;@vlru-Q!3y%X+qBmh9O}abog2dAEP+m3 zMBgm<MHUlc7deZ>+!pZJQJ%EG!W#s{f=Q7vtmVmHQCQX?BArB1(nu9KgJS8T3B)Q0 z(l4<JET^ihDs1qO$YQ7qzDQz8EYU&+^t3e2T1rz%QQ0e=q$(cJtgajpRu%=iDz`?w z*YLrlgPz(y{^QGQO`SahD_UB+r@6!L=x6l5ebe3Z<D<3a_GK!c)}8<WAOJ~3K~$^O zw086|AFE?bvi51B#;eCWxApc8Hn(=MzLIyO`v%u+-?3wAdYX^V+vUZk6fN*3lS$;w zfI$gt$B`Q8=y>AsrqhBsI>3fT-F(qY9qW2l1&~U`#vTP)KOvi+Fsd2H;7mp_NyfV| zU8J<*28K?pna9z~*R1>rpX{CE^TPwptsS@`Jr+#HC&p3vqQ{)a6;5KR#5Ib`1sc?= z!u&>15V$y>3In@hG;&R|KYF_PtaojISCJxqNtAe%0~WdK*K|Gnp@(1l{o59%$C}%E z*fIv@tu4*Hz5ToIf8cxH|IvQ?pDTm3NemmaYhIAMTWSYxXkWLgecO)7UArg8-Q=#- zjc}-!1>c=>Y1zVjS8v~2-udopufF=yuYcv1-~8sf@BRF`>wcy{Jg=ciF$6|*DbBZc zbsliQL4We1Ke_Ot$1ros(ne*4r)={el}ih?NNz$Zz{y7)AVxG^N+~n9a%K!l3AicE zNh(IHsl?RLenJjN<NXUqAFe6@T!l8~5Q4xRMtYuj8&{wCDW3cGb~mpW=pS0v*52YG zIZ)uJ7bfBnrpPv5`|YoOH?niIZ^Hq;jl*V*6O#**yN^EVq&~**fGg{guxDzq;E(0Y zX7PU!KG`%npZBm}Lc7FLTpy=PG6F|(t&mh@y}DsTLy`cbHzmW4QBuh+=h8nA*Ldca zONe(J+9l>M-1E{MZItP!xv|mhTvv}c^nj4!fW=j%gcZCd)>8H$FtfDuR2EbLm1vZz z22KSl0#w>W9J2+rfD5*yBB2(`)wkR|>R*zz!WF|iSh{~%B&iEI%z<<V5B+fok`=Z1 z1|Ec~h$;7=6+a5Qie)7XCwbA6RT;Djo{X4@Cz2}}A&?4Ng@P-O>}|-k1RgxoAT5Z_ zpV71AD78GNrODvNYVlDBfo?qo-h(KnIFrxO?v<lF8>ImvD+~m4kOu%~oq2MSz0W53 zf~rNiiwU970W8!|E>RCLSfs_^Y7I^_oM)MayV|gd;IKnB+NUD~r9tH^T<8Q@smvtE z&lG>Xy)Jd;!l$J(RFqwcQ*OsvV6|*2w-n~+HBO=_Vd}7zt*FRwhO1aD$VR13k+h1U zL4_%k18{WtOr}cwG?u$m&vtfqcDS1rAgDdV@&WF%h|w+aa7`ts)Ubx6a|@-Sq8VId zQa=(A9tYwdZb(;~XREB9&US`Ukqc;k3av09#z8dA8QPxpG|mo}?eT<GQ+fGc-~~)7 zr$vnmh+tK~{+3Ebs*Q3PT2P2oC)j8*xyh4@rkD*NQ+tJiUJ<F6{jV5HfQ-6YF1jqz z&>nk+I>89GXHn4WTI^L6-Gk#O*k7G6HmS@fs^p6`LSRX<z}wLoM7MGQu+bW<m#Va6 zB)1&M*Xrc!(g|{*fzphs0!#f54MZiR`Y}Hry)c=^D6|B46QP~%ju%Ho@VO4F@tIY3 z0*omGZdzMMc8yGqj&^jmE@K0wDxmA4kTS9PdCs+#6;lh(e%1>=|AjBrx|hB56|Z^R zlb*Dj=>g}4>`J^K(*dPTD2Ak@Rw*Shr##G0zY+T3P(KJvoD*mNf}v9zi`Hp?Y0{`7 z1fUYNo#K-O`km>CNnW6M!3&;$%JIj(`<?Il?iJUaa`O4_e&-vX_O!>a=qv38i9<Ca z#)*r#(ko(1D+7=}|BI(wbM23=z2=7FPdtQ2n4lvGa&W^56<eO_`$Pz1Rl*0^DlHPK zs?_-7ciFeDzU=aA?!NcIZ98{u-n?ymc%;V1oS@b<SeqXI;QRjL-#+n~V~%>rg%_NC z{<&uycF3Bu&OZLEvyOj5?G<<2vE#aHuf5`mE3WzOcVF|WSHI@fuRQ3${m(x8^pj3J z?$nb{+OT2e)BpS;ewZN*vi7it9RAB+{Ca9+S8rV|Z(Y&QS|G%*7NwJMgv%$9F}IdX z{h<L06zStvq2rSkkSLm?S*nqvBnOxrbLY*+7<P}1?%MUhmTlV~*fhOqOKtm(+OFNT zNhU?GY5(*7{^gH))KMEZ9{4D>?mqHBHn^e$ru4A%x!S47RI#b*gzI&g7Ng4Ti}|yK z1iGrVsD=7vx+87DDzL&bmerp@@N*&U?X6$C^t+c|`t9yz`}g**np<GkZsw2Xw{P7v zzI)r+{rB0lX*<3$$L<ge%211Wspc9VaQfA+ZfS1sZ|fYy*U9ScTef?2`M<pDgXf-o z=EEMkFZ=yRcr0uKt&33gBH^w&@QPVW71V3O@oL@LlBuUEwR9)7r7?gJGm%jcN)dSg znG@Jz8gZnM#w>a%HM8QD9EetsXa#5Pr9&MUUkuTciJBL<92KJCFS>f=X`7XqK#ON} z&)oFB`>bbu`od(f0}{$CnBto-RnM$vkt>6R+KS~XD2JAsLz-M;w&ipWL_>q@MD24z zGt!aCbbe_Q;3_3hDKDqQ%`GC7BI1Q6Nd;~sEUpt!l7R1V2-PLjmViXHD$S|lUtkx( z5<^h62u6{>XypVdyeLG3lUC@Fs(heGRi~?afuuLr$ugp`6x$G4Sm^I-dhNv@xb0WB zcCS6GvwMi;XsmCd`Zhms@BHYlw%(qZF+N{M9}27=J8-4t)a0pWoyy**JGbB8ziR*1 z8XM*{_w_H^>22zRzq<Knk39aksTse{<CDgUKdqx-(Na@N$`wnu5yt8*6_r6e*cqb< zWl-k2Rym`0)E9>`)Q_rlHA4)P!ZyZ{Otj897AsUaB1RLdX8QXFZ~nz^YF+)E-F*xQ zVE`C@G(JAUo*L(#ce+hnj+CSyYB1NpRR~s<q|-t%KYV2nfCE<|j_y3S7=qN$umUXL z0g4lVcIH{9Tzkz;ZbQIYcb)){&$Mhe!{`>S5`Xrm=QwFAPq2zXOdw{Np5e1Dy=%K> zR(I_lt?d||+C9#FJxjc(1^_^9ndSY5rnb}1Ip>VC&)Knk+dX&PbKkx9ZP~ne7vD>q zoZ?QptE=1B`PZ*I=#Yc?YCwAjpWNe{f_8#3vdwzKRv8A3^aHDknC+N&e2*M*t7EAj z<%}N`AEmKND0!*hQm8qg6@DHhQR$k_RErb~;P$?wBoi_nGO!|v4y2=_b)dIzXrQg9 z+fk<71Z^aA^cO|ffDHF#V{+kpKlmBX>pQ#qEm)YFnjB-Q?9@|_wGKs4oc})rbq$#k zi4n=*G94wbNF-}wGf3`OBAcdAO8*OTok(@gDW#c3k%W``m2Q}bG7?b1NXAP>7(&o1 z5-t?#ToxS|Vybv`ZDwp_n2n4MKjM%Gz4u|+vccBYwwcLsMxa)@Opvj#30=r>E}B?g zxJd{3{HM@V*o&Lmj;QA1Y{9Wor0+EdP?B_6nT7+$CPF1k%o6UyU4R0v-c{g5jY-H( zgXKuHa7~$T1=wVG1V*UTKP#u8poE1Gzy?p=H^&tNDd)O{;R3N>aEvnXuQ~wu%21c1 zR8>_`0hCtZRKz1rvGOSkhyo~wT*|qe0wQoQy!vB05_E6l;}d*@sI$io0|Lb&AtMRs z#%{1zZqPXtLwX}%b&AGtk{f2`1g6>BwKlWykb|{?aK2Izodf2!h^AZ;B>D2M$h1=u zy}S$UeRsL#j<oWWc>?@QAw*EkOQMvPL5b9;EH<hxTV(?bQp0i<Yo}ysJGDxZhyg9; zrzbW)aL?yH^J!Yn9N+DnnAo!Ef$r}1?jH68>teTrPWH#{V8L-Siw$g=9Lf{j*w6as z@u|~Oa}E=kN<adAS5qhq;$uA>1<n|6W?*2D>rN(Gb+J;9fsDM0ESd=@Xn2$|S$rxA zI54ZAIn#KB60dHtQYaw=tb>MdAYzhwj6@?Sw;cE>7#irBdP*`lgnw8ykp8bC3TJ3Y zR+5EPJzfD}ZcSOwjWmr!Jz}v^)g5LDlyzRP_vU6=L&c(Tl<Jz=zzAkRYak~=JJJ+R zR71i}snm;kkTjvC^e}iA+(=PUl{^-vLDE;56^~UM;zcx05YzLmRoVwL+|q=LnRbM@ zQiLh8(t;#Yb(B0Yhb|r~b?>gzwa@VWA#Y9l96&w>MI|6K)V;8CcG8gx>-^Y6?JuA8 zyi31&*~)zne9i0Lc=WL+?%X{_JF~Tc0WaX_`H9KK$Fasr50b$E%>d7XBxC^*igIL3 zM)4=y3hne>R8uAHOq2-%B#U5K&Xh;;V5&P0t68GSjhu3O?(1mvn~=4O9(($kryq04 zYv1^l|Ni`QpYxBu{MGN?`lc5_kQTtL2GEFu&ftkzx2VyQ1>;)n=tmya+SYO7k8h%V zdgp1^293;EaVw4dBC8nrt`kM~K#)!Fh(@tydwcVZH{SGDPk(l;si&EbF|6FsJ+!fB zMQ3Y!53=wLK(_Fi7~eHHyyb^C{O*U>-F(R#-g)#R4n60r)6PEgw4;wX{Ln*|9k%fa zfAy><Y}-EiqZ@y8#Z}jQ^IPBi_$NN`kq>|9QO7;%`s=Pxh$xkFt)B^3`ls0$Dwra@ zfIk#gNaXS+5F2yr%*k~pygZELdW{p4dIQPINLqyoz^)j$ov&am@M-y`R<4A6&~jw= z#E#)@Tek0baNF+9TPK(f7#^*S`QD2wC>(9_9mv62duOe`zjeOp_S?7I{@ZWY<|k^+ zQ%4<j_;a4~^a~$%wjU~Ci3<0kaY%%V7D|A0&IS;%lS?BgPm?K8q$pN&E;w-?I#fhe zSFTPRGbyj~E^w)h?wWl4Yv0_|wybApZBu)v&39pLa$<Pby}y0jQyxzhe)Y?j#!gjp zWJ8;#iP2ZQ{Q3X*PcPoF_1;zM*xs7O1-#eNJ-BS$&bxQK;^miI`n8Yiv^Hqn*Xtr$ zNLv0Rqf(lcPOU{LK_O%MpP0rulw(P9Oho^$5QH(vsbG{y&_Y9u&=WTVN~FpptAaJ6 z!wM7*!Xds=(@HQon|Pt9?F%4&s9`H8(s-m56wxcO$%0lW^2~_6tM}i3Lm;d@XorJ9 zgoqDCNW|Wunrf~*mF&S~gS1lSDc}MD{|(-7MIdnqARxDWMRI|nGnw<cild{5vPV;( z!myBvT6@SOtx!y)ctBCGWQTu91geTz=aw%PRAyZSFRF)nz1sFb02yi2A~B6)gLNFM zeMoYsx-M>V(oYHmM&T9y;inu`#hMwxF#{ElnIFNU5)l^z@+7Uj^@l(F-Fx5nk(PmV zeM74j_<oy}JUg;u0JA_$ztiltd(U{xnO)sI-~7Ti@)#T`z1;Zb_sryZ=bo{4?ehQr z+*dk!2Ali3@?fuZ<=TB893T1UhyL}$M?c&VI3qGeL=158q_~U%+9t^52gTx5`hiMu zq96}~K>=@RpcEBimBkVam)gR9UK}ZqAz-e6@<gh#PVpjgye<i@8*6N30C8@feFuJh z`<?B5LoMx{HULTS40N223m*B<Lk~G*o%h+mN?9)I7pWp<6<aDaH*&}znC#G;QJ-T( zxV5(NT@*sWT8h-rnIc1+o-T~h<-+NwpHgdn@95a>u7Tz1%__e6g^qUabi1#={zuc3 zP2C+DKxX_q+|-!brC5gaLanp8*3n;E(bq9G-@%88caKdEk52N=;54t(EwH`L9J~0@ zhxadA_J~z0A9cbpu};*6WO_7saGjy&8=rLIR!hMFQ8N>r3X!)LZi-?8HL*p43MA)b zl(hJGS!u>NSt$f4l>q0IRG5H5QMWF19L$)P9OB4NM+OW#1+W7TFBr1daA!wLXIE=q zPhWQzJ8jsX@zYTJB<Fv)nyMm_G?!IxH+=60wPqd}c5-Q1;N>%RtgOwPbi(oI6E`au z6{bW(Op_O?l$fc<q$m+%1(ah@ayDMFjoEVCTn%8f@-6}=YGE~8u@(SQDO3{&S2E=& zfg*tr+^z%46gc-Q+&wsGiRMDv)sPG!@=Zy#2om?9V@-;yHd<3QJvp&^S5s%}#*GKd z$57Bqyw*R^*VEs*dup8fqEw+ZM3suqA3xe6gE1<XeAzESFH(E7fmX-T(gF1+H-dIC zm=NCuBf#l?MfePWOWa5NZ9YgVZA$%vRmgGlA#9x1?8WM%*Ck<Js;KdHgom3<a96)v zz@^IdH6lrrNXQEw{gl+cDpG0y;4}fS4$4Rg9~R=9K`7QDN~ht~I1RyJoS?ZcfQIM^ zp=L~jmJT~qtxiI{T?L}h2Mo#y8im$9K04Vn!{x`%%=6=JA;JpcGtkoe6+tUBPLe1? za|wF&azxJqBsLFgYU6V!``fkTFS=+vBKUJtSwtWCGUP)W9TOtx-q+tF(kw07u1OhW z+Rzvp4e2Z>%}r@ai9AT?W|<$r_erGUw7x+=VsLce=3>xFQoNIK>0E97`jrnq>X6_4 z?v^`m`Atg;w^qO`eDl&vnG+Zq8f<It`Pt3C>FHasV%6GZqz4E1#%dq0Ms#-aF(!P1 zZVg?syF4+>C)+$!vA(_cVIb~}pc|*b6aS-sV)?+rJbTsHDySDQ8p5Jubf!?*;}cN^ zivh_6x?Etm&S=Q2J*V2r%vVgOg5}~MQRVU90|awI$j}DA%59u=D3p+#hNCKCH^8`8 zB9F6AQe#h2OMOlz|93$$dxYZ9by-rB56TgX3^tBM5%)mdGqHs7l4ulf07mITO&GQ1 zl!_x2M#VrCMsn(LEC+(dfoKtUkx@(*Gp7oRk%L(vIU2Z@`oyk5AWD|nDF8XjHiA*R zMPwY!o`DcX=F3~ZlNCSb+R{RWu_F1?U6htBG5dPD9@w>QY;3HyFd%q<>^w?~%hP5+ z@#y<E4L|KK|LXhS`_WOy9sln4y??_2t9A^}E^F!Wx+KF`3oPg=i|O)Le;%BCIY?Yl zh=e0>`ca7kMHGuhFBbDVeZgWNI|CfRoke^U2oR4q14+l@I4gwhF=It!^6cHiLjOST z2R`t&qaX2zOJ4WJ_rCK3oA0~tgCBZlcMqaM1u%669>-M#4OAj^@oKf@%ZK{=`nPP| z&c=w$IwD)RK-;EQx~RfX3Tlu_DRhvO2IC_)+b@rfm`wDBS+#g~l}C2HgUi-*_6&A* z_D#<48Q~G$3z?rDpP1M^HnM$q=L0|f+5JEM;lI80&F^2ee#NOLAOHBrKKjfvPFc08 z_kzcqalwUWyz^gPfB&YPKl#ax{k`3C-!sgyceC^3ED)y0K}Ba?yw*EOq>(g1dO+`> zGpWRQ)eVFkcd+2ip&p0~?U@&_yJ7{v)bzye@g2jvhqvt9wRQXC)}6I&J8LY0U?&@U zeJC<yK-C`B-*@(RbanK!clLJo_I0oYZC7tw8{ddzssF^x<nEo@?%lTe?wfvg>+_%c zg8%%?aUb}=dsnUQ7dKv1sZ!iXqgHmc_6@~NGkuj*m0ikkKrSy<lyLYbKBBJHRx`Il z-QCR>zw*sn?%vY7{>aXr74v1+q=l(%oA0UBCSLmDe|X#5-&JbM3nGY)G7)8V!@A{f zc<oD`|GZaD^bPb3tetOa<1VeIXW8_M4L|<gPv852|9t6-pD{YB3oEz{Nl%P3X&SO3 zJ<gGGX_Bk2q;ZlgPz59K(c2!8AigpG$>&taSXM_B0RHBLmk~lTs+`4mT_%=f*to(# zXfYe2@Y<m72H*}{z;Fc_RE^De%q+)BRic<V=y(m^W+lGge*1AT4upU<Go`N@iBhD} zi(mkxuw+q>e2#OF4=uUBCT+<PR4g0<N()_u^;D!TCAb7t4-=k+W*W4>gjqB+?SDBG z<|Ylv-!r-gKx(XzYS5@~JQWFwj*Vocu=)iDz!*7rCghN!f=)^U3tM3jrwt2LLMR9v z66Raj2v}JN)0$MTw2n0&?Z|E#HRx`+hLfDDz5ErI)D}8>hSs#V_vaJN4C!{!PCExX z-uK?Oz5o6HCOTt|D&%EvZ!xCd^oCdRmDQcwH-p&P-p>>0_KyCpl^gE)^>4oPg)jWs zGoCrl(i+{u9$ltVP?REfkusvjk4lG(QWS9XMtn(7-~7lkE?$wTl#tLyazks2W5wzO zxylS+=F(fpK(iE(%WZb8t#xv8X6Nwusx|wzv~+muH$O*L=*QtEN6$UyPxy|2nn1N2 zjTR}05KQkCe4GSza}}&eFAle8j33Qq5Eo@b$wR0Ush8URyz+Qgw(yXL9JFTrs?FPX zEL**vP4x@imiF$Jp22(Wy!+R`zW11i@4M7^;hjV1OFU9=;Mc`WK`+zF?W<R|vq|vS zbZz&@JRdC{8)G+QxAU8xz*QXWaY1P3`h_e``@psYdt-u*29O@AtEF;M(-mi|o@z-u zP-jx~CnD;KcHMRm3Hk^jbpw=Q7F&dtU*M_IK8FLJR7NaRf0Evd;&SXJ&Lh6wp5C6W zmhR44M@QaS6*q&2f>wAI#)_R{4ic*OSo7Fq;pSibw$|Cx*2&ZgE6ZlaM|Q7Rv;5G* z4=6~0|9&8^<Qt(_7c87eS1f~-c%e{%3LP9Po=6)v_PMx4K}lr<7J`VW7E+9Ljf7&6 zsL-{D>zRvIB9q27BE14!Xvr7?GLMK98jBb~F)n{^3TF7w<K*tOtCp=_zoIa!j**#o zZ+FY`p}t*rkGRnqw?Rcnt6Qo?5>e>1ZMu?G&?0~Is)VylF#^LO=*a}Q1R~W1N-l9K zZ5PPUBud?}n*%2=DL_T@n87IEamlcfVKU26J5a6&2x(P_Pdp;AqL=M-bJGX)h{Rk$ zIwauu`3yRy1d3msxIFlmh;&Mkbcx11A(dnWQJo~6vSP$orlc#1;#5IV)46J4Vs)A& zy5tyLNRN)}MqDVDrswq(L<$VmNh*nI4+~8jjHkZ<7BlhPm&x&=70dYW6W5wTBnk() zx)G4RwIWIKi%)V?V8-EOxP%RPim8N(5e3Dpj!q)Gbfgg-HM@SB>f((q27FAjWd^56 z9AGdjlu9EqN;e&1kjGV5EbINR&wldWdmdnE#r+R#{ilEYCq52-;d$q5+rDXfX8Qh3 zJ8r+_7sI2hqk_glXGcd@Pv5{m|KPwNVPJ@X4Bxz3*4;b6>k?gEUG1#7inb_Ke1<W! zcNor&I9bL;r*E*U%?Z3BMBTvXRq0*wi=xKO=TGa~KGBxGkV=67ePXG{f?J?sXbcrP zF+>hkrD)z#Rmmu9iir!XT?b9Y(RLU^4oXU^^QRK6J3^geJ(|qGB-S{PMX0lDWdH9G zXRrv1qLwc0_o?ievnTtc>S8Ve5-a!AFhEI?jx0+8mq?Y!y!cZ6l1GMiCs++eO2TRj z4mQfgToB7FD8WQM9^lkeMSwWPfE04ZeE@B?uI=@nIMZ^?>^qmvNm_9QBm4)}XgbMM zF9MbV#v-o9Z)Sp^nGet0dB>f1+;#86AF?jYK*52mYA4W0v68#ibo0%3Kkey%ef#fj zIp=~4-~HZy!M!KunwItZStf=EMXO>6<Z^%mwj?Nr8Yd?ul8SJNMjXWkh9f7UTB}5Z z>_Djq!Vtf}<w&OGkjBEALe*?v+`*C~g|x5SuKI@iLeq2p`cDr(@{qs#+rR(sFMQ?x zE!#f(nGdg6)<wQE#P({sF)fGa5`kcEa7Mxh(atvqguGzostSUh0)cSma-%*uNh|Gx zDGo*C;l=Fy(T{q>hd%njkAM6#H{SU3ouj*V-t~)Gdq+#(vZ3YcSFYKww|_-XPyh7% zK>N&^uA%8=`#x-Da%^T|c$CNUJ2!vv%Rl<!=fB%M)Oqsp4?FMdQ!aS)SsM>pzW+W$ z`|fjI?5wm)!>+LrwCd>YpvL`hl~OsI%ZXcm<iVThjpFL83-D%_kNvdr$~HscY<f8} zGR8CYT|0J-Y~8hM`_ADVyPI~7`lbLo4Y3;o3vJowzqPa0wx-tG)5hnvI{Azg3$2(j z?P{a*<1H`v%uUbFOwF=3Vsx07l_w^K*#&TFVsv)WhY5^JYn^RBzW(MHzv$(k``m{x zSh<r#JaMt1rX^v>$tp_Cr>5g<s1#^GtQziiy_rnU$kha=bYDtpCiUIfUc3DAAASDQ z|I^BoQf~5_yJ#qF%`+q0HqGpO;OWnK+7X8>XXO|qZ9r*5;PFjSy7KAqozHmM=^y>* zAvgcx4jwSJb`Dbg+&A<Lt{EBL`L?&e_v|yzIP|c6sc6UVx+F??MMfOZmBI`pQeNJ5 zRW%`CRAzG3gjA)l@FcZ>E|mXdpiM4$f@-8v7_5*h6iPt|idv{i9-pPmwr;K*ID|&1 zMeej==wLlo0p!k3AfW(NY<b7+rIM+3{fTD<>Gv2W0l>hK*1KWD25Mt2<0S@%rF-xg zww&rMMmY%jvyVjFGz3Jhro7lp`>BeR8}&74h*;@f|BD(iy1ac*U<JBYSv*lFs6&Ml zzsjB^UGj@U5u&I{VZA&!DUvw<g_gw?F;8_UO9?rVNhDI5XOdu11yzrfYr2J0x;8Go zpeUy7=m1f9rye~)m1dl3NC^a^dND>QNlj!rXO5VS3?5W?uTEgJ)V$E$)AauL{?|=E z`Bm4l1A7Knxy2I2^V8cl-&Y&m_NupDvVIjil(UqY?leC;x%f}Eby=~Z>18kZ+c&@A zeWSc`v$AKl*3s13H88Y#V%OG>ee~leo_gx~efOnFW+DQHxPR%<bCoUfA_?}%ly({l z@n~!&I`QUaq*daC=vm6Bej@5<g^G{^aUxcfU>=c~7+@hyg;;Nvk)!_zh*tDKjOp9% zy7&I3h4!xAW$g1qhR+k5SRy^bR%;iWe<pWV;VJ=xl%$e)co-v)BY%#3#zjvl>}6G= zSahE8st`-><`K(gR`3-q>}ZLq!iAb@@9S(n>G-4n=Sx>iPmQ;*)0)>_{GzR=f7$Ng z`>wd^x}zWYR0f&|3XXU7VJb;y-4&ovPmH+3N3uIdV`qT?03ZNKL_t(|OwGndowXt6 z448LVXs5rQp5bdI^Gp?RWtg0t;ycSOd1G%D_s65%TS2&%jSvTO#tCNFyO=nPV2>O` z<FPzXi@_a@I8@@u`Y{#AWUjj^7U19(vq4O;(TBN05_q)MV|5Yzln#!gAUPX|x3zY% z^=~Kd2D9R~nH`;RcId|Th$Ur$!V%?%V0-#k0Vow(xB>=)TW`B#%Y$2bmL15VMJA5v z9Jw)m*a;8s>$9m=)CzJTp1AzNQ~Nd&^~?hPhmH;TDAdalxIDIuzSx~-Coa3ANma&` zK^3Bq6p+7+Q&J--<>KAmMsvn+lmp=qlMrX|jFkCLjYVRwvVqApQK!=8l4lq=H$B!g zJ+|-qwcXw3Q5W)x$|c>?Ra?7q`R%vgH#alMw}5!IBzgH+2?<K#+?>J7B`35B4NeH6 zh{1_yNZ?>5nda7u10!|CwV~8~u!yf)(R1M^_$*=;nx3R#V8VqfM#Pg=#k5jBP-<+E zLI#dC<O<WoD>n3Ra)bgVDB96uf>ue+CmtPjk)_u&O&dZ`A+EL*rb0v!r#eLaVgf8n zGqYohY$~KIK@gsl-cX{lvEQ>|y=N=dR{Vr8sNxn?cwEh4&|DiC8ATr&r}7paKHWCd z`K7=teNfG1sC!}?Z`u*Yu7LtRVKKJvVe9$_Tlo%{J%(GiP!MWB$w03u3qPbt1|}wx zE@OeMRavtmIjV>me?%0f?y)gLT}TQHGMA`*1;3;?F3j?Nfv@TW$5Lg`Jc$@r;Rser zFb3ZNqnU9P=xAR!^04)6QFY&a`?5RL&_MTj=RKsk=^>~(F}CnG&w29J?K`(@-geIe z58Qpv1DiH&+4A7dom=j^`;J?urnmqwFW1`I!H2v$ojMp`zF?5IZ<sk?sX@;`Unk@B z4n82;j)yUlZC+?w-rwEKr*ORk!4wEm{7cmoG4+a&%30b%G%Yrai!c_o7F^>63Z;&Q zVwzy&=2FiSI3a!;U#W8S1Z$--F>x~hFB7zSV{iedJ=rKs#!a{~L};DH4zkXpa59bH zOEOg>A^N0bNol<>S$pL3IiZ*UVk#+3%PT5NLCLC;i?NFCAIV<=SJaEuX%~FEg@zP8 zrJxbCSYc{Lj8IW6Jap+2^K2?|SI4Au*CKfZSU*WOM1xi6D4UOS8`_hNTVMp|vji8y z=4W%k1N52HmhMwxvXcM}pxhep5Otnu=;Kc~_IuyE@mt@x{Be&t4)1f8Q*9xW7kzBv zwa<R~>o0iGtHy^%pZv6^zv)eH>gj2k^073u?8U5#Tm?9%chEl|Lv59&Uj`>Wc%-2_ zdT^A5)bc^PbO!NiBvc!9Q{1Q(HPeTb3IQXbs73Yg=a2y6GWDzpqOL6X(-O4m@rkCB zPJYB!zxI`9JmcBdUwz&A=Re`UKlh1)4_-@~aq+)R!!E2C(~f>g*uHJs=;*G8u6!tW zC^M|K@{xPtVl|1X2r9!*txYDCs*zGaI9rjeO@ICu=N<Wwhn#xiX{Vib=6UCx@r`eM z^QSleV%zWT+V;Dj*1DIsFJHT2)qed$Txk2|S)<X`Ior|K-o0{g`TkQZ{2bZ2dwBEZ zSKfU2x2}E3tKRU4qYi(}d1qa8;kgfg_yKmLR9-5%h=14J_b^uK>h0(5pPi}MHIOS1 zLr8p@zM1|Jm9-cKnw*&)o0=Hjy=~jBU0b#eZ{0q-ZAWeAuG+|06B}4L_@Fc8#e$An zdv|+BFKYt2x_Udh2Rgf0Akf2SELxokW$gf4NX}1Avsdx-$jI(-zK}C9GBGwf&xZyl zM{De7#x7-cbhrpeD>}P-`E_+P4{yKohHJk6>)+gU<Pit(!j?{i8MR#gtxH0x6RTQ5 zdN-AyK?{yzx0(Dbs>;LzvmoTLVuRrmYj1sqj7K-K++pDruXyc3Q+MCMnijTOOMf{t zF}7p#UEJHe{<W`we|u*eZ9soQrMN8P83$ssGw^@UJKl8WIgjN<gO%&M_=GuQgVy%m z!Ic|!-8=lsS6%YuFMXT~Dpu9H@j}F)={b^94^^>S331iadCW`(5zaP(_)#%~rAfyg zRRJIbZBoTd21>_IA`r$Z113|DLLxkphwlh$2IPzv*B}pzO|iYFw=QT!yOy+W58Fu0 zl~i=aP^W?{RcnQNiHX+k&b4b-r`3ooBWa)~I7SL7nL-8AgncQp=H_dCeSM7eC)kTi z<AixpT6CNt%p<yXQ>yqwA>~|Z8D$`vx<%~*BsqbVfiwR}CoVm*3Vif}P2n9#F#=LY z13F;!{8Cy-f>EivXrCa5M@UJ{LWxJLk`l8ap?*Z7?jD)jLrW3ETP_fY6-26QnRvy; zY<X}J5bthjZMx(39dG;R_ceDd?_0LErLBt_AMRLpZ+~!R#{-8y{II|Nn?D7a2|pWe zv5F4to4w51?A*Dly`|~z{_Z(n_|i9jcl(3wJuAEVR&hOP?;03fx$p4(x4-|r?`LM& zuT#ZMydQ*nqcJE<BgE?RARrzQTMy8SKoKD2ff9~l>q(sCg;8RKQtVkuFcz>J1g_kT zxLF=O^Js~Cg!vs?x3~2yV=(76k(+OBT<4}H#&)h=x8e~Gf5;-q(DhKNwoa*1qB<!@ zrbu!TRszJv1Q|kePu|7{iC~`f`4SSK!NR&FolJ#J-;tI-f7V&2{LkmVHa#)k+c{vz zNsrguM4!LAx%;xquYAdipGwt$=_M^BqM)=ELqlM#T|v>>gBKy_{h31IZNhHIbO19~ z>qJC0^x=gtRu}Q9KsQC6o}Xf)U?xYoYo<F!5}&2!*%u-^tgY(O@dYgs1&X2(pfrz& zP&b*g1=^$tWgY0PUZ2@xh}~-F(sAAPmS%TDXl2~Z<<9TYwlN(LmEi~pd#*)o_l!3R z8j)g+MfgG^Rl@aVVc~}F|EM<8(%n0VKcEoXytAzCq!S;N$#BZms=_X3m52m|a=oyE z+3U0jvlwfD*q)ne?Rho8Oe{iozzrMs`FR3~wu{UQ-=eO$h4CW$cFbgr@Y;n|3O%9l zy#PU7H`VoWGC>xk>_EUFoyyVF3zIYBwfU*FYgguBxzq|)Vje(QzixHY+-=OUb@ciG z$_}V1p>@aQ3uiLDg{i7A+!_UDN2bs(F!V{0u$~1g;iagwVX}y(5=?HgIvgH&Cobhs z+R<tBGV1Wd5rwcha@G(Dk`7H6)M<OgPqzCb(Sd02BC~i>juj(CxoZwJa2f?*2xFft zrQne+TqO|pl^D{7tS7<i#61Vj%o1cD7-&*#{UMo%33b5arae|9Axb5TGAWFYvDY-$ zewr}xga%MWCB`8$+?1(E8{zE>{MO_Y-x`}Z_@DziI-1z&gbBqAkqQAYH4AnJk$Ulj z+!a|)e#Whj?`QJyNIsw%BY7xbg^k>`7urb_6-%UaAi|2kKZq>Dp+l$I3!G;{-5A7- zYA%805*CVsud~-Kclx!~@v&VvPkU=KyVmjrdRCaS^;=I*=bDvkn+{uBYk4R{=po0) zYfQ83*s=S;P229<wE6z~9=w0krU$p}*s*i_J=^cOb<!`-!GbC2uI_F=<;Vx0*mS`6 z6Z*R!dc?s~y)~u_TAG>jbdNAxm$r^f8bQ&pENA7kPgSK-IUY&*ilwE|l@(7oKM5x~ zin_(IW0s;M&>Bwab)Tc1kS9SoL7ynCLki{+N?S=hb2)U4rAR^rB$Z>f@QcA}G8J7? zTE)oQ3$!31!5_%yHS>6<bp`=}2#i;qbPq}$ZxMMhRw&nxd*>q|CRS5A3$1OJ;k76O zO!Ac&4aAqV3WtU)E4G$HN23-1f#Z>$OaxyVp|b?avI;VV1v=&o;|2$Cs9RWvpp^$d zue(J=>82zMq*_A5Zvc+CR$gs-viA7LKkmaH{KV(}>&s95^CzEj@?oyr;VCy|VRGxO zJ1>6STfXw8uh2WZ_~KVR{{?@=e9=@^&d{}{3LMRNhc1TFkYWg_R5WP&Nw*AVin<JH z0kY-m*XkgeR!}E00E+Rv`GY17NkkC-ON-}XL?YdXIo3j5QwmZP;9>`Fg6aIN73eP1 z#>N-+*>~0d{Lg>=&EGuld)M4><~fi5^rt^|>WN4C=@4(1p;c}O9kdlYhJWqa>whpi zGxP9=J;WA;wJ|5n9wrf9;fO^R^WrQ8k*NoyvMBjV&SIa1h3sQDgH^kF+Fty^KYjk+ z{pq%y6W_k->Mwou>(^cXgUS2vdEnlgALtzHUcPqantghQ)^xYCnZVHW+zOuB^sks5 zoSK-P*s*)p=CK`{e){7Fe)_!+yy5ll-uHm@r=NcO`RAQ=`l%<bTHeLTYRiMuKe_q0 zwVnYU<nfHBx3!(E+}X*ag)du-jZck?j<F(O+m2nEw~lVzHL+u7ZRhyH_;k%rWFl{C zt+kzx|J6EH)K)VY(BIYB+rbM1+@-a5GrQTwC=9(E3C>MTkB*IOn`UQ7rUNF&Ct324 z&uuasmK66e0Q2kWYaLqIZ5P<h=c8L&>F>IH&w@MbmT4{)yY9Z_rl0-tVGlV#TRJVI zvlL5WRTH`mMP@1^=UCeeD%gXL<RF=gG<@v_bE0!x;6+Ue=h&X&t#5qS=DRj`tlHQ$ zxOUb(D_HP2dH<%{o2GZa=}rGKIH+n~<+-hlXMkq!%{vwl=Mlkl?GcaI=WqY^ng9BM z&y29w`^x>PV*1<O{-LR5>wfs%8$b5(&;RY;JY{q=l4j~kWzvsF)Jk|~FI1%pDnO8# zTA&%Fsz^bp6H3*TKO^{DiRynsC)h5kXvyH%NQYZUXwF8qR56nyZ&_PngVoZc9QRC3 z@|u8LB97C2UL4F20(@lv13MVu2`t&1nJ{AqjLB6imJh8M%&yMz07*85TcOD@9j8dJ zm5%M(6sDbTZfk47bH*mK4;#(UR_M4tod6Ob4H-~%{8Cv9B0S(DQ(g`{@B&Kt_gFWh z$maPU<&#!5H7h0ZfjprcjnzX@R0wmV9g~zqjv!iAPS7pULXLvqnW@1es{qkn2de1S z#VOd8^y(zKs@Lf`ds%oD%tGF(0SW8CCL;x(@B*2Be4(qY>D8}&%h>4L;JW>~`<Am_ zgjT@^?6z;dqt-V4-uJwjt`A<be#`<I7#rL22oCJ#T4(P&-|?=458m%D|MHx-z4>)d ze9~Wz?Apxj6WjhX3*EPT?dashFTVGKOTYY;$36K;qZ5;gD`%ytTU8;UuXG;boYq%_ zjyZ()w<Jg;<|!o_q3WL@lfsl5gP>OfEK+=0yB2chNQQ%Tto!(nc1_&)&Q1@k8)CZ^ zMB#m6u-GGJc4YX(vrb(;B+V);$|WsLU5@0JcrrN5@VQWzZ8*+TICP{oh|JFMJSzf5 zNwD|<5=3brpnio<bDPecw*?u9HJyCQvCZ9WYzf=9Y<0j}c#om2qr0iQ_okbE^}wcG z2kbk9<dq<WVr8Cyb0}pT`2irG0%1Y8BI#nBoQxps)ZO8ZHye;kyI~VndUoJo%4pjY z-)RfhT_?`v&+ET~EP~!=wqqCraYEsx%;|r<4X6L5m(CG85pM&P;^+ldK_^d_N#I=3 zlqg&Ttrr#*>u?3391E=?M<WMPX*H#NUU%L1`Ibi~7e^|f#@7AA3<pj+{#ZLjZ`d15 zg5MxmBIGq9h5lYguoae5p|cd)97@WQe*pu;k^YvM8G6LvkdXjrBPwX!WA$Viw6jMg zL~@0cl5N5Ky0cj+;8oeAEGu5fG1+8L?Fh^yh2NlEDErKlT^d~?i-&#oVJDiIiSgk9 zIuoiY;^_f}Wj$s~gOjZ>Fs3TlB0x!)TSDnJN?c7tH(2CB1Xo)u^om@*K7rs2^?jI+ z-US4|q?EtvhKH2~xoSu?v?Np!(*X-*Osf?c8?a!Np4GcDm1t<FU4ymwh(Iw_(JzBx zEPDh`L5eKK8mz({h`Lfm3Npm9GIWdzjhqrJTN(o*awxZddy&^})G{!X+mfU^HZ~C> z+4#697ye76s2B)bmo9>nvduLNPv-301XG3wZ#+=FN<rih5xGR?SYG<qtN7uvW-6HU zxOw&h#9+$-B3TinehxZhLMfSbOaR5FP6`IykF$wh5*+g@Ox=71A87f3r(ofthTh0n zv!R87@D>VF)dDe3#g!sEv|5p_=HkZ{vaQy;thR1>|HBUJZ)!devJ8!xEg2iH?c6cE zb=!^yHgCHBzRkR_uzAatZCiJ3y63jvjj}i76rWSsb=rxyEbC)xzP+QftGl<mr>~D0 zh#r>c_O^ELnR})=Sd!osnGmmYZ57hw?JN6b<@X{J8=`^_5rt-41yr%T`lCjqjg52^ z``Oqmw9&fUd}>RvxO@X5puW!^tw2*0=rRFlHe9r$1~QW4(nHCSrnz93NCjd#(Zxue zR0ZJ)<+$*aicvT!ri^dAZdmSNZ`O+xf4@xlMgTDOu)Z~jkH^{5$a^J)&D0BOhe?GL z+C`^|t);Oh=~&u)AUq&GAyFeGYI!3R@@Nif;ZqtgK>Vojdgo4(a;w%pNsDB-2a@#S z#M-yCezPQ(qMW4-l3KCz&=E)O`|RgF>wWKh?^FK#FJJcJ7o2_esjPe9vnId&-5p>0 z$~V6H)o)CWPH#N&$k)H=b*G;Gh?yDNB=zsaYdTrU;vzATs`H2G(zMNs9M+ZsM+VRS zdo+@>q6V~d$(8z+>j(i>Au|-+95X8#0ufarv-m|jVdbfaQdFLWg^8*8!DYRl`t+w> z{GwNW<-b4om<u2O{&)ZLv!D5RW|=f7H>-jcab!oBoT+{6<DX_2bmlpyGva{|bc84} zl_OY{9Mu3tIxrThh(R+cKwOW?T_+!_?w*+7`!SMOHrVylKYR4k{^HTwwohJr?G0b~ z^4G7q_J=#~zv=G#e_d<uZ5mj+Y~_A^%Qp1%FXwGo!b0D`;Ij48>&M21w+!#RXJT~w zJ@@bY<bQtSlOOwh&rttar=R@9Cp__*Yp$Q&IoY}H@WJ-MyKdk5;I5s+4{qD_;P%>< z?M*v&EsRXEX0$e2#xv|e(^+d>(KFb~D*{Xb@ZuDFm<V7k6g??R1NaUXqW~UM@Okjz zVO|q3OpTAvOitE#gfctD@>zO+Iz?8FHL*ItwVf=Y>Sc)mYYo`ttGTU%Z4GI-TxRIu zc?*EAA6C;#jJ#`1z_#6U&%M4ES*#kPdeDegrRFSEYHNs%y+Of#sbhz0)QqD}rU%?F zfnk$_PkT&<K}`#6Eqm>CKmEkNf2!8Ctaosgt7vTRbGx_QH@D-yGtWQmDNi|fVq&hZ zmrDo39WRRZgSjyJ(5|_8dTNH}E@NX0w3lyv<ElIExsOkvwRR2V`rbaUe9gq}ZEtzY zzg&3!*=yGfG0hw&L?31I(F*M1I~GK-xF|X#6#v$lipEh5l~E8H2_V&D@u=ut;mIeS z2L$IjWc^HT<&P<rj8epS0mfI;aWtrCZLbP^m7-9~IN4FKjxJqWIo6dk2?<aoneiis zE{bKyQxhB3uJ7-{-EvzKG_hn}i6o5@hpHV$z3GsmI%{)XT`g>JwQ1Wn1aRud8(X{U zbbo0>l>jOweh6#oG+4DHn?BuVl5i`+3oPXC1*NknaKNf%LPRda3qx~5q5?3%ubwJc zb<os*J!@~)v0+`>B44B43%T%7s)~eCqF;_4pjZU2L)4`xXUk~~)#7q&X9hmm+uQQr zpa1S<mtNVmVq@RXnyi6j>@>Y~+a^Bt`GOby^|8kuJ~}?v(cR3}N{|kFyRldjSy;N= z{<qJ2{`kZ{|J~m`{z*@M;upVo)yVL+fff6(1AeWwYsHEUe5vJw|N4<fop8d6)vH;A zqadN9nvx@diIE5kMNCdY5Ko5Z#7!sEQ=B1S=UOh)QV2Z}Qhi1sEe~xK%gVC^ax|h> zQA>>*)yL>VTH6?q;bv*ZUS#NSYYP+SpL=SZf7nB+;MS=^Uw}m*3&@=HUYS3a=0P<N zH!LBKcVZLEESA<N*y>l877K-<X*tBXn-1K6#lw!+c+)R8%}-A^w{~ksX1rT@%V2PH z^MgPB(M<>KcLoTRFb$Ck(MD2;5@L=eq6<<7E9WYeF@S|hYj=h6fF??+LUq)z^CHX0 zo+E2smy}cl1t&-)luC72V*rGJ#Ra%Bj~RP}GILR71t;Q(R45e6#UTV+%Da>;%?u9q zw1%LturR!P;l>}`T<h-3zLi{B=6G+ecd##8_ZLe@HA*B>7q^}n^EMa-WY0sfe<N?H zd`dv2yMh20^$AG)nNRKbE+|*iLKiV~<ch?irPLt`DIRw(ydZ7b=RyV%s$wHWnNX=8 za?V`<gyfQogSH{?u{YYGPYxO(@QoCa{SVlH$wo(ar^!0oUax5i<qbxK<SF6;LCGR1 z{egdbkf=s^>7NzCoBMhI3yU~BUNi=AiE$}ljVnbYyk8=uz@iWkH~(Js4KkHn5*#3z zyQida52<9ijC&I*7k|<eU5Ul8A8|Y(SAtxXfm$TXY(hX4A{auI|6=Z>#4Y(H#xa5^ zukngsDJ+DF;F5xZj6$fPOu<Sv#oq8SD3Ta)cPK+YR-htVoqq#Un8Jv22!}<LRrt_< z=3+5BH95i6{Ln);S|{RZjnuAPD}RnD3{t|rsVZ`c#awN`CWY)9G3P4OR9@-rK`7)D zxriolyrK{<+$<m)T~f0h?m<9;ryZrwD2T$=W0Flm24u!rwTY=xv)BwGh|Knd<WZdt zKh*>HsL3f;r!bZVJF78~;N~sOgT1xo0|Ofm7-(ue0C+AA?AJ6pS=&84yLH>n2OhY8 zc6^xaRELLmjE{_sPK<6H*~vRy4u72CYG-8L-NReG471tIfMYigQP}jLjkl`!gd=;} zEbyjPq+({D>oiuz1IsL;YQ*Z+8m84%jaX;usz>wh9Dz~;j&>kKb4mb<RZ>Zo3xHut zziuiI=P*UkDe~-bk09}4+$uXDb+}SmO6qySm#|o>?A)bz<4!60Wj#+Ild+U@0}UC& zeUW0Fa?TAn%cF-1@W+B{ViXf%Gb1Dy5fp^93>uk57;L1q%}y|y65*>nqw%0BLzs}^ zSfNIAWeHjus}NR7aeL(|<aAW!t@BYNQe3YAsDR?4+5#wZy;*XSWnyaKWiR^&7EONi zqaT0i%U{R4Z7gDO^I}&N*Vga5;ps1Z#?$}u&j<RtXC`5yk$nCU4Hc27iYS_oT5TM~ zxe!fHA`9?bxzt37s)LaTorsxsOA-rU={5pxS;-{nlAr*HCflG}Sp~$5(pjfWt5gi) z!g%%6q>qe0@WHnobnrg!{O5N+?{EI;r$4#*t#7@guaB4FeDRWD4`>bIuY3K!{qh&L zopkz%#~gDwi-igw4I%fK6YllOFfVtC6;s8^4G!6rsA2)u(cZ}psK5N>Er0V5Z#w79 z(~f!6BiC){#>7K?oquxCSx<h#nZv^iH{AH+OTYe&Z(sS{&3FEK`_@~wxAfKqR;^ik zz`*i#t(`+1oda!j41=pz?sxbE%lJojj1F(zz5Twi-P^zRl^ehI<?HOR_<G;2xzGRe zN7!n{aqnC!dxzDUJ8PY*n)>=%`Ft1OW8qDKHuekXq$~mTc>xdam|d9VE9VnqyLV2H zk4%jFzQE+f=rrpe=&LanvnGC<pv`wxy9RiZp|iWEt7ib3E)Zzxa7n)|;yoGl%ZbjI z>fxy_O^gbmgN6-tmdc^?X&N5hm6yitbBhfdmbT{U%Zu5)X5_zus_YG$__qvc#HCr| z?7sSoEOSkh<1-h(>J7E|_THh@U0waWdeGXoFf-0-j63^=I{)PzZ<^vcS2H6W_M(J? zBoNtZwv)G2F%<KIjPranyY*e~c=Hn;_tc%+?q9u*aXH(1Ewpy@53bp7*ImDQ&1>KE ziBG(frDM#k*!8B-fJ-MPRf!|1r0bq*Mx5BQd>4H;zNQTWo+AJzB~cH1nL;nCj3*p% zK?}#AM8RU_NK)FI4G^?~>5Ugv#42Lu$?|TBS5x0*TdW^&?UXnveuTi{;l<^DZf2S# z$Or7V4=rnI3TpOC0^wyr@p=k=-mX&&Si{j?Bk>Fppv;h%-9~FO_hWuv2rsTw<Yd|k zv%-@;C<^8ZT1lwt;aJ8JP}VW1N$Zvf#r(Xx3G?LD6H#U{U)pK$mK#8<>{L>zvXV(g zqllb}b{!!W2=gjdhtLAzVNQ%<Zm4J~5(d(lrVKAL0veAgTG;GE8qiR;oy3^X#6(2~ z7H1dY^!eMi&A#@Mw=Z<A=wH6JsjU-QOw#S%vUzgHy@x*Rke9stANhU_702zYx6OL8 zLR#x)`(pS0`yYDOowvR8Wf$`u+;_k8bzk}FRU<n$cMq&=Y3p5>Yw76e>tDIg@cp-b z@B<%t^IKl;2F^;>(1=uANb4$joGUz7s2&ALSZkbqFPN1&PKhbWB`-y#7<LL9xn*oM znh=z@Ls&<lmH*<JEFc1^wX=)G>oF+i;sQ8F@7mJUeA+3;hh6;;0klU*R}AD*g{UMD z9}FwvQ4nwu7)T)oUolXoLV@B$iY@9?>^TY#>ohh*Y(9Q)#%U+r^wa-jvkx9?vr~Ze zTx;s<TQ>S&$5mI~@Z=|-5&y2pR4j^ca3LfvFJe{#VwB=K${#!zm<F9XMmd)wiWNUD zEQ%Nm5@522NPEz)2qBtU2D3r4n5Rg+2U1B?sMfAL>dB>rRzoAd5h<CCBnX8^D#U6@ z1Q)pN_PaMf@L>1KjSQ6l=V{8^`0(M!Y+SLN%XjhIn6N>r!LEv=0{?*M^{iAvRYygP zB@#me)mVGS2|^)B3&dY}`7PeJqfeFq03ZNKL_t(hDOYN7iKddrf4C*9G$YL(L7+O^ zEkV{r%FOUKRIoIO6avDJIdk+Z(3z>oCO;Txsq0W&M@_7Dz<%o&nr0?OcCwD3X`XK= zXxS(teNDp|8uV8M*G#fZ0#}KVlT9E{0G1!w#U=#~>u7~w7w#M#+p!M3!v!c_F;Jl} zfK>6BfI4~*-B3!(&89-}uOup3_<7Ww=`=v2f27RqT_6|}DP<9!)(S+WhwRl?dfI>} zX90`kbzYSMrLw~~GFWVIXi|YHSOs0m8pl#mg)~rd3;v$aVi#c}mBeccjQWW1LXYYY zxQ=oa0Fj`6iAb%E6Y0WA`{)q-P^+1DlP7EK&HL}auS2Lk(5VgQn!xgh3Bi=I6tF7^ z$5C@N_P1jB%rv(rxe`elIJHZZlV~Ohm5x=qNJ<`ZQulMLN#ssh#*HAyI<n`~y{9Ty zRM!QB2${lb{z6(+t^JH_D#|(!Rayo+u2Qz80v{)Fy@4+vc*XMy%RPegGCdu&p4F`z zR<AtvsFk@N!D0Ct*uvE8?8x}kD6?zB{C4l&HL`nnjGfHKM;_d{o%KVkB7*D!?_9b0 zS4U5mi*<X~uG?pV*Bj<$n%VVXZnnc0D|oifMF&_l;pzi#k}9W091zsXCJ$+C=?a$? z;JDp<G8hhknjOvKwgH2nvkq8A1gM2jFk}WH^Xj3I-XphO%DKvKz%40SEUjX^Ky7gy z#TyLMzaN%lFNqeoKg_9-i?vh&CXP&0PFo~{MCFO*!<@3%s;>1S5lvhnY39X{d=a4# zKBcI@6j0lOrJ*5^(SVgBBFQ@m?=`56G*@yOyb6JMCcK2N2&Afs=T;v%ns}FoeO%x0 z#+N<eiBG)r(r^9pm%kj@J=Wgcb?`w4pK{7cC!Bcf(DHV6<MeY!((vvkqbb|4_K=qD z&pCz)5Oi&_S_eV1*x0lPj56I%h*qhv$&^MyC1;4LbxaVQqMFnyz}QES+(p=m1<uh! z(YIWz>s3+CkPysQ+-prQed*sHdH7K;deMtN@{#|z;+m^3x%ib&c>MW2T@l*0THCyN z@@?;U_lH0Hncn`vOD?&%qrEmwGxnKxsTWW3<A7uwqIW}niV<AVib1ReZGr*W?TS4C zcnOMEss8(OU-<aHf2g^w`KU)e{P7oEbjBH{9C`R*oh`MV-sbbpeAJ`Qf7JLy?Pov! z)urF~_ElHj@XMe7YV(fUH#havdRKL=+;4EjKHdE*+uRaxpr^+*1+(im@(Hf-(d{EU zw@*)w@dRvoriaI1{p&a8)2wu_-7T&QpquElpR(&}@s5MRE1k^D?D)jU<iyzc_%M5M z&5VsMOzf&njk9-v&-l@V(Fi?scaIwfumM5OKzm0YG@IMHYiv)zd;uS8l%Nv`bRXQg zf#vJ?F_qnVE*acaXhi%dHp*}j%Qv%IKC=q^v{SKd<vW5q-+<5<5l2il0|o<v)fO!Z zo(b^*@|7XZv(qy}{oVik&mX+|SGTsTJg8@2%?x)-AkU6(d+@HN@oleu<Lmd`e}E+s zd0(AP#qA_rj-`llv%%mNym`wW%+1a0vv9^44}I!0p7QDc{PKAJP*?9N=4(;2w{O+d z^5Jj%&$qw$*bATd#IvR*y>2voM5$~z3Rf~q+$1`bJR@}oqftyH%uG5FOi~g;1R-bz ztmM_fy>e8TB^E+@W1Y5Lx|L<qFw-&=X1S!d(tIABQtm3DLbW>jDM#xSr*JSNUtL`W z(D1l0J2k^TlzjL208-H5$_yVmt?I%Iv`VF2L}G|wWBtVIQ57J|JkE-tL2j_P5Yp{= znKHx#KoX>+Ba@}22zE`Li!NoN-!ZazWFo63Z`g&*swm|#LzNXU0RbpjQV4rt3n&B| zaU-eEViHwRu%LuQVO5k6xC-Inq1ew{QtDR#lmLIsWy%7J_YQ^VB55ybgouFgCC+pT zy^vbb8Ps0+miIhx|MtOkM|O4$IFr`eG(9oAbNjuumZ^8X`>oyGO_NhGFLJ;!wkE<l zc@k7TuY^A3$$!E^k@vjoUtaa{S9SLcz4kS)eBG<wIJ)z}Wve@R)s)@P*!6I9Z20<b zUwO?Lr=5QOnPaS+QV?9CSg8^aC#*MUa-2nU{6zy!|Dh0SA#fFmW>!hvLe;tCm&z5T zR6yErOe=<lD3o+a2u8g^n6(n@m(bkV)fMNll#$T<^w`Ys)}tSJ=m7^Uj}UtvDyB-f zX#IeMh%xuJPC3^>I-dYWY1DSdJM9};L!sPugaQZ1>p&=@I5I;Cn?kL2);XuW`&}O& z8{OT}w^AkPc;}lsI{RuJeK&mXN38K;-+n_w!oA{2Hq4=bdxe5nvWfp*dBBT9HZX;= zuP&j1RcDie|BYfDvq8`ZnGH&IF?IUXd&9_rE#_As#WBn;bU7AUkfVW=r)tFa3I%2f z?DxL^liF-kXYW9Imj$kpwb{uNjz5|g+U@+($kVdwI1q$vD0?V;lUbLsu%wVO4tuI% zUh)H_d$5AQy#vxDovx)rXqlUupJRPiv4?E<uMA?UPN7r><Ul5$r;lEw84i`HC)z>5 z1p?uW>x_%|VtRpqbjhcUK%0bQ$jXh!(l#9I#lyb)t*0T4jqKnvM&5>SNsmuMB;4wn zk|@7L-gQwTldLoVf)LB8*kg%DfJ&ay@vp!(G_E_XRuuvVHx~#|mA%eAsaPn)ZDFRu zG)EbSy6k9fcFJY7pjRBJC9}{IEt&S)sW6SEDEh30fvX&}s@F(f=This@+Bgw6pVZ( zr@Rv3C!Qxuk`a0$7N~$$swM6r5(vJe0C?@jnyJwV?JK)-yHEAjL!D+6k!O*KbF|Tw zAqk>kex89P8}hALyQ<u>KtJ~tv2QM`R)jAF=Gt8@TRz#*Irzg*`79}mK)G!JLXqTI z3|Cl30Sc6aKPlzEK<N!~Aai~`y8zmQ7GQH@VUu+mmO>cF3&e_|b|Qn;6qf?kCtsl3 zIOLo$r?Dz0@QkA}s`0i>^dgf+CF%gpDJuuax`|fcm7R7+p{z6G(!iz(t;+{nR}A$m zY*-z6{9xhi410gfGl?@gHoklJ?qMblhKEOXPqOY~WO(a?o7oxhw(XlAXzpm+bl*Lf zedB9budBO{H-%Z%+sSfq*7=gv+RlbU^jhkT$m}137#Wl!22F++JC$9THGE`8W-66* zv8wuOLoZ*6lcWaK6q2PRz!kFD4R4Vwq2QHxNfkqj@_z`Rx=Eq(D+ppZ!b}RxCHPBu zER9QluXKe~=->mYl2FK!zbD~R%$SAdjpo?1fS8X7Vl46N`6)JIY0%js$<oXs8hCUx z(lp>}ak@~G1^;EoNWqfUkBC}W0{$3Zrr*WE3^vSC7HRCC=+3x7MP9oWMqhKaskw!R zA9e82k9s~YSK}Ed#%f0*Gqc=QMaRMrO1z3mz59L*xA{e2=_>{QSj7ia-nhdz?^ZRn za623s?I-G2lM1JjUE@_khGYSUoU{@eN|-9-P;CibAU#OPivb(Up`74kk&db2Zh1Hk z>hAG{3m<dxkw<>*;!7^M{L*hd^DqDIHT&&%^wE!8yJjVm8h6}z=g)rjtKB2Jdiwj{ z_knjEb=3a6GL*U~V#Vb(u0l%Rviu=|#+7dlw6LT!7t^rmLhPXCre~)QIq;y%zxlZv zZn);M%dfifitoJkHJ4DZeC<Bxoqz7*A9v9S#~rtPSrc3CpLpDnr<`!)+#6qX>unEy z`>LzH_SJ9S_|sob+<E83UA?uwl>;mMXnAMv3bq7m>tYwwq284TtvY~u&VyCf3o!Yr zsO93t5+m9>*Yhd9-#j%n!tPd+eCw8%Nmw8-J;kaLUmoR`JN2fv_JzI`EL-aCWg7xt zJ?LOF!q#?guAAGu155q-Y5^ZLaORO2ApOb)VYOKY^fDR>pEL(I@UrZDJ9g43m@aT0 z73)xfk2w6H+>S`o2@Iakm7SvUO_0(%i5rqB4<sd43B6g8Y%1pGtmfxu+S@vBy6M(` zfB#2n-2>dN@a2U7@PUX2XSUyU+-b)??HNyIr<w3qda6rWsa)lNNGSWp7Xy8}%i7pv z?X|Cc**Cv=<<|ReUw?3KGdoK15=BeL!0P>(wSB|u-f{Nnr*?L?dHsN}qal632`0$7 zHjOr-6t<A+j6IB1p<zK~F+b{A7(*tnNErlBW9X9bXhzAZ2#_ZN=w1Zu2hbJDv}SFo zU<FMWaVWrN{d}=W`wi-Vx+Knx+X9>G0%Y~nX-UINgEx3w+*o?lG<Wd92XS=|lB|e$ zQ6xjmuz|U$C>ir8I$*3-p&TjZYs;4naxcmPb=P9sJwgHHpim~bLRMcRhbqDc^d-%W zM=}WyFfzcea3LazBywirfwOf{4+tQW3aH9Wjuu-ASe5O0DtrPc0};iG)PY<=p~6H} zV`8dyaH^u5k`Y2`p7}aG5gpAemu_MeXSvBvTNGZE5NU|a{qQ96n(zGTKmOytTlzM1 z^{<>|162TLr*>?)r#80zInVuzlTJQ#!dFlk(As}VnJEGLe!o|(!T7UfOuqgN&m0@w z@`;cA_dmVhrI)<^4Tl`{&|7bLV6cBxb4Ryz*xs>h)rKvjyWan=A2|BBqucnd%A!EV z_*Vm)g)%Zqi91-&Gy0h@umP)7pTK~@y<UOknSZ=gnJg_VjFAz81*vc<QROcb?4`q8 z5160LojfmnhK`prTyT>23uY(II_u;mtEeSYWDnVr{G&(qveBB#=VT%#RXOCFU*ILv zN@xTzAX!m?r1hIqp<GM^oV%fu^@yX67+Sq-*XXW6F6UMY&`nKkUF|(Xx88d9ZMScF z=#gtBV1A(xk)<dL`4)o`*$bc!?zt2-AR}&txd(}Y(|~J`2){;Zk!6A0tF&H!sY;L< z<QkDu%N4Vt+V4>kJA}2#(ol3MImNY?mX>&t$a;wCNnU&HjkUI}j*f13U7MTdy2<qE zNhcm#IhzBcNUmYwN!`jfhe`zvPM+CI0uWWsqNJ6KAyh#18J?xmOr=0MXtLpp0DM!T zavX$Rqz2$#oGPZ|_VT>}TJM~rwoLz5Qn_uE)H6>Hc%-kBlpaj!5@HVz^0TWYN=dr* zhGvV*?T=TlT(M$#-`1Twxh^cUW$#b6)U0>9z{WN(h}6N2f08V2YFmjoj{anwY&qvT zrDR250T+Xf%&M`^;*l6;gb3{<(gy?9Ui8f&)a#&<Ua<0uf=IwaSU5lgN|f+OoW+6) z?HyI&3j{@BME`8XnIUwTBqF3O*k3Ffaz*rv_G6Fgs#G3NsA91|C1;UU%CSXQROS+{ zQlZeyBMg|8P>dz_lGP}nSW)>k)g~t<w2K26Gs?q&;6phO$Q47HYy@iz0M$S$zj(CM zEcEBxV)7lU^&9sY=<je1;-X|eD`Ln%6-Ml60iA5+ptiUnmvHxut#x;`vr2VzgiTR# zC+!W-hKAauszBvX+;Ay^M%s9m1w3iD4j07`NK=v%)IvMN>kOzV;bZXP<!Dv13LN~^ z0jfoe)M?y`5qH^}f)dNTmMMN7zl45_z;)J{`^dlyGS?YKTWl|`b%G;l<inq-4@S$( z=J&KV^Yzv>t9ut}s~uT$F=5NtIi6!pPfSenEtgIA-}SxkUpvs#H9s@9dCOKd7}6Q@ z0vNLce5;l3CiL)TaW5Mju<oF{tD~D2g#8RmGe6!4)<qdc(@~@zk-_UQ4;iq8@<e_P z${hn@0&_`HXIe~~rZlmFP#rC*LMdFDs%Y1<{`eWdY>Ea%%n$LxbZ?ZUJR0%Ht?Y}T z%BoJ}Lomt;f@*YH^^5YJoNxeS(6z8ZoFf><vDG3AD2L<X8LCO-U}-%p%_wmJ3w2<K z6zZHCnKmiAGX`f?K?zl<)mF(u4nd+yYd7iOjt4TS+TzXPv$x9B^gNFUb6d%$oNPi| zij*Tu!7)z;nNqR4pt`;Pq~*%VbY+YP6yLyw$ZY6=br}qi5u;IJ1A!FY9DFSrNehI4 zb>xb6X+p&aR+m~5Jjf^kE?P!!ME=xCbWisNQkW|?ylbP=3+pzl{`ki~boEs~_|S*{ z{idJZ^wqClDh_69Yv-G#kAKROU-XZEci0hYrY3Q9?&e^s9xyDda}48XA=9+~hCtGa zo;Gnu(pCUR_8caEbZoS@uld|_&p7}5)2C<Nc<U|qeEYI1zIy35Kl|xVefHxYW1jES zGfuhiF&Cb3`Y9U^SjR2-fd{Sm`;AZi$G?B-UH9z1_PaNH`77W4?)5(yzWuJ@mY!PY zVDrH0p=JB`FI(5qH^eKbJd&b!p;cpchNawFv8G^pij4z&UtoT0w2A#`r^lEna4M3U z?v^%YhT3_o(8GR&tWV<T-T{2BEUk|l-R7A&?rAY1rl;ai1Q*e&*f{1UgK?ANY0Zf4 z_M<=;x0Z9FMAu+Gz$QknMrHZ{XJF(-2|vhb+j7Z}5F%i|;L*8rkAiMw^3%YE@RU{l zNJ#}Dg<}lV(saqim(-?f9fPY`aKQ>8zd|@Oxqb89%^eGGf7_d(fT84W!=k#aXT-9J zA!gCX+Lc@J5$+-ehT7ly){Fo8S%0^4`+b9}4`hAC%tCWVNB_Xu{WsnD^LM}dLvMNO z3r5Gv)<Y7}a4`fzsUX4Z93!|=m;8E30V(+*Q6X{C5joWn772<YA&tNv7Aa*KHS9f` zDS9~sAl_R^m~0HfZV}a!Pwzv$vvH(iooS0=E2%mLK$dXg$UQoF)3hAEak%e3v^ZXh zD+5n1ICLJA3R1+ky2Xq<bW~WM&c}%+*9$n6R9m)eNKN>PL_0>5k>0?GP_DL$g9!Qt z2o(D20)<F6n|Z9lPgd4LxWTjh5GVY}k6;nUvLcdpB1PJeycm+$p1F090=U;vykHcq zt3+}vN(jpcQzhkzP!(4((Jfcrdh^oKN*^m$SdlJDL}rp&A~hI`>E1lZf9WgUz~?-M zR&3zq0*u9X&qj7{nc2B%pMzFk{MwiDN+gtNg)UXg)d5zR*UpUDK&{P8EMb<}zqh~b zrS0wAAN<fK-u&jb9{!MrFHDaQZ+~#vn*HWz>9y95uKuAl`><#8M?UiJFMZWZ#>e<p zY9v!TeZi{}GCK0H01v>?+zg*)Y1fI*=wjLlU1AX6Lc+S#5v7!Wj#|k>h~;3lHqyW^ zE!7&9S^318-Hy=@&ij&ftjY?i+0o%0EQ&ezoHL;Fe;?oq;SzXD*?S8U3WK((N;ooL zO>SfW!6GvF4}Nh;l3tQi!a+2T3(HotA9vitzJ2NSvojN|9ZtSDAI63R14Fxa-E;l* zH$L=;$1Ms`F|Wi@nx!HZrpmHsSPHfXuMzj4T#(3Y1l4H3lmfC!ZUbl$f|w>3;P+ut z_y_ZUpJRje?~^GqH;xVFg-9bmh#a(Y^c)#q`03An&bkaX3}Xe&?EE;-?b`afANKGg zy;LDFE*H^5qj)DiSXrqMuEZ&cr9zTZB&m>>mZgqD8&7C!b8|sbHe^_~w9-u2+8w8f zZS0qkrSh2unI(}TQ7@mQVp!wuhDgXEXkwymC1&AcT_m$;B4e2V6F*Jg>9tdVuvR@R z(jdn~-#~4j4QsbPxMh57XUEVopl$64nrlvFk|K??MM<H@5D+l^nDt?)S8a_0sR*qE zRUZ<=7ilD9@jQ1uCCUgwbg2-LligThM%uo}6Fn?(4HE%!-4c_|iX*`i7Ew8$$W<*p zGb)K43W2Fp03}rFWx_`Ss2Go~!D!H4ni*c=%2Psts*aJw-qFI81w?8gT^L(AVg)mt z_C8bs0)n)5pse;nHM&cyC`Jnka0$g?9<@?EH%0nGQ3==JW1v%f?1PsLS<N&y&IV6@ zw_chWzd**$sFj|Oyz)m)(V>O(Tt|CLe{av0`Ef>c8AlgYqyR{&&m1&vNTOU4iXAx8 zVY*ocD+m}Kr)?vEO-Xx71l-DoVg<3Bs!~O<ojbIpzzqdb^_8mO6Yiy=WGo=V(1uh9 zs@KM9Fe_XGh_KchZpXv``@iC6j=F3nWJgBT%j164Og7g=21)9fSt>I-_^?Y)2SfP2 z&f4m=Ll8akp@+TrAD{BT1Ke|r4euV^#YSQ~cCz4L_vjcK+&;K_tDhZJLI&5|{dBf< zcCpTY9mPA`RlJ8NUoK}`Q$D8akXn;wqD^kf0VZc{LP1&=aeF5qv1~$A4Ma)rbu45` zW$jheNCK0pt}=oWu5MD805=+(aQ_E(izFHp#j2?6aUxgh9t#&a=rq2s!7aG9cTijk zMU7L(lR`*mDZ^6g7EhpyikI0vX-I*pwi$TYL=p}H8e-k5bJ3y<kpl*3gD>(GF>G?) zvqL4?#l@v0u~b-0B(!~5st79VW)n_XAuML@pF))pyTk$3nO%cgG=d@&Xza>lkZ~oD zIQEYQpGpOpvY3%%bSoScOn#D*OC>3=g{(PMraY4HU`z^CMir@YBS|T(3RGBAS5%1; zl1DWVrJ_*GjXEGrHL)&_(lgIJ;mos7*tBWe?RVTcvU`L@^vjnmKVbiTR;}p=hwr#^ zlMP9cRWa%p<q896L5zbsFNRV*W(7bXBv|mZ4&vDUzD-*m_b1PL;u9}C^^}tj+^_%0 zBlbD+h-ba@#m{<h^X@CYbIljO_~omwyZ(xAUCsvu4%)c!!bhKf{&{CV>QP5^b=B6d z?tj{oAN`kqe&N;~Q*1`~rLSLl?R7umn+Dsr-L|WL-QcnftzCnyo&5+r&A#DG42+M~ zCPtYD;$<Y1U`Wx-8vz|X&CAxZi69$sb@4%k4%$B(2XG_KtYLi5jb|A>v@kV-L*(Ox zc37zts8qLmF>CJ0#6m|PQJ8FxoXcBV<q56U^U4A4LaU?n(k_^^;zKWNAvwhEpgaoE z$wERWk4>Q~p34JqP#T*_(8Gt;rq3Bq9f+O+c5<1XU0{awgCF?!U;pUmwf?pJ%U93y z-Y(nN)@FBXzppm3<%O?${^3WiW7k-EzS2jk5jCv>-Z|J4*cz3^DpX4zZo86Za(w=A zk2~YD=bw4a6+i0i9_s8{!3;2W)O`ahCzq}J&__P?*vDV^$VVK+EBsO`;;I1CA*3K| zZA4N5!dKbjYe7k7@io%G2wX_1Yx2^%lbbRQ0ELS!UnYfiN{v><g_OBwAcq-nr@n}J zGe$e%qBGmfM=MdAWoT3z^{G9GMso4Q$4)%hVm3g#m1#(>;xp5eoqfHlR<CjdmB$a^ z1slx@N8QSH5#HE8Hh}_EJffiVahV0agrGmpPIM|o`LM4YP}V$YNVqp=?^;m2nZ;R5 zGygR?Gc}DTx8sRwr8!^>u1{&`7@X>|S`CFUAkmHt{GE_KJUm2>b)$eCLX`|g#1$c6 zMhqkx!FcIKAh%dhVvw>nNx;=CnV0`KWH1<B<YJ>Y;)`IEval$4ncEEo_ur?jFexnC z%<-^52=fp2x4iL<|8~nSZtGopXjg9^+i!zEJ3Tf^qnO|Q_P4*Ye~2wPVb08e9O$%s z$%OvFAN5QpMvdZJbL^rF+lk59*S-GliT&#bKK{F3|F)y2WA~0tJwq$oy9Zc|#++-< z;96du{Mr}3cGAfwA9KR7SzY2C3bZjBbrDr`fs9o+lg(S2_B2T60}M0F)kf(=qqA)^ z#>x@9QCvJC)mTqxnqqm0Xx@+mQVW-0Ci4Tc*@Xu;f)xAd(WYk>rnwtjvtiA{A9mOh zU}%eBgDDkNFKe9ZwJAStBnrz4HjJ$qwtZ=Jgrh@vs<73>timHqilbBDiYl)rcqUEg z>@!aL_E)bSAKN|HF^JuoTiUT!Pxrt`bJyipUi-Yid0Zu^loEwQov_Rr@vtfkt0Sc) zQ@8|@jj%NSzh^c|jVw`ek9-q#QJ0d=wUm;E@C~d&sYnPEt++vZuSg?Vs-%!FM~V!A zXyg}~WYfvmI2L|)>z()Adw=(`1NpR>Gdpx@lcR?odBFM&gN}rQ7}|-~YbsPtR7@IV z>kK&?s)~-abBJ5jD@y<<L4)_LxOHHPn_iLTpX)IX9B3yvOJNUiRFSNqkw}C?x_2HM zLL_g~<l<_!O#<ht+6QT)k}W~FG6bLtvj5DLm<yg)c@Sxc6=dT?M)J~ZYYT@Qyx&iM zc=z<gNEh=1G-~fUtKOR%LmN1MI5#*b2bHQqm4IY9RpOv*WmFqVkvzP@T%fu=0Gpd{ z^GhMJ@cyNuB_xHwp+og(1Lno*LZ#wEDfQ#P19efJ%fH^p%LQ(}>!`*Bfq+Lu4(g#; zmCVoxpKwlDWQhPkJG~Iu>k34B$w0vi6vPaX+Z(T_PAXlRD~a?-%Z12g&NAZV(j|Hk zrO*j6MFXS+rLCB#k9B}L>?{Z?pJro~#R_hCL>;?wyh<^x0JPN!B$J{G6Ej?hrw=@6 z|H3cxzv<iP!{W9;3Qe(f<*1-sd42Y-9c_cWTQfM&SDW9AWL$dcHW5j*#SGb38B$HD zSyrbPD<^*$?y>ZPy3DO*C4WUyjxmk6#8oAAi481p3`;)GE<7`0@<A<8=|^R2B_xX& zkpM|RhLF?3rM|UkAzq0HKXaPea3@`lgKnmUBAW8(z0paA{5zo%Uban0lhhW)O(Dkz z&fB?gd%ak(qHFb<-dfXY918L*6lN2Isqxvd@rhldBfO!oi?6729AQ($F?L4WwfzCE z&(sF@gssdCw6u2cUIP1$bJM`b%~*rf*~=1yc0M!9hi3^6;TRjw`3ZG~Us?fHN*UKu zwgmO8$CsRAcGG{PJV<rKMHpk%%%6sewIq_NkQSkimBf;R`LUjeOY$4hpjW)A6J^P* zd@Ft|4e-nDk;nytE7Dqy001BWNkl<Zh$VGI&ek1LTD$gcr78nfhpGdUNwg}`P3m$M zA_c6-U(6fLgHn7gWrYOSC%Y*q=!8nDxRFJVvbEb2<1RY4F!p6WTXo?;W~tI5tz-%^ z`cpD%EE7gWcnRXNdO~z0;`)~ehK%SSfNoK#rQi{!hzUFpp(;UyQHUytlTdO+lcM-h z$8!V5cuZDB%Bk?;2wm}uMTkZU>%-R|=*cZ`+-&d3ZH!~zHEUO{-*=_GhmxrYkCCuX zghcRMwTir|r;tixF=rW6Ibxf|(XzDXMvm5Gufz#1@N;d=E#JN7yH|ee(w2_a6OKFP zv5&dn^ixkc<j@0Gtm=RAlOOwMPkHS2;koZ#cf&Wn@y)BRzWROddguGz`HmH<*F5Gi z7e4kek2&U1$E;Y^wQQi{Po8k*lb>|P@JQ{4Kl<4hKL7P^UH;wezq_l}-dF2hUSnTF z7K1RFX9&*(;J{Efp_dgzJ?-s1O>DR2%K{xh@SAn}fZ`d*of|zo!Rn$nRuwf>ag`?D zs#JYb(N@FdA0UAFOC-f!J}X4hmQ>wFjE!lhr+8U?ZomEa<uVY<+Dl5KKy!{k#lnI0 zXp16>CvR2oXiUxhqE#5olGj|j`;L46_5B~_$xrvts`j3Kb_%2aogCXf`M_NV9C^^+ zKmV_JSwMC;GW{sMJ_8qSN5T;gk-4&jV^KSj!3v(tWxxHO-*EDYkKVQAUf%R*Z}0Q| zt)*jV^?qCK9DdEkZ@TnrALsF4+4%yQ8)8eYXl0}*gWMQ7B_*?dRE8>!9L1IhQMYO- zszXG1vqDL5b1a3vCk~}f1t_IfP&5_K%nFo`Q1V#Wd8OIe>52B9ZXV%NMf5jbzpV>> zh9Di;SO=U~l0t>DEPL(#D+Y$TB6KVmQ9zMP<xxmzksT5z52aLM4$T>tEYuF(xPNVS zbbMqBg<PW8#aEH@{)}_7j6!VP@Xde-(tN9UdSdJ5dlx2#pYpV)c6T@_D0%+*+0B6z zMn&~-jhrAC2|V(PPzq)cC9WY6;Tol-J}Qh5E*K(NmXuijq*9^A($<7QdZAnZg)<c4 z!dYu48+A2X9Wjt5LRzGVM>#d+Xv!wVn1;4q>uGQP(GPEZ_j^CYJ4$_n%TbEC7fdp| zYxB&mO;7%_3(q_Mc-}X%UNh{}ve2{DI#{II9V@yQeY%&_I+D*#*Dk)~@A<CtM?d%< ztv!Q$%53|V`_}K<0}AtLt?aG3YW>!GhTr)w@BZXxKgCWc5z!Ycu?{*xANd^-GUlP? zc>$Hx3J458E>el1oca|LMAM?bRx5u2&@BN>j}+M{Bu#c~Xd(Y;YLL>5lz75@@wVBy zX`l7;ijotT%#$@wj*l%&4xfC|*@Jz>7{Mr{OLdg^-p3+cYKaH?+)^qeoH!tWaoMuV zh6~4w9Gn}HQH($y%Sp6gB!eozXjDVfnWvr9+}S!gy1RKfo4~OB8wJhn9bL_x{k%56 zecRN^6&*npB?NP*$kj6{R!PdHo?o2{bn=(b*sE|aoF&jpaB##Wsoz5(W3OV8b?$pX zHvki<6ta4k(D*&<lCdY7qHV#f>mE1`(rT`K@B24$N6QL3`geLPx)&Dmo^agJ?QPaV zRYMK&tlpw#Y5GOydL|xV^D6Q-aQ2AoVIzgmF%YBvRWn<4-u;m?D+D8_h6Bpe-a)4; zW+8%~cXV}<&bLd`nt`tah*~HVA<2)sa)=tXs{}OgvI%LMsgIR(;>r}tkzPHZdU>ts z&_fTdEnG1%x_iK>4Mp_|iZt{y&h<)HZqOheF6IH36eJAE&pC3@FTt2l7b```<8oI8 zX3Cg1sydj`(C&3&6-|jlF<cW@i~?u(2Xe(!iBL1*lq`g&Q8Tpm{#gkj!;d&A<u*yD zW4@S?TiQ!B(xxFAwU%fAww&v_Rzi?xtXNZa6;Yv+9fcz!=}Lxl{YCI4B<qS<5F-@{ zLWq~TS=GP5Hk=HOdF7Z(to>dkOjJ>}Vx3}Q@gP&sErh-%G0d@c73nr^JjiE5icN(< z(7vBeKZ9h`b&(=}6wO7!r%SM695pc1&vl0V{;QQ(aKn574{Kvps&R^at(H`fHeu6y zzGA=tC5A7T0Vzdx@EY+%#H;>F5we7fCsg1bnmXpbi19LZQtTKg0u^bL(YlBzoY20o zNdr-~V!Kox%9c6zWXq|TrC3Rk6sHl2gG!uS31P=b=mitGXqzs=EX|F*N<u8M0LG=c ztB0>4^sQLcS8G~VII*I9dU}3xe0qFha&%;L7wZj}EZD_*17{9)Zr!>0{%KYmFge}E z8sl~r{<0HsPjBx)cV9Qh-d?WwJ>F&_0j*of^oAuuFA;xHk49`M<dV$2qI=S4<z6kz zinVbukoF4ey%7Jm<Q`H6Fl;Jbb~MhkXu_DC%C8qygNZ!}kWvE29r0$8j&YRFBIAZ4 zXWc#(#Ztr(Ox&u1ksJwHgClUr>N4EG7ie98wn{b+J3~JX;b50Z?F{-uhfz&X05oRr zDKV7Oc;@<)&0aZe6m~%6ZdpKJya!W@i~xg7EJEb2tMqYpAX4@|GO9ui=k^gJ*(iXF z^qfGz&*wz4R}hAx=`NjxRTbftuL?^dVPFYAQA1ds#EQwHO}$tGi-gj*sIE7Ab$i$g z!JgYl*fNucOtxy8H<x@g0f`YRQzz&l5E{8eyi#8=P(Jb~MD!_4WkkMN1U1G~MbNrT z+^UaH@I}AYAN}YjlfygS_@>uC;~9T?&3CT++NIyR@`|gj|L*k|W8MDyoqqb6jL=Uy z>9}QsEswwGv_E;wY0UH8{EOePQNh>0dD$mE`KeF*$0yo)dQUm&)JH%1eC8AmJ8W%# zZ_~MF9DUx|$FODT6<1vQ(f|0&cdq(j`_KXVA9Gey=W^bhXOzpFUL{Uuze(~TPadUH zb=IJ(K)9e{4~)QQgVv1>aYEHW6}+W#5;Rp=gXZ@7j8|gU_-4uGi2ekPFPxUwoFQhR zmPaN`KRdzKq+1pqdgS3u)*wL4s+AS3gjkiRla$4us{&|KmLU(4ql^_`-^ATMSCa1b z+G{U<)7*Hib#U3hvNhZX;h*z!lfzr?t}Tqb<*onL(b>fJFQsB5aIgZZy8~F2X=VBd z-zbnWvT}jrX$cL4ondh-9^D*pz=~JD`bDpM)tkq6uNYd@HQ&tRJ4WU!d)FTL(;xo) zL;v>K7r*c?Mn}cR<M293YZ8Q3EC1_Gt2bMcGUN$Ja?)<iPH`MHaH1=Gj-Ci5-5_da z%9X$hr5rOBC`UkwMpi|e7)4f;5IlHc_vy8_-+J%p&P~016ux7?@iEnjm9U70cS0SB zf(Ieo+|22b5jOVRf8Rsdn3rl*WZVtTrApDQYD&l?r_zN;QT7I#D5vJ;u?fES{>YcT z=7k^s#Q$u)?>D>gn)VL1=XBXiTc?|Dy3qz6#Y-ftTbP-e8k-o~KF=0n)KF_}?V2?V zhG9E3owp8<LhW_&a!t|FczcwRFaHF6Db;}x+J~$Nn!-9zNqDTV5V-)`A)t&QeM6!Z zk&+EcpaBeQDA?~3s21rY1dJ?m;^8v0(CI8(5)086r&L~CFEp{e4?tejas{9WkokEY zCy;*GD_+YeYjD-tmiDgcsoA!+=82JQBirsCT-p1Yi(lb>G;mFwRU%u#5XJZDBE4WK zvT`%XaLu!wCEfZ=^IP8df(P!q{aatVqPcxwdiw*rx_bIo?ZYE-8e@BRf8VNgn{U7K zBOm_gGoJo5KC;ceeG1pq#J6+kTwvkcobAr;lW(rFUm{s-p$b2AZ>DRC2XO-*=~6Y? z!=N3BX$cZ|lm;-J-p42jL4^u9X)}PZs<bd#`9K!4nT1B^IyW~pwsT=-<brcf4x-2< z*aaZ9xKc61=%uugO9_No#zJ){Wc&~Eh-<|$9C!Uq#3E@gY7&&fF2YG(SvlsR5x%Rq zR76W{<Hj{d9Dcwrf4kKUtJ_-XqbOo6Iv+dSzWFyl`svRvIQLOOm2?$;KT<E*8-TRH zbp+0cQc_hUj!>bgj>YO#fDi{k-8-fVi?Mo69X7}fz3ZjY3C`~$Hb97AuF&yVCs;*( z4{?tS6MJOTQ+f`6@%M%AUi$++*~7|RZa1m5$;l}exSVpz2?E<(4SEgCtwVh(d5uH- zl1%lhdmx1sl$@$Sj`32k7}LrOsao4DL4q88I5<B)J;TO0GL>|l%%10pC7D0~#~a-? z+N|NKAa!KDDtvNx9o;B3FT`aGqf))1Ni5~$Cz5nzFelxa{gGy@)iOaaJ2tY*(SUSq zKB75B^RYxhkS;$`g*>oAM>novi3iDE+qpxbz1b?@;VyJR!$9m!Xu^&k&H~fRU^m`H z514sSl?){8K8>4K)RAM#Awla!293}(=`E&?E%Efhv46!E*(7Fb^(9Up#ahX9Ok{A; zbL=S-y#__XY>AQOT=-UC(g}aFDOD6<%Fj~OuX;U&3OD#+T>gYLuV71|9=Ko#8e++p zq2_7A$*n;z_=-aij4FdE_6CBqPG48K0!bGxECqDh^UkKV)($%800(d0PgCG!N=s;@ zT&3`2$wkTNVmvyeLh#nwa`r05W4V@;P%IQiWM~s|q!GJF4I|~Gu}D^0q~4W0SV4$t zN@t!S$eJv+s|*k#W?GB|q^Cc6-!1uMNVlR{$VCM5qF!VZxz0<`qGy=Rv1hp#LNB-= z<iR9(+6-cVAdnHQE*lTk(UTPeB8H$Cb#QpEm>C1`ypz5RZx9oT97{!VPNU-58>6^C zV*5Z>|3GKcy1|9ohN296BJweXnemyisfl4fr7*H<$M8<(4R-C~yG2_!-NT9uF5_$f z$>M^sv1wiyp0uiDRt`o8WYo=5GRpCfWG@Bzy|}ccRj!|fg0`&cXDOfmg?vMrM&$Px z?V*JgfLq{@;jYtF2o-_7dDV+6s6CT=09$trYJls%&|egc(lS&AE?QbjUB+Lm_9By< z;snKktYDLrhL~`+Y?I*^7m^K7_<)*`FI9nvc_fO5gey)ZC54r4DG!eD0pXZ#j@;0Y zLS#_j^c|IEc)3KN5iXU-fR%j76%Uud9$}F#*>DSb1A-KMlUJ!2iAzpOEE7sO_|qVj zRmmt2jsRirRf_qOs-Kpx?LIvN&-zPa6;}--tPo+XI9e&mL<-Y%9$tqk!J};Lm9Kow zbywdoK0dW#^{U4`?r|$uwms=d=RfJm=WpM(aN~_X{>Ha1`}XCRefAR{|Li9|#*>PZ zPde_r^Ugiz?9(<Lyy57h4?p^t!(RG|7u<2z&daa3;;Uc%`gPY{`<=@#Yiesf>G)$G z`?w39^^Cvh>*vdd3r~3LsZV_3sW14)w|(T_zQlI{dIx$YXQ@kmWnDl_qUmDw)C#&f zU81C3YKt;e#7-uPbEu!SopC`3dV}jSV&~$55(faL9PM>YF3h>HVXnw@Q<>1BLzx)e z`M~(D`wl*2|3eQsXl@$E0T~e>US~nYrS?f@p0*e}yzBgdwhki#dA_JQKQYih^yUA# z_J>zrSL<CjuyWs86Aux%PR;Eaeqe6beUJOI$DVTPQ4<qc&jz+^ZB050ff%)iIB-Q~ zvq_ZPm<U=bRU03l|Ep*J*%$xkE5H2Zy}kX*T3J2W)I8hNvTVhM$=%!D`OXhsc>Y-j z9K3p#-QcxT#8#91doXa0iYlPC`fAFE5G_~*2k3f|C@nd-5?Rb&0$^r?7>Q6t?o#~) zCAFiCE6x>DMd8Z#p7;FoUp(!3H~;)jmZEj{uITAs*4Ea^_jGcHf~1O2u4#_lSh+Vd zH9o#$Z2JSvb7QBUaw1#h^M<Ugj9m>iZl$UgC6Df)^s^+9M%63Lb3&A6hABPW?H6DC z++Y9d_DjF=^%G7yVdt(Lciw%^_~wamx-$IBg?3<a9o2ifdfOj<*gk*qgulM^*4zH` zlb?C(n_vHvpZ?(O|NPc<>w5Ss2<@D^YG5&5+W4aVv|$O0Vl1&LexWgis0=J>1APe& zQpD<&E_Og+2(m`4&|?9J+0OtFLQ<Cy=ZbKhWoZPKTNEQ%UD`DyC2di#>&DcNnFVZW zadRT2sC9PM{`GyIy!pnTcdpnUcV$+ThBH4iKC=D(+W3xFz3okF_Z?twLPl%YRH;HL zLl!v6kY>RyNAhJNjSA=6q+U4EQ8>lc{NWG1=LM}V`N>ayeeeC-c5S`8dtjiYqt8d2 z&AffHd~9^|i=Y0l%P#%K*w{Ezmo%#^)GDSbJqC=+O)jJB=B5t5<wwutj8wKR!4OW` z)-4p<384X$R=d?(PgJM|SHv5(3<R(mOM@Cx1v*nY0SoywDY`KWII??3M|bmyCma*N z#e?_zgdD14{Zt3C%z8q6-dqR|YfM?;#e_@Tmu`_P;6Mjv(HFp0pU7S!CUOmxs$3Qp zIy#z8KmEjC{^Gx8rpNfqjK%?WzNxFbe|VwwiYu;Tf<VY6p`z8u**o1RSQ2T#gslZt zq>(mDDF2IW1)W3#x#TP!DS%EP5y6*ITLk;RiZxJ|a$6d2Q2B$IjZz{3pkbxkZyFh^ z{rJZ>HFxx~{tj`OhMbz%-O|y1%+W`2??=B^c|xI}{`Js^l38pL>(q<YeebZCqYxp` zpu+P7T~ZJnh@qmfCT7qO7?+||?m<lg$teWtg`7J&yXZAtBcqc$@h4*HDHPI|o0f#; zu&5HlPFo;7IE}?CV^Ua#7Mq(7eH>I<WXPz<f&1@UYg^!XBvy^IfLL5QF`H+|#`^X( z^<<Ts2CPDv#vs$%eY$dTDlughX^jZLv?c4GS@P^-)RGw;of~mVqHZ*A`xPbP7EF(j zl@3H{lNrpV?Rin=`3jv9{h#@QhH(X7YAt#oqFe+){xFeb$w|7DnV0`Yk`y6&B&IOY z6j>ags|cmlk2shTw8oWCf+3c4gA%DKpjLq}E0EM(Ap%u=YGR6Al~91vMb`?x;>*V( z`Fakj0%jrxds*(7njNu6dj`7Ku3w!^@&pbJB0Igsj2oySR;p4RinuwkQC|jywc7IK z%W&7Zg=wCLMgmDSf?`B>Wiq#tOHm6)b4jrUVBV8siZ9oOl8fZBj}~?0(i3a%SO7ZG zEKU+&ataLD<cn=rP#NBH98xqd0p2kgfQ*C{lGFvoVsk85EB$-nqNCaeQ5x#eu+S7) zGKy4!0;EYY+yWyh$Y>3b<smsP(&gHtbZNH@^9bgnAKItaHkWH?>Qps@hxXR)j<$hX z_de^EtD>4Xx?|#CVtj(P68H+E?<kB<{Px#(q<KL@xj8L{Jrcj4y*KzG1hGF-*y>A= zVN>p0g<RsYlBmRhKm<3dkTYj536oO}fe%+~;7|!Vb~^?QP}pEjis=tERGJm%U=<Vp zK95o^6$LAxA-S|lOSYgTR!?&lkxF7vZ5^6Op>>?JD0$jxzlBsj&J!x2<roxcS8W?Y zx(WoS+YIH^Mtb^Q8FHmJ1KmE)_RYec;v6QO^Q6pwL-?g1asmz5%4|ATZWwfV3Z$)I z+RY5{l6FQlILcs7$~Z3u$cF}{QCvQT0__QnWKxC72<lv5gpeWSLiu`u`{O|j^D2y^ z+-9<Yp|jxIA<`r1lVlB6iR<&R_?|Ve$We1LsO8UbUPJ^}a}<tMKKDQj(_3m6J@&$% z{rKmb?%iB#Z8`VC$DMoDsq8^`%E>3KUDI*id5>ZkH$8XpFMn~%<yU;?^2@Kd`nv0` zxcrJ*d)JW<edyyK^O*C`J^P^#V;TO?bD#C(e|YXwHa)QGo0nbwm9KsChd=ni_19f7 zGP>j9SHFnyG|hizzUf)de(Fa)_W7-w?(7|0*Rs&X7Ue|}yC7B76Kvf6E4h}i!i&^` z&@&L~1NL%`UD76EU$mqbQGFrPMi?lOS$Nn_vK<X~CwM3KW%E4Wotm2%o0=MCqr~x% z9phs=rpAYB6I+|+M_>3)uW0XNNgMMFtUA{82t^f1nuKj3hBvQVkW(V>a4SIaRswb_ zW|Dwcs^0hh_wlv`&oEoNhp2(p*7@1d?PFW-?pogS>es%Ux2#jkAcQ5V*qqp{!v<o* z^2!B>GX*4>VWl+tt2wm`W4l_v!&iITTVH?CqyK!@=6hG|KiJBrrx3ikeZ~3%H{bfR z*Ie?J|N6{(-Tnb4PXFaEMuUP{sUkIiCZwdAEDQWEO)OcJs>!U(ELIhjL_rat9t&OT z)=2z50yrrqd|@bIN1LW>ax4b1B6&tOTidWt&zJw_laGAVnY(uG9N)HUa$8%iolj== zwskR0z*5Ar+8-Ou&9Ys=^u+Ac`26&)zW$cy{?oIc^W3M7PlRBpzFg-D+j2zXv_3dv zPYl!u_B+-BBNR5`nw{Obv*niG{jS#5{GT6t->Oxen>O#d?bbVQyW`HSTetZ&rk2`J zU;o;*tM}h;zy0=Kw{rO)d-3vh(hDy<<M}Um#kaox&7a?N%NySKx{Drv!UXT#*v9kK z6&_=hmau49<+4;DW2On^)HoJ+j>XvlPy>oN>A0#}GJ>6h#TA5Uq7^z?gHdG_+`2sa z4CDe@VH8M+)7C{o#8e_R$ZAfzDFZbqAblL(sFrkm+y}J$?v_n&dfR(yUCa8HuXiOC zn+P;D?;hDcIlSqFvrhc;r#_K6l=KbiBL&CSRIZU?H+?k?!j{iefs2sHgOqEK_zV@B zxc%z~-?3xo*gOB_1E2W!&urg1uyWl-79{e{W^+sD(6SZVM|SPrzH{T@`>{JR!*}k( zUG0c4?nbP>#<_24ZrQeZ$31u7-MqkC-*Q`+VNDwSbrTyZ#_%4<h_&%8Y+*w(Gf_?i z9V<30CNYcPQ$5P<^ysyK@o8#ctw&g-2|(M2CL`O9I_9wb_Fq|0|DTRXEp3|;FLD`) zxyl`7EX*sEZR`T8bxUDfGEB%-ru5p8&<s0SASGqcb>`1I_lys`?^9zVyW4wK79%hi z?da~SwfBDKn(s}`zNo{Eo(qO&@C$A^o2D?ib#DSl$Vz(PDx88*hpzA!PeLhLpf$UX zQ2&>(2US__9SW_|GeCF`2*s-eq-YOOK`Q}@CB7J`i`RewvM{c4ut8cgJy1qgx7~Kn zrhB*ctUjDwXc2%%qT{1GkJz~1e)}v_B+xSolZ^5y3xD-!Azi$$#EWE&V_lv`h7uRZ z^bO{toVs?l@k#^C^m$u}?SdsQtgI=lD-snxG)k;Qh!YZTZMR-#-Cu@a0g|hBfmC`; zkPJ(W38#(i#l1@TOvNlm11ZZ@k`xWeJ}73u7<w+W=WA=%GQZq8Ha1M7;wH^3s6m6x zQs|tZhbub<_ay6zsRU$Sm(IomOSy8$y^tsE4Wl}kLla&QYGX3f+Q^-o7|Mh6LY5jz zd$ao}OoR?b0Les?6e(AU5#g)5;L(Yc(Vm@P@Y12k2ARooTohe&V9Fe1O3?mU(m_i5 zHYrl2T9JhuM-13QctWP49JwYA3n=6lY%*2JIE*8?kMIR<loKu5$vhS_C*_a}VNysq zzc9`o1Q?I*vCt?oaV$a>9BIocC-G6h+x}#L&ai-&4c8pFa@jx^*^U_nvX3Rf)khof zLtgx#)VwO2?J>|{urQbv1oQ4p<6k&vu%fj1(J0g-RAf?HS@}~wUh-!d4&IWhLMg#& zv3s3V1DgU}rOrWGF-e|UTb80KJGC7iX2VL3xMzuQSA<{rev)NMVtJ;fq6rC~qhKDb z6kVtVb{8R+@wl(dxMPAWMT<`AKvZDKnr*iLFpx0}ZOXF{URu4cp`dg|WClY>Xj*K< z%L`M6F;8*3aG{7fj;NIl5mSHkKrKx@ZEgL%ZOv=?L1(U;(f7@V9QKa){6`t1NOSKX zGX>tGtP=ST!IDR*A}yj7@IbQ%!ID(6iY`W@Q#qC6B2#0Fso?E(P~D1vXMU<}PT?5$ zi{WDDNLfgT$bWKxHyXqe@z}^M^a9W*4U5W1#Z0AsLx?DVRyX|Ztf;cO1BfV<(#$-E zl+WSpmkR?xbZRQuZc)^TQ^?^mKF`5j=s{(&M<7`!QWf41=`PiMrBtd~C29?5o>F5v zZFmMGG$br3i;P4H=MMDIday`Yq#b>$f~3hQXHi3LPc+rj8hdC_C{_64p@>JU5XB;q zbZD+zmo$=tPntw<qKFhLMPzKhRnMqX3sx{V#7dl_DwuMUMFcDM_tU0lpLNQ~$DMrH z<=1}wo8S1s_kZxoPkic=pZG*iU+*cW9Dl*N=bUxs=?5OT^5~-vIqK*`Uh=Z%-TT1k z_rCYTOE3M#Raag8=GVXB&9A@sfP)Ua@G%#hckWro9(&B1wS#~8jHf*7*-v@k!LjdM zf9(;6AFP+i+DCsIHmqXp02`Ff&rK~fx6-#Lzcq$jjw?vUD)A~~@sYaNq*A-Uh~o1B z&;!DFNrzC;V0l9#F|PL+w=xe>?7)_Cd~9WWitnvV@acr%$+4YmZQeAot2R5vr!&}i zbYP(SkV94;al|oCeB7hYI{Spt37w67l_3Rf8A7^n^%~`!dfp<$S*k0l2H!Ja0-hI; z*V@wZ$xnUu{yQJ+UA<55;M#oguxWl~a@Y1vwejt*c-`yw*|2<c)GMvD^xS%j(CKkd z#y`|L-*8MP4Fp*(g!VN9bjNZ0BQVD_w{X%4hduXip7zlXeRg=qs=<}}<nFVzqjP!B zs{OD0)-_-F;#Gh8r)P~%MB11~siA_JC0YE-a?&NlZIq2a4IYcskCAr~I!J{^MWIf{ z8V|4}^h%Oc8GV5Fj-^GUvcpt=EqaA%Y)-~ce)5CeTkn6;lm7JC&wlzBKL5oZ{OITR zr9;5#001BWNkl<ZKd@zV_oSahv3pW(XtuSrb#--(*T&B{^Q4dd``cHpsExA7th}Fr zSk|h5jph`VMQ3Rg7cBBCE1+I1x!^HH(7bKyuFVf_-GATpg9GiIt<47=u>7C{R$S2Z zC?yD?(%9@u7(X|&1?k+>Z1Y7IoqpOGKX~@DU;2$pzwsQV&945lSH1dW%T{zwO?nZ9 zN%esot5^Qo*}6|KugclO_!U246td2~L`jhubp(has;-n(6K$X+tAU`#1zF__d@8=c zLrYsPN)o72o3@S8F?sot3W7T>rE1xu5Jx7>qvp<qSH1f63zN0}eKxQF9lz!3J~ur! z{NO#cw)xk;;ng6r$lpmi+gt8HB9#3fbpd;?CU}ltK;nKEKE8@2@gkTG1qGgSu3Fjm zy4Sz*+VB0~w%^=2+TGjNzsB7K7Fs*I2YZ*T9=ZQ_7o2m>YhLrr-J|wLJdP_Apv8`s z-n-1#`g<2X_nB*7__u${rxse6JAgJ^nAM<^H7T5Enkc4(nAyRVMqn70I?)i7SmYPO zDxLw97z&kKP9iFUJ%~ZHIFy|k*$n6W-2K$pS!bM9R1euG8%qDjLmU8Gaz}w%Iojv1 zv~5l4dk5^V&W;QO3W}sfO2CCQtAv!M1CErqNLAGIsG}b~v~q}BuR#}$w^=jDpN}2> z;@7v`cI(!M9M0@U1zqY&l8so2a1<zsVyPm1axGg74Vg+-gHTECRl11w{}QWc7FtV> z3Rr>$u!R507{=<QRY6_vM!rp}4p!ikVP=)|4u{&uh8(ya{qTo3;U=9u{l3oA+%!Ek zR+}6<_0;2;8rE})-vk=&%B>NXR$Y3xVp1h7oIE9%Ay$>-R4RdtP|}Zy;6yc6@ZvSR zSIjnRZXGI3zEU)ubDadxp-~aVg~$-F4!|A+9qnw_%Pf*DO&x4i@PVMcACPf8>C}VR z#eK;M3p63ae$yXhyu&Zd(pAZh(n5se(6Y`AYggZL>#nJp@r90lV5<gN7c4?RqmY+z z6o*KuXX%BgMce|HYqvR7w15kwtPBI3Yb?E^DCh|(Nz@fXJUg)T_%N~3!=VyQ8U}T2 zU^TJfD3uVn0$e&Gh<Y&!6LCOLGR{VcVIE>0WglGxsSt#yLS;o$8p)DMGh<b{kQD@? zRY)`)WmqC5d_oNXr2#;{Hf2=F42hNuqxQh;Yr$u)+^e<1khS3SEl>?1vJBG9$!JLv zGs}j=%Bh*DjT;Z-!<ysc>AkeJC14S4r51_dcjZB&v{gX@6$7v7v-3?ugF|34K@bFq zR1ArRb4k~c$dX1SNCh1aU`aYgaH_`9YF+5W;4HPMYE0cKf}TJOMK6z9qlhU2!9w86 z6(kuHhkbDLQP~x8(y8c`JTllDA%zgB{`6LH@Jy~9q6!c;g{H=;XG+mAn;8+5tEAOO zE?Ec+9@==83VDUNQWhE&vj`DBW;YBFJl!V|Vbfq;7{SQg#^|sCJf7%G;W*F@XQkOQ zB>e|7m1@rdQ&px>X(hP?sx>qGbrwqs{+FzJ(Vpi&#GO1uva4lOU~myCX3!FZn6uO@ zc2PE<D;sMgGO>wcn%tsGDqOTzEar)j%u4nWFJuY{>W_ZPep=^X$_~OM&i#mjIChb7 zNLj)1wg%z~+;wx);`^vP(iCH!1Vs*@3Pc0X2=b#ZRB)PVZc>s7xeyt*`rQRPEOR8+ z>LHYJ?Gfn`iTNOi3>XkBCDviosDXp`78>!?7|=pPv3H4=qr!_^7!|hCG~_5T&6Xft z;+nO9B)1M-70R*512ESZkepbd?)WdvK+9FK4pzv7O))q$q-K8fv$7geNF_C9sghu7 zpEDE2#<_iMx#;nyKJE#p?i!xH`KLd-?6S+Ry!x7NUv~Akzj;+_NBbimdGz_`p7WTC z9{rFbRvoZ!-~RiY{g;1wHZOwReDg0ayX>;Bef?Yi`oVwu!23S9Y|XmIUijGa&O7U( z3r}9Zy7y0?d;wa-H`EOo*;sV2ziV`ObYXUqH3(RiawVWrl%<l90ftvZ^|Z650#(QR zD=(@P1VbRAPGUpD8GbZ#oDN5(=d;LrhKb_Y$?=()(UI}dsj-pC@!g}NJ8Dymt$89j z#dJV(SKGepR~~ra;YS>C@ZpDVJoKQ0c%Cq{te3akF}B~5gqx2!5yDG<dd4!@5aYRd zm{%q*%x0*kYFG^l)Cf349zQPp`lml@>RG{)Ql7h@QEP2>WY@N-9h;9i>DXsJ`!9I1 zts&B^qPT=hKT|e!M@M+J%&})a<1xOD!^_FOZep9Zwsiq{WkuN3Z0+SQf8jSSyL|KJ zyL<b3TRWG{*d??Mu3A4jyy^9C{Fl?tI%#O2laK7Emqe61gO^HvEu31iASxA)l1))E zSSAQTvLdQJIx(uSRBa(q*@#w%u~anzix~^r*=Z_mX`{sQdJz|H`k%B5jEzC?h0lHN z^O)~Xo_OwgXB~3RS+C-;(_MEz_`BQg*s)^=FPrg3Uw2p6%9YDEY}nA!*8SMWJ!A8O z53rPdjG9+g^)OOSrPko5=P@AF7?gTp^kqneW}ciJ#LyFQGagg7)wXQiIx@WTVMiX) z*WXrNDFr_?%8)kXL4y~aVR|7*-gp1xSHFG*9J;!?C&q?9^NG)W|9d}q)7#&8`WX+K z97h!1nwPb{Y$KKzUWTOF5=z(s2@nw`N^YNKX<-z2RV2ib?6w1dLA@eaAyzmMtx#ft zPGK0TF*wn=<O(Mp^Gh(IR9d8RQiVc&AH302^AcWM3x_}mt5xpe$sB|9bTohQzc0J~ zitF1~?%zMSmTjR~D%0FNyKC1bKIie0OJ4l&ha51*@(QSeBPP_9!36~6GQd$EA(I}S zUXzG5R9LBUeewScO=WJrv%Bp*?|b`&=R9%yrd!)Px_PhBCRVErtXMrUG5moK|ND85 zKJ%c1_eTNm>f;BFUz|XmZ<(E&nru@G8wt-Pq7=*#fjsI(8D*&$dI>w4U=M-OSG7GF zKq>}RCqvPJ6ebPD5;Y%!@D!H-EqstyrkOT5_v|yxMgeO;+Nto63(?;@=rsA2l7%U@ zy_KcLldVjk<n@&;)&XUU^gOu{jo?ve=n%pZpAycJ`hN<WnpP}tJMQR*Uw+k3_?~TR zSEqFja&t@Xz|hWJcU}G6>yAA9iK0~C^;qNFC?f~i6t0BWvP2_rJ%8!B6f8YfrG?5; z+Dp;?Pw_qQszed3QL;p&MqX53Lc3AWh%6~wbd!dx@s+5pA*dp{!E3I)o-H)myE^eP zu0TFnU6?-ejFag@0WUU6t07_C;w0o7Oe7>D1WS4^_fYD+L!Cm=64!$?`|aV4`XTkp z$79ONDO{TDOnr?|S832H5oD-HEpq7Y>|o~+zG6V3P;Sqn6LJ;AzocFyCuXrHvLyq& zLpnihDdu@XD)u_3aoA1Ou?slmT7_AOwuOTZ+;GdUe>^iW($TeQ*11Th#xSG(3A=(y z$ss`6Sz$^!Jjqv33E3Ih5|dRu(xkw<#?myDG6*!MHm+xB4dM|(M45|PQ8r03Qu9z% zRR%k<&m~qhD+F5~^t@eVf<`+?P})H=5lDM`30P=Rl`CccBT-_O@k^dS>ZSlvEWsjj z)Hwmla^pySxyx6WDtzb$Ph5qA9GQ7MREb7`)GQ<9OjKvh^p4#*tnG7V*{N=l4V<A+ zdUzFyU}3K&2~guUyNn90X-PMj(IrpMvQTsS&_fT>B&9$dL9<IYs;MZ*&Vy3Zg+m0n zSfl}WM<JMfU~m8o??>V6zcm9)PNpSPY$F|LIIcxDhLjXRRn^?c!@WK$bj}5pNaPDm zOU)pNsz1~-6ci?0g^;TPf&v-f6XKgC5`rLOLVF4t4(<pT`s9GI3Kp%0M{6xkKav%B zs(LTN*+R@H5{j#2P%}onBtxuZYLjN)r4YcrMphC?P5I@8iiAWY%YQ@(-9ns<^d(ik zPz9K?<_i+1v^q=FREh9PZy!iA+fN{(S@sID{QX?@sTb7G1#U3~8VN!jy?V?;&L3tK z;3bD8q?Y6wtyA19n<R>bd`bW-_N&Y4z|71-Inrqg304}F5?}<&ug*=tl3%#ittA!m z>t-fqi{T_;3k}w4F<EF@;Sqvt2Cnmr@GuV55yT2r8svJ%Tc{^uqR_WW$x_Nh1PVXl zw6JAlG|<d0`d1Y#kbZ}oW&9>IflfOu*?uJCr3I|ljY75H2O4jZPicR9@CvO(_9Dj& zb)h0(!KefWLwU=8Q8J7xHS4?q5~QME;w7Uxa!L>{I_I<$C5n||%1X_+q^?X52_8|9 zIUi#y3AD}}0Vy7=PmeFK>aDAz?Ud7wJMHx2Up0R5FMsu0W(uyl{E8cI{K<_seE$t^ ze8XXf9`xu(U%+yKV;=dio}SwA$3FD<;~#p->t1~Ky`$g0?20db@k^in>}Nmm(GOm7 z$*W%ds^`;Ky?@c<cmgT+B(zK7rq)j)MTodjU`!$qm87MrszTb_e|t4mc^(WhRja*N z4TpQ_Gj>tlM^YOUWr4uR)ab-GUsK&RJGOg{_XTD~^9XRht*dqYih=$1-S5zY_B;HD zLzq9_=fHi}uU^J>acpV^J@!233qd?xo|u~BStM+|;Br)|(wA5DWYxnl0e?f3EbK=j z0T91}BT)jQ3>H<-u#&82aP@}fwm!D@Mwx|~@!@Uv)!L`u{FaOP4leIaiA=|v*RXX4 zl~p!d7^`dw(`YMUbAhmH#dRw)Asp=4Wo>qTXt3q2Z@T2!Py4%_Tkcu4Z+~l38#}OZ z@4RZ=#s}~C=^Nho&ma20YiCBIK+GC`RsfOWtchxV`72DRA(;yoJ!1^*6Em3)VEGT} zDqRpl2FEBYB%=<dV`Y?Oi00+aEG^GqN&u(waZz$wTWWXRHFCujSFKyS@~ksYfdXFD z*<L$z<LbjUu9o7G04lY!@A~CG{P9iq+`s+6gO)QkVBCky*egphbvdOXxV%3ahojR0 zAp2nySzv=oZe4GIP1x_hpFP;-4?1vv7fS<C588oB42tyV2}5ef&dGPY<6r;dW1k-0 zzMVbYpYVjoEnBwg)1Upy9k<-^)TjLAKfK`Y{^9x0<y+trvo0l|PIdUIa$>H^W=>Vb zLo^4HW1m!6>PPXTi!v%fNg1tYYkNr*i25-(aj5D#V|g+;RQ9RkH7HR~s?rkUmMD(a zz?Swobm)3Nd-$OeAWk1}USQ3|mMvo!U-Fh(=V1TP>Lxbn;MJJs8mk9Jw%l|0(GU6C zzkT-Pl*IInxPrcd@ww@@<ritx#%l|~rIHQ^c)vFiQsTyebRw2IwX!fZHFx|mhrRfv zFL>vh-@9|m{VUgYDUeFE4lG~2{jM!<dGkMi`oBIfIzHV}t>mEFf<>N2z?V0socPdt zB3F%t2H{*y3qS}%WL&9SC@OP)k+L2W$A1nMX}XZhCB<xc28d(WAq8V^4s3KfJ2N`G zeeJ$$k2rjzW(F=l4PvYu3%`nMGC3^qQ9-kA4(>AXI&Wjcwel(#d!`^3ULE$4#i&qq zWg3wpe3+AG5D0nCKKs<mzx{odYxQ^cYk%(_7CO87Yb{;h{N`1E`!`R_BvL{7BgcxM zGy_o-EWiM(Kvcg7V?J4nP^Dy#jJ*m44~p$(ud)jJ|Mk?M@`pr`*dNPZ!e|jhYNSfA zPV}ibmIXNRe2o{Fe*BZ4*E)Hxs*AQTH#0vyKGHSN^~gs)G?Rcq$016EqbQ+xlo9@l z?p2?yL1bU7VN7_#(zw|rz1SPX+uO?LKeQ(NGJfNIc-{l9Q!KRhJf`mA^o{(Ej?RwO z4iH%~B<l#QZx*?%G(wSHL6EX!)lVhuh!6d8*<jca_*_o3WHCj^03FDt!;d)hn_s(O zd~8?GawhyWxYlugkeLZ-Aq_0j>o09X4S|%<F(=YQAbWgz51WMnHbqV-ws&w5v;QvR zUAruoyb0D&NA86Z`H6v2D5Td5Y`qdgpU2_3M#<0rQlDNz3$0MoC{inZj!=fe!pmHh ztb`UYatLD?sYZ|lGD*$6kWAXzk~=>OVb3`%IQw#N3V~U)UBx*-Wb5pOZ$-bs8wOJ| zyfVn=t$jxnSSwVI3w#(BVwy{F5rT@4l`d2VL-;9X85ZUk1nOrppx8sM{%V8R<`9X? zhzb=;kUirwlB&uC!60WQpT$ZRxheEqY9OHD;}t=$02XkLW^g0UkuolHC8yY}f{YcV zmokJA$NvOrB0IhwO{0!Omw-^<6*z{l7R=_9GhIm)0koJsSW$+GU=D-@FIYh{=}pnd zt6D;lL(?pV=vnxLB6yTHt~?3=ne<|CNh_5xunC-sjwPwy{uve}EoI4txSFJ_07kK( zSOkISD6sl?r8A^y1ho(=cHJYRUQiX4WD!oWge|-(z&#Qfk%Uhr+7j4GokjY_>Lg2U zA-^X?BUSLl2@+1_Z&4gg&TNSAwm(lE2=#MGiC)K&q5puG9W*jTkOKcHEr`T3!zW50 zaWMcSke~qdf{Lsa97{0X5~kFRWD5%)yy3Et;fw2(yQfola!iiMRAm^641M{LO*5|; zC%0l~wS%idvS1*C`wEB;R9;sAXrq4h!<V?L=IVsBEhdzpQJ1~2m4IaycqG1fHlAQ^ z5vu^2jLc*P-!$<;siH?wfI>8R=18gn5Xru}P|(H|KrpMyUZfdG!VX?VQZPbL66qmI zzDYF3=yDU<tDe$ie9V-Jx!fDiPl3lhWb-k{9Dc&_hrRNpFZkW>ZoT62%f55fHNW`z zuio{p554Q1|8~&92VHRfIgh>Q{9})M2oEs!Ti^HB&wAqXp8bS-@7wv6uYCE)BM(*> z7<pF!Be}#2Sm;aj*o!HHHDEcl<*HeQp|{65Y*mV=)3s_1pKc|Wmy=ofz_#Ij4rZE< zn9WX%%}ni{oEV*&;BzNCrY3jSCdZi@cI`!X`|_c_eGXo|@!&@udH7*R9)9S42kg6Q z^<aMwleG%S>RJ|>A(HPA@J&PQ<2`OA1|#uwy1J7JAaXjnRH^!?23M5esie0bszr8` z;oJyxh`MV_XZO&W?!M)7K4U?Z+2Nh{HH~li+kbravBw=gJUr*F3|=QN2pCY4qmS$O z#ezC;WQjrKhHt|zFCZv7^U{7@PhjhGYIfnm$DH`sKRN%aU%F!Vz{<X%^{k6#ihwT~ zv@GA}zdrS)$6fU3Q%^f)mT#yPta6Qv4r!**wlo%_VN0n1<%s$vp;+oqzI9eFwR1Kv zK!K&Y%WX$qWdn^OZ%KUgkO#HiljL;?9H=OgKAnDrd3xr8_=wkcuD))3Wb#k{<gv?# zQWZA&((sjwDr*Fym~7+02VDEz8-9DsUA=?Lnf>AO@4&Ol-Qd>6z!<>d#yp)vdKbnQ z`frFKHLfQg0@Kh7{k`44yZv4|vbF11m1?iFq&z4b^pY4w+cY=5^3@mf0{rq-YhLow z7yQ+8p0Q#5O4h2p@)a+C?(<&q-K(#E|G)g}72m%0g)e=<`Hw!9E^2OW+K1BFpB%X~ zy$_`LIk!ojSm}QFJB_Ad1H%YdL<sZ9>zzOmTskQgPWkj*V<kX25z{3WXR2oxxB_3u zga%9t0Xum`B`k_Uycm%z<%TfwuxWYi6)$_|t}VlT>kjSdT~2Md^k;5r`-AuKjQkC6 zcuhxVjqe-rq(#%GLWqIP<Q<1fI!vPpiY7&L5PXVdRpHO*=gx(8Mhq?a9~)ozr+@mJ zZ-4vBU;X^<-CgX8$jd$q@0+{32PT%UzTv8CzxvgyANRO3CMNA6`9u6HgQKzgo}<?{ zdrOUwHlgaU$BS&bMlG~l>=NVZ17^&EElSK3rFGLGBKew8YXw_cfkl2Zq{aG*nTguu z@TsR<IM`2%2|_6ZF=h~X?|^iBbzinMH-saEN5z?kV@`<i*)94g3RD%4I7#FI4ik7> z<WWVJ<WL6vGfq39)-gLiHasx27A&fdN@?%lGgbpX{L#%@w@$8I)wxJz@7SI^Dwa!m zl(^O^pbdn2WGQe(J*FiN$WjgV=KcR;`u7<YQTEEO%U5*zLm)w@4ym{zPyubO{qonh z-*eBVo)rhRw01cMH#0spHhRoM4qCsaXHjxpE4B$8P*s?do<_n9|LdpXiFIEHPGupW zO0ptQA?dkvkj-uF<!uzQy;yp=<Y6!O+UeDccNLWCD7^qxRIBWELR<S(dSE4YI8Vrk zCW4Y&6s4hnxfX-K)M*qZNlVa;y>BnAwJ2R|B5;tBJp7P@=u<{Uwyv(Rc``!|5V-Q# zM?pr~4whtLNF!@l38s0cje>Yqx&(xG976|P20IXPa4^p@GjG*kkcY+K%(F;6cW<g$ zmk8q!FIU~7vb@u;$fmlyS9Ob>(uir2`CzsKYXt|e^cuuK=k+T`#VL`v-J&8_hA7n` zl9(c(O~hDCCuSL#0gKg>8>1VOXoYMlnpB101r`~IRPpLWK}3OKx<JVnN@?0&0PKR< z5NgsbD)J?4DwbuH&G!DO`N)Ls`eg7kg2Iw?%@RnrhCouDnjWilwjOlw0hmsJqLZs# z5`vF~tV9ZN<4P;V^$95CFfJCKZ{}lq^!vQDU|z7HZ($_YS;UQ9!~iCLIb@JWm8h!Y z&A^f<?S^b}WTaILAP2^~vwB!$BwGl<!WFrer_2~6BC(pJL|UP#x%m@PY+{mDI>#1l zk>wMzi0{xyAq(k%Do{nGPL_P5b$ROo%Y!(!w1<!d-WW<2P-Ps&37&EoDJ@Omsv--B zFJ_oFs0`3L0;zzRYf*@SQE)Xfv64)=FeU7jtY>ppG_dLb;Zjd50oya`BMZ$F#uinP zoc<v8(#*y962=t++aDUlEV!Z-UX_%S8kXu!^*|~ftO$j9A<mIxOi?l{6g6jg=(Q>l zG{G%3s|4XplCATY^iUT@gg`hn0#MT<RwR>hz0T~IN}ok%?Xx4H3maj{v4s<g-j)_F zIZ9Ij!c3~-BTU$k6w#v*g|x^7<H<0Ex%bRufq_eEP(UJU5m-bsBb2>wnkOW}seUfH zrm==uaS}lqK@xBZr2OC`Xikbm(AJf`O%~6u3Oq%<0BAjNIAt_l$Tav>w1eY8Rgx%2 ziZ!v|g<lY*WwziRq)uSwgnYYgDu@~agy-nfGu&wFdJlj2A&-2-A^-TI=iheQ{a0T0 zohz@r`sSbg>|a0h;eY+`2U)^>{#mD=cg~q7o_PHFbwm9A?jN27&G;imZu1UL;=0KA z_{{jkM6GREQ%ifK!|GJLe^zpitY+|vP9NejE;?caQo?y2zRypy7yZ=u*u>;6whtH^ z*~!y)2FiT6j?oBXq>jGMgVwJ+=pdd49CY}RhaI%>z<t-P8yITq=%{WTnGV4F_(p&t zRYJ<u*H2t1YeyA>=N!wC)@H?0mTJyatRr2$flPlWfXzJt!+(?(z689G<;`rQ*Eh7% z{R44%9t2M88sB!`{u}pw>5E^;jJ8P8J@qXm%^0elAsUC4czo3RLweTIpdvR-Q}zVa zq62o$Vs@tK^_RTznrptl^MTuYy84>h2bo`KnQvXOa^FqETVMT}w_bMn|FpKbni@*k zAyysuSG7Ve=2CleN?Td9gX}Czs7JJfc2ZcIpAu)RriEg^%0Q|GRN+I+N5A2ZcAWWh z0*gE@-2mw^d?>s2#V>prLQnmRKNq{HcE{ZheE<7D85^CNW<NUY+*Ir8Y};?&4JV&? zY<G{l(jR%)Mrz;}zq;j+Baa$kLww}PNFu$N>cPh6zNB3<0vjxm$(B5SE;=iQb)u3) zcwb}Nwq4Z8ie-bbOe|0iQcNrc$w83w&pWTDWAJ%@`?m+}KScZDcis1HzVgZ+Y<ht2 z@#q1+{nbs+d-iiKeEefx`tlbZdiWY%kAz)E8#i*^dtygqux;oa^^u}C$faKm%Zjy1 zDTHu|m?U0|U+EwfgSAlbh*?D`r@-=3lgZHlf`)b(=viNNYD6)IM73`rqv=xVtnbIR z>0BMEb+or!{hgnF?vwxB(!Z{6U=@>gc>ppqvUB_Fjt8Ie%s)Hz<cE(l6oh^T><UB3 z;5Z^UelxSk0=LK=3+0e8K0eKe1mB|&yZH)2)@8PL)ZY1?cbtFb6Nb0m-`3gP(LJbO z&29b5){XDj@s_v#%b91K+R@d5%o>0al`49XiWv|^fhq%$X>rmXn6wec=Zbc6#g{{& zAVq3XyiTb@a3EF)X<{=a!O?3j0RA92I<m7iKXu`SXO%`#NMQ&mLrSVxAhgKLS(*8T zXaHc~jS5p`mS9Q*#!$jzCWUIZM(`^ZLzo9m&V{O{I^BX^F#%#pz(R)~vHsAF`~2?C z;n|tVmJYUrq#oFgpsjmg#qI|lyy1o)KIsXkEy1WqEBbp-Tf(vqR>`4Qg>yluOIOZI zk0QoE05)LB+lx_y{vVChS^QCedO=;Xdb%NUl@ZSW2lh)eAWE&F?Du|fBbC<GGvI2? zg{JAr@rB8;6OO;Y-S6~d$X7CI@e(+bXGlewT`!|jQs&uTfs;b02-*lqRIb3)hnuQ4 zU&+Ix(l<8qata?AW&PST{V85n)lKk2t<GT&sunXP)!xxEGcnCfT>57rP*!G=Qrz4{ z>FAW%HIOL}5*!5MD7-2Eo#!$L0<Ac>DgPv47T+p@?&z)^3kwVpT#iUVNYFlM6E-LD zRZ!}sb%kPxl8MRH7U*cla758Ui37Bn=lSfdvY=UUR#25FJsL4sC{G=yG{rP$MHI3U zDWX(hh=NRf_Qh!#bqT?c;Sfos3R%P{+WWDlTw9B9mKAyA-e4brH~>_nG77}x-v9t0 z07*naR9>Q04xm+928Oy?RFMLkp^bBwEgN#}V-(9$dHG+^OD&Qiinx|XgMd2k10?GQ zre<8BjNLLz9P3HNkyB=9C1^&S29Z=@gDC>dPmPZ*8|+=TZY?uEr8Wz^GzfIqiplWF z(G}>CuBu!_)DI#Z#r-{<%#iVIX<%er1%*&zPipOGEkoPlBa*NdR5+}gT7Abr0<LSM zn<pX#l0_S&sAS~iWvPU4P&cbpj-c2oW5GrtG$dsj#$1!4QGt%FC?SZ(uQDF*2r4m> zM05Q|vlLLltC&<xcow@t52d6_ZpkJd4oIM=q^upqs~1QiFc5-d<t@pr4wVRDTEQAu zt1!{8(6zxfLXZbl?`{MWF4;@zE{PY2WK>ZQ7Q<q~(j~wR5SF|8tVy?25<m#@ru)_( zDoGpge>}3ts}7^tLN+?2YK@VpB;iQ8@zl7$(RT??fXJ@a^IIN+d5|5g%^Vw-Go7TW z87XO6ROpph$qJKD(HtRBBIQU<!POE<92X4%y`Yi|J2B|y0tOSf1H()gHq>d0gLr=c zacme|ElVguAuhgcc_1KL8j+v{o0H;8ogUh={fh905XwVspmJLUI6;xIq_zx<C$Nx2 zUWK0=A`Cf-XcY-hQ>!$s!!^#uFc6n8gUMi7BV77&1ietHs-xbOS|eFdEmPZ3ln%Nm z^&tDju$U6CC{;=o2yJq`LJpG|VqiUGis|#znm8t+PbjU6+h&<BG)+#E&9};1jyz=j z!;XCVKmFs=@40Wswb$Kn`DK^?;QK%P)Mvi*$xnTutGn;GV~;uSoYT)b`;5a6-_XK} zedZr?>yo}siMDOqIlN=Esec0_L>S8+<{XhOZpgx5?ghC4Ou^**B)bWY@iiLW)1DaH zIX*EwKQX$%(=!)2%r<qku3EKhpY;bEa>&6)9I^4RLk`(zzkQZ3>+NI7u*P6$%TwOk z<V=n6M*T8Uwl|j_5PFXls0kK>wS{z;#-j<rH4F(|(Q7RsV3FM{fCV9nZSgH=18tgr zpl2D0d-DyuRz}Ip@V3lPZ{bPl%;*~~dB<RX%c$Qk=K9&H!+=nZg^BIhS_w@BvI*JA zki(@St_*y9C5<{FE3KeBEZ?wU;B~Km#XtT1D|SA3=ZbxfY^`;$h_j`wXK3~QxBc=L z?|Rn<Uj3TCpBk4$B*)(%#=0KqyC{$!geq0c#0GhTP8CVy;1~rG?EI|4m3<(ibv#f9 ziF$$5u0jDXZHjZsz{MB)lpRyWiiMUWfSPaO<J!Od-KHP@@J9z6xZknI9!crw_}m2- zJn_yu?{9AHWELRex^Q!LcI?If^!)#iw*P?Ft*Y*@(cSyrr&l=iLk9uDh8<fFjV&5m z)Myk-jJ*MZV%NkTV~O!gOk%7Fc5EOBDxx4DO?o-K?%wb7{O4Nle$U}x^4<HpYrlJ~ zImaA*j#<`R?SmgU2Qfz;bp(-p(@nQ}k2qhoB09Y1-S<MEOr@n4BcLWQ9ip=)p^kYQ zE!9eFTDz!aD{7nL4(#2#ccA2oWy|XR3jAzwfhntB2e4!Gf5y`v&yU3}Zb-cJvMb*9 zj`v@C?M+;3TeNJ^Q~&%?r=NcMCBL}*t6%-rcfa-RpZ@sbm%ZYpFMq{L2ZmaA56|@X z@nA2U@D1<Yk!^OY@awsF5ec4#+9xSZhvldx(Et!zk_BXiN5RmSYJ{E6FSrtdQqz=U zT?W`Px8Q(E|IrX-5iYNVd+pvU_=y}EP}}VE{M*lZcT4Nw(q(IVdI$aJBrkCs8zV%Q z?6>6Y?|37(?mM;TDh`f|AewRJiD>9R4=-v&iBt<J8y%(?mr=y#Pc5c@MrGtuOwiJ~ zkmEsv6HhqkZ~yKUpZxoO+_imZMR$K&Yv=4-TW9y;{*?!8{^RdI@$pZdbMEU##yDLd zEOcqO+9Mb)cqs`LGXVermT0jG#_1yM5yavZznL%>Qt^{xUzii^Bp}Bwj&=ZCC`K91 zJjQnK>|NCVu!o!iSW*1KC_H3U>JMVuRXVRsN`j|chb)e`Xo_<S1^BZ>j`23@1$@de zPfDl-@F;3&g+;QlN#$l)Nx3J<hwUHvh*NI9`FnKZeO-fGCQFdC4h$|HY3cmYk1t+W zAZVs-VzR()A1UzEI%+S_*VN@$=W6mgU+_zAfwso_Uye1CJ<+0zpoQY5>IMF%<=juH z^<UamDvDJh`q`iV{4%fH_x2~kXUC^_)7tbyPCccJJXIxC3{@-tR->C4w?uJ;R4Z*Z zpbEZVN}&l^NrFLKvG3|)k;00_aA$Wm7kV`Tdu@fazy{w+jxe4v>fnDjXX%#1#-Y}C zjb$iGTM(~U14<fyl}mxU!r3XFv7OEu7*O12v4^ZfSAhBX{SR2%J=i<Gduz+=M5|Y) z9a3#O$}IygvNSNDO7-wmV6i}`%|9NoFR}^qAAMMn_r|wOx$H9(UA$8<la^%4EKc+H zkp9H=lDf!V5s5k_B4(LbP)J9IrZUk$csq<?11xe7IkRs{i*Z3DS=R~RN(CWFR;H0F zoA9!Q$ly-T5PM>4Y!g;cH3<SMvIHLlu4Ld=)m35ZSTvmlF3D;Kj|DCOjR`(U#Aolh z!8HcUQuFecu{p%vNP!E4MvD?XLQn#?(38(jjqi8F0epmehLM<QXGW7~AqRa{Z^fCA z!VeBkaf0E%luU15ANRd@kxgGKI6ED~mPn%Zpm%Ajx)F{nr8(KLn*7bNK%j>C5q6Sf zD<Kr06@Y9=iBLQ#Su908Y*w&^=#fKkZ3bldXABWvJe4i0!7>zGRz*04zFP#CCKPE< z6nBWeuvwn1M%4DIRzq17Q6rV&IlaV#vWoHg6r<E9d|)3NQnxiD)d!<SD73*BT6oC; ztkj=J|1=Eb;*HEH)gi(QGieLoMxq83Ve+mtst^MxJ1L9&!UIXsllx&KypHmkx5k^U zvBRY<Y~uT;lZ8iYHOh;I4OUetd5Wqs528j}k4-d1f0f!pD^TDh$O&&uuj%7(s<mn< zH3P9L7Gko69O}%fiv~7S=VD%yWGip)pl?NZ7Ay)66*s&+2`x<2kC`1x+Q-_#7Ev6) zEfJ)|qA9RwEzjZ)<KFgBe6Px|=0JS2FT5PjA{a)2fTEJIqmIOs1T95PyTYedHwAJr z4r7R-bbWRUbdjXq6p5h`l^H1ti4gt;6nor9yJ(060mUbUIPgk}r4@&;(Q>tt!9s6? zOC>UJIr6KV6-pTB>QYm_C9UQmfoHw5T=3-Noe1B5zojpD{!^a+yr*p1G<L=1zq{}! zKf35=7hUwzi!S=fPk8+I*yE1+vnM|8@sEG>DJMOkuip=n(Lqklw%&04Z7oxCeSJ%K z@kws@o%XFP)FK-dKQ}!yF*QE1dun2s6#*UyoE_UaKQ+Rjz;*48p4R0&FL303haGaz z5l5|Gzy44@uDD{wlEDG*)JJhH^>O~qJ8VX|Je*}h)Mj|KG@j5=o}svLo>2KV4k})+ zd|Oq3esY7io)TK>POlMYDMEmF^}m)RYC{|!Td4QI!-HHwCC!k)Qux@eO;bDWebO0^ zJL8N~N4a=x-R9PD(8I_kK-H0nfd-_^1aPY0cv-{<&ePRU^QSaDiVVonl$pWg)ckXw z^Jf?Q_qTuclV5iaF7F*$Mg4Mm&_B3x=aSW*{={b=|M<r~=z&K~OoS}f*-o@Y^-D~v zmo8L`Dp}%4a49Ull7P*&jBde?1B$wZMR?d#_{S#S1bg}n2a(9u%841@wLZax0|xWi znXazh3%>om>GAO=pZ<g%UIRdFwzqxsA3i!g#d=UXcS5kR#pH>1Xm8!T;mD&7^(~UK zE$a^0ue+z?mRoKa=b3gKG?%mf;w$szUv6d7Kvb~GQ|-Y-MS>rHqAEMa+{w`iB6!6L zUdG<oip^D4>$Mx7#+{~kh~3Lg|M``FzxJx%p8m9F{`E^<bm~J-ShUC|UtaREKYQhw zFFot5_x${l%Rcq@AN}?P-+tR!Z+_wv9=?6&1hbHyJ`CgvooB@8oO^v>rI+-x2dmsa zt45H9nNSILC8;H$5LWcFI7lM86>u<XvQki&%Aq(YH4Z_1MN9UU9CG+5d<;wPJGLVN z1bk?)?Y-~$>@C;c(zkkj-=bB#T#H*7>0oy4*vLCX-}bimtle*bdumuQltHC~No+wc z!0@Ln)8W!g@P>PeTp3`#%$Vcpyb(wkI>cxJ?a5=XNb#V-8{Y8p3%>K+J8s)J(Z6V5 z$!boPdE#=(l9l7bE5GpR&pqwwPdW0)!+4QLo|>>Jq7AKv=p=<bY^+%j54JJA?<lC< zVCp>*iUwlZXi^ai;`A_xX2O~hqJvY{5RJXnd#QXgho5Ymm>Su6>O&u}ZvVyJryP$+ zT>s0z{1<UWrV_z$k0-!TF+TdhT~&J1KlFD+2Gd;0%=)ksIV-o~U9sknEl_zCP0cpo zCJ=!Oo_xmR|M?65JvlPmw`jE(8b9CF)j!|echS!;qwDMM3Dq8?3y^)LnndaCY*Dhw zk4=OP^aa?Spqj@*`My%co;@jXoK}~8!~DI0m>eH95bi4wlCm|?R<QWrLW_LLW%uy> zZ+?4qYtLYJcRz7BKf^;DJNU-yNhchg7LyPJzjBGB3Tz0i6IQ&NAyVovGz*azcu@Aa zD>iXq+z%(v1pOQ{+z4F)lUooC&q7!`pki}BeCf)%c|_m&f@`&^B?sG4(a|OpJ5aGI zw%ysfC@E+LWJt7<*@`#ys~wpHxt3<&kwt#3%a--5Tes?uH}B$=#;v`JXyb124s4BA z8i#BHm1{|xSI3x*D9$uVQs}8;wg_-^=EJKl@S>!Bqw1$wRcOIgy_i5wp$d#$m1J-u zR-SO6h-)cX2BiRkXoc&%3~d-_GIIcfz%2)R$tqL1R5<|!Nwk7tBJwaL+)6oIWGw{@ zLRmyp;E89zdO9gscw}EoHD59wG*3Wwu(Ojje1ug}N=h`O&5w_baT{1$XAq0Ut~U@b zIhU0PJol;>wz{;kQ2vZ5GkgbOdTRY)hw|nizG00^iu{J2g)*Eh<A=lH$c~>5DeO^Y zcD{!<XY_RM8k>qO`Yha1L$OglR+i?mE9)cRRF$ZK+^N9ouUxrr(N$SJTioxVc&V5r zG^S}&?Ws7a7;Vx>2u|b+pp2e8e`tXbfoN2GL!LU;?ds(YMdLR0z+j8CUk~KskViFG z*g~c#Hu;u4Od=(1j&^6$VvYt@)kaK-R8FMTn(;JIiV9&<v#XQ<H&T#S$|Klh;Ne#= zAixvsye<KpG@P9ln{Kcze9i7@P=%m&>QQXUF?nI+Dyl~8L{f_KF?EZBUYu8@Q{J>| zV%P-zUz65Z&L*HokTqOQ0QDo1InDB{0FNudDT~G!&yg510CBgV*jOJG4<IM)K`-o^ zkYH#55m6FVy;MNyE8|JPNn8Ndmz^MTg|kz1;LH&TF<#c@^uuM(%9~L)hQvV79rol% zb1GePa_q`xkVkVEl!XFsrcT9|&K;Y%Nmz~KLJ8882pF$AKA@5KOe19tpE8eZH-^gl z5h~)Sk5O!iFbFH%K+pi2z6@oluMGtQp=hhkRl1<*5zQ=2!XZr|?{ATh`b4FQPA|x$ zESZG5MrzK)mkWTx$qMqM*y>R2c!zNDFKrdm)!MW*7pGX=G73hNL0v~pPE2`UEAJS@ zN8J58-@0T;-;>Tb^+``Yb@%S+tFFH4!tY=B<DdNOnrpAW=6Bb9=!2g)=#T>+{isLq z1;mFv;^E7dw}0(h-)os^9~@i)W!v23?BuTLso{yyQC?xi{AOx=gtwEm%#F3pP4T9( z!NvV+59fJ-la4*=2yPHK<dB0`ty(@f(B|EX^L*`w3lz+YS|=yDE|0F-m|FAvFi(S7 zrPfzQH@mnpRHhM?GX=<WiH^!vl4Y+?1ZGzq8dVD1bSl}SZP6Q6ibOxMmYA_fr|DOU z@R@H>pW|ln8E$dgx%rNs!Pc|i`6k{j<Q<hb9b6j^G98n77}7brM)+o870;iI#rmU! zICf5-&OPL69F?O#=tMjF{MtY8f%8s%<mtOM-`UgK-_q7^3u*6KvUI;~J2#(u_Iob4 z;LDzt(;~cI(cvV^C_cVz=%j6BXi-xqL)a4+BwA3Cdkqr#v@hf(psM?l0+4|l`jk7b z&{LhQI&Sl$@-Rcw1n?fB$?^G#$(aex&wMMToI&br>*fi>?|%D-d=2Y4&w9G#T&3)8 z{j(=Mlq$BC;{asI$$!rhdCYp*@+GTQExY%gdqzh_coP;-xY;lGzD#|L&Q(uhmN}M# z3ZBTAPLfUTu>!AF%5UGblh;m8P9sSi4^3OB@IFU)vVetUphR3t>-)|>`^7JO;VBO} zrH@BoFg+fo{M3gWbm8~E@NZwf;63mE=v}wn@|st?_9@SN*6ZK!+RpBl$*sHl`n$Pa z*W26K&8-^LJ<Qb9pkM;x)An3HacKrXnlZchMGX>OQNcpPf}@ne@?W$srZnN-$0(_4 zYCQ=v1twN(3#6?O@A*WEaiVO!IqO}-S6_Ym$3Oo0*1;8nOINqFccU*gG0C#vwhbpf z^rYuK@2OLKV}$s#S!0)VuM<^Tsj^O!AfbD$WLlP7vRXirpE0bJ;&9YXVwI{R#Wg5! zdVAYG_~Cc|<x^j<W9wbr{X-qRI+V}*wf8Jvb@1jt?tIU?-uGW${bw%F5$Rf{8ghwF zN#G$eMvsX^op2rJA;V0vV96z<ww)wx(P2=)&AFl@JPI@QXJJThwvLaFw$4nS_P9s1 zby7}2*@uTN3Pf0eG*XeJ+&F|nUZXL?IvUXf54Libcp*#w!;F>sYGNr-#kLZMdI-3` zt&~0N<dc@KT)b^$`{G$vgt<+FFlg`K!LNa(xBT&zYp%KV!6zRQ56ZfDG}`|O#?4-< zghO0Ry$_ism0K!YW63%S$^9vRUw8@P1=$6o!3K5}<UR?d)j*DobRlVEE0hIgDQRS^ zw)lnWy8gzSH*MI`yZi{RO4FofCMQRC9(UNf{nxH2%xcEwYD=NFrb`i-U?$5hCBRBM zsT7H(;1`|^VC^|+Y-05MoY}*Jc(;+z4B^O1)(jZc25O!3NT%q~4D{rUn+Q6IOO`?G zMN}Cc{$wR<TUkXK2+|SRV2@neNpM&rM5ppP5=k;vS_ZaZZGt^qc^&8a!w>o6AAU12 zKHS&KYi`r!h{^^_ux#8_6_88&mOlS<DQZBowwE(qilla7l<~yJ3bn#YwAe)SSC!x? z$p27-6fjxogHd+Yl_G#Cix)jOndbD8cM>yh=P9|GGZd-~Diaae6yeH&0}4=7K!tZQ zf&{uHr9U(G3)@N??~ecrgaAkvw}(-<rmTp9klXdZ)<LkAztStILIgQwz>6i*C@dnP z45B8-r<?~nUh<wo25-(aLlIr^Dp|E|FiFOo>ZTKBjg^;C&(H8us`RNd-t#Cq+Ci6E zjyUe1WRM6iII1&y@z6Y-d5mtQC*$*+b0gEP4q=0WU=u&e*Qthvv2(a`q>Fc}O2nA( z$+IwocX5k!l@V|(DGeyT3Illsq~9VCkxnBpRW(H>p-pc3pz^UHMw)#R?oz?Th$Bp) z<8C?v%V$m*ThS^DPw+>GjtZ@O|HKwf=wOpXp2|coTNkc^xf;u_n%#nh1e7lX4c0QM z43H69y^outazW5?u*;7_@Z3>hu6`Hi#0qm|qg)A*Qp0kLx^ZBI62akGBbVxGqAmrB z?4SxU)xIJ?rK(U(x`(Kyj41a-+XGUe$g6OJbrKD%0w$~f6PHN<#>ax)$}vcFE(ld2 ziWhw=KPs+4tCB@XLx~zW<YgD@Yj)7)FS=G5gW!obI`AtA{ItLr7eZsJP+Cz4ej-=O z(5P5bu5<~Z(N%P*DFg>*>{h6WWx$b}Vu(acKSUT2m1X{;r6`#;0^gz@`&w;fx!Fi$ z<i6tSG0D23qDI3&smi8c%OboeWj34qqMQ6nCJ-`Ku4o0-z0xZB0+*n;O1OVw#i1c3 zSJ4;NFp2-vxX{&gu4US2dzM!ikxH0XV(sGK2gr(><K@ZVGw18<>3GOPPCoVFC%^Tq zw_pE<8-MbXpZ)Bo7hQMlbzl0IfBVuG|7~#TqQj3k`uEq~+P-KB&-&ed)0LyUHn)rq zw@!2Ee2N~jqrZE<l}ipe=+L8%IOLdP4nN|^Bi5~3yL4G^4<AFcar3M!Hw^RGx8D~) zaAuiyFgS>LZ0UpT?$ODigS&fj34$61M%B731YMjXmQZcfQ1iH|D$~iLR$Fm`NDEF$ z4y`SNE>)C@GG^lRn!X5vy>k`)&W>9hCU@@GG&{WIC4c*(BaT=*GCIw;rUvnOK~fyV z>IARoXPyq+0YIs)H!I#kdQ@2BrfPTrOh|(XE*=ri4WEY|y7Fyr{kwOc^O4~lOBO9X zkRG2?s^0!3gR2g@`j=OK_OoC9yVt#7HxIqXR(;D~5uxZrRzyclOUMDoGGE71wzva< zlsSe*pD?jC+1!d1H8RdH+@Qh$ZWfqs8JnCQpP1o(fs8{mXKpv?2pVD;v^uZ3>Y5v` zzu|-vjyUneLu1)IO9mHT^2^(9yLWhaltq}{uI|N)7q4Ek@{mIg+He1*`loe%Xi@7y z2d%s0vfuC8v3=#5wT6jKvbGdn^-)nyqjVgj6gD?17u?Jzv>|n6-EhNWYe(nX-|@~H zZhF?!pZdgnLji|CD2sB8mo&JZ++wLke1c)WwJTEq3Vk5+i)^i&Lbts1rB8kO)1UgG zk9_*GpZnJfzW&uKuDIf?cb@%_hdhuEb&gL=?c6=ayM?*8agcW{bUMLtO@L{bi&Iux z8FAG!u@hAco3dH2szo`HYiJQJK!~yIp-`06o&d@~(LrKXeU+kVf&ihk(!)h^`&*1m zSibG;=gm&H4J}{O+qc-OYaOj~GvnJf-PP6Adfs_&?d{+Nq%tn&2)-8(1}LWdDv_l& z)_v2i?2mlB-6cYO%R-#thZD5Ii|+uPs#lv(y)iL0{isJh;5jdR_J4i(Tids7T)w)u zy`=+|y#q^nSFHQxPcQxISHAPy=bte=Qa+62<jcO%p~BiN8^FYp3S)f?CvDbl2YacR zlsQ*ya;Q)lH8`oHJX0f<6=pCcMHTyk#o3YF+n9QscG{yrR956+e^^!YB`2%s8Kx$6 zVUcFi#rhduHSY{Hn7*Kg8;dgeZRNpoS0E|@wQAr+u@KaJ^+iwvHI4T(Zx^s^Y1b(y zAOF1{{Ay}yjBoNe>x7`Kqkm}m<kmZW^3%&6^uR;nhz2`|n$s0m4v|xoT|h{_cKZTu zBULcn7d1&NfErl)Na*#rwF!SgtOQ{gkO5_d|6jMFN;7^*3s0)nHPtIuxF=|-qn1m5 zaXDAnd-{i5*5Pft(-W-|qYrt=6X-YCYEsi>GlH7x4PZlB(h*YWPYK8iJPKy`G=K#M zn9K1%+w<1n#Fj0M8|82v_i%|(MR^#I4Lf&De5<kyZr!k&on)}*f_qMPeMWrGHd3J% zPW0r(V`RaDZ?rU-P{*4=w7K(F<TuQd2n<G{6OTXk```G*`0%#=Wru-9UxA;aJxi{z zlwRDbnv0ZXO-O@Q?TaQ6jLg}tPESq>FgV$%C@4itrI={OQCR7^!lRfKD$z|~9SeN4 zv-l_L5Y>4V)F5STRWuDOnuSa?ps5+x{KFevf}V_BM2%G_bzp@j!)T%-)Q-cRtW?Xb z)PHosd&Q6nxnXl^D%h2Ag?B6q->`Oo9Ou*1EQz2#)k8g@BOQFklu|<#7Y;=|NA_aA z`8Fntt#gxn=(=t8h$9bkfS{g>c*~<R%tOLHFDNjsgHjAKUCtMvV10(l9q8+6-8|vY z<Is?anFM;%171we@7a3^*D?;^YvyrwmTKMA)@9FVx~d?P*tkdi$u)mEugQUQ3jo~m zp%_guCeTRw#+D@Z<>o^&_Vt;j;RMwQI@d*bS%zP^t;iiID2i%MgOb&&6=zFSs(F(* zAlr<b^#(A#ol6!F)D#@UTzX1Fsw!F^9!h3Q^%SnjO1B^uq^4Yf2Se$Fjm+Wb+#n@# zfoOq801G<_Q=WvGqK~Qnb>lwK8eRRvqQR%4))^@)7VZ;A)EccK)0bFca1=t}S{C2& zSR@;(hVb?lZ8MdX4eTa)ma9cTjd~zoc^~-RYKKH;N+d~fOJPzQ5x196iLOq`Y&p(k zc)p0~SumNL<*0aCwzIZWeWEw<j}Y;*V&>AZQu&X$gku#J5gweVgDi)pOo}Oj9vUS& zV~pm=0hBhEDG(`LYO!>hC9WRMQbAEy*Lx;otBpwa+3KS-(b3jpdsmE9?)lq`paCGE z2GOl>M1e{{x~^h11=Rwb{sCK_#TSYbBA@J=<q5AOnKDapecrRD(9p{{ta1PmWh8Nv zQ&px=T?mJ`$_sO<k-c;7bSx~&&a+lP<*{DhcKnG)opj2PuYbcU@4095B|pD}m4e^= z=E^I7c?HiHwsg+kd)-Amv$%A{(*2HDbNKp0jyq=k`XkmKdgvjmS1ukJ;QdC<`RPvi z-X9mYhKEUK!m18LN$jGdwK7rBUQx5vQ6;Ob7>B}X7XiYh_MNsAvXp47Cd-FZnpJ^` zCeXivW6hH;#nv9)iC<8~elw-|KOCirC;<oniS>c;nd#BdEq5Jo*g=2y#@BD(Hs0Oc zIqjI2by*10KJ48~uqHmE8fqY%A3b-{c|DaH2C6e$j*EUAss<&<K$vUUJvx2nnJ@hE zm%nk#t#|eht!V8Wn&noI*4F+-tA=-N|Ij~t{Bcis?3Go_jQ{{307*naR3V40<-!l@ zIsogyx*=#w%z+WB%sCM&V)Nl;A!%!zoY{P6S$X4*p5P}d+p7nimlGNZJ$>?y(y`H& zk&y{jf2vl?m#BH#8UfT567zCXo?qtj(uEgZh>T}G?I}F>D(9BgXFvC)7yS1RTk=XB znk}Bx?d|hjeI1|p*oR*Hf-|TCxbSew#XtS^j;-6*uHB!HSbC`$>o|oYY(enL#+g*f zROhRx*Je_wb%doSv4j)x38uhaUv9hkraR6#>;3O}?>{`?_~Ut4<1vqU#Bs+SGBj9? z{5C6j<c1G5Lv644L`v~adQENFV_Ukk<pb|~^^0EktaqIIo^OBeXRkf;%oo4(WiNi| zOQ|0gO((gDXLx28H$-%`4Gr}6^)i2I_vUb;kXKx!64N{7ei?mb1*WIOovAP@v^WvL z6+!^$m<CY+Rm);yF>2TCN;mn+kP@V%2^TFj)}=|(6nRQ<ac^Ji=Rf<kUtjW@j%9}o zELk(x-sMSj>+I%j_s)*&IQ=P)ddwq_8s0sfr#egfRT1h6tHQ`#*#PSaMbSlo!MJGm z<R9WxA_r|Tn@PIZ{)ZdtakcX7v)}RkA6&e9>xSupMP2>NW?R~4TDk_8t{va8{k-!( z{Fui*c5qRz%MZw~86iYDXoKAy-1kp5*InRR*s5OTO_ixL@oa5JT+hy-tEvSt6KvA6 z>9VrXc6=|Fmvg2@Mz`;O;3~S!vMLu_^=$+ds~ZBVYC&_WMvS6XShFTG%}rRW#2F=N zg}lF=Rs<q%ilr;23t(%a3l~7LQ`>!Q5rSiju!8aU(;oHx?_4r5x~sQ;DbIpsiaFOe zFu1+F`+GmU@Xc>}0k?(iwbkSvYX_-)wsNdcVp4VsENa9WQu2F4>(YH6(=?h%kjGX* zQn3l5K&$9XnqARa+$dRTT9<Nc=Gy=_qwRrE6#!$2h+w<)l3%xW^mX_6x*ZhZBR(y& z<GheH6GJ020t!{xSM16GP_00WEDBU83uOfy6BaNkRYFHPZs5fM2BS^G&0ylkx09O$ zRi02t#X{7y#99}KSR3u=YMtBd_k4p$7frjie<@A5i6b3&Bsr!+sYc>d|5S)QJSWOF zU4|wRNLXbVhb!SR03pX5eRxX?uddtS$)<P1iRQ~x!%<z;z=l-Y7f5thDZ#W-ekzqY z6XXozya%4sQpZb2K$sVol@{V8GbWWrMlud64CNEfif(LbB@?<l-^c4X&0r^nC33K* zVhCXG2%5%E|Kun@j_z3>s07~88<LU`<_5$>@l+sHfoYh9rc6(q0Krw6vM$K(oi>CM z%$z++gjxl!Py{_1OB*|tEK(@KEgIXi!!PQyBG1yXlRwK{IfgBsfJ~}*+#?9oza|$J zuA8H+gCk97YJ9xCx96Zk56LTNeg8nJMVILwFv-V{dZqjzM1^o>2X~FJkjZRIZ*O1A z>~^J!1-}$1%i%VIFcAT`xFUY@3J>~(ja9)tCUuW48)halmytqiVWiC_4h5IOxR+T} z5kXK{VBo?>)2b5rfns^)F%)QeB*bt@%4|Ds-~wR8J3W!q4W42E*9SG@MsZQJAU1$? zf}>TZmXPWgTw~pabJ-Ej;h`W?bs1oispP^z9TM+N#ONeNXyW~nWN&W}V+*!1)l^oo zD6&+bu|dPuFth<*NI<j)MJW+fs?$8ORDQu>fl1eJ>|Q+f%I+Z|5>+Xa<utaUc@Y(s zI$0jY8>uZrB2E;o+6tYB#%esG#|6~7>AME|2EK`SC3qn%bcM9Yk_nsE<9ta{yH*@| z^(+NZ6)YhF8}$keFyfU~#4M4kJ|HMZpj=8j47Z}Z;y?(FcfF@Az%Mk0gc1<~VdTq7 z#WY5^EX6J1LdI?s*{VcAw&D))BB%h_15j?jQ5-ShU21`*rJ*&K8h-&$m&hda5(7;C zp;eWNMb(OREfXz;6dpmggzTP>3I%&e$&&KIDMukeaR<C%GuZ-HG2psL&q!ZXtJyfN z*tE%0>N1MBB1J*Z=BK7w>Bc$bTC;ZL3;ybvFZ`=#?%Y1}yWd`Q@y{<ES~PUramOEg z2%j5VJ~-6Q4FZIWD+1gdFw??!#qt7y@>&V6hU!m8Y<q@u4+v9ymT=OwH8~+3p*TlP zHyvw)sd0K;RV9;M<-Js!z}Orh#0iSHNKas8g)L*8Ko0$)ViozM;Tzr+McfBSa-PoM zVS3)oF*dTDxABgRj{WY+-=B8cal3}O6_XQIPBn7k26iQib8MgF#{p`Sf2W5^P}5wT zB!pYJ0L#3@5cY0Q8<Zl8g$#L)jhtG0$MCuD`ukgNy|rb!Yv;C&OIC8%Bk#p&Z}0A3 zymJ4YcV2t$dGGy?uY8(ynfSxK3*QJTfcQ;Qw8yK~C}O3@xv@IYU@1%WY1it?CIbQk zJGjP8aV)Y*A=o`SJ3Kr-#aS=wimhF8%_SYp1y>>Jz!V7g?%FkW(NBKX)zfvx=}%H_ z+x+IuyL!5N{^}(!I&j@Vc!3)wcrI{keDb;*uKmeRFTCpNtLL6~21df?&_fQQ$JoAo z8@_U23U5LWx25Ygo|P843RP?NlqQElu|0m3nr(V&a%j=OCqMT2-~RTO-~H|dS6=zM z%YXUH^Ut4Mv10jyA9T`VAM=QZKJ3AVu0NQw_k4}gNr6l_^+LW3+=^KJVxeLqP@!x` z9kuFPU;X5lzxva+zV+NMe)<!)-+sq==f8J~xgSnp4lz47Ix#gizPqodeet4!{%$%n zUCm}>vdNWAd#$YmNlZ_Hl9b6YF>c1ZIn8HZZAq!OliV5z8i@Q7f4O<Qje8R17j}v) zri$aO0(aiA^?mRAXiMMH!6j=tdin`&n2n9>9^JmJwY%rSpI!374}IyaZ+S5niddWR z^S345iqj)1AyH}qQb5i#q7tzl3}vGif^9w^)z)dgeV2_wNA>k~+<nKkSH0@ZyEkuc zY3tdsebefJMW~DcUAzWx<+{<k{_wu{|HCIfe%8n+TwLGAavBo$+SpQ6sX=AL*E*EV zgXQX{2G+K;fatv>QLX&Pl!764sS9f;tg>TyfV;TiGch(gH#&0KGatQZKxS;9r4EWL zEzf_*Y8jCY>u4%MMLIjnf}E#7g;SA;d-PcwH|sRMT^ACt)VByNiR24)VadJ;tpPjj zu@7(So*N(Cxr8^{w|Dzc7z-XeCDXU)iYu<U<Ic_N56-PL4FVIIqIKDuFEWEu7jdjK zDqgI@E;#qyHFK!h6bAPxL0nY<3v8MVy>ID);T5xjo{C=JQHyQn1+0)1U`1XI%>~jD z2|ISo{N~DQTH5-0x)KC)Gh@R$I(j-Ec;fL*5eQ+~WLmLo2ASRqTo>n9=qv5D)<7=4 zHbhJO)|k9sE#_NgU}jpyQ{KFiATxvvS%p@LhM6QwI(#f?<LfiNXx7$i4L~msj?My< zUuon4Eew4QRsUUd7TrQ-hpeX18JXw&$8-KL(@Uo1!O?cnGJnL8hqiRJ?%cVJyCPd# zx<$0NPzWexD=GIjCY@53<VeRGVFf7XSj0jbOW=wUJ^!^)=E9?>Rw%MB0QRye-Y>)| z3#7eedNSw7WK@Q|j!1LCSMd_V92adCs6i#8XNxY8ED$5Bx>Z`)L=4Nam$D+uv9XKu z)Ux;~?xK(NBv}fZuc^YgNG$srWM!ZvKyf&fNkr<XRInT<q*rchALF||j6j(af-hwm zo{PF=e3c9MR$q~;Kdeg79WkdSMprFgwsOUCu0nx{33P&vLq+>Y3-8n#Oq}wng#IOK zMSIdftrC^IU81kAmltq&-x`lTidlGpOmC_L|CQrR4h9)U;gS16)m8`5!v|MdImoBp z$jP_Jmqpn)21<@1y<w^jgFqE4zp^zFX05txIe@1W$eC5O@_2!zcq~XHiy$Q@@?%r1 zA+Pvak;1aV2MY#811S_Lk<*}@J6J4K4k;E%93jz%e35P<EP@xp28N()aU1yYJG*d| zz9c-9bwm6Dupzgm4_ck!SYzxBUvS5LN*dG)3j{Jst;N_NXk!EOK58^d?k53(G*0oH z#}psa+a(Q6T&~38bl0pB{|hqr78%E-crUdo4?rGWq${{ZHK0|tq6<J3qGFJ+8V#8j zIxy584T3G9@Bt%rCT?_%6bfCrN~?>-AXkl92Lg8^VAV<$li-kB$IFtL5=8Xk4kg}g zn@PX3Jm6&cyjHokmc9fQVyl*9>~k+hSdd|k*|6Wj;Kf#QY-L|GQF8&p3P)0*0H7nP z@{rYCCK-_|RkU=ZH8CV+F)8%{%*As~u4*-MVychh%&@Si@F)p^bUkY3<%V#t%5zAd zdU6)Y@v0{4Mi{Zz@sv_Af=pVHy*%M8WmsEV3WD4#qF#kU-JCo-K6B<ZIU#cQK<C3B zbIN0%bTaguf5MBpo0@5v8kRBF4?WivU8gZM1pz1wIR?QvDN4wWezx|HhR6?#`Ew3X z^5{}JXR`Kq#lQv6Q7l8LI7+5Ry{1f#tc8eIpLoN(nQR3}tfL2|I4T=uo&%?DLoXX} zV2gc@+FYfco*dgfGTPSNvvuRH=RE8A?|$D|fAcqgF*<=$d9{OX@SYePk+FnxDhk-K zbigKW58grGf`i32mvFWvsXZ|hWbE-Zp@3%RI(s`dZW?{%D_(!;PcH8mT0P&_HM(<q z-{4?Z-!i5U-1X5vv}|J8x=X%)(SQ8scb@;;Cr^yU8<Cl-5XjJYPx4TPLZs@`R0~=l z2N-Huq$1udRNPrR%}4>kN)B#o%kX&1_MLpFf?Ez;yvSH2UtE<rBG`(As$48$M*P!D zF5SH0-Upv@>=8%qPYFI-x@73z|Me5L{rEljGGUSFs;jPFvxe6(S}RQ5*6z28lg=$$ zwy?%Rz@Q|n6^Xdg2vr~4RJkcOXAV`8gBHX}N*K$H$i<5mUC&GKhq^!TzE_-g_A9RY z!%Y`oeCbawzLZypedmG;zx}NraB*$_b?YAd;8Py;s8hMbcj%!jy1UR$rmnD*=!l3~ zdXDH}*HyGolNUVuv5$P%$xnIOi+=pw|32i9^)GzMOMIb)F6Gz7JrJW)bK_ff4-NJ# zUED>LrIA*X9>}c(wNLA*Yec@5C?yD0x*>G|F-?MO;m{zmMr{Im(Io<I+)S%0bs>Jm z5-5(H=biRvopb)k&WWKlM=n~loD1-T1K*t5ws|A|Si1Vqv9ay%fA=TvzH7t#KKORu zjLrlub!YR<<hyhOVWtqXu43^zG$Rjn)Ckv>OCNExm8SLdS*A+g**edMA=-a+*&qJ; zrDtxxXV>7mL#M{4CU@=HwSDuF6{~46G>Sz_SB?&E`{sXq_0P|E(xV^yz_D>(AH{Wi zn;C7)DCP+mg(|b!DuadauT*{j%fdud5hMi4g<7uSPDG0Rt8nF;@W#LMQ)45%sO#xx zJV~RJVaEq%!7ckDFI2isB!z`#;a&RfHm?tHi!68h`#5h9kU?#-K)@HbIvNWE;jy4< z;po0%z5pnxfSb$KuU~%bG3&3se#<=H@@(%^#N1p*TgTAQ(rtI%b<xj%eb_-~MAKqH zGe01yK#xt_wYaA6m_QVROpTggEkrtX!KcM}HJV)I&=Alpp7cHo3fl$Dl5gHO%JxRx zmz-vtD$N1O)n+O=2GyJXc<ZK(TYDBA*xu1)Cp<GfIXZm!A^RP0z{=W1AY&~AxWFoR zD5#AjQ&`6frPxqZf)S~kvK5yW@581zwiK#L1CKJkh^Z(>E(be@aLRdmOx*5}R`V>J zv#+EyL6T&s;*J1Lw_xG;7Q5j?+ojJff{_S>T(SVBKv}=qSW<;0`_jJVGu7aE!wgQL zb)vvpv$}hJW~eKb{hC$F7cX73b9npQ^b}7wXiY6ljB;~XkhPG(s#2{ogA#f_0-Jur z3m!H&ILz@%1&%UQQrX8Fm3Otl_+>LdwZ&usL_|1O*p|VW2@@S7JqqH|A$sqWG?r7- zx`RH7S+cjq$v}1G0h-Ai!c0hdp~xl|br$@YdY6GDm8KOTNCt&lj%cDNxbs&sX7jIj zI3x>1szNF_TZ%~)Awo0!MRO4(!KTT{Ni&(@q{~!T*j4ycL23>dPfO)Z7NY1BmUVr@ z7`~gHJmA2?hlYH4Gu^oJi?A=ckko5AVF?}J)C-}L+9|o>M`yfkEq(p{-rW_qQ_+G5 z0Y@a1Ma{TRV5Ms%2!D`r?==~3GZ8^A;XaxTzL1At51E4L*=h@IXg~#5*T;5|QLp>} zkxwlYv4xs+(T~YcFoF^W^L|8<7c*#^4v<?=k}li|3>w8qr5@SDltg}UYj6re(W&63 zQUFvw4Q*kPdR4G2gf|k&6q&^&m^e7HZ^#D+KsI48pin#FM^d&@2J(>ZL07bGW(56S z*}}L1zn{_wwbyY=-82v>icJlGD0^fC{2w-H<m7q>X$;b&TBb$$VR$25a}}`?*(j~c zs$;DY<!sp()Z_|up{O7fL6+6Jkw`$Y^L!G7vMeMHNdUGflANTdlxQ`5xEpxZCYTzM z&H5HfA1k3IOA0+09Mi|syO+sff=3=ORxN2w$x#B&QVEH4-T?%su~VqQubPEKjbjwR zLQv(TDH3Yx;7P0?3Y$v<+k;Yfumv?l$u#LyuuGAmi#{T#VJPDev`CaEAmX-or%AgK zEAco*bgLmzKWSnG2R2bMa72yb0y(Nm!BAg*>6@gCcZ4`!FJ%=QCIxoe9MbxrN$grp zzUX9XW_DzBZe)CRYKpHRFh8Vbobs!XeA&@e$$+}z7xj!PP^jA?tMVZ#L4oceRlzds zRnAa3inPo_jVZ@^i`7wI{`D`&py(xFW)<PFicb@sDQc<)bDEG-{}}EPKvWBU=0zp` zqoK~>3i{~i2$S!Xs}ESZYF%s3(s#c3oo{*b`*=jLyUS<32v|;)8P;KiI~ey}22hw1 z8Q^41_r^T~fV>c$b8GcsX{@@}AeDsvd2`Wh%iv(g?|%2kCq3yIzqsg%MQaaVx&Qj* zYu0g=zjfnX^RpA}Uh(CwYQ6x!s-<uFdFOrL-g|a;cB(~fJZ?<I*tMp<)U(=v1Wg1} zo^m_1*@#q1Xuvt27L={6W!tXFEn9X^@cM=JE*7kL8?#qg@Dy`Fo_t6@VN?i`0fKS( zh2Q(Z-0b9IPkR)`+L=&f)vFb?m^B8)li{+>Ne?`F&Dv!dR~fSBSFT)+JGXMBn&4sz zpt}<sN<k~lL<FUB<LA^tv-p)Z6ezf*7e=4<)1L5n^!V$S{mn-{_HUcF?R?+^*Z<w? zUi{5(ec`uPT=C!kbHQ8Qan`Aic+~Ll$Tz<Bwb#D#RVSTv%E_mk_Qp58_XijLYU9>1 zpUBs|!p)TW1Y`=SO&ce{t5*$u{i|PDx@`IPzxUlq-VlySuE{#RVU1wErE{*OYv=BX zO`CbA1u^ew9t^CA(pu!sW?!jKtF2i|)qW_`rwdz}WBicLq%hL=G~jf-&Tk^lxYd<% zV2>7f*w)K?LWTxAzW%iz{@{WibuL}QCj)plAs+1He&QWlr$=`!T0FR9#j2$%4j5Q< z@R$Gfn=gFfYqxKo<{oOV0#c)Xlv2Ibyd;zed$Yw?)+J+QEYo6eDRy2M!{bj%@f+8C zhWb1H>py?+w5R>$_AL|34|~9h)dwAN*pVHJ26u0{dva_SUs>VPt{vS2OIGkr*1mV1 zd;a9Otq^!eS|0a+bhD`CR|Ud6zKZ0^aVTJ_ikvtDUGlTSqqY+vkkr^;iQ9@^c!ie5 zaH5|)y~nQQ%NIZBloP|f)T4s}^sc*RD~Y=HIr3wdeGps&Z=Gj-cE%Gr`Y*Z}=7KEg z!O*CJQ&)QzT|msLY}+d!qw_-f9w{okwBH)aOUEDc=u^4>VR~we>nfD9qxO6HhUVLP ze(-~zWY!DNEv2#E9Mu+h{3)40O3|DoM-pZl8$K;Kse+O$SPhhtC`2F>oMs*(?493> z+HA#qp`^jAxuiM0fchs=4T4IA;t&<W*w)rxUvU+kX&;|ICH{B;!PEpV_dWUK6Z-m_ zbe2?t0!m7W&588Qx)-4T{0fE#0f3}Wk#6>1pg+o^rcpt=C<_Dzjx91BXFGR;Qz%xU z3-O=W6|;GREYZkfxm`3;s>+lu!7G+sPllwzjY!g#Vu^dh8^xk;>*)BHY(Q1h^hnXi z{<F+l;n&)-c&O{316Q|<?wFaK%pGQ-cixl68)CV{-XgbQ7)Y`-^3qI`rq;UJJE<WO zc|fT+tU+4Ll^>f{R;{_pLI+_%Dn3wnx>vfyDKA#rBcNr)NbH&?N4u7=4!<HLHLiaa zO5#k_hg_tPXgZs@5W-F=g`HMfKt4J`m(s{&mo24L9hCkTJ#i)^g^LJ9M^dGq2?L=u zlQ@jxbY%s*Wt^83vZYUyUh~C|4u!Q0m|X&+iUG+tJl(M*>gSFo*B^QS-_sOTV+>mH zz%D$(H<kbvso=Q}L2(O~^V%D#cyORECFy46rF69t5BBwxA_9tAD5^zyf=7n&L{PzX z1qyJfv80MNg^IHHGKNR<qJPef)RogGRG<WSj^z-Z1%N1B8e;jIPBA-XqEv|kh6)w5 zP?^(T;cA%)nh`09lNHA_+d@)+rv=nVqok13bM;V#QK4iww6(@F@Re1Ae^^A{qDb;h zyXe@Ix8opdizy7lO`SqtV-^{8t{nG3Xet7Je??%)8pk;1nrk?k9Gz1kbYD{9{=eCp z^)$p`X>AqHhLQ4lYPnoT*Np~Jlh{OaQBocDRHFoWQ0`AFNGom?X#h#1OBfV{*jk|$ zw>XW$KQtQ7a&qO<d5193Qb9BU`Y2n4kwwI?cUR3RXd0Mm_gxioE|W~+&bqf7Mw-Fq z>?YG!Pmj>Lod;t1!aUc96zaS+o5NNve8Q84leS|)bQQ;rH<*c`iYfrjDi)Gms9V%f zUWGz}T7oV7c`G#2o$@Qi1yOgT7M+H<X??|@5{NpHmMo=g;e+|AM<rL)96XixC!XcH zCdb&KhYCVvrrg3(V;h?|fhPgEF<s0=x55(XK&YOw&<bq{a@mV&F_-cD6~0!XFU6*x zi7XYXEG<@PNO-f88*9Dj%Q}LB08xR&hvJggD#f@(SW+d6tF1h{6aH1zH_K>J%(r2< z7VKRjFsS@v2v`lVNsd*SHDldzxk4EKksL{tn+k7yn4qps0Ai2cFff@MSAI}^dB_zI zJ?ZS+*y!$_p8mnb%lenCUb_0guEp#A?F;|)!sow|o974mSh|HRt%Io_1CI}qd&QE5 z9*(gHpR%C<Gi?tV&Y}!!3gvW#HkQ8C7Bn|EIMnuEU;o)tpZ5HF@7gu6-;qNr4{Yro z>h0}cxn|Y;*p3}r?`fZ#Mtd$scl0b8Sh*ipq2K$S5B7BHAHy^3YcDXw+i#cHuH>Z5 zrieFL64HAh#V@(4i#_s!3=EtBLskcN&TikumkPRAtd3uhWIL|c1>lD1`mX%&0IMon zHt)RRw^wv^w>{x;k7E1-**`0lUHS<73~m?76Nh#x3bo?(e#_D&OL?2t_O08Y1prkB zZmjoh2_kE(xO$reG%!q?QiSoCfJxYJZZ$DA`J^YG{=%1^xpnu%JKphu<4-#6$xnOD zM?U&rmtS^gclZ2bA9Lh6XT9VH7yQ$;SN-gQ|M~Yfz2)y7{E!FUe&_9<{?r%#{OK<^ z`nX4(_V~X(=iOiU-uJJ%_4bkR8Ex3-hDc8NaO|e-bJtvZV|Q2YhK-xHZQ060Iq|8Q z;fAcs;lu8cvANCLCUi?_O{!i6A^dBvRHF6}s!!@|Ar-$^Z4zsG!NP6fM$=CpOpOr$ zl35@sQD7?7FyGnMv32A4+3);NYtQmU%hq-D4b5`Jgd1umcJ11HckAqAZ*O;7dnXUO z3@uyNxBS41etN|jPkHWDSKZBbQZba8QU!l>GxiH|4*Mhs%wi{g63PLjgdUBD+ewTU zCWn02k9z}px?0bF*Qa0isyDT?E?Rl;3H^)Kw6^zgD+?DwTPH`iY`6mkOxF-Qv}8r^ z^0jx|c<0AH{*Q|n_b~6|h36f_qFoz}4z<eG?5}2!suDq}r{f%}yk1oF2ee>96b{6Y zi@A+*y3r1<yYrIPv5^No<iwS$Xf<qD?V&^n$?~HIr~eX|`Krx?H9+_D2XnmYoZlp= z*7?!#*~xJpWS(KT=9>}d!ik<sgWgcU)8Iu45^T1G{X!&(em@(YFCA7>`Qsk@2yWRK z8ymJ0!3V5R%+7c9FKX>ubou4K*|}r7?x3NG{faCi45NJsYlbbLG*T&U#wnbIG(kx= z<!XiF*DAADu|-y-Hq_{XgcJZN69PnN#xl<q<RnTq`)X%%UMPZCuH`4kww6mTyP~D7 ztGjo=6)K+0n;hec=))iOz)(S1j&;uF$Irp8SqkY|FL@{3um{>Auu#;9<_cm>T>O9l zzo%lOOzQ&&4s%ny|I$rO8U_ba?<ldL+Dei)D+n&{FQ{!1f*(pyWq47X4Ltu9T%A!t zU?!R~b{w5I-F&MZDCAaHbW8UkL+!Rn(kQuYkyjz{e#FVqk<w=4H^;5C43%`q3;Xb? z)aFp!=U`+%Q|fD;_FCP7Q_X6SA2-Bl5+j_AY~^?wZ4CjeezpApo1q!|i65G{11)yZ ziml#oPG=-{aBS<1c0`8)zLUs|d^#>s7Kgcme_#-jkU=RbWja|v*)&$kD(h%c?kxl= ze@0C-L^E_LUI}(I6J5EM$S;#}c?LyV5t2t;RWZ#GpF6phf6F8vzcmo73XS&XWfVVE z<TnkR669Ols3E>|;S3*sjySZJx#{(XABxN$<d^^eAOJ~3K~xe@qMARaEb77RfuDr_ zmq|bZ&xw!S8YHP4d6|^!{NP|8E{8h$T5qwVs`2Cmh+Ir8bfg7G1=weSK-Y+aM!d-_ z<q`t%{v1v&v?3lXK+B?Q6rol;l}eBXH69X&O^^6<(?B};SQFLMI8JZta9+fgTXq1Z zxBw)MYeX(aS_z;Oo5d|S;uk}Tz)EG~P-JV=xtkJ!Sly7~0~uqr=m8ZbK(nPdDd<Xr z4pv<*6Vu6;be&aCbgSfK5DM?Yn0*i$xjGR}b*AZ9m<uTOH5E0I+#Z>ziK_5-VjkOr zQ7hI!FNrv0FW8<!npFau3AS!Ydkh`zL|Y+3Vj%b<33*$6ZmDZMRiRkcjBEig{8f{d zQh`8HkEB8`N9)T?bSNu2!y+(xDI9E5%qCAdC_5zU1T?i3mI{(lsVk<oInjzKf+V5S zLs~@856O#mZr28H<p+;6DY_&3!8oK=kSuE1hZbewmyQ?2_^$Y*V8g2LPgdUH1!2W4 zDyc!)M6PWw7!@M$F!Er+P>@^5Qo_z&sF+Y;rIcOqXT`9VUF%kP9ug7kv#_x6H61~< zgrLMf(ZVuN`H4^ts-Owx_-|~aaZh6_$y8TKhC?N|<`-8)&jzd7>7ckS>s%9_B*O~F zsxSpYO}d)G(Q_Q3R1!r2Sv3j`o?44-7X5|Cga8DZcOP~&|EMN?YBe$;2wtU+Bo!pZ zPOM?%FmE_VB5J@e{3~%qWy4eeOQX<c&{Ff{QcqNPuF3_=;G3D`JB}U0quYljmiG1y zaYoeD);ZiW@bjPj`Wa7u{ujUakH;OomS^%gPjLcow4f_z{`{5k!x>7{m6-zz=PAeo zNoX8b3{czFp1zLvy!VSA{@};v+ZV4maDD%xmDAIHO=oO$+m3A;dKPt!Z@+u2w~r6e zPtWn3e(T`SiqWA}|MS)VdHOS+^28@TbZm?|aUz2Ly32_a=@P}rM3TO&_8ibwmpGtS zo>wV(q-uq;jZL=f*gZbi%9SGhDtXz<EF3))t|pMo!b*Ej+aLaL{q`-}4n277(Z?Q! zH(^EeC<>|ZLD|a>Ku(j2N@3c%V#VsN?w*~ycEOaBJJ+vtAj2*!{8ki<iug*YxKkjB zL_kr>d0Yf?n3$S6^EI!0!V{kOjjw<0(x3nQM?d`8kG^{$Z>L#z;M(JlJ^G{*k3aFG z<4-*90jE9gl*d2eL31r{xc!c?pZ)lvA71#AE3WwUWtUy{i%Wh1<IbMWwQJTKdho&P z4p_5h&FZC#7j<=ap%w2y92ptewsrg68#di``<?gRyXoG$H*xCPvuMS{#3Zl2;!X=@ z3{kL*wm5(<g7l1zjgO6X4fZitNCm0CR)DIXvMcFi1+m4EC0X`0x;dqUumTzq`oZWc zEjXfz5W8z-5-xD%HC-)je2VhT@A=S{jk|_cAJIR!jGJGr^ttJso9}9!+SxnQyXl@= z<~w>9FI&?#ut=`$owwX__fwwnyw85>qfdRx19uJc@Pdt4zG|8tAQm~$SRMZH-A>ER zCIpEC<In2DQm(k7#^glntN!NA7kuLf9Yg!CT(`cvcM*@nPfd<)xbu#g;jP^RU6W%w zcJ0`*c*TA^n%0K1m#!Hf8~My<{^hA>{Mm^o9s;A@9v)F<EjpcA{8F5!2F;se5D|*v zxj9CaxxrNoT8aI*P7P5>r1ul5#>JD?32DYJ;@$7e&rCh_sZZtNzt3N|xeCCmwkBs< zMu%s14Da5xbJy^$k!?G65H>ru?<6-e!gpjRM#m>6SkRiB<iicqQ&Z!UQ+&T*Vv>)- z%(QfL-?QQF*7lx`&aUq6-Yz}>IWyhS+TJ^mN8Hu7*ron)q@V(;q9K6nD!_f<Ehj(l z_@&E-hKIK=S#@A*tKS&~r>(7vhnqIsd+o2UyykI_Igz`5!q?cLw9ZuG3nbuu@AmZm z|Mxh1Q{KlI>t}DE!mEFZEH$?mRtZ=NEORSI_In|gd;yj?F=oK$4(ls_`}>yeo{ru= z#vCGSY-ATN|9#LY57c>X^3;RLBn=4Kg>7$PRY{?^pTY&|NJ#s)U1jFSyG8H_t+Ujd zXI}GdQ+$iqO|}c#1k|)^s9E`<zrUNyJ9PN+qeaksE8WXc_26dc7dS^|4ao#VK{1yl zW<HS8_PZ;u-mqb6ztvsPabA!i%oZj|+8|ia&{rOF)L||2-ya>>Ik+4RY;%aTCsBQq z&0cLXA;M{-+yw_qH1;*VZM=GbreC2Uu1*5k+hz)7olZgf{1?9fGYEqaLhh)d={Py? zp`bFm0G~m*>W!jlW+O7S1iW}GV#B&9T)d=a@kXgSlgf(1+7oYkEL##3S_S;$Bs;QF zPQJ!U*Ce#)jUff4=EG4d-7K>Z#Vd5pwx9+^mVO0e+(!&JO{W^!7_#v}s<9A>QYu## zS{}C)%}PW~u|Uw;a@cy`P#86IUo?S0t&|&&L_5{QyJ8gPRBu6}H)LI&R>z3Y*T-wL z@(u#YRV@~92s!Lz923P)GWN+6TtGa%=6DGb<7q=BnH83ml0`w)kwm2ma!D2jIEZ;6 zCr3&LEh@peD9})ZEX0KsyyO5X^9sR4owQPyBPkQcQ&MV9Q3V7hL2x6$qU1zS2!wdi zDTy;l9K(8u)>=$K-XK{hz^-+aju@-Nm?)b%)S3%f5M3c~D6X?48b@oz%M)v{GGlQ~ zP^v6+#i*)4eQO+P7cvF9XTBMs+=wAZarCbTcg<Ml-GtR<7f90{s%9F}du;S-Y$DO| zlJeh<t`cXVprS#Y0Mdj2hmsS~t>hXc1z7eLmEwZO-c#&49;ld_OqHzVifO7%D+>eY z5(&l!LC?m^)acywRXK?e)8Hs1)d&|H30;x11ac$Z3eTxN<4*`wgjnOi^;55*QEdF? zQFJa>#7B9Pu3|Ep+F;XRB2<fvQ5(4vpUmR4HUCb?RL?ECYipIOk0mR|grNGzI0COh z8QLILPALG1s(>hUQJk7W?V{1Rld!b!iea+B)$vLeDUFjuewDCzrvT*Ipx0lzK_LII zX_PtBH!H_*DP@%-YG^}mOQWO6A;h6k$Li+vOGYV>nf6p{Iise^X`yN%aWO<>`rNcs z>rwuaN8e=RQ>#(bwBnT_)Ej1t8oI?z-YF|gD`;SqzNUE;y)L0Qsw`UIP+NgU_Ej!= zNCkK6Ju<7v1!k?%0VWJVjk4|-YdJY+ou5AGK@Yrp!^V5=xPIlDLk1SDY8_bK(c9nN z(|5~Fx1N6bvp)B^kDqb+DZ6)1^QCYoa$5}d5X_cqc{T#Qk4E^!8znLTX*8EKSwFW4 z;9IJJ?;6gwy!>z8@vX0Xw{6kdWvdV6dva4VbDiz;ySLu4{q7r|@$4tO?5|&R`ky_0 z$Clf>d;J1D=W%Tvy-Swww|#8qdGCDhBOm^4=Nw#oWWXp(%}h<GGjge;)U~sGJjI}? zZn(#A%Fh!+8o8OWmFh<I-6LbJw8u4dA;;uP%*6K^Di{V_1!&<Zj2mybnH#5$J?@0Q zf%&QFR=&i;)y@P8J8HtNz$%fK0j7q<AuKx1a8ETFwQb+NW17!H!QC?B0-4ZqP+}@u z6N+K7qK`1vQri@ilRe<z(#OosjF0bk;JP=z{VlJ3{cCT&;l@iZz2vu7UUBmcH+=WI z7k&3T7f};Smn}X1*rOi)u!lbSv5$V>Ne93DWoMlE@-uesnEUOOzrFmIzrON!SKn~s zZ5uXiy64UfvoqW{iZFC{UZVwGGjMH)n|Rl*Tl?ovd+P0X+<o<Rw~XxG$%Mo%%+RI7 zV~3aUaeBD<*72#Sf&Ly4(rw0%_{K9lnPPD!PPLI5tc`naBD&S^^qEM^!wVJ?AXz1{ zhWO{ao?aGBq`-saTQ<}|PjB0W7ykM`zWj~0p#uh%uHm5)6ySFK;cc78HsA61KYRFD zXT9}BfBmvMZ@X%KdVFZby6(QkED*GH_Uzhn_X}R|ig&;Jt*?6JUyN|+$SoSN_vhKS z5y_?j#Wr(pRxNG8#>f>(%KG{{H*OgI>leN9$}9fRx%A*wYYy%mT#5y|wr|+7@%EOn z%`g7z=RfcH&wkExU%YeM-AfiPZ|~^m*_*yaD~HBMM>dSS^PG2o=R04*)V{tx?;l84 zS46o-krFilA(O5wb9qnUqZ?JDD$>#&RDmj?q#9-@%1K)^C=AoY%XE!1E*?8?>HN`; zues~)J2r0ExN+0wjhnV^*sx{mj-5NV5AzAk*@+n<)L=09`Eja(qDjM^8+L5Yxm7@2 zC|^d1&Fq@w+>?v=W93=E`SI!Y*%!a$b<cb5Q~&IVk6OOOw~oNVT@*}|si8^+R3!@_ z)&`z(QuFgLdC&uo{lQPJoSGWt{fBgjG&$Jz_b(cmYyaU7FM8agPedczu+@hBb)+gH zU4aQVRDf^UH$zIgX&;|fDhX~TX+qmaveLVh?2)P2sZpt}AT@_x13yMIa}U;iwb%nf zhON<YT811OuOe@~Wdm!4o&5*3xA!u^p}mZa4DYw!D&G5>3aX?vR3M*p+DKJcn_zYi z(J5~xEydy(x6O2<Ma07#TDy1wyV1>A5(6m1JHYwrsd5KF7>bxgWbAWSWc2ewc&_^R zWKrTXD%NQ^q{HK=h*You;qCyIO0lWMXPu+Fc3t(mYxjHNiDklJyCcHntqI~l8R8?4 zJd*x)c=y&dEWWq7M9W;&yY=WSJ>QC1N^yfC_S8opOl`vo=H1;^pz5)Sr?&iT^d>`9 z(_3UZWdVu+A^?B|4W??%E1c>t7X&}O16b`XGd!F~yK#(z!cR|!65VB8v?%(NY|+7z zs<_fAx>RY)EG=}E^2)WF2TJ=b_9(H`Mokj8qOi2lz~LEE{?VwaoKjejz>K|O8%l8i z*Z@mp2Q+0+1yr>1%eGwd#|>(iQ8UXL(Hq@>DT}Og5%lF1+7oTPod+Ip023tRI{txW z&Zg~>)K<k}r$@wdj)1jt%F7=tx30nE{<Qh|fqvFfi|dOU&|2?95u{>_EW<Q%?dwp9 zs3}OQO1W_(UQr`;ZjA(o0>^qwF;?HiQ$~tiJcPwm@fe%2wq^#hE~=TT6`S-G$Q=I+ zmiWUlT=k12F-^mu;71oVH27dzNL8Y2CQ6w+Ew8rlBQ5X7p#Te_{N2o@LMsO3i;yHB zZ^){VBS&2lVd0Vpq#W#0x1_8V_oepadf%<6(10&wBfJ48Q2-*4DtHUnjIlP55(v#y zq?@s7F2b5>V=sz5X)1aS+<lEL#x_1l>=qX_Gqc_Ujei=9i?fRj`c0C$hDg@#s}UMT z3gAEGYEYAruCmf562p&hDVI<sDX0HLl4sm9iWa7#qdjP0ti}Zlp63qotRy>oRTN#F zFBM6Z*I`sz0ImRF&3kH36D_B<&a5G%mrNW~Q2->&sj84EhRya;)N>&z90V7=6c@bs zEt;xcG_DmFyC4ZJT#*Z*oe9h%I5J~A5J(G)>`NQa6NS7E54yRAD2obBDGdu{6kQfL zRwCjRJ!TV?aoOq+QIP#}1@>5{1H!$K*&`yLxIi<4Q;sq%P6;%6P`tnsgs3V_L3Y2O zj1GaSpfysW*y%bFSF>9{im-)Myp*F-9{q)Vc!?m-IG%$<?4zAU;S`U68RVLtTsfI6 zXo`YuwTD6BTD%)*(FW{tvQ8p=UD_~>e@l#pjjTfDGy{!hre640&p-LWCp`J7&)9V5 z%~NY;xn#<D$kLU4J-q{4?!M`T&wJT>Kk&}iocT;%;AcqE<ZS_|Rd_3b%7GJ6?>hp3 zDBal<NAkFEzNe@C?t4aF{Gv0jy5hQ?<p(TTb5LjJ5SKStp1Akk+om?%_E#_Yiw}PA zEqtEm?Qehm`_KLGw(a+<Sak@Ora|fHU(&OD-R;-k@X>$x^t;~unq9jc@Z@aOG#pi? z2T@0r7(N|S^jh=~S;Mv5|56pjuW%|$gfR64%7L2=i)^;;p@qWcDZ{F^aqj$vyYJ@0 z%+G)Ri*wHY%*+1zxd$D%m?u-<!fG&LB*67h@e3)u)xuZpwCot3e#4vIF+DN0ecKLR z1L4(C?TRFYD@tA2N}7y{Bp0~Yn3RxGFE{veb0hD9pPrna;%1p6k30U@6OLzcyJgF^ z>#w{1w|w67x4*mN)>|+7*)J~o$t557@IM@O_(6|;<b$8^xJN(qK@WP|<4=D4<4=Ya zk5z8iG=0xq8}GjRu5DYl4G#}<u@^zSM!vs)V8x1MD_5;tv1--2{f7ny=il(gPhEZG zwT%6KJ!{HkQ8Y#~;vsj@C(q3Vvwo?rT(6EZD%0W{jM91!^@cb!fe{DyZY3ispt!@( zP9o)!$R*t_6O!VrQe-E>92FIK;(vU+<*jGEd%mrYR}8dw^>eod5Ax4U?%KZbHge~l z{kmh0Tlu5!fBogJc-_x`cE#A___Eap@FYds(CY5auAQ6jKIg6H-*U_C=fC&O3<ul- zg8<ICSrJouX$|T~&LB`JMijN7#<)&EY<faIIN1Kn%Wizh%U-qlp5dX@hb~!tNN1;) zeYWqocl$jzwYH9b;3Ma~^d(R0=x#aZ>^Hpmb?0x}a`&qJkKk7P`L?db%hyhg?)uHI zuKu@w`|nr1>S<kF-5qV-(NHGeF}UHhl4B539hzfxG#@4LWQl)cC~cr3HGV6{YYgaQ zq4BaOlDNFDDIJ4<^U^oFm`#w;T)0_<?!3K+y8!qyV|(wa{>8oB-F-dXy}ZG$y{nUZ z0@^w_edD2sE?D^b1sX|iouNZ2Pa&W&+z1$yp5?O~<D<KGZQZqF!;dcf-H*P1>Cp22 zzkJT=uY2v^9DeZ9qEiAxnyTs6(Asj2iJazqLh4CRdh`#zfAPfF@Ziu8OD5hs*gD_U z)8EoF@S`97Y~sAv4fLUs+d>T1E~z}z%(F`Cr#(yKIZO9~*SwmT?3I+VLET&iuxz!Y zO2ay9VZo^&$?PqEPZlM2AMd3*lwHFKY9w3F0e*Ys@8+jld;1shI1b>cnaSy~U8g+$ z)cUIy;))vP_p4n>?}M@cZKU83R)t^9)xa)WBGkT!_X?9nWd{jQb9fsuUz7n*5fx6s zLBpaMMGY0}bpJp<T{a5@8BUd=jOq|}X;zGXfISNmuc1(#U_nrUV05<3b^i3COV4=n ziJ~>cIeb&@=s{mfi=>lSf9QJp+~FNt_}WlsYbPvNfTpe4%pr8YKwqbFjPfkdqb8pP zp?QHz0|h;>f}4FsCd1;d3J?xxShAI(5v$rbfoovgH0V7UDP+f(%a934=|!CPipl0k ziU#7aw-W5XBQngirrK(YC|7n-qp&fnKM?@3{|@_Z9)gL20qIJFAgydX(iLK06sZ6y zCIvO8q@=6~#MWCtBGMAADPE$dNrFyva$-_Nxi7V-rGCyAg@s9Yngk##g;Ysz8=RS% zo*ZAXbkV96%cF8}Oo*e54l86)HuU6?z{boaQR#^U*a8Vt`Y~Tph&VNleBwWq5ew38 zQ<m!)qNp7^Cv!A+Cv8Y|oT{n{&Q&)cN397_;T=c-z{5!U^szbsBbwQJ{U}l$SS+g9 zM2J=v&au7ru+Po~yOf8H9ei+9T&hzQW@T9gN^Ed0-V|b?0+iCQmPDXFTbP79&uueb zOqhgO;U0rhA6ZhW3{ZT91Y>PcJ%x}mUu&db5i9c%1xCzp+Bw(G_#N1u_+d~;_u9wi zJz-i{wuMxsoM3OtbsmyU6^q_UH0^@WMAlT)Nbb8>-hRUjTlAB)kvVTpzC8<NOTZFb zI?0{Y?FR+u*(kMEDX8=`X-5c}z*K{ia;wNqM9VNLyu&>VgD)(7QR2^B1@ZhOY^C>_ zO<@;zFb9zXwSaC(nS+oEpiv;xoFWfZh#((-q~S^9?3)EM;YdjBYpS*uE=+ZNRVjIR z7obY&4zv81ho387rMk3{BGBNJd%$?uROcaF!%Ja=6r+MHeu!jR{zcJQhMjY@f>4oj zkQe7}mfJ@Nfh1fa%3S`~xyA*eUed><M578>QOo94ss^N#Xjg13s_7RAl8f|;Rl_XF zlwfVtsN%3iKO~eF`w9!Enq6?>x*(?8FELgut;&rJqqgz}2O-{b2h^e*WE%a7&jNO5 zmB_w`u-}N5x=@mM#!RF*an=z6B$i?Ek1#j){s&86!@;h*6i0~8$W&QgqDPYF{%Flk zDy2|=4ezTZB}l6*3MCNm<B|vp`^cA<cg1l^?_<5QM;x*Ehu{0^U;WjYH(z(%%*@!* zmAsF7U}*80wvO(t_ug{Wo8Eort#_Pz{u_9%V3x1{DN74!Nj3`=b|lv7(y!(!Dk01T z+o{%BzTEbU%dUOd%U-+Xo{>fS9W}6IZA)ht9pdc7?oIdpadvF$+3$M&-@WDqlaq5J zQ}eHV?O*@+Cl_CF*|igWgM9<5rdf+`?^wEQ?S|nUpZxgepLF^Y9(d9b6B9n|PMl+& zVN)KALm%qKU!@tto35iF#dos|eKt4is5DI)g6{Ik%#QidNiJr3QN}(dEK+$Om(EA4 zIp2j{X~2B*Vvbt?yb`-(^NxS`;K#r8|NO@@pY`XjJo6<-9JUm;_BtY42h@tMaH1yd zGUhjJnfmT`FZ{$O|LLad{@C8XVq}yrB~1=28seS;orrKZ&6A!@4_oI(Nhy>m#grDk zs%TV_GX{IC^g?rdZ%}*N+6I>_dHACr`KZS}lEHf0rp?!0ebp~6zUa!Uue#}$yKlPw z*3W<8KbNms^?+lKc@PgF9Dm&5N3CCXz~Te;U)S2Y4goHgYP%jl4J7b*B^Qr3Y?%13 zuU_)aZ+)v{(c-1cmhgB1FLv}4(MT=2>P~Dyhh84#Ww3yqqXGxRRnxREpARf}6+mNU zQT#8iCI>f0XOQp~S`u+hT^KT{VQuXzUj!gjFO%f?p}v-Po&Qg_Uw`Mo{zvo;ES=-s z8HkymV0EBnY~x$s{l?=@ST{O6w{&^ee|_a2&p!9>zwnP=o*v(|djF%kx(C`?m$a?w z*wNPcrO*B6&40Z8)Bp4j%a(RcOwM>i^UQ2pf9@jo#vH87fRai>gEBDF<mUML)b#w& zVCPr<<H9$*;q0lIj%5cPJ+yR9M@R4M^z^PRx9-?@>(UjypZ%xLJ@IiTj*T+mn|sNN zp7NEieDgQIxp8pu@}9w!yfCw~tAEL=12&EgfAr)3^uiZB%}*H=hsV<5C2Yol#l56) zlo?}&=EE$~yDJL1L$e+t@(FH&x73R97kZ=1u#}f9;x5mo=UKj6x}<&W13J3;Ipy!{ z;#P)%&Ys@x&hC!Ro(|tqz=*}S3Aw7~a$BX2!7MMF?#P(nE!9@Ql-Z#~DhC?!8Uti@ zWcQX$_uP8V?bm$nGynbn{6F73@13uE^Xs0g-q{+RUx_3AQEdyJFd($0DtpYMAKu>E zHZihmpnnx7U&IEBcb%Qxy?slrzu}fY-hAir4>+(W1_inmo!|<6<(mZ&f)j9H*<kCf zAZm;lHT3^@+!qZDVYD}=y0V%W?}0)lgiYo5lUyKcwlVsbcxfP*xQrJNw03m&3^1e; zIxOe3PLDtGVW-%&x>b5LXc{~lkb?Jr-=`KpuO%p?h%um&<{P?vF_#zF5OQ<?>FCMM z%tRY{$c&0bWYMG4T(eGfx~I1X?z8hg2`)R}whVft#FBX>6xr;JYnuko1lZjh4b~P% zS{+`bLG=Ih=a<jS{Vgvap_mOz9Hitfe`8+-=hyDXTI|woBf~AT(=8pn8PFWUM4?Af zbdwW8U3Nt(9feJrE;N%p7y_`>Cze@*vkQm<6;+i{G;JiBt3AI`(uA9#l^FniK5g8| zF*HGRj7)bel`dkR3aGqPWVtVeb)ph3J`^6p&u)ON>Lg4_kZO)*BB?O_SvVS}G7zg0 zU|Y#7UX#kafzFxA0iJc6OqNpxP@xuZnMQIkK`>CXz%)9ftN}2{&&^Lxa0h`tO&x=c znUP+QwI825M)6a%aHYB_umdJerYF|zci`Yq2ajf{UF0Loxpamv56Gt~RV+rKMYJqS zFkwkiB^{jpzFs<cKbIE0IXj2e>ISJ)Z4B|uJuu*w7`|~3*Lv)CRZ?s8TCqeK*~E;W z80({Ha`7-eNQK8I#t4d2;P?W(M6Beopzx3>sRHtV-i|QbvdW9E9j_=vfBoJhNaD~) z4?Id1j>+p^ITuhgCkf1COhPePW@29)T#<7qN`r~!l7%W96OA|vPH?H})LM`@Vw7nj z4sr0eS(MFV(&~Xb^=NvEO3lJ0NMJO86?KDuEvv|Bh_2KRHjGP{m?M+dhefnGMOXTU z#{#8=3%Q2iy%L2HzzQ`zOU|pTeHy)nVLHx5x)n}fq{Asvg*#KV6;)FZX9?*$07ql| zLorS^kCp@?zJfB2vx4+G)+mZZ(xR0Nd()-nN@+2gkP42a_1m*4SL2#d^e8fwZi#ME zP!U#SpnpJ?*Q7}m4FuQyI!w3><s8e0iEE`&LuD7fk+q<5U{wLO(t2d+RxD3ZRD*ee zmEuZg5i7kUj3dqC*vd%@9MCUkJ84n{mqHYckt)pc1bhpV?Db!ztnA{{NDLtrSB|wZ z%1SS$*US`MYhR?c;)^|O(5`|hpNgjF6#g+hNa|9&AZFoD9$ZJh(ouy&glIw0uND_T zfff*Z*(gEA1z0hzRIvb(NGS+LT(wn}r7gfGk*Vq7=bYHKQpKV|VpS!jVjGv&u2Qr- z3u2Q_wa9`HPSG2QpqJGgbSzm0q}&CQ(GO`#l7VKF3<Bt>(^>cRb#V#kfc;kd;0ND$ z-QT_KJKy;J^yCDO0Q862<P87-AOJ~3K~(iE9U5A}w14;J{?C2-%eUQq?<YR?ft4#e zMt4mz`S;dfdRAIj#vZh&COE7>v53Yw*Cf$2+uzsmZ(si28()9+++6RfLmtrCzl22x zp7b6Y*|GJm8#{X@KljCtJ>zMQ7#W#HcXgX@{rJZ|eCorWuziyc8t|$%o+#kD^|F-* zZoPH)Ti<%_55NBv)(r3{$W~igU!+&&6%*4b=?=1-u7R0hMh`_$<p`&W^Stu6XV)<I z`||+<PHC#}$ibW};@P4eqK#IjS2Od2Lxa4<;hgi%-n41szyABbeg2<5`!E0eg@>Jb z@}nPq>aoWjvwHPPPMA2so0^{5v2FY2&0Fud>yE2_f8FK3_|?{}JA3*D-*omnzV@~6 z-Mek8Pt4*#RE)H8uwI*mBc7fH$tq-FQLID}dkP&si{6~o=Y2nAzQN$cR|X~~CpeGg zMPiGWFMh(4p77+SK4D~d;+9)(xzf7|etZ4(H~r+IU;gAr7ZE94T^);;E#7bS3cj<j zZ0X`9i<k8F_PUJ1ZQm1<J9q8ev}x;2TtmP8uF2gKE!}-DKJ%5U_h0L}P<lSRh9+^O zodL6JqNTU5e#2bR8?Z4G-!9l$MXJW7CgPK-eQGkUuSR6+v=|GE@JX9VeIdb$1KFCg z93n!3Lsw_}Z?3rQ;~)R0)}d7_fx!iz@%YQ`9UI5D-gWXrAMmPI{?+K{G~d*loAT!O zk9^>bN3B2NO>aH-&RZr|A8_PA|FZVh!PXV~4|jL|;-X)lar!gA_{C43aKgHg-7}p$ zE00DIhi+<zd>4yj%N+08aBSmsZoF3TUGMtjr$74Hmfq#74_x0fxC*~<qx+V7Z=cwF z>(M73`Y&Jj)Zs@gA0OwH1Jo+F?6sW#uD755<mYVNc*g<#i`!efX6D=bhL#VmT({w_ zKYZ#l-+1B^p2+3)@(^V_nw?&#awI)Faior40HapiL!J<&eE>q~s&B*9`cCgzgLOR# zPKLJ+7__r3LyJ}(d-4;8r~G~i4(37t-zh}Q<m@~@CUr8BgAdGkTaPnR=ZF-t<&mXu zuXbD>wNBdU575~b;m1GeTlmmJ=Ro%%$L@c~;V0g6`|oeN@rt*<?ZZF2__BZg!pGJu zYr0=u716n9tO!kRY?b=v;eXir6-OO@@YOeNS-f=rw$5I)P1Nwp*6}U#KfU<!<BvZ` z>UaZp#dh_!M#F)f^}LXctR{hx4oT(0h9XG_Z-(rhZ!TL%??F<5_om!CA2bN>3onp; zzyoTG8ju1g`o_W0oY%Vk>WZsdJNvtOdVH1S{2aGqv~<ip^uZ@ritT0LeX{o_zCpgP zgspjRcok*VAF6p{3bo}pNC1@?8sEs6woR6>R{!G3+O8_}Wn2nKP&P0yfL+|mViQUK zYK8OXG6N-L)mIu%4s*!TxoQ-|Fr-z0%R?A#eS?c{xc-l~-nQ+qLza7@sE%&-9?<*G z1A5FFS{5yCJ@n86w*7h|tM=_ZOZWhA#xXpNVLq`MibB1xM`vi+I~<gaIf(u-PK{+t z(B0NpTbhPXK9B&dWtMw`FBG6AYg4tcJnmDoG>if$LMv1ikcct{fr5c;)=p}#1QAH3 z!h}_9qG=(KN1>rK6u|>g!Xh<PwF-h%Lv#(5eGsXrYI=ymg)q!3f2gZqq?s^C7Pcax z_%fxc46gfmUZSFE-aqfCNB!Ed(qYL7Y;m$Mvj;y|0;Rv<8(O^4^T2}+=<eio1~aWK zyp5Td(5Ln{%BiGPYHO4g7qf~AmhiLl3Y>QtEM{gxm(Nmk*2p4TQ_(0f>UmmJV^{>5 z)nWji@1nJA5Z>X4g+W!E05$&gfLg_6GE6F(S`J{rckz=e4FrGXQe;#lb!(A?&0WPM zR$x4m8CUR=wDC%XD?XZNL&OzFMJW;GRn!RQ3NAFNixFAm(h^)bk*aW%Cy2$g7#DF- zuoRSJ=`Z$>Q21voEs_Gj=QyI+PysX)$_%@5r;c64quo|+5?D+yRrn^g=dO|-$H{Ns zr8T`XutcY=z3z4(YBI8Bun$mOlp~U2VO%LPT&R2-7q+Pfa{)Tx>8YTZw@G9Z#U-bl zJwlgx5q*v2<tb1ucvu0}J0WSyvw1PYkUwi`R+LW{)2MT)S4x`+@N`hv$E{7UE|m%& z&ynE61$^5~M8Xqvu3Z?kZQ$b(r>#!X(2$hvS;GuoB;Y=8!irL*i;eZr#Q|XObMm9q zSgeoyLP5#ZK|oP)QH~m<s%kHw9A#oUE(pC|pgioOu`kohDjMXdC`;4@r#$nMMO#Z? zi+@1CHA;X(7;{LCRQ+Pqrc~aLAsNSupmwQP)QG7NmaWoRKDvOj3+YX(j7cS`5(kYC zC@IG{+OncfVOXI@h0sNMp#d}4akgeu@q;K>qz_Y8bc$U}oKYe6S3<q(A*w~1Nr|mc zy38=wjTu#)qOu7LSJGip(9Gz|vMJxq<@f-lsu1)*bfcV@vXdsEJLE_BArV7BQ?%R* zV>8tTr=)~H7ZW1DY!Ow&(v6cyw^UQ(Wdk||RH6~!P0ajDvS30{OMbPiAaX|2);>8o z)79BBF*()K(e;JTf8axh9rDqSe0tN=)bdpa4K7{N)3>;Nbyr(g?}gv{#gqT|m!J8} zM^8Cn-SEixU|+8+IDOYWOuRUI#6*@vxCGb9sK>e=1I&5neDYJD_~(|s6>ASTva@Fp z;N0B!@Xn39?)u|_2QB~SFa68OCmcM=J9@Ys9n<D~McJW;t$gRXZ+X|-&fmH9o@FZ! znQrN1BGNmwqHE;=*Z%tIkALD{-ty)b50BUmeZf=wg(Ah7dYiP*le5=eRMO}aIG+Qd zo-xwffWsMFS9|M<B?B9_?qWp~tqYkh=3mlM3D8>Y{1J4#I)~d;4_$u<GlaJG>5qNv zwXc5l^S}P}Z+!h57yRNEzyA48FSSY8S^3xn6s(#^Obm6jEnmL$1<(77H@)%oE7z?4 z^rt_!X6=EC7Z1*}NaNXcHWj97O(#&2)F4eMI7K~jr7@vZO4wOaw%`zb8pOG7OG_t1 zHJo|r^z7_J+a&jQw;plqQOBNm%!}s!YWJ>@JMXyT`s=Q{?hk)p)nL=6P1oFb*VI*i z^m+B%Na}PEm%$Duom~Tii`N}~!g0qO_t+;q@z~>z_9frAo(k6UUR6R7ZX3g{&iR>@ zONP2jfT$h_TBJiwLRa0TrEPkctyqcq<{fcC!qf!}PDkyvLLr;5jP<+#pXcCQt+2Y| zm*N)AU-<?{+gazlXKuE8>DqPeU45KZcXrIpj_umH;nud!sSm#YJSIgm(@crb!fR}N z&EaJ)JLAy94tm+kU%%<rtESf;zG&&%?*1WWPn?C^ef#ZCKK(hL{Nx9o^^8Zltl)VG zq@0X<HCkg-+XTxioSv}mFgY>*%2&VryWjYJ-?D?3tvRHtcL*b<CWg0fxMh6Dou~cT z!$13vf4_8T7oWbuY);)-(BbRp4}0k0FL}vde(4L}7~ZjJaK(X~gyZO?EB2op+x@A3 z`j3%uhPm#X=U1o7D1l^ya6ylZUBCh?Z_9|6Z9*a^%Iwo6#-$df<6tbubGjOxG!DBu zX!=t;p)@)=F*Z3jJ=d892n`0&N`o8W&w!kofoINt3J>@7IXyuWAf!s0wdaaPXl{RJ zl~ct1;j`^+U3`VKt!>e|BObYW-7z;`f7uT&{PighJ>zTt{;7waa;Vy|6}_d?R6|Vu za<H(1R|l@BJmL`#x$3H~PEQTf`)PK@Se~wG>FD9np}%|0Upl&DNZ3#eKlsS1917b? zfKn<+RVjzP0ZsXuM~zf0T_F9xrxrLBURA!xT9Ak>&6o@P?+dLUQ3*U90Bc!QOmyv? zcW%4+*1OxgmvnUYNiaJzvU}U=waX4W@{k4I_n+EZz5B;ZWiB|qIaL!i6t>m3^9};e z*%<dl<tY|=^){XcN~clR*#c9*>8LBd=%pJmlo6k=na~li9?aMl=TeeK$P9J(mk;8^ zIk?7X(aFY1X-5oF+%_ctX}Azeef>jYoA12rvfmtf$P-l#R4MEP;Rd7pXV%r)a`chw zfBnnbW~RnEVcpv4!+R7nj5?_RHL9xaJ~r>@vH{y1qYgb2OsvWfdkh)n6(94Z!8#ch zD8%?rT8A)@VWHzDcVw`J3TvmHlqWjU=}HI0cC2M#k}igV=;Bd9mQ_mRV1F%#P?TL- zrI4a)G)c1LqhY0Jad<>PRS_UYEwrJOn1G$be@Su>!*Yzv)F~w5$8HW4GvNzBE#?iY zAXytJbH0JUoQ+o-0fC*`T6h&TP>;d5ZGK{Uf+6y-gAdZDOcjfro}@U*O~vS>=tDyB zjH^g<D9;o*MhlL=Il*E!*1|JWTE#gUi{B1F8IU=uic<myPt{b()B*0o@7SM2z<j9& zfl5Uc%}}5dJ3Q({0$@mG0vQ1781&dm%7o)Wm`0G8Iyp{|+Ppt@rWIyJ7)_%i>jPxq z5dp&8Yyx$h1VU-GrQ#8p>;hPt3KV8#SDBVVB@0!Fv_6^G>WWSjxs@F0)D;w}of3!6 zYQ#*w>~xD%I=kS}vOF<}%<2rx2CaHELKA(><vySaP)O9GFx)p@iW#&~k$-4HRxB-a zg-^jN`+aj-fG&uv>rD6MCQ{jR9gi6gQN~>?PCWoYk+`<QKoO1B;ht8>tXy$SNtx<Z zwP?5+uWX*-xd@juyL7Ig5mMxe-f)XMlvV>X*9Rbm-Ip=Ur3jY=QZ=Q~lJVtP!O|wr zqbNy`2n<M`sK8`0{Me~18@7m0FGmN4qQay}myP7;X1=ZnbgP82upELyQgp^RT@=N! zOCm+;8mSmQ*bA!87y!!zbt9A#Q6-Bh4WS0MWi(HQCRP)y8Dlz|xR|Kdxv|;4MkX;v z-qp>qqM|csh;eA5!7E$oVx?Lmr-s2EXwWHCSSUp&sinnNW+N_)lp<zuW3T1vm<_o$ zC_5U6(qhAm1z4|=ItTCxKlz0OIk7!Q&4f(rq-^&>mZe|<EN$Afxo80wGVIN&UN!+1 z3(vl?BZ!v8eYls%(?vnnZ-MK5yAF>?H&>Wvxk`OvoJ@k3Wd#k&RwUMGabiJ<%b1c2 zC7==Tv(sEl<jg$thdn4`RmBq4sYv|F)p({YK5F2r`KQ~@J?G_|@4f1kZ{Bj}A10@# zmoC|_qpNqxs&(Dn-M8HG$EW=H^FR9c?|R|$9<zIx9)RfKQQ;{+AkRIRhAJn(TnnAy z0tlZfd&QY={NA^I(!2bCmFtdZY3s)5xw*0Jo9`IgeEX>nf8ggn`?3A^@Anq?R70_r z6WOux)|bBI`QQ511;4-Y_JM&VU4tuTXMHExvK2gNu>Hdy`s5RzaN1GFtefJY`1BeY zX-Wo(f<|pxuWZyOIEJ{(mez9>O1hCOr;_bM{VZ}1ZQeeHGHr7mt|x_%_AVJMwDe*W z>u3A5$?=(!AM~L1B}+c{xzF=(!C?n4f72UZ@!G$8#T~b8zy5|l+;r0)@4n|=UqCoJ z+tt;%XkcK?%2fv(a=@X79DMi@>z6HQ>*{Dd`@GML5AQzp5vTH^>@hAx7#ymMy2?~} z_f?&tMCBv9B$C?Ygb!p<3TnveEF_vOGQ4n+*4ZIyoiCrBVU9Q3!X*$+`FncSAAQu3 z#~$-cF8@yPeS1!thj;JXH9EX&Y;1g*TJ{|T9o^kMz5RoOENKi5^$!enbrGw)vVIcw z^tW79c0rajZXz+uH~d;wEE^i^r-`BjZ9|jTL1n)WW>LK|AVz?KhcOL>!Gkq5sZ*5U zu}UjPX6}-zoIu{H4Jm1eWdrp<fBR=X{gq!`@|)h}2loyv&T=sNPHo+I>-^~EzkB<u zPdMQa9w`kC9P+$CODo^8diW!b{qcoged)_zf5m0jjg5`2SbY#TRWDw;nkOW8ZocEp zm%Zk;TVMCqH@_Ggx!pzoYNh=ulW3K)fvd*mEyFK((V5r$_NKwr>zA)Ou&rwV#Q>y0 zTffFfw{6{U+uZKEUwY;X&VRRW;^6TO?2l=@yFtfIO}4$|&42gpZ~u79hTD3EmUeUx z;U8|}=T#jWH{9{5&wP=FNAx7Hi#K#LTPoipf((@6EC2?y!GWe8Q=s=7&a4>7qGD^j zL1oBs>1%lB_Lixc{z0D6V0D1X<|9gu-}GrTA>*yoZYnKR71lx<TBX`bwOX~%P?+-I zR0MIL)~PLBLEFewYggCuV@`a+vSq7p`1SWrd(!hR_{QfS_vqsZx^x4WQ*Elzv}s_? zA7;4t^wUrK<R|{0@!i|IdWJmjLoSOlUA-+mgTKDwcRP2@FIiGZYKBeR8p*IlOIbJM zl`H@fYz?>~nzDsSU0NRtH2eD^Hx=%gY)GnUkey0s<oCokx0l2kGu70DU1|+%|KLh> zfO_@sub&v699+GmmDhZ>61Sr*lcOg-@WjQ7nn?GREMg*C&i7GcPa3cb!JgnoZm&WD zw3Bxb7`Bu^Te=a><v4XhR1upZvo^Gb03B9{Y$BA-_x1XjLwZVZss;p-g#5F@PR#pP z^DS`QB*+4|h|UCThBInzisJ=xoxMN%>7_4v!4o6giJ3h{ac$ItH?5NWvB#}%oBu8! zh8SGl!4k4yW;7<yh2F*4Pt&G?79iCglu}zOE~Yy{4<`zh^2UW47Ghg;(Na+Hh$RYa zVjqy)=#d!Myk{h;D5l_sWno>AH9f3Lk6c_*fX%Fn6uSUTs7nHkxKhr(7!N|Nd{w!1 zz5%x5N2^LYLw{|R7=e>OSfuF+Ht|bsHV6Z+@GOg$nCOYdYhMynn8x+?c0Tu5VTV_7 zT{wpdmQ-H)(wrbEa(-rp^@X{^4m-pv{aF!JCAZXLQ6qU}XBtDe)F|j>mkXsHleGjK z`UeJ?`OZvFbhP^>3QuSvQx1%(j?Q?Hf5}vx@yXQ$&IGutpAzr4V00@S6#=3?_YY%1 z4hQ(j0RoRj4Ob8RJ~R#jBo&3M)+J}YsGnn@E9NweDpZi?axe6f+T$1;CPk=(X+-S~ zVd`P!C<MHMs^nzBg^{(d6?!W>O(|N@4pUm=X@7WBGHZ@u$WBh-CM%_pX~Hp6SxmX= zR}j#w1C^+@G`eOc1@lkuWmi~AxzDZE$-)k%`d%tZt0h|W5te4AbwA|$<hcMWwNlBB z4tQZ^W|9|_@~B}?Zwr$r8(ylv_&N$#hI$`V+Kf)Dw~~aj6V@n6!yp`OzonwE$@(Mj zjXT8wwf&{)?LC2%PK{?s%M8bmB(Nih=%N+FgFei&$3#|2M2PUzW@HHmwOr+>!^<Ty zS2^NglPbi2Imvdan;s{0!u_EVhXM~B)S0p<KK_x77Dblv65TQu=(I{tu0w@S;)j%y z!`ufL6jel&5}OG8z_kSRBg``Wi^8mmI%D@#8O&_qQUaulwN(6;hNfm>Xd{dygFG!A z+MG@sRGds!b1^dc3*-1(_K}^7M8(>wK;aF7qL~4z-qGAZb$Javts`{|FMR>es1d`- zLT4|{r7XI%a@q$*E!h<1@o&Wh5OVm0o5T{zQZe}{!DK0bd(lCK6@w!SnkZx=$E2Gc zfmO7WV>WS0O_zKGkgR;5Q_a*Wf}U<LI@G&L9~MC>g)PV{zr&3s8&`ojkI@wEo9E-? zUEHh2J^pi3TtAROy@jM;287@BWxzZ<N}Sp`w#<!<wLbIDAAZF8Z@u(ouetG>>!wF` zt=w-t_umfiN`lVb?OX47)tPU(@y3^&ch0LABe;nTsf;aJJ2Qi(oO2E?TDE0-%X6Od zlHXnVhr#`hUb*%l)}TO}<I8P#-!M0P_g}sEIq!e(IlM+^g4J{C+XX3fK>_*_9>kmN z>~4SW`_F&M6P~?!;~lHI`dd5tkki@T$4w1eZ@uoVZ+qAOeCwY*fn;%rFSig1deU0b zvbfS65bMsd(E!9dwi|J(>qYUnXQ4c-+157H&t<2<tvg00Ca1lwL$|`_z$v}$Bez9+ z50ot0XWHhMu3Y)dXaD6_Kl|AypZ?4@yzbRcd-_vWE^j^R$fZXf@rc%WzOt@+kqD&? zoEHwWY#Ehz?r!<SC;#OmAN}m$s<lsh#xtgQUAwxnfyR!1Lle200Wc++7HDFJR6#F5 zQ7EUVjKoMz%c2d7R*>{mag=OffL>IMOG6XRHNEef66T;?JzXo;tXjEtwcVGlt6LL% z2`mE_xA6)&=N~pj(Aup&49S!JJnlO))YGwaai1T+;}J+s$DMlAI@_c)FiXtgu8Q^s z9_>UaMHo?;ynA8@$B-)a#9j;KQ$PhdLV&9dQDsA*;kUKleB-9~e&Ay*y-Np|txZd! zC!5)^_3nvncO7~BVXt}R%f@-(R0(Fts`uvb^$mi0ZomDOeC=yrI_vH4`SQPgeQI); zFAi|aJ74`^F>c$IJ3sjDkKTUUUH|x*vv~*~FH+%X$t8WAi%xU1LrYfPeCy~_p8o93 z8-|x3aO~jHwJq(PbJJ5}d^Pf(n_K30p7-9j|LxyCcV^nVonmL|3f1Y~h`yPYl`DGQ zecsz%`HDAh-*6`nJIrzqOG``lz>=XQQ#&`_jvJY@wax+S(j|!>Jd+AfRFLs6t)%j4 zCYMGG9<@W)i&=Y;u)IstagH1-%v2Z%)Ie)z%k=ET@aWc!E#3Xg_dArc9;b^m<Orq? zSt>}f#HsZ0Hc!}srgJDQQA$)vX^jHSq%)KV3JVA`!C+3Caa1irGBr!JcCR`3L~d^X z{iPQ?{V!j6;rIXjAtxRb>ar_xn*foLyu5AGv-2mOaP0CGi?@$%8=Bv5zLn)HZe?Pf ztEXpR$;Nwc_~Wg&pYp(iL@rG@#3j12k1Db?SGhVk?4rM!Mj}R;<G(Pm_<!3%{(nPn zNNP$X$xc;G%c-c1O%1#~lmMk@T^9!+Wf|SfQpE4)mtM{~Rd;VcOZ5yVQ{!VTynx`; zQ)<FuCio42tef&pNlV=J0ZP!^9}7tKC`vVOtB!Z2<rF`Cmzr~aPDCas7bqMHl!{n> z)n+DoP-Q(m45)Mg(-0D__9>P^Mc9gz7DX~z8l8z<eGEmKKXK2-dMRz2dkH#w+WLkr zzx>LHaUQ&aL1xfeQD~})Dk>g*<YBZ;zZ^;Y!_1zSK8=ia?70PiNJOzmRSx#()Vo@d zKzZ3Bq4Jrjl4Mbj5|%qeL`sbj6DuR>05o=vq28-D)p~DO%cRgWSSl5qh_+PWA&;p= zjO8URl@m?FNfixO9Y`u7g0NtAqPd(C>)s5XnG~1_clZ_Ea5{;?1bLW&*chtJx-W`M zwUr9x*{OYvXK|P?amsBR0O)bYc;PK6PyCDP>5288ePvi!%3`y`^sZo5&J5qVDbAoe z+YUJRKo+1h24ptpHvD-yLrQR%WDG81R4%|`c<ACR=khZ=oHE1|W@>!L)c9aWM?asy zzy;J<hHB>YiTN1s8)6x-_yCg*ceI%p-8nY0mHOh<w+JKFsA#OSmnK$yRf|(c`*J+x z?W;D6T<-+xK*B|*@J=}q7@JfV0bYE}FhEA6;^APJ*H&ws)e2tGp~C`@g`tv78nNol zOv%M<fYnP6hO9>8C}9IycqBxyD?H59QdAb?N>sSXuCk^uwUD3FU#uz?)ex+7W)5E_ zVgj9yIlo~nOq_BRja!>AQ0ZWxviPR<+<=C`eT&4c@C(wOgytITu$`MY$rs<~pVYVp zxZNLvQhGmoIn*1@px%A-c9wf7+s-}f{Qmwfu2`lQE+*J6(}fy8;6trgsH*u3Q2HU~ zBdKGxBG~Bda{6ks<=<~dqkX3DPDN!J{xEggMg}g<RQQX3Q$JLI^<|u=7RWduwL&qX zn&@auskYJ+mQX^^gmlCfQ<Mpc4WqEL1Ckv=cr-LUkb&;$Lhu|e*c6q79fV#`a*`HQ zyx^e^f{(7Mo!TOy>IPb2qG1*XC-~t_GY3LhO4Tnm!o*Re@B<O38}Vlq7@!zhd|Q-_ z6}0HcFA9+a$>~thI;<-UjOWyWeNdyPc3`DaEC?gZ(E~G_GFH4Z!%RCAA{?gpPnUxk z7!0%p`Btk~oKIyG!UFwbozt~xAvj8*CyDKrs)O@s7lhK^Eily;vXvrt;u<V6@=~$- zvrnT{n(9P17fxWB(It4PHXx1wcHRgq!JG*)zJ(V!TEJ4BwkQ!@Jk8;rJoj2mFPvW1 z7kDF=ScX=1@}a!cQQb~7Qk@hAy%+1G!!xop65@>*#ICcWZ_DQG9qsro7fhm)u1LL- zE1NDAq#JaA^`LOh)keqXjyiJn_rLS?H@@K=-~8(L@0y-kvHzjnJwrVMi&uAc?dt3M z=!ZXd^DTF8@t%CC_`I@xAgk$|-?Vhx@W(se{Py$yc=O#W4?cEq@fuEkv3+cG`{vvK z(AGZj!H>M>WiNdi>*c(a5X+gyQ8&dp>kxK4u`o4%@(Jr-^_rLc<3D_6c-Qj9%l2cH zo2u$xv}|PMe!uzo<zM=LzWIumKVxK+8JAzLrSYmfI?&q6d3-Sv{WMReCX>}jf<zkp zmi~kq@l33(x4UKSs)1c2Ejx!tc@cvZ?eIuQ8204^skCc2;q}q+$(OzSRlB$E{=wJ3 z_WIYp@x34Tz!M+;*vCBj)MJi4diAPRLqokCOjEhoO2y62k4?;M+p_(J8-3LO+u#1d zy?1Wn3G{Q`dG3DuuN|MBGz6{5I2657r|e1%X+bd{Rb6ET#%667K~L6cOtg@leS!$; zTmp%N{0SC&X&n=Isspf8GqgMu2ZLBPqHW`GaaMEXE5Hgg%+V7gr-IBAV)K1H9YX^{ z{k@>sMBwA_Mo~`y03ZNKL_t&{f*C#U%A@LN2Voo)ir6S(e-g_r2TxJ_K#Q=n1oHye z$2gTKTLldX5S$;|c@^b6uM!yBJ-uYzksaNAbG-esjhA5z@7j20%lyQ9-*Zl1U%Q_q zAQ*@!<H|eybsjB~FFTCSaDn9`A36KTBab-ytn=?4A6>q7eP7?=zW&8@HzS=r|Medi z5H_7%JuO^KwcRt)LC8qOno#$}m;CCy^Z$PHmZ_Bo9^E&%lo{FdIM3SLGrIZqzJc~n zee#pfc={taVbDYRO82lTfp66(W)hFjdd6x0_4S8c{Ijb^7BA}?S_vLgyTwaaP7d#w z*gZ-|l2NR3L;RrTY*d3iB~@zwMjiphq2}yO5Tq2LRZ&2tVG6a{K$)eFYi*gi_s%<7 z#wJ%CcXI#G%1Q5c&~KF3NT`1PY-55HgFTLS*1q=0*`#}S;3Y5s2@Yyh3391sas6|k z4x<((s_kQwElXA&ebhteuK)R0|MGcf{_4^TRxc~-Bas}PlBzVR<Q1h7VvC2`PdxG1 zAN}x`vojN&UBs)kOvl>S*E2CUcipvrc;E?qz)v1g-hJ8N7;cRm2~mPpa4XElA?8%M z+BFL*HqiE!DCqkt*+bMGnLV+sV7Dk(l&@_n1?(5dgWSjl9nx42lq#X3XJ%V3zwEay zUES^7y&;|*AKt~d^st9C-cVSqt0XtX6iLa}S~ZpJ16$F1ZhPnVF3tJ?y$n@k_f;lr zQ#5aF0vgl8gcO_oSBc>g@n94Y^Q{Ae0}fy_Q*v^srdj9KQ>QOwc~s98YKrW<6jK<h zxj9s!KlPqlFuE2kT7Ku9SKoBgh7(TMkEn<j49D86N-4+=Iqcw$zK-GD+nB33y%D*z zWO2(|7)iKA2l`t2Wbo)obHjqY0<vwrMGsL^lSP<&<RUStl-eLo6j&^&@<_ox-u{Rm z9AUDm;Drh~)NDK=t>OVC8Le!vEy6%3cAAAC=7XbHK$eA~h%S5Cs#TauRcR{J0<uZ& zou`K@TVW%Yy-))Y>X=p`S0*fE)iISDlaS{4$)XP{W4rnWmvs1c7-|4_NMr9!=v3M! zFyNnB;7AwTJ~zX|WrK?bSFc^gj7a7bt7-<zN(*(0`h`*#kcziRRz4I%iyUxShFZFO z>5|pUcHFah^9=U}^1kOK9X-rOI{7>?*EZ0LHW3b<%cv#~9{PdOF_xlu2DD{<oIZQm z@|Eq~B<T^$G|5=X1u3TsHU&3GJqalOQ-0JgYRMQtpdjc9O{^^vwe}8}Vylaj0?w|} zXv^7R>ZQog^hk(HVnfX?SaD4S(ILTQ7spFkDJooDDt$d5JA13oq-IeS*_WNg;Q$k8 zgD*qde9br#!E)LYbdorLLBvXP1rFD<cF8+aK{14FN#Po~P2x;8c*wFTn_Sbb6gL6x zoAg!2neeH1@mv&?RNbVAIBgNIH_wJH3%rZj>13HA5YkJRE*|Xd+BrOa=|vZ_(w=oC z=$u08Cu2Cyt>xK<?6aJ2iDWOKzr=S<s@`1HQzhXp&=KdQ$o|M_9u$T$4$VRsOjSSk z1g7^>pc)qZLTv4e<&Gb@Qrj?#OG>Un@PMAODc)kAiA@$GpijJ5nS~XdF!Y`$(oN<+ zGGyb%=p;8%rA-u#3UjML?(8EELW_-8#21p#HqaF*ClMR25i=4(Us9ni&M6*@6%HEw zIqzgj>3RYEm^D*4z+Dg-{AGeb($hF1D7sx;BPTj#23uSuRbf;b3UuKEvf9zL*!2}* zF|I^O3_*+%RNaPyPO(r*nYfcz!3CxU#R(Q<6BK#$Q(3<#%{q~SH{}6OHRKRZqQ`vd zuRMtsG3ttzR4aSm%S#%~D<QQbimnPob+#hSQpt-cvI{qTX`8gKC>qpWHO}M6XeWMn z8C_AD9GkYq2XOX?2tF!a#c;+UU>G5BR(g~1iE-qNFB<5LM&_ccSd9&cwaRS62}Bei z#E~vFr$am{+44_cc;Au79r3>N|6#)|!^`(Syr*vopMqbs?7;56!Eb-}vX-e4u7>z@ zrhznVC8A_!&)eVeUhcGBbI5UAg`491Y-VzN$GyCgaP@)9KJ)3%JnB)$PE9&#i))mu zQ2t^lQNU|!Ia{BcY<>M3UisbcefN%AZyOvKZ0}yorI+c}t|cq?+pv4v`#<par~lbw zSFT***8ymP_yEIL5%iH~Yo`1eQ5b0^25Ni>xN5x{*^m<Jp7+qP@Ik1y`6UCbgT4K` z$EJDJ0xzh?vs@+Pc|0^`Muf4(2z82Nr(UgZKl|J#KJoPb`pUmv`RiZ)`@etv-@p7{ z+}FTO_`ct7@nXK|#@DrmhsSnq+qG@mws~)J?HE|T^o-{`_xUe+(E$go8=ssiVXAKO zHFk==X%g05?9jWG#Db(q8z4asHM=yDpm|zj6(>4^g|dajz3sB{iU|VR`?$mgiGI~E zBW1pXI!W_(c8+nR$$9yKg*0Xhw3s;-MEV9g2K#$^_~co<gnBs408~}f$%2J8swway z(w1hmQ5~Wi3keN9qnxM_64Z=?(y6F!QKTS<2$qvFon<FRYI=5h$zb>AKL7Pge)h|O zRqI)1nr-uKluU}YZ@Q;tWb<FY<|Pk%*a=+A(S5u(8MaW{6DS?S<T~fVGIOuL`I~3) zPN`SF`t@7yxN2zSA-t!fvxisp^|tp6{P6pi8AaW_qC?Ax1oHwuY}V29l`nszrF&@2 zLC1D>bH35eM+&!YxqWu~-3K4B?w`N-@e?0#Xg)WQ-UNdPPg(_!k5<;96mHShcfITF zkN?Fpx8D25wS9f9okIjWQ@*~T{_)||fnUWgo9@;f{QRfIVTN^<c?+;qD)4FzER|Xa z3L?7by>v4=gc#%<o<zpvrhD(1*u1T8?fQccJ85dR8$YWX%4xA4qgFE(sEL(|(40vq z-cDCA-ozf*LlTgAH}+auB`Jj>Is?Kp0yw&NZq7?0+E(p%^zhNA-u?R@z5VR>|I262 zEnIY#C<Z`78Cl0B4v}L6e$o>k^P}%xJUcbs-PJ$I8t3H9?wwmkc5Z0v=3V%_4BtQ| z7+jhT&!S_rh^U1f65(n|IV_YU)c~4E#yuMp``j7?`z$TMLR;}^F!~dem2N>LtvmMG zYDj%daq(xt#Qk`3^QQ6ZZ@96&XIWQwH}l`wnaPpi9o&v_#QH;Ph6`#eq+)K#vcJEr z8NbG9f;Ezb#U7ffoF^B|POT2N7}+|@qdR4wp`MBjrMT>kmz={G_Z2Bs?=5*;l=U41 za04z+*XON7&$X(K4ydk8fXS)q->OLj?xU@FmliFro%`{2Ot=61(qEqNfM;d2BCsMp z+@l&C+}5sMylUm*jk|ZY%ultp_xcutq6K9(>hu_<%a%fQv<o%V)4D09yJv=t7Ny-2 z_q>3Eji7eSHJM#GkTjNIkt<*x6$c_m?jQC9E}KgOF--&HflPZ}+e#eemlC3kjNub$ zagEsEK&@xYxG6`QU{{KyQigarP#AqIpof<^M5tybQA{KuAedk$nVoPFauYd>!75q7 z{MU$r!625hFCLHtdj41?VF_lo<+R5=;)nlz!PMy1vE6-rgDczlysL!zO*0h{&qSJ% z5P?rneQtVkZ0Fqgj>C>#zj#p}kyhQz!YE^hSX``ZMbin!&XNg_SZ&uzscJ<6Uh$5( z{-K_)f8#43|LEs0_|^}YUQCY;dm*L0i~Fs*I(s^K%XE7uY<;uF?A+w!_|)XYEDzTa zU3`tEmj?nnxoPcF|M<mYjydAcLkEUO_(ZYq%2f<TaSMXy5b+O{QXEtaRNu_*&<c}6 zU`g!eXp;e|E&4DHk|b^gD=4;K3timTuzJ(R*jZw&fW;}AD5Zi0NLm>cEa4-_8c<B& zbtyxbd9vj!lbdjxwTldkK`SJcq9Ms06Agz{IEJyomI;lNzL5!=3|j9?;`tm-YukCZ z4i5@3QvtOE%7Surs^}ZJmA=uxVMHu(S3&kFC7X>q2=F@`7Q7;6;aic$LNzIZDrm)^ zAz&eoKQu=Q=P11R_u$o^{P_EL!wMfYD)s0T+ZLYx_&!TYEC{55lp0cCqa&~`=xzO~ z7*Dw{w{#NX^b4hk3GY-zCKFG&vIc=i{YnRsh%P7z3H;L6Sg#5u>m~;_r=8Z1aE1!k zx}0KZ2!HCBNr@6^BuEz)@$6+&8SN$7kO>kII-k`Jj@@AVXgk0?V1%Ej@IWrTxmG*7 zC~=+G07(L|I6zErpdowkGe?&us*+HAE(|eUbRH(7j8sZ18v<$(03;2$AEoo$PhaVf zcvEf~C=F>e;Yc6BOMDQ<ctff689nqCQ2kbD)Tf}yl90#sF8#!N`bhjzJF12nZmREX zNF;$&K*<d&5uiY296+Ib1&Jtv78gALMsZ3Nt=Gja=0Ier@Y1=+M6b$9maH(P5n2Um zh(>_rE;q5=WWxbn^`ShKk(^0FK#gRm?H1FGyEhMKw?v+!0$A~;VVKUqvmfXqMsrE( zT_i;X6IEe>lF_xwPl1IF8_sIsrED&vS;car8q}ZLWckFv{F0&Gr$6lp+7Lrb?7iu1 zB^VrWXzq)NiLQ<C@*QIM^{;)=;fEjjnpeMZ%Pm(Atv+mk=dQWX*1zJQ!+Y+z<r*%t z>p?7}aoCVr=clK-`j)TW|A4lx!Re{#nTgR|+wUFSbju?j_ux-`;=}vzzi6Ci?Tb>W zSn4rB8rsAG*3e#g!vIf=f8@jO{fnnQcl*Y>R;=r5Y3t#9sjF*X+1f+4-G22s?|k={ zzVr{{V~G$M=HaS%5R(w0@2%@tiIRZ$=NLCd2dfB}kz*-S4Bd%md2nILU?<<A8=Ghu z9+?`Sn4O%Oz{?aRCU6*y1?RO*q5kCb@h6}1zz3hQW%K6W{pO0Ruln6Bx8Aa0)5beD z?7HpFtqSnV@BKrIhK_sSk%zB8{FGBpKJNJA7cF1Jz`zPbL!aniCFxN0Qzsouo-Mi3 z$)dL9ffg_}8HQRHliZ8p@@3%@4khL-5)o@KJmFQ`Q$!is@-uGXBPV!!^xRx$*{mev zbky-~o(mJby<L61U3?LYUR}b>T%$R3Y5-TLD_#aI8R2Zvl}r&5X$2H3lT=Tm13lv! zk;qXdA32m{)QuEcxFG<1wy&rAwp+Kn`&}Pw9auiFcqMm|;}k+;eD|)2t#=);{-8I# z@wHRataN~^j#Klqyyj4Kg)js~m^RVK=SIg{9(US<zVp3rzWk-HzTxVd$0x>@t~`ME zbPO$7-P6^xb<-xf@cKt58g`vF(~cf)!(O%j`nIkf-r6y|Ytzn6cg_uOe8TCE{Mbi7 zuzL02=onLO96;b2&v+2pR0HPX?drBprliLmz2EEKaOQ{J`>Cy)?_ITaU?wi^>f|LL z5>^h4R}rjR;vKMHT3i)i(aTYiawe4e7d=z$WH4Hcv>gMGCdzZ&yl$v<Zqq$?@4ow< zmL+SBJL%yqZM`$zW05dXgdLHjZpxP*jX8=4Q5}m-RaiB0XyWeFWt~+QH+3u3Amh@y zL2ToT%dHbLa|a*(pnLDR^~?YI^)vtG1rI)n6V!@5l*JDmq*GcvK?--JKYsF)PJ3(L zyS8lPvnjiIV=HH1ot!-JriuMmKJpQdf-GA)bIGwrUPXe(QeKRza}8i!=&=C|8zGge znu>%rwgy21a({_EFq@UC3HE^D0SEwbXi$og+9{BdmE1gvN}<aP58sX6dgbq~8rePG zw|Y@4%Wb~SeU$T%V;^+<;w3)Dmo21qN{&f45+z$uoA(t$IW(}LZloKOm4rsVV$;T3 zcxX^qWI!f(xN1k|;jo{E5?dg%(Ln?-HHw66V#P!A-Cf-*Jp29vAT)&Z2GD_4H8^|| zbO1I({$%GIipFc1l;ZQC0!Gl}dRTq$9{BN3e*U+wepUvR$}{K@<VLn-pr>X1!TaBH z`JK}&tM|wgMiJpvH29N^@$_g2Nl6-ub5DfQw3%hMwRH8g&(X#Chyy=HMyPWd?+gGQ z_C7K;xaFw+m7tPU3jH5m;vzY-4J;E>4AU1H3CNI!*m1{|g498bw=_PM1OX^fQu2|^ z+`?AU@`Pa}DZC3nxCKQEMK%y?^bi)F6vDkoCn4e98}h?YMDz(k_L=}aAhThEXko3s zp62;4`137Wc6|6lpV_(LuF<jS!9~lvy8HMNyx%*=hngCJcvk+>Gt$gVP3{`oI=cOy zmdV{OdGYi4C?Tw>x<{1q8e2jtDo733j@c1H4Af3a?F_=`u8`TIk6f{O)k<Ciw0P-q zUaK-bJ~}-$H90aiIX__tTGRA@P}x5-iSHd6>}C}2>0=dPdWyT-I)3x3YaaWAr+(;t z=RE7#kC|fH7KwPkCS?v<)TwGfCee+(h{1@bbB@z^s39hV5=7LMj3{=fjE{kOUTB^o z-ItxVvW2-6$*D&{sH@CCDzJiW7Dma0##~9n4$r(OL<@0JK#*7G29Ah=s{g`RY#Bme zFckT*GhzY-CzV2J8U8@T*IZ@l?&gu`mTkM{F2DH7?|u8nKm748xT@k*AwGl7E$TL> zDhmQCyPz!K)g=|AE>&^1hRO7ane!F3t9=kEp;)9ZLRFk?QZ@#RjI^jp*HUc(hmcEY z9j(uP_Gy3l?9&>Unoh`OPp5<iWh>QK`Uon46X@d8!p+lbmtn1pLMvvJ$v*IO?S(_B z*rH#>U;H!(V<Kwrp}Sbxt8JwCH_HzV>AottoZ1xqy>ykXGnJd!s1O$O(420bbj>h{ zXc@jG;3^lBQBn~Y@rYEfh%QAH2Kr|qx_B?%D6*>ZMpY=lwyy`nstQcSEC@5_R>?@Z zM&w9CDV92Lh?WOANE9UlQ&VTAoB`+`O6n~^K|aVZNRgS^lX6o#B~}p@Tz4#+GZhu; zzYzYd1>sqWFMLy0mi;Ro8B?n`$pTU(w^phgt>ExUj48_+tohUVSh^5nNG!4BJ~}k9 ztD~a$D^xJw$0oEe&|J+9H=uZrrwf$A7@V^^tgX^MXye&csqx~AM3)|^;&4Ip%0IQ3 zLX~>dBA1lpQ);%+>PkaXJKWr)c%o+yh~+jQ5XI$o<>FrR8pUY?v+v2#mM1;_LErh# z*IxOm*IoCU>!+v3c#Hdd|DxW`f!^Ms=?PBc>0@VGd7yfJ#z!OCI+w28zk|20&CE=X z@7%iK*6H0FU-8<Po_p3CcyAPo)I6c&nG={$DpG^lG4-ORn0*jN3DNn{>Dh-p^2EP* z;d8$BuiqRUTsFjG+fHrTdzY;28d>+9Z~pL`Prc}APk;2pgr1`kkdDr|sYvFy1P8#) zIaH#8oFc5NVl##tUTnq(TJa#QH)5liex>6c>}l!i?jnYGI(>9va(r@nip2t-M@1rR z?Cv2QpXR+REknzeJ@NE2PJi+l({u9^d=Pwmj3IfB%T}G7Aa?ihwyW-L&K!9yDA%JV zCU~V0_G>*XoK313>XOGFSYY5(ZAlAahKW)?NeE2j<>*e^{P$28nZ<6Hd&-MnM2r6$ z%n?(9R9A$)#0#XVgMS4(!NoUObaAHL+1c9L-__gK)!WtP9dz&&2~nPM@))p_m&l4C zx;2^r^BIFQT+))I!3f|lDg>OCwP2AdfFMtB%)yVXz};s)KxOi#C7wVwKikpP&O^lS zde=uL#yXa+<K=>ji7ri;n&5qz+(3E$d(K(Bq<ef4bRXkK6&n^aEN0;JU9>R*0tzIT z%4uyKnVdWD;MHIM@Be($>)-N&|M~Iu*@-19xUFVU-{A5dUQ0c^lMhA^8;KCS!rcm8 zgNs*jL(TNW_~`Zx+c)3RGO_KIul<{I-uZg!WOTySVJ=W2j#CQc=P4)~R;p9cEJb?< z!`%GTRO_o=@!|`<^MgNJzhQJ>Y46}l_0pe)E{5xnYJ<*tj^cvia1g7`qVO;8)bPF# z5K2?2{Fxyj%M(;~N9#=6+|<Uq?;N>zW6R>zCq4Ly?ft90@&T3q2q8fgE2!u#1Pwq5 z&|J1ESMtDW8hs2-2!cbI3Wcm3D^`YxP|uLia+=R*b}v2Xh?8%<{I-vO;&cD;r4Kd) z!H%@tI2v1)=&&To5upd{x8(irdB<7r{P5Ve;f_UXSFTt|cd~VMa?_@JcWm3XX7w80 z;Z>B7NEIsbnrjM+&9ZOairN)qk4#`H_y6au2sO4A1evS>x+LiW)JZ87TU(_p7SpWk z4%ksgthitDi{G%8!fG*Z8^@0mV<RmyBd0#>L4+49(oU(RRFur5%SNQhLNRPsWnEGr z3z*55LOmb48mH;FH#s_XvSj8>Dh@4<4PMJ>o8qCiRG)hTr-ZADz@0-ewBlS^PRsnj zzz_?5JYs+^=%SsUB#dlFa@LqCE^I^TN^QA}XgVy)F<O8~m*NdRbT6H(viC2(;<s1t z+C95+DdAOb(M6KlC!~)&;?RqKe#6w*aCh%=R0LuZ(aQ{=-lnV!X%MXjj7^^YbH$hO zwXNmKE3bU)qo4Pf(;oiFM?K<!CqH26QXM`!<5N_bUdfJz#xA|J^m1aRA|hNJHPk4Y zJ8CK0JXM#tvcn}2--2&p8No^8hzc&)aU{Hgq?5#t!0crzT4PsYqxAU}L=E;Jgb{nS zEg7kFPhF;TH_Pe9%U00CfSqGOK_FeB%RNeAy<@Vq$W~Qu%?1zQ-Huk?Rs5zmz2uw! z^P^j?zk7Puw(TRsT*T<@>+A0B?dW29;FUN2(m7A_xtHl_t~HF#PL9rv@9gTIJ@<oW zKl@ovm@JnGkVfT2BgLq9u`-$!bI{D;$r%qAp7B9MI))3B2NzyDC&uQlzWSP$_MWcZ zrET2<Jq#+m!I~kQOV*ChE-r!J!TUUU`7o~+W;mxx*`)61U)ISxr^ZI^edR0Pa`7ck zKkMu_tz6MH&RnaCdHqSc$Wz%kIG$2>jfN8mMix^gL!Njgwo)!$OjG}4*m0G#gUA1f zWlc56suD0XIk^H01h;ss>Q$5)iG+Opt9UfYDXa~2(Rg89Q00`-KW$7_6|s_=n3%QD z@M~-)>;J0WFciAhu5P}1G{1fO?5}_F+Y7#Z;g5cL$vt;(;x+<aR@%e*<MgmXt9I33 z_a_oXXi*}rt5lPOvJ@0`3l3@ie5+O|wVo@I>QLY~rD-!$;TOl1(mil0bZoSy!q%&y z1Q)T9KFY_C5T=7m&BHS~N6*AU<~K!{{P1ZyY|!8Ut~YbY0cFUFVL#$IJb5SjY_YH; zL{sqy5}r)znH&WPn9_?;r0&quBxGU+>8ik)ni>=iWyV_S+q6&JFj-@eQHk8-C}NNm zUFb5Q0!s<<M|!C*sn`TapK>(ON%|2sDi)Q1M5%NQdRP*diXn5#2TP}65=sN5Lc)h# zcmpp?6^6KQx6GUy0zin1idO-swJg)qfD`6X-wWN)C`)j)MR&~>6wVywiIMm-@XFVP z!f*+uJ}maq%T~5VT+$4WXs=mPOX3z%(rQxG7a}T8D>9tpk`R++PH$B>!*=we?il4b z!hsnyysH>1br%bav@nWDQ@J$^E-K`Ib=GE)9V+U`P;aZKX=+FpYNM*68~3?qSTu^% zpE3YwR!Ye>Iw4E3(E>Dq4SW7<O`Mwm^^UC2$wvJs3BI}&kAdI|49a90fiNRr0PL~t zosX`SSsLd#v9t(-0kMxZoXV0L8EZNC;8oxH#($oD&iP;cfBtJ?a%9DtL)&}%Vw?Ip z1+!+EM=6(E8D^&^_}<mlyKiV~pZWNwKlt3|ox$UueETqVW_Y0a$s2s!LN}@@W?*II zawnGl=5>K*z2i+k`pLyRH{I3KKhW8`m?s%J+q##nK9nySyz|`mKkCt^4)%A(yYk>t z3DtoVwj8ipz7auM7`fCNxeBWsDJEKiQ0ZVmF@wOq_SU{`R|>d&e0oN$CMLM}Kh1Ih zj+&pFrk2p3hjPbwR8@giYX71^#b;>?BxZB08njGC15t9?VH@}KPlTvS360Ea^s1sS z%7%mBwXhZEB_86&f)9$`TR<}vEecR}297!8rDKVsWQV;)I?8YZnC6%G&&-h`*1DNb z^mMb((ZS31S@Frc!f9NRJEFU32RUe?aB3FialTfYunO2rW*;Ku2e+6^E45IPYBM|v ztZ<^(7E+a#hOF~!au`On@uU#7*7o1uy7ar>zPNAc0X>7u=b3u2d@w(|d&kE4;jK@9 z&eNXsq=$@nAB+OyZ!1D=X@P0x6xkfyP=U(PGEO!I`?@~&*^ho?{bxS$5C6D%dT!a8 zgZul2+S|KYTe|3iyeCsNXcwr~$((Cyba=;(4a4`|+}$(%p-+A2`OiONg0F#2d#9Y1 zag(;^FR2~Kq6K<j5&Nv9d$LZe7#L{(!28aA+B09ebL(9!(s6N6axPe*Sd+V=uR&7+ zCne+}i%hDX)@HNU(eapOTYXlHR+gS^s;iCXghubY<JOrSyE>QcchZ9&+upy1Z<X*k z5UA=H_vp7ufy9(Wa*9an)~q|jPgRRk@o(rX2`v6ESilMr$BI#50WRv5@PPHiZ0oB1 z55H}2)px#o@$Gl+Jm`SM5I{`hYV^TsClBG}7?tca{_fS!ot~b3$2;EJ+tb$7-NW_g z!J);ww%>WlWtSau>@#hI3F#bFvo<qHca>5_*I+b3Nm3Bs7wEqC4dNgd681W$=FmVX z917xnxHZYIodu|Yyhm}fB{Hh&FX*8VJO4!uVk}-{P3w|h{IaEkyL0%!A*YBl<D<KH z58$Z}Jt?&dQE8DyyN2+>&1_L)&xnn+g@R&QflVCb3Oy-vBq*YZaDvRu45o>RmyR0% z03ZNKL_t&rW^A)%p4YZ**C^v~5kjNl+8u)v-(tD*UOp_xbX@hkTa^g+S!d^3+9#G< zr<Z^!YVB-q<vY6!X*@s?DnbBh*$k#qIWdBqY|#Uzlo&JOxvQCj!>I@ZWM}8#k`+7d z-0+7RZeIDYBg4*}p(#b-Wt#1nBiFagvE004pyj|x#j_Bf!JfEB7qP+TUt(Hwc-ZV+ zqGdAD+WY%!ZvOpMH-7x%U)b-Eb&q+}LmvB>hd<(>587{SFK30^Cy49toIOHL^y#(J zm8WeL)|8p>JB`IGayD8w0ad$FfrjRy)bJp(tD0-b+=WBDgc0)7d0>@xZFOL$ha@Yq zl8$#ZTN&cm)6!!L7XnE%1Hpbhh*1`3$fBEY06>KCFY^KjiDco^$W;j?GTUJ#ysxk0 z;)}1m<%SyuSR?LTIx;*u=^F{QjWL5M0pKg3A;UHV=xZMoogRC}Up)Dp?|kFhHN6v) z+<fj--;o0G)P*J}xv(gDRUS_f0qeW1_$Pdso@CVuX->p~&1-OW@0z{q?t5E$`sX`( z=32U#qqn#B5FDMVftfB~lPbO;0A~CYC)6myW#IOn*4~cAOX&AmyZFz4`R30q`o)Jn zc<xiqco6R)<#z58d2m|rrtj-XU8Layrw-&FFW47Q6YLS}x?So_B<otMMNcKN7)^7n zITsg7oVqDdr;!%$s|AqdFH%gEjXdxQ7*LH<F@VC5@p?emW$M7aA1<ze0yyr85`~i( z@|US%;=?K*sD`AEU_|ZVrMGP@JGReU_LJXS@SX4f<foTxzI$tHD;J#>uR7%9<BmOP z#qy=!_{zVArOf1-qv=1jH3SB`BB_W=t{B=>Y-tv&!dFklWwn%wN1bgPh1VPlaG#g~ z;>@b^fu!QDe=4UVvO2TGPF-q=uv$X+*LABe)DhyqOS(=9ER|czYn(z;vj&=i1s<}@ ze??$Pm9*_tH4sRnz+B2WR+9-*q&*vCEA*i2(?A+P^#@cH)WQr9JVl^HdT2<O#!J9C z#SE*O8-z7&l>#e;>SF@@(jl3yWaj*=6xQTvZJ;y>E;1A!I3;yR2dy@|A`zCBYNBj~ zLDH2{4KGlX_G2>xA*RK!nzZKb5#kELQt|!QUM)&CPS8{!72^t?g9QtOcp0krA_XKD z>MOHz*zmYtCKwSVwF%G=0=2OlNMsg$tR0I(k@;~j6w!!&+4vVe#j#{Vu@EG5wiQAp zq{09g)F#b~w9uC_EprVGT$L^OvMV?q`O|^|EMW14Rr=dg6(RI>X}C4DL~izf2CIK| zh`9;Ggy4(;?Y;<_%*^zBM{nDQKYGps9(deY?>K++T{o`T{{VGdFeTS*)qqzFj!lhE zZN2UH`yIII3!negi6<XEnoq|mGN;STL-O5#;%eBtdBIm|)uPA7Zst0ycCT1D^nnk& z>&zFwX6NR+RvggBwHIzO=<4P*@P}=>{kji*@MHh*k+%%<bwbGU0s@XUv7Fl!&c&Oa z>@g^67ele<t~m==XzWlKmM%Omivw-0I@6~uyfGmXh^y|7*6xm$p<ZqvY@eI$;Ux=G zQ?paEEEe!ee{Mr%q;~~`4YJf&9*?TJ7No0yLpfJ0oMMpi-VOVQh-6KIiK$l95fYzN zT8WrVV^qBS6LzU=M<z<DdI@5w^b+%2pN{oXVXwD3VjwBc1-+W$T-zyv%6sC}(b?L? z(~6xv-MrwatDW)AX-N^9x^_h+!@f=}Jqre^L;hi=;;yuE6&gCOR|l)8O<^1xMM2bJ zv2+`MCS_0#f@{Nq20S_hA&4SJbQ(SH(r4;4yu0O{@A}|;$Kc?S{dho>pu+Xjqa(Yw z-o9eZlJm}cJD0(kl%X!OErPwUbaBoZXFd%;#rWbnr*U~`iwOib>+)8oIo@;lj(5E3 z$fJ(<+t<Ez+r2lnvv7v7P6#=@z>VBiVGQv<Gd(u4W5@1$Zr$&o#sBn=AARUUj+$g@ z&MP!9$+HSSq^7tS1x&wCMk;g1JfdX>M||-SN<O>zk{3PuU;g=Py9bvoU$NGc9CWgg z7x(Ea*m_uSl6qJh<yYW_Sx9spzN1}`in03Gewg@}*ty~EyKZk8o9)~G$m33W6z@LZ zqJ1t%s9=#2ennah;3)6dBATZ&Y~@-)ij*1#mg*|lRUzPcN?@T`*r{JFlGYOuECl;~ z)!yYR4%~FpZ9lvC7cY9jlW~Tan#VCTIYyD}^hAO+7*Bo56VE#DeKXui&h&SV=WrM8 z>g@ae4}bQGGoLA!h%EaBUG9^r75hIIsA3axNwcrux}(4v&Z&y_B5dMuf5|2}`y}2A zSd`cc2yfW{-LP@wx@&Ll=v~Z$p?w*h{^-uZCA~)<b%b%N-&2>BHci4843>Fwfy|Sq zAYGz8(e!L9b;8HsCT3dbX?b(!luzw?8y2lKqZLt0`*kJAUdUd&W!H|ewvIk8peLp{ z`QaY7soD1J!+F#i?5vWiBj-CTM<>NDn>}&b9$iA~j_tf^r-Ls5r<cenc|r?Z))+9L zC~e0PVI**ful8V_-=MC%!NI<rRaM$?TRV@O?P%$|{PN#Ex@mzRJnVX!w<8We1k#aR zJ60b+PvN~j=m|G}(HJVykkAM`pa2k8>iODm>$*dZe8iLf{5Mx!bJrhlxcBZ2|Nf<K z|HqfUv3U8Shd=DWPkj8NANk0K9DLB?zMeMkXY)f1&Uw(<K|!Z*z<1WC-Uf#bqZS83 zG7fWkPVBnP#xM3RDik(xQ%2#O2kSkXpXE_LSS3|REH3%rh*v<UWqe7nP_EI!)jC4e zC0kJfSAmaA>n60(S<U?um;WR~r(*I0Y#v=o?}bWbL7xkZUSebs=9}OA4u0<J9^!R? zi@FzauI<+grzUtTg{OweLQMAzBR+Z4*~LdOrgq+SBk{3nb?@jnZ+z!7v5G;so+_sf zNH1!lMKn{e{$O0DilQACOT5%hMXR_I2&fpsSlH@r*|KB%&fUA(I)?I69U}rp`IjH* z83rFsLo$I(ugrUiT~FflnD(}7c-!y}UYRt>H($G!t=qV1*NdNj=3l<xndhAKmgOrt zrzWfchA+sST-y3%DpW_SsN5{pryl)jL1a>{8U}L`nh%IY3Pw)tP%UXlmVG&-Bv4V@ zDoCA{owR77$4p9Df%U1GN{L!GwZaQll0{B{GD9lyEyGBMt09l3AXrTd*<l{;03l=~ z#%!$EymjhFm;d^^-~G`~FZ$&M?iXn3<y}Eb4}17gN1t%yQO7J>v7)=Pch{DCd1YxP z#i@#BTO##7J0#s7(!Sv}fu$@E#1YtETznt)|2II*vv{SZvCiXb0hNOn%19M5L%paW zdf6zU)LddGz`Cqp?3t?&7W61cF>Wv7``}Q%4`#J?l<te7;{T@)`(Rr@&HIS208NrA z+PGwIa4Bno?xjX4VP7oUOIowJd)3MUpGtfMFjtFfFt1P=Z6~-j)&i%!QiaN<h#vdI zZUTzHR!LgmQ~}B%NHt11HnC_BHJMr?H_93bO7^BL$b0ccW-$S5bxbi5n$e8h0&lQy zm@G}UJxKsbv9}5ZwRvA*R0n8^HWiBbB<~|W>;tW3Bvb2Om)zIopr;cABLlzlD~1*( z1N?HM1R6NhM3G!s;CptwGyO#`e)=)T9RI=>oVnq)>$?Z~?a^~G1U0Bm{rPau?rpp7 zz5PLtJmoW={_v{(mX446LVP9JxmG97NhqRrLn$x0(#w?7A-;?-|L0G6^bh~yso(nA zcXkafTeQ5F4wz}m;F8tDyLW!+3txWPQ%*ni5ywvOf@*D`*N!B1F+aY{sh%gY{?WC2 zbzH1iEfMP@o-sq?$zo$@aczXcEY)b8&y+gyK<i07Z|>k)V{3m;2j84?M$5tn=h-~x zIm3emE-UzID^?@8&_FH|QM4*Oqz;2OQ!!WEGcEJ#kAq_rLrBpUzUsh^zi3Uy!u(qz zaG`s(0Oq2KZ&o`3)H{JXaklD|o1u|w+>DQ%3~ycdm-kp;8Vg2T>w*_LIZNcIlk+%+ zB4Ej61(S=S?A1IPMV<~-ZuCpLHkDkUA*(Q)HLDzddZmyQax-A@)2d9R=xZWPieQ&w z({ThOPP5zil;*kTe)OK(wk$p1xURm%RIhXP+3D@uHndEQzU^&qTf1fvm+{M5upFgI z;CZ59IuwdSGoOfw2!wET(nT!3-8nh`>}Q>J=%HWx>%V^Wy?0*UIk18oPsMX~q-${+ zBlFbw&aq9mKm5_BeC7)uTeY%}3wKPn;Tf}Gk6BiQeoF=skVDG~9atr1tj9TPYG$J4 zt#5wqkAC#idp6&_WN-;ndqrV7cnh13^M3(CjAx3hFKq)Ji@#GBMsPNLIycwF>Bjub z#(VD^zUMB~TXWQd4?F6l>6RgHm?>AA3U6ztrh_n9Ifu0ewphk4nF_mLMoXwHsY-Jw z)Ik*`39G$q9Mc@qs-0iA%(S*GTe1Jf8@qn~^I!ed^H0y5yOLXI!(PkO&9*03!Xf=a z%en)WuRrvln{M4bzig(htFNQ0ueERR^56V!>(=o#D|u^IkZVRc7MRI~eg%F%poPMH zr&Oz9XhA7fn~vVe7Fbhq-`xHbbb)OX)_s9{L(mQtsRDY-E3dqEZ1-6Is&#F=?QFhf zk{g=GcOQMq`V}iV0d`CwcGcNhT!@caT;W{ymCf9I&)an;rduY)X2xe`Cit=opU7h6 zm7s@-57>ao)SG^SwJ<!wsgWljgf!L98ks`vsC*2z%hx7$@=X$oxPidli#v2=(8))0 zjWvJ#Gc?dYr!kl=>~dFhIZN=ZVq<Nc9W%7p(Aa<o)^rHA7bB@MQ)N<73$2LpBIeV> zNW-|rFxuMAn>%>MfE$c2`{flaEzb*KV~19Icz)eM>$sXbylWe`s<k`GM}w@!#@MKw zwr^h&(%P?d=qzotclWP5<k)2g9M?|2x8>eDZ@KZN8?U?jj$6NT!R6ompPzLPcAs?8 zF^@m(QIC7VBaS(8Ki+H1SBF?B&{vvaGtm>gnZ;YvIU)9b(0H!2SUjNS#RsNS>rmOw zY+n|V6<cTqy&5h410l6!4;FL)Qn9l$X=?MbEWr3bXbLGv&{jeyuzvinc%{fvex4iE zr~3sbxN4U^9|<yLtJ$edf>`|wJvq2c(B9t0hdWr2Z0T9j!N-`nq~U!h9h|uLb<r+z zHVJ;YLxW{6+Xc(a6D{367ysgtox7&`dpn5R3Qw8EL+Z&^%vI}%M<0&7RE<mQ3_vu2 zuI?_{nR5nrn$4Ou+~}Y;+;i{b<P>ZB?QI>?1RblsL?ivB%V9E4^_ozo)q+7@AsHUt zy?e{Xmg$L(0lt2)tgpXse0-em{<KUF{^ys!ed(oFod52(J>{tn@v|N(%j>C)MtG(c z<*f&a3k32qCztIg1131G1x43tU*&0a2!tiB-1w7KDNz6`C&(NWRQ6I=<qM7$0`J1A z9K=RiKvjV_mAooOlB;y7<~xO=5d*dEmEyELUfft}#Z^1j;yP%W^DSGq&t7`j72o*Q zcYgZQOSf*=;#Y@z7cDvH#KVt%z#&H-w|v$99i6?5O?FMwt&>(oE<zL&E1NW;SZQjH zEj9~jB+Ou(6|kUe!4T5GBjZa7aR-q?1__p>(OG~0FSZ5bg;Y%rMCO%F9PN~{DUKqC z+f1$sT8d;-SXsXX{eRmR{0ghk6f08K_h%4@dk{+BfHe{ol*4_HEh^g{*fsF}kM}`e z2>m^YYAb}=UW$Hu8l+kchDFCeq3NFd?~|(;)yF+z&!$srD#D)-Q|Q^VHKCQ(c^|1Y zpb4{?sxIE^*x(LXNrTW}Q8b{Sp)#cva4$x6L4)?b<+ZV4Q1IN}haW&YmiuyQ2G*s* z(t#<D3|n2a57sGf>_D{BZfaAFqCIJg;03<5jAn(JNJT6bG?Um_FgBHr+}kZ3JV5l; zXpK;L`x7TbPDx_N=xED{Cmwp?55M{Hzd7@o-(KC?y~NJfE{74w*Ct`Yt_?T*`Lmz) z_kaIht~pQf<ffyQ#4fnw5@vej0NX)1c$9%^K{aGjnmjv}xw(k+?suPk(IuDc*mn2O z(4zM4r9L>)-nU}S!5hbRzwPbs{qc|gv%cTQ!7A|qmx^UlrJJIZ;nOK6eY*w*1q8NC zL<KPN1JHEz%cPS$`ltYcKz+Y%sKm+QaaL25Mrmi}shwOi<{Eo9Qamx_VOVx>W=KFb zELn8tRob5RaSfU^1K#-Ls}Z?Zmcg5e1mAauD-JNkJ;^Bv04OWRa23pdWuZ_8tm^cZ zt4*@v9k5IlkeJ8o7{I*pz{~TPH9Cdi-xYIa8&(K)?(8yV76A|<-Fkw%AF$_Gf-}8E z1{a*j+DAOgPFI$>vYJ)8={A>6Qqvw(TgxI!8kH9vr|3p!OPU_EvI9e^8f=okf>C>< zW>I*d20rZTX}RpOKYsq7|Fdh!{=GxXd51Hx)YdjRzH7_Ojt!4E?V-G1ip%)A3Z9i? z(H5R+mxIUBDr2EKTFSvuR*m@|nP@rTxPyQA!*9O(T_67MZ~wThWfAPSlh~{5YCGG( zS3!2~eEF+iaPE0;Z13bks4)n+brb90GDqZqt2CX43lspT+zE<XP?2_6?u>42S-!0E z+;iUgH!pw7@Xk%l<CLV?U{#y=`Bix`o=Fi~S%wOx`1~}INYDBQ(dUa7=DOPFCWg1) zbJv}-yN6qbRv-0%Q<tqicxtYbtFq_@4F}n$N=t=RvgKTySL^|;=%Ps!xJg@WCb3J) z-73A}_sZ3!pp=JPI0{6NGP3ML<n#<JY3b~{=K7ns=IoVPJrd&L9rdWi#AXVqR-8hj zySw#Kk9x>WH++jHb-9~~M{@fIm+jhk^Oe8-!;_zQik>fO1i7Re5EE)tV{mLvH-W2U zL2m3D_=RdOR#ld=y$bHjw;2L*+4iAIVYDZ^f`1=mku0LdgJCB|;-a5l&H^c~-YmV& z6z{5;9DmS*PXf)8fvol^UeE8bL0f)Ik!gLr@^gH`x4`mF7M`~8c>&^(#z0TXH)UEo z?Rwzi7@||HKl^YQM<2kpGsD(JEBY+LnC^{~ove=;8sMyTweq4EB8BrSXo!3ap;h@L zfhX_wl^q!dsq1uorTOtK3m3|GX)g#g`^1ZZY!?9QYOAy%;Ed(i4SP9P9`LD0H%h%b zYreg+udRR4)xW=<-h($0x`mm_?&-6YD;KX^zG(CC*4Fun*0z2T?BI2VR0TOQ&1M5; z$L^rW3r&34{_HHP9$iaTAG&JY5f6UM8M}6DyXBS}Z@%uDJ8r-J^2=_z{F1BQ{r-<1 zd-VFpJ^B%kd)y;WI_ZeTiyTn6P&_+NMd6<gpXR_MT;tfrR3XEG!<7%~mTtuMRjeqD zQ$3?lX{r>9S=~*h0gel`>iR}xT$Xm4Okj5XwNF8)5rF~6!A>FSGfMOF1%jR`W5lAO zJq!t>S7?zXXJF+FR}4FJ4`S55T}TRseHMKQtl93)wqIWU`%QOj>|TDve7kRo4Kr{^ zFt|F9yYWICYMmjTPM+I5Sa9m<-Ez;C4fk$6_^>so=k0ruTE<Czs&GP=M6rwpU^*2q zg;%OQr)M4C?{%crVJQhG9z^VhdpGb*NP8a<FC9f7Gv`o_Y+*-|bdthAGUms|#@hL) z^@>$}{r$u{&r$l`r)7&~r^h?H`|jPe<;8#X+NVD4NpF4Y-yU_;im~y$D4URWS=<H% zKly|)OX`X!_Q)J40hFPmh*b?WA;+M@T!iob<hE7pD15?5zk*Wss&B=oX;D%O5XCH| zahCWdBe#h`fuvMu80)lB?PRsWAP-9E`AeV#S99<cZ5!V7P+UT3ZP~JA_Oi=<b-@J} zUigz=Y~HZV`vrKN_MxX9cGU6fk2-eQ$~EmBU6b~2_5;lNSZAA|WmVPbeU%EU4XAZ# zf<>2lSMVxqfFX8QRIbtX$dO@zfJi3>Ii}yXJFC362QHi~$o~JlYp8QSbb`zO{UB75 z{$%N1mN#TJd?%B_p_J{(O@~)v_BepcRuz@Z9_4>J)1<}yBkogf(DzAR&~2d!;eGJE ze};QFqYkRZ@jk3-MwQ6D1mdw;!5T5GCZ4PyHNw7R&`N8%`gk7=?h9yeq^LPvSQJQu z9a%QA4M-zV;3>b)E=cwzCYpuph1txEqP?=AZJ4+Rr-E6uOM&6n$nJyHUaXsSqMy>^ zO&HCk4M`=@goTuaZC~&jRv)9E1FF3s!xsH@3s-L(I2_ay3>@sSs_T(OHM<g>Gtbl4 z>-HP^##g`m%xC=NHP_q{L<VB<d0RgV&(C_^vp(_h_e{gFh1)WHV?2MAHTJD?Q5$>V z@Fc^}GzB?W><|D`&Z3y&tX|Xq-uIsS>Q}sJ_l`{~)(o|@_HusR)wgWfn!~QY_S%np z^q<Z@@63_mGQX3Vch5O26%mDd1`Ydmmn<@gEfSrvrK5CW2njPOzj~OskqMqDUP&V3 zMi%75+lBn{WEFEv#4*OHxRRNkp+D|rr11imsF;I|IE0xhU(+L_=fL5JY%7B)M1B4k z1K{MZxFoD4lD2SiAFqMKoFuH&K50cWQ^achDmacVdzm;2azJlS4|9znjHw8&)v;xc zS0+sqJFKV`5~0#ItP1NQAj#rriHqXaKWP*VtRxFjiFzUGp_#>&f*71Ik+{eaujoty zx{@)Kd@X_3CGgIRx1V+Xd~09-l2z@UJ>JW~y9XvFc5J%4tFPtV=bz1Yc(^7e7pfc6 zQU$P4nTU>&<eeip3q=^koMA9irhZ9_O_IkAT9z;A`RqTQvvK2=OMh`)8Shg|kj%}G z?tH<EpZ3v@y>Ztr?meYyhzw}`HUaAM=mG)&lv+hHjz|`$vnH}4P#tO&i+KscRLhf} z`pCz9?U6tJ>91Dv+I@$9%lSpAsH}EXHVLKTM^CWWA}J@@b_CRZTV6uZ#oILIC-1uR zuJKKqiOA)L9JBtIQ`>r%PR{ZoQk<j{G)k{kE|FW2qux3z5Ozrvg=&z;#B<TY!UlSY zhj_UPJy8q2NCsksEIgnz7?xq?T6_A2T6zZW-LPe3bawG#&khP@BOq%<;$C%-K~a|~ zec}^O`}{xt=lJAE_uw*SQ~mu*M_RgncG1PBKj{?E8e7ez0Z3vmXhSxI&FMzA0F|Gu z2}l1m6UF7RWG@*NVZm==lV%ixJy|zIR($qkw`Wep3ZI6GG9yC;Fz>(QlFM7V`@8!F z=wMjqoEROWz8?Bu97XKH$|x;u8TF0aR!5o1NtOfVck{XRvB`<aSsoTM()|bmmDTC3 zH)#np%2MrCcI4CZ<gBbH1K8#m6OpFoupt}IIlrf62`4C~C%A~p$1Bl@m$-9RG^YZb z-{w45X(&J_gIn$oB5&)1l<1;O(CoMZ+u1pp+o{RgBtcLC(Xy2Tx|QzUW9iE5Ajtrr zzvsljeuKy6Jelh3Y#&&(bi=*Z+<5cm2OhUlK4DX_4BxWrA80w~z_puxvt@RAjGGP^ zvBAlYZe~yP;vSSsZ-JS1HF%J54Q)HR_=tj!O0=|c{&&L3D^GdwsS~5S@44fa8?L?j z=9_M~=J)qpbLAI5`ti>nc*y>zJ?2za3Lbp&@vB#MqcAt<v9?~O3v@}j@M-HQr@)w{ zKHBUMrc%))9x)vU#~M`wv!vadjuEnpM+JZsoMN8*N=kx)Udm-{Ak<8h9s0tHBuWXX ze`JN!Tey->#Z|O&Bk2~CvV?(rtutWcl|nv!+}ZNI@B9#V((`bt$jx+Fj_1S9yrgIv zD;OQQ&A?|ppmiOSK9i1|n_PNkre^QCXVc+Fto2LEtsSXUH7QYCDQV7O80prj@7*NR z!+kJXO_Ar*;Y@_N_FGT^w`|_Dg(o?AsKHAXZZrn&S<5UWCdgOxoDUbT8aXX1moJAC zE2IokV`Jke-#5_56^xPbsWIN5)VZXmbKrme`^Ojl=qG>s+LyiRRWBJDY#$r7Q8<Xu zF7z5|k~Pl^ql(w!RP8`!@nZJH)sS$N1xL|7OAIv%gRY{bKC0T0%fjYZkm!N68Ym$o zaU|};Uu-t*M2Hy^{E1KfdknIK!74+%8Ffnt7Ma{)$&06jZQ3&X^GkpAt#5ztXBS<z z?cQzkZGH3ILn{w|$Pq`Ku>J_{7g*EM-aW>`BnvaV1(^m3m$|uahFESO7$3Xywwvvm z&??HPl-nMr6_J%SrCiCPRk=OO05$-PM8WjN6F>^sv+Jli)uiNuSIGXCeJx~fCN+FP zon}T=EjEMxFKOzmnKE^WV1Ko|qDM1UZI)HIpe5pJ5+z&x8Hdb()m$bh8$h<gV}a8` zD#icjT_xgAkT;6%Pn#gzx3EFi(6&~p*@7Cja4eiE7snxTYUV~ZNPECarUBYRp9XY6 z%KstNpxT31P1q<cfaYv7en~g1S+IiwwvbhA&4+~?tQT<1*INU>;s{zvfzU_<xq-0Y zB{&1MfPZ34Ns$&{$ym~WCcQ^K=+!Q$GO2hpu=fR_u&`!d`uiqylfVlf2NW`;e@Jg= zg8=3Upq+c}n1;f$Tz+|ET$Yg2Zpw~E$DlFKL!r})7Io}@!2Z`<cN?&*`EucA)`764 z^<fV`wX>&nV%W3boC$eqY|G4gercmfG#{72yjX!cBoLo^Qgwu>7~d0`oO|}O9)H3A zJmyCiUN$<kqHmy^3qLb6^L<O#?i$|uiBEjtj6Zwg@y8#`Sj6L|FyTfu_*5fP^oKY4 zFd2+7O3^NHToe#mb{>5pg0vJfWU}I#bNHOb!Iq%}UKyZGfW%%*-W-ox001BWNkl<Z zCzMLb%#ytYGL}=WvM^6$y6NQA#riT1SPP}<covNdUh)dtP!$~MW#(4oMKv+dFW`_g zA(<>C6ldLmEC5|T=Q}MC!Wn8%P{9*c>I4(5fA6|3o8vnvNj+NoF^Pkf0}yPdiC*m} z6&%$<T?S*Bg<U3LaxQse%yGD|jI+=*LR_hGL|3UwI!6^?3xfzJgEbZR)U{gSc&^v* z4$Y5#^vl2f?e)DY4(%CQ>Kuw?pt;#?J2te8Z~5CdzT)`f*KxYyd<h0th*fUu#SDCq za|53WAz(@n$9}El7sZ${gRKQ-Te$$*)!p9L-%BZW5hb2+XDG(5wQE<hh+wd}I)EUY zOfzJ%&56A;ky7i{4!(3MX|RxCT8>JbGEr$f^{VvDp%B^8(tiHC-}=j6KAjgTa5)Ly zWvNOh8O%;>+%QKF;?$FNhu@s(8ao`3oa<}eQNo4Nk?or{?%2A8Hx9Hd-S3EF9<*fj zL9=t6+{FWJ>c2YWQASLKcRT=V9Z}d;^-^3@#IvvFCzu%8z^yY`s3E%QmxMtY5?7!s zOdXRjBO<!wJP9}fMJ^#rN7UQiJ-BoC=8>_HMT>^K*@D(9eTdi<F*X9VQD70v*I`@d zPk!JDi&icj9o@BP$t-jK?%sixo`H*g{!5==$FqiN*`%$K|Cd8EZiBP{_f>SCk_Ey0 zkY*)HfkoE17-iqUZOFh+3xx&0fz(J8pUA>cDO(-!2(p2;Y}hb%-SvNL>*JHRe0`RF zcw%g9cgJAY2@g2dc9uZMgj;mpYBoI9vU_xVY@E-(*cIiafn0Cw;&e(e)Hsstv8$Ga z2$K;{BJse*Pg{ww*bx#lK*aIr8d<69?yjDJ{=SL3ckJGNZ{NTaZvbhT86R3S;7wCD zCVM)FAoSublr-jCS+l0oE80bRp`1Ih+PgaV-t9Ek{?e?KMZy*o!3I|pvB}e9)0Dv| zTCu0u7@}Dn;E_4r=+oBKOE28pH#joa{k5-u|G-0D#FD{4x9@x{%)+tSaW(je^#}j@ z@;fKThI^K*KnT56S}q}3h7QGxT@mZ1xCHZN#>a*yMt5=x71t|SYNr$8)W+M_cn2^y z#CP@`eAG$nk3D&EeB_?H@4Eilt8TsV4|m*g#}_~Qt$+UfSJtdu`iO^~^4QZJ^^iwC zbie)kxCfB${!UL~_q3nnrqkCI3bU3BL^Pm=@q+Ft>QEkS+{Y=YuP7_FtuTE?x+@@} zClD&S9F!u1NHS^0Ns68=g-VYa6lXM$lN~&Vyb%V(kOj$IwFRMWJeATE!PSl#L{jwQ zg81WD-3!^#wtJ-IM?blwg|`oM_w%9J^z1Xcwr-x>!8__>14MQlgnTC-vgsRG<Z4t~ z8}Ia)m}|M|);k{hh!aP784YIHKfCIbu8qp6ynwH@i!8SSpa$-pn;D%P7#W@9bZ=yA zp4-@mhq<*x1#Pk-wM{K*zjx!dmUbRM;H=R1Y@{Q^qBLN6JFHL=o6wREQ8{M8!Dr}+ zRvwU?o9XQ8YMY<gxozXf$Os=`=;|eAm(XfEx`)PgZ~oAG|LI%b{J}fk{`x0B<sk&t z1Yd$ydw4p6V*=C7^vv+5-Nln2q?StHmMV$jXhS1RQ^6E)*{nH!5|XIniGq?T28dYY zLj{pWTGz!m3Z*SIDT>ty%;hrNfUlK3LvO^hNWf|6yax(RoY(k_krUMt?0lHQ9%B2h zmP;=F^*8_fyFdEbueWa8&eykzfn`TL>d2#yJM74#S8%^TdpGj|9?RuZUMw3?vqU77 z(bL&FJ+kYM*I#?%wb$Np>#b8GJ3F{XiUm^IG(L*X>Wvn~fI7WUlHxsf_bF=t8i|6R zM+~g<RQw)1s?37ey+|!zC~U&6>p;KOIzwA<n}LN!SBLdJ_!o@-ZC}V6SP7;G-jicf zZb9!RU>KN3A@;;qDQuuL5;eKU2CyOj|Chx73vT;Btv%_na&)a~tyJ<gF!7(rFAXYI z7tDfEwX+4j1^GT!qYDIuyiuQpQ7OPp4TK6_M?@q0rxLZs3q1E>{{1j0R+hp-r8cFK zn@JWpMq06{v0so(D&0jht?35p0;39C3QKoWIv$ZzxF>FyloIxPmo*CZO8l>QdwCE1 zQW<-}3)=;5BH2?$5xi*L(a1m2^wiE^Fv~Ir8k>x+^-6e!k=~mE1|yO@l1MMlfC4&a z7{2S7H}+7h(2S_iM@|k-10!C^rNb6c1*)xJm+4fvc&-2s&&(OIW?Me^!SgQr<r!Ny z+_wKggKeDy^x_mOTY1oyTerUb9p``VyI({!V^Vdy9$Xc`7P}gn&|5o-Vv}b)+N2Os zNju5IG)B2{-?=BfS}zK|FbRn~1(s0`kRu4=H(az)?n#TsADw?D!F<05v1kZg#vW4) z)v!e<Bd0l(i^kD9?3AQ@xmDd5f*5v+l&Z#pq<Yp{G*lI7bYPX@po^SgX3{|}tc!x; z+mv!v93F~sD;kC&6p;edBxsyJ$t@<wE#X?F6u?#(R7ohw2TMrhsshn3pnFbM2@UU1 z6rJU$S9JxNRLVddC$eW1rsKN*4{!egXUTTe_u}VtpV+y3I!w+v-JIt}U7>`D5(W%5 zHpUn~KQIPt!V^Xkh+x158+gWG0TRXnAzfwZ2Hl+V<eX=Ex~HdeKHaDP-``rh>eM;i zb0yjT&#UfJwfEX9@4RbQ)!|DY|D8XmFLbuF_SDsJ>x_Z^{LJ{^RR4v|Ti0{zqdbF7 zY-XlxNgXemff=gFaI*;C*#N?jg5aPsI67b;CsC9rHJWB<L1xa%tl%KUBNi~RPy7T_ zVNqcc7FCg;Sqz0%4UDa9HC$jJS6#TuUTJ=A%cf;N{eS<9U;p(#<O2#2GuF{K0~#|x z#2kPOpo`>^NC}1YoJ{9i4OVogr^ovSu1sCKs!wt^wQRiUh7}ujE!4O1Dn{nnU|JzU zEojLa?Xkpv@}3=0p%W_R2}TkwH2d7WW*$MKu~fq{SBOR+RhB^NSI#6rWtv-IH&nwD zOj)2^P+WNbd^T4aV*#^drmDcmQmZH?1~5`&PQ((4s3<*G^fcXm^No)^@!H({Y&P3a zpDh-f+72E%apGj(&TT!C<cjGWm;tODNtl@uk|ZoTlHmvzuJ4dkjhT=W2d(l|qb(6j zh*0@T95CVl6hX}`=5t^GsgV4HR!+V3=7G}aWW(wfZZnd!z~<?x(e1mou3XchO#y66 zo=J_4&yI}n@bWA-NY$9?+hx4sMDJ9Cp;av?$!jqXThoA0fB_K@HQ5d3iUqF=+X{qX zSk|g|>7Ztj-Q4Ui6!IVcjgS1+Z~p$76X%AmT;!?xj+Nd2>R<g|whG8n8!u-yJydv< z_3YP{Xxe{U-f&%jlgisz_zWC(P&Ij@YEfa;gCI991?nR4jn!rqZ)fgVB23uPhvEkG zo1dGQ9ADPl%5DPgJE!V$kACC%5B~6nW=j*GH03hO+MC*%c`sa53ERP|AIo2#og8WC zr0$uu@O7J)JevV@(s;1%+_^vc!{1x8X~%|5+tzQ~)ZWp-6J}Vz8iBsjo35W`0ZeOP zg%#_zt=+J7_TkB^y_b$3IdJ0G!OIs<efranefn>{lxfS}b>|)LdH8_`9=LDQx@F88 zXG-L<#sD-0+#=_xBwh+j4OExLA#W0-0$Ls#!2GFd$5Exc`^#DwORP>6NQT50@wDRU zP%)G@1U5=talU#ni;L772?bm>7w;4+oJH+fD&+_|rkz7XrHceBl6r{gmDdhmI)A01 zZ5^+_rPqOj$_TT=wsv-ipb#%3VzybDW3D}~MoE068{bNyNSruvs{iWjwc!!<{E(|7 zb^WZS0kqO+1<EYcIEzwFyIq``;S1As)3fE#$<(#sDXgJU=BrcIZStb%_JM&B6+3ni zK&r(zcv{_3!R1eFxO>K;mM?NETA(3{=#KZ;=*Yy#FcOQ64UNmX^Th_wrF3IUQ*-OY z=)mz4mwxO=f9gBG=RH6F3qQSM#|j=nr4F&>M3$N{=0%v{7)g`)?p%*pGAC*VU;43S zZtt$t4#?Mz@3clDa&dPqx^h@tXO%mV2`fUcAQ-NAS(2I#MvHp1NGv6fy)hJNEe&Xa zP+cxdip<*!d68TjDnIx9Yk&XwuRiwpvxB_@sk(*~cc`}CwQa}l^;>tecdyiAjPvu; zEH<!FP|DCUEEE`yWa=kpr+Y7+J-q+z)5nj@_V=ox;UTv6?)kZ)N%9{Vc;5D(nv!mi z>zfP*3;ZG@YeQ8CH4)Z7G!C^aCP_nE#KOhgVHM)KvcO-ICO`y?u0f<nlR%eYIT~={ zOGt|2Re^U*1k+@Il$2G)AWm^k5lMs-(S<Q`1P)hctaH?uL<sJ@D7N_O(jx9kcV5Xr z4V9BP&<SJ65_}?%t|1(OBEA-nfNp@4h+3HlEs%$56XAPSEs<fd9TFU22VPM$y2c_R z6)OM>C3$(6bMkOT4h&2UFGfpBQc5x&F<Js>Of209I5}Yzc`_2^cMV}AV)0ePp`}`! zSb-S7q@YStG6Wh2c(ME#;%G6PXibuHcUnWPEz1IGF;}Ft2PB8iQIxbwv}9^GG(Dyw z5Og=oy4XTZDMY17tQMQ;kTh{;xB_STLK_S4sAq<ySHjj3ab>bjuL%mGXn_f<K~jbR z4+cvM83ojXl1ld_Ng88VS{)B=tzXmjYrpbyzwomk8@+m=ZN(<;LD3-=8(LbrH@^Df z+kf&$pZ?i@^AAUPz?&NzX0O<YGgw?TM$qsjtakuH2AzOOx1JdDK_!k2Xe&DJ<gilS z11bkeOZBp@z6U@s&q<!twp2wdsK*6ir+<T>k2C^kGeNJgVhK=c8Ws_-h>6zz1-C;4 z5-29*mjnvMuDZwys6}aq%N0M#AV$uKMtLH1ozy>ikc<}3;2McCI-zq2*+g5;dXi*m z`5V+A677OH!C*)tYN06ASh@e{t58;>8}dgWTy5phvcWtcDzn<z$gg@D1U@X$!(Hr^ z1&mG_^QjMi_+xWZb?vK`XY<WAzhx{tGuVGFl^Xxe-}-~r*7VG@sBwaodC^h?<RO=0 z+~j>TsdAAP?tL481_JYu*%NMofMql&No`=v$Q=n_<{;v-N<K8>B})DXk_|^<tn?{I z(2H8&?i4Qe@}etkS4~e$&Ham?_>nJs{?VgHPG<6Y(pVD_i8c?5jU3OFsSOi@RBD!| zyERRsqN+a6^8vMq(V>ySzG()6j69p#d-mMEcEc`i!Sd?OIX<a|0X9?;8x=Os$a)nR z+2pF~8oZ>C<Z`&urn!m;KBl}W=QtC^*%e%1_Qa|u2~CG*tFR(Da-yQta(H?T5huKf zNA#erS|HqjSQT@a=;Wg0Wd5BSUNm)hD~PgGFNApb;d>r??77m+WUkoGo#Td<WrNqw zJo$}hwr~AVe0wJ-?fRLLeloQrE2Jz!Fk=jwOfucXL7Lh@Y7C5E$*ZUXLd+-*Sk^}> zB&jT1OXdhJ*;sfGuxAXmI!UM-#BlX9&%KyR^ZtP*bqQ%Eij#cy^VVB$nVMhd@1Gp! zErZ&UPQf833M%|wg4yi>*We!tsk9UT=Tm42SVtn3R#+_02>DH1X^JY~sL+`jirbHQ zkt&%oMoXWJd|5l&d(*DJ{M4WBKXCZsrAy7tO}E~BV{1#(EKla}&Jpy{a2(NMrrcNi zZ*8EWo{5qMkkNgPZ@SL$HXX@EONhW%=VrL_8%0r7RK|!Qn2PD=0U9(FeeKPkpPZQJ zQazl@7K*7t!?Ba+u8qyMw6>S$X2xd9!<Q#`^IajIZEtR1n_e^iOQp8&+(ES;8tHFm zhnyM|6?^%D|K#B@R{`<7cxIul(A+XJHgf*;7tX)-{8KGWYuB#dykpnqEj!!0m-7n# zSxsFrQ?psNp!05BK8e@bv+k}{8*hE!eZyD#P98sU`q+Wq^GBb3^wnp-`b=F@?$#Uk zJov8rA9(QoojcdHwCG7LeZ9vfh4QM}3ylf5SSu&5QV?`!+4l2T9!XK*@H7)yfgR)n zFllZV`C9+#7YKk6rCSkF7Rz*N{yoWkLH0WZQZ>)B`JeKHqD2|=>Tc{nBim6xd~C51 zF@hO8Jgj1%Zb)%4RcBy2qbiGCb*Vy5&lm8*mSVA4gzRUi=W(%YOXqTHFhLKJG&`0U zoTKuF48CT-V+H5WUm}lqWs!|I>;;rchDx#(w0|k!ouO5Ybh^Zg2Q&h+J_{9jv{R*x z?f-yO2s!G<CRjmWBNSsY-2^vRso?Mrjs`xm9Tb_ZuNYu51=~uMMgZ~-^V@VoOH*U9 zSs!0e3k#vSiAb*4vTRkZp>b@u|4WZN_VurS<DdWYAN`mA@}IYN6evj2nMY}~FhQ9& z;mU6K%h?J@VdbM;II%$B!wv@sN8KYR)=OFzC?A37kRvV18Hl`Vhf+<55$GhjW+#Y- z=D3z2WE3Sy9;5VQvWhP@YN2JGuQ%}uNS-DbxH|vrvoC!93txZy=@$n3MpEURzEimU z-kp1H+PrP&vaU|v2VpOzW?e>KxppO4S11(Hb2GEOm(CqMc#wKD)PE&4%Njs7)v~&4 z#k%el>l!liZ@=^fys!4h)R*dR$hUDe&wdN|tj=07F@r5AS+U?a{4KDmLV0JULuxR~ zV|I?ou4}O{uA68o1Rn2<6qNmzkg5zb=UhjGd9ntZ=whQ5LuwRBA`ng<U^*nmA+?G; znUJJh9CkA2Sj8fNdOdgorAB^~vV<NE;>@v_aSc31rutBx<J33+lMs%0`87r$5TzK4 zIARLu6k}A9BI=k|B`GHJK&UxY(3oKr^c^Bg5Fl^~sPR}59xE6JYS5e^43cn1_OqJY zMF%aOd0q)>8m(`zFyl9MHBp{8rSeFr=5q^s)52Lj2hF=0Xmw5Mg~eJ~suq@kflZR= zOBmU3(1F=TVM*oiZprwXCZRcXfTNgH6hcSotPuyAFrS;5P5;<G`QFbz^0nt*I?&M8 znQQE1>)bp~3%4&H8NT+>-}wFae8)qZHh0aI7>(Kb0-PX3s+vR@<op;#NQTdF9LxaK z`z#^Jdi9l(D{6W%Iw>2dilh0`m~qk}91btlasfYy3vf@B<svpPXYb)iBkZ`QqNke* zp0=2c@iWCd6yaGcoM6M@x#&$91U|g=1o=fg5UuRPK2t(E8eycAT@4nUM1(^`2Y+Ra zo8Te?T@(qXIZMfk>~(HVOW4F(tYVm}5)!SG7ZFHq5K6lgGebp1z3f6$Q}%B@_0?~D z{n>`jEe*}fd_cqP_MySv`Qa-c`r+?-=%Kyb;nc9zhWN0HN(bcb_$Vi=w|60OR*)+t z48sbLEu;ibz|+P=z-;zG;ba=C>P02f@Ra$hxd1fwaKcDvn5HlRy>UQ=PEIwrIoN$> zxdnwrX%t9GWNBfJo1qPjsekrk|M+Kq`e*aGCZ2Cbij=9$vg9t2QGl83bGu}roJr45 z@R;n__~^(`X?QeMnqnxIYhAf=-R2c*w$v3nXG`_dJQ#!?rjBzEQ@J3hBc?(y)`;{# zC=H76r-7Fh`@liCPA)$iis-~saSM6|6Bnk7u&^UYkczI(euy6sydvwkLz`nT%ZyI! zg`=|zb%qXvM6661gA+sIgZJ;N%m2rT@!{symC)w7$D3{V+N00>%b)y^vooEH&ZSqM zm1<HIh!m6%KY{{LGyv`5$Y2t1y{fTlV=>Q4LXc+#tOBhLRgp=K5iQb7Xpt69VqE1& zHXf&5dik|frkJyB)!Z+fot{iBly12B<}>G~$EGIJ>0+9DYguMw6lb&ET<!Y7j$Ber zlV<X|X=u5tH2stYIMN_;pk^!pZN3o54M~N{xKK5yc_wn9JUu;?&17!AY3Cic?_u^z z)tF&(yqNN%q__rNf?c3>G`8g!hEl<>xr10J6nOV8yRPZ(kPkUs99&#MD`3_+h;x9s z1!kHUNki3fmOnE*_CG&6&7=-KjV&GHy=M*`I<fEW+t}5>43jx1A|__$CTGTauTq%n zn;MEuyoI!wn;0Fm8I1L>2(*$GM8p>aOL1K?bnWHT_U$|OJ^cRt2M-)SeCW#MOXm(9 zJb&o$lf~waHS4x)-?e$`*6!{VeD{G*@@bQVm56dVGbLAL8<wrT?cQ~_-~G_|@YM@v zkDWYr@cijxue^NhmFM63?T`QGbz3()^uWG%J#^n~Je$+TD|J|PP4N)~wSJbhS{TA+ zRJHXK=|~Qd$9T^U(&MtH)&*=d=g-r@CE`8>XfZHEB_K#*rp$DM)umfpI4%H-lqycf zoF^;TnXg1cAk79XN|ac#z#1D73xOEL&0goDNwaZJ@iZB`x5`7q<*z^XbgI~rZD^*Q z2Om~?xPsM5UPs6KT%gt<LN}o$Tu*htO}Fm(#0C?^%e}obEcmckFi+7{>xz6#lllB? z*-NThT>6<-TF)V*n-1d28w^}6vs@@VBS0Eo0HK_Y4i3#s^C1g%TypD%{XX=O(hCf3 z^P{jlqg;^dh)OE_*b}53aSKh2yc83;JhUfYm_Sb6*dn@|Ew*$Oi_=Z5*RG!bli&Yu zU-<IZfAyFD-FJT1zOl(UtqaO0Xr$#oxbW-_F#{+&NL5Tm%xe_teU^Zp!;UC@I099; zm{-KZm^g-`sYHOpXi+;!jk$`W!9)eF(B)=Zw4%>7KLF$T3ASaF=GZx=hh;DIjz9hM z3t#@~qt8C~(h%zc>0G+VTRv~zvHMn**p_vzs?X(SOS98#nnH7J(%_4gb=n7!$<EBo z^j*1f?C{~EM~;m3_AboMQ5&-j?aS7!?&w<C(9*q7UntMjm*&|#fNJIm)Bhb$GB=43 zMWSmmZK<$5Z9+m+)nXhn!AqAxYQ@B8$v})02P&x!iV~`|^O&8h6Ds7Et)98jIguCz zmC@IATqHX}{<f}3;$%2tvJ@;ztIi;UUeC-V8-*>tBr-q}D~CsxL=C>H;4Tqbn$QqU zhiVcBEs;=-CZ@4o$-HspYv_|v4?CKjLv2WKlc*#KQOEbd5~(CFJ{(xZXi2;TWfihl zzXT|zc32`M!6F%iU<ss{jiZ9WQ3I@rCIxy@jIbnm4QJZC#chrgs)@8-Kz9w)DsZAt z)Iu*EAst2-fN2hbO#kOXLm#Q28+9ZzTEbkGTIo48_+jHBjjbA91_TTXROGdWZ@SRC zSZ^dHAhR%!G14g#4M4Fo8B#}mtsQV9oz?ley3*V{gPz~{kN@F;cYXIj-{}?Wc*|}B z{Ty!`?_9Bd;Pl8Z{nAJO?z8`e2P8ESQ%3<GV=5NXgl;&57)(f8cN3b(585Y+=KO(e zC!?1d;Hrb9gEbA|qN~_i%{C#zlbB$Sp7hr|PEm!VjfK<{7%!v;=g3Vqh!6tEB9bd3 zcA_`hK&cdq2Na7s4AhXyMRYFJJuBAogEg)uTWsh*B~d7h>_`@wY_?0~<P1p^h7q_o z9Y4Z`jiI<2F4uUtWJd--feVGtJOhn(y9?;pdRK#Sl2|!k4CNC~H+6MOTA9fBM&2&x z>gulcPW;+OekWDz<X(6xmsd$l&&`exPV}E|>uUJ$FaJCrEYpr!`Cjtn3odv?>n9O& zSHlKE!69JVfldlSXb_#y6LJoXy0jW57gK)B!9rxUN(%=<6%TFIAt37_UY;a_Eqg3Q zx|xa^Zd)x7wfM0PpwTMTtGrN}UFcfY!Ocm=K@33olRI!O!#;FSF*Yk1<)UES{I%Y5 zy%)~SP0yy;hM&$XG`6>`-L-P<#*Vfg#;klrV{V>>1V~Ig>WJFb`jnN@P8aFz*+$Ig zWC9qFb94yRGAeKrTrmDDXa<>jCeNd!`066{6)R)`T+E+I{%RPc0?aVnmtfe&JJr$1 z+w<}!1?!_cfRXuJI*PyCqd%!5BTd1&9XmE`Shw=rrLpw<EN`6RiQD>y_UB)DlN;kJ zx*Hfc^9;L2*T%$1jF&~t3=4_7{X3ehvZ%x3v!^;QKRc$wUCAiC<kdLE?1EB@FdbnL zSY}5_(bbi<7z0<lr21|C7dZmR>At@4!$;3#np*gP9vglr+mpOzpitPnZO6<U`!}=+ zS$oVP$3taRO&9aKiYEVLo|U5DMI-^WBBn>>!POi*?u{hhrr1%2p;)Au;c*L4xd|49 z*JLqwf)S64%(5{?+E@iu!Bv|q+og^qDb<47TsE)5j#X^YaT2y^^QLm{FiHX~l%QIF z)-;ztx&$sNif)(NBX-8ubO8yHIU3rgwzlyJwwq5gm4I(UL-WK!{cEqh`rw1N%}wa# z2YB0NQ#_QxD^(Y!=gYGrtbrGnwYQFrUaPC)O`#dOQkRTalan|Bkwwyi2_Y4HdUn34 zW96;)ufOg7e=sySc>2_dV@D2MK67H=#Ib>+2VTn5wXIySW$TX3+jn=bUYE@^P4Sij zb(EN?)^$P;me<ucb#J|K#g1Dan4TQDeC`Y{G(2}||GDEAK5^);Kk@&5a@p!-_wBp; zf&1>g>+U;Nu5M<s$2aiwR!8Q;S{l$$fIsx|c7>i74XyB4e{AJSHds+pFD(5bw=Gs? zjam!>ZX6LYP<|@oEcXO3uaIPIg^e53ZoyO~Lj@XC^Nz6;6E(_WOo_F!2eyKSsDX^_ zNFt_8PVqt9sYw=Y_<G=Mwmy6G!0`*GE@#>|q_ai7Jcy}j-o`OAJ~J^?nwem$IV%D( zoy}TI4s!*zI`Z*U>rz-V$j~<pULBa87_X}<;3G3nCQ7!7umiBg212Mvf?yg55wMkD z&FJM-S?H8btsF!=#_)i{Xy1A9%NO#+d?DA6&x7A`001BWNkl<ZD-?3sg1!P;m(lAH z?QV%gV!JKhpbG_&HdXU^@!`OF6j8~S3xlh0e;pf8c!oaT+`%^w2Kp~wI^Fk^KmOA{ z^3Q(wmwxGIaz&QYctS@DVbKr~D<aFxRPk1I<a-}#RH;}3BgYbKbYWltC0P+mGA%4$ z461y#1j+KcP5B2x9LuD+yeA2Urmj+QR4(~vX@F;l+S@woG7CdvGk^Elr@r{buf6!v zYopi3w7(<Y(6;{Ooj2UFbN3BBD^^o;`Fu6Y0;QQ5GFTp=OQ>7O74y97r0>F+qlXV2 zJ#u)c?;7g@>0D#Fp{HZ*ie+6Zo0~f5VUavb^Fap=kp`T;bSU-AL^IWFOrE5ztY6}= zB!gE%OP~R=r)DjwikDoXtd{STy0jRhtDIt_I8dAB2}|k}14AH=JC7vGWVj-MP?ZTG z1wNJ%qTkY`Mz%^!LS`jsyoDSmJ7tpIa4IUqNe+is42ji@Nv@}C4ONA^6I2vjI$q5- zDL+n$fYCKhus|e#>C}LmOti4nBEaDaMrv9qH=vU^j)x6h_%WdeB6tO>2BDJRsGMVr z7~(*<N2-LBB(Wzsq?SXBm!yw?z-R^HA{l{QM9j$oDn4;~9Ei0`LTC@vC`9h^fb(=E z7PB%D!H16H_%Yi+5~VqQaF?U%?C5IRtX*(_$~-zny~s~wp&l5gn5zMGqVM$A4nP8# zx>#*c=8w&H*3YYRG5gdes~Ps22h6~A$aZn%C#jJ%06;)jD-Sb%ObrmG4oi5f*Y4cC z^5=f;r+({We>66Dxut6(Yu)T+D>f}_?pgnhZ@ln7KJmy;{KWT+PRJ&W<Dl0e%_ItN zBu!VzMIlxCkiixbF_c0Vg=nOT?DEblFj7Y*O1d>!EA6GfL5<YHLNNv=LOh~01E^&- z6p_Y<g-PIuIEGlnT>_(Ir<9eFWMCgA3E6?tvqAw%WS#`b-H{w2;(ss#BWGuEvGb@Q zSTMrUm7fUpi!m*%lLV52AQxd>xrJ@?BaZG0$CED^F^G_&qey@YNl;@ZO*KIzPXCwB zE`0POzkRKDux<5DKGnp19zN_?E=>;gUnoys`<37P=!#WE-m?WV!yV4z3%xUxf~FIy zo41q%P>7E0HYoxHqaGWjnK7o1O>7um>5~wAppBc6($jEx0g`F&Mi{lkyG3}!M4O3L zCZUyLl8SZ0@*>7nJ7*D&OPKQW=`rpK&G678U((X3M~6+XAe5Tm`2dpz1+7t(%e=EJ z&9~c{yIB$F=vmR)y*86;E~kpz%VO3ePqS3T5Rrkhq;pc?Afgx<3{#Z#OjJxkGtom9 zG=Pu;p4tn{A!gYn#YE*~9@LoD1jy&42#259?hs3MBn8olbHoWV88gq#EKH0oThpE| z=zgXt98oD!0VKlG%hH&>r5cK<eRtn}=C8iScl(ODrgA#l($YS3@$&O8y!r#*cmF(Z zmN2i%AGWw@q}8X2h6Z08t<eGmheUyJtumlmL=-bRC*~Z{N2$?OrPwhSVOah}c=6Ra zDr&2`4tD{B4;(x`Iy~OAd=;DT<^ED>Zep~1_3G~K?lInar`xltxyoTH)*|<)YvBt% z!f}-yQ%-<@pGudSM5$flnTV}e!p7_}){f}rMf@VS${KY~rcWqjCfVc}E4jhcp^pi= zlD!a0MXp(%)u(RRj7dt_VQftp>wUUPZDSWn)*7C4vb)L@W%`NIO*h>7>Kkv5jSjbU zH^Yh*sD(`7)mL7fo?s%T_Jp-Pt1HlIZA|5#=YCq6R;^t<@b<acnW=O(N8Mzi#RS~# zkWfFQum4n-wMa>=Sg0?hvXlC1eLCOTz4w;x8*aIsFPL69dz`NqoH=!T=)$E}&YpYu ziKjB%otwAr+`4V&>NV>Ng(mK8m!?@R;nijt=8Dt2<CUF7b**bR-?VYt-tz4CUh6x5 z`oz&=N8h}5@$~2Z=1ZUZ>qmIy3vc>-_+9rs@WB0>HZ5-|)a%WxOjWgNiv7w}^k9X9 zX^|AtWYo;CuGQQnOG2HL>2_E*Kv?tw$k{~n^Eg3+7)-U3BqZQ|BG#4=Q09t*9UABa z9?bF-QL;0ng|!t?;g?f9_rXUA_!8&LEO#Er96iX?+|=~g<Im9NH1giT6rX+3J#cIp z85~N@j&sLdH^jA?NS4mePEOBGj8BY>xA&|n6q?mmai_V^Fgko~cyOq5#hS@kt)@t4 zilP2h{#7Csky>_^Ra(vGc805`?A2N@YY1A>5s@&!Q$bd+Zsn>KyzpRTbZlZ`e0FSn zc5WCc3z=L!s|7{=8}qq*2J5}3YS4oksIBhCc>qz{O+@?Ku%Cr{{%i?a4y50KhKDZd zdsc0lZfU#LfB92?`d6n<pZc>u{lk{FtgMMVt*cg^tZNf3vH)p-$LmRCgJ~_WT%nVK zTntSBbBoX{A*$=jJOjvj>WnQ83EA<KC<hsPomC8id%-QInwwfvslt&Xr~dwtM;`t9 z6B9#YdR!yd+`MY%wjDR@+<R;H>J7Y-W_EsVY-+w<uQJ30D(rkQpXEV>nHk<MaQX1T zgU64vU!afmd+wg`X~_1~Jv>KHZ0<>C8u+qdiDIwEAu*KIN2;)Nw&gSGhUw-88r)Uq z>_;*RRSYM!l9YsstOik^IkXaHELB`&hjN_C39`Gy601(NY@)>L!J~A$CUuH3yrO>4 zUG=U44D?A#2MK8j#EQJ7Nh;~Jp{1C`Jd%lMZe>u3z&T<xhY(HT*8m;a3H=;%sPL(T zNQ@70tx2gCR2_@ymJTEwU7>@$MO+L)jw+EBse(B7Di$%3Gw`$H#n?5r#5nM-@G|TG zF~0*a%!(gemn6C4RCKgZ4bNay4RmpdaxN8Ku6}JisiwkKK7twGx^hlrHOx?qD6%!y z-!*cgYB4gIR7a>Hwur-%<OwN31*b}~4dIG!y{(PeBM%gxO&CATl_W$161pZj3mI$K zVa=A!F#P_uRTHS`&$uV5hX?3NpeDp>sIWB$QI8RdqBlG|<jWsu)<SWG-kKxCsw0<f zfk4Uv<)8tjM}ZadL#5M{viPvDFg=y}zkceUedaS?K7R6Cp}B)M0<l;R|K^Srqa#;; z?W6zkp$G5p>29CVJ!R_&Bvw5;Cq0E_Ljf4_1#GyPa}XpY<T9BZTnE0oGO41oYbDDp ztR!=XozTx%c{?u?bhAmchHg|kk*<*v#Fhw8U1etE52FzpJV=8PVMBIiL_>iKNuXh$ zvQGc{lWI-@A;=ct;)f{?2o;nc2GrSv8FRu0wtIal6oE3Jx~h)vM4r3KD(92L4~&JV zRB5Ln24f`imF}8Rp5$S9z%-Y1WjaYpRW_*y6IgNM<A%XV3;{8y;p;(<Kla++{?E^3 zJJz%FvCJ@vu}67sbg*w`@Z!GvZu{YX^gYwl+*4tyjOCImeK_C@8wDklfTSs;L>(5e zlOs7mlLwVe&8Nk$zzI5>DsEWDgZh@wfva%>q5>&vd9j{x7YhRVsg!cjfK4|h1=ODc zW+sFr@exNh1j~(fh{PD`<`O}W#KA1mpv;lrz=tyOoA>VPUbClM-;mAdyIkDL;68{9 z;DK=s)u46BZZnnH)sba{>}2=-5b84G^59nKEOkx1F(Iynhe!=wJ>nOQ-GpqsMXbS- z)m}3J`8xa}&XpLLRypNy2I#X>Q#>xw)4g7Id}HSrV{?gMMlDy0i{wk3&bIzX=z;t0 z`s81JVRCXj-_*tC;D%!B&_ebb-+1mr-*>-j2(r~xV_>9#nTLaACg0c#kEG<`m@%Z9 zFffSu#Ax4Az$H0x5M$-o;nghONd#FNnJXe?DjCiKz*En>qBrmt8Z`yt<L+}4shRQJ zd+x{=>&K?qlmZ#k7b`*{LIzn2Hz{BOb+W=?ZJth~*$7p{LN~otU{n|Z$lU_^NmqDq ze^iDUn3&1pq<+fUHK#F&x|`}{T2_hFknF6u*r{Y#y98a(P)YEziJtmPs*3P*m_=q> zq@&c9p2o^Jh@-_-p_x$4ms0byn>MZMWuyPqp|;c-p7*cIHKZGx&YV1b`Ql~13M3u; z0e;nC{xly&3^UDjYu3E=$`Rfq+L&v#Ikn4h`y?P7uDkWn)KV<vBWu<ntNAR?m1nq6 z&5O&n?z(IHo;#<fC$C(*c<ksQRtm;@&mDdGYe%2`TE3%W)8?%kw(enLQL)fXrq9i@ ztz(Y86qwFrc2@f*8rxRwxO>CyyWjPJfq^ThjvYFF<Y3>q<Ig?u#&eIooG$$S4STmg z_`tpg9^AKk&yHp7YG-hOoG5p*5^4FvZFjaUGU3*y0&Dp&LpiUv$I8uGAmO4PP`o1b zfdL`_+|yxZI|K|-3%7=&UPEO@b2&|pprm-%0;_sq8`o%YfX)NGve3~2YGqW<(M->z zCa2~nr)Nqm3rGr>4bpN!8y{z;=AM1#1)e|3<r;OT9yub;boQ(wt3k6#DmuwtvVMvW z2J#^Q6$R6tT?M(~{Lsw6mA;-;YpuYl@s%7MlqA$OsaAxDT7-354Ij*Wjkl<2YT(T_ zMn}{F_13acul^7o3)8vAruK%$wobmFF~j3PQ<KwE<MR_EljDPv^o2}twNOwj<QrHu zAdAhboT%Mm1baOlCoiIdN+bGN95q$st)iMtJ}KPNlg&2_U2A;d**AXjr~b`f{na1y zD2@6ueB{+b47IUBwMD8@-WRkwV3{k%GRR7R^gtqh@I!KSxL+(tVbFW3(JhJ+q9_Ga zxrKqB#uD--f?-Uh;1Lg&*?13Vdf`g{)aM?5@z4JJQ|WxmZ~WSCv98Z+LE6@D+PrPg z_B}VRWKT_|z$dh3d7MuVD2efGdA7jvPL^l&=CAOH&_nx=9X~dBxi7_AO0rF<rp~s` z)t#NIT06S<u&9bXkHPW@6na*aV38gbeT*%22+{GFzDkgD-4@Ql3Nww9mwbRVa3w`J zT%FL)P*jqT#k*G|KuG2@#gOSW&EPdBr%!TEA_O?Bka9hwYJys<q=HFIQ!rB26NGww zbT>3kkL3^m$Pq)Fo1X<-G9ihiaMHe*zymeW8p=4;nA9YGD^W3s&2j=j37g^=iM0-L zLNEJ4m@A|N6+^S$upCu9j5|?<W2i-|P9e!JNj#U}XQzlEpv6aw;J`QvLX2PK_n0yf z05cYy<lsPqcreC_xEm9o#LdcTG{vGHA}mpLrQ)xI63Jjt!fSF!s4mAQ(NbcC7YCML z8G&MCF{<VhLy`eQ38y4&i~|tEf@NwtiD_FI9i0r<Bud?|HN|Sk)j?Y65mRqbL|@4( z?A6Ku54myQl6Rdga1WD)nCI*mJJ8ycdCRU!9#m2&`l<c%MjDVhT3swXAi~T9M<jqX zm=Hav@Y7%cI`%F$6zhNcH$MD*ANr>Qedl^s73)$tMld`p+TOG7+UYlb`NO~d$-n&F z(v-%9+6t<%A$_N~pf)m%rOuj#YOY9{>7(I?9X{Pgs`@`VEolLox@ku-YlJGG(ltKu zKPyk>LDN@AE>JRni>H9mArYpG0mQ=yqB0gd;6R<@bOqsLc?yt!;|n`a@Tjm5DAC5+ z4G^+fBchP%)KcFlkR{gqR~>;%5Edl5C_^<!FkeyvakwHB{u%=WxU)Bv<r@fekQnMM zs>}bThU1z_;E0D6Mf-*mX>1Mn_rLOyRIY^{x;|fEJi}hs5|8}$U(Dp^Kl;&MA@A96 ztB(Q0)bo<DpK&$Gv8rY_{Kei5Je0^Z0Z~!nwc8WD-5Q2u`CL6ivuuVvlhiLh{HZq@ zqpZg0FwtnmGQ$a6w6P}DoMODK$jKEHdDRigg9R0YWH2>rCnz<kA{ze)Y@SkzIZHz= z43K)FCo24fY$o5FF0{|gXG>weW2)F4R#=Lw4_{!%xL0x%ib_qSx4{&V4swPLcbChQ zqES%^{;6O=?FUy!bZpt6LuV@}7V}d;RRo7==r5yGHaHkyG60*I7)_ODHf>x-s;arU zPA)Skk(OeuJg@>FW`+QcOW1eM?b$+hVr;0bb4{7sMY-ZavH7WIp6A;R4F$1se_F`G zu5!dAz-!QA=(mU#<0k{IpF!|bjoOh~2ylhKlQ1W8^tgZ}xmJf0G7<??C6>GT2e=iw z@bn9>^7Y3Yx4!il^!&`^1iN!@x#ec&R1j;`zz$kOtu~opIa}(Q+o2Mo&1A?yi-<y! zK~f1YCs{G_+_7Q-(0GJom1P%XXD^^$;H(gNEz|g0Rlp9*aSFP+0*<J3dPG~TRoPHj z2&Ra+n6`?CiqTY5_5m0Xc-aQzWn0DxswAl&?6qm4)lBA`^SqC5zNs<4Yv<O}UjTtX ze!qH*7XmKS=XhS3x51AMUpRDd|Ax(L=CrxVx?rv}0$!Dj@7Aqb(&evA3=Xulu27+u zZxLkGKtiJ<Dj9O68b&n%lC_Z6tQq^Xk}r--d!=r=se8@N6>GOWFh4!eck#^e17}Vi z?z?>M@XOB~e);88>#|iFwrtzJbM3lKEp5x{()sB*ZLUshKU9VZ)9f^jQn7j2#@p}R zc;`Lu86VNcgcC;(UOap9tvAoV_1d5Rr{DkY>$a?U=>EGNe)#^|Z@ZzpD~DN3OKq_L z3-qWIhrUQkiI86ISuO<Kq3&YR%*7aO4)GGDh=puOBhQ0m`4;j*d^9Ch$uzi#$y3~- z0-&>smzGuqOwY`x#>ZwS`1%H)<kX}3JUHpQ-&Kw@onso9tv`0`<mGdh^1P{}F3TPL zFi>H%!Ds7Id?Z3_t!!|nb;>oj@ZHT;tv;B>v`_hLk?%$J_4n`9Yw}Ba-ZN+}{Y@8H zL&1iX$W%6UFrC&W2F5Z<kiVptn5aSuN1;?#R|lW=oSYiV!68!smw{TYuE3l3+S^(d z=4MN!nOW8?CdX!`#%4x`)Y>y^ZfGhrHWu@ZeExtBe8P=K*WjmaM(g2zcS9nqrd#m~ zj@1x|?=<8Z+Pkv((R}XNCtm!+|MJNn_=i7CcB3x!r;z1|A5=6uWUub^!&EnZhyfN* zA!UmJ3_{Q&N(+blDnz2XhIA!b!BIf#_7Me{piJQd6MT?lVWGco>e*+X|NBS2#9IcY z1}E8DlPa{dtX{eM=G(Szy`gK>+WG?DiI^KJu^Pa82U(8S_%>gk&gc0~!NS%4i^q=~ zK7RP{(B(^M-dm8(XBu0&)~;#qTGQCJf@OmFa&8(UN>=z(7|dw3F|MFiTu__xW@{sO zLiJR&*$~iLhM7ln^&>V$rd1phCC6AwwmK0RuN0L=-^55nIja1Y$CaqURdZO~GZ)7= zH5gG8Bq?2eR5(ZQ#Sl`0^h6+_yZ#ZauAs_~Nl+ymz*VWHR7I+%DPDn97%UO0Vzxwj z@ZR;fElGYoWY}LX33$!nkOcoq&_WeXidspjDlbYmoIq!n5H?XpW^@Lv@JlKZ2x2<0 zIO1p$H4ZPCx+E|rA+RK82a*c;Vg(aCJ(vI_SO=&sNi?rqF*H;r;Z&L~<08R<N3|9) zFd;0aNWfy#7Mqa3S~{2{NroLehQxsi7eMi$k`atovl}_WP-va3q!==3YL>A#4D^69 zG!lutpwS8~iW#m|1iGj3v0(;?^V1`#674AKw(NHvP0dd;G?X80I-|w|#xy^gWN@fi zG%ur-!U3c<2HAFs3xt3sUL=OB-Itp5GZno5{u@8^q3`_LPk())v9+mvHBB)SvSLGP zv2)c|9{KwJ`n&gj=tJ)sAA`=uTQIU*=SpuC<RV+c0!{6CNFi2HGNlQB)}5P|WQ52} ze_bqMfY9kHtQ+~_6HX?Q$qH9fUqqG(q`PCKi@76EsLiIAaOMm3+?0@4+zC=hF45s2 z>z)a_Qc4k_I7)pTy1MJ&;@y)EQDi}c0*TW&Ent-dEcT6zaF3J~V$i_Yhm%Qj#hjJF zoxPu>4h$tg+=8ls#H6_hbCa-ikZc%977jKDX&S)jh9#5drsn!z{*~Xqc;Zs)s_j|5 zf#2kmXGaIlr6#Wa%!hww&kY+!C)qr}3;|gxqZ(YvaK8{xk+noG6fWLX0MFF2n3R(W zlr3t7&=5wkWG8J~Gmqf1Dls-S%~LMA$*?dt&Wi%LFhY{yX1s`%Z_q`yxNFUot`)p( z{lQ9rP(=bzV>KBEKrE#SL5;J(Ot2Gy{Zrz}NjQ^8^|AYj+CBpxyrB0_k#5sAs*u=G zMDPVCUd>^YGFS(xR2WN@OmiG3OOxl!OVV371`ei}E}U${=C)|c2}8?5F(6;el`8)b z!$9JUiSsw{ic>{IDgpe=F`O7`j*VVp=CN(-Ce1p$@EU27jR2;cTo?p6Q%fnQ)~;T* zee3%DM|$Vxr!tvlc9u3Yw;exm>cGL%x81yv#!bE!MRa($O4leUc}*gGOC%A2t`<%R zO)B7t2~kztJra>d*95i)BVn}&6bKBSm`R=Qof#XSnVy<DcJh3ELu-AO8>jmC-z=Xn z$fS1f+BGxduaqG}tf7IE>Ia)>G|@GudvmJtrottd)c{MA8a`@Po|FGp69~aW#nuW0 zI3x-`9EPfTpaNip#@K=;JX&_%`X`7@Y&h#<m=bDSjEDNNz)z)C2g%B03mI~TJLhVK zmCT8%rgCSfoM=X55_FscV~`=R$(`;UY6`_m62V|zf6J{mec_QWPR)$-Xfw@JLvzb` zCin77FMrqfeSrS7jxNNRpd|ldt=rHWHg06)ab#q0jT!*^Od~t7g2s{_j)ZCI5ovey zJwx}9K9DDGfTLZ`aw*zPGl7#)`PLO%Zd<kawtGJ?Jko#m^fC5J_nkX^>Frl8z42VC zxpCdPjT^S^T)Sy|d)KOTwtjZLTw<w!YR1FZh+yKEt}nJO-+Aluy?5Nl%(M6Mg%igP zoj!W-!uhj*_2-}a<R|{Fd*!mb?zrvU58r>!UAOU}VrH{UzSu^gXR=JEXgnfEo3o=_ zx0>pZII}{)a@X@zRPuu6g(_<NC;cO@VlIucG81*l6fdb68NvPa)W}$AWPFB?5~jJ6 z%#@O>(C9#%K(?X-MVV*$pLzN@T1W1@GwD<jLpkL*t(l6dB2vYFaxXXgSv!!M^tBZ3 zW^iYnTiErNE?(wCghq^ZUg)GJOgy7h)}*-#1v<l#E`_qG%u|V^*);JyOs6Lrgh@{{ zQ=0$&ANb%?Pds(?{Lw;dSD~RfUufh-2&@56;F%%wX2g7bE}w5`Y-#6}7_&UP!n0>Q z3Nbo3J2WsxZ;;RPZq9~6Q?`%?nQwjCtdg=WZKwj4XFRvYDuPtg+a}b3!ar4LY(+0t zi$3?cuRZX<ds$1Wug^{LCR5f3a!BWEI;f4VvOy0jX&Zns4Bbuex!LVD$u6sNB2zzM zPQf{5v8Mu594doSJ1ANNRSoskh;+JtVCscuU-`lpzxvoWo*(NUOr?vdVr%=R-CK9w zxPA8xo!u+B$;5X(c$%g(rWXakf=8yP;EjzusW>}u>D=+7`%fM{GSGWD#Y$2ppKe^% zx_WI#_v+^6&V05J5U;LTm}M&pYS19rU{eK$tif1~HcfX_QV9V^izha+bo(raWr7_t zMexMoaW4|JX)#(A1yDoO4gwlVq8eoyR~4rOE-^oV$pDosrB`DGoFp*8L&zL4WN|c3 z3XHz>%eO~q*fPSE@vDH}l#T1`dV#FcWPSh=Cpi;m8i0OD_%z@+(jvLAB^v{6l<Ghi z<m7&qWY3HU)74w*98q|h#k{-(WI?KNmf(`0SPIu|N-AFixlXB(B={u>fy7Z)Bp}2b zT>*0dxYja?OO0NR?i{|^`JHiV7$>6Ul}cQpz{)anX|b^|0)99o83i6kBP?B!P=)M~ z2qQ@nqj`~c!kB{vgc3?!tZtmo;-%I>t&)JWM0Q~a$E=BV-kSoT^Z=yWVX`zHG7{rW zHi?iP<fni7U!MKBU+F#dHg`gRF>2w}(H+ZMZ@6){wXCv?rX0?+(h_ghx(;wrvUtHd z5@!I%G=z}o(rrd33T+x=qvKrq!@v4Vk3RO?wZ3zFlC7QxhEcpO-PX2pYH;9}f8`^5 zvAMY^%l(eB-sq+gDZ)ZiY%*{MlFcZM_{}U+O6q_?O_#C+l`1vmUE*qAosbxDizUo3 zb94&S;*_w_4HQe!$TgKV#dsM@2{&ng<Oi`cN=fv*5-^}SH<FYp^_(_}gJ>O-*#wY? z9Ae2b+&e3=3kt}n_<*@<=$giGN0DZB$V6u<Pz7vyTY`1$!WBDHQxS=GQ|xS>6<mi> zT#Sbl7UuwCXr?Jhx>(4(_}qa%`=dXrZ{^{FPTNqbsmavn(A2ey+i%+OlRx$2W78BJ zbcCO=)DTDhho9%GG;*y8z}Mvjh^4qx=_OogWLQem2wR>1_kHkt9{JMa7f$TwUWtZL zI_8$IUbb)FJ|4$qx}{<So#s6n%DF@w12h<=i$)h-AjQITgc}A}ObV;7*HprC&()C* z5-Fpsa^qPEguCe}ePFJ70=Zae1%hZrwrC+n0OiAk1)HUUm`WY9TQe7dqNqZSD-AR_ zvcb0$koYLgP~>rA!kKi_Qc|6vv@yS!Z!Bg)Rq;r%Fpe`GVq>|<Kr1~zK5~s*zj4n_ zKJ8^jOR($cN|+2|p%N{DibQ5eEW1y$b@%MM?d|>lb833LHQ!9z(cHLf>dL9dAAj!F zn>H%@9N$?>eG9pqD5z@!Er6x_qQeycYyq7DB)*as%Mf`?p$JD+qJyprjgxBvOYzWJ zDuv_9!2G5D@tOHdKHGfaz_GD`k;dgKm=}q|!ot+#M0-!y+O_LwW<vo%KMqQd7Z>z% zjf38Dx&MRZ*#NF3;(yD}P#A&-4dG7!<NyF507*naRGE`-;sX>FBV$g@0M3A(@^888 z`6|a~gs#WSY((xALlXv@(|h%F0+<^+_@FhVg90piD_y!fJ3r6E))Xq+v?AL{*CENe z7iZPU&52c&3jz+7%`vO5<Mr@2-ME)|!Q|LzuGmTwlrQKt1aH1|V0dUU$30d=Fom*; z;mnc2Cm2?)TA68X92vU0z%~P0$D;+%qGR$P=31$)U<C^V^K<rj0v;wJF4JH~(;*Lo zs!z!2Wr0kpsqdxqtVHGt&1-hwvU=~$_fCyoyL|rmsbdGuojrc;@cwfL4x}2ImaSRO z8x1#a-PN;VWu`vIG66Y{B5a&umwbu639}2lv3>1^?Hf05OTFj)gMGb6kM2Ku_~4bx zXCL{@6Oa7eqs8{(U3cE{;6rym^uXPlH}&KSxCJU&CRuM*Ys(*N4jzu%gNn5>L&j2p zLk8Lf0xLme2d3J9!14)BJaEQ-3QTpTY9E-lQFQoEv-_-kb#R==3RoK8!4Gm*IU35B zJSFxj7cBPF&zI((efrsjTti*HnU)GxYIj`^<4(*-lo_lVz!bYsi4Fgt@yQs{GdbQ< znCrcAg*3kpL%{#dHp^FeAXEm+FXC3vWWJb^is$75dLIPX)Q_anOljl#jsN2>|NIYr z{|}#g`q`=eUS5yK!z}rHGcV+;&#?=EEK@09Rhtia>H!1ZzoI$uEH7c4nc}SrlT)Lk zQ^P~jBUh-;6^q5jOrgkwX>5D3cM2lSyAQfPU+rbVkefvdQ)A=vbCdao){*h)s{=#q z!eS2&g`}^4xTAynIax{@*(2An|Fk}%@~2fDasy%RdCg*FDwdjCbg{$C#!;3Z=4Qiz z(mFN#fHUMDzUs>o2uxFb*GkVl_rm8s|5ct88@@7-s?Vj0ZCzXL+_L?~P22Y@TfR1( z&GI107)wNaC=0X1qMXas7jl`>?Buon-ZzdMJaOc}$mL5Q=-n$k+S;?cbNRZ))}FdT z%X}(7Kc5|+XBB{IN8V~Ez+w^kt=2~-ut=mDiJ@q2wGh>1t?LRDV<||=NDT2L8E!ac zxSx{oWY|*W6ARR&1fbp-qd%mX|3LK=6?OYZKduHeUV+d>hs+2OPqIiX)~K(8R>R6r zD}<4R>gzX2UzEHE0J})f=vpmdaSR@{hq<egCnm+wl1AZGJ1T;LIwF_3PU2_xR6vO2 zDO#Zx)Di4#Tq4X$S`zaANf>4PNa!X&thgKNro=dbCUHsnBmq{?MFfUXNkxE>1V4n- z1f?@v3{RlM!EX&KMt`S3Evwk%>*?dx`PmseiyDaYaRh5N)TpU(h?H^uF$drgiD6of zB!D1Fju)^*6;HAgOC+fGWc;IkQB18(q64#D1_-^E4o{2=YzU}rQ7<$%mwM>oTONDt zvyVOT%$d{YATBl()~sA{&%WE2ceOKUKod>7#aFxtsXKDEv1nJ9G!is!(NIf=cC)E9 zwE+zs2|Mz{fV&O4U_yCea<<&vUHsKw{dfQ7U;W(Bz{Rc=8y4#FOv+d(Xj!>o<jmV2 z{SUwX2Y>jH5}V$<JvJ32$)YepoQ6tjmern1i=ZDGAj1nJ_!_hbz(rl6tg<1TX-Z0j zskLf9Ahpr5#K|-$bU1&DNSpv-uW<(v`A2FAom4~Ch=eH$$=byT&^gIDT6d<4wWs&> z45#>s%q}|nVfqu4)h0|}au69l*f4t}MFQmuJqIgRgaI)_kP?zB7C{0@@W5abWK%&+ z)Lp@faLIBHC}g@RQ8@y!*=re14#zeJYQu99qeZp|^=zujue%H<urAJf21*OR{3{<z z)v>#ACEF>{nZCL_!-m}Re3a^=ANzlb#q<=rVRgStdT8V*b}~7zl7Ui4CxD7Yt`mts z@}Ls@kV_Qfr;?#@;?!(u@7^tse)aG8ywSxAm#7qcC$F=+<Ay!kySiGZrnH|HB{(@9 zEF?rS37BAlax-!H$fOF{R5d-^PsBCU#Y|NU(Mmt5W9$Nw5|yJSPbow(S5;l_+*UG* zYx<-;G$NJ`P-rZxdLAE4y+~4)Q{?0%`G!A&mX%Q*0|tijlt0c|%oCCwTzR-dWyzSp zO<=QLj<u<mHZB;92|ocVWTusqxrXS1T&&On2S{3(Ni(z^9_nvyZ``tF14DAL=8%3S z2fP5|LL~TEzUH3;Zc>%!MN<zwaL*tA@n6o2kEWV?&@5kUN@W|r{^&P;{^$NNFWr)x zot1bPEhpz1#Ufd8ygDGMNHpTWA@EWxK;o;@LJ|_9bcg@{`)qQ^CK>@+x${?M`>#%v z>kCY<cst&Kx8LGjkj2I(o>j*AGjp@$naN$Z-`3Jn7@wH-S9{<S(@=X)EUzOC{iP%B zDlklt6>f#ylYmuoMWGhdv&L}&S*bH_mQ@l%LAHvbT=9~m0!jHL4IWk;eflDJ*b}AV zV$X7u16JBqNC+rHXbG*ocW!z)2RN!n)&QfkHIK$UNRW~$h+H%e5KHL<5c4gk5zMsN zwh*Q3=QnQZShl=-bYirfH{G*?fY-}6HV<67a_;>3?K`&4X>r}%p*n;MY@WQ((aw~l z`(p24xipP#u7EWWQlsinMPhA$g$Ak!2lwcCn?2>5B~vv3AfqB@wObggAl;f709-u* zJJ1Q$*EM!;+OvGy-g~E}NBb^cWR7(5#Gz|vP7R(s{BpLwW96zXn|E#8zN=^DhQ{VL zc8{YxwV!z&Ecs|6OB2k}T6@;rvwG9r@A}Sxf&Q~ckMID(`7_6#eDswkzy91uigh>a z-tn#n@4oNB`*!c%+|q)V>Pj=3XUcuLyNYg{l;7S%$s<g@P#o>e)5tO`nIuekUVi7U z0PU^q;g&}BFFTcLnIx_}+mKF;PA>EhjB_7>)d9(bgP2Hk#99i7FN+NIb(bz&K6&C~ zs$n_X0MvjwHj`v4@1ir1_(O&!DjiH3RU`DUj@~gyBbiIp=X<XVkURFi0AZVKT}-%2 zuUu&ff=VH{NfpCTK<fgABvI-WfT)0vPffQi>-^Zqf8)}n-shfu_LY}kK6d2T#K0N0 zzAOK6jo#6t&wQjC8=6}?^1MVOTS)V4UPH0i)UG~4Zy1@Iot>VYo}S_D7nA)GMtS5h z3aYwRT(FqM4V56URhrO5!?=2$wbPTQbF(AEBT}nAOMxt<>hN<m(^lkVIAnp|31zR= zw=JBI%JcBz-web&)c}n$>?*gaPN{-MzEO_L85+%L^oT5dc0?ps`leod;gv6c@v+CB ze&O1s0ez34(6)Tn{o8ilylKbow)U=cDyRJdrG<H3KdEtrIAl`gLPLf(2lV%zId<^P zlP8W0UA~-Rb-zBJYUpTOv8uakO><jMeZGOkWIo}rFh}Ovs1Tc^ttyl~w<=9-XN^oM zr%Gg;4jCs|oE4MzWCU%DTQ6&@EEwXqb#mTtkEnt$xfEG^=8yy>s?180piQ7Nx!x$K zi1^`3)o`pzQx0%=<|!Q533lCxAyp8?p!yK$JEenNNk+CISIMj9_fE0cI%n!!92jww ztROGWsA`rKZI*(Q8nLqErI;i+IKFdA!Ub{7JnetyT&2jj%b-@71bvNO$!JUkFowrA z#;FNrvAZL;TUsq9yo`(0nFOZGsKrjO4+u^#cqJ5LEdnh9#Hba~rj9EWQe6vZIXu+^ zoMVQb8p9U_)UY_8n43eAaKavS9A^T=j~FuoRCJEBL^!UZnpy*UQxp;)^>mOV!~}We zbN1eLvCvFY$Uvo|t>K4$@V(k2$7=`;S&OhUYQAlH5qQvzNGWSQoh1k`<mYXY8Y3WT zVto15aIMnQBM8$>R|n(~trM5WCd)tYq4)gl-~Rmz&%80!++Jwz;t>QI`Igr1+0NCU z{>#68-v{3No_F6pHN)b%Nz=$ts_<`Y7&SO&OEtKwC%sIhY*$+fzW)j8v;uPo1EA{_ z7(0fIzRZT8v<Wb_Arm4YzyvmGV~GTz7@hl7v_$cMB}r(IVsHnGpWyH?XBtCs5-&4E zj7@zzxf^1bVYz2ai1%T}TIh0swg7U7F=AkCK&eQYkjx5Q9mzxCEXneu>1O??5_FHx zB+DLgB_br#T9Pd0>?B9?1{)-?TBNsmr;3GzKm3EgJoNgZ=9SyC#a7<h4Ui$n=ty5` zbl^vS;)m|P?*@I<B8-YP&o#BBKZqtuQd|U41Sl^op16bzGQ})8Ac%tPvgpMKfHCok z6|E~*-odJlR-d%VQ4_7HY5T?ph1rL1$`sc^5?lv6`+(BjYo$~2s8AZU<2)iZ9APNK zAUXI#l}#gzpq23CBALfe`uTxfCLN8~A8r#kv_K72*r0?6*j%f*348<%TtSp>L{*(N z&=zCmzXVxnFjN&jA%Y-<G~oh86;rq(3FXSn7YAd5!uIr!$uu#}-qSgoHo_H8Nzy+& z@O*iJTVm7WV{;Qj+izUo-P7!zPzFdDVF}yMP)kOD0apm!WP|Bkm%ih+TRJ+LCniQ0 zxT#vlW2c2eW7})5A2@gJ>efwNrb6N*ZZY!&oS-MgFt-Ttu>qbWxS14VRsuokMZ78) z*O8q>_?E-c#GIi9Hg)d8)WFD0s=lGVF2_DF6o2*Q*V0)&me#0yq2==I)OfmFy7`tH z)NE5i%?cSEX$=U?<ytXTsFI&iP+l@eDbeu3bbN;!X+$nAO7=h15EBc2#i<e~u$>5~ zmGDClejxbr6f|IkUnHMm00T9(&Q()QJvYxm&9FrP$#QuD1`g1NToeb=sa6zz?NKIy zE%|U|t8-IR>gHQ^KmOI1^iFfWM3|~?YHS-C?0xI4H+Svb&WAcxk@=(XkPdLAt>kuf zcGHH97f-%CJwB2twt7!SC#clqA*-2|&=`4dp;tp7he?~Nof;$<gA)vp>Ks}hFtEaE zR%u%>nE!H#MZNiKwqw=Cj?G*5&dm%BT)DvK4^EsoJb2~GD`zjh^5j!>-7B_k+s>;B z)~#LN+|r8dIrc7~eTLWjv$v<7*Sz8J*4E{>-m~)dyY8DD9XfmV6uY(0oI3XU>nGlL z<-qU!&Y$qAf_v||{ecJXyW_T-x;l$kHp};D^?FII%gYr~T!-9)j@J4qGkt31d2Crn zerqv`6>Hv+ggJUizA^z{Tc!bljq(Uqe7taAXiU#KvGbi|xkf%z0aDhALP6tC?&ora zgKr;Lm@YMTuuR4j(V8<`KJsOv$g|GI6f&jpuoR-;an`1HUJBUI-+ztSceb8aLQuan zfwK&h0#ZeUAs~1tX_keA)#`^$`3hMcq74a*bSQ%}vpm)^-?^gagFp0xANs)`7#kfu zfBN*%Lq`rCIB>c5%3Nu#tE+4EnpGDs_P+Y^D|{@vZP|)!p@`3TTpd;To?kY{D+`M0 zCe}{K0&Pd(yN2v%A$KWLCM#q|*jB*z8(ARA^2xs}pEF=}fu|~L5l_4AS<ElZm-+`r zR<CGdX@D-0od|%foGaO_FjI&I`{jK=$}23>JU$czc|*9?q4U`Qx-?K0F7{45``k-k z_{yVCJ@eA=<$+YXkZxYK_J;emZ@*!~)?KZg%NOc$lco8IS&E3N4+RNL*v3$3$g@4? z>XqI%SV}o`aHRJ_YMSS#>UiZ!$BLEg7ief(UY~EBn=A10Eqx4Ff@MB@bh4acm5A~$ z@1u&PsgAN7FATF$5@il2TT`)IR_|!3zzx%F1GePhsd9|7HJ%~3n34no#-BM9AR@Hl ztI<L@)HIrgiU&F7XHT!<9*A6zSd~B}{Fv*ah;yqtSFx@pb-ZeXh*r=byP`sr_^n;5 z)HIS<6ahcLiNg`>n_OciNxT^7LgQ!>$HUbU6Nrn{wG2ogEap`OSwx>m{ia-M5M0Ul z45uUlVU9R8jvBZM(;>-o4WFfzwnma{2U++@8Yck4v6whO7AGWCNQT9FDeR=kfbVFW zUARMI+BlHpPWXCok`~LTVeSY^a)^NnEN0|NMC=%^$V}ZvR3AkrtMLHt<){8jEUYzF zz*H7jZv?#%3dIlB1oZGg-P{5%E8=DY9l6(2n897VVNCO5^9p65sme)%1&c`$*oNXQ zI*TwnvHlhvL@trc9b7WqjP89Z1s?3NO#jBmKl0E+9~kI8y|UQE3zKMR>9*Uu*Y%DL ze)#|S^?UCAB3~iaKuwQ2K&)Y`EHdp9R!R>!L0b5X!Ue{T(ftZ(!cX$0mvQp5Asd`@ zLj+Ag`&j{&P>+FUOjP0`93{e3fB+Q|hfQ0InL@&H3rq`Xr`&@GLU?hhB9|!j1rXV? zjYS~Rl6T-ELemIxxz@rEc%SB_0-fkWjEPJFUwTWJsYp-|v&EAHRxX1R_l<-FsXFNL zArPr<L^wMTu*<;0b$!&E0+dh5d-8&<6WjseUctdb7k~42|7)tLr=fK@Yxnf@P)v@G zO!Qw^vuW)w{rg{F<0zWT0ECzfn2WCri9|{TV$=qP&?=#lD-Q`%=(1Zx0?Te=;R$B4 zsf<PoJpXA1i5h0yp(4N>Lz>H2i7|E(t&qpWnh>I;tiTQkGQCi_P^rbgE!HTzRfRcB z12OS9j3iBpTCxqbL8InSU9|&}L?-S^x3`IdES3^(w5GT5)h=1ZOfR80Th2NnI9IRt z7+|f66=f(j;;0O!NHub2W-%mcA;pDoPfzt95ZP@4{AAK1h$2=PxUvI0o0%INzM7t! zxc$}}^UMS6upF0q@QpxR%@WUdG`0jkJ41$`Jw1h+ZruHir;joqW`As5Js-SkAGmPo z`4?W<xZwlZAM9f&>_DF+|45Fmi{UcURFUUnovMNnRg7T#;g&#83bAl?T1>hKuL@vj zNnFCJ0Okc+%D!vmzM&~T&_!V(cbG8@4UHZ>ek#+{QOC|*HKe@dj6K<@JvZ#tt#GDY zVrT7&w8lB6wq-Y>r6o&K3J_E}UbHCX#%6Su04Jqdso`q7ljLvcY&}eM%DS$QdB_wq zTxwHBZy`(wAmz2*+{P3{g-NR(x^RYvQPMi8sUr!?<pLE>XC+iCgPP*gF3{PDqmoTi zMFkgu)j8EXk?UVT>rITA$_sbJ7s?HVMkc*?+<wOsUwpbWJ5|T4?B{t6!Lq@0_Knxx z{*fR3Ap~lp9HOySo={Vb6!>k~y6LH}Jv}~pt*zLir2+KD?~zKfRbqvSJxaD)@E~D6 z6KxPoZM4!>3V7QqeZ(IU*=k-hav}51bLlR}XmO#$jn?^croN?n&F+;O_uM^S8ob(j z?C9~MM-Pr%I)CiBC;88`w{BR!ar5Tw>o;v**1dwpc!rrIZ)eoRu5Om#jNFoK?AWol zd-u(E@`k+27tiq?_>;#EpE+~k%&|xQ^3Olh)zfk3owq&s(7kuveaEU*t=SB#u4!hb z_P93MsVsP@@aBr87wp0abVXy86=JkxI1#D5e$d{5XK-QIpu=-e#cyPM%3jStF~JY; zmlN$OKK4_2V-*rw%aGJ7uf9&lQ^@hX$$8u(F}gt#$l+ibNGtV$YR%~vRJDLxqRJ67 zYHrsLkB*Fwj<zr3+lN~3_D<LHRKhu=f*B?YWvH!nkRYgQDus<RJ);frh}iNmHPSM! zWc8HS5bW4{<E|TS{sHvWn{!pTv)MG??R)dh!@vJ~zjx;C11TOQXli2<0WW7|hd!@h z<eiHst6IsMC-j+vx}0{dVKmKx9=6BFB&w#G*GS0n<N%{W8c)_iG8vW>lrQ>cL7*@- zGdnms+ufGq%>;UF0xHV2lt!5gQyF790RYZAP}EMc&ay!?@I$2b3s4|Z=g*Hn_4Kn} z`Re1(zVOCS{|IkFNHw;t+;cN87ud9QS9^OW(lL5^4n?UA!FyS~S2#mU#*?aV96NOC z=;49O7qw`_o~e9marLIo?lo<lJz1V$U8tX9%RmWNuz5;a;sE5TyqI=?lyOo@nn^#p zd$l-LqQXV~lF7oOf~u~2CYqtn$V|T832ftSUa24%xkU*HCprToY6lAh0nG}l0}&ae zOD%x>49&SXz;SEB5ztsrJk9hP*%3}c9RtP8D+oci3Sfy)Em>`R36gIU^bQ<d!6br* zlaQn|@RLb3_IZ-yI91G_sD~3IiC`?FO8im?G3K`(NNSv*0?gqus>B-5Q)ALN5HqMz zZZSfP83&Ri$#9I|0Z$4DT%5HU5G#%`_H{&F2W(_jQY#TiIHI_!ZxptK#3>1{LGx&g zKp<wjB<A%}ozVHz5GE9{pd~Mj<J_G9UTTJP2w7oVX>FSU6;=xUs4O>BYdNf`Q}=A# zm{P>l-VD-BGHPKSPBUX|rSgbAOzmfAdR!(f#8p3QS~YGnks@=E5&=v&Ce7leCv7qj zwMJS!V29X_?JIun-~ROPe(ZNg2Kw8(*VwCAQkg<?>&i_RPVWEx|MbTn{k4BR#+$aa zb<>{pORzOhm@c%EvWGuuZF0TYmlxz8*Ca+TMXjYrQ_=WE^cqQ6V=0)Jn?Ob61@W<~ zQjAP7c~yy=Y7Qedm|UY|5xRqQAwxJjrJyFjObDzX5?9GZdj|^3Vd89>C}5_0z=1Yk zvHcgu897*|UXKpe#!Luj<Yf2kHU43^V29<osbyvfCiz^<Hz6vJtEOp*YbI1bD*7o+ ze;BF$n3Cxq43`nyd-;_Qe{6ngp=0gZOukV=bh5fUJ#y`0sx<a%|KWGrm*u9W{N{|z zhejT94=OkLr}$}<hXmVrZ#q$EZ89%ZDK1p0VSW?L^o@1K4EL^zinvldMW)f5aTZho zWui17&8iD<F#)0yZITE(GZG@P5IW<4qmhZW3)k_%rUeFWdelICfb)uLa)Lty#+)Fg zF=HUB1W`!(N(;^8QA*{{X^f32;v6hlD!Jc`#!>=~DJf!^K;1Mwt&(E7%7F=VSu)J= zB~E@e#$b~{B$U|$%~Q;U`pn!M3y<KC2SJ!!B6^_k_DP@A#&vT%XT*!f?%sEsNbHbw z(<%Z)SC@)F)0V4zg{I~=qTJSc_rni9`S{z@ljF^8Eu^zEg(2gkk3IQgKgyfrKsHt$ zK=WX<!CgEEH33n?23uN;LxP3P_s+zLBPn)`PYJphmIx$B6AB5TLP*Gt3a+W9EVN1c z_*AO5ZzPrFvkh6w3p2!AA#?i86O)6ZEi1d30?^1&il(N<8@f8yZ{!68P|_qQ&qAIm zgI$P$l%jHI8KRt51c)-;|4ctoDABNufQTrSK>k<*KwQ^QfVhN`79<C36CW99YXmT` zu1ZszSUCk)AVZ3&7_!oIlT7KL*S|Sa8EHV*(!-ox<q!z0U2ALb#F<GtJNKKK8n`ij zBd;OI)K83$w0C!Mk2P0pTF5u^T++z3(T3*cIo{?Yo5hw3<(wMJ^1|jV8<}^Fj}5eR zt+wX?Sd-VJT@TU=SxR6R?SksLW~TTF!M3`NU2-JT5j9C_0MvS@hJa;7KUglC3?>4C zATWsmB>vn1wrV%StTNNqv+3Ry8}{9M|Ik1mJF!n3J=A;g-0?TxKJn&(bfKYZ?fR`d zwr$(CqpPcjTgohD=p*o`SI3LoxB*|T<1vD|=G7bbtl6~l!Re{1S1z79cKG<w16MAb z{^BE#fAO<l$#*o}dh?C%`i}b_xbNOg8@t)4SS~TM<;BS8Ep0Wo(xg*{*?bkCtPwzk zg7N~GUSEx!a@gmxGKLhI4`nOw=VKv5>o5RGu|7gQfmrd=pLINHabQguKY#HuX~QD} z`O<7I-@xkz<wtwQPD|HJi_LLxbHP?I@Ua+bYAqoPyzmpwGgC98qa)qjZQPo-98^ne zStZjzs5t;wp^$+Dunq*%oD{2mTtyfz7-C%H5mtES_;!Wt7EpceLTW;v^+|2tzWu-b zxBvFS^Dlh<vw!#ITl=T3@y-Gs)NjgUi#cwrvwbDYYYTj3K$TA`Sk^<jFX3a02C7D6 z&(!SX#OUDE*tKmtw@~1DH>UOxppmJ@OnYp2yt}1?6%y16YRe3-T&A#P7a>J-kx#g) z2J4!x&$2G8R^Z(EiANuQ>hq6$?Zp>gpBkM`)fMVn*e`J7wrzViY~I<ntcMo|B7R~{ z-v*}qYo&^ZJ+dh}&Dq)6-YdPw4;?&p?8xwy3w)D<oJ#X*kX7s2yH>X@Tb(Ji@_qqc zsWHXlAzHUaxK|j~NvtU`o1~ajH7ymeyrbgkHAJd7UfzIuRT3gTq$r>b#FpX4qvqt9 zXuv2xg>SzIHGvaA!H*Rz*H3R|G7L#1VC6{W2;bUOHL#vdi=;%-u6M=wAWz&Q4Jz0! zIiag`N<<^f0CMz5?<lc04!jn$m}LTz2u3WE*Cmsa0vy31$#4=UW|%~XfdpdYIFJN- z7~1%V!%6&*>Y&K;0qBBb`fn#7SqU*oP7Zd6(4xa32_i8_B1DMc>Zy*Oq^d!SqcJN- zc5%tnn29H;E-4g&t%V_Sy*d`*p>_@LSV(QaNn-4nLoMD?@g=DMa>RV%Kn(+jb9Vfi z)FcN_irL0O9VbcdR-1EF^EHPTe;Zz*kvd2g*wyS>iqM4?#Y~X89a;``ZR%C!dvEb9 zmD?()EZyy5!*<IKAT}NWT@9z16)+vysca0RNfcZq8oaQK?o`&=XprOwi`A_9Tjx#7 z#!l&a#<KtNCx7hkKl{j;W9OTjnlp_ZvxqCFo7=iahL``zAN`N_z5jiCZ``aeJy|y{ z_R`0idoiUo(?tz`C|2m<aV{3t)sWQmDbaN0Ld2DJs8YC}DMQSWiaQbwv4w;!XFA{D zZI4L-mu8BnTY*!e1xE!JV*;$}mwd}KOYopXgp4G}V30rE5rVtHCEZ5E>Y63fnOeOH z+%yuROlS%UGDN3UhX4Q|07*naR2?cOk!iFcHS6ue)u8zLxAb9N9{3<g)^c`q5z0c6 z89up%j8BP*XCP8s+eU~APiFa5p0@Y>AV4`tIzQePP3H5(fKPnlkr$tQvCy@t*wn$8 zm#nQ{n4cIPm>=%_?jQWl5B!6>`8pkwXlVH1Ke&osaS7tepL%gqGU%-|iE<Q1j!^ln zPQ%j44FE$LNneT_S4M1tXhf(1qqC9QgoQji8CzA92nLDEhtL>G4^UOijkPdM3P4Yz zHfpp>vZ}9cYHKJ=c7@VqvI31U;pPdiaA)|YkJ;;?hf-bH25989oUNi}sp#wll*R#= z43%~Psw;TZY~ZGqumH%hf@|WTppxyX+o7hYOw_DJH>5Q)L9T=XF@baWx_KTHn7DfG z)TuL#%hs&hxNDX%6gPm)p>mOV#f2hCVi?(I#fmx5)Zn!XymI@FTW<(jnXBTk0+GG} z=uxxWAkv*Y0f7B{m@S?Ay_w08#+Gh|qq$;pI@j{j%Wn;jq*_~5sf?YmNN80N5zF#` zqx(6CPh4WlVyd7}g&%;JI$$Xt!xG#S#1=U}X>%2-k^pcrW}NIQ2uC_~ZHQZKddnAC zV^7&?d-kiZzfL7>D7L7qu?#miy)ZqoX~(8z9UXiYjuK?`S!~Hxt1-q+&9%5|p5_26 z7ev%P1T{pH%wJIm+pMtpnV5sZPsS-(#oe$}7$Rb;%vy04o_Rq@BGcT$Ae;hga6~FD zg6OBiQjIrsDi7L&CZ3?F*wXG98ml6RR(%MjRWXq?4iVsGZd`JgnK@S@uRmYAX65o# zUHyZ@?aSF3mt}W%uBnYF%Gon#*^XfkBdN`mQYM${?84mIb!*c3%<%Bl75ch5T$yf2 zDXO9>AZim(iw-Gwyj68+4p=U=sj|1?Y9VC>(^zk9<tWgQ<6C$%4j=|hC5SeKPJr!! zgyF2|jD95Ref%uM%EEk0*Sb4;*5AJG-6JCdr`g1Q_`s#pr~6MF?mzbS^SNyInl+oY z?%23xN6(72d=i9LG1zAl;E!$#voqX;r%@`jt=MwM${lw+@PWarS56*(`}o1PdM}=S z{u{47|M>GCYslSn^IqNza^JmoZ{M-8sU=-1rCBMc$E8{hRy#%m%}N1{g_;+XQvW5p z*g&9zkJK3eqwAF+np;bE>`{|VKn)R5_DyIVgCeIwEF0B4skJ7qeNK~8<x$2Qb-B{y zL}_F=#jEU^n;RP1c(r4FI>$>Flnqd**P-3Rg?LXhXXLS6UD;FOaj0u!SFb7^hLck& zL{cCWXyu`FlzM)01+BiLhjLun=;9}-4h3kT5}FpIsw0B4VLA%ADLmSGD`NV-<3f5` zA8ttD-+Ldp|KjD|S9xQ>3oo!eWc2Fb+{nPBiVM35a&<XgDVXCC0=|ccOL<qJS^{Y) zN6|m)a|orW`I*uB()h{^t3Ud&Ul|)4<K<DhRZdA)k)!mKd2WH_9>@d?f0l&8ZnkyS z9-*lbD)wRxUsK4+&NF96cx&t<Uw-tt7v7j1r)IHVVENh`HgDOrdkfDIw0Gcdo`hi4 zh36tz;j<e=^BH^fV7WBYfAPYxLvOQh<y!BRR0;n2%wb{0=FYAat;@Re`4+xqNl!H+ zt;s%ItIieGQ9}2?%wFwHGSyHHu$LbK7S_q~6fmh&Mpad7#MsKp_eV)*fMAWI;L3W- z7vm)!$dI&fSWs0`=?S>PV#DEOpgOe*nFRtBEiVV?qpdZHISa@Y1IKELu}un+h#FuO z_eyGD2p~zH3=6k9)gckVV%(7Kmql{p)Ww8A9NpX_#F#n`#6TeN5m7}tnZ7Ye%r?gN zK+M54S<EEHPqGp)ff}qZNX*9wW1^VNqCg;C1Q+0&kjJFo1TVomRxhUYL^v!y9EWoa ze@Cw20J)>Z$Z^0qJ5>!(Oky#HR~>WGrOsBlmQ08^28CR1Qrn~s$uQjFDEM)h07sHT z64Mf^Y<GMoPo5n!=Hp2*s~8>v-lf#aRiYtqq9>3j8*y7FrkDXpR10NI5{{y!vZhch zHC?w>#o8}0)S`!j-ZLaJ22?ldWEBK8KGr}2GA)7(DIqMio7Ru2Q3?yw;;tnAylqwY zChhf4kb?m_vg+-F_RMt(`Gw#4o!|J-2Y&Ec-}#>P4H;f4s}ED<dsc4jJ2CpJ|KVeg zeEt)3g#M_TMoVs!+GB)^Eoxdj8SGl>5}7TFEIkycU=|>A85)YMbMTO{cN&3RY!os_ zIJ%((k|>NU<d}-a)RGM%LQ4p~i6a`xLBc;5`AHFH6RQ@o%}_!b^db>U^?)K|SfsE# zEv;cEH|a(+haq!PrzcgEC~c*O4q^uI80R=ei6$VFEb$b7;m3F;(c(~&Xk}0rjjAXq z<wBwU?76{T|MlNZ6+4>Sdl<n`1{o@rW+z4mF1Giy{_2N+iD8d@*vm#|mJKe!1u1M= z+g19x(WZwo(=?W1Bw(cm3U(OW@eL`|0dX_Gh?Mfo;70@ui_D2$?GWe><Cskqr-WQE z)(UGV8B{REE7}Joa03DvqbN`8q%pB2I!07k;O3JJl}rs&s6*_rB*M5{W(6IS9+#PB zxMd0$5+YE@cl4G_AlPVGV<Br`&<m(>kfn@AISVFobCKv6Su&)gpy^=|jloI-SI(a~ zc3}4MNmeixa_tB(3sKZV#=>Qaok9YoxfirBHQZkwxwhk`4Qtl68$3Fh9w8zsv&YY( zb(`e@4W)66S_5oN?bx+(%cixbE(|tz&D8S{eukILx1PUn^2pIsciz5<ypdKgjI>Z7 zuuX{eR55p89FK6g#wu0NEY-D(NfQAj2U$xoB+X1PE*0E>8jG{+3u?!x#+Zk52S%9` z<e4sMdP(VJx<8+K?UmOTvc>vbgOyD7oKL1pQ#apy18?tInARp8NtSLVij&E*T$J`? zzB$^#hG{5-gd2)ctV(2m0BAPjxrH*g-=d@;R&!{>5(&ClpW;}+RpQ}Kir{M5jEV#m zN0TCet3pW0B6DeA@G7;iCkIf#v)p%UK{pydIVTe#gH@B!gg6sgX0xe$frsEy`G(X@ zH|_n}=N~W4Omi=u2DaGJI(zN>+ixGd@s_=HC41h%r*+gF+H+htU+(DW=;`hl9vUdm zm-IM?43KS-A&GLlNw%iJ)grF@?L6JUBuc9WYRiT1o5OXBK$X*UmCL-Q3L^UrEZ50$ z)j}B~eMlvl06;zGkmk{W44*D&?z!pK6}Q}a$N2EIbEl7<Ja+KhnbZAe&-9%<^+Nq) z#T6?yZ{5CQ`|g!%R`Dvla=Ct<$1SvANh?r4H=}lm2g!@=t8Tw%^&NMA$MA6fg%d}Q z9ov8Y-03%7JoLtMum5iLziiyL;lBItdicTnZ@6i1R|j|gGwiJ>=>>zb9e-f0rmdR0 zX~Ipw?bF%p;({TZY&^gha0+A7(}>0=a6k#pcF<76(FzdQ<bhUw!Qu9`UcJApt9x{G ze0p+pdg$8p=y)A(X>MpM7Me4<+0Mp&^Q+oqm3qE7!Meya_twY9rpAYO=^Y;hX=y4B zUz?bknqh@kci^SI3peNLWGbV!T(7fAJ{B_5=EA={nk7icAj4GeAzWc&tp;f_2v?9` zB7mq`iym5)2Zg8jG!*YF=;{2f@A<Cp{qFA`8y&uU;nK+yC(fQYcmC4Ffq}unk>QE) z$@1*XtTchboGX>}sDOrm+?j7`*t&c3d*1ud_k8dBn;VL+zWkP+_prqv8WUx4dZE3w z35B)b@8!*`3pH9yy@bhP9lS?^AzdcL2Qto`8-4V#r#}D1$6k2x_1V!mwm8)_cW%6K z>$V*?ZQQc6rLCR)DSW1KijH5o%?w=c7hp!-*pQtsP51R)Idb&Sv4aOjd5&Oqc0q&0 zhGw2=>0H&aY<0HK!5e8y6y`E7^`tAnCuoDEsPDR9sueWWLrCD~d1U$n!08-11$6RA zKH}mXtujIjP;(4a>eF-e86K3R4nP5mh{~@xN8S}PxkQXzLI@i`sqtYrj#v$gV)nTR zF`>I9Q&1^Bv}ojvF*`uHx=zV+lxR3r5s+019XV!VcmWnmTRH$1hZyK$=fx*uRh3x5 zw=_tiYeenne)cq{anuN_LKvrd(qa-=#W)^FYGkQaauQ}NLX)qmR5cb}=G}=d*R6^8 zN7sbXQ81uK(fI1{Me^hH>cC<yF}=&Sf{Ie17&>2g#DQvlRd8`Ib_DDiyi_4EXrPH4 z6cI)Ka-7Jw#Ns1Li2>hE;5x32Efp`ru}T@RB{9NqP24mW9J7p-Oyb1hm?TDXa*rl~ zgq>$hk`&?LB)<5>G|qGhK)^Cn;BWS*@AQMdiGbG8X-c&b*{ZqeVP#mYwe@i{Dxy$# z$6;ba3kFXgzll}kKG##vt_jx<M2pnogfybms(@HpD;Z%y<o%ccCMhC<fO4b0L@1;Q zmHmo$@7wt!|NI9(^=E%GGSt@AwVFu>EpxWep6^-v)(dZZ>MuU~&wk?jCwUfKH+^8B zCfhbnM5>`#9S=E5Tg-Hku8o}yfFGp1Oc0jJuaUbdAxTBvF#uQ*SAy&oE)?3FOW2Vt z$Zd7C)$)Qt&2%EBhZ`Qr34Dyq`51Tcv!4?gHVim|F2XgTHqa5Au392(eT3eDkmjTs zQPA^~ZX+ypu^PTX8dOu*Foh$04Xg-|D;l!G(+-I<D!bO4(8+BLo<=5v6`Qh(RnS=? zBOVOh{N{ta0WE9a`hN0%_|=b(3{Ew#+?H$T;4{#=+f|ww9qdm{kNom)eSG!mwkd8; zsW0Sb<=x#Rb)pP#jX{xQl_sIsAu~11kQ$!pq^a;>snoZy7Zv%;Ar-r=BH8m8y3;AH zx<x04*=R$-NRp4|rC}J!!Nu@`Lm@JB^ONLgn5Q~my*hCXhrI-u8J1gCZon~BC6)k_ zJdJrZz|_A~fTtfe#N^Rrv(=y!3CRL2%qa|!3^zEkSv;~ahK<PeDk>0EZX&yg*`!f) zK#^&8($GLdRmM!*&#5cbElgd#eDchRL({#Nc;q$RwRXei-JLy~*!n8Q&;}LF^_Fqw z52+?5vc5ce^-^kf<o<o%$vwJo$k9;{QfCrDjH{{)2l*NBREC9$DaCwh-#xb<`@|!q z>FK(L0(LbtwoUeDo_glRJ8#=0d*EoLHK^zO6GA0DWT0dO1!@pXyeq+39K9ThAO<T? zdn630O^Rq^cmh{>E)^W)$|RB@0X8$u;JH-ht{O47Go8NLf9>dzlM98`RJMUpc#3bQ zPfzen$1OMS<r{S>Ng@?5E|A$SAC*uH5>W4?4-N-Gn`<IeCA)u=9&r*#DRxL-{@vdy z(Uc5}D62@JK2WfQg%(y0IXkvMGFXZjZ*lUPM6;uoNa>DavXp2opz4l{vf?d}=3x=4 zs)h73yA==zJ2Zn-RDX7r2g*E$&F3*RwamkbIqh9{-1N22ez`O?nQv~KpRa3ZXdX`I zUVH8JAN{c()?`BDRC85QCT$X2PBj$r8`iIX;f1%#d=gM9qCyzXoBk%=ZPe@yQVd{o zH;;nPHs;e*s99z|r~@_?UG#84JGn<&bqu027ML^PPkm=Pp?xIigJNbF=vrLV0zKWC zCWpL-A6?;Hwk9{<)Vb&8d-vS3Z*pp)_tJ$U2M(S-b$p`l;{FS#_dofS#;(o{o3?D( zwrAD)O~r=Rxm1qtzvz~`T#m%@7*BhrvbpBfJ8xgJ`;G_3$44$-IDO*C!3$@PpFV!! z^uho67k~1}?$yip-F@qO-~HficipyTZ4;trcp-)s9MF_Izsi5!J4mKeKD1#1e^5?9 z@RCJ9{Z6X6DK|1%n&4gbd{zMcEhGI5CmH2SG%CUPd_G;sbhfn}o0_c4=G(fO=F7__ z#z!Y7Cd(5O>;;%i_oZ@q)(H6MqrL^m+9wM%dXQn3FEeZJ1md%qLOVPfOOqq4*EAGa zD>13&ddmbWY04I541c8P0vL!^2Gok{<r2)f*^vRc%rq=)U?m7TCv}*l1`eoX11LR* z574`Pn929bZuR&jR&Ev+8X6jR?Ap0|?;bWqA{i4faAag;Y-DVh_mPZ^V=ix4WaX=# z&p8zHEv>EHJzac{v%9OE5!UqFTzRUL$>d;+=TtTbmCG&7tRZMWjW)p`)=HXeRB@$; zQ1LgI)-a%^c3-?W{p1tReeUyLdHUH`r^ZVQbq)2cYu4Smb^Fd;o3?CkY-z67=Qiir z2QgRHmn!k0EJ`o%RYrym1AP~d9X@#U@Y{Wtdec+0JTR6jb~ml+Ztq;)(%O|PG-{cN z+M(B6SluHxRCr)y?S`CZy@D!$G$m>+n_Nx4SmuENi3EcqER_}3zEy8T4m>PD&*ylt zLwRapYIJz;JRgcBJ26$X5Xle5z)PtGlP6D<NEMF7NJ=n9jwn(G5nw$8vxovCIS{K% z$<!E8B`s*-Oduk4DQRM5hf@gMkeyB`N(gEyXvhHosz6o09EGDRi6+M{5wzy&9FnXm z2od+_T1io;hQ_7Uu#1(Ck(0dQaGdHAmV(Qnpw%D{jcA=HkVe4BL6oH^dm>Q8Yw2su zU~zJlpqk{xWUh8h1A-q3xDtVTlEWh`U6YWSuqV4vOX5_07$8}!V~m(8=@8e!S;Uyt z9KYq53y9Dav)|$>7E&Ti*T<<j`{BxXGzP{=Nk}rBq#{g`pJPG-Nuc8cian-Y->a+B zIJSq4TNJFlnjp0bW*sZKY6Ymdn6Kq)6rq_gbs~qD9Mj$#B5O7R+aNY-NkY_R*nFtc zfJtMwzyiigT*O&zIP$G$@V<h^%FPfj(vYCe&#>*JsfD@>Yv(jFv_*}&^wd<{FaOFf zJody>eV5KQG_`UYLOZxJ>CVnomxlU(`?vq|cf9xAD^|6!cq_&{y++RjLvI){)fh5> za7n}kvY7e7H4rSg$1hkTB=M2|=tRuDN{kE<f*&%+CCV&#@sn}%I)-EtlU{bPlrVNm z7k^P2M}r&C26z&$1hYoSu9P@B$c(^ZNjIp*1nRvkiZ%o})M3bc>%6T450gHz4~asM z2u=(}7|kKXl`?kDMrS`<WpkE<(N#tX(n;DWI|vw0F>{rJmMS4KO&u9yB7O~xxxf8i zU;XkI9?Q3_;oZV1UbRH7F3gXQU*q}7d*8k9M}FiVFyw;`G!n+u1xW&IBe_AKE)+x! z)JU?!%BA(4%F6(R6iu1lNE^`@GmVukDuJG$t9pI0a&LpfU?JSx5f~EjwM#gQiDi#m z;kjvuR&u=9gJ8PYS^NOA1sWJ$;xLXu2Ths`!{ef3ED01k%X$)393p3HfF_C{!mJjN zw3dM)i~Iv2aR9=?D?$*d7ZO)7M2w%PRe3d~=c#G#%Fgp0$}1NyoH}uMfv-{4r5jhV zG_a$6`Np}0!u&!`3kX_$G6$Gla3CV4$kLr{lLFqt+|~XIe01+U-*LYX{BXt19cEGl z=jz(Q%(yEKXY-xgk2J~*H^Kh=6Ms83Im!pUNiQ@s@oJN&o_g-*e)dQ5R^Y|QRSFV~ zFJW=Umz-Ti1r0emC!<cQvxE!Heg>!n75x?u$#oqT5yTQ4M;T`z>1T%-PQ_<ZXdAcj zglb+Un>l;-?DXhZ)AChprT|i2V2AZsp|x@Awk^6h4kM&GANf-CS(z5fzQwG#$jzpm z<e9^ytmS|p&cfh|SpabmiMOk5&;W4+VXEN?1iD~}n0mFx2Cb=CSr?iI)b1LN;k)kQ zLDbEb{)%`uvSC>)l`aA+GfEYTSaJ$~&I1f{fFavVof&p9UqDfw#=r4~JqwMwv9W8# z=4H$pbL`6~6b>FdGBiBd*iz(SaadxwwKqIHjjr6(EbrL4<AukcpPd;i<mxAFT5d8; z3#6GycP6{4t-(kSUOE34|NTF0W_Qiz-QCMq7jlK!c^-JE<0h+CNFXu`IAcO^r(Mi? zRdbnY4WX(zZ5oUIhQQoZj>d33YbG7kTZm1Ht=%-gdOJX-am|LE>o@HxPmlHT7Q(}C zojiGHsJHh(@8tt8yqIq5T)%nKw(Yyutliku+RYk4iCHCLxZ$kNWN0OY8_1dBvW+{I zZP|HiX>x3!@6s_oe{k|}|K-!4{o6-B`{^$?b~fL2*X{q{{SWWE=Z<x2+St3!ij~@a zwtnyidOjwoS(^GNWs`~lz6_Z~Ylv?<I~vOa6H~mJPG5qgL$ik3y$O-6(^yT{Y!H?1 zy!)Q#AA4eKWT?4q886}E8-Xp&?YszZW=h`!<b8^BC3{h=1R@oIFyU3FY|t<8j7d%_ z2)VhrX}*)v*wVCe^>S^4S6<_3ejLo<2|=d_AypkMeDSYkDj~~F3i8AGq$tN#1_BFR zjNCIzVSzBsQk3K=qA^74tpb@b(hGNI>*lNn<z7L3ePeS&a~rRMmNX7$sk5m8sg^9} z=UGZnPou^pkEVk2F-3emUutT|bS!J4WJ6`;2Zu|fv{8o%wrXy^pr;QmUL1Y$nHT^5 z^Iv}c`PZh0r&INf*|zS@H*ej#^TzcXw>2+YMz!WGR8zdMhQ|a{mT_~L*Qw%OmQ98R zhxZ>ndgQ=?{`2Qj6Jso5)i<=XtysRSdrfmoPdeW;SI)B%#TPbMYLO8rpp$0($}{Bw za9!mB6&_W|*q?5=D=%_SFesS<s?|ZN1s_7>+mIS*v6q1krEg?lu)lX^s6Rb3#A`jg zwG4b9x5EVE8ZnJvA&H9`8>v%)L?J+y6vc%ch51T{tV>V|6##Y$Obm&rDGH|wye#67 zh*|YDiCu-Khy-wo;3jmjnqnxFAX3qqh=X(vtUx7f>=k<F0~%)?3816}K2egQQL30F z@f|fzO(rG7u7fj@Pj!&)hvF5Oh2pdbC&sL(SC!<#sz5}%Jk&xxzBGlU1!W>j9X|#V z_3)A$Vl)CZ2r*R*C&0fmj8mP^fu3q8k&B2#^x+z_FuW+yiT;nyssIVG@RE|zFJ>Lf zcM}3iMa{q>PK^m2)5#qOPRuO{PhvVw%{du`kSIT$?eHS!r9lmEA}K;iTm!vd@PG~{ zqVZz=pZf?f(BYh{gLir%>(Ot}{g5;cXW~r?sp<o)S5n8LQM*m6KvS1t^8wXgpLnS8 zQB$kFO<M4}X0(B!_is@d4|)PORcTXQ0Sy6738gqa7d6AufS#$jCHLFE{p&yWLq9&) zcVYSZR^4@Go{=qfui4sv{LSC{-9PxFKls&2CV?6qXi-F~Bpl+ZjzIR=W;_oBzgW*F z2MOwy`W1VvXY-a-AFH<Ukw5$(-PJ>2oq7r*6##F?eCXfJdH}4}%MVHtikl}QqOf({ zpd?Yc>M*zm%`xyIrrfmK12zPLDe5p**ZYBqXbGEK5f2tt;N|njFpE___<cEH!_OyR zbn~zV1UXCooHf!yh{R!oDW!oT^o}RK&J%pffW0zH+Q|XjwV*tJEx3pkmUi-hW)<S9 z@eV&oe9R-pS_&eU*@Ifn<#R&=lfU_!|0$JiZs}N6C^qvrDj7RF#k&c68`^Up|IJ@x zn5kzX5o6^^Zjm75$bp2pFk{!aRw8AMsbB@#M9Um|{#_Pwm>aQ+|KLy1q_y;9h#w9y zg1?HELu9a_nJ1lfpz<V)164>IDlH1AilDQxP(B$8PckgsX;C^hm}!zoU1W7mtW0GY zDEgp@MqZ>*1e9(<5QIG4yD$YkFZ5(3yu`-H#lrA}1!_=KK$Ri!5VlE`V<|-_f!oy@ z$O@CIf(%4kSaW<5yENK&=J@H;$L5BHnROS}ZQHPAHy?WEeT#Do^}I;S?rw33br2&C zY0hC0$}*XOsF~^U;em_GS9RQa%P!1M97YaB!Vpp80$2%X2|_TdA~ZCnVBB@vjmx@P zcqd#dit(!KT(Q2``0AU7`uitVuWAHWj&%vTDlR_ZKrew@L?xJ1CdLgUwQ<)jV(8pB zgBEd#t_hrA(;`|!i6umV;NK|feB>Kjv~_0^Ww#Dr{-RLk3Qbf+`G={))X3i5o4Y$Z zCTG~8Ev4+Htoa~3m1O0}C4=GaQTbCTMMG;tLalev#>RDborDY`f2ibARLTv-Ff6D9 zV-Lu~O7mRtilOpoDS%B66&`P_RbzOa4YLzE5k;7q7?H|}k|@ub0n;X`?=Y#V37U3t zPzwx8RY_{NYHB<bLhGO`lR&<<SIF}`23vW`%U7+~v~m5(Q&-ceneu!l$LrvV%@czc zj~zXB$DKE^Cj(~afs5?EBMWMo#>Ujmx8D5cg}S~=r`dPIGJ_tir}>a;q=Uqnd<hNa zYdLfJ?BRpwPaOQl=UP^*+`8??jXU=6m7ik1l@|rFOu#k(p~H#o-`>*8S8|B=74A4= z39i|zmR^%8O=azZBdiUCk@icWj&!F*DM?Xq>e7XtbvsvX+O=<Xa_CzB(PM{C9y~a3 z@$8vbpF8vVGj$Ek>o#uPv~AD2joVr}x_Qn(-_z5c6U1hiNlx=FMtEkLy4G!9y?JMO zes<{El`|*!9Nqp)=TATJwU?g!%2SPPO?TaK%X{Aa;J*9s+_YsGZYh<Jn_|a5T3H?{ z^T|n^qubZkGf@!OzTVy0I6OQvIzB_+$g>YxZI%a>e_9a1B6BPz&6eixd+>oze(IC` zmoDdc>p){$sy@qdWv<wgFSa$~L^f?`F^AHk5=a|OL1Ph@vv2EOm@m!GOw3G;mPY!% z|DXJ$&aU>UsVO}krxwi*6;UKgU7h`(h{t&-!+ffT)o{FNhyQub!pfov#aW?15^^58 zs2-q`>X4c|suohYX)jzLHW3B@re&<ZanV&NGYQwns(4Zc9(rCz(yWoTMjs+o7L--r zZM|fG&Ex<8AOJ~3K~!By<1(pVW(6cQpU<UO9pL`Cx@Nt^0&#>W94a$tmB})IOkHAK z;E87+`NCJ9d;Yb_vFUWGG2Pm+?xx+lZn$OrrmcKOQ@iuoFEGpMkqRUpW^V?0md)v_ z2xCJ7r%&*4jiYBzpDT|{r82x<psi)Y){d^#ZLM8(IrfQU7#@`9i_AlkEQ7sKa&M^u z$mt|lQzb7WN5x3P6OF4R7p-Nh(<n0>NeQH@s9}0m51UMv=f=i{`Ud*Wj}8u`_^wi2 zCS7Q6U$b#!;Ba}CHkFYMD(EE1A!vFz)POok-6%Z<dLWS$f`Y3yx?=HX4nrFlq?q|4 zfUka0Ar!G`q<|eD!Opb`psGtXb|R@NAw;TR#@M9+uV|k@ssJ6CbCjy9S5bq+m~p^3 zCN#H%DqJD}oo7tu!1x@e8e&3Ai;G=M>8Oqut7!;v8HtfaSaXPvfs+g!X9;X2)PfU) zwMoV&k?wqTc3_+oM;#;LV@1D0R7Dk&M92ZJCYqqG)f^5S0Y4(Ei8^_dXt7vnPy05{ zs<&0_L@zt5fFbK*-my%uTy2tKiX<csJ8g{Pgz-7%oD9^^BFVLinIw@z*oL!ilanuv z9H4%oF;lArbE`^fyA)9m$OJ_J&a|&UX;3sn6k^1fbdoh-Fml1cF{q8Ug~_&Wx>Y&^ z5z+Q5EUv_LmMDZ<k0KE;&;*A-$P3gHFCnR?G!YUAKx*kn1g@Ga5@eBBO||Bdice3^ zKm70=ANofh{JX#Y!o<j6V>=(bWn<wyACW37U-Nf=^Vtu6|93y|;Egk-I^LM0@dAoj zAMRd&v-ONfp(B^87~)8v4fQo}k{z-xSOMG|U{hCgHa{9ZHmbK_FexfCQKo7P1;ob< z-q#pUbe9!oygS8ZVWEa8GEROpjijso0I9FC?2xO}k;$c^6pnP&S&uJhyu&yEFKTI= zllcrRWrf)#k6Sm*ttD}Q2XGE?(HKi(f8$Bt%z()p=OU$`lxBvmQ6Tq@m`vGwg$!Tx zrjK#OUy>MfQ%DA&j(OU2=KFihedR$-edR;^Dj5Vdq~O~~jSZ=fe&oMhzC766y_vTU zl(>OT!JI9PkMxzNuKl}T`gdD5c8^a^^B^d?n+O?#mS`gL6;^`EmI2+1<~|U}J97<1 zm6C;i{G*^L0jUgjqb(vH#!z5$mvL1EqFymF4A_x0Ie?O&iH2oY;3$@WOr<~}EjffI z1xTbIkb_z-Fbzy?J!xwd5h(6eE=yDCtT~DfRc9E$pA@0M#uA*7vfdnH@-0PN6i^DR z6jPxvYO|f7q)QjsY%mjL%GnqkC>h64khL>Z;sa?cJ@6Fn=(*EpE}T1&8tzLK@*V3p zt=X`>rE@i}a_5zV>_nw7I8QEWnB*6k5D8JlCCUt@4cYRwzDud8Yxmv#Kx>N|?8e#I z$z_UL<Vi4D`cQ&Nz}W8P1wP6C<*&WTt-)-8y~-JGpAGjOef8BhR<F3%5WP~m_Yw>% z>?<L$HJSw8lEErPt1)731Pl!q=!oIf=!;{{dr1jaU__z)0<<mMNaYQ%^arXI2sm>5 zL^@N<7n^)WFg-I>o|(Df#=W$o`eYhgrKJ>@x=_++c$I^eSqz;uNumU)83W{C<E)&O z1)>zGDXp^OA*FZ-1VTa<+khtg5V0h}pgBg2FB;mv0HykYVU<vnQpF6Uwp(2#h5CsM zourgLS)ZW<mzZvfmD0pZhgCL1lrc&&X81wvyd!EQS{n$Mk!Y1EJJ0h0+|bU~-@Wgi zQwKlAlNxo!4ytZrbL&+9#n)ed{q{R=f{o@-Wo8$Ar8hG&GVvDM^xuB#wO3z-*|}3k zSR`fj6b;llXh?5vM7XJha!A)l<Wi{}+jif0=f2n9eDn0F6QdU|y>|ZcYtKAYSiW}i zwq2XI?Owiob+OQ3D-pVjt)`fl0;o+^kb_O}dVLR))OafgC4|htSo~%Ev>f1~Em^*n zR&{LnmSXfks@Qe5rHi=`kLs_zYu|>u?|j$rwcax)51u^o)&<_r`1WgO-g-0D*wnFl z!`2<VYK{*juF7TD@4#fx45IJhrUFy+86Hi_b#!f5v2yc0_q}I)bl~i%BS#Ltb?)@Z z#~*v`@vlEy*O1@4ciVfv<NkL){Lsb?E9>erygZK=P13Hj?4kY(Ym_;f>`_p0R<<tF z*31hc@}m=_v5D#VIqfFUh64E$5}B)_%I)Ctd}B-NZ~o42|J$GWnW4T*#bxvCSmc2M zy&h5RD;;5dwk}V12)6b0tT<V7Pp_s@FgsV8rK?I$4Bz$Oz90X|e>yX*Z4z=SKEsdl zqz!81(@?BPl60c#SFCVIbs+=N$umarzynGhVjDo7V7P)?RGnQolxNB~Spgf<L=5<| zFlY#O1(o$G5fV)aRIBgp0$>yr65|9d_S(7#O3W8>>5it>#=PF9!Loqqi)U2ba(pQz z&APzQQ%^qkr7wNunP*>~8lGZTO^ULx>(<?SZ{M(GXKPm%?GZ&`3U9$!uUe$o&Suz| zk>!Pgb;H9WNA{mQbm-vaGiOrc+AqMXKKQm#NB64M))nbut3Fc5J+C<mGy3`R7RFK3 zmBlz$%YPcBY0M!P$ZTt{6jRpAnev-uip3)cFd^Ut@`wjYn2OhBXiv!OsgY|}2d-Wm zAGng58s*8XR6|4S%2iz}*0#2<N-s>me&vvsIapER5N}R?z(?*4vG}qG;7B?rl8lYV zmHS>8?7fhIc{OVj9Enr@TXHoHP%(@YObCncx&9v<35Eo#WD|+a^MnMlP?c=jg`izr z-w=eO)ku$4$SqXEvyvLISPXHJNOUA5f#(QOLUc_axV~0}qSW~6Xt9hWRgCkF0g*1P zK_H7*T6s2Dj2<OP!5Em3Rw-w3Y8-Id<T*iD6?Enfa&kXAZHyXojv-42YRHyG`nI56 zCxQn|jVc*6iY3i)F%EH><T+NtfkbOq0g00c#5ojzaazo1seofG=3I?ildhSMS~*U1 zD|YDaP=-N(9>51o`$n>QQftA58I;wHqcSg;vBuF_L%npKMpd1n^;kS`rAa%z7DT|+ z>e(Iy?JJ=9<^4li<yP_1v{h$K9MrDSyh3Q5js&8diLq`7i)<7ky-}M5Y}VSfSSuo* z=Gp9*htN|qGxNXri$DMMC!QG{y3*L(R+nj-Pv=>+=;~Q_X>8!*zxjK2-u+2b$*LEa zqifR8KoyB8v~_cG3ksr@x(Wm<tgZxy(5ErpqW6OY;Y@a{CsfpCq3UWi>@eTZJKD@m zT@F<ER{WX#(mjf^!R2mQFMlygVN_;I4oU^z&dN^XuKvSE0lEPqA<|VR%QZ#$C)@Ba z*U-&b_7JAiVzfyXqJ>-wilCCOZdPM=y^%p)<vxw_h5KE4(~|ahn<n@HFEQrRx2m)< z0Uz#_$aWs!<Bd!Pmk_?0%ob0R=(aO9lyoVlR6Q|?bS+t!Pn0S?I95iGC6Wb%@vr3q zXT)j82gwV3bLq8LPyhE%d^+3Q!?%d^i9cAU=VzuzCkHOwcE|3Y`0;-@Il+tND4x2F z1C5OK(qnEyH3ZneMot4q?vw<g1i00KM5OV4Ll$VPK!@@uT=To=;x`c}Ojf|s&I%bf zO|isJUM7*C_#>Q8pX-Jl^+$?;YndU&QWuESF`gi)i0dFpPP0-(@q(3c)YzK^64h86 zMuRLF#sNMew9KLwP~fG7rfPObUyVg2OuHgLHy;Nxf-<CoAOmbNqM9nMNYN~UI^a6X zZ}9<FEJI6f#?_UxnYr}r#Msr|OXrUdT;gQ`rBt!GW9yA;H*Rlg?&JaNnK{XoA0*6V zS;HWH@R4lbN|I{Q7xNv!hSIsAzVm!>?|tuomzD~}Mu{A#W<D~^024e8N_8Uq8(XDu z7!?YY%Bgp~Yu}f@{2b%?Y@q?P=BBpMh0K#rzW6==;9fDeX0pQ0*f@_MBFWYhzWG_C z??4wNxdd1JI!r<3aFiH535j?)nxg>YJ>kVdt~9}i3G(`$*g|T2ynO7~sk+9-0y_vY zS;qC$H;Updx7<86t2)6!8KD>>PM*;wdimBG3Ic+niU0(u7uJM8=cK@`DIziO5*HCz z6y8xtlHvo5ssm(|)QCuWLFb%k=WMIF5}6^AVmrv7K(ZZ_Y&8X>+C)#2Wwk7DWD=qo zjAoaHENaQ-o-ZMBaxQ9WgrHWDE4*-o)>&vP5ILXA=X2Q{4Edj(oxf+_ouB;k|2Z)} z-rCs7UVx_NWmj{>x88oc#N*WSCFmN94HwQ|`pZxJ)zeQsKXLUMO_ki!&`1L^Ut$Jj zB~V7H5jIua|E#1+Z|xCGXJ*QoHCylK+<52g>{Rc?^T&=IJbmKm^p*36E}l5_^cR~} ztlY9`$L8&OmapE}($qG?M+DiKFE-+98O1bAUgeMe!vtB6gpHs@YYOHExlx9Cn<9<y zjGA&3HL!XyN(N<PW@fgYJHD-J_TI5}@9htdj|`nTbL_<N!xzq;7(8?Ir4##K%GS57 zSi5=aj;-5vcdy!5Xlh}Zfc@m~;RS$b!ph?euT`i|H8gkLc*p&>-1WfN=;&EqOuzrl zQzwtU{l@9HUp@R=zw;-1w(l4m7|-VG&tDkYxw9RQ%*>`sx}U91ilXX69z2RQxoo<< zHPhVK#8){cCT6CQXS)g1pi*MVWyIH|Cue8YZrb=~fB6^x^*{gTryqS{YUpZxv8hnt zb%#y$*}N@Gr%MzD8xc^b=t{^@p2V4*o|>7SSeTv4wKn|dzy9$b`=|ee*CptwFBV}` zD$LU%BjrpEvO(q8esVd(3N=vbJb<!qE=Kb@B3$_z>C`pj1t>abu{b;#JaSn`;8WB| zQ=yea4kwmER(B=QdaF<fC05ihi!{iD@gO4zUK+_btvub3Z)s@A*;_EmO^x-%f|_%7 z6~K})3eN>1^Ge_NQ%^tlh0lNO>1SRZ9~{vK1&VFm+i%@|!);r(?P_oDq6s3~wThxG zHPTiy`E-geA)wUQ;J~5d$BrC2dj9-{g|W$n`h1#KMXp}Atb289TX#NJq~7xxgSlC> zrO&mZtZ|)G=aAFo4|Be)ji{_@aH786+!b<0{+2&Mc2e@yLaJ(})PnlZ4EJN|SOpp# zy>@Bn>ZKvA3rwgY6dN;L>$;b(YhBh=$TwpVkKpi`ZVH{LVVNLhg8vmt1}(niNqMjY zsw-JVQQ1M@xoid)o+BG4D>RZ^%hZ&!A_LRfL}y?q39W0fT$=<m(jWpwSJ_huCpa!) zsF*5aTm=`g=xm7rV=>}l$RY-{04I3|!s{i~!mA98rI<ZIM$$GpOnDF^)&>lja&8z& zN+H(90fl;SJ%-nVyI4<sXB@|@oD(|4gzvy7;3TLLW_axt3T8xQ$*fe9COFk9s_H?7 zDozet0^}@}d_CQQV$Q+N-wGsw9)gRhYH&gh)j*eu#&*Pkn0bK236Lusr;D9cBA}QI zoN0oZxA}Bqp{ZEp0k%ACw@uX4XfiSYU+MI6=6P|5*!wk#iJ{n%B`j*&u19^v1!64{ z*vLx6lCOcGv2h*L%Q4u{Oit4wO$X_?ZCJsbY?~meQP-537r%OEZoBk&`4DW-Q+LEA zhbd;JP`@xUn_9W5<s%>d@X!9tho{Fzo0m26ejWH08=AXUZQlRt+kf>JpZU3;{UGlh zlNv}|sE0YqYq3K*s^?KSOkNcZTJb7fFM$qGKWU5D+|sr_5>2EhEKFPL^34|M4`$#a z|EQzW1d)3)b{3V}$o$zjsNdIqL20EayJpL9Mo*)yaPx_#CiI%&v0p+n{NQ5Y6E-vD zXHECr&n(ZlE$B)>hI1HujXe;;VG=b5B!!nP;cZrYC^o1pTu9mcX}PRS#gl+Fisrxy zA2oocuPP~nG#Zfz^`@Lf2#$2NIWXSPUC4k@*2|@gw+1>I0INW9PoX}=*Q0;&7k@2P z&UbgOX>4ldSyO<e>B*~o=h{14{`imnn8z0jg&g>Zp%fwA+`yR*ABQl)5G$2{aF{;Q zNe2-}umXtt&4HFC^DQ5Rr(CvigwbKI#tG&DS!QK`QVN`$#Wg@|?}djcOHAigqRa>8 zH+w^-)e*4|+UP3vth~w(QUt&2IRIrY<h;hIv9XoGiS}?XUXQ5V9J5A)J%-dgSA*GF z9?(jG)qg21pg4twRQV%I6eWZhl@d5;i4Ud_IHnDZfCwg+>1U;dQpQ>#&#*7lW#?w5 zhA*5xeevwc^57L^eslZU&AXSc*_3bTER}OJEFt0=M2WH09feFQ5-?i@()F>TgVO~G z_}EaM9v|pCTWl%Zx9<*tjg|SpERZ1{OPnJ}1vi2S$ug4BANyb)y8rHUc7X@Q8=5+) zS=oFsmCb+S=@%wuQVm6;3520g*9uFr4f5sM3Yt3@fPAO3`P)^9h@&JUj80La5g4_j zMd`Z6IL5gWjgw-81QkA^ZC&2kFg7;G-f87*Iz2u$(|2t!o5|12jx#FfRiM+;W4Xq{ z#?2cwr^aJ4OGQN|aZ@>zHReosf&hf}36Mz0TQZNSg4It^KxTDT<i>)NN+5i|Cu~4P z&0GS>LwJVF1ug85KCy%4QzB9n(X8Du*-*K6-L)VnF*cExp5mcSz$#S7vMwTXvlCgS zrS%z>M6CKrqFF{jEsN`AltEjVtHNm?%`6{RYbxgRg*?+6*z%nE_RX6+S9T5#_BVBO z*OhZ=zBQ1oJ9qL7@4Bby=L7Oz`SRC3`fI<Q8ZXuHe)iRCa=8L65RX`oj*m<XUbW6D zG8*TYsjdT7q7JiLqNQ^E#9U@<miO)#dN#JM-MY6tJ9bT93^~Yze5C*Co0p$^^MzOI zySle*-oAC`t~IOIHa9h~zn_m;(0;-RSFo}y3Al)mGQc_nc`_&<7&2{<ML=7owuKmx zxNj+0JY1wMPKwpD5W^}uk2%1;zIoO5n|k)#yl;AZu#Xq#A3t>F^s(Vf7hgMf_O+*; z%5^W_ym{M>oqN}=Ti@K$4sYh#Ft?q4yu`6?mhaTlyk#4A+;HoSH{UujF-C)PfGr6p zjvd&4mXA0f>b)QMfje*C`>u!Xxp&_^n>O{ZRKt_<GbOFypgaw!z5}a?C+`rfZ)?sq zH|9VXpPHMRnw_4VA=9KMwv-uDq-Uq6+dDcw`tgsQ{Kx;~^I!P<D=)p$ccp)l-Q#Q> zuj6rZGMx`5s&7-as)1JrR$t6+-niyn@4D}O-}(OKE4x^Lu$K(FJ5>^uaVmH!rW`6> zQcM+zkd`Mjvch{DQW-JQ*#DhG<bqj(g^Y=Kg%T>>aMDd0!5mpUlpspWa?`|61$2c1 zj*=9VnqowZ3Zn-`arHbK=F?@q8qn6VY*|bFNMDicSHaIxo#cjMfh~UvmwKn4d+zzq zf9@;ac<R~l!BJlq=-G0|jy*ST*t(~!Yt?)@H#L_Uon`BpN)V-lrG;#LDyJGWKRh(J z|M>AEhmT%4cb@$MyxlgHYiM4%qO)gpTgS?}LQ9EHSuJGvq$sy0$U6B?m71E1O)A4` zZqQivn$29zBw*@Ft<cIN0Rd8yWw%126AK1j?6Kh;j*NJ?OTm|4hX)4+`Y(?2(%k8h z6q|*zx%{%8?w-}HovSkq%Xpk+ZXq+p(+zao>WMQdSKeuxPsK9`m1`|;1bgSBV!%7% z#R~)~iz?6Xx2&b;8KLtLNZqVJ4zbiwP7G1-NKFHH#IYS?sq~Oixp+B>#6;I6m{mxY z4pm8B5~WJrB{BZ@fd4yut7(?fJ%R}{3QIpZ%;VKOV%;s#3MZi?rBgfJb!cNI3M6nU z1rZ<zY!j&lN}L=!#!RFv5&ULok(?@#u~}Abqgdn^YrO)H_Ag3~geT*HdlF=(fm;oW zh@-2k?P$&<QZ&N&X4ja?5tk5WEzTnKBfbfFF{_A)HB%8{g+F-7L)cYZ6j80G{icgy zJ)5`b&`iAe(rfgQlar&ilFdYo4pY-0FzJXi)v*zk)|kl;Iz0LV`7hF6F&(6;LnNEX z6{aGzGHUyHk1Jz9I9ewnLN&9d8k}v1fjTP0A)hXUd-*mWq%&cbfvOrs()MboMfaj1 zkG@=I!w$xACK{pe<vvZ8&1&ho&h8Z(wrslCdxbkTb@?Lw3-1qZYHXY6T>B^g?<cdF zrp5+VM06tpdS-AMu`!K9LG`)-G%BRY)RfiTg*^0O4kdlmvA{D-Y@tIZ^Ab4Fk?PY( zKZ8#@kI%r7G>pI*#s|A>d<9RNC80rpOS=3nUU=0<XR=-Qv^AlF4{{C8;L~&ye?5|5 zIiMz9E|*KiUJ;i|j>}yPvRsyRLg)xg1j-0I317BaPbsbW7Yl&K%p5Nq4Vi%0uvf+j zX1T0eG8)Bblr3V{0Xn@F(|O2VS*4$Rgl1;7mk6<uP>rv->qtQ&<DPl?**9K0+}N=O z4r4=uVwIj}7vJ3I&>i=E$BC0?-+XIW8yRFU3nJRp2?l(Wx5&m>$`B5s=qJT^#9DeQ zSpk(d=+Vu=Xyd6W6&md7h9F_er&y~LDvuyWt_Ctf7o4+pT^I^A!UV!oIfM`}S=5m% zAmRrfMt_p7;$m)=8PZpW`&JnWlH#1WftJrVo;`nMp)SuBXt&z1gAzsuE<+J3g@{*~ zvx~eBGY-Wik5P`K0aq?7H%*c`gmyy)s1ld}VbUf@4z+|Ua|UKzx{H#_%+<|}PYhk@ zzkK4-$pfjG@l;)7eaFhRTW;#?*}xahxEVOZx7>`%>{7ijv!sNA$|5aA!B;Z~0um?h znB6?as^tS-&ptkUwLIK++x>f1uWI3Cd6{~Z6I1ZICo>JkHHS+JKu_MZapl%c>rR{< zEzM2k(v5YQBHzn6dhGPEqZe=3yNY3?iijPqywoNd0Yh5th2%&UWS;65MP+%Cg)C0+ z4EQlmizgA{l&XM}A(o?-g#i;uxO!P@>Pj&^%3cpX?XH`3xt%+9y!`xYmrftiF8R9D z^zfBEx9@FkZJ*(NY)qIb{whK`SxJ(RAcvA}d8c&h3XOiqADc#*aN$B6nQm27%*-EN z8sxI*xQ+oTwG|YFz4*dMJTxodt~IrdjozW@wU(T8-RHNO!Q_w6yt4>`HoRJ4bYyho z>h!gNVTxhj#ltICZ&=86v9ZF7kopNLj%KXMR`a66WT{H2+0mSi-gY|In&q8#$Wq6c zDs#*EJr6(l*MI&$2QQsu=hyVaaB6(u=7-*w&u3}zjvPAn(GUMxYChAnYF%qvC#71i z=GXL^*UP6TM@K0b+KUl8+P#9yXiTiHR$l1yinHiJ4uPttD0tAJzNKf~-Zh){-us@p z{;QWy96NsU=+U7|XO6${#PJs%Ep~SDF~Ti7cCA>wvDnB96zzVy6o!Ks5=4j^EjmF! z7^9X!71eBKdkKElda+|_K}e~3dd;(l4ge}cw}l3H@%H(7?z;2*LC3mncWm5w`}EA@ zmEKDyjvP9B^5}S9?~&)8Jo>^Dxn;{XZ{ER;<+U5Pv~_f{h&M||hJ3Bn>p6hg(p-ss z9=YPCT{m+JdVFl8_tNFV2j4t#?C`+(laGD*#mBz%RJI|rXZMZ=9^Ci9L-+37xuvNo z>?xr2)XU_U*wc<{Ph~xefW=~l(mgZ7Tac&u9^tfB6tvlr$K~frGx&4U){X!E-~R${ zIJ|hF_w<>Q=g*$K($_yUJTf)GXB+vtWPPEKZEI^?zH;Rjy^e9qn$;@``3##xCfR$V zE&``04=E@X;Yv&q-9fM|Y%03)I)10TL8Bca*3zH|0Q-js7{7>{<q|~725~eF!na(I zL?;oI`Y5TvDwz<CkuZ$V&WdRCA{fn{sY+(5-L@$>*)Yo;{amiDsaPl$vyF}QxQX2& z1(v~W%K%$vSQi+)R{HYipZVgKzWnqvFOFOtN~H>^;<E0Yw{72j%ciZ{`Hm;0lSfFV z=eX^!9*98%@0-ZXv#h{_8>z9uEBh(0hYw%4aB*Q`I#pNX{Q||6yE?m9wRNn><%?8t zid(77_gOJTmZPdF3Vkbfsn`*>B(4~M5Y}+a>AE8Wu^D8ZHuL3A%NjS@TeASsCmS<a zKEyLVKHPh)@511<zWK2cWl^Rf)wW_;&)V*;RXmo(t`~|s!|nMrk3E`7HX329t@pdw z3P#9&IhdagG`a3!R$VtWncz8UHt<nUb>*b0(pp9mj-&{Y2=$2!HYMG6NoGli@v%fg z5fh8Mav_~djk2|nDq1n90IDcGl02KVfF7YnS5J$CQxcqOlx$@q!U@+XO;M#oB9P@w zU=VaSUoAoHaKnX?qhg9<yNDQ?l;{XG=NPjFzL;}0LQEHO)lywre2ys$*$l3@ONr1L zj?z73(Qt|&)?fq_E*Nh=!*W?pu3CrMk+8U_irA@a61MaJBNlV0N{FG=*nzCVX31p3 zG7fQa%+EOh2g2b6z=50{Xjex`sAouqAZErnE@J@_kq1U<XCqvdu~-{}dNcxu+=(=a z>aoRZ=oV=m5moRaNGt;YsZz)KYMWwfpXd}fH2&m|{_7w8S3L?QwLsFu32e0}rnSZ! zYF2zaACJ}pHXJQuIYDdY%4{3rnMiAmg)EjnVdNrvZK|c#S$8H8M`vSY4OH4Mx<ct= z8Y`7ifOn3hqK_G*bPYtb8yx*@P$DGVt!4c<b?MxM4Fq|DR0|&5yPun$`Nd!SWzpI8 zag*UI5b8Xnuv!J(8I~1N*tDP>*9|X~eVgXdjG~V$*MwHaVT|`J;JC47i@U&-mCj*W zZoRnDX^dT(?&+IMsO?Y9w8=&v(<Hdiye$b92Uk}OjWpGi4}ErLTATh-mR<k=AOJ~3 zK~%?-;<3tE^H0|)@G+@2OmKSxs_v?ZdGLQ27Z?g^i>)rg5jPpAfJcc~SSeU!5(SD5 zU`B0g82HvbfmgL`Lr%CK!PZ7ubG*5}j=h?^@tYU^u%T4EY`H`qoz9mZfAouA{mN(1 zk{s2L2XBk7+mAk`l4wZPh)5|o%w3@{?nDwHLvsBr-62@2VFrveZmCKz=D;Y)B-pS? zd|{}v3S0Pwu$506m{1<j#Q1PeN_;7K8h2~R#o08|1S1?$NWHo$90ph|(BJ~pOg_&G zz^8cbC72`qlrwIG=%j|m^jdY(5CFkuDG5@K1Gy@D(iF|5w2UzpI#+%n=*%_!W4)0I zz=sLgU0RwQ>AP^I_uQe$-V>?0v3zr3mc2ch!tHn6pJ`k@J)fP{{S#|t+}D^2K(esS z8U;cE+1XW-`tA>*nvE))+=LnIJC~Xt|G@hmVv)z!9L(2-3<+1cOVr^IgAg?{<B}Nx zjb6)We6K#A-gnQP$Bul4SCnTm4VgN=^xiQ%c<!lZUf8qiL%J0TQ%az`rcgzU<z|o= zE=f=Yu^LBAY9O`okiiM8B;yDiV1D83hx1C}$4QPLkD$RqHl5zMuKmFAt2_XrtwRf$ zk9_Q7U;M(CAN~3_`ueUgo85Ek-e36npJzK1^-&Ih(4Hbvp+btr-R4+TPb-HeD9ToZ zsR6a>nb67D5U*0oT<dxPmwGCp3d!q2wTQHK*8n2yIU-CAhAq)b7d;)@lPI%Xp{2aB zu{=|kQ)@9XRqF2>ICu8^nbT(vA3AvE?73@KuT71OF-J)?H&0)?^zsW|zv<5R=Zjsu zKX1N-0$Q%csHi}h3a&j8EnwAbp;Ve#D9se|P1HNKxAW``^G{yw{$v06M-Cl0^yX`C z!J)aO;oaZ!L;vRA{>=2uOrg;5sZaiOYI3I7)zRACS+39V-8tE1?<VEbahhYRe%i^} z7p=+5B0DUs80x9P5GHyeouKO99QzAcY{+$XuV1-(<NfzPIDGZW>63?#9zJmC!ukEr zKmYa%FV}bUY}~Sa+pgVf*RE@7YSgj{A95g<nYmhX#d;ub0L0U#nS6>@%@w5RN~@;n zyE0T%`j<|YIhG@qkLD(Wkv=zHKcRLwU7u-Nxu$vj`t9Y}@qw$CPaQja>iChXS9%Y> z{PLlfUrqDb`i&d5@7TFz^Op8y?e)Cfj?D>D4q14jo>eQ#7_Y5gy<yAx&080Eso~YW z)5i}VIq>G$v&UY4<>>1#z4?2;^9Sp;Zg}W{`yP7u0X{0xwJgJHB3NWB@o<s4Q<kNr zEla$`!a`#)UrrVHgaJ<|@D8KNN#0YylM3azQigYM@SVTSTUPJhvq7I(#o7hFYe+yo z=W7gVXRTqIE3r&6H!(d;T=hjRQ5LDbaFzoJkX`zj;~b>?(;>KCim&GvDGw$HG&xy4 zo+g?Wv~hspi@Ukqmy(Ev!=$S0Dq#PTAE!g48f<J0Oe>(6bw)uQlwdl~$2aO3Mm7|9 z$ReF*{tF*U$Sm)KnrUpv=QBB;q8J()|MaJy{o<D%dH%T<rmhWZUp?;!*n9uBowse+ zva6|m`CMI&FRKo7$A5-aorNcvMTgapO=auTBf~?-53t|mz{RttdEQC;1@g`9D>g6d zUfZ;6RVLrUCQ+UvnBo0JA~X-m9|Y*~G_a!)@S;efY~#Yhk2V6C6K%++hQbb@ly)^_ z#sjd>oEu9>EDG=(fii7+l7)f(%h#@+FOLrJ*bup#ZSBx%Mc0~!#;*Bvu~g1ZGrlDg zY&B5}5I9|H719l`G_WR8%~6~?vY|Tan)x}XX%Xd9k}isyjpAoN+3Vk>0iu@I?qxYQ z#}J~4*APasiRfpCUCC9ImiP!riYw?B&PjC~y+RZaU6Lrj$q^_at2rtxBk4elyQe7V z!aN>B;bYw7cgJzgA~z%jNC=h+WI+XtP`W2w4p8{^?{+z<2oi_m1j9qbX%a{tj8hk- z)B?cdsF74b5~G^jaEc0wg-oEhSU?~mhH34*@lO)QXhsrxKNqBGQXzLg3EiQ_$)rSB zv3hDMCAszpKr4Kev?WnPvTOQI7(%R0PsF6N8)%FwVaKtvPO+sH4jv=H;ju3rVrPlv zP}L7+$JPgks~+6t*g8uciL`*nEGkfZR6(jDF^UD;wj?Y<w#@bfGGoQ^)(0QB<E5A1 zs;_U>WC1!dLHDL*f-Y*ebjV=}S{5?g5R_yt)G<iutr#3=g8?5VVyX(%ln5vFeQH{? zsoJ)1a=Sr|FEQ5Y8LY5utMz)Pq8$axXQdjX+uax8=oJOJKMs41KCO9$E86g<v5ATh z$}wuEW2ZG1wax0;52&4iNaV&Pdhm`rjb=4u(Igz}P@RjJMo_(mZF>O2aKs*&=*+4% zFYr>wPJc^3rlFFw(gYnG=&W1A8?2t2PYlk;R1-f<78zLb@d!`nt$Vg(LW4g3XtTj0 z)p1B=XkwhTZ$ln{KaSVDgi(-|yVG=W?0%3e-YO<p7-;U1f9x|7$|`APXRHN>TRF_8 zln3%AnWOn4nJO2G0cXPQQENttlR&P7F^v;huBzPVkWl5ZG;l`Z$s`@-)-#I+0Odq} zQE!bV+Nw)#8QjZ=JT70EHfnmv3DlPu*(;TmyJUrTsQ8U1gpCu=@=>4~)bk5Ls3yf0 z959h#hfE_kZ461svA9Tg<s@Yb4@o+y@`<v{m=Tvx&`0|Dp>zvT3#21#C>FunU>h&H z4MY)R$ZM4gcED|Tp}6uCb>sY1Jz^*p%8!Yp5SwFJPrxAvmAlx}i0?o~PmLGLrKx@Q z+`DmoC#kNJEbyS632SEL4)r1~(<s%-Ipu^bHhZKXs)>`FAeah@akJ$X9HH8PZzzg9 z+Rc1&cA+#fa`jT*g_HdkkEO=@QrY?4yEpv65ByY9YuCU1*T2-XZf&lidy@T_ny<)H z-qM)2f@hOzyI<Y)csv}^0olRBVzE#f=)X{3TzLO?JV;s5%PP@Q{7ri!i%f_h;zmZw z8kMj3h=K^A08#Z+Y|E*K-*xYw|LLb@CdUdq$B`~KG_?%Z6(4)-sek>iJ_v<~B+J-| zqeWw$3dE|o06$k@B#~+pmWVInum}KAfcb^9td3Nv!ME}s5!jVBFqLX<NNru;b^P2_ zK8Q~H%xB%d??d17{U7|^(UEa(dNnsUQvvmXL#sS$O{{XOxR^sCVJvphrmC*HDY(kp z3M8pkNFYh7R)o+6gos7ZS<%SBRwGm{gc?{@E@qjVC(goB(@WJ>r$D(uHvde{Q7gl{ z2eWlUgL?np{{8z8A3A#S^x1)HgG~OQ<ME0#+t9PzL~mwe8mz{K$I8Q3UVrxUyKcOv zeZ|&NInQg|nIWsLP?ADTR>i5;%AZV9Em2*cpPimun3>AuI_lC{UQ)+eHcdD)%zQ)f zzx>G`Ub=jlR-vuArKzcDW^RUMm$C7&*Is^=$A{8-$x4<7<gFdT0@;LByg3L#3gUmY zOLll7QM_r5of<Q>O;UtjL`{j*qAS9Y(vR26&rK7{Fyp?Zd+p74Jv=mg?er<`(H`hK zbL!;FPoH?@8->n}t()0Xut$3en%hb|cBl^}S}j2zdIdPL=D==2H5V!gYSt}lag60G z&94GziH;m#&{(@Q6eP=bf$e9MdeK6P&tufrHFd7qx?<hdJ0JSM@F2P!J9+HrmGh@B z?tkOLTQ5D<P~f?Pt=o5O+Ong2<?8xuktZX#am{xGcsC(4c@|bUn3xsXR@`vcs+;b5 z*Z9QvIhG0zzIO81fpf<$ed5qxeBzJ)`|@=w`AXtL4?S@E?RWB&B9Dg8&f5EY<VbvH zUgPZonG|zi8qxN);zGGNS4x+7pW!qwQe=5za&k-)K#ihkU@2wlm}nu@P>PA$E_KxK zk`u}os)Ht=xB!qj#{4DU*v$_E0=Fg@9N6Gfc?@q+w1|sI<V(pQELqBDl>`nu0hNF# zoxY9&ArRDHiVDM&Pjo2MSxJ%E%3pdO1$g}keN&Eonb{26GxOOjALY<DUsa&g`9a7z zo2|<g(sQN4v(N1R+fRRv*9gA#=E0x&iJ#Gix2Cq`yKmjWet~T}+uC_@r+&7yFv+d; zGWmuyDZwgAAzz<M&ySDvA3uEj*x~)>&Yn$;vMzuy-Y>Abr)Pb0dv~_b!s8(9pX4nY zR^;&~BT09TH#7J_YYn)8^3GmVxKl5!{ULj>NS>FU+^uqz4vbM%VQk?pLM?bRHp`TG zonn1?dV2EOz`*%y{g<XjhG+y?ut+y`ws)=U>|WW>*uf4K+8Ca+V7#f0j{FyY*lL_6 zN8=-0A-Aa$H?5?LL|djQ1o(P~CxLII6+}U-oEf>Y-qO6Vz}nqJCDhnSvMgN%PfFAr z2?&Tf5|Csx5@QGf)$o@%C0JC*V!S0laav3n2WpZQ6EBGwqbchnl^rw2j{}H^@d?Lp z0x{gfHOf?yqlB1NfMg_Q1l+^P)WwV<hP8Z>@DTP&U6l~?UYr&uL4YFsf`cLkAS9J_ zuu}=&j+luBJQl-hapJO0LM>9jjYK93=wc;eWCgCvsR}D%TmiZbCMecB78OIlcOVd_ zaFHJNvmvYc`H`d*B&wpG3K|G8jz>KyI(wo~E|naiMO-TJr9v^YN}_A(T6mb2m>0(U zufO^4g9B5nyvkI%GTKB<LevvTmL>&)tF5&mBke1#n$Up)wn+s~?pZ`#1mhxFV)aUR zM_cu6G7K_<6+vhg#gg#^TlDoQAUaNKo#{SxI|2<f+7hmK(vZT-C&uDQ+@PMObTz*L z6{RGYVV61tj3G(4OXwRIB9iUsV2aY{t4nrXLLp2G$<wy<<T4H2)M8pw4Zx<EGS_TC zH~kq7;!HztVSPG^Ai97s>4mTKmp&%LY%?DK$2-;&IY;*pCg1_y)2FTy)69114Zftg z|JnOth6yfR^^G6KBJz(Wd~g8Ma*>z@tg=NR!)NS9Ea1UMA<?mDLD*y&mGrW)k@CYK zUNZ2B6f(zY0O3B8ep<pXd9JVIYIrLDAOp{e65XVqTLg{S0)P2PzETfr9`j*0DbCca zpa^MlOIY+mv_rJwEv{(m;{hNt+zv>fKm`E_GwRd083b-bYY%WJ^Ae@y7<o}_aGp3q zh^6L9<&2QvLR@~4H5#IsWYb-`socOt%9<LMu3WZqVvnfAJmq2itX!GTRVd+&6nR)$ z*`fj}anoFhk|1kTWr;IltLtd3;}OkppbyAG3J2C=F=um_>t*!<H24H|GEp2YS4C;E zNYz}9xeo7sWDvN(IEj(_9II3FrHRqOtL#(my>NVC<Z`M!v2FX>?|lD{eed_Y@5Y<f z@mT6_{MKLd1p_u)mdXWqSO%MaOc&*p%&?PbtNa(he(pUbn}%|_bdf{!3}>0~+0=0F zowx4Zwrz!40@Qa?jFlqd<>C|zN765VKsFVkR5=9yNwakNj@xeT=xiMwyVlat!*)<+ zbi8i<#h2f>a%F7o>Sj}@nw^W**+h%`;=_~t9Pkz+RYANM1PY}jf`(WducCG>s#I}& zfg=ATIcR2+>TILU?mB&GkUGTb5_e_!T3d5lBZFJEyX%c7E<}aRf+$Jmc%4`ERAEz{ zR**wXjg<;Dl^ww$H&y-}Ni`Z~rmC13SPU%lP1nFo>|K5wQb1gTVro8BY=c(RdfG{* zZA{>}2l?h}`#<~HFTC{fYm<Y+6z>#Mk^%=$pLf->TN)$PhvaNlp?0>byJ4(hbaH6; z(2HO1*x0ve>)xiu4&Kubsn*5m{j?Gyzj0`3l=`9qImZ(NV^c$^`KbmTpJr7BJT*RY z6fb*3P|xyibY?<4RhmYVT)uGO%*7GD0GcaK&df|rPGs^0^_W&SrKuJhX&St$1nYId zbuwO8H4O5PdPvO!(aqd#V&xE$=?F<DNTOcS$55cIzOl9EmfO2;zV)`zYXfJvaesLK z#q($OKmWpk7hg_yc5Ts~f<3EOuWu?g@E%2G$jV>ev&B;kmSM`RC>u-*wWZd;DvOon z=x3dg@<uRsn#v)XD#zgypeU}7AaGNkCp%g?SKQvS;*LA+85z2I=G2i>Cyrb=d-nXX zqZbYz{zkr`ZS~r%+jg*6z<&OQLXj6avdiDv93*CDrs?0{G@s2B*KE0A%g!6;X2z~v zI)CKQ>&K70edY4`&;0e5KJ%&1W?GtVzvJfbc+bQ4-MeqY`c>I1UtQ%H1az9$0~KbM za+&FSeSIOz`b8$)#$zMefr3rU7H635&ash-`w=Wquz;Yh-rQ~d2zHSbYWFZ#d16g? z+&9(JX437jLZOVYuE#ti7a<%E>wW;<u^faA4pRoIK+yhau|W7_IB4>+)g`YyQqanU zSP`O$Q{I^v<%yW0n!f44Isl7M=^Tqy^_hA~BrhPr*o?Me!a~c**7>MQhhCLrA<uGF zUET2L!mF>m{m2);{<W_?dHL*R-4Nj$FswiA;`5p}@R%9z2;kMxGo|_ASxum2KX*#f z2%XF2*ae>&9UDD<{PdASZ}HSiYIsEDJXdI4xwV}q`IoKD6k6HJF~5+VEi-0=HtO>< zuu=b|&K)1f<1*09lN;o0JD`zsgHMzTGKO@1R;S>AUqJUo0v?iJVTc!NPEC&VUhN&| zzf=IWKuNzEx|%9YkX+Z)%!Yx^o^=h)UFmG|+<b;t4{Bg*g8ZbCZn>bcEj9R8-s&7F zPfWQG$ovwtO>n9XE=~s`wxHR?5ds9by|_zu1v#YPFD+5TI3|Ho&ehv7;}tp1QWu?E zOaNC!7NG`!Of?xb2-hXPZbE_qI5;&@HJDUwn6RA{a1KAmkR_!o35@wTo1`&8BJvm8 zxLBJS$YNn$NEgFRa5z;nsfsNk^i(_7<a&i8sX7+XI=G6zgA!$~3MU~<@R-sCz~4p0 z@Q7R0wMGr6t-^@u<G|9%RnSOy1sM6mC4^SAl3WRSQc_q=*rPRySLi(y(bS+h^J<g? zX$^KFMZt(?0=xt$k?O&~)KER_)rjp|4J&wROGhl2s1S9jG$m?BtTmz4V2H!vRMs}< z)C2>eJylN?O=+x##1OUI&e=FPT=(9oT%w{=r0JqTw`}s-1)N<247^M_XPSF!ye!!y zN)<a|{T<(dgk_7L0^$-EbaQh^gO6;q0B6F+LFW)Q8%^gbd+F5mn!rS=hk<LNXmHNh z%UNwl1hEOBwbZsc1C{$h_BxJx9=Pik(FXo5F~Wfxa7l4U1#Z((^^E3in{o#JrXgcl z^rz!e4vNY#BOMaj2C8b^kmz!gS|u=%uH^=Y1PzS?J7u*4MG}?!?(<3}X;vQ!C$t>6 zg}B0TmPbL+Y8*;I3JjEG8mxk0B`1PMxe8ju$e4>%e<F_(Vh`XMb?kPQR?<1L$n+P) z%c^No$%UvKnk~U<(c%a0z*hWb<wSWG`NDAYT&z5kkmcr~raOlKW`?1krD^!1N*)`b z5WS}l$K)_-g+N#<Oo{+WB9#LXAIKR7tGHQvp@4P)&F7h_%uet&F*fa9Ie)w~dO4Mv zT(^Gtdw%#kf8cvRaO*AG*=q{(ImSx$3$MKNQYx2gZ0+Dxoe0rAulNXI@<+p3E_fb` ztaeB_ltwoTS#G1V6qgyy$+GqHm#?1ZDTepI|6L5=gzTJ^<rXxXHAOJjX!c^nX1O6a z0ce3T&}(2QQK|zgSLAQFVb_z-99rN`D<j>yY*SO~*p=Q_Uwdoys(Yi+71;=SoX^gu z!qg;G#JHw1#f}P|$Co@ib^<jKOl0$tw2OiAO!W~%JfI>c{kl6+xopRYa|1K;Io@)| zePaout!7=AZMGUg`xH^!<aPZhLLA_Mrh+6_T2>0C6ahTZt^!dDbU`Ko*lLkf8I9dA z5ibRhX1uI1RM7L1kolC8$pTC4n67BC6<buc#fAjtz=H!LAOHAozw+b@`W9NDIp4K9 zpDkqhctbFnA-zbbcN*%8xwRfCJ~Ysg%Que<j|`o9?X^osm#^Kja?RF;w(j~&1G@s4 zK(Ta-Zy>T6Jo9*7!Z|%T+<*D(;ne(OOIrh+)wF7lzujJ>e$ia>PIGfC!c?P6^OIB4 zI62!;D9x0Hul02;Us2ZE&S`$!l}u!`Qm2`}yr7N~J*k|*iJ+My5k)ftuFdFxq8q3> zwEE##vQLlkqXet9D8skd*cso@zI^W;tM=S^|Jd;GnN!CP?SHHH+{xoFK7Rc9NAsPX zo3`!PvSmll>P^MQcHX--%L5lwFqo@3XQ=`HGRbNlnWElDLbbe!G#sQ>4ooTUHI%T% z09=$!N`i!pG@H$->{V9-E8W^w-hAh(Tkd+-#P~3uNIY@$$l22;hA*6Z`Sh`u9{WOT zPxqEB+qP`kwQ|jRnw~kHIM9b7e74Qj0PJN?2M)-$t=#dzy50NUJA19amv1E=Km6AD z(}!O8#%nJ;_DrfFw|CF(`|rQ+-uv#~vv)^pt2SzBwqKr8S;eQ;8j<5#aAGHkb{3>k ze8x{^@yt2@+DXD|biv^>2KM=eG7o96pwF`g7)@b;i9V+w$5Cx~(Vy}{#T_bIe4Jwt z1q8JuSZX;(5gu{SGd_ItLQ8lo00^Wn_)rY#j3`ffsia<YBS%xC1mLGl?v#Dj%k&g| zj=fhoMHOc~fQ=F=U%Y-<#m34D^eCr$>dIo>Vu2ZkP=i2bZEbjX;gzRf``Xu@c;e~j z&Yn2Cu#jJ<YiM4*XU#g+ly<LLyQ$dJ%sn7Bbnxl`URZ#B7{nGZR>q2XeHmqPWZ=mD zqeqV%IDhu^!tjJ<{<-G-%3aHrukC1Gp3gV4H9>dg^^ru~|G~Qyt585FF)CB2iA&v0 z7?0O%SBu<eKD9IompM~~%&LTpvx*0`SmPVHF<s8)*wHyNJ2BYTd+zF$vr{93S^*-D z8(N!JZd}HKMQaz2oze31bjw0XPF42N4^Z;s>{4?g|686YtQ1-}RMOeAm?|P9OOuw0 z1Uic*!vPRia*IoXQ6(->P-z&g_sd!XZT3r)YMZ4gGeRT)ETKBQNQW5b+Y8|LZ;#-e zu_Lvt?TGvq8y3?>XaX#jzZen|UO(V0t4O1WU6Ud`oP-2DYCw@Rz}H2nCW%B+V5%}P z!iugD=g9mDouxQh@?0S>k{UiW(b%UI4lbZZOfbqyw}%%a1i`fu1YQDp2~c2Qmv53> zK@Erzesnd2YE_gJC0G0W+mcxER8j^leW;3&h^mI55`mlpq&Q%Ja0*<g_O5FZDS(pb z&Z!1M)LNz3SVh%p8lJTm-e_2hr_mFb)?XwT8HdoeFc>i$cc8UERa9=V<0Q|(H6JxS zoGQo_jP_P^!nfsO39M~mVxNMeN4{Jst}aoe;aKb&dc4Tu2+3_Ui6+}M3;G3%YV-%{ z5ciVPD$J~pv-_>eKW3Lf&{AU#_DCD18&}~UY`0Rwz{_wdvXEf375plX1+C=6NP5Me z4zYEONPmq7a9V=fJBDSS6w?GP(!WAm;e&Lyw_<hBhdi}Rs%V9Qbe<uL!N)uqEwwZV zup^Xv9}U>}M?+E-Ur-_7@T|9jBnN3E?ksfn#28EXN;auUJS7Bw()knCnt#Zzigm&g z+|IC$eIn}U-*Je`m?$r_&(^}|8T-x0WRgN6w{DHI$_7#Jby2_(yjSr0Vm4TMh`X64 z1F(^3>dU4Yo|^^0C{@EsTMp7_HFAq4$iy&~XMm_6dX9iu+uZc{&~QJG{r6oyy)b?y zT^?V(q369HeBTGZ|NVE~v8S<7!!y`euCPCP;Y$C^n{U6JDz-PZwE3Q6o1=-d*<=Ex zLKvSZ1GNYd^pL(GN6^N~fO1$fk2*%Da}zw9T$i8!!28}Mn>hlCkw-?WcoCM&U|m$Q zOgegaJi<4b3|}=O*M^n4^t&Iv@5v`#nVuTYHMDW7uCb|oJe7a^iKo8ryYF+CT1H{C zi804XUgGf58WrjwFp=)TSc63=-wYtbT*f!U4BAEcT#N1&gjDItFuc7fwR3al(X&J2 zlOy#!&H+phFR5K)R7|meh{=hKxs9JSz7SUqg9P`;ujE9?l*ne7Xi8Jbl28N!4@-hf zvdAE=9#XCf5~GQ^07zsaqkzh`l%=R^15AcTB!22&{M6+$mkJ#{`Noz^uCTyk;#&H1 z6}U37qGmwPY{6Meipm5{T%pj_lbvcBn;04EJ^A*P(?`?IJ*^!*P0j7arWRg8sLfo= zWanmQW~bR*GkERFEUz@5A8BfDdH?&~S7NfrJRGI$y?WBns+##E$RaJrhlRM~$D&1{ zVRG<VfB(X=uH|+01#GZc9`;KcCVKLKEEYsp^N6M$1T2E>q_C1@eWd(m0X;~i>LLw< z$`sSGTUPVr8@(u-BT~G8AEz~R?78Xg8*aR9Y^eXjS!Qr=pF4Z%;ImI2eD>K?d*`~1 z+qZ7ty?X7&=GHb=V|WUWhshDBeQGKy+7l-Aw76qVwhAW&O<n1!l?th$cF7iWh{Xr` zl3)u)VpO&}349)o7a}m1%M>~`?`Yq)^M<*pF+QVu>gd5!Cy!n2?S1XSldnGcbbWjG zx((|#ZP~eQ{l?agj`~cFw+u3=#Z;P*@*JCD(vu}}AX{u-bMxKnZom88lcW7-PaipQ z@XfO)kL-W##Qv8L{g>bS;}x6M-gD<|4?le0U3cHUyt|ogRHc%ZDkv*FgpVQIt5?$} zh>D5*VLh`%EhJFB7V>($%QM(7LS_YuyWWu683+q2EP}AcLYUnSlnU+HC&S>2Fe}`A zhO(uxF30qp%&A*g)<Th^v@oTYf0*&(QSw{!Tm)#t9cg-*j4c2F03ZNKL_t(t3mHKo zSX$O3MJomRwh<7^04oo|R=oy>RBcwIz@mWaIHiq@&~uvXVaeqoth+i`diB-Uzw(vG z__j;$*$YfU7jjL@*4?ma>&`7ZZt7XNE|YJZo3EQJ&5!X60o^yfsB&;Vn`WnsD$Cf& z@R6e@jvYF1@$`w*$grA{T)t`5`p)jPZ5^xYi|z9Z#ko{&iYg;YG({1gbDP$t8|q0# zPS!5qE|qC3Ix>Uu>}Up-e@L|h7h#1~YE*%w82v06SD&T=PYm>3x!QkWiuzlcWYvpp zx9nnA*0Z6tZ6%8r<y5XT&%d=5QcIcSO%%Mfz^S_#Ru+PIi{VvOHTStpkeWfCpq0ot zs$&l0?AT)AA<o~@p@D?l108NuUL?rOmmXI!s;HF2SrVE+SR&{uE>3Wz-FnLnS8OSx zg-XU6u6z<$hD(LQlRzd=IToQ=l0oC77<(}!PLf!T3UA?7;a5c>%s_?yMqD8`ZZXH0 zHsD9(F_r=`(h^(@F=S$lS4Hg@2`&N{s^dG;<asf965^P(vOJ@fR6j{v2}cZ~Yb7Q2 zbtS11iqMjf>$xSutz4nv_}1~?0X0!^zAdJ4*;(YrB*&zA#y+8StUdwo9MvpS`x2K0 zq4A5c|BnoJE=gV{FmSJdFGh9~T+>*OII7gDh@;1dAvKl~0&zT`)2o_N>LBAIfu#1$ z+D`8!6iY~T#00=>i`v?l-*ptNPDem8Gb@Q6O6XKcsz|nEvqVgmM6QrUMl4248W->Z zsff6!ia@1?nD<FAvv`#m5ilwHox-k>_*6?0O_jDDsR9MQ5Y`}DmtoLFOd|$%<>XDT z;|8(_MTvTHLUBrkgN=l6g|USy5*^R_@TgyRN(Z^XkZeq2PL5`##15|ZfvFjv0%4q0 zBqXvTS+wL^KQy?oBWeLEMKIPQE|;+YqmZW<ZrV|=kGN|Dk7F3t;2%czti>QyBO%>L z(G01c_YTfZO-~LE4qm*{dwzJ}VruGYDpTINb<M*MzyEu`>pSkaeNS`I6>_b@gCtZ@ z?ts1V*8b6}qpcfu)n^;nSZ(gKWe8~qK3-zfXk#j($}HK**wi_i2V{fc>SWobM8>;w z<AYNJ=Wo1m+s<991qwvgG>VPvVwjvvGALSD?vWzi5nV)X5cJT36NLuf+<)(#shnO^ z-Ppc@8)i8^M4v4_`OHg`Qwuz(g(fC~=E%l_ig;l&?uv3ach5$d<7uX5q(FRiiY3nx z%jjB#BpJzsWH?52MdD~2SOPAP^K8neZrIv>;nMh}fyr{ZP+!Lj+jPrK`9+p+W0Bd1 zW|iCw)j&J61<uo&;fgLwmYN|~H8i(8kjIU{M8Z9kbZ25?YGs=kfvB93?g~<nAtvOg z&PEb|>&7^&)MIF$Og@|bvp@aQOJ~ltuGo+*HuF5SsuL>N4kMdLkl|Lvq?AmO6yZS6 zMR?ST#+J^8=C<jn(!|8%+~n2a(aS@KfeyWNK{C_6k|tryN?UWY!*iRrZM^l4JNQC6 z>QJ-TRV`Hew}81)A#N$pFKh3pZ!AntPcL85$)dx^K!4xtg-%u`ifyu3vnUodq@qq9 zkcqA-T%-i*GMD0Dkqe04Qlq@!pA`z_m^~awBcNKvbVf*oXe4YVuc;+7M5g8ob4>84 z4VlL7ExUU*@40VsZ0P*i<GR^<=ES)-pF8*ZQ@mnv-MWpNwrpRsVMlAniaFk1$#jm* z1hgW!P;*yh677nZlAF{)xtXBlmzMG5T$&(Fh*{0G4AnhPO-W%vU6$s;QkgM!+{B)p ztLNK2`i@3(&zhYpH|)A=c7|u3P8>gS{Mdnk3+GP1{?h5!o=r72tXRcL!H$iaws$OF zTc2-a`^7ZhtCT;qgu$W)cl9wjQ|Q`yW6#c89+=`=i5JftKlt{^WBYs0U;50cFMQ@x zf8VmK^{#!lz5AgDAGrVCbsIW(PX#ZOU~>Q};XoNg8B$@wD4Q-a*XNB5DxP6MhU}0T z<c`_RqBE8+*y^v98!gAukZ5}e(^YZQI7eAQBv_qoYUIO#B+WHs)2n(GnwyGbr?L(T z;Sz+>0!D&Rl{SD9DokCtQb+@WqQY^t@w#nbAOnGGRf<<yV@fvNkmubFsjFA#pZ)5K zU;X;y&pi85-=(X(3m}zgY+ifomK}Sy?%cg*)w*mp$F26cSsZIGr(oZX)}d9o_=rQc zZeeWb>hVLzj~(29_WbGc=$I5LwB}ar=<Hg_!~FR|8|xsH1D@B=Vg;oJ+oU>&a!ty6 zagZfgrXrzr75wQLAyY6{*&^Rbfd9k-7$-`;UYejaDdOd9T{+9L*v!b#z@=+fE{qIZ zq3`3#{dB&m(7CmH<+_&Eu3Wx><s@D{!Xl}Purt=HqU3aW8K|BiQkfKxLke1ZCjU!s z6#)!Tl26mYWx)y+EZZVFaWt)+iOzNyWfV%F7^pg49aAZDv9MM^j<kXyN%0Y(#DH%p zAW_xgjI5$;HJ2D3GBsAL8ci{wI(qUPK-K6m*9v$Ekn@Z3pn@8SNk9@7)iP4N3g(dn zh4=)F1Y!*WI1cf11u?>lihayWY~S&ykx4X`5Yq+j6>&-d$PvRL4GfxqhqzrL<Ony4 zCvj@|R;5J*evQ~vp;RIfvO}aU#pj#QRH!SVYCaYC(xD{<B!N=I{8IybM={lj$ykDm zgOiC%s2K3o_<6e$;S;wb!Eg!kZv~X#fS9PxR#8Sm1JI)hx&V(M1UNwBKL&=vr-n%k z0^CszKY6N9C830U=~GmO;;Pi(2pA_=z@<1WPI0OwBz-dsrF$b^CAgMT<jop*9IX+v zggWnx8idD49`_71-lW7{QrM144jWEI3Fkw+hG9f_ovUZ(w^LICf7hrYzam&EVrv-I zn=L9!h9Qj%N0~t&K3jqu;oK`SLfLc9!m1*HNkFiq3R%PmbQfckK0v5oiO3E{0ZC{~ z5~b@Z1pN{M1zvQReS!uZY8)N$j^$M(M@hy~x6N#<&O?>yG;a`4F)$2$1SBWJ**(j! zi2)9`KPLx=t_)wjJlKDsG<cB>(slWT+iu+czW06K``-89-rXCR8^;2TeUO2BY-*vq zThBcAaw=Wy=v>9S*|diP1)z~gky?()B!lUMHkQ?3C_QpC<0iYIg|?P!pu%dX|6Hmx z^j+`!P~OKlMx&Eci-Dxrz}h4zuc}d%?uT?zC@27>Pf8f1r*`aIzh&c^6K6-bEzHaM z_=rZPx%I@!bBB+fx%tM8QZwXr%+9&R(I6ukciSA|*hmf<2lS;b5sT=$2q)$kr$m+o zz~U$gRqUcB%L&Z!I3ZV;TEDuft*z<Q#i7Zm@icRzx~$D4bqkJ(w8-Q($dI8!q7)RU zN`j)QWuQPHLgl)m5uW$}=N56q&0MVUxROZpl0^HUxfsMY=!Qg*#G%yzdk6v)isi`2 z*kfORY@yg#m!<gD>3MI>=(y!yw%yjQxe5u>YFA8F1fB@ifl4er@%4j3W4588z<coc zgyH-wAGKGAlIfcB$-WG4In43u`_kZWnJ>4`&Q5bDS3CY?h}<QGWq=8gRdNUq9JF+_ z?%KU~{|hhA&6XOQTiNDt?P}k^<;#uB%IzKPrky#)93ED|%xW0v->bU3Wd&YK9l~N3 zqM52T9&jrdJc$#w)M4VHD^Vtg@*|kK3CfIJEN%9cnFfm@kzclD_wCzv-8eHoa`F7B zQ^yXRI&u8mp#$d*9!TYz+E;Jfv~}BtE!(=gR`Pijc9rw5DZcVk0gQ&B{s=@hk~tDf z0H%%7nbK;8ZI8=IHz~*p2TKhoC5=r%(er{prde#dhd;aT)2U)}=bGEPSKW5!y(7cD z=T96zdHlfn^QU`{9qB!K<hfk2b@jT9TefZAwx?(1s$8x(L#CDM?H)2;G-L-m&zeiS zY<<hxO*d`deq(8R;>u;-cyQ>{i33+IUwrf{&p-O5r|TMWx7~U(Z!mq=!}sslwyLpM z$KG=u7U2Fr8OjS}t*NznApotxa5G+3vjQUP^^*;F)<P9vT2CC1PeSn(9ec!I%LH2N zCXKHr@|YJY+B#`@j_(NC6xYg=vEziRU|{P8@+2`eWr8cyaW?s=b{b(6NM*QQr${15 zfNjN(JdmTcyi;t{psTNc{wrU5_L0y3|9Jb)VB3-_zYje3o^!o-&wFpn0#yJC1r%JP zyV+<qO-n6t3}<2(oCtB|<9y+8dO|^J#0d?h5k-+P5o)qYO_MPqMK;kuqtOkZs!&xZ zRH3R+=6UbmyZ3o_{k`-1ua%iQ_de&|S3pb3_ipaYwf@WG%G~?x%<ca8)gS-#!Hv5d z0cu@+Yj-}kZ~x()`wx$;-O%3E&yU9(v+Q{$&^))Iw<t4lN0`^-VE)0qJ4cV6IQq$l zSI(WT-M<TkFYxrN**rF}d1QQ3hi=j8UEt0C3$#}wgS80@n8!&Y)M6$#@lw8OXoO_@ zrj?;-Z4W$2tunBhYhgncIbAvE=%D$mT5)KfW*P40jmx~3qV3T=mY!Hm?3q}%cKz0& zu?>x$@x^66B-}ou*A(i2WnTG6lo#q8I~d7CaoC~>pyj6^?w?_`N}z)qGM<}X8q|g) zS5oZ>sRVIPG70BKvMobJE?sT`rXl#E;p!3Bh)`@jMbS`=WK}CHk#e@`A+<n8*8iki zx6{%ZL{jb_ai{tOu>CUSQiZ?L7^QPWUM|pCsoAQFB*CaPlX+rMGV-Y0MyjqXvk<f= zFGAg9D_Qc$=mjvA;x@%WxJ1l^+*lK{MF*5knu?|-1!|;wM<(Lxh3H+}u7=ir0N=(* zj%$`}_8QD8sjR_jiL{!egB+1;roFYvQFC8zB<w0aeQH**-*8}y6?w)n1VeUIc4e7a z@!k7qCkk6#NFB#bLP~<DAL6V20|bugC}BF9GIZF}+2Me;Iyi9o)iBdKG=?Nja0iOx zO1h}H=LO0{OQ0y}DvWQ<ik;@NrmEP5Ttkdhaa_&}#WCs{TjoM%5@n3!qYnitz}+3M zm@mb?)=HtfTh{M2(9&gHhK`i7VxoB=aD1a*(9qC8*Kd})&G~^fPx_k^{g@aDhmIna z@mEi>j<AzwirE-YWSj}gM?-L=*`yFva2bUrg(4B9In<Jo#0&*vB(A~{6(l`gur5k8 zgGG0!kaAv7ZW|p(bkT!mcXe`Mi&J7w-MB!r!08;{q?(y~Jp1_3-1PnXOl59gn}2wV z`=V>J4{MEuXP-UvSAY92e(Tr1v2)j0r|we>H#%qPbKCNOGeS-gUw!TEw#LB7*k)aa zQA~=k(7`mtFACa_(S!xnuE=t`pld|y9nP;M1B(q)fg9J(@Z!8*|Mjm3l9J2gg4%0x zk!7c6lIEOEQA$VwR7b)GFBK(%rF(1_`+M46e(A+iC;ttfifHfb=d^fmaN_ozOFw+| z&F7xpsb-lnoU+bwVacP`?1i#ZEQjJo#P?DWnxtTrLe#qoBv=T}MWCv_uc3lu6AjnK z+)afrD-qK}X8p!s;aq*Rzc#pU<oeC|E0ecp=N8)PT|~pKj&dh57ht86VTK8vamtRX zjvFZr2^Nl!6m$=Kxx*|j4nf@X7(VLqzET5FWGA>{NB7M#9Y`nYB%QR#qt#chUB7?l zZoPM8er|>-5;yTL@o5h~+At5+;Y4jlk*?`kB?K(=lH7&MfA^o4$?-J=F7kKwTA<|$ zf;KUu#7VeT8VE%D{QNwZD}mbZv#FQ-g_8}EU_~DN&Hv-y_)mWFlc}jIe9Nt?cW~Xt zzI*rYJ-RbFH}i0WyX6t$adAC1o*&1gP}c2|z50#LV7j6JTYIcUD7TBS)&}4fBIf^e zf&xHN135$(3tf89#MUurw0W!h&gZ~(*1OkkIk0y7;V*Dg!By@NKYoO_72G+0>}RJx z{8>kRc>M+*K;OCdsfl%)+q-#%+cFOy=>C2!706MW#AzMK)Z;coOykF=$8wfB?(mQ3 z>V9`yLs67C2B;TE#2S}<!c2vB&T~fqk#Fzn9^7*H#T`$7?(6sN-@1B<H!gn6_Y3Y_ zIP<}|V;}tR4+qz*;f8`8dk(JMysNi=gaJOsvmfd!4qrM-a8JR#xy43D_l6x$?cD#F z#f6!hH?EyNdHnd%k1m}({q9@G-+lA_|NQ^)|2}YF=PO_Q+$&#s`PpZl8C}CgX?-iP zohLMK#av}E23L884!=2NVRCLaZmCgXkgSR74=d9Vp>^6X=pIGExO64D2#_Il9Ap`b zP6kHKRcn2i015Ra@v<mucxgZPW32?$M8#Mo{LxUyVsus<#PO`Ht+Q7?-JD$bcmMYF z?|kQvUw`A>yHodSZN2)+;LaEJ9(;P=!Ncp<Z)Es0wr3X?=Vp23f(<&wk2&}vj}dft zEZx6z``jtw_VL-X=N5SHAT8?XtB>y(TeER=&4%utA>KeqRCpC74}h>LfN!*e0bxCF zPiN>Q*4Ao|k_SM+QR^(}=S}fM(AGOFFzQg}5`Fnbg%03;fd)$hb9_Ye;hpQZCNJKe zx>|euNNZ4yuJ(z|Yu0QUnOM($$E!uOUakd;hRvusj-XLWX{Un5%@I;)Vb*&<#8d<D zLjx0#+@h<3eR)jFfT`cKU%Jy!R!pdqM3JPwO4E3f4M9u%Aj*9zii>LO&-mrhP(dd{ z>Tr1@C9Z*7U`t7DqND<R=jH{M@*L#q0E1aq=Sp)GNj@i*$_ddzh4FGP@W)0%(Y{<) zp}`^%olh20coQ&VNs%>$ZQw_)Z^=JZipt~Ggrcgl25(IX7@Y=advdA^<yt7^9#Ji8 z$ZQB#5;P^Em`GVJ`Irih%d1h6ZAi|oU?Q{FHUkRd@H`cyNQv9XiQ7nT+RDxfASZjC z+(`x31UGrpq&vnr$e1Qq2Q(GLZPuD2lBs43Mk%C=QVZy+%z%%c2+JQ{a-@mJ39E;y zmxEMnP2AgTyoH@ZhaG83fwJRJ5)2Fnc}$X@DPZP`40~dmFeOFtsF;Wj%fUg1ZJ?8~ z<5325TtK_NQYE_JIvkM09Gr7A<?8%$)%RU*XUp+eF`gUz6lLoeIpbC>S2c88lkzwW zgm4j+Vv623a~vUcengEDX`74W<pi+CdmPMibj=5$DHgV+tiqa7DBC6p2X4gq53=im z77D(xT-}09#5=<It}1bo-B1w7m>ELFAe>R7WTrObs+d(n8Ei@>S3oi~22t0i{nCYW zlW5!G&B@CTrsrlB+GnR{78d5_W*;xlPcKi;w9P+SUYO<jWo>D$-dnHD+!z|}_}~An zzy81b>;K`7o$Hw3GsS1xFRh$K=rE!1MlT9Sl7r{Y-9B>ke0^kB|Iiw~5Y6cu5+2xq zvC}!q2uHehc21i(&GHdpEXT2zJBnMpmuF}0-k-d9_|W!42e(CSF=FmZ%yr76vezlt z`F4_#L75DIu=NpQEz~8ywr_mx<=^|g|KFpB54w9tnG*L8j^6I*`~IK4_J8_Y|C@%r zoXjnRpoH$ut-5vP-YL<Z(}Op^z-D#1#C0=Nqdl4M0SZOb$jXsAH#d#~9*)~|y@#I< zSZo~c7#~@4?bgDzsrz&DGkn&IH=b+GqyM^4si2x}@7j=OPB>G_4X3J(94@IdX?1{f zI8|k-WL|+|7(oz#SrJ$$Q{+H*R5T%-!T96C`Te{1xxJp5^@IEOYYVqJ28X-*20FRr znGt|OyVYA;&ZBiAZIQw$JE3=rHs7~v+2$hW{hCNKy#2bn-4L#maJahQZ4Z*;3E!;M z1J^nO=fQbY>edFePZWhg&VnaFS)N;3IC%Kr|K<PwfBS#_o!`B6^}_h3ZCzX!ADdVl z8n`)iYijaVd)qv>{Od(?rQ|_TWGHFkhhl4pRt#*_f&lVaVcqeqH%ZtmF@#R-Q(L8j zB_8cI7CcREbio<-6cROwoHqafgSW_A<51oh+Pdr6?R%bDnt3pJ?ING7KX>NnUEbw+ z;ljH=dbMZWrak)(@7{NC-NsEF-QC27kK1X1#x!V|fX3V11<aP%;izZ?&<X?LlT2vZ zXMHL^6(xD9fXX+kQPl)mFOgtHhMd<E%JX_>@7mo5)*Lwa;_TzQS1z7Def*=dr;pvA zyz%o(*M9!S8*O8}s$loty@$5#+&w%z!aEq|O*;!ndV^nkZDz4H`)G##8(FjY^BcE* z=__A<aOdWQvnP1dJ_{m8k6t_S^FR1+{+oX`yng%(UwH9XzwzalzxcTwTl$&t>Yf60 zY2L0zTEEk5b|%f$XaFvXs$9_~u~A!SJADVy7;33dFk$P`zt&FZKh370s>e`441r0L zRMBrfuB6t2#YUsTmKlhXmO<3(P&I!Q+)`T)FJo=1UB3SKNB{n<Z~x(UUVr1g>D!N% z+q>F2`zCfhzyIJf`wl)ezJ7CCqlZO-nR(t{Xm>~G#uQDTxggJX5IG{;zjyEGv2&k% z`0=@uC%Ab)4dsrS@lB&+>qaIvcMXj4S>pMn2I~SEQug0mHt%Vch6JsVi`GCn>OMwK zB_pnaDHzRT!>XBXcu}hv^eoV!Rde!&zK+bzPkh{S_Wo_|7r1(V@=9&`E>8pT!G_L} z(Q$5MnAq4oII-N;&nF2O+SY3fFSlbg3#xhv{fak40xrk3PsuFn2D(oN=jD>I6=aeL zsh|c?QTI|b=P?1s4GEf+6VXH^9rVSzZ4KqnCIQJbbYL<;?aCzx0i+&Bj(O$-E*cOQ z6~wtBY2=cwD3WgzAm}k(-a<7g=jFnbUA`<(h9nC)+1*Vp7nq`y!>wE~QdBdUR1Dly zcWqWBgUeqSvet+~Ta#TUXiQYJNlO%_&_YE;!0^ffG`f@M&LVfgTs+qv%C_-xj?Bx2 z<`nCK6iW!8g_KLCvKKrLhNED<P57KxDz_S=B|vkfYA@E~HcC|LR8wm93ySu3n(KQ~ z5Dr69-TcJHmLio*tyHLZm*Q+rG%*V;(e(lnOSUEBuxfj!@A?t%+gK|N+o&K7!K~*^ zAeT)V3YWZ;gP^p)8Hud0m+64$XH>8~)(KY8oC!q{nRCTCvs_N<M5aPQB<MC~31I-I zIK~J?)(noygmGtD3KlB7)Jjpnv|>r8>$TjAEr2@x@)5vwj;x%U&oty@x8OQ$2S_Gc z*l`CyBwn-{+=QM|1lw<^QIk~Y5;nFTA9~h*(EYqQ3MXx$U_X;81CY9CP+OA;yL5ot z#scED^E^PDWY>pK5Qb$YuImb%w}gX3><`g6ppq;L0g)G$qSEMQgt^nf>nNV2g0R@) z#UC7+q_gh!<y%+J)n-re^tI}o#o#PwuUrM`>uof879QMr_H&=_sL$TIdi-Dgi+^(X zz&gbOob;p5ruZQ|?tvQ+I}4GVc<ZO{Elw|tZQ9z_F<9f>Pj-rDQ%`SgIqs6c6~dvT zYPbSJyrh;tWmduo9#meO<oSY`JKy^C-|EqgtDZPFY&!A5>Db#T5*jep6e$dGl1n<} zGX`Gh>@AFBg46!O=RP|)KJe(#y)o`a=Z#~1{q6lD?|pD=YU)8RA3F>UvIv<{YefiC zbWg@)#p?c>5m~-1yeZRF3&PEeL~%p~XU0TJ9#Zin@8XW<M2lYVPhEkOodpMc3>EX9 zwzlp@ZQI($`ti}Jo3qz%KA7fZ<oYIB7k3leE8v(Vm{OGR>tedtGnM3xm*{Vs7l3i1 z`(rav1>Xjn?a%T|or7G6EarrOV&~{EgJPQus4RTY!giSnY3I_?^vpExmuqX(hkAP- zJa{mFdusmPokm}OZ_hwicQ;p#S>DhD2RoY5p+*xhJ-x4z4+xYo4N&upz^)D6CJB<# z{8VGd%!d)6mTO4C=amFp2iNGb#>fyd^aDEVt$X$oI6~IW3l4tcH~#|H>i=JV@9*Ed zbb5H*CjW-QnsvR?(+}?7zRncH4}9`1B*jBkEGcv%*jU4$f})Jo0fml+v9V@QWB-)j zwABu$>U!7^<e`lORSAS1kw6VeqetE|9C${3iO2X6Z#0G`wj5fw{m>WZXKzkjWoCH# z)bU#v&wcpAKl<?X@AR)3-@WJHp8bc{ZrV}r99-b`qy-v*6}$Cb(=mI4qb6Nwr-6F6 zsTK`1QDliyjWOe5yLWQMh8SA(&I0QzXuK~{vqfvNo^jx9Doler2Dk2gVf%p>=Vu?> zxOVaM@nfe?9er^9()oAaJpb<N?E`~5cJ0}>@9>uG`-Ugh)jArisqzGaj-A|zu5S_4 zd5gq+y{&U_^zdh1e(JMdeDrww>XpkZ5}ZEq;f*Wj|M(AI``*9(e(zw<=RWt;H^2Us zFMZ|ZUAx8+o|)BKUU=8NmR^=wG@!pVDaS$msVCGNhBc2$=xA#lV4a{7Nj+b$h<L|w z>AS6in=M%J;ud~Jt!DaCLPnUv%v1fweIT0j8OM85RU41K-~tF++-$G#vIpSS)a2~9 z|NUG4{yX1$<Bgx*o4Q});j`|c(LINE>^r>wz*Fniujkd7Jh?y1(0n{g=joWM1GYZJ z0jsmlD=QwHJ;mD_J~(~q)a<Q?kZT=-jWv5m#?}o_tnKL?<~s?TVbJqD+#!z@0WC<m zHgh;Qk3SY0a>%rjV~IwldS5L2P1TlUg9dL{0<qUTYKpE&`vQXP?F(IuuH~8O`;#{( zFWj8Gy8Q6IRMdNFgKNjuY#3j&eqeB%#RFcc$bBw6a)b?aih|EBp_u7ci7=T%1dQbX zdpic|#U;MxtqK~t+({yjNo3NYqDChzm15P5t&SlA`lq^#6g-t$CqSknC}|BUQ5!lC z(}EH)7>wEi(>4{Lsuqp1d_<Ywu~LHaWAFO_03ZNKL_t)<76oF$q(XtNl2Qvbva2oC z4kLl6KW=k%;_FBec7uYYQXx>30s;aF>8eM8A2zFST_s-Usay*VxGi9CQ|}}P3J)s6 zx!zEAn^q~niI@rnFY0K?a+tTEStN=!ZP7(SK*PM1oRjk$e2#4;WJ*`af+`c!DEUR@ z6FxZM_1q)Mq-J`Bk`%e4sv0R3RJV$e4ONs}D24)hXjc;~d6odCGs;)CrpT=%!3v~e z!8<POT`p<Iukz)HTv^ExHBtoqnRHYUtX8Tme92YAPTDD>H5~~O%r&N}YZTGJ(O}#f zKhxuQgL{9ON$M^3#)O6I5{Z)3%aK$`Y%8olE<hE4SM$7p<|Ry$z~w<G%CXc^yX%P% zuT_BFSZ67xc?F^@S%9h~m&hfP+CrHLxyA~ys;;Q({GkOnkZc1YrDkYJK8*VS&%u-v z(&<tg@fB7fm>9uJMxK`v#7A^g6f8@3xm}JYcX<bZNmc#QrQM?}pKO^{WYiCW6b$`H zE-w#{kM)m?aVp==Gvu7GbTl~2thaS_b=8;V9v^-0txrCA|M{o4|M&mmAMe|@-eyOP z20x7ity3Oz$E-_tp&z4p6My)Fx40Q~bluh^-f3r^XbvRzbdqFZwzC__^oVBdGso5I zZi~i1R*U$d=l#<4+Vr(cCwYU_Z~Xc<q)!RUcI-e1HJ%$I`Ij6|Cvt`J!ITV0T;}8^ zj`IBmu9$Az)brwJp8C@td@?)#xVvkV;0+H?+_`w|t+(FU{vUqL?1U^1e>aPw6rkit z?p;|lfHR@UPr`v`4hEt(EEtRe*;X9HNVww%F0UHR=&2NNsh*B=x*Ddo>0H}PDdPh6 z#<g8*)^y#v+je8>!NbQ7^zuBeZ0pjt&Gy1D1RNX>;o$t55;UFgi{=QkYiG;e1u}0< zCAWExnqXJzT#r>Wt~ER?H?1OTo}@{Kb*ZW0gK)#c!vN+VKko1C9~~QA7#y5_^l0|c z18&~u-RWKZJ>7l%ogIA7oiE!n^Jg?L^)>G_^t760VPLN4elZ7NjHn&9n!q(fp9WwT zh@y=!IS`73j?3>{@wINyjRSJj{%HcNvatNaCbN#2x!J$;Tfez|^X9+vfBoG%m(EU) z^P$AG{r&y*_TI;LnMpDa3g$d+rog<BRV77Hp(bI9)e96e&5^%mTIMus@ENud4Qu<W zBczlGD<}m*i*WLgJ%AQ^iJBDZb$s0Wz?@0%8e|coXJY;CbsKhm;pMN~xq0pEsgF+| z|M=>~3qODL2Os?Sjm|aecke&EXaB*C8#i}#_bo5Y&(R(N!rBX$p7nx5J@KJ+6P?`S zr{-hU5SmO~gG2$eFw19ays!qs7u>J|hw#w#3<a+$(02xj%2K0!U}EEejhhdA>8rnX z`{uPXCytyudF0xaOQ%2h`I!$sS?(X$xMSD815fYXvv-2;NAMLsRzP%}T(f#^cBeSY zN)!Iodp2&{y>0uhul>q5AKsljb@B)|(qFi6=Fk4@{XhHekNH;OXFvPwuYCQBU-{~n z_Uzu$-NgqNxu<|w>RPjUCr)t{N^cYeIBK*!hDg&m?y5J`G%f6~c*Rp*?X1Rd=;n?T z-I=l=8QV2&bZP9mBn5Sl)Qe(av_Y#_F(i2sL$@^CxbfiiAHVg7|NeV#y!o?-llR*i z`k3Fw{V&?BABTByV7;q%Zm~8qzc54BFeVVH^Fas=pU%coqk}I*%w9Tk`r{8jI(_ok z{NyAnJ<DC){cE?3PHf_P1f9L3%k|zltqas=38cHl-S}FGV-C-I5cGTmEt9__999RD zYxt=-wgQm&2D8-wiw_H1MqznHdp_$YbT!{-;5nSO<=NSp2N!Q#yES=b`5unVu^v?) z8X6s2KfY#D-|+h7de8h)Coc%`D4Kcq!g@iO4@GeZGr2~U4uuY5qqR<m4QmLXz_jtJ z#(L+O_mT-cML~+N08xvM0Z2(kMP-}kqQ>N`h>cXXEl3b~n9AKCmf@(tpur^_=FAh? zMoVazn@?&|A+u2}n!kZq#^;=>)D!ASRQpFYg<ajcM{GxAwo{RT)FLPdMx}9!2`_r? z3X+;sNS>4^89LJ^!<i+CCMgY{!U@wFc_j_W-V+KHA+IK4Dl}^mD_VALs;wd=WWu?a zp*5(g3=4vY9^u&Ppgn4dTfvI5NvUHBQW>C{(n`KI^?<{h@``-Lxd2a~=0a6rLR1+o z>(R?xDzrGVyqW-BAQzoKl9LRlZb%3)>J_ERXf#?mGn|8+K{>A)v5AmF#LNNixGT#Y zbxJjN$t2^|pe|}n++3;3uATx&hFQg0CI%}HMaC)n?y97^Ik`7U)C<wYQUsE00z*mV zR7kKV6^h;!GB@d*lE%c&OiGLhAZy$VB2JN95x)@`LcbRzr!?*Bh3uy)l{__x%u)*t z6>c2XEs%kPK$6j^kELMMHsX3c8xlnrlW@`#T^7f=(F<`Bo(hVo8lJ6L_d%IJQW5A; znZyd0tyaohHfc~H?CaQ$<Vs8BO8}{8sI2FV#@v8crww)wZ_)>>Idx(xBHwjB!wEDm zl;V@xqy1g~?SJ)m_iZ2U?1aTP9yN#v7DcRk0IlX$JTRD398!8XQ+xfbpRqnLII>3H zyf(KvTQdMU7+|uiP>JOyT`uht7%9_PmwcmuWqluxduqAlH2>)4{c9%=?B9Oq@J^SJ zCbJQI$Xv1WPLF>$R!F7IBcxC*F&$AvE%jt}0ply@oL~9!=l}Hk?=J8}M&Bq8=k^bc z-L7}P`udxHt+YTOl^*q^FB(9pbFIB$6oo*>j&g4#n*0jR#7$7Ez(vJoGV)j0CNbxG zH4rnA{CHXB+EmS30A4(|uN$1(Y8ytD*NqH3oEf-%dwPnO7|wB<HY)`k%wd?yFuPLM zArSAeadCBn1w%6xVxwNswPLPG+xfOoSklCRJxKE@-MFiXfZ`=i96$2NX206gG|$w` z0t$Ks0|<#p-PWBupa1ep@4fcsbXUEjn{OQU433R0jgHMeo_X}};q3i;vk&jLaTj!V zcUN~0TNcr5Ld=+yB2=LtWlY#?UzZ=&E?q;UVqQ^Xi^FEu-Ui5BFYIobRk`=_Tu(0R zE^n<yD3%LMc0_3Bac-tJ*66m!v$Ib>_v}Cam;d}9{=<Lt{cnGFinoM}jCFN%Gyjzp z{ZGjqR75=~i1JFIRe_SG@S1&UhNqmjv2#BFd!>IV0IEU_#srjEv)F-|xFNxUNHD1v z<FQxx9*sra&7hqc4ZMeu)dEz{FDx@5the!W#E#Fb+y2~3zk2ufl%C-~^5M<%r;oh) zoufbgZvXh2J^K#qKJe7UhHbrlLwreKfj9ASmx`3r;aZDX<h7~zK}>AaL(v@^c;hgv zdY?;xX}7{Cztv}WW<x=;a!(^dTxR$j^0>2{32OJinjJ5!-}U0lf8oKyyO++MIez@3 zOXp5qJ9gyikq>^<!~B2S{sV`1?mIBChIcM@&Mopb34LdkCl0W};e|IB@Wy^t4tht{ zJ^#}B=f3c@dw1`h=e3PTKjQ9*cYku?-PeBhcmM7`c<S)}uYL8)uYC2(2M_M)>E*R} z3`l(79tA>++qNu(o3uiH<32S0dxE64*t&;-wPrw@4C)eUuKE`p)_>N+%vYs=_cthn z^p2$PwVikKYiGH2Yvy}@{N}g6{YS69_TvZKFHq~Qbq|m3``m#;pW%B1d^n@MgE!VJ z^Ss8~G*{L&pVw&Br#hE-uBf}KV_|yw%J~Z?j~+R8^pl4-rWhl&#$aQ7$H>H%k?}RX zy@Napv$R;BWzmOs;9?&S<TYK0A9$l+(q28K<gJ&#)&{j-W7G(YSp`E4w36+2l%1pj ziZspS-4XmqG;~|UOl^*rPh7k;dHM0ZJNlqPy`$DMHoRuz*jn8$z;{C#K{GhPCq;12 zHK8T#Da4ay3*4}%YFQ)nh^*p_%jmWcM5yaSl>|x4XWG$i2#bmai@qA`1Ck+5D<q|R zD2#0yT}x0VK^HG_BNSP{8^Jtx_bo3_R^kpEp<$_^(oI#v0aCbo%m7e>cv5a8AB*NI z8WK<HqJWjjoEfx4;xDvy*-xt>cP1-m#pG1x1?(pna0Q;Xf+{2$j;7ScfT74pnV1)i znh6vb-y_T$jp8sKgl}QBL@HH+fnRcCP9}XNms@EJNN|*56ymrFOzkc<Y^+Wz8E-CN zJCbZrh@qmEQ&e_RC>6*kf;k1>`4Qz}r9AGPCE}ARNuL*@&DLVUlh#b{Mk#P5<kl7& zF)kufXo!VI6$d-iYO$q;%_{!0mI$uPb3r+J`Ju+-{(P|rrmLG2t12Vbb3k5>{HASe zyfLgT9xbCQvmdgcssN`F1x3z(YBKF6Ve-XrawsFoghHspsLDiFE~XZx!phh%#$A2F zQ*hTkUs2rH=4L$V7}WI`-493h!)UB@d<r!-!o|@gNt5#(Gx(A8QE*Zr9SCN>v;!LC zm&n}MFCpk65~l?fEg=>LNn9)F7!~09UH9$|N<1unaB_vlP&3^?2%Gb~^+|iu8e`^N zB&_3Q*Hg6~>9$>!Swd!&RfL>{=Xh$TPv(xIpoRwbZ4N@EvDn6Qx%JtldS|VJvlKi1 z(P=(sVjZ15weJ4z_QgZHhdb<URw*H73XaE80n}NJCQ9s~@d$?t;g=wU;=_+mUp_z8 zzu~#g-a)>mrqg|$64`<TCuE?dRu0QT@X>2Fw7nCpTV&8WNCpvXU%YkWeC_e=U;pNB zcJb+j=HN?Xk?e9vsJffMj2$`(oRx4Zcmx+)oWbgzXDu@P%GY1{+rRr?J%03HfQOWq z+B&+1+Pa5-{N}q4r)&M;Lyx&HK6Z#k>;P+nb(LUd$AaMYLf9M}0C<#ZthgE^pqkPu z_m`_DRV@w6JABe;z%y?HA!3cdTQtyJ8`#jZer?aaN6R<w&fU59XrAwcwevhPlPNA= z*~G@j2{V0NedE7(13Fdaza|T8WPw)#=v!~H<mVO0>MY)^K@OhCCw(SN-rJazkNoM( z-iju~=vic%{`da=-~Z44)Bp7K?|iS;`>=0#yq!y*-8}>Sef<M{O#L2DE6qH(&wuVW zu6OscQ*dtqunznFfNAtNXmm0ckiYr`miN{Qh71M)+6@evEpWY(R}k<a2qqM|7K#ia z<gA=99o9VsqDqj0E(*hCT}4{kxTk$!u>W^|_iz8@zxb{H@*n)yCyyNCt8!i4TpYEh z^05??8jD0s=B4$OLc=V`!m995wW#{ypD0KH!X0^rA8Lqz{MlB00Fn8e=4n!d^Wq3Z zL)gp2F-dzsO%|E|g5(f0x41aVfu_B4aAM16$2WZb#h32fx_auwkrT&1x_<G}dq4W& zd#}IQv1a`azAdo#z{XA6`}zmD;?MU5ScSldY@0a>7FiiJn&PHG;D&I9s=g4Yx<Lf9 z!K3!T@j+rMR<s7?ZA^Uu&o40bWyxs#@C)mo{><lQ9^Srq;Uw=|JbV7k<x}Ub96$Sm z&OaX5xM}}ErHvcbH@bTHdV<|kK${5#W?0%-nn7Ewy}NJh@H1-;Kl9?_hYv5EKXKyN z2dBB?{=@ShzH{^+{1^Xd+uogD`SMF&``RndJ^R$~U<0pt-6s#8Xzr}xYT<S7t;aO7 zEa<k!pk7_0R%;pxL!(E1qNZB+*uYQ_n9=GjgvQszp60iAcO$nvb#vwifBLgO{PuTW zd+n{e*RJb{v#y?z?a%E$^xVEfpWy`oe4~Tw{Es+x^Rn4`TZ7wz<Pvu(%y)LwdBXtr z3tTyW@yL-+c=_P$jq92ZH#&O8!utg}dF_8g-;$hX%-f3#St-(?R6fdQjT9R^a$CN# zm8XG5Jk?`tyj{jqw<2p@YT}BzBF3)9JqWaJsk6auzq~N_==Pl(cP6hrym`GgdtX85 z=^om!ZG8Qf{^513?k+9&EG*Yqwjgr+(*qoGNUP<tN2FxM)Em{pD+&vGfGFXsRsghM zqwy)PB!xVGBx_4>j*7L<$U&<NXlz>>0ZYb%Vx^WDiXGRI8<>WO=E^|5`veMx8EV!6 znAh=3E*F}$@}l)eC<T#XL}kRJzZESpf0@EBsxY*m)DU$>(F9neq_@mm!Npu%l2i~w zMVmyoLNw^s;3jsGf|AOiU?>|%mQ|IOy-OOK)Rb{ewPZDMoI*}=wU#GfDkO=b5ZnmD zp%$7OHri2q*cjWWMv|5=oMOO&0x`^$WI7e#L=ame`@SY^E2T`j1!M(oi5x4@rm2a< zxRuv(i4=Xbie&*LhBK`cMSWW^9b<JzXF`Qe8H*Y`E-5(4gCK4PrvjYmP%$Y<g$keq zs`5-I{6trIpRQgpTd4*e){@v9T=tQa2(iTo$D}=9xUyvAx?~|=rb}I>Dl(h5C1*>O zBCIW?u%KV9=(l5hhp0MLK^Z6vdxPfqK$rGHECQV3JC_VrrByG}{OBpUs6$)R6Dg4) zg{!2(n-xF~Aoo<LeWD}+IY#AJM~e^55`{(r@J8AAh;VDY&Ic%%1BDl19F;5u6&5sC zK^~6brk^aS7U5GQ@T9^n6;n~tqc$0;OfCJ`Nll(yag+-+t`>m_)^skSbD3ICS8qq7 zOCQGK1euqMah75h;qlmRXJ5~?>!+_?eY9nBACmk>na=98ubD$SZPQ5wn^GKgTQo`M z9pHZO!?!qL<Q`7030r%}BqK=h$;*0Qmz|)wHLE#H`qgOI5=FDl@E6+KXRlp8Rcp+B z>o>otvr^njgC1~;WNt@#fcVHL@L&vPw!os*#b`8N?WVkU&z7CLH=nzBn=4w(;CSAi zn+Q&Ex$)HHXP?@ni-|GRUP!uQA?{Nd%uGbSd1#e_Qk0CFX8^=NJHPH8lvD`ZP>&}- zY}K4hv@B4rMOcoHw9r5e1Ny}f%DkkGq8}J4UG>_U!M2IPuKDGz`wy3I-hO!J;iI`Z z#tWZN?_##R%#aBBHCiO2R`6ssLxoXDSNl9bACT9i)8cOzTGbeJop&Ed-Pmj5%>1mS z@`nUVohFy?)o%cR#4L=5r2p=J{`da$OJDxS|M<VXdFeup)q%m0rLIAqp5|idNKfz3 z((>%w><km2nVE&hkLDlTd(3`PXHwMD!6)3iIy)L2`pP3ifcb&V4VlvWOjeJhSWIZG z7AWKs%SrQ0M)8ZevZfgEny#*YYoE{*g*NHgX3Z`Z?LKQohB=)Fm**Yk7Z#p*_Rv55 z{eSY-n?L!3|NdVcJ$kIx!6j%-0aJ?mfud+9_!eHRJ3t{E>LQger)R%S4nK{pxZxW# z3trGExMocxW%#Ex0y2*}1Y73dacj7=#V-b<#ufqDV`+q@B3f0D^*JV;x~HJCdu+>R zzO?<>FZ{~gdpA#=IL1p2r_P^0@#8-`@y4HakB#lzwP*MKLz}kj>gyk!U*@rYuD9#; z2N-el{*bxF4HtD63miEch6Z)(c~Rs)Y#X4afjU!UbRolpk0z)&Qo*+pXJ+|q;BrUz z(4K=Y?tALR$1{(wUAcPV=#ew0PdvDK<)`OPz4OQaZfO1by?giX-G6w)*6qFhLnz>J z16Bvz2FE0pf%xR5R$Dsyx9|JRjswq4KYn=S;)PSkKRkEp$oW%e{^`;G??3$~|9sQ7 z4PScsrB}Z4%JVNgw`N^89`p2pZYj{<!5?);J*+ZmLjb&e`q+cVRE{$?soQW@bG17O ztMwcH>ykRkI(cnidyP+RzV_-nfBeUP^6HO%a{b~}UeV9nB?otWe)oZA_8xqOSNFH+ z{Q`W<ueLNzJM<ufEb+R5rG<_LZysr1n3=wG=KRr*`RL=RM^m?1&Z^b>>SNn^24QS$ zE#D*1O*hL8UQVzy&u*uG7JZteLBhxoMIlnI_Grwjb66zdc+M^QY6~niL|XvD(j>`H z;2%4(MMwm8fyE9Uc4(VjoPT)#_BFmoaQF6PZTb=WTCH=id)>~lHJgUU*K~Idu*WTF zU4T8Xp?#52ph2VfND~{M=G#z`Iav`yT)J5i)$b5B+bamRwF8jo8f#jfl25{fUp@^n zb^_&su!aLyDuwaHk)lk9jAAR<qDILGO;m^Yu26zg(H(<s(~eBWHlI|An!>hh%h^?$ zE2#QqRLgR_t99!+y+F4rSv#U<5m2qmIf8COOB<3wM6=Nbf$#>aQQ8PLv?3?!&$cb% z808%mYQD)?&23DSW|*@qPpHfbE9O#>2N*KRrK%A6R>R83q3n_l^sbizhB+z}KqXU_ z6^&SA64qZ(?51Jo7M$;zBpK?35|xr<nH*|~n+j!^lUHCGv}CkYNo@AX%nfgr29u6S za*$0NA}WPwN<1)R-+TxKiA7V|#&QU)BuzlLkXke$BP9h99=8!w1yt+NorsU}+6r5y zw~*G@D1)LXTZ<F?COK*M;TIi{)Du$D;stVqW!r`(g#=hpQS{WMR)m!qQX2&Wr&2BB zOSR}zCJ|dMe?6rJ*zcB)x=bL#!q!!K4$8H7sMBbJ=zt{a)j-UZS8z$-Nd?!DYm!8{ zUam!rRg0i<lFE5KD7B+dY_6#aBPgn^Y|ARVCV$K)HyI?10>G1Fyh_=ak=IleBOy|u zfM=!1joVBxLzTUbjO2atGH|Th{TwLxVMA4Tv*UOHVzn?|1YNX(PRWj6)gwN2i@45Y z!RYA7$%_AzJ6tLn7#_bpb?nsX^IJC`bPoaQlui2Gf+jV_GBY9?)6rJpl<iOd^tD=h z|M2)Gy9wD0%O{t_u4|Btgf;6h*McwcR4T%R#&eb&+PTy9&b{krpL%-FQ-^j#S3|=w z94R%+Ye=}e9!6P8$q)3-HV5E@)&-(D<#@Df0<qNFTYu#XFP=U9?YWspJ&nHhy1r%b z=tlb+Z@v4};Y~KRN(MevL9Rxi?8Wk`+X9&OFcVDlR4|PeXaO>E=rM?~BgHqs6McxN z6yu~?qWtMBnUWbKCLIH{(Sd=v+Q9t>%lGar-o5{5W_DU*nWwt7KE>rzDhxzM0H@BV zcTpPv>To+@HxLZ^&91m>o}|t;ie}x~SFBU*TwFC&>6Baz(>x8R31EqD*D(+I`mcWD z<u8BnPrm!TKlqpb^4ghmwMI|9f26CYr?Zn)fbP!Dj_#h$wxz*^#fAAfZYf`wot>Mb z^mw}M0p^&iqMc_0I=Ll*Tcf!}f);SeoH>VHUVtqe)$PutMc$ghY=_4dc!k>>@3q&E zRXgPrx}?hPlYpWp2RM0``+{(tPp*60cm{s1QLlaNt1o~4#TWmB-~OHJkM63aEm9=1 zr9X622AB8Em?;+90<7?$-2RKeyeO=1m{P;VlAP89AT~=Qu<}rM1$kRkv9Sg@7-DOa zCyCKUZcgAoD{ELIC@e;BA5&YcvwwKQ3tzB%3U1#xck0Bc;~!tTbm7R`ZykC2C$*7@ zZM*jD-FtA$_TBvhBbej?c&6cqV-Cw2HHxNe5()XMIT{7^ysaL37%hPK2tr_u2SRNz zApWYVEcq}9d3}A2HwAFFReS&Dt$Vg_+p{?L_{OzMr%ry%w+n7wz53J3ufFrcAJ-=) zcJA7{Z~uWEJ9i8Z4)Yudcb~8@z-tb$pvhy~@*?kUR4?*UgF{<(?q6PbICb^H>0=+A zJn`}6E9d{<_y5fw{Qkcl-Z1{c=bocyU;e`9w`>{Vdlz#I8CD|MDNw|0pU|r-ZS0ue za#|6vQ`v9?)Fo`KRbfyEb3KmL$!BTXmv2tZ{pj^KzVn^$|LBLW-@J6aw%k$c9vIvH z%x+$?u>bjC)&;uy78cqb$*5Ma_-A|45|e4x6&hXjxyO&Lp1*SJ$j4_+oS43TLy_v} z>Ka);KE8Q)d_z~?$a1}Jp4%~&JM4CS1zGOOVKqa80Jr6`(TrtF0Rrlu3s_?fqv2*F zN>H^}^J=502U*^xhZgMR3$sh}GxzS?oV<SJ@!iSVqx*ClAM)*)SU0w2^XTZNM)&Yy zTQ|#0GfNHgz>VqUj&_R$eXoBOLhU86F((QU7K`AM%YCifi2%a}7#sinbobRv<H=!j zTbU;*HPP5uH6?@y1aKL0?NKJ%%4k-#A_O1ORR(n%6~R=&)=ePzp^;<iw6)zpp$-X} zb|JOdnv>|QTo6-Ao|wYEr|5W!+TymNp+t@{U_?&`&nTnbupaRqOCCuMdW4y9#ovON zQ00R4Tk^W#MF&wp#|jWBjw#hjm5K*d!NNpy$@M5NG{zQ)63bCC5RB~QLatm2l2Jk2 zMn%O|Vm6Q=1@*4U@}#s-;3VxqN<PliTUJ%(4Dn(p0yH8jRVPC%R77O4HMRj(MkRZN zn3d#Qa8NxP6;!tssZbRvM_R*+?((*{^Imp2r{pT_@DMc>j09A{Dgl!iO)^zLq0Bvv zlJ0884gJxi&>)fOP6Th@q@Jc2FcB&_fFvl<YKm5%J3=CHkodmsI2QyHbxSHFKfZdN znGA-Kz07oSB7;Y5X`2ZqTC`|#nJ`!qj>jli&4{6$KAy^<jvm@>k*Q3ILjfroZrVyt zl`3Hu6DrA5c8m=wajdGWd6<>8NzX5la?>ru#jZl!8<7J?ges`e1=oQI;)RO)NrV3) zhpIspgp^teJJ(^U%W?y$oSZ-;sx2MmlA+YRH29o_hNLap6(Q^e&K4t}%%TCxV!0=- zr<|uDMD+NbN0<b$uGa&y<&2ZJh;i--#ik{8hQFi>FuGfExu<8K*538@JMVw(D+k?{ z+xNjKH!ad40(a$_RM;*XO<uVC=)Dh4v=40W9US9sd_BjYQ)JGubj9CX3Z7XRj-AlT zQ`7?UC{ogCnN`S{z$`cFE|%Gt001BWNkl<Z^H;8&t<B!~*0=tno-VU1g?{1}##40L zC4FBoM|DO9)0^Vuq#S_nEV?ulI>nsRX`7m-Q?76P%9nrdpZ%NJ=?A_2W1Knn^^fq} z@%O*~+JEvl{*vyWjR~bB3Herq&}yR;S#)&;b^%PKOixKT(Ub2+Nwta(5gxZ8bji$0 z1;<-wCrHvEN~%yGX!I+ot5%yBXqy;lEY^k|PuK20oV)jM=HbIRF4Qk_^Ku(E?{_dF z{oqOT8HWhd`;0N2vfKEeDY|aVAYj^T*ZzERs+qYUc3!JVp=PZ*5Gd+$he!NTr3t+T zF9UIz_tNt!dTy8bt-tzLzxl1-_{m#u|J(oJ-~9aj51C**<|cvuq3)iZj*hN6_X^Z` z!l1jWx1I07%PHoj3rnmQa6Mm%`Rd&4!VI?fmL0ajbU|a76L0P?sJC}^^>oyi9?d*Z zBeWF2yZp2qrcoweNGvGGSph^-3~4x9yDAA#n)Mt94OnWMnbC@ct}|=0O+bod<IFOR zT8n`8H(-=Csx4wzr|8!>H4%)~0a?Wb5yDAaGPLalxT=}CJL^}d@qwy;xDll&Rzo~V zP=9KvRBI{3xYn_fqsA<6nO7AwYF+)qTb}*=wr4)~^}Ba(oj-f>*zr%UojZO0-M7xa z^LnkncgL>XyY@f5dF$@J;Wf)`U9<B%F`<dLLWnB#YjS5{M=fhE(Rq2xh|&uV@dF3i zc-~wR=9)E<D&s?ngrt>}DM_xz%LSM-FK{Wn-nDM)?#(;)e(`Iww{A|JK6T>6iIcZ3 zojv}OH;%vcqx#_B_MJOe%h<MK_rTahz0u7x3w*Ue$6!T)10N$t!D?&k8Q-*j!;XVr z_{LwEn!0-G*e9oseK>XT%=iD@kG}tJzSlj}{rq!Jf8{H$eDTXK?cTesudlX%js-Q5 zaYCHsw%$@<Z)CwYRMU9=EDV_8syU;s!@lh@bz}OCH-7Tn@BQGl*Wa4Fc)eERIfB9A z9bede@R>aapI$q$X}Q4{|LU^~3(GU8BnJ9agPwI*-~$eIJ`lqP39j){hGRcx>E`jZ zNqy|1bFeYGb!5$^@$rq_eM5ZDgyjh0!z&eZnOv^eLk+ZCPUD=Cb{>*;ObrH-MwSqI zE``1mT?3u>Lg*b9)?m6!14gpy4-FxnIiZVqO=P1!$5P9~sp~f<&)>Oyz4qv_#!_d0 z`}oGu@l9i_S@aLK*E$yM-3N&3$q%_;oobrg3wIFZHi~R(err!vXNjW2ktN?}DB^<% z+%G_mq_hfy!*sM*vZT6gY)e}e9_<Wjt6`*HCIoP-M^L0vsuB<vDd{mg8OY)#4d$9g zK2B<Z#KyQP=72TN9B_ZI?#Bq}w#G|`r%Zb!**3JKL~E+JaHb*_<F+D^$f@7}Rpq?- zoXHqH2El{ld4>rQmWG_VO4(I7IyIB3mrYQ`L~*>)>1{U?wz1m6nv1)Y3frYT4*(m$ z-isx$vsW;a$U^y$D1>v%07*Hez_l!y=A_;sGLYPXWNZj*HTpCCK``0#g6HsZsMS1^ zR1(SP!ICJ=Y$$Fm*bLPS$k8h8HbJZHUkQ>5tt|wZ>PAvYkE`&eK{sEN89j82W3<Pb zswfgdXUEjgd}l>HhOT60AkoUTM2?Y3QA@aFAVCmHTvuQiWpT)7LcxSdBr)-Agg7P9 zA*usBR#5p*vMwn)CJukG%JRaPNC=K|rNC0=6-6;4!1?7o8w;6W8Ix2OWXDFuu@-u+ zfLSAg`%r_0;CBI2DRU&KwT(oqpp1xFJRt^*m#7-u4ZtErTY@Hol1l7=Fmxpg+LM_I z+p7-BbJ3G%OBoSmw`4o7NZeFZ^=6u3Ra68G#>g8RV9vH3%0#1huE^r=c){I#DnLq< zjOesr9ePMP6jH`7j+l{bSVK_qz6$uXe^5`yl_(ZX+1BkPtD)d(Y)q=CGhW6CXDvF7 z)77^cm&SBr3B^SG<jm$iyt2Qix1TRRz4Pt|OSS*C&w0^eI8A0Wrp$nqMb?>yajc;8 zIsU)(lb=mLm>J!*q0U{MfP5#HIg+GAGd+@qBxj7Nvg5+WOxR?JYiNA?eR=xog;TZO zwr~B$uM!<vqpSOVYLBc<578I~e{j_d2KBZP-FUHPUN|WYB!$N-2G!-y&wcip;nCiQ z_iqi4Y-;17be>M{AARd5A52b7Z(JANL*RO8jY)f}MDu2w!7MXs;Y!9SiZ0nw9wMp2 zs#F8}2}TNYg~qC)gvoUosK^Rw`NfQZb51)kHeo6QJ^b(7Fwr@?P<t?4yL*4}!6V+* zKfTQD-OS9Gq3ErK^r+^pilOWFJ9pI|>J}Tj8iS~&(>0iE)Nq0>-`qc0mJi_l$3q(k z&TZpMW?Xul;muuNdgY5>|H_vyU%C3$>u<jG)1MqUe(E7#M_*W~^>nv)_49^;4(=%E z?9yulxR~16+1K0SBLmek%bW`5xp2uWRMQ>1<HWuj$k60-@Jov`kM3UQ@~Yly#|!s( zGFz{mw=W_PB0U12{lWHjb6GVNlxg2F7T)uk5MGAS;0p`Hsofvw29lDu%&U~O3vr#5 zq%&&!3BXIajH$r)$cafq6da4B8&;$gef=3lz97jlMLVAMY~7n6LHAf;HW3|Pe6p#Q z_|DBf4p;gmrrDQKn1K@mbP#VXu+)}&2G$*Ve*Ed@KKt<At;^?6ojUsQxpODZe)RLR z@Bh3uIJ$1fp1u1HZQH(QXk?UCPTnBEY6;#jVAM3V%??T`SbI=SnTow$p2LMENpeMK zg3nBqnjdZ$fCknIj+&+8iEx1NZho;g%}Q#mYjoZAFKpQM;^$wvue%<OpFVly!ufNj z-~ajPpM6m4?H%2`b??3dym@hSY%R~D%yM@=H<Re5dY%Di<%e4*mLJbCjqe_r*zwZ( z9WQ_RSMS}vcJb`-6URQfc>c_ruYLID58thI{}+1>?0w~{FMZ?duRQ(Kf$?FUme(RL z-;&e=6<R2ehiFsNa8PghsC9Me{SVi#KYs1UZ~f7C{^Z9$e&^og&DwJ3a_`W(eP7sn z@abLqo*o|G*w)cAvrv1;`}A1bQeYTOJQ$$&4e;uj&aTddna9_!T|0W@!xNu;JU4ln zdAZ(tF|lcUV)O9Wrp~_cTBC1%sWHFI+Xs=?4}}7!|2~v_bwFLAe=-8YLhhs5f^R*g z{({MXQb%ZQhleV>CnciZ(%_uu<)!@Z>?D-)5ANT*J$d!cjmx!%w`;XIUP#zIzGie{ z!_e5~uHNxly?=hOF~3N->`20t-S!;<#-3@ugbc$n<u&<E#oVzUNb2^BVvgrx#9jv; z#<1R*idv3x;a)t3w3JHJh7BtnKKezKdU8d|w^Br}*#ZO<6O!<glN*tih%G26Rj5hP ziY&`8j~M928}4ecHVG6}cw9tbctMQxP%5h8kla84D^U&ci)NV#6OHw_715j4+#%6c z@XD%rIr2k<<!lO4;$;Q5W5<cuQd1{iB%InGxkd|k2SBlcy24$Nu;VQEvcpo@I0)J> zj4lSQ%Uh*{7d`2A1#VhpAz>;-j7a>&s_|mAq&Q0EL>E?`$y3eSZaaExETf%v7`Wu6 zQ*u{aq2<b?)O?e%vN=Z@Id>zPbVhR?yl7^ai=lJGm436K9tedLW9p<Pr;Hjild+0* zB??1p{OIBpQ&AvY)()et+--z%^2juV@fqDHTyIvFTnY!aSWjCUYN=+0<X@&P`4O5@ z)Ddx9i4--8Wen$%CyGOy4v|E#T@^-DaBAESRI^s(B2F=mxJ62!j2M(V5PGbKt#6cP zGKI!U2^^^f(nvn;DYl4vlnG`ldZ`wSigc6|#zT=JW?IB|OrBR*R!uMmmKyEm3nyG4 zYEC8qq_Pz=Le;$0n>CtPk+lF6I!%S^MIu1s*npB)xjr42%7WC8m3UBL0LpBWimZ@| zhA`a*wo*{uqKt)bObpBfO=c6Lw1+sguxce!7HMqLP8(^3u2L!4N`)X0<=FCHzy4Yo z;N($HM=o)hgDZEs{Gs1k&JQ_4>Vs`eKk6MlwT`||j-Gz_ur}0RGG@)dGqc5ck6+%= zDV!M*M<xD#^rIhh*?44p<3f8wUm!<0XJ(kfEbNfvqi9C4iWoNF6#<1;QwS2W{9EKc z<>|YVb5oaI_}tU`_ieGsU_7MQK(P)+EN<lv;`(cy(#b1kCFG6s*@B;j$P1D`=ev1h z-_wWpz53?ah56}*-dfi=FfxAY;^lYW`}u~y@cCpWm~}Z5Hw_-RSXWDxl2pN{l%fY^ zvi(Ll%N1o-gQYO4iXEY>VU-$slTu*8N4HS1V@Lx8R6ck$@LW-3YAoV9r^Ve3ZgZ}U z4>0)p_`bmXN6QcS;NbM!!`V5mzRu}Me9l$*04F!1hlxM)Z~Dncl5Wb!Gk<;@BLcY* z(cP#AfRlHP5}5X1fioq%m5#Gzkh~0UetBtP-MZiYkAM3=_-ns?_x{6UCr`Zd_B$WG z_rbYy=Vxx+*5y^6hUn_*=^O0r>F@06Z|9AJ{MV>f8+j`M7CJSr2xqUl*r=Jq^5Vh* zUsB|a{{6k(%)Vx|B0w|h@*gZHa13@P88lBm>iTs^b~#UX6F7(W6!09mX58$lnu;*9 zi_m;ao3wwL8rrJnqMl2<+5xpoA<Kjlgv`U&6xfYgbQC_h2h!>6hg^3LNs9vZk_d|) z0{UknLd%94NQvpbtQecBrm`}QIi3QSS4>zCv=vNyg`VO;WEK|MHG^q%4y@br)cU<o zf8pW7`<Kt3K6>=yi)T(=|LC3TAHMZkU-#CXyLRt+YRk@j10(CX4}~$q1YXTnBWaNa zi!3T&7<I?g2&&#z&F;*+H;rdM?5%zrCUwV?CVujV3-?;ev3Er9MgVom-0b|EW>WS3 z(RELMe%&)Ke(B!5I~OmWJ$3ZRxpSv(ojUQ>v7f)y**>~{<E}jicJDv9X8rc=-hsKr z`V1dDzysakz<mKr%+hChxqqFdf=vfLyZPV?Uwi!U?q!;K;-mAY8H1Nke*F9YpMUh< zZP~H;D=&ZH8{hcK^PhQY{f6GzS>0B^G+upUYoZ<9>cq<z@BjGqH^2M6KYR17_wP>L z<J~E>?vZr|zqaqdGrRU58XH@~JNy+TZrPa8(kfxldWdxgrS7iA^4z0a*Uz6g^5Mzj zNAF&}s`Z*ifBV?>@ikjUCf4_K4b>W5+;K3+te5W*VBO-#d{YrssGt#UMuXlyz{3Sl z)z4}&KR|pjmK_2*iH=e5`O%@Lv;fSKnaK1VH`!>wBgG)6ANbBJUnXrVJ%0RP>h{#- zsmaTW_wVUBf_hJFWX(9AQ5@gU(>u&7Fj>Q8@tcnuYSgtY>5GGSWkU@LYap`BjUDI) zK+$kUlt)U8T3OeiK~%XSqy;0j%UpLnYwa}7*0~@fqTfTR`lzDyiWJaF?b&7xS(#9n zR8n*8zb`@=kGc;<HxYBg8`^!O-jsw<qovtVK&+rfD6x;*OA2LJRc8k*f+<Od*dZCm z*(Q@Ag9SCuQLZ$ojtVN(NUm;6dNXED&&wI4Qf!4PoCsXsM6$NAOmk8QotU^1s%SSU zi@R}L3ArZ&+c+u&9UKuxcd10O9w-EIT?tbZa;G$~<wxeET4U8j^FpekDcMg2SML}n zl9QkWOe|?QL&vfss02hn%ew74A*v2DPbF!xw(*L<ZZ~cs-L?hNtI>_b%*+Q`?oNa` z&0R4+b7L}Zdd*`&14Ys*MjOSLi4<dInRlgk3qf#$nF=qufXZdR+zaKIh%lCNSrJ^; zc};m0oB**6xogp0ZZ!!|$ds8_=-C_+%NaC~ptz?6EB1KUHDD(S#(bz~9GeDrG&-S> zCVHg+ys#lzYJw+`$ko<~O)QDEPEoiu7c)-+B<GURvZ@L>sDnykTvZAXonm~+BA`u{ z8>@xc7;WbVK*fDm6%e*@%^BSY6|p3+5<LMZw7?iCvk~C|8a7n`byw&7Vvso9;qa^w zx7s}wG?y_XnTX`!m@Fz~l8EHVk{CfY@NFY#q^n$2@3bf6O+%>|!mCTVlZ8=EKGYCD z9$6DOFH#e9fadgtvqC!`;}%j|9iXi`%MY^}0l6!>tGDmcm2(#^UOjwZL*B;1j9RRO z9fc1SZp$pq&bGbr<Db>K28Ku1EiKwTu>uN9o;)_Qro*)*OH!r469bz_B1VB31K&qq zzIyd+ZT`+*`pf@^&Q8tyq>apbDQZZ;lRYUR*9jl(*BNn^ycxlsx#7R1(injf_tx2Y z<2SzX<=0;Oc=qxAM$aH2?C%@Cz1;ErKYQ)B{=(;z;zHEh5*d*m>Z%r`%$JC-Zp#pf zLSe&yFStO`X?{aXgrG17mqlHrf*OQM(9DiH#lsTSLm<hN^>nZaH4QHdun^+eJI$>m zu?}Y6Lv3S2-AlD@u46u$t4%-V{(^-^++4tS5V)aQ6K=gxjv0fl`7(3S6=U;W3S75_ zp^pWh;8D{xX<SgwAA_Iq!i<44d&Y!@2g65=X>a500DQg<-5uSX&pi9g3(r5#rT$0v zA6~k2_40)akEW+@T)Y1LAO7&x)eH5W!S23(zJtgj5f4Xb+QYfG=B5l5Jprya!|_(V zg{9e9o=Jba$jbs2W`6D0e~qi<HXb!S)UeeIO=FnJhMJ_X%YVJcQL}3`MKDpxb*+(I zt<H=GEw*+BS&grzKxBGl9Of^CP<^Vwj5>*Hzrj_iVHM5|1p#3)-9m*fm$G=wFjeN5 zMc70%o5G5wz$OxX3ypv#MaBdwGwK6Ptt?kTpFhyG{e}5u&G%}Jde_*F1Ec%)KR5m8 z_T}>@P9Fd0?5SfHKK$sy2cOjXht_Q0vv1#_?R)kPjZ82J<jVpqN-_~AU>Xpy9U3;~ zrhJnRVzQBAHXbP8xkwa<41-6Z;Z6<Egi^C<9qOnEVu!sYUOS=HmX6->JqJejA9!x| z(cNno&zw1V<lLEKx364&=fe4Se)z-2+I6fH?Adp4%a*OY1e5#Z`IO_rf^I9Ios8`T zjTucP>s=#Tb`9@2@a)pu<2#dA&z#~L0iRsDeD+`bvw!<9e(zrotsnW)7hm{|-}u#U ze&b8sUH!{^U!c8f>U!-v-~E&CeeX}+`pLVGZa>s}2m6M0JpJ<i!_RKrePD2OZLPg$ zc429HLHFob$14(A^H^Hw)G}v{CuMF<UVZ1tCnt}5`0(oG+Wc&--sl)wJI*uwYqxfF zk1sWP7ngbGD4z%5z-WVtvJR)ZgA3OcI)#)7SyZ(;15HSeFdJKKp)QU<@Ih-Uf2^X% zBXF^yCk*Dvd1J*Qci-H<edp%Yo0Aup?@zI|!K)kF2ZtusZWtNc(l@krx!yCs*fGDv zyAL#`af2vgf(2!4S!c?U+|i;4)@<zu0G5m{wkP-1ywU0aNqZzP>u@7D&~n)bvTC<U zkl8-v+QU$HEkJ3u+8%OshG-<CS{O6^shEt2BJm&<tp^&_fJ~CXq}8#(;st#INH{Z0 z`_#5{G*(O$MgnQNqC&Tt>GfhFgQH9g6xWI$&WoCwbgV?k1#DC)j5%>7L35=FR9!9h zASbRB)QZ#+Fp(R!-fPjeT!A57=8(GHD5gBgh8oc{L5oZ1xgZ{`NKsx^Jtp@m_bqao zw*l3ps)-=q6EQEN6FQVsa9EyK@QyTzs57ZBYQp=jsH&-Rdg8hU<&ZqNRWIi_E9Zo0 zxEb0)Qy>*GxtYk!wmx1;=FG<+mPvcjkr_Gq;3L7=F=w0FD-r%gvXrZEqEW&T&AB<) z%4E4*)Rk>pAd)WcnG76STG}~EY${K%m%)SSVt0XOUYCZ1NM)S`!O^ZVdR=w8Kuder z`;r%FS51^uaD}<)TvdXV+)va$Um><7H9YwuYv_&unnRgPt~oK53upZ&hPuloM#PI@ z+=z(!RbL?`yz^V?G*)iJ2nm{NZb|f(<gipOX)Os;Az3UEJr&?MpOASZ#Y)O@oRlcA zAw^c|ZLyq~4WWQfKLLe&1iL!uQK6~vQ5j4<X_HAl30mR1JJBh2hOCY5k_bvPQ$PFK z3dETcNw*9HjXLS)G>vCn_3&zUPv7*^+_95q4({KOCe-d`G{IKWGqmgALCADoq?rv@ zY|fm$dg|oG?vVrC-9vMF&jD8STr1O_V9qwk$r<}2w;h4L3+Ht1xn@D~Qf_O;u{eGG z+L^{c$2WiFt5WJ7po8;!KN~eM?M0^6hmF@{inAWqOWBg_1=G|G=m-^6&j*7?>#JXV zsowbyA3na@JGy?ESAca7Gqrv5t)FqvaCfJj5u0YROg56tEz@04V#%z<N{em9b?;f% zRb{0*1y8PAXz}7Ua?>_4UAf3^fI^|u+GRTI@asd$x=+IZ5za58fVx!^1CvLYceC`m z;-U++gaeHsqBqxdEf06KZ5U?O-9N_%*k@}qv$e;M=U6V7o>`b%us79#=c>M5nXb#( z%qJ-@4s_KL#~3)w)phL=<9dEyFAZd5=x!O+k`Fe|!$ZA<BYe_B(8b4ELTm3H7}$Go z|KX<&qQ0YR`7ivHZ~gv1{pUaX*}HeHUw)*E!F+F>%iy?yRcjI^*q8M1Ib2z(_xC*W z;xm8!um5kK`|Q&*vvWKgK$L*$o_PF3id_SF&e1h<(E<ozA{u}g^%hBi5b+E0OmLW4 zS|r8I6NdAnoJAcZqM-*2Oc`fIS1uojx>W>I5lf1aY~Yu6HE~=uuBdDXgiIsuOCLBq zXT~cTU0k(wJwqtsHZ512^hQTpV^9RO!*i9GzhHv^acr?$*JVdh;NmmT`L;&Adu-dm zmv$Zg!tC_JOT6jth*k<FkAFCM<ek@hx;F0Extq5D?A$*vzJYt-btA$ektEq5v^5v( zn;~=EriyY~jk83_%C@!4m^L`oo4PweP`@+6ruFnBN4MJ2>>S?mHP6vayGQwQ!R*}Q z$*C)6P8~mU;^_S=7mmOFC&%CTWA3WjzGKghJ^MFq**!G2X0g3{j(ZAFgHMEr12gYC zXsa>48*RPAYj?f0dGF_6`PQvllNZkL&Bc$eTs-^jfA{7e{f|Fbw`KjBv9<N?zJL8c ze)pgK{=d3+<2H8()cQuZJoUo<r=R0h2t&i8j215SqiSJsR%1X5Od8k>9&SA8?c!A& z^OM)O>*3=Q$3MJ#<x-805pqp_aE;#Ww`LQMO0ZVU3NP;$SXf|cX%Ql)>j(kCRAg<m zs}mI(+cFZU5M-l7h6{V3wf|XSr}Y&VJ7j3Mp`l)1=&bYAis_mAH?%Hr<I>!{TP(OO z*Sl(cBSXCVU}9t6;3z{u-%8MPN!%Bp-yMv~uvUNc0SE5OAlH2>X3Ks`u)rN4=AdlZ z*fOrNfKyQuU3m^jIC$1Sjxa*ZG?w)2o5nMHwATIP1tlA1w25^XhS`$tslYc=p#kp& z(;n2~oJx=aA=+r#nltWM4qZty(zz$c2QLa08j}r1IWQUwzhkp=)$Wp7Rdz<zq+To$ z%9x;5%u<RGjp8sVlFH&nvYwTv8Q2*u^JYJTmSi9nTwlfMV5HzlS{S2v*xXBZHBbUb z;J|gfRo#RLl-R74oaK5=FgDqA1*yDTC`v*FX$5?a%*%ok<w%O#lD-m=O6H4vkK-qC z@^BeHXmdR!ZOKkEHK$lPCnPy5tjx)MEqPH^P}HPKf8NHdrEVh;Dg~-R&<a7^_Z^cA z<1_9}UX_#u-w&NGsvHs5=;eZ8C3mF)t6=hKz$cdzFLiq~W^Oq=8F6&8u*(2*Rx?0? zK}#|ez;GNN`NHNJa=Lhy1W2GLuWdjZC`MSch!G>l7%*j^KuU?@!zNTJyd+gEBzTpf z`ie~Rs={sA9F!C-&|y(YF6+<AmItafP03`GRqQnZ1HteGvr;V>&7}<LUWt%?PYaSH zGwdpk<tS@*Fq-Iv_Ba64N@E9%Z^+Gl*dGP584C1(%Z8J2u@u0;W<Zv@$yrfD)j3I2 zcu7}Yi1w=BK!2i&B<}?c>WU0ic%JNJj?++10hu{L6Gv5_R|{&V;&!32r@QygV*9aU zCl`O~W!EmYE3%(;+k;Gl=|WP{XtQ^vzxL)koXd}|+g$IkH(E0_;B3Us#R-mkWihf- z6rEv_q+Y!f!tW@qAlXSMh<Z(Ldb@LL?)H^ezVhszoohI^)Eo?bay)qFK1!qMv-Sz1 zNr+qwupFP4C1(&<Ku!wEg6i6#1KW4*+H~^VO|HLj@vu>EbPWt0J8}BdsY_2E-0Ub9 zL6d86qASkLMU`xmL`L&sGN06$q7u$23F*;LHHU_BB(V(wk%G#s7`f3<U?u-eSVaD8 zP(<;FaDhCRDyuuus;Q`gRs8#VoK90`de27!YCXMe1HH8+)(qOZ2s$r#pP8>co>_j( zo!&ExGkRm6y#;{5!#qOE0koWdx^3OMUsve4+SyP*{4R2X$cE<P8Yi;N#_^gk+w`9M z0GJ6aEX{G|zqs^xdF}djf9H4q_U!cBl?#`TA3t{H%$ZA9uin3-Z!;{+^Jal|#zRkE z??7MQnu)Ou8#Zp+v19kX-J@f}-25;-&4q0|vni|mW2eBj9%E+XVdMUtr5Ydd)SMiT zc<9=~Vz)tPc>{`OM2kzaT-Ro*rj?I8sUe{;Y7aI9VD_Q~3~MA@3yGA8q_*3ixuAU{ z?2$$_dCeuH$rLNo3IzeR8J*PF@g8OJS}0AYT|`W)+ZGz8_{R|;m^V5^))YuOOkoK= zLS~MF_H)Gyk#<%v=ZF|nosQw{dq1;x|FhGN?p(Wc`t<RS&zw4T<@oU{M^4mw`iD1f z-@WhPir*|b001BWNkl<Z&OHYvCf2crx5xmYJ9R}_uF1AFQ(fRKQxolyxS0`6F_CSH zC&NmM79k2@hG|}E0;t)Ryk%ahWszlu=rrMO^pCIKw|3*6FTDIK4{lw%aOUXg6CYo> zeBt;zZykU4?OOlH+AZ65?mM_+`|gSHb?sf9^YhEx!@_OgrcST@V<ta8%ZFt;2FEr% zzjo7$FMav(gFBZlo;m(8uM9kL?cz!9sk(CEcD=8E&kL{YKX`ce{-^tf$CuhW^sWS6 zu)&yRZ_pKUm08B<thY6~I_BqRrfyvO;K-39pL}@#;yK+f&}h^L#>OT#jIP<*!}|p~ z2Nsr5(qIi)ou}R;qd=l$kE)2K>90|IDNF&Pa|thW8x86^0;@nGr(m+Ngt%~iqXE7x zusX)=ILk}3(~s}mn7lT1{Zj4TRBisTp2g|u8yjCYx^64?3$&SUEL+Ubqc%qTMS&XL zb{h)2lC0Sc5@w11k!d$Bkf8Lg{Un$aaB;;D7Ov3tXHaXs4Q@j)RDwd&ugu|)8L1M{ zBYRQ_%a#Pptm0tH=uyJsDs=$ao#4|b2?gUt*@?!XXwC<eah#ojT!S?yY7}0N^tfMi zT^Rb-J))Z%LaC`pX(tS2E9Hs;!8Ybla5bm55(+^PE1Ju^E{Y+bC4wpiA!uJ|lNl-? zMH8c*xGgZ00+CIwMJ|QpWaT*^a;sYxG^K^+3{+@?7!Vm-l!}>VP=+sxCZ#O6Ns)wb zMV%9k*~$SJnLtvK<DH-F++w<ynP`xB!X|IrD#EL<Ry2^SUJ=xS;c`vViBKs}#XFMw z$fzSZM#mj11(sEvrCf)ec#I4P$+`x3e&i9UkWo#^@J@C@A{Ny^Digfs<_eDOo>gLC zyOrc1)nwNTsfs{L9ZpOz3Q*KQa-)`5MlW{Wq%#MZYl&dBa@Lwx^-d^927IX!50Zfw z4J0M8kn<xgf{R!sN?veL7b5orF;Q~e;%4=tXr(60L0f54$dt&xRAmK&8uaLk2Ygc< zDw0^igB8dv90QqI4k|N>Y+E%sQYbMi!IYOnrGSJ|q{nT^XcHPj*@ISyRy3DdMYgct zO1z*Y9EFOyqUt;wL?YUW4+ZZqP7&;EN|O+suZheNO5bDa<HGFm6K6Qtg=KRK)1(8H z!zg&Nj&?JgR_H9d?bRQ>#g(YR;R!DKF|}gKBt3c(RN&A_V5LA5vy34%!w6znLc%UI za_<3GY1$XAT|Qk~dh}QS@~?IJ$Fg-+&h<8(_P923`4axTVrqjzHOJcIc&M@&aG@ZQ z6xhMQ%Z71et*^7~r5B$&b^MQJr|<Q5bmLb4!0_#x3$MQR=2HiM$1bSZ`IX6_r<|Gy zfxQylToJ~sue2|@l8TN>H7LocDwi9Wb6sicJd*;D=_z>_B9^Q~DGdQ+Vl|j>w2dbM zsGkEZI7z$oL-MO{tQYVke_vN^te>vrsec|R?qQxXH_w0WHCW&s|Gda;o{^__{c|6; z?v>GqXNr#w-NwRVm1frH#ScyH*bj6@k2UK%EoPxuFH19=E<^K0M$J?gmLJW}GJ)T+ zbNlw)JL`4bmcXhSmw|1nsB470gB=g?mZ>}wzS;TZ8Ls5|xxdcFxrC{OE#Agx>lV8H zXy(}3#F*I}Hz2TgGC|Z661@AK7tqn_woX1c*TH8M8udj!NN@goP(ldNs#tka=(Hz5 z^4**k5(g19skNmCt&Ug%sJWaiq=7J$NGeK96FFh*$YJ7QS{>)<D1oJ27@I+vcRs6B zB;=Z`hKGGv=%6g+(qdb?^TQytS%zq!xaj5(q*kDr`x9WW<>~Y}?#!?AQvH$5yI<J0 z|1&S^y?R$pA3wrN_wQaj_p>v{-u-_2$cBx(_a4}>ec!~!&0G>+;2CwkKq#$lR)$cn zPZj8Kca0MT%j^nc&4Nx*y=J!I>YBeqQDq1rHNo=$+sXkK>)U1-IFjw|8QuES#O7yS z_}aq<cg~$Zb^OGUt7p&LIDX{Dk@w!}?iyRaWyhX<J9i&kyJ2&qyMvod7)@AU8AJzP z9*Sq)Jg;@5j=qsShhErw_=N}e@9>$2ix)0#*}Qevo;{-@!wfrKmN3V9R){w7YUoWB zdP1Yl2R4@%W^Ybj;UR+KM?b!P;aqK&y`ihtKRz_RaeUpTzJW2`sljUtc*tgHp5-|l z*9fywW<6vbtC;YNON^ib6q1$%V(+TetoaZqb_Y63J*|)mK}omvP}itmZZsA<x%|I0 zJM-w)otxKg-nht@M7ZsNmmMr~_s-_+6KgjQ4vf`1`&i_{H@<AB*sJ$6j+LQFdbOwW zM1lsNf+ywb9rhq$MAokp1!U!hd1Q)Er#b}h_kst}SunlPGG^YxFcmJSnr=;CT$?-Q z9U^vQF*oFuTVqEeY4`;7{0{T>Q+$)kkTmpTEp8+4(`_Y{Nt!+mVNSyZ_Iw4YjG+#} z#mH4nt+eu|%Uo?)xk+XY6`EGX1y#|hLTZ&#ODo{LMHMavTCi*^*r+JAU*6d0srp>4 zuNb>#p!-wt%A87B#%z{PsA|E+kcp<zw7RX5ZYreQvNhakLS}%Z-(=MGc!&suV&gWN zb4NJ66!It<S)rae77=k<K|&7ZVgn+ux~&MtYTOE*m#gAUb$kqX+h_-8zt6OIH8jPc zjwHNU169np!HyJJ2RSRl2Y_?Q9T2E3ael0HL<G40Ak|{yIL}KK%pd{<ARLROq=L-# zrf39Agi24g|HlJoE*kYlkuq<Un)|p4pv<bmv4?4MPNrcSB|p+ck!IJNlIW>`N*9Wv zGLp)I@#myeFhUA$t|}27Le>3E)k1aVec-0eY8n$L`IsnZTy>|*MtNZ&Z&X3ebY?{# z44Il3I($i%lM*9JIvw7VEoa3R1hNS#vqE9ks}8QP93*0<D;5h4=0ioVX>w>wfs*tp z74&$gCoSQqqmv+wq(l!uos8IYgQ<s3@9gv%FlV7;_WdtTt#qLu;35;S&MuxoJ$d>Z zU%z5nlJ$WNt)M<yv2Czit39}1d;9GVYrSIwBOAENsK*M3E^Ln@MQfQ{l6T5Th0kJ} zzZPNfbvDIpikDSCp1O8saD3obzxfrafNWNxJ4k~T`ET0b$)Z<8G3(BiMk9Ha%3-I2 zY9zJP)tZ1yIidEouYB>J{nP(}t9gC><I8Owy?sMB8-3sVlh^*{-}s&G4$g?BS=Z2X z4kmR;I2m(_U}bNFFDFw5$pTzvwUCbJ*u;{0-(PYP5lN9Zdd_rbbBfAdukffsFQ-D# zSy?XWCVY~1-54r-gO@B)W^(CO-*l+EYrVYeqKC2CvD5}Z({Z0Fv2ZZMqwI6c;oIit zbVE0zdTwD(uO+mJ1Xrio37A~z)*3y1qd6T{=QTg#gkK|8=kv1R5mXriT<+zjY`z)F zBuc|kFOkP-CPwp13v*$LVs{rqMUB=PG=T)hq*ud3(@p85Zm;}jI;iE3E<Tn}@9J!H zvKG+M-qo?pg<oG5;WOp}*J^zooo!2VNJoN*IOSYbLXy+`hoxPgkZ1<($>0e1ZbD6m z0A^s;?5IhyHuU7E?No*{S$QpKHC}TcA01S^O<<gA(-7$q1ZrSMU$qsL90S^A6lN_A ziHwwn0tF(CC*ny0KW(0_TSi!jX<OtI6GI!e3~k@BcYfyKt;s8AjvqaJ`pB)T*WNjI z`JIkeJ0~{m*tuud-hErQ?C2X9py!!NvVw_=S_abF?9gh?n=>rRK(M)}{8!_HL$K*^ z#*RX%11m{E0HHnwiL4z<6;WXpm*$q3y0ZY((bm_w=czUOp8DME{hL=Vo<4i}lZ$81 z@~MVf=gz(RgFow9yJ6R!y?gf`+_-5=U+*AIW`?haVrZ}4Aj^V8JF8%g_V(`nv1dN} z`Om!gMS6^T1!nMNj($+mrC%+2aj*VTy{lt(Zf@%OwPQy<Iez@e?F$!b(~tBFPtWk^ z`n5btFfh2Ly=!P@xxTPe=i3^DRWJ9jC=+qr$r2lB1uV!F#e(RoORXgT{6C@^lrZ^I z;QZAM0S2Dn5V3^@OLVL=)Opjw!)v#$-@JZl?)Ht^+(YfSJ>5g=w@j?tJTS7htz&Sh z*153I!7Ce>MzeG3?F8DhrJoT%gf+F+-sYX5+>TP1^mQ@(l-qL4x>FI7`<}F=YTX;j z(9}+Ygv?qj9Exl_3S%0?kxi*EuxcSP3Y6ALwB$zz>h2OPWZ=G#CMX?YNlF8*NTo_a zRtc?elLr~I6)mt$g0A%>4R|G@e8o#^g4!Kgp@Id@1XfWjepKtqW4%g^+|o8^ZehTj zv#tw%Wd4*?w2no~09E8l)snkjaj(2=xw2G<WodDYN-=53Wn?PmXGV&C2b>{F>>yIo ztx8F;Kr5s|FqT%Aj3`rQ6%V-vT$D^0ABFOT6se($tg6hVqHKY5e9D_(&XHQzUzo^s zN#B!Gl1SQu_9oE^y;3!JD_T`g-kN}CFodH}Y*X|KKqwm2j#MF>qDOln+OZl;dbL8# z-Eq||0MR^P`)zB26#IVCm&qhrDCFY6NKOgmIDWjExWYw}@W5g;2$!l&z6owH$>u3Z zLNr-1Qz1td^k%kGn&}mJuL2`Qr=6x2kXmRE!^nx3y9{$h$s{1nF*%xAD#UVvOMk2s zsB-kexN6dBgeYv9OO=Q(Z4E(>;gcQwOiUvfij{4%QkHv|1S;+&Su<sNWB9`X${5<$ z+^Ub_cqkUpoA1UV*wv<ejcO1#m@>yF^Uii+U`3bRvmBp;T|<G%ac;zUo+o?1SV0EM zz3dIh8<;e@2j-)Sik!Zbt&P3MJSgHEo3lYXH=xwnQ|s)#c=^h`dy8Wu9(mK_8cNZk zB_!k8=IAFUZ(O@IwCO-+&)7VtqVRn#WVnblLxE!AI!%!)KCpBON;Mp#P_E0Z_itZW zx_9ksfAMqMwhY<1l#H5TqCv7z;quxoENRQ1HPUH7;p(`fQfPfZyEd;#rKycPZAC!M z=RW^@&rtWHhj+#n=Q(}v>gwe&gLmHl<i^zfEgJ@1Ouplc;vMt^ZSIccp@D^CX3KF7 zh_Y@sXfTwwE23;0D}k>K5(U-8b5h>?ylff}Od6~h>qW&%Zori%nG`FhyNGjb0vU9e ztSbmnat!R`Phgvbb#G{aBRTtKp6yl`RTR9eiKbrIzuZ-C8|W6z@VeuGPFZa0*6q{W z!mXQJco7=k8qn7Vx&AuO`oUsto@WcVZp)Qi;F_lCq+at92C9V=TQ=R$OAeT*u=nWN zp(iFST76s8b$?6pPZI>Dh&)4}X;%kp0UdfIn9nD6blCjAQS0FCYP{1RHX&#W4az!_ zB@(^*z+PmSeZ{~V9;IvxNe+ixGg>J(ik4Xz|292<XzgUk+P-A_hPez`^D4<{ni|#_ zG@&52etp<2$ddl+pJw-VmxR&iNT&VFp42-sXWCH3Rt8NieWkZNiez+k9u^3rv&q9g zFO-Z?)dgW=b0pJ^By=RV_Y>y+@l6NTY}x<$ul?rD$?K<19y@jH=$*?KPrUiVlW+ZL z*XYQOU91!w+Prml?=bfiH2CNs*XXTz7O&70*Nq)KXC&bp43c3qx8it-iwiaxXELq% zp{9Q{-Jc>ctd?7t3Y(PL!b*W;YmMIZI}WYg_skckAKkxl_0p+hN6w!;F*|kr$klU4 ze*DM16B9dk?%TEZ@P=(W2ZqL$>m7_r?klnRCjPK;p!)<C_@_Ww(rxV;q#ccRR&^I< zXRckkaN_7ECypP#dG-48EYa#}>mBS{zh`V>Bk%a@=;RsxI+yAf=W$)#U{gg3_TfZ& zj0@r#Jd9Y_x}o1@3D&_jN_6K;81<5tAHXT1LjZNIX@I8iXjE~tPCK^@%rDN|y*qVn z^2UXSH*d7f&2c9|TX%o=hTUs6Y#tt2%jaXcIf#3ISc9X<bT~uEb~go5g9+t6e!M_W zK=Y|Pbm7%&<|`{dMj_WR1t*l)Sf_|*u0pXM58ZCf5L!)AbPR981jgGaIcL})VYz|< z$&#Sd!(mJF=_bEBfQpuIbPUmffY)kBW#NSk$G()-m6I8j`bwffvT4+2E>7v#0$V)w zEO0Fesm7lbjHSAkGt~$s&#f3TSAq($_zOyN$fqhxZbexb=oZ^^Yh7!#0g#xcv)OG^ zm_XKQcc8-X2FZSGnklsUFOZcSu!<V1@f1VqhyquXl9?8y#QVhyPu7;Xr$)!f7CxKN zLXVY%<d5WxO1VHA#)6u#F6FiYJKvOKg)*iWQq=`wwImWH1o3?`^=<{{N?PQr;Rsh$ zEJ<^LP!KM!X=5(<zT~RHe$~=n-={o8j&_}{$nq$ckwVcqksr5W=H-%{4jRo3^g~Im zRXck#uB0kdauj7OD_IE*RCVZq;5bJZ9Ue82>8QvR-^zZVaI)l^TjV^q=Uk&S1I<R# zP~oR)Dy)PwN976*XJD(7RY<COLo!y;97(lENy>QvpTtrjGnQzGgfKQMcDw~#(TF2f zvSK;gH3g`49xoQ!sCzPG$Xp6~b0NY%#ny$BibBGCD7fZ=nwddUoF(NxMy|I^I!q7T zl|mFH3d^OE<Wq`R*Q;Zt?JjAb@oIp(U=&F@LU5fPxXA|f)y0Bz)Yhy$a+<bM&B?7! zp?r3uQ(na-IRxG21>PJ^%euL8+0%b(>iUiAH^)ZSqOu5Lvt<RPu=?s7Z@0H~jjY++ z*63O0=4f?<jzB2q#15=kRu+CI#r9c>orh@{N?~wM72?fp4U5;WoNQ~G`73|r*TY+< z%w{y6c_0hY9*!%fPi+m!B#PdR3W`P)lvs+}XmRt#{$~#DfAj4#b2E>+dE{WZ(bqqE z`|>C6z4!6v4KMj%pv{Q6amm>aNhyqCD`_}+$-I`U6avW^$^*eWNf;3#%C-?vkb|6S z^gL6g;wmZX79=mLj;<9_VFdtUSzWF}46@emQX+)YN>(&hNGUi%Mg<Zvt^v42tLdu` zawq!`5H;X(31}SzovB>Ctw&Q?%|xm3*)&Nk^T9$TAj-`w8%C!V2)tLBr8?aaKECCv zM70uN=if{hP{KZ-nXdku|4^7AXfmLUpP{cXG041*EwTWeKw`fsx+caxzFN&GObUQp zSD^4)hDAZnbz+~OVOE~_h}BdUCPHesmB`ibSn~pU&9*e^xMJ7dMUyyU(i2oslOFzL z#kby}BKwI+AWK#gep?VQM^n$s0WOr|DOiOPf)MD?p-ioyjhf_J6;RtE&vdW~)85I0 z{x5IX^2L{5xifj~-05R{5#Y+D3rF7m>5-rQj4$ME-@WI+fx}z2?HKGI#OHaQAYrA{ z+OJpeg~Jj?37{NS`zWeCGOU{rY;8hI1r|J(8g!sl7vq;y31_mJLF*E-++A93EVQ-H z&MnR?w6%2%ZQRb9#Z!wj_b0DkID7JA{JcGR<CC}E_~a+=v~iVx`>uWa5ANKtV|Zkg z7h=xw?E~%^V34skq*2It!#MBP&?hkG=cX^8yL#-CPmUiu{_yHGUPGww2lfsQZC*Pz zv3YQGUA=Q~zShBd$YWk^pkOoIwK*+s{PWKhvP`Ttn(OLTytRPaKu|ZT{T6&)@nLlj zj64xfhj9y`))cf*wzS0458PkFmq2-C$lY5vZeF|m_~y0R%zX~*ZJnJx6YD3|Zyui5 z+}Sn4*BciW8`BF~S@!VR6BCrRETm{cRgkUIeaOj4;O+`##hrvN;v*3`>IbEQBq^%i zCY3Fj_cY3sLeUn8Zwjo`hy#U%8C=qx0(SofGP;L^!1-^Lc_^&n#)gHDMRgx^<cy0F zG3A@;)PC8NWKCOH3y&Cxt+=zbv1@Si!Jr5!w6V=bi;Se%lz>TuRIq^16503^NgxNd zfET3Zh<K!eaI>{23MW}eC=pGgqcpDEV~@X4qXLspSyEvd+;h>a%Zw@Au}K*Sdt#fV zjBVhQwYHhqzg)q*lBgF_HE9bJHY7$LK1Pr`q&ywSjHS%~Ja#5mj0RXKAxt$5=~5UH zNCn#`ZCfH&Dk(&+H&q>0sa9lTHK1C9)vO2%+vL2}tAIFo0=O(pP52<ghLr8#IXE&M zf|!^tn8U=59yZY<$6^UL2jt~UM;T<=Ei1vT5_a~`mICP|BbRuo5}O}Hyb8C7tLwMs zCcOYc5Zpy~NK{Kyof3lt6@{eYpcKKPP>y($w=6(&b`HwQp_oz3RH3Sc_9_YC<VB{4 zT_PM7T$@;t=6G+1(^2aC5S!GluvY~}i<U}H)ERts4?H(BUKCfQq87_W$;lC_ZHwek zZ$S(8>ZBwLtZEZdORW$?P)xU~ArW9jO+V;icMU!75p$$rEWAw?Tbiq)%uQw9n`R-H z5z*N0PpP|&lss^N=dzkfRqY8Rh?*33rAimKjFVvyMYHyo;EUBb%eB)c?V-SQ%-6X9 zAAR-!>J*$&r`u<_1+{l@eroB$`3r~kt<__{c4{V9OtrVb@(}Yx`N0q0;QiraYc?(N zwJn<~=wwM}ZFZ84yo?JTTx4ri)2)+o-Kh&n(=0$Vp2r+&Gt>8{uAN`MVdQJCd?DGA z5;Yj0{35p#*1}0qh4uhiK-5+U%B9~BZeR46BFFiKLh%j#%FCaB<Mj`xr|)+44RMaw z+c$i-*7e34Z~xYByd-1pk8Og=G%C!#h_Mj21}s&AXlWy-3)vDYRB~@U04<ezqs0m( z!@7XyFf{t)XdpP4x`jPp<EZee`zKdIT?JDU&OD6;4=Q8^VCJthi?0-9yrP+qMqyM+ z)rDb0H&C>!8h@DZWL(RTBKi5R^MsTO_FuOE$Z0u5@<F4Lv6-22fp9@^CZCX)r`R4N zQ#j+I+E=AhD+tU8b^VZWjA7OuOg9^0O{JQH*OZ-E&PDa){um5`{AZWsx+IsTHTJ71 zQq(adj9_08Q`@X{nr%rC3UqKP%Zky|I3?>C_fZt)d+h9LE6ulW#Y>0H9;H{7kT=yT zn-VUXS|Fs`v}=w`N$n3sl;Q))Ry{Pc)|G4A(d!0u6p;IN4VD9#^|dCj=B!823=?GC zhGFrv2B{Hx9)Ce|<o5Q?fi>Gcvu^umUiy{0cW$0PclyYYkFQ-kcmCZs&b{+`C-)TW z*tze(Q=7K$=^Y&7=@K4G(UOEO11T~#=j3v|j*j|_rHy&@9Mf0zha#;e+40L}h9Zhn z#|NUuSkduJf12?ss(NuGE$0>#UB+Knthe_~Y&o!T$KjXeXYbygJbUKE+0&=4UAcJi z=kHzo;GKGZ|CViAcJA4?eb@fsv9%qIPVTqo8aa<NVPa<b(be;pPki#>sZ%HJU7xCP zNuHPd_m1|BY#3X&X=rewqo<E|5$L7^uI20b0}He{ZT=HaBF1H7-72G=!cmVlHx%Hf zoYnG%99Khmbzq(QYPh)oMLq@;0CkJK7*qov9RQZQd9&maUwxUpdE@f!$*Z;LY3XnD z)+aVktlKg+zP_t(fbX2**vta^4Zfv;heCb}!Va#xL`*3rxNQUNeDBjJ>LL5_m*0B$ zLxWuZ+||6|BiP2PH4%S788+Z0#h;S2qQVAM$YctJLO>!&woxXtgwXdaTf;z<pfNnP z1SzKst_JdMQTJTRh@O(1l`U<HWaOf{dMOtKS*c1^Z|hO3tX*nm#Kf&JJkIhZl3iOQ z#H}<|6B3DSh1jwx@YB?zrp%38ERwa2<;V}B)@@Ep2roq4k__e0oq{JW1uDX5@W+q^ zwn8bE^{kFshBY-lc1%vg#QHXKMm7X)^4l3t$Wi-gQ-XRSRg-)e>@ehh$V-mVE)8S( zN=qDNep@tBU8*fa9wt);+DX!3l){0M4R{5|MW2-aqWCB2GrlV=TvN%~9IeG|Nn43% zO@{46<^0*$u!8Dk{T6c_Cxp{LDMM5(1hR5Y6vz_9Um~?s74?}zQE4$;BE`1ubnd4p zgu>z%ppc>=SEHIyoNPOeVSG<<!|+l{lqBWj%IM1SzH+e3=H;X<dE+rJss-YgD!Iok zOqM&IK@pD(W(EO|1Max6<H@CwrWwM2Mgk)EXOZ*$P7$zu&W=|O3wtl%U?7M^>2kGN zYbjF&tx#_fgcXoga%-zb)xpHs0i+g(Jtv7p%MK234=f?_0cJLn4n<gDZb}t;YfzI^ zm9UCfZZpAhVpW&w0Vr6277`gR0Zl|h$nhxxU`aY(BdR)1apKKsyGE0<g!ijPiV$*~ z=CpTq_t)AR=gwcQx4)nf>HnfD2&SO9S4OE_ot$~^=SS;<8+-bP^s+121jq@JN@@}t zbAqx&j3z(ij%c!Fby^}g?r69#+?qUJdwlbozx~a16FSLBDGm%-uqK-g*J%5RA>9rb zsk4o5WtZfXSP;pyh($8*jA9OPy2=^x*S`9tzx$v4qsRAd4UDX>*E_p=2Ws8@uf6s* zQ;W_{J3oz@T}jMcS*(?}tMP&txj+uj%igAd%oyfSuAl@gLg5ez>TKHLWyqw8f)QLH zdE$5{CZ-0HX-m08rPw;xsll*mDHJ8D@Qfok#tbrST$R{a$`xc}6&>GFD)SQ0gthZN zD<_R|najOWq@$B&Et+RpljV-L)yJ`vXuieW2+B3n6$Py332x2|8J$ehX26V)6&T7+ zG;G0<8eL9j<)L)~YCDk>s3^E*BchUQ?{tLNNwH?+sCM^kHg9Ebp8KUm0BfGKDWTDB z=T^_sRto~nk&H%=)GMTFp=*$kmE5dr0Vol!cw3JLmx2W;(lVo|u%M$Lw8f`k(vJ#d zGReGLH;1U5`q&{4@XxmK_(8pUXw5U9S@-<&FWk9%^X$o^Cysu6`QrH#KYQo+&(lus zYybct07*naR6b}M8QZyQ@BRaawrtzp+c(I);j_H4f=22N0)>U!!hN>N(t$OdC}2k2 zD!<$`Ii6T@E;ZexF9cZg$tK$(T7&5oRuY)>&hw&8ZY`*H4^C|P?D{RAd+DnW?o3@c z$0t%wUO0RD{3l1w|NPi;&z}rz+<f5h;XS+eba!@KzjF2D>67PApPjuqrOzkuSj)ip z$maE<6Px<`C-_R|;!@ZAa(!A~9?&rKB@7CRmK?WLE=C5OL*MzxS5xi$!Wy9Nj?J+x zY`_pDZ*fq|_)~xAXurTM1A6o0^8EC}d)IDUxjlKM_TXl1X`$BW=o}s8y@R;d(?79L z>t0yu;C=yqbWmUi95k68^vSx#)ZK8~VMvN3)9#sAVZcGtl1%W3tvXJL*gKl;(Qs5Z zIZtW~<O*HZB;7ia5^*&_mo`8wg)Ol#n)_vV^GU%ph}K@T59qx=`~)k6-0XsoBo#Zc z<JfU?(L}K18#hxTeX0seM0A+$zHlSaZyC42;a=j83SoUH(;S_N+rX-Ns#qGtGxA6X zrJ|ZC_hOl43M?>5Ng2>24*>+pL_<4U$b_L_Py<&m5;qmDM>UO@ptjiL7z-){Q&m8t z20H-CU^Hd>n#Puhd5VBUV=M`j1BFS$H32DjxSCYtka9U`wL)oRIMCY_VR0*7lj~yg zXQ49T7=|WfxiyCU#j;}WH;;0+f+CN>r-}q1QVShUYQYFLT5MvIORUs>Q&s3I^mB+Y z7XmNsM5d+?$h<6w8Xr2a(1Ji*q17Tgi`>lF#-s|K(+W;rj|NJ#R4H6CQgSB)xOrD2 zxQUeHN|jdajR0+9Sr)9E6GY5XFdg<07&+Dh;<?dPEbpBz@3}FPf-)znO~~X!<hbeb zpb!XtNyzarjH(qHOsQ21dZ-#9X-6YsuEYQ)xq4Re!k|t`bSbrj#z=IU5%^`p=%=+7 zbv<$G2bMx_Fc4c88X43Cx6B_C$>gGEaT@|#RLicE==rW0n_j?66t9psrxGq>yQ!79 z889zK|EgQVKy(jie*~z#BKi*tJw;W2b_%1H4d^*&*kIUl-onGABIx8?pB!86<~0Ph z_A8gJIIz$QC<HSYRXzTGefZI_$M>ekcWr1idU;8<d4O`g|IIE4Vo(1~fliiEh2Kii z?aWR0YMT4F!bvSRzP2qrp1gdjy*~XP{m!>!E++G!=q_{8qM=!eF;QSKQQK8w<Ace# zQ4d=aQ@vG7107Mcm}J{iPwm~jZNsJOcXg!^A3M4``-YC4JbUi^)V@6vW=T>_DXKRu zQkX1;uA*+9RwWf5T+et>mA5S96*1afNl8J$DM}F=Dfxg3k%=rptr2Y9ig7ZDtQhrX z(G@y$O5o<2gX%!i$Sjgt0K<gM2S<gDO}IdHgnR0vf<O}Mvd$nC?D=oC(*mhD=gB+G z8t&~>5i4d$y~KY^FnbqWBRi;bAEMUiZ9F?Lcmf+&&;m{g&DwF8qN<|1nzJOPRSl?# zt?m)B$uct$Gb0ktN!q5l1kx^Vib|RBtXV8Cm!lb)Jwmny=;fxiEC7r>)IRL4NvD=c zbSam8SiaaHgdN#t`O*YQURlG<tLPzQYXXNNcbgfiG*HpyY8eKgr3g(|HLt;r&*`)* zA{m?CVj2)vju-8-k<{dd)-0sN)VP#BOR>aFAdmHtfVQr_HHSXCo-YgBy?67%*;Ai< z^x?I0r_TKJwKG5cLC5IGu3h_f??1eL^Uj{Zv4uv*+`O)Xdppr+v9vc**s)4BEMD?g z?%U$1S@w(EqT8Z?Js5!N_R0fz6csB%Xj{GCUyHT6t&5Ktw72(;tUo-y;prE@`uM^9 zE0@llK6T>snUfE%Tzvcd$+x*{pM&=Fydu##R2$kbKCyXtY{NkRXnRNZQcZ9B=f#|K zk(BGgzMPOH36POPVatNCAljqU-Q+^phXRGv7|=R^=w#MsR2f?uR}3C~n^Sx^^PRjT zv^G2c=;qy9mv3CZv~d4kjh8OeyJ|ygN7rqdSi7;WpU)+9@lD5>rG{PwsxBe`taX{A z9tQ~4@AR15loMtcviYDp_vIqO^t!dm=CgW@j`T1lg_PqG1<l6)s03EfY#jgnaXSSz zh+qrrtmoM7B*QQ;!?@LVMzMt-kPUA3ZO1`~JrD0dXl=_X_8L@;N;D#>HxXzFOBML) zhmfSqEk%kG$i@0)68CM`UL;u$khfid2s;WKYl?3Ld~#}Xryzs|6a<xsQ0Pt5jdgYE ziYa>Ln1EbOpscSchAj+z8ccK4SCU%6w?y`Wd+9?nX-b9Yq=G}2L=o>Cp)`P6hRws3 zj73HNi*BpdtMy;hnWnIyKu0B`w_=(Bx0>4qDoM+;tSORBhzuNyE9i=B-?s9t6|F2~ zwNK+i6l)#`CS6#v5?OIb$<-IQL@h|sM)ScaaaJm{P|_m$D@p%PPftOKhm>T(LPJd+ z#~5fE%iegedG2lVAEl(GQb^Jj`l{7mO6Zr>7+WEEow#Jii<%P?3&sk`j_L}D_DxGc zNujGKt)QbM*Mvz<G;vxG00(owkXQ>%6;h_oi$$x#QQZVGSRUAlGF4r^&{A{+G*Yg~ z2#J`>B#svnYb6~et?Uw-q)UjTb5KsNbS|T=<UCbA=!aYX`SN_DySt~Y)^+LPHD^_9 zTQ%yBKk(>&{f(dU27`%-&78E^O_fs5L`F$r2qP#y%FX$flvo2Svbwy%VPEG?#zBm? zlP^8KGx>1p{El54UV8CR^dwr1^=#|5An0_`e?`oM+tL}Mcv>y-Sw|2R)lx8?RVfCp zpNrO(2l{I-f8m8c_=E3GKYGwV)Yn$;;0xq;&R=@_oe%cy{*{Q1Dw?;bvv35Y`6r(g z5t*v^0K=Q2wpEjn)Oli51q0a0Zl)^#OV?ZY5_LsO(XB{l8$4V^7!cg3A{3lLh-heH z0kohgYEI15iV&h=R12<=GEnANa;-!Q6*un{7e{@rC-X@tXN5e&C8<;h23FblSdRiy z24z8?W6=BcN`jds0-{M4JCi0~l(n0)B_t%?o~8?l6y&RDHu%KVBwUAii?o%bMwgno zyIylTYO*63(j+!iuwW|=s(ZgPXvK4k0kcdpHW&<G(?jk4+5@CplV{1gD$yxRoP?8N zA#V#4lCq<WO~~{@K^md`-1HmX#H7sDDmei0IztXkGmD+|MrYr|!RN*gKl|B7T&_QT z?C8<=FP=Ml^rvqf{pmZkp^?oy_w7A!aLcyc{evUS;P`AN?+fIf02UdvcxoQn&WQ=O zx*)92W8xz*R3Pv|MGkg6C?OX#&4dt+x@xV~Kx{RMskG+4+)dAmF(rtfGrAhz*3mV% zWA9V@4n4y+8g5*_eC7PfkKh04<b{jf<6G8k*giP2sjGitxxJ4Y_2>DJ2k$PlqdH5y zgi1H(D`@h^LV|VgUr352RZ6!05r6_4RYIEOs%}Zns9gkHt>LB&Rzqg_>L#lLGjk6n zuiW4h5_7k&)n*?uA8ltnVAH1Ybz6Ez*0nYI=axEVIOuA%h4y!t5{59(TqqjmqZwu} znXm4c(`D8`>V7LwHHr-xHI$wg!MOUp14x-ag~1e?ocO4>hO2u_sEC9&*6?05jUF>= zdkBX;Mxju+GuGAaPY97r%PG9nQ~!GQ!uZw)cKeY@GGrK7`Yo0rsf!Jiqow2oLzL*D zvLYjbc?SU){->1)#YjK8BuSfVp)(>a3K!ee?38#-4KO1p3N18~(YW**J*h~A!t|#o z=}=J^E=q{fe7BrIyr|(&f_gj(bD2byRe)5A!0NV)3Ld&i&k^uM)yw#r`xL=(8}XlZ z8$D``U!ChR(XFzET(UKyh)P-VQ`Yhz<RV6I!OR`X@I~K4%*3){hF+~$F;Fzx2Ux0` zW(_Sf=u&R2q5*!QB<bWqi@{mIbI~MWg`!<n(taUNlA(xpT!C%^RJ2987ODysr9z{T zt7^TTau+ojXzrzI25^)^Lf(Q@;#Xi1UUAA%kr=mT6;`VIaWT{HoOm$t-PCE(Pyr5< zW<~)iN}x#PV_3meDe5WIN<j25z{_yqBcNzdRFbr1jWu*?x=9yST}2WvR0k;!NzfLQ z6uOF%t1amf$q5yhkN*-jHZ~^~WiK@!(sQF=ER}**s0dt##7f1loa~Yg@VuoiCstWj zM@rigFB&WnqfY@!D4@i+Cu9_jPR7`JJ;2<i<T>T!22_&10;hKsu@GR_Elj--bslQg zFOmj3ce!@+`lxGDQ^}rWLvmVlKwF*7aZ>uD*M3^-93JEYhx*t!+H}QFr$xHbh!k6Z z{PR;X8mJRN8{F1Sau=dz8aCK<devT==VDZC`qp3kjo<0$iY^qtoVkNVnTEuQ`x&ZQ z95HuM5YCH|N);qz0u-nezt5V7;i~z{)gW#L{<UBI${+l}AM&<vUTww+UQf^P-A4bb zufF})|5v{vO`g;`cOX*I*2%IHQ-)14Zc<9zBi}#W(I}U1qoC`JH4ky&ifIk1bLmia zwyAK#QI9&zFt~~jHit~|uFvy;vR+L93JK%HsJDPPKy~A(YE4%yFTn85u#Iy?$`V9F z8Oar8ghXwUa5<?gC!>cJNnI1SOeksv*k=<qBD_Om8!F0N*1b2D4?W*)c%QvyzuKd? zb6%HNwVzb{f#?eWJTnhdmsYv(4N~f~8*=&8yTgQG>gFNcO3={yoqbwQUij=#QcM$> z95UHN7PxVA(*R|^qd;C^RyctGdnvrrUw&#Ds9j$E>pw*%iat5C(Ik^fX24o*W!d0= z2%JLaWzDKRklLB~r#39N=_w?UH3^rJVi@}MW+?Xh2BM;1E|7Gjs`szi``p_7&%J!_ z{vBPcKl;&?3uiBV@Y750zfl|L-@2W*1s>YGZGZphT5i^!UF5SD=A2p5d-`?!)J-FH z69CcIq6K#Zs4XbRW6fD*2={5a?LSQ6i3)z=2Mj*5sis-1I83Tl^sx>&yqa*KHZ#ZT z`#Q!q?A*O)FP|#-le1Tc*X-J`<1-JZYtxI}+#I3frCo}qd$fMRS_x}O+E2M>LD$vs z#hg}VQ8n)rI636)(N{i@xA5b=dQB+ZTBfk;9uq<fgRd3h;@tAw-MiPX-JZI1|MpaE zc1Dl7_YL*0-#)&6^We~0UU<tp5ee|(JQ2}XKkOJxJ9$x`tn!UX?5oLcN2aJTM!as( zQbkcS7Ou!4%49y*6)TEMSc|{<>Cx9Q2(f}HxaHIpW)~MRXp>4)qnt+i?F-fiV0AMF z?pjnV0<ss>(g14Kz1FMRyRd0d!y1M5rFwml@ixzkES4L(n}GcnZ!|*LWB4zl%FKW~ zDUvl-%v30NUXp9}Kd(}DdP4KVFTWrwI&8$3#RBK%i+YmH3MGMzuA<8aVzZhOI|JwR zR8ED8ja922_d+!H!6J;b_o8D$ZkrsNIVXFC!dNL$1Su!jrtS$a3Ax!En3v0H%e9ij zWmc&cdfI5YOjeHmmgH2)F;*@JUNUEGKdOW&swxB`C2hr8h3)3alXuPFW=bBtj2p-~ zH~I046<mcMPh2u7Re?XuM$2iB_J+Dt(2xRVhbD<YNxEEhpct=+Lk@C#b{I>+jMk%$ zqMl1eZfUz3pim=`9GOR>q%Kx+unU(&oNfA5wAQF*^pb3hVD!beu@=l(HPEyvX^1Xa zCz&x(935n`#u+7(kBGR<SV5O_D*Q4`24jjq)dMPl*>mGjOKhN?e86}au+fu{$c}^* zxly&rv?RK=And~_kz9b>Qru={67o|OLX!(UK`IaeI})Mh?S<SV=zx;iW{m4|y6Hqu z3FQ?HunN=~ns%<>SH207M)Gn{5j!9!CRVT#>v8MWGW7++h~Brs`K$@09V*5Uuk+u# zVA40PNIBiD&$w~l{{r8^>gjCfgYYC7#(++ObPbO?5ILLa;I&lU-L*#7jmf)@XKVd& zT5hLooGNMP_$gB6_wvO{Gar6<ynlG-U>}!>rrX-);Ib6Jr`<53lT$lWqpXuZJMGeG z95WZ1#d(sQ&P%y=X3m-AQiF?b3lDExIL61$fBUcgjwbh6vev27VhTrrL`ek)P(^_z zCptS)im{VbndYCOX@7X7<by?`8Z}NNM)lg4zx>MB+I4)TY|XlQdxLM)^>z1;y!*2w zw{F+QMrosL=@igYsEbaLBALUGoN=NU)_!QBL{T&Bf{MH+$!i&fy5lszDx}n)m=fQx z)MQh+OKK~Ky1}8waMw9eh8to6#?IrT7dl%uMY1N_CLhaYJ~q&}MhPv5mY|6z+bLF# zOS!r0{S|~0OZD7drqwW})=D%(Girq>fZ*96bV5|*Z40h=6q5mOFLH>0(3X;#n3M(z zHbis;6`7>MCQJntQKLeZlgx6g0}bd=6<!K-9&i7_A!M_>&d%E0tadIYw{|I;-lCgO zgg`K6@;04YUhJqZ^7+Pg<|tTW*VWiT#IIt8W|^eV8sxnis4>Qy|JY4!G)SZN9(jWi z@{okUX&*t#V^S$0tzi8ao)9oKl1kAGc%*2niMl2=sURec!3E<QTk?fLRSaT%B&mQ@ zfbAwKP0AGwX1+`rSu&Z^5vkG9GjZtIiNnvlF#G7%)r)729sA_`nd28e`T2#9eqQSt z8riyY@7{x~7L1RrYpXX{Vwj!dBDey}Oa54dK?gOCY-W*Rr=H`Znfeqaiw1o4karnq zR!opJH})f+E@T_g1_ZL+*P7+p10U)I9x9**>4bZa=I3<leg`WC({t_fZ5@0WL5nxm z2?_zrLA-h)G+9xX7fOn&`ZiR|NgF%j*{HO!Bpr^?0+Ydc3uN2!yuK-;sq;LaB)ENN zYHIT8?5!)cnMb@7vewfxxN+;m+O7Q~8|qyHi?yD`rTQbi#!*WFTFcULo-t{&cP%ow zkuahdMsm$Oly`0(Jg%#soD@1S_~cCu`;H(I(w;3#+T*RU2DYwNLr}#`*@I(RX%=XY zmH4W#SMW~?G`fxESc9r5c3ccB1=p>c2)9+}%R4l8fe%k`UkNKbckbMnnz}hUv2AE{ zEgw}i<>9E7Zv2<w7Re36NQDZ>x-HVoL2G#wh;6FzsS6Df{~gs{V2O_5y+l@1)YJmw zv55v<L(&r!N0TdU5tmFRS0I~I7OYaKB5YM$l!q0TizU6PW=*h$MJYg}CJn7UHEbzc z#ju6Zz+q=936@+=T0F|BnoA^ND&$-lYt1O3ELz|^#XeOnmR(7#1z_0ZHuAE>U8&^a zP?09rR%pp!1yQ9^_mo+wmYniJ#e-xj6_TJ+l6a!4(2Opzn<_2v+DU?<!bTcV1u4^I zL;{tLCk4t&<X95B;F!GI7cWznijga+C>XcF#XxtY3+ClW5zQo<nGS)u0!wl$u#%&B zA(<+*DN|y8<PuRomdsEDWHJTZm;n)i!N1%~XF>6lSV;tWz*w)O<2=-WNix=N*>6?U z!8TwLv}`W|BelFOxQLUyo~T)&P_I&~#clE;s852?yFmAi55geJhExbtRk_G7lIOZ4 zSFw<@-3O-xe+rLtAZkLjqHQI|D#8ioLpj<C&I#<h?n+{XK-A=vL{A0rsgSC=;;vt% zH$@ykP?u>f_CeQfCa}@0EeIzqT(RJd-U|zlJ3G53FCK62>Ymprt?6bY>D)=rOLKau zT+0Ltjn0k>mu`Lin}4&ri;oQQB(pwR$lRW@2|&6bm5;`=#$XE#T&<d(o}QoOTUL+X ze*N2v^-i0<>g3p?pm`>$?Yr6fdDp2hTbp>GO_wf%bvxG*j}v5lh<@SmqkGqJ`)~c9 z|8{>*#{$=(<f2a6+<Oa@#To?|<P;o$sMbE2H`8{?XgJw(cQ}WXUGYhHp%YPgti%)| zJ`5qAlIB;s*2<}Vql=Gq*SZ#GrzfwT;f#}0=bp}vE7xv+^&5Y!zpq;gXkCMwF}QZ9 za4}(^rx3R_5#31)g1A{o@!5Mpj?0E-c2Mk}>ekp&s|;l4NpPh{=hyPjx=$~{!kA42 z1yZ~e8U87@h=|3!MyfUI6V=!{uW^9;5^I5P5zq>bC5c<ouA_ER(U~<3HBU^FYND9| zLg-!ZRLVT=&UIF{;^;c3p}AnEd7G|l>+X042n{ff+&AZ$2cVT{ovm|WS~a+KU6Lwj znx!a;A(x=pN&#I+e6$LMznsncv{f?~iAcXfAzi_uZ*U<r)*1>#@Ae0SA4nh#fXJYM zz{1reQT=NU2qLFYuA=!R3t(j5Ola0&GG>4V$_FXLjO}uay?RGyqux3FSXcX}A3qic zh=pHv;!rbB*~u4Y9^Jij{rvFS?P#9k9{WXWFQIK`r<SDJDl=FilD7ZY`vizRU%pdE zNWFv1ISm%~$#UbURnh|1^!Y_vb53=&Pae??<U(m9EE)Y;4<sWR(;-&$ED@wgQIx2u zHI?Xg1_3W-T&Q)!1j!V*GY}D1L^WOFCJS2!Q@gZFaOHh^4%h1K-D@@-ShMZWi!+ZN z@CtzAM?X4u`ox{n$KF2r-rL=sYqxCOv+wZcT?a<jZe42c=7IkuCVqH^AJWMIvwfkq zz;dfwvB8H0-a|+O<c~bkACF`)#5Hn!ztLSEOvKfvy1f7-y8=ud#chrUk{g#$t7DSZ zkf5_3pay6#$O9#GTMZRj7gCdrm@FGE#6>#!!|5a=xMV@J>lKfS9c{A<b9ZiCzkK`V zrH8j~)@E6zYOnPS_iWfXHnC-3Y@)lXf4QxLhcFg+^&rc-I!>rf++nW~;ybs(t_G_E zcvwThuv<a2S7Xea!mbi!d1FPzL}hXW)c->2mIO7}>Pvd_qroI$NgSf$aK%&7yv<R& zEl6pC%Y<L8)DFOg2*^iEa>re;*rLaiz7(iMAC97OSx#|CVgDd;(?@-&qrT9-_-N+d z)a|Lux2LYmKfKLy!SKLvqiyY?sb^>B86mXl#RM)WVYeI2h>|7uBqLa{1hz`_Sbmvr zYV|UA2Wga%6lZbdy*cexMW;0u1hp^9nvCi4Qgbe-!{McZ$(Q63%YF8|SzVxjPRaY+ z1k69zo!GHZ(n}>7#El@V9ZE$FjVPv&Sk+Bt^jw9M6$(v7YF!XXY>%JoFNlS`Bp67^ zWCCZ{D!5=Jv4Ui!T#GOX=Zu_fqgT6Wj7P!rQj}GVG8@ly%r7U4Y)*`-a#|8`VoR1= zXvxZnl+Bx>c}Xyb$zt?G<tk6K)l$M2#uBM42bnlxATJaUlaEo$J&OKGZL?~pROrc< zmfU1Bm!h1E8a>qn4?75@u!AHWIn4Ftl%%vU71?Y}8@ZT~EUMMW!-z7ZK!uWsFmORH zcGLt-1=pHaT{u_K%x$K)9`eNUPK#ZaX)PoCG$@D_EN^<MTO2$XYIoZ4GPOpQeI0N} z`jwJemoie8ndYS47_k<&Sz9te6%!)qj#dLF0V;yIY{5!eBB_ZG8Ega3EHvSo2rd}I zRbuBpQifM(kH>ZwPxO*};&~zM3uRD?{&##1OXZ3mxr;^6ONL936*)n#+lfEZE22vb ztLU5~I)E-2t=EPIdItOIccyO4J-(~c1Wpv}N*<A*)pku$r-4imB*Ca`*Yl<Czw=(b z!Hu{ev>3pNlTPXsCMY&7Lb;0E$vVeNsvq9IpmRUw7Me<s>zq$`yH<xqwDUh6MD3hQ z2UH3eMYUNsgs$-*sI%g^xz6@?e)cwJRPCHj$~XQvr9;vLrBH6r5~h8w&4L)Xazu)x z7mVcOvbBPfR?Ug1syU_*lwg9p5!1!#tB5+K()+`f`C@@?W^T;fzozEkERWVU+KwE( zX%8D~hA-VxY0mi$t|}@t9hApP-fAm~VgNfyQ%S87OYo4)eLPXJTr3Asa2!>n&9dgf z))%x}E-7qkDQCC36i8ImY@<k4=f+BMRDvEZ0~nc1ixF;L6O-VH*`=kj%yiF#L>UdV zmeX$;3R-2tJ4E!z)zkzOzH%8>_eXQ?uV=<>2B))mo_5A7dbrMO>9r_Rw-_^>VyJ4I z=sKlBVZNgaN8M)#BxG~}O+}jt5Dg}BT=eCluA+brT?$4&vNVxPrgr-5S`Z?B8Y&hn zMaTl7t={S<70A_>SnjYz3qHffoH4ert|d5Zhn_*3x{SMa(27Eh2n|pcP^kGdMs>AV zQsS!{E!E~1YkVMKer9N(TU=ADnG!0s;J^$;0ahg1+HXxw{oa55kA}AG+PQo0p8W?V z)@^KbG`N|_)-$A4ODY;El&I=Yxk$9uCUI`qT{hoT3{jDwqam3iay}+`<c*FL+eV+^ zVir{-FSdkx8{Lk{OD-fitj;q*YqEJ`nVKR4$eWJ>iC`g>VYN}$_9ZT!0n{HFi_6PA zJ5-yk&9W-f7}~PyscpLsEwQ&>y>RN-&o7)ge&gKP8>dd!y8Z;-o_z<l?>;awzP`QD zIls6x&qG!k6FOSaqddN4>gA@s8i<)_Q4Yx}mUOd*de2=H9T#k=KpXj{y<$;Abdezj zfE{IFf$%X}HL3N6d2dj$h?rs9^Q<b24KiD{3|`=yVxfa1Aci5k6Ezg_5P=S2tQXJE zJ-T;m^7hoV2RAO)X74e?YF!<D>o>1m!@9u6M%TbnTi@JL`y3xY)R0ACm}RRA+!bq& zwayj?C^5Xb#Y|6MV4j-%BoE1afQmF!wO?uliwaG*MN*+MEs}RZ+nSt7>KD#TLMMz; zsr^e>)2rNUV?a_CZztM#(Yg_0IxhGwpkbmaLcDB&pT~L|i`U%9fu7mNkMG~OdF}S~ zOUw6fvdXsHzR=s>`S`)SeBihyL#Wfw7%K2cW5TRbR$Yc$rM8q#{{R3W07*naR23N& zu;T(+)=2*BjcM26TMeQ08aMn`L{tck%jLanazX~BhA%QvBZtt%VgU%H6&diGmFH;d z=O%rt6UrJ>EvRLaNO<qm++@KGB{2(t6UlRG!Ooz0pB73@usN$}cp@GRtud{suD)VK zUf8~+D1`n)T#Yp?xsV4cD5%&7RH<`GBb2DlTQzs3Pn2qg1xj)%6)@LYog;EwUM_o? zuue`@H0!7oM?LYOMhYX!(d2=e>X}E*3LMjwP(>lpy^x6)m`_=Xs#efZB~y<Q!9YS7 zU9}P*u?2UoMpZ`6cL@+W&S%`J6|XxW;F{5Z((xW|NMMp%UPx8rua@Qd%Tnc9vyR|q znUSlrhy=D=)Su-ZD{~rl5Q&n$jWso_z*JlUR8UGl6Iv-ty3MChD-=aBS4ge3=1hxA zG!ddAw(ydHylfB?EKA$ZzeUCdOz<G7KrAoYp2$dZ9mN>)dRcSklxraek%My8Ww>C8 zn?#(F=&4YVU9DP?DQPsD)gRm3k*K($1ZR_r39>vk-2Qw2-GBM*Z~xiilJ49G!p*dt zujqm}M*J({rishZc0#LP3{BCNcs7C9>TDS?CKgb1)d8^mu|b4W>V>7ny5`KB8OsCh z$nL&Q1vx3yKYU}Q0Z~qRb%~6EW-4}4878uv`(g@l9Z_txL1&vhd<)%P2CZI8muqZZ zrEg+0L6U`-&}=npk`*~GlsP#ghsC$^Z_H}wXj-LLVhgLYZz;gAJ4_J?Yyp5p01?#< z4t8RWH!@3&vuj<E)|89D@~SbcNd*m%S+y5Uy1Xv|Q_n_@+Zme9bH%W;L~T^i`9F;# zzyL#YOr_mrKwF5B>N1B3P&gu-$(TCN(8W3NvYZ!JZbYs$t8aq(K<4fcj{>UfOjvYu zdjf7VD|u)RsN<|%obn@zR~Y2BXd`R-%Q-P;-q1D4C&yo%plV{TX%u6u!34v?LnAb0 z(maS*G7Hi$)%00cn;Z7BIkeFoNU>a?Q+H`r%gDJzC;jvU4&%JW1`ZJ@^F<?gnQsv4 zp&CVB9Vf>%;Ww*Tp=Y@WtWhVcB=v?cn1aVxvY}uz3HB57LyH%hPO0_g4dI~9{Wn?& zU|?un0%?i*PGGN)lQ&p1N%@O0oMLi`U5!LG_6>7+XOZT@<J{cL_HCPf=Rf|IhM?`J z!9PV=M&to<yfw79@6kf{y>sW@KYi@|AO6vrt(*2Acy{}qy`vNBI~v_{3k-X;U;8J5 z7A4*%f`=XxwHZCyN3hS8U^p7xVAb((2)!c0R>K5}6wy!v2p5uRF+oY%gicWZGn6D8 zFKL;TVP#Q;u^kqn8htHN(ClhVf!vijTeOh}cuCE62hc3{z=i2!Nb8dlvmwqzoEriJ z?i^XaV|458XJ%&}O<uit^7xU{r;gscaPr;LAHCbvIk9=m_B{u8?m0X@zLB^u@a#R8 z`Dua{=FmjX5EykVTO4R_?;!Sa(Hw)UAj4K?XsjC2#{(b@RGem<P*&o&tO2ckhw&mS z>NRVp6zX_kIFBD<@T^g~C4oIeEk#0h$&gm3P{Gf|MjgPy()@!5xAlI3+c&S&9&x)$ zqt@u@UcYm6&BoEuwR{bCxz@?`a$YgOYiG<~+9{iiKkX_S|K5EzE@V&t)MTw9a}XjL z76CRkB-BQ`cLgQdBiNXzH-)yj3fVAA`nm=?6UPT}^qP&(lOPF)HB2I?XWur%+OX#n zNI_(kwIB%6BroKgB@?FCbSyHCttC+b$m2cQ6?mbKWcfjyYqZVR2-mHvH?E$4ICYKQ zskL?1`o>1qZP~hI(~V0XP2W3@9@~AeLbC2OpLB4O4Os!<=2y(YwuZE3SmP1VQz&$j z?W>s?8!y<BF!oJ%vm!Ux+HA$qPX(&TsOoafrX31BVVsiZt)-$T&TXMTwl`N*l!JKG zQZT&a^wm{>l;i5z)+srj3Kg6SuEaIE_UtfblbKWq>Hv~fcQy>XAgWEX*+|hg?2V?m zMV7e`rCOkpjeubjlkJ~Yao$RK#K#~f!=Vr~Cs<Z+1bN&G(BZUZp@c;quBSlsO_@kd zN}?j`rHH6(3-O390EyzDRLu(oIxB(CF<yn{2jmR+#A4AAP0+GaZZBDl9n!P|6o{a3 z)nguLl3NP+6*jT+TJ&KqUUhQ?ZIB%q`Y?EHnnF33Y(dJ|)pByk3#ke&FBf8E{Rty- zsw6a&&}$VQaFW;wTQ+EB?1!@$K7txu1ydN5Lriq>va}LCgILjBaW6fuBCIZTse7Rq zG~jbFFGq^DshoDjmIg}1C{rcojiO8f>BJ<GFivR#Bz{SGi%J5fLedz}F(9QKG&vGg zHW4BtZ8?>}#w#yB_oXjBPr**%XqoKl?95tOwQa&61R}Q|188<;!}%Y*MbS<vG|dC% z3Zze`IGQvCik*g8#R;a<l$s4wE)IWaBnuVimX51_vL=RrX5C`sPKp#bDnx6c2_kW> zrzyNB?!0V5b!gNQh+-5eAw{;<M!4%Dx4p{!F|^v8D@oNP=`a~FoM{k^Ka%6sMa0@D z#$s~eTt^A)+*EK`^600E>ITV?ikLdU{IM+g8(fIJXwo1YWJ-u)xn^p^s0s-1!uYSR zx#!j3Y4S%tStqEek|h(;wNZBgV-;fnjNu(ADU~Gdk>{*iQ*>*(iHc<a4~ETVQK2c9 zK+-HcWe>XHV-_Of)#Qoc=@3bw+uG}TC^P$EGOgS^k*Ez1wxJKBTWSc@*k6<lpj}K! z_cf5qP4+e!vFJ1Bgzre(#pO2~o2m&!eQ;>>sr@hB;7;co7arW2ym9KxjgzNd?H*Xi zJNFJhvvb#;q2Uo0vKI8#J*~!IlEoF<w`CB!tc{^jZPerx<MPRTk$zR>yf*yz_^C)T zp9EG-?Nc&PQFWppO@uK)v}%dSst{t(92*dj4dz7Uj*Pjv<yh0>F1Z0C)7dDdrK-^Y z4H_$fVZN<NyvVkW=CfZW)_TproNhYlU%U0d#_jvR{Pp`cxToOg2WL(kojQMh>h$S% z{`3cfTej~#aCqmgeQVZozeX2p4SL65TZ1^W(506Nq8a^6Z2izIuXMaLSCm^=m1!WF z8*)YN#a!=5#CrxT%U?X(pwNrQe<A6}goT(7FSBEfRr4jMrgNJBOLHCceS=RmOy9eG ziyPzb+_+SGe5Y-3uGZP!JGO3Y?WWO*jUC-1%Z=Xo`T8sm5g>2RPchxaK7ahvSk+R9 zS=G>C*f_@;#%jwlYtVH8tV!N>xqu)J#5THP22rD|MS^&gMBq>E8#k6k2ceBtz5+l6 z^<@_2AStZo`NR_$p~y-2YO1t*F+9<w{aR~|dNj<A$UH|eS8t$pX6DhoYd0?6x_-X) zc(S%UU+d~0-LPeR-PZom^~?34?he*MJCL`vMy;pOP8(m|GqQ;-nfFYEO7cb;F^pt` zmrzbg$W%}aFwtO1ma77?u4s7D%AT6&aT1T^SRAr`a7c4rXl~|}C>GojrCgD{a+{-H zWn39k<^3YumGn33{InD_J|P}CBDcSaScR3OTG4e3Q=hGtA~$ZI<g)8p39Vg5K~MbE zO#9##w&HxMQt&P`r9qeN5~18I>x^XIG_2%KLYYvq8g#o`O>HR)C2S~^xXl_PTrmC& zP!frNrfrULy-rCsqPjvdQNVagB9WkN)Q~g1oLD(56U_%#)RM8YqU$4H9kx<OWt#G0 z@G>W@TyAL@q9=EavcnR%Qb^TcI&ADG!OMXX^=jLKl(SbYXR^t5RUpIUtc+Y1ZGA)l z4vdt^sp>?PVsH|qtk#iIo{P9(o>%netZI36XvMtDt}akj@Ac$uAzzeQi$G0Mj>rvD zhTE(o$K>K(&JQ%rvL!!~qEslcvr6l(&Hzs?VguJ)k)Qf-n&Ib-tC%+_DUX80!%kUs zegw_PcE+JTQv^iwDOn&GCd?E>!Ux60vB7WXsbrd|ISngPkE=TCl$c$<3{~jj8q~Ms z08`nu7V0@KGd+%RK_dw0(Lk1j2yIJcaf2OkbEJcfsq<|8d2+8b9{hCGtVJdjiqh{C zMbl2G%}hcWOu#}dBGF^lAaD{$1@ocQzh##3gJ5zQ<C$)U$e}=Y4M7hyc}LA>SV$Ip zYn|j%42_3B(hpZ!LwH@eTs5L=Q8~uhB!mwvyEbX;KoQ*rvrcwnvbn3wDXh^qn5NiP zv=D=5maHTRfHnXva+x*+qy3`S3@^G_5keS~@-X_PP;qg==+V0{j3r>nn=TE$S6Uq= z<AMyo<ds>#Lx{RRz)DF2SDeEH&D=3COzyJiYU>;w-ne0G!=brHw=SLk;P%DSOmJ@; z`T32H-}%wd;O^b~_CNLP`fYoA`iB=5>r6cDvbNu_qPHpF0M=}!L(@D$V;8q+mafXG zY4Ta!DUQ5_Vl<mH3eRLn8|f-iBCvX5a}<<l8U{)_ZJr5Q>v`rxX>gjls6ku)EPAG& z5RpugWc8=cDSS{2&1FbjN!C3RwsHtmPnWY)B9-bhVDdl;$hoaVb66(E3jm2#Tl>J8 zEr+-4c<SYEOiy0B#2XD+DY$>}{JUq4z1!U}zIpSWJ%@JfJvg>@L%m~Q-Y&B@^bERI zRdv-{6HoI?4x3Bt>)3KTqH+6)R%bj0im`?)LPUC=n{Jr&vID9I?4}dAv6+4k1a4bm z$mnh!J%?Vj43gffxXA14I`nzQ2aj%FyLIEz?OWFt9^R+Z+ZsLXBkRZ3ZXBK1Fwi^1 z`vv$U!7O()&Eq?_8eoj4aO6s@oqNad+*X*h9H1V=OTYI;Th*C$%3F@<+?YeNn6Im< z$l3#M3~H-ba}{+o6b*8gq9XzC5NRe60C8o|gc4JYbpU#Zx$WK}m<naAj7XaZK`~qI z>aly4V4Hh3zQf%f?2AkDo!soyHakCamp3v@T|YN{k2f;R=|;TT{MhE*TX(<M)-{GO zH&*bb#twIn*G4F&w!kZI>2CI8#)3u~F(g89(3?M{%vupB!B1*AwFGafV61@|4HX?h z6xJ-!Na`AY#a<R-98r>q<y44-uyssCmaRl;Nu;%+2xUtuV<HbmC~A{YO{O^m;R$uA ztR_dgZJ(^CCA_Sp1PPT2!aZ<evZ+F>RPae<0>svf<NfBCs31vH3Xxwi5XlvEQ`N-^ zVV7H7x<HpgA37Fpvv^XQ3a%s}T`IYkxKO;DSfxUecdA#b0vU)RDQT}FT}z^7g3bwf z0_0Q&uOw0+lM4yz>T;zy1z19&#mfmCS&1M+3@SeWcsWHdfO9P6s6vt<<p?7MLJMdV z`JZc>yOPSOkXv=<JkJ6CtCJ%`xpJ&9>ZfaA6DknckfL!X#+tEOWQ9ynB22TWQ&OH3 zp`QPlsB_f+O~gVor6lDJCe4YSOgy>J(o!K-X1hIiSwEzqUcf7*vNTKxq$HLK1<3%O zRiqu9YiJ3`6cj~Ax-3pKJ6?EF2({>&oLQ8m-E~*gWIJ<nKTAFb6#9&zb4xjDD#NA( zX;G0x2(mX(!lpy+sokcOip`1)E1+O-O{0)@re$@}oNjt!F;Lxz#AKPqn34cuBdUp8 zLDfWwY8{;Em9|PM%tVIp<!-bN2&7zFu3yH3E|HxDQ7MXAfHF$d6}M6W+v8Yv!KI=F ztA#9UbxuxY_&!Zdl)Ml;l*6XT^1`12YL10w#pa1yU~}h^+CqV09bL#6yFye9k}nj~ z`1FXlYA|VHoXZRB!oe~GG|0`sGCz!9IO|($1rVp0O^g{esA;irvtr1CYW^2XQ6%!b z7sO3Xh`VU=IB?lSDN%f6xe?pVG>t%pd6p(pj<8(I1)6<O(G<jn5^_uj_;ktKV#n-K zH}}$a4b<1I-E#N*`5pTX?A^QPlMmm&c;Vvl_dhuC{ztX3b$bpRWT{~D<}HI=J+t~g z0<Vc&;!O{F`<+yx)Pf`DsjK2%$Z(wIxd-xGu6T1S)LJo!0Wdn#N()?;83EmP?==b} z;D#t$U5yQTrA$6ScUx*NOs@ox<c(@^^G28oX^{e<nK(07Rm_;@@?l6la{))|oO&cB zt`7*R39(*V;9T99zF3>*`2#(B(Yt2LzD?Wqe(meuym{m5*;60$^ug4nOFy}A;q4#3 z%H#UG_pws2ciqIg-kxp@%rE%WcWGtj#<gV%x~G7R%rl|pg1q@?1ZWlvavBOlmwlDX zU#<+}C9~fcEzQ}f35YJ!XG;OnVeeefmlWoBc)q=X^vv{wyH_T!+`4gP`QEMC@(fSa zcMc7YPi!1pw}orr%k6!<-g0`82O?}OKrz+r9qM*Pk3}ek0Ny~ifNQmdigmesz^et~ zMxBaz9hQGIY}{wWNh+)DDu$-h#!z>FH9xjVx(sPr)lj+Ny&BXY<y157W~7NE_xW=l z+%b`*g}_L)obh!G9|UvUOv8=(i?zr1Zu13)iw~!+)@B~omS!76gPV5mx&Pq)?ThDn z2S?hv#%C6Kh?cKMumYf=q;}{}dV?c2xV))A)p{~(uRIA!Uc_?RHdCZnz{E)f3BhBS zMR971TtK)<DyD#La!yIUP#bml7BDF(qMTarspL((l10I|E!c(6g&m=Mh*Pi@6!=of z)s-AB@u>uhEwrd-Qp=)P$-yY(+dKyznMJ{MK=+iZa$-&q##JP0EF{g%daA~Rc#>E} zohuD_iI=+*m6p)a<H8GIE|v1kp^9vQTm|e3k<6W`D$45>M=RBUjMUsPtVquFMawJM zcX}aV^&Fg(hTSn2a9%=CNL(+Z+zsUTgoKrs9g|Zen;&zMz1A(x_P~mkO4ao$w^ZeZ zdX-$jt2>(`SHdG_2UU5W+UUxt=CU~#dP+%i9*o2-6%sVsa&AU0!42h1a#FJ3zC>`j z7QK$#tQ!L`!>6JfFdGs`2|%o}jR$^Xt8OvNFk<9Y!x$*K<rYKk>}2eT1s5w|Ca*of z%@$_?1;kx0IbJZMQ${H%&wk~M>7M3!MGIB;#tK0f8;Fr*rHn#70leU1c^+aHL|5Io z*oqMM-A!7*MM5D_Xs}4aC@5AbRYTLDiEOMG0k(EFP^d0S$t)5&7Y(8&AI|~6kT|RM zp!yj<PDfb>1K_c2lSwBiCa5exQavw-$H`L|6z&AGL#WX}%k!yRg~}0JrCYtibax_= zEv^R_Rncj&?p`obMB$jVE8wKoBM<@BN{PpUBb}Y+qDONE4_T(UAQ!~Kj<{A!BtL2v z*eLH5VDW(83<=Prs<~cbSw#)^6b-07IWd>X%7P~tWj|y&#Z|eUOe7d80Ea+$zc!8w zbpZ>43kQ~y3#N68#Vw}+4#ryAG-81-Fh$ACdDU~^6tWb;<!U^S;%O)H!4{C=vaHP{ z+-=J>7i3u4-eN;Em}ZV?|C!Npdb`9!>wIF3H>tI?4{q7@+}bUN9zA||@%-5{XHHCA zID7oZKRWT|5Bk@v<&}GT_8*$qu%)M`pU)%e$~4DWyP(cAk2x~q9Rh}Q`B+wow9Vsm z1z3B!%+b`;0URP?yTZ@7RXrX+c?5%8(eY-hYExj333L}H_XMm^XmcGmW?^!a>yuI& zOCCUT+kLiu*|dSjLGU<fYXh2Tt3{gq(pnR8rAxeI&|THBKqBbX@qigV|M<{7@3!b0 z-LPxTmfbJD@|(AB-Z+2u<cSj}Zd^S7{ty1>gCG9Uz?wCC_wL=gWAD0++q(KjxqQ!y z9e8^PcQ(;rg)KyZ80sMcYCJ;V2ObXtHx%HI`J^78TeU)qdnW2`s;Z>h=6QdMhtej! zfbn;+voYVc{OIxh$=j2>WB=;>{d>~b-q|)dGP-v2_?is^gQK<fE*^>CE``NK-oMJX z0e#x<UYL4YAX1;p8zs$$t*8LvkNmP$=+*+BDZn~pxm&b>l6k(Qm;KQiuIH<+<^)~R zqyGl;epJQoIUs&&l0?XD?T~H6TVPC5{BU<e(2o;@8<To!K*lVW;RYcM-}q4E(Z=r= zFJ<Uhemwnf>iVsVQ#URzJh%g^)-~9-VHaIFJUq(BYmR*MUafX@X`bg$SpA`I(TS{{ z(2;t*b^%AVnB+am4IsR+khKWi*kI=Uum?0xpg&z&0cfh>arcPA#$uS>hoSJ=@{AdF z1Fm2NHLZOpz}|vPTWf&`i`;5G(pzrbnndjAQpm!vipMd~3wGvJ;jmc{CjKRp6^!WW znKBtEqua(xqC~%(nk4dq%$d7U(gugS7;$kMATE;dd7*+VSV1Ne&5D(_6jD`nCc~%| zy~OiMuCh=PN+rD0DkQJwL==(|B^6wpyaLF<&J7|fc_#Wwykx`*4r}&6%;W{TGzvX0 zi?^zovO;6hVk#uyyxhN3_JZdQD-=b+WV0m;*<>OiKTRR|P_mQTSWSzW)z3jnMlq#| zF)3#TLf}|UeEyq6$eo_$VwxHia;;u=q<B#elvJf`vLVmZwkkT*Ink2+N<?rZ#yZ<i zsop&@xv<kEiZocoO{ti8nW13GS>(+aD5Sg*R4YUmG++UCRW9iGpr@kC#T=bftX6RO zOiNZ=O|IarBv2Z5z>_8SF1DgLz(ubGbTE_zhLV@vJ`@M%NT-lHUWn$@tP9MF0?u%! zOjlNny1`^A>4%m$t)%kbwg?Qk7I3ow-PLFIR5ZMgOa(t_i-jOns#*mZwk96871foh zqpCezfW!|S3o+MOE~6nQn1Vzwe+r#m@^%q4D-?rA+(N)gcEt~JQkZE7t~<+hIyc8V zz0jHvRw&dKrB=oS))_DEnX07K3$81kyOfSAD_J&?R+$ON8&g+8KqciGy-e=z=XnL0 zS91;0Xvvj(IR{9m>kYtWh*5GG5vnrc7c?sc5jIpkB`x`&D#RkJ(B#6In6m;Q(UYK4 z${I^x^{_&3r})-%lQj>G7tZ>DNQ=!LwM@Wc#mr1}ah{o8y<=vfHn-4K@9y4vaD2~! zryt#!WTD{vnPWGvUwi*YKYIU-xBAv?+IR54o_z<`u3g{Yb%yhN)>NvQ`sl*C`dJ2) za3^)UYzn5yM_>x+lfBZE1hxqZW%3eL$^LY-u<`7>pUBRqu3|E6Lev7m#Z?Da(5xC% zo4i>f7#LF~rO~kL<2^HR&CTs*0h+5M|G9|FQ}x35w2qm*Uf=*%FA3FBDDNg*nwR<Z zq46!xt=aVai!VRCck9C06TH;${Fzhlz53eEUVXDMx@J3f6ztu<aqHIp{(jyJJIC@3 zs<kx2pPZq;C~{wcOq*A7LJ7y|P*Js{!PH(3=>d5f!jx09S|;wyJSA_h(^KBw!2|Ql z3)2s8U%z$b*7YmP_iu0~gT4pSKR7zEc4Ezzp26|9j-kcH#w^$SdBom^njW}NEO0{s zGpq7Xizy^liD;{my;Z?ODW{xmP0~7wBBB?H%0&$!3#?!^me~qvdMx)MGTuoroMMJl zF<%1Bw3}X2kOrn4!&vZ-qN<*B#|8Tkan+KG)5Bd4w27}0u;#PGx&SXAT$-PGeDlV& zn>Q}Z-nmwrdql)KM@HAL-8#O0XM6Y1(lW1^SejmFpXV8hWgfLaC0{_nlJ+)P=MfH) zJp<wn^U@E6EjS<=i0D~xMk0Tnl+;AM4Gj_-!Kl>$(b^K9ov?Qfi-1E6INKQz=D&_H zpE^Y|s|h5Z3Xl)=qMns9w7aDoe*8-jldmHB##^ACjV@)1qWUmmteW&i<`cHAE-Ej; zNl!DY0L6ZGOiN@lQItf@TSHkXwl!yI-$f{inFa@BFp7xls1bG(@YUGlIt0&BrahyU zi_I9PG}Do5NzCa9&{9d_+K*El&B&)F3lUJUoyIG&1dc;9%Chwojx@=bGa@X2R85E| zS>CS1&grS_g;Y(Nnkk93Vj;G?1t7H|6;ixBFrp`(708srp~EXNPsm6pdLqR+D<o8A zG|^UyfB{mhh00@+$}1HTJsJ8mh0rhwTQO=;#df{S4Fd!L*IlX@$th8bgrR6-dB9u6 zTdE>|6-ACtVyT)a=AEgGnPYOKgDaXd4U(+jMaq(7g@`)h)**~O3f0M*X{-XV({fm4 zwyao|t8!b^-T&B%xNX(0#LGpz>{crPj3tVf)!H)A2$2-fu?e|wh@cdtU$sz-@RBiA z+?rYNp8!{w)FwewiUikfBxPrDnJ_eyQRd{N!jwn%sWhJ_B&Z5HFRmU7O8_eN>VQbJ zZSH3<Sl&c*pxVitl|!gFGnZjyp`c4b3Xvx_K-CM8tgZhbR-ri}X~`6ZKqQv%F*GHj z#WM*eRw^L3QaSelzl+o?P;FK+m>Q0BJaeFEhb;?G(xpOFW7a|?0V1>T!%M|4MB*fw zM9B-z&GVeQQaR~d$qxjDsUDCaNy4Nu(Li&dq?@Xem`)3&fEFzcE72m_ww9Gtc_oot zBFTYItU^Iksf>}dnur@A(KO1?L#BefS9jZdM^~eT(G_M2FcxY{otn*Y{h#mT=|ypT ziw~7Ex?I}TJ-BiI^PBcR^U~crQ|Hc|y>RCAgX@>y`;+hf?EBvt-?C}nemzJ(vUYu~ z-a9kLgYR5;)&7VZ`X^J^iu-~H=AQ4I?xeZS1VlAS+Qwau%?izd=)1O>Vm4CDyhq)z z5hY@(ydZv3Y%Fs`B=ZFiLF>A@`ACK_dorF@5FGQ{T7wM^n=rMe!sFX&91wfn-hJ1U znJG99wl{S9zDi_F&e6guf(-G}0p3p7Uhm|kkcXb%@YH9%^x*!zv!_p<Ja**bnUkmA zdF|9YKj<7D-pP9)4jkUFc}LIC@cdGP^#(p)sJ1hSw1!E$)SF8vmLc2S$#~nJKI5T} zs@R81@dpodSsjPzdtLh0S77F5AK$()b!qDQrMYk6lS2RiAOJ~3K~(#<`95N;-d*b( z9^SHLY~9Ae!LfRW-7mnTc%k8+VWB8HX3D0HI)<|pf=vdG{E-#SvjquHzu4e2+y1P* zUPY*YNR}z6^@7$r5HtsAp42GUV;1t=FhDH9M=1EA9*9M_TClJ<6Lk#~*9%c1dD71U z*2OO+Q7pa~#WxuyC+e&Y5H#LK@$k{zD^u6bag#-DdRpJL?d~7i^z7OVTLuQl+Ul$e z@WoKwGs7oq?8z8<o=0=!G@}LwH9%z9Ok+-sR<dT=R;}}37(-d^e7VI5;^Y;W0p)5U z5<9F8p<HCzNr^=%%9i6_=n;hqKjWHDviPJzv{Ullg`DM~wmffOxw!~LG(~W+=7E!7 zS=cQY(a`~6V<16OA;1mf#1^aqv_c7)=vOFEB_&;nyMlre*=2L_61%x#J4moq-V`2~ zRPx7a=9H5%h830Bxswl!xWhfE8P3m9l%>k@l;wbC;wmB)!AiARRiaqI8kJm0g$xwi znc&g$2o77@l&t5K2+kB23ai9e&lOPiw2~$Vti+Ad#h6T#RB&@igB|J;vs@@ZIX(Cr zm^w&UDt1e%UJ0DA(c!I3N%fqb59ta#+t=W@AHf?#QYN{woDQ*4HDHS@hj}@tv{X|D z$ardv7h)A43M>ebWFC|%iPEgrSY*PRuEJ1cwceIhwZ=HL8JQbu=H|Lq=N3`H{Q%X* z!V%BRoFJt|DVi{`G+48k1!WOe7&3};n=l2sQUXaz>XTs7vl1720!u}u8h?bm^(_ES z3S!BAqN-q2Wr6L*sJR3Ul>qcwsS-(5X--n&sa}NGVDm1@_RUJ509Tst;>~$+z-Z>J zL}}rAfUam%XI_Zmu}<y7X<$i@Bb<~N#WBhwW5O}u*2a~5gzhHEQ%ZUhrKtd<kZ=u6 zm_SJSU9F3Gxum68-a(O`I^A0r$z@Ox3HT|92~%R5hQx~cVnAT5-mXF*EB(?U?#D{v zt>_vFq*64brA3Pz7#p7?GISDZE|_qhRh&U0r?^+{N1{71AyYM~b*tu}$v7Z5Dl${A z*s@|AP=ah&_D|3@i^3feb4uL>t^2dvYYpym=1ud<bBjEC-Z!%0*|AN}Jp1B<Th}k1 zJ8}Npv0GOzzj^M$o4lNV<Cc8~4({3a)cC}@T1VUL94{)sMa_YvRUYs!nl!5RQq1rV z2XvG$cS0Skq!P=fC=#Fm$6IY`<b9BJ4JKrIg8`|J2p2&>)1HWT|6sZCq#Vt-Y!+=A zZc{ll`Fv4m+F-#ohpa+LGJtGirA)`z08=0cEE}fn%9**MWFGQzy{m8H@bhEOJomz* zyHgj=pFHu&N9WF+KK|~z$A9{>+W7ePoqP7~-@j?owt=Bhx@K-(7oB<09VhQH;tMh; z!xEb91C?4tur(p`(?Yy7N2B>30rv}VL;KA1{p&X;r*2$aynVB_@JRFazP^!-TgTUJ z9~fEN=p3A1>g0=zbMp)jkBY{J|6pLmmK)3-WRlN#36Fwck+HsFCBlN@I&9%UK9WSn zN$FNaNmP9p)Cwr1%4K>*+?cc!nu;npRUD%`(>Rg9HlTfs30WjL0AGldOuzdg_iQ~1 z#q(V0*IWJ@3o{SyUb=qi=8cQB2a~m>nOa9@-<tIk8@G>*Z)xiqTC8;~EH&mAS(iXu zYjCW@*pIBnL|8WS)e~=njB5~BASkQ(!5O!oJS!K7ntO=?E5vQ|y$q)o0nV_RGR1&L z3__>Txkf0Y)d?=F{?%VFSk-8prYzYB9IGc3rXi@&?sj5WL1QeZ=jG%?6e%+!HEnHg zH;lD3(VtL=?gm%nY-ZW3Nd@XF6b-I0$~4rB8-9M=-yAP--x(@hVDw7AAn4{?Px9fH zDwK7&>RgdrF8dTD3NMln1(N$l!K+47mIQJNWyd#51v?R)$0ur*$|UH(yy~!uo~ZAM z+tuZ~HFCa4rAk5eQnNFz!s!XEfl}5}0YqfLHFJ@U#1h7}MpjglzyTY&sl+b(Q?Mwx zRFo~TR;jF_uq@TmXNaj4q2PyjKb~jGjUc$~TZL*#MW0QZs|jPt^}CwDFi}yWRJD^5 zzzR>wOt%|&5)^*fZVLeb?q>iSB&Vb@oV@J1a&f144l=RigQX;1;X2)62^@vOwsiP& zT7V{rScuz}aSp@+Q?b*!n&7Dk1cO6c@;sv#8jMI5q#ctZQ#ls=upfq8G8!}ja+767 zxfZRrrbce_wtSox-^?`wn<#$Nkv+8{+4Z0Nhz<=5=S9M~df*fS*T94z|NVA-8NlQ+ z<$<M*<dVYl%PkEiWa>laghX~Lt$>{G`ss^75{`E2?7V!U5p<U}9@j!H`XYZVc>zE? z;D{QzftfJQGO!6-ydyZZ*fl`T%@#2*Dx;TV1K5E+^hz?usHzEeB^>pa%oP0QlAo3( zcq){T(H&{ejVF3SJAi5`l*>WFPmVHFE4$GWJZD4jBu)&D6CD#JA}$IR^(T~~8=)&! zL?=UDNI3#gMH(=L5@40&l;&ZUkgYW*8_}E-=u4?`86u>~mM+9=@~c^zj6+l7xU8%f z-%~X@*GaXHi^~O49s%b`@de&_*D*N0^{KU+4}JDa_wG!cKXdx*nPc~_TzcpH@pr!e zZ`W<#vH#%He9EtDVC^C=#%HpJ<~mbP-Q6xztVp6()8-Tv95Oe=7ebEPeNFBiWjQJb z?TDiWNrm*7e<o(?gz|kQDzug(kSA&$8xaLZk*2*eQ6!Tw8wO{#XY+i;s-_1C1h$*` zZPw&BXBgG4v8J64l%59w9UNv8+kwRp6q-B7<LR@ssJ$_;X5TYw4?O$Qg9i`JoH}v* z*vFU7oI3l{AD{i{tM#G&ox67L+<SP_wmn__<J^A5T$Cf9{Lo$L+`B-7{7sciXB9cf zd_$2t`1KY&{<qC8&E4mvgEuEHJ)UHW%k}L>t!Joz!@i02TZf0&a!<qZvOc~yH%A{S zIw;{vxSF9(!H8nT6j(=Ay$6vF)e{H0i$P5!G%~B`*rI{jtAEye9(Wcm;BsGpB4anJ zD9)xs<3f?wpg|Fjt>|eESy#ZN)>IqZYqA7DLJER`WoF6VUm=bu!d3T+S20RLiZpyo zT+%8a%tnJsnwaEsp9ilV>|pH9+`V(>>g2U^4{uHqnp(Z1);G3h<EAxhxAqK-V2j81 zc_Rb*%n@QF!wMGG=pJ4_fNJ$O>o5wK;$}BF$n|AC>!B!dPl@`G-Npi8o|rRarQ~iy ziiNl>p<=}cT&!tpa58VW9)9pZSs^M_Qxu7?wOW?BN!MWHtQcX@PE_eKk;_(uCZZIn zGvT$+8KhU{1VDL%GM89gYm<-@Y*?8?Q4RFmZ*=qDiK(Dw#3Ml*YK4@;k_c5Fy}73% zqFF<@u$K#(%_7TPDyY9usfCI_N-o5L)0Ok*L@&5OXH#|-d7hF8^c;|DaFL{kD0mnh zZ<^B{FI1wtNUEkn?!ceBT=><bs<pw~tAy}Eo)gVfb<Gt)h){eF0qND$cqmSEPVzDl zO*Tj+aTR>5Qc5zWqFQxg$fHcyIZC{0rCD<oQLVd#e9OidRi{97fC}bw7!87_B+t^` zS5T8kAUQ1Ytq`?)JVLD!oB&KadRfDtqZW+^70m`5P{~0<sidSTXXTAbbc<C*x>^l_ zKK^3A1W@`JsS3q<ieB<5a{m0=ips276jO<UrQ}d4ZlR5_b?E>cr3zuEu*>=wvmbsx z4+$g6e|-xxUW)a&4GNQcq26-ysX$S(WS}JJl}M7eB&wuTrr?xBG=2et>l&Jn;U_DJ zyM{PG+(M9*2FJM;(-;upR}p0JFvy@Tk|NSwQ|@X?bSh3QP_dM|7->)3y7FA5Q)2K6 z1!?d=a#MK@F$zjV3auWAMPS5^ji_*)A)+6T^BDQLLlhA5f02|7T4x4_QaN{_LPXHx z6EVIYxxONISOp9;X)B;nQ4Ed+IT9TfYpZTu^-7Q@DRNiI9hl%=Fx~MOl9@=M0G5|g zld8a-n{ua+o7zI1Y?VlHbOnZwJ*#MDrf4$F1H`U|bBs)zic`~tU(+PAvzY0$apUyT z9P)E*^+tF1(8gyzyW#0)pSyeW>iN^h&zw1W?cC{WCyvxQ`=9^%w?6l!Z}2{Tra|bj zxwTwl-h;A`%#UEjX3FM}U>soW%Cnl|aG%Yo?5?tv=MILZg4JWFjHO*I$XhFAF(hj= zM4iHu9L2_mnChZijKpJt%_4x_^I!O1po1sj5C-1VnGQdvl`a?LdN?ycz91;BMcbZ2 z&`k<jd|0l{@sz(_3en!^9y#>v3x}V1{=wbJ3#X5rI{MLt^QTU{`_mKeyjL3@*}P-V z?)`_hZQa$+*93STghvCG>kUmX)nNpX8M{^{mS;LUXyVfR+~d2qCMU07nVY(-r{#fl z_YRNqk;`pE!|NNpBMUq*zo7dCn71>7*I3XHv9W=_B;7y2f`T1_bm^b)sM}}+VWD85 zr^EH`Jpu`VZ!K!!K<;QYfah2ALPRC_nm$_)gmeYQQdp$a!Y7JsTeGsTnqz_L7>loW zrf>?aIi(7V5z=G-WLh+9lU3+kXUi>l0zzM@;L`f?!pyzNOV`idy>_Mc=q}F<)Vg~{ z*Kc04e%s*Kx>~(|aj|oj4>O{S_SmWxZ)DIi3eDEd7XFk48}18G0IjKNkR&i87v-OP z(r6=A60ydcPo_Z86yN=`!Y`Bs;TAHkRgV~0EX@nIqOV-i`FLhT`d&*b;A8&<tlW1k zaU=Jmzb#BYk&V6<I$aYClGzJJo&KqEmxwCj_S1+;GWnF$BoCbB3iC2j36l!RUee<f zs=0<l3`#QjteBMjqJ`w<6O}o#q(7Hw!Oj}u&O4sm8<@ls9av(y!jwBJB9mzF$3{v) zEK0^tRV%p4AXs!~B$x|HqM)i&7A^CNTJYKSrGna2avOQ>klaW!7fd38tR%^XqnbF5 ztiYV;f|TJ(%Ib~`fE?%Og!5{aM^3X$22#;1grl9nQ7~>R@KEJ=nH>wFx5%41fxPVI zQ`wa!)v1t-KuH)UCJnAL<fbtlJ(K=ij}zsHAN9~1gcB+j3O|Zc3Pc2H>uh(axtfp; zNHFMm*&V46y_%U10ZjBHl>~EeiHNbtD?G752<*uz_q8QDD$kf1sayo(`Z99XG>xO6 zCT<HZBAyZ}5(38Q<gPsBNy;<`m5`;fQ<G8(oZo~qfZT)>XFGAUmkYWJ$(0hTCB8to zliol1@3VX7XIrg2EdrHv<q@ceq$&k3d+s7=D0;%w6&NoGQH-HT(>DG^z1AMnp)Bc7 zlqeese%?~0nl=$#T{GLoOX^FN=uR|KY+YAHuM^2DN)Su7Q^9prsyQ+*qtI=cR5)mP zN4th*i>_a}OBR7IoGCCxX*Ep=6;%cTJ|wZ+A178=E|VIbxJh{hkQ74qa*|CVDDjj7 zR?-}?<!wc2S-4y)2__Z+&UZaPt}+5ts~AaDFey16mKSnXB0AWsl#?DxE|maLZNN&K z5c=)a?9b*=`fwqWJ*M)S&8rovaQT+$EJY!0$T39_hr^q`c37)D;vV$2-u{W5Pp#d# z|Fd72x^nK^@%PXD{DX^UPrdZzuWI6?X_2orAjwoxZ;X$wnGsXy_JXH285GYCCSj%r z!BLztM2^o_%_n)of6Z9UkZnvx_@G%E(Ma;inn@jX!6^k#1V_1;&C#IAs3{EZP0_V; zcV2gsBOzg?%9@w^{27Wa8Rymo3JWIkAj}NSANh`cW|x|kEw{~c*T%eNo7}~|@7Xnb zpZn7E{X6H+9zS;M<IAT{T>9Y6OYgnbHaN6%=e}M04{hAKr)OZi&Sxm}Mto+OOC1g7 z`n8$ayZ0wA-@I}8!R@Kq98b%4)H;WHHt!o-yJ>i2ZC7{Sa$D!ZQhi?c3+QF`NNOQO zF4i@#<pRE%MXxDJJZ#VC(AHY(bgDKy^!h!W&nc7^C?=DP9!;D{3Po5P0KuT6`3{t@ zil_nQRAVZrQs;ab(@p=1k?hz8KW%_%RLLdx#e9u#E|6MV0npH(B8VxrDytMC$`jRP zPX*nE!NSVzYZoqk_`}-rT&;Vwck8~1bsLAr)^v3AEHBq*bwdqkfa)W><h2L34k1+< z8J4t+CAW2xg`&ZY3{o#6W=mrTf_&nm65P?jtq8<SVCWVV^G-@hjukvBS8D>Ukji2a z)G#09ldaguf9xx67AhH)OKg!>OOw;$H0v~VQMqjc#y8FE5>`5^gjipZ(d<MNDQyGH zT2x}JRta90!<>8KW%A^OQ>c;xGV#i$l5Bx21H86^w3yB+*=nVsOmk;Tv=vM^Qf|7d zC7EU-JF7;HQcJvxR{*K%K6t*m2G_Hijetm-vOB33j3t{1A0rDvU;v?Hg;JJ;Rj}qK z^(9=n;u@hjm^|5Vg*hOx9G|nwT0<?zw*=%K=H(XPmDx=k%r?=aF%d%{*0pVR)wS4A zl4K6Z4Y-m#PtHdT5_do{lzZbu0J&OM5-3U7sO4JF9Eg5cs~}vL=LO43ZlE9rXtO5{ zaeB&gl@L8uWD$gtM5wwd&nqHHNi#R8O)M*@f0A;vIX7W~PfyrH-Emv=L<>buGHAw4 z)Z|05nNZ2kL`h&+c^N?Ni!qfs%yTCuRW6c{c_FFFiA2g}^Ze7r&m@9U_r-OT)Hhc$ zsPO!`j-UxjRGhe8a8+(2ffF%Tl5-P1X{&0;(XKAf9StRi<>jO|N`2~sZWKt{&~Oic zs1-W~Ob)3=1xzaB)n+0TSLh-RNH7X{xn#yzt(-ANo@F3u&{><GxrJfo*pl*0MBK>B zPUb2I*FhfW!GKjEL63tvA&X(=Vg(~<F_LREC54Dr;YZhGDOFv>2t}5VPD+?uus~a> zB2wW#p;{I$*Cd)8$n+G$ECJj-$5fQGWF@sZ*TtQJ5}!{&#Gb0owmgYvG~q##=??*< zG<Eafiy(#k#fhzy_%0VFP?`}iF)&<E%tHfG$cOG28r%$CtG5qq+kI$!sQcW}k93oC zynkN0H0?8a%|K+IWD^Y>GD;*G!vu^Y3#Im%TTC`XJACqq1Dcde*5IyD1Z$cy{`*F| zK*SkE&xy0{;b?_Ker9HI&;#}VXYS9MEy=F*K<o|?kwaky3R7Y(427YJWEIIKX-1Qo z^epK?FOqee^bchE8Tt*<yIxvmGGn(%rdD@Tq?#=@tD4O!v8q^AC?GK~flMGVB#_9= zxI^e0)>?b*?e6E^hy<+Zabo)#zV)rOw{Q1*w;w;}0!<!{ix;I_@1m1fGP^{E>h6lF zW*!QP4n^l5c|?SJG8`2>R89+G@zgn1lM?wBHW!@$U+b;gv)hL+eB{gD_>aE+jlcia zFJJ%exBlX<{`^nB^{v19=Kt{DfAhcp<FgNZ_%mPn#^3!rzxU+kEi7p9rwU(x_1oY7 z{wr_4hQCLk=LH@;_ufx@_P0O&*$;g9Q+PH3&kNw*&f7PaSlyxw{H;M2r7o&^mB?eG zF~S~oU>GnoDqrr96a@nz+T2+JiHHcrCnSHdpqr~rK4SohU<T(g(hPxv<E<Gua!7Ik zj6mtYa5Sk9PaDarUYhCC1~U~Il+n{C4m5lh7x+5`_%Ok*o;-f@r7wTs(_j9FHxE9D zCupv2F5bc)ao{Hw_%Q-JD)EpvR&eNa%R=J=yN@9GP0XZDhR*0ditZ`6xAfs)<0x<{ zaUj?e&S^e(z|TgIP@^J_BBMYD_t=;`Wm`7wu3LX!fr)Xqg)dG8J}H0-CISFps3C2c zCs<e155(a$;6v)rRSwksz%9XH03E2~<hC1JK^B1VR`woMUSJA9yeIfHA5GInMg}u* z+BbrUD&k^i*9pK34^49gDMprKhVl?R0%l%=JUbu*R$GMxMjeCE7#kf@En+LmJd3&o zRJx}VBBiUClh_41It?KA45DTDs8QWw<Y8kMT5LvIsFn`F(3-i}O4!;9Y?oUS-DfM_ z67CZP%zDkaS6U>&R?rg2CwsRT346ILkV4y$y4Vvw^1@PyN`SEvRmg8d=qXzQo2&Q| zV2A9jFjcBu#@Oo?_)<Hj+dHS_-a19MSoRN_B2VKO(rw6|CCkkHJ>m;G_>PJU#C+B5 z;65hc#mio|&eZV+bc<6MNqI<HP2>tjv%$)g1su9ZSj*&snjyGy2ahwR0cG;kE!Bcy zy*3lWTY{0L8VqCS>hj_Wss&-vZCkL)7Z~ehEn!P>FH7YCy34z~-3V}3Et{cuVBDpx zSVtKqESpYM#$BP1X3&q|gBfqA+g&aeU3^=_xZGy~{+=>^m(E~Ug7_K)%eF7ZO4+?N zI2E{!g3FsLhFk*V1>ao}c4BvkULC96II9a)Nr54FD<KWjz6VZ@?5V>Ib2<)z`d-W> zn4vg3A&y|c=*D~0u?R647A$z%83_J0J$Sqz!P1lp9+}2m;5wBnRz5*MOynXFT(DzJ zgYP$d>z(T>ysZiYzS}ULGiNgXM+&_BJ}xC0voFwT6P6jYYNUxWgVp5H5f0vI@Y~2} zxmx2iMI^Vl`QcS!bsapisCGm%pWfePQe_mS9W0MEBF6JyQEpftHpWuodeEu0p3>;@ z33a)^!8D{N+A8oIT6Pi~>{<9pW^y8#TI)`B0podw53=L01w6*e@zIAr|BZkA#oznK zZ@&4n?|$cRzV(-X_T87i{oOzLqwoIfe}4Y(=In(huYd2~zW!JLmVb}nx%WT+sjqzG zW1q%f-+TDni};R0e3!&y{yhR5N**=TfN!H@I(3Q%nKBM3`iClYcvTC#%c=~dz)cp| zJY4cQ-flzeO$!HxOL*nLjU<S^4~4hWnU?n~G*o&U+aK;AOsjC+$iP@|cu@}fz_Haa zVPclT1UMG5qQUU-PY2*`3uSDOsq#q;v4l~Sbm4OvaA1*-TR?au<MR0rTs->FudW{= zf<(Cc#d}Ju8m+409RfZ_z%NYzK&2rOpIp%A4<Pf|0iHoDPA?2Su>|u40smAHYxG!q ztxg9l{J+^`WTOKRZXZ`G&gXU$EyMYPz{E#rFfyo(gX8itN~vJO)=6bZ%(8dkG7@Ge z$N5yy#IXZB2nUj$od6IX#7wEOz&o(p1Z62<OVLYPypAeklH|VEC{Q80XHQ;%*4>JI zFU1~_Z3x7Mn3dP=*<RFJaJd$tRP%LpOJdBfeb-oc2%VXBp6%ICZv-op?zROIJ8T`> z<%SPfC2(K|6jfomccHbqi|kQbxk7ZUJUVH%aa&7_-PUo!vh<=Ox2_tHf-M-R)g8O6 zE--{|EyW4JQBK$GPbF6+M^PsL-L+e4HyVuALb*zCk6cDE!wVT(!OCT!T4M^PpfS!? zx9ygHi(v{(yMCb_Ma=g5WmR-h^n|N%>5ic`mTOUqt^lxf8S0wGG0j>c105_=4nz10 zW`bg-efIfhbHS=0qh@TNdd&j#12DP(7`(MrR0(h$$rWXx!@9-x-68>F_U$ZKxcp02 z^*}1e1phIy5<I7vHD^ks%iFfQ{>5n3?2D_6J$K0#N?l?Xbz7S)4A(UnszV|W4sRHg zFy(J!cTg{L4J@P5ZK%gy2s#be!lD-M1T$&bySg<V5dvu!!b_Go8URe*QZ#V@L!xiW zC-A{f$_cnqd72JumAVK6v5{P8&jPus?{<XJB{y5BJRQdPOyKTtB(Z$qzYUx>jv*(O zWMI{I?DMk4w?GZ!^kXKRcU<z5SYu@#Qvyq-ODr|7!Gez+V2Hs7AnzfFsZzNN*n)xC zDSKWbQkohCvK$CnQ_{fA#MlwWa{0bHHY_7a#|62DD!CD&A4-fYB00%6#(`z97H;T> zWH$y^h~G>_Zo?@cGoE8WYJRK$3sf%u^hg1M80Rcp`r5z{6|JPs8Xe+C;L!yD^@M_| z;fON$6614&+XP(6-#&cqBVYX5hky5Le{lWg&wlvIw_g4BU;gR;@Xz1;@#~lGd*Q>M z{>=M6^y&9};A0ohfB4Ch=ke|O@9-~DaGi?0;06z#X2*v}I5xOpfa1|BHtx52#H?5Y z*T$+i`h>7k?3qF+GZY*9XM_#|YF7W#ZH2@!CfK{P<fSB@Y>=O1`pOK+te<b)V~@km zWXa=n=o^brn#imgVICz);!r4M98JZsdnAuCvB<|wfvdC2o3lqODL&<Z<umRH7={~C z{DKOfGR&enRE6#h5v7fH5Kuf+GEt@mm3K36z!B#ZYQe*qlywBhvI8>MGYJ7A4W#Ye zyHMb>C7i50dGKw8Ams7T(E*PSJ?c}*WL7k9i$I`#Z0z^RJPExUG`f{BZIAE+|1t5g zrxAz9gRsThxa%s4@@~V8F`&GKhcLFX4pT~sL~{ZXP$DW%*sPb;NlVQfhkH#$dMm_b z^kT|VFo2!NycKJqT!wX{E#@gN`7u9*D}b4+rG1`?uF6z!jSgf?<CB<n@0W;%2(c_c zVzatLnaXVex)HL&3$tbGoCOA3w=bNf7N!KaJV$I{Ta{U;;7Mo%r(jdek<z%(3tbZv zYHqZ^cq_q11A?Ii+kPTsaX~Gra+PHf3>dA`M-khZHGr0SZRv|(xFBKc85ex!2~79e zWd<`BAynJlF8tkCge91&T7Zkza=A({;D~|t#aHU)l10w)MuI7AD!Ui$oyg)tV9654 zG%LHw&0@TfXfrPjOB%cSR90~`hpR#&a@rLez}OtJ<fuz=K@3A|;N{qDCfY>wq$Wwv zx-WhUW~=Z*7pyEH96G{JD$$(+F8QQ#Oy+T!Q5^i_UL>h=vt(b?!rETmMFq^3ssw6n zFfM`NDr-Sg*m{bjGZS7Zn=}PDlS2RiAOJ~3K~(Z3;qHEfhT8_V+X4iMh^^O_ZHuU$ zr2`^o%hkP>3sZvGwq9H8Z5cz{;+Mk2FYwN#X*aqm>P$OGn6Q<j1RK#J>(*$ytG5@e zjc6?+G5{%bB1Sn<fpr*wwVBH#{#V0~K>K%nvhzj&ZV})^0}t`t@%YnjQ2hH8i*+~* zFk<1Og%DO0Tnn={#KMlZRQa{@_yn`l!RS>4{WOWkR8ZIh8nJ1$B?B#pBX#Vx(_)Y) zyuitpq4)^6z>rWq{U}zRT-b87$i^(_FM6O>7NJR_jS2OurHIq4sX@DF5~~j90#Nn1 zW`ghqb$A<^!=$XJ35lhuG60!ZH(XrRV8-$mz)SpfKdl(?U4|S#tl&{IZ#f_%-?(On z;KHH0di(YgUuyX9eV_co-~Q@1{`R969{jWa+duihC%^ioum6KL-+6$)CGq$QN9iFe z;GY`+35#Mwk%a0W?@6E}WZ)r>F8k<fP*}692t^R%J?x{`pdvMW%)lLks6~&V%L;x6 z3&{=xhA*{1xA8a##*abZKv(&63pC*U<~$3;Sm+Qk88+Tb(TM0zWdI3<_d-+&X9Pl6 zkp7XD4)#8K3|qqB@p17i$DcxAVW<ZHeWixO-3|2u^nAJlVf-pYkg{BSNddd6GGXL7 z5*=3p0C@PL5(N>=IGE}2@Ng{1%w~T(;hF;2t;t};Md2?}@Zk*(3-Y5Q7x?QV>Ia5W z=P%ScV2lLVFVnac1w@l}&pl<2D#5K*u*p8LHvd7s34WZv!z8nr*cm&Fa6zdTeHfS= z8+#eiHam4fB#wOCDiH+BBa;9zBEn~o14AogAQfc<+VYmU3n-}y==PG=9OXy>;l?b9 zMqh;7W&z$WyUgR(++~4kawF-*3>66W5@cwN<I@naBFb5szG-h@z~OO`7AD|Eagi`P z7)QET%2jL&VNQ!dx<!Hwhq!Y>wz|(xYyMASBYRYjrM)9EYO^=N##~&(Q?qj0#R0M; z1h0X)<=mGE4PKSlFdKoVP(G_-G0dI{F&=G23_&9dwTBd5lyd`8K;4#ynVc<6vzFG{ zSALR}QbMPrG1#!9<ehESO@ek9E0qM>ZG&vQsZ7T#xpi<M4dBnzWouJ(@ucdIexTEn z1rL2+>eU6pq-Zw<6$L$xG_3jpdj)2{A_^*9ZSopmDl%rqVvvnZ#1ep?rD!A6QTl0L z*nI&3e(k$wYp_q}K@=Am6Msaz?E)ff>@C8rI-}WO@m5I3rkNq$e4auzPZ%{y35h-V zM_4&+Do5Gx7F?=XxAD7{G_q<QM<q#PRJT=o*DM3$7gTSdR&e%}2K}yJ_U5Od!jp#k zFv8u@9Z~k(_>PoZ@bEN!OHdY|EH^j_tlC>Lg#PNVvO9Z)n7mSyy~o09dl`u@(<GAK zY?Pj58{Czl1oJ_yS6Lvyh+w};b*x*06{$u&NJm)^Zkq+j5WE>v0A6hbH6FMS67Rjj zd1b~#=MoDImNxn`a`8oc@aT)_5w9fyS5a-Y`V7HuSg>Q`m)&!X#B6#w0qca6zla&Y zr4p`_yi{UiqyGrgCKn6SCOY`xRelQaah0q@(Oa46F<Ed!lb?Nbv;oL%EHZNd)EOsH z320Oj8%hAU6;OJ|8LT9Havcw&^Go>Lb7s!sGKR^y<(?lqu*?CfO~a1NT44fxiCY~2 zfDj9Km*sl=tOS<QSP$cm7+#${{N?rK8;|)t`)8NWUEe<U*3I+p+&uUA?1kGW&*|gs z{LToB5jw@*dwr?{!neZNSr}DcL8w-hs9}t7)SFzRSL_V(cwtLM=;|LG5*#{29t*w! zk4Gc08s*60KkgJbH8oYG;!r8>y<n~Gk}+5kz|6kkZ!8diGP!9YgB(0+vJz&d!9C{a z>R7qcDvn;%Kt}QkOT4-R-XPS7aZm)&d@>jjVB<)W1cl><1zPoh`OGd45%dyH4?}%4 zPyl1t!yHX|_csO71)<~tg-OYWMUs)I|AD?{5d~<5v0PNdmYX6~OeaZir%rh<m$}e# zw2-OvF0jX&jkf&1angX3<%m%3=)z8{2cS8!2Wd)us>_O9WN6MZ!q#LWaJYG74Q?Ts zDvp~yBNn=qDbL7SOd7j{igZ$Xnuyu=7qD`;=1PPxZ?cfYt~jBxUKk5$s>)}(0XCM) zRKO35c%89~B!uFvV$u+>jlCbK#EwK^!TfB~&>TH)mx}~~k(IO0$c4lVg@o$p&Mad% z%8n4*Ayl}H)gs1tbz%&XbHKG_C`;rsg#&1sH?z;S(5j~4&7qvn(9WUCX=o!x)rSF+ zyXp>7m4S%ti)_&t&@qrJYLOkos!a!h%GgTV%|)CMg>xv;^EGJ!j0~$(g)EMVK#G5S z0LE-t2vm%;``cXx*j`jU&;Yv1U9|R<3XC=Z1D%i&-e@wQ#|_}*b<|*+ocoGHDzHEc ziH3`|Dhvv?QX#<ND7%UZF=e;Qs$&<1QX4sK2&pTim^&~NS4s*_GMNsPPSs_0Z<oc! z-WD_Bdx%wgEmstbkZZHu>20rA2$n4%q*TZWhHXkcDRg?XH1xFJYhMK;-UVm&sU&bE zfT;YDz{yily@GB>tT9E>1<2kaT)X0g5Z+`rbDB@>YnJYSl5JFGP$jnNWbHy6R244W zMb0)17rD&WT=R85=wfVBoAxc1j3%5AsTf%;klu>H0vYDBV9U9+B-!2jO1EU6IXQDW z0A6nevtWCGwX;lnQ797HHnvDA$}o;W3$MT^qV4b-D!<N;`C`MHg|W!dj}{Wb>+30r zK#UhwDU4zq7ZH^FNq@5_IVYCi)yGPW4-)u?Bne2wSUz0<E8vV!6s;sd_SzsiS5zvU zjRbS4h*+jTrV1}MNLX{>3lZ>Xc09>I3U-2D|Cb3^OH&<{DOHzBGF(wEkuH{iY~ZB` zW_~{-s|CH@YF4jtr+~%k0c}P^3K4kGNj%LQNbCvXyXRRXmcjT;yVr(JiaP>W^D;HN z!}@XL@V+|VV8<r~Zf~)`#z#9C#cxm40-I2noJNli;2{E*&*C8Pu>>af*tt-8uwCfg zd)|=&-Zs584_6>qy9NLzj|Sstaes9P8Om<fR>A5r%|rl#|9p8c^rs)u5w82Mjp4-Q zdKpkYXuyRt=MpPq4AVUD+E%kQ7Pveba4|<@R)U!F45Np~6Y;E^<#UWx5_Q_a&l@$E zRU~qN5^$6lptt<B)HfwioC1uER-}Y#$Z6N68KMJ#9JV16eZ^qF5|lB|lY6rdvSe8O z<?arY06TMN)Yt<GhpDzCEU;VIRc)~w**FlfX?Rm9YZ{(q&*ODsqZ4^rs;UOAIds-^ zkmk^lr=Udwq>a5D0W6_Lyqh)q727$1fXb@NIt8^35yWG$Y-^km!#boTaH|4}Xulx) zCD<UrVKBhqkjn?TjAgd~Ot%0AwJeM(mPw>Sq`VE{JojqXL=M6sf<ym{#YNJ*)F6xP zZe@t($Wql7p)GEEl=Hd;>9(`Q0I$P`AYU0(6AAnxn@rt8L$?aBHfA(z^$lHqHX%4F z{3ruvdDQZvI6@(DBEjO8dU_#P?v`}Me(SQu`O0f_sM;;Ah4yaM36l3To3Ry9YDVpx z&L9TNFUW~p>$1JP5D?<FqB;*`Z^fL39O~rCJ^hS|%V-c3PlX=}J5ZT+?1voTh!E^3 zp~7AyEa4E^)2u8;TD4r^MN*go>}IjCT4hr~lvo%xk&DKLFx$D*ZJ%={;92*brT^eV zVRpIg<-k&El~O$RT1DGmy~Yk$*nCt7P(ipF7z{%Rq~c{@Z`(JgHTQdwS*<Y0g+1Cz zT7pkMsci7yNOL+vSsYautH$&i%5GtC84p+UP8?;QtjPi+YA#Hgv7h0Eu-WRiW&9l2 z7y&PuG7HV)IEN89TPh+*Ooi63!XwHq2biR&y32sArR=71tYO7d7z@wP7VR#lf0?MH zg{f*ws7khAxH_z42$j88UJM4HwE(bPZV>_t8O$OIuLmjWaeS<7Ft4!GN2E|(cR|D| zK?`dEIq`_*Te6q}RFFZB!c$^4tvR{Zk9Ju3G&|N><|GU0MFhAPbo9x{cHU&*N&?{g z-9e8J#GjEv6+DHxUd-TejgbT(5%8MaK+DX<qPfXJI%%j^y|E%Wfiy`b5(3{_#$a)| zil@n$O}$1%Ak*qnoJ5P8>rMtLTtr?P!brP{l}JJz5`w^qg(=qh{0Fm-6I0=D;$amT ze-aNaj+UOr*B%<6Uc2h42Cg`@G|e~nkw(i<CQ&)+T@H3u%8Jrv6fG`?I}b8JG!x1G zX;VHT(lG5g5b(qf-BA`)NecYOhx+MfPen};gUvBV%*_q%hv3T$q2ZQ^MkeZ{1u(`i zv1S@Mm<vX8Ws<6h175{YVyrlHKSBe?3C|})FswS3OinLibt8ybd<%ny*er_4=Yo3d zMmfmGrykT<mrOz(F6?;gi9K<ftf%%s5<G9SB{Zbw@B+!(XqsAzN(RhNPEnO6C_ZA5 zg_=GN4UE1MhJwT4-Ka$NsR}8Yd6PK;y*u_yuziKyD-RT(da~#gfi(P9qWT`CF11kl zdYD7Hr31=tVdc+6v=_7_S&l*wF<g{1r<*Og+kONzBgM#FC0M8yagb{eAp2D;MoQ(` zX+}pGlMJWp3opQUc{6jVGzL9I^m%fH*QYN5r?;MHLXvb4R}I57p`iexshsu-v4L(e zb_QD_*c56V0;IucjYR9M1gJ&Wje$#F?gekSX4jxPtXqR<Z#Tot+PGa9K?2Tb^5KGG zBU=Ra7yX+J06-11(-zCcRRX-)ba__n5+43jyWsH7%scSRqz*yxYX{g(Rc9GZlkstB zwYOY|@(XqtOE#Nh;i8)3YnY9OmF)1v2=AR+aOT<9D`8pdM$=@jlmjVK+PR+s2Chql z=yJop=J^MsUrEN%FqvBg4SINuER4f@qODw1TUYUCUehNKkv7ccbbG(!JDoAZ3l&1? z2?%D{M;547+*;klPQzH<E|gq6nU{MQZO;QjU6wR=bVQ`7s7;jSo&5n>C&<aN6KxYt zKj8g>1%g>SNg%T`-4$T}-X@%>V8_eIjxQ<;bn(AwxO0^Cuo{{H#Kdoy-7!cOYjS55 z8&aH8>5GCp16<{WT{279=Ibzfdn(8Vpe>{Uc3Fn2jJ*uTR9IqcY34N+RA!r~CZ$Ky zvFPo<k_ukDI;Zin(_8>!?5%`QVXts|t)g{oh1gQD5hZuX3IV{#!b1o^t3Hf5+mn`m zl?~I0UjA+mHxfY7q`-T#db3okAXdldClC1UG*4$Pxts{=0zO&5zx~d+>DAKh89o(H z0FZt!l50P4FgyR$JJ=~jI>eEVw%E%<6F2S%AqY!GF3^}xXnuPFB)oC2$&7b*St>rM zjuj#>e0ac*K9HTC=H^OFcRG~K7bjv!!UXP`D4CzBqLs)docuz!d_S3E!f&7Bhu+b3 z78PX!4m_h^;9632$P^<K?8prR3c>dcn1g{zkJ>nVNQ=XP&T~M56mT3l9zXnXJRUJT zqK~gVaId(e#em_lect@RnB)Cnz8jARIQaQ}cSGd}NJ>@8dmVlknGqoOrfx8`LQnz3 z=$Qa?VN-R)XtS0;m>dyK_kxEEW;E;oo(rHCx0Wt$@CX5{xX<B~90kTxgPk`@7z6=m zd|>_(4_w5v|E*Xaa=f|E(J_(u(J>8k_D1>95XFOu38WpLK*2wsBPQT78Z(Ip%6Bk$ z-egC~hhZiO$#BFapw(2yaUiWb0R)aG{kj)`EP7!QI1#_~Kz&8mGy{O-*l<%PEN)v; zZmg_^Td$NRBtu%>_t2mTfm+9L2Z%#$s5-Bz<_ea4&DlH<n-+>JX>M^$=tMBuK703U z3YwZ^4vJC}G#lm&iSd3ycEv%k__d(RXrVGdowmYt>k8_=eOVEeWMFLCaU{g2LnXAZ zX*FH5rv(NFWRrX9L#<fY(=`N#R8&^6vp3J=plQb(nC?+xXAkeBBx@NVl-$HlnK9Ge zz3!$Z1nOb|xGeVe7TzkPgpTjI3@Gn#(SiT=yKPwqj?xl7$8>1&bX$glB;5O`iea|O z2rT6ODz7oy*7UY7;3)^|$qSombC$w%0h~uwSE7y|GTbB58S;8NKm%c0*C9Ja1gBcj z<?T^6cD8OIqtM+5LuV*{2ptCX2*wcopyED2V}$8lh|;uUrpw!2wvz!4(@#i>#3mkl zzY^np`KcnG;Tc3@St`6+h`@%vxA48Xjf>U{t7!?#ahzZqWru2m$xgUTx|gU@OE8Dk zGL~S5QVRy58{MI9L|_f_whW$>74HgqyNu7m)sd6DFitGJ7z7ox1T#6NM;cJD5_;wZ z<8T<=OA0MxWp`BZbd~bv64C*T>b25`X|zHJyJPcjnFF-#`|!<DPX@WGGjO;-Ui^i3 zY^g_>g|k%tLY<_s7njWGDD(+oU^$XQQ%IF(f@S)`y8r+KgY9;8K$n4p+S6^lu=thP zy>G2zf~3s@Q@JJD2vo1NXp5itc_#q#f{Rh7#fk`<;9QA&UPG^hkg#aTuQ3CV0~7%y zgNRjSRzqeP0F33GxV6IL@(Zzb0GJMFEl|ifI@1&z1(Q|P-d<kZT%28>pI_lG#j_%Q zte^#<2*l}F>!!dhJ^-M52TX~aQG(A9W#GWMc=GgGR9+bfascl^X!E1`rete^u@@g2 z706X!0CXH^HKTvl!p{`UCm0m2Lb+~>YYr;a3m7aPMeg?E(yLC41{Zxu!`Jx(${Zse z1B$HQH6VjSBUh;w3{^Esqb91N%vt2UJkh|U$t4c?J0?a?Sjn!$o#rwc5n4VoxjM}U zTJ(xqc^o++oM|^tuFub|FP^+}d46?)dqsRPJsQNjIuB%wl&PZA+A$%iu(uhCZ}cG0 zhnPX!h^(;}yOIQ(LCOXTUmSI8=#D}~AOjjcgFqP@Z!a0{BAEt}o~lq>p|Me8C_#}# zVcppgfpQ9{x?tjKoTj|z!dn*D;*{p)0xyjZ3ZjP-sBgZdWJ?ZV_d~9<-98%^Qk10$ z%K!jpuQjzSu9MEPU32h^NNw#@+E4HA!(0rl>awYL4(?{#F#&S~E%a0otawePO&%W4 zn5H|vJ59Ttswj9XdkNhOd227gBxDzJA1C)vYbKa+I%#&8BCyg!D0vbc3wWiP*nSgA z71E39awRQfSt#hTplh)G7>l~tOu&u8K1PiCJ5RWgt;V8+3hcwU;a?4darNx$z~4V) zLH1G?_JJIrVN3AvrNvjq(k$dp8fl7IsjQpM@`_j}r5<6*UIO8h5{8XUyqo3}3_kya z3s4)A`%N*TA}9u6Hqa=Cy;<C>$;t{&m71Z(RD1uBB*=Y>L^;r^C<|!Ik}=ws8=6SQ zX;r@rP5}qX2s;4C+{!!!JMG&gc}8O!lo|;N&CX)10Fgj$zaqzCUklxFZ%k9ArEFjm zwP6J=p@U$oSGPkpemAPTOURLW@M~0q_hjtV`28jN$lcuCSqm<924`gWs`wH}9ni7c zT83|yIudeMXP{i__6badRJjD_Z?#JxeyIUW$beUP7mCV8lrZs}3Y`bIA;Hi|y4+Kj zybIVG%ThuyK!B0<^r4(qk$^E!=;HJf$|MHs2w-`oH{Xee?DtdkWocL`+~OTlc=5$| zNZ_9YNP2@sgq|!A0X$qja3zb+U~_iyO<KPX$vmo&@pJ*^dlLLD6gaL%ylDY|MvJFh zkwA-eERR&Y#LpldJbu;vlPi3E|K*dnUU-Pd?74czC)G90IZW8tFDw>S3FZkhvp@*w z5<Lc!l5YsBqgrr^gJvRfu+<G2*eOzggw$Fr63b`7Q7w67r;VHP^UL@#U;ukS#1u{d zv<!^5p4mThFbPHC^fLry^Zk8|fCh%j1$pt{0N=Ofmj)<Yi8%<sk{_#RlqMp?FdeI8 zSNu;BgZO?p7uaa=qL~FV(i`z5%CC$tAq_TrCyX8PvSHz20*n%NptX&z_#OtmF`s;T zD1+ZNaD%_B!HKA+0&vgj_6D~Gt{$F0et7w->vw*9d-V(4EKu*njB(Ly;ys6`T^(0m zNy@-^3@y5hp~5)xP_cp08|N7QkO9X|b%PS)9fbn|PLC_v99)L8Pku~*ol7?Ed7^=U zDO9ooIY98~lz<!0<LF5o&fFebvd|<rxxpO>OAGt~ItvrK$D0E@pEPsC>Fywp1|&>} z*^-&y1|qu%7GpqaT!xzj(uS$=4Uz6SS=Zn#wS*D8Clw3=wk3UeE7Y(BxrG&e2n8C0 z-DsA?@DMMnQx3q82Dzl}u)KyY0ZpyyY_r<hiD?1vhQQcsFs3ZM)QQ@-4DN{>Qh^X0 zm=QFTcg%w<W4JP)lXqEu!o#Q?8gIq3wIqal&wmKU2UT)*wMP|s8J#8UAeFSjG*7y5 znqtMZBg{dpwp*5frRoV;zKWSDFRO(6fIG%i2t~?nho!qJ$$}|+7e@7m=xw$*BS#VX zx#2N0&7kecBzM;~XIUU%tK8jg1_O*iTL6aT#!Gz9mv-!puc#8r)vzHprY<&l8<Un+ zhVZ>G8j6HJg9Cgp&#TmJ7dla9J~cOrs=!@<w>JGM#lm`07wvY3s=G;)KVJnUVRbsv z?3m~|bv7P^%!B}mCWfL4?nXhze6!kHlk||ad`_zDqj4EOjl>dGY6*^7)XiWq!|C3u zyEU7D--Y*nWxX*_Od*p4t1Y6c(Iiky=u`zeZQQ~Fza@pE&?+l5?#iL)S(8Zti3_DW zAj^sd8wjjvB>UO9WIEONnQB6M#wdmI9XCr?7PaDXRxJK0!{W2*mbk@T)E4A5U6FRR zj7uC;xU{j;1*=%NDsy=A8tAa{28(wsih$ysyxUM(@LzD$0~xE1=(^vlg%QggK(Ju3 z0}DCeD<PK*?vs<UwM8o!dHJ)^-I9O?W{PsC(NzN`<<QcIkAYVZJq(Ck6sds*|1m&d zV#|*_Jo(T5$^Z3duf6iMuYK)ze)k(6`S42@4<EgAeT}EX`Qdav@6UxW)^uof=K_>` z(16h>$}1o)Rx#JHC}Jjh+;`Wb!^Y>+nNW4q9_zPTe#(G-!hg~T!KC6LoSUqo14>>! z=Aa&OEYvxe940cwu@V$XdWil|J#VDIpt95fbO?)PZH$-bmi6F?d)(;Zm*^P+Dm=KZ z<t7X)Ov6fN<_9uZU|}3Jb-{TxJeto8Rb&F8$U!5-91ur~gm~3n0FE3L+Lg#|nn8dK ze{K(7H()n>eDPig09WTvZXP{=d~@~In?L>84_|%d<+oq|$@{<f`=9&#*RO8?#9wwK z-ZKW@-6(PN1>>U(k(NhB80s1thNJt)M+1fux5zM2^~WbUt@Oti!6CHR5y40$WxqIN zxIckA9m>SvAshE}BGC6FXp@z<LEz-+pa{+-Y|KjkZ*Y5{Vo@$WuYtl)8t#6eIz8CH zLUG501I8jWA{;Ajx@JhqMjccm%a9Q4o+h&I-(~Mwxa&H>T>u7UdD^q1W-5#!#Re~4 z1Y?8@EuRl)9w@@Z5{!azST%mZBIAZ8DF*W_tpT(5E^UcsL8{z#sX<YeqEv_C$XAs% z!rBJ}u^k+kG@4Lzh)FaooL`LcBrA5g*=+5wR*4qU08eh|fbMh84iwZp37+_>yz-Jm zihBy#2ef)O07P;``j{x1iG{BU2;$E+%_-4~n5haZGn<T(htoBOr4SMVmgo@|FgUQe zGhw>VF8Q=qG@BCA4I57-xAL-XA#InUqC(Q)H6|@HhCX&TFg{T=`W#_TAOai}J1aa4 zd0q$U>D?5)g&w%e+)ntiZCP0J?6!suLU5b?qRB>h+(}<sV2uGm0(!<2C!qKZO0`@x z#Ly{YvSIH5hClO$;E=(*?O4yd_3m1ngVbZQrYnN_D18ewO#O4sY{f#G<ktC(NC>x> zS5PY0x#V@jSwtxh92A4y3e*xf=&%i{@HdK#*fFK+Xdk^mWYr;omFKWTtnE;`-BHDE zbupIL0=z6#yFwzF=Jx%%5EKh>Q||;AyPvIs>Bj%kp&rSG8BkHFjvz?fGOyGzIe3=I zTLCs$<*!(t+%767mtx#hT(gOA*59R;)vFB66B3p+$H-GCa(T}5?iimH+e4cz)*W0j z$A`bj<C?`*6NV8<PPZ;d;1Mj@qKJF$Mo)S`S(&9f7Wv2*VLIBzz@n=NG&|V_OeQlA zaAwk&7ci|V3s!6j!5GEmhbF<19L^%NU?-!DX+cpJ<GV<#Y-|J{Ds^PQJF{rG+U4Se z%p`Drg=%)tjE(Q_i$7@;&p<7);G>)I`i};Ld`FhLHmHbgYS^^{n{bSSK}<{txc{jW zFkId|e(k$|{rHD3|Es_G*Z=DO`CFg({1?CU_22)(m%jG?k9_jx?BUhT?KReL_+EeU zUEkhd>4Q)N@}uMIko$=hX1)!~p}>*|D{huYs4VP@BSEFvi{IvW-vLBiAaOls44wIO zMAXkvZsxR1G<&2p;RL*;5l*KKLm7)A`PV4*^n68YaM%sjOHy}<(Hvdj=);nlHOk1n zQlW1*=!1@hY>ZdO<yXNR1I`X}DU^JSuMR0jwIdI#ag<m<6y`luY=)RP{9@#AkW)8w zE^!!mZv%$|kFlUE-0wm4xShoF1dmZ%KYVn3{mvV|eC?IjU;FOQe*Eg$TW_dS&)vNJ z^Rp+9d3<q$0LStH?iS(65>z!-vhXscdO{C2R>g%pMHQl*jxtT~@Jk1HXNM;UZ&<(# z)5U`eeE$PBH3)*8By@uZNktEK%REWwh?_Lv;&|cgZ~!XCjM5*);9WC)WJaUH6k-yP z+KCN7(v8iL&|O_Vr4I-I03ZNKL_t(J8xS8sp&R*GABw<D7~D+acS6Ky!Oc=R6M-?) zNYNzGR}LcEHfwOS8Uj`pV@qu;$Kq+U8LI|>-4*SpQbukL0P|H;$jwL|Paz6p^E88A zRcYXgixZLauTuj(sdgu5a*agKAc4^vD0$Fx8<NU~c~~?Q!Y5jLTdK3L6}iK!4<3j? z7-t_+&;}UKLu7FnT5UFFl)0M*5ijS+h+cKrxKmUSa5CE&yFyym;n^W}D$$Ir5z-0) zyU*PLqPJ3pkT9!kQI|pq4v;J3_|qc)>V*+o;$xp`I$TP%7EHd=Zr$Xgb?{DM%}h}T zQ~1d5(22H%uz2_ss9iRhahxkYB{?yKNnrqJ&ODXEhBPO8+izWyg-RN7-=gm&BF=?* zZlpG1JqR%rS$ggPi?Mf?T?IMmAj-1zHlDhun}h(3TOe}`8A6XKVxBQen}tzE>=dwV zx)(X1y4@nnk^s$oS|^UCB(New5QI%HHo-n-I@^;9`|d5e^hW`u3QQhvH4D;E`|wm? zI5HVk7Lvzf;5wq%o?0lrE+AiLcQ3L6Rg?q1z>0)bXDv1+N!n#aV|$*D8B>E@hAvFi zjRPZyD(ZFgz%C1zgG)ykrl~}GkyW(?UA#nVODbzY;P7e#ilGiakMiOTkDzpt*S7g2 z46Y?w*6e2MM`rfE=a@Y^+UQu8(Rk;nOhD(BObEBZW32<}^k!@MG)YV|2CARGii)5m z7Os98&G{qU&d#_AUFB@xt~>lw44^WjSp6F#;{j=hHsefV$_!^lSY(V5C>QVrHo%!6 zlgf0t8wN<)3KPI#4M6OIt{Y*(i;odI4VDBnxuwsPXf?kx0d<FPm%RLqg?6mMyynpx zA@FMBN`f7)!!HJTm4=c`wmWrF!pE9C)=Wce91q^az{39O(dGH$%d?Mv?ss1Q@y~zo z*MIYazxw7sfA4?!$=~_XSHJ%IpZ&sD-uM0wVrBO>ZWSOAzV4sBWDcqb*S81MSLJgR zq$%hAP=SgVBvyI+6h{1hratLY4WvU3E#&YGjtpVhs@!1_t<+dgs(1E)6-Z@8kT+;K zT5xIH$S4$U;P8n6UhEY|031O8FtXD^4n}CxQQ_KJv`mTrS}JQHE<1}B4+4c#FBn4} zqzf);_%C)g3gcct2#PO-27$TjBtDpOvl4YcpU~&>8vTeq>0S%t(D5g?_*0JfzKPoh zmp4yt-+A-RpM3Y#@BQqx@1MQ#+8NgW&p-Ou=Rg0x7aslfpMCSm^%daY<);r2i`zY@ zhzFYqJ?&!<orelMT)9U-wNoj|E;IXx7seR(Dqz;3cF`Uc1kqd_mc}`xV*-tLH~1ur zpW6WtbBnhR5XH}ousm`g5md~RYkq7*X;6xakMdjydy|_dMCNvX>|@E6Dj2HRXlBAd zJU}i)@-(4|m3c}*P7LrIj8q|ZR_9q;fU&ix6>ulT7LWz3RFP@Vyl*pg(Q)LYc(Sm& zh*Rrs6pKTuG6`scDRzbK<5WHf8cpSB&?XA&B$cX?G+gHGraR@vcnUjuh0Kbn9`vvd zgWcqA3s2Ri78w|wJ37;dSx_U8T(h&Z5S$H4rp^7xIYJt&@B<gA3=bM9wkVjQRmYWF zLI-SX+4Z`MJ7ABD#;ONK>K*`ji?Ffmy+pyspoO}FsAvd1VMJ(WJAyX=6AoHS9p<RA z98>j#;}G!7E&3AlGZTYn!!S=ARJN|L3|bk6x}i8}h`78|8@o+fcHpsfK$q<;a2E;& zVIk=*hD1${R%?Xp(|9(>5VzsOr_!Ci8!bD~ZPv7$+y=ICf@PC)7?O#|k|hjophrMZ z4saT#Js1#zja0=e%hHSyV-Eai)=BFSXLTV9iD3)ZzA6^~(nTth4(OtnT0&;deRW8P z36_fYsWF#>VOh2!EwF?#FL0}~ms&+bv0Ro7gFV49j&dgj#GC0LQ^*UcJJazAA9a+a zgeu5^J%unbJ4Hb&*urkg2?NA#aQvb|to?;5Vd4n|PHZNnFc*-MRiKkRjw`m94LK{y zJA?rhxtck7a4bdwT}i7a$ar!g%KwtK!7|dW=2&y&@6X8*`*9{Oj#5G7TB1fck~{Xx zX`S9;2s~I?eXG~HGi@2@or8BUGXN2RIqD-;EkNK5;ev$0{M`>rU@oGmYl}UB#CZWl zMog?C<|4+)w7`fM2H5Hc;B}D%4Z><2rW_>4WDini!p5SAa}+I*RD;$m@Z*EhSjb$Q zT|7KHd*O>;{RdyTc<+y1|M{ywc=?SVfA5t){nxMj$-g{%|NFl1g)e>StAFd$pa0Tt zz5k<lrT`y4;FlDDM>T+iYac8iweem6R!1zG$<al;k*mdJoQo=oJ$ENa16ez`up;G( z8=<%X!JfxEue5L$Yhz*pu)z!jL|E`oLqLg+*hnp}M~8=p9xj*Bb*<w#maI4^84eIN z{SOE4asVhY7NGxXyk4$w262E`8(ZYyjv?Mbb|0W>qdonU)DL;)#uVZwgP~Sg55u@H zzPvfZAp#+94qQCJ=i+Z}c^GaUJh*vu{`lstpS||l%dh?5<;Oq!@fkjMaQWc!!=L=< zCqMJsAN|yOo`3MhPrh?@_HF!413mFT5-)Sn8-7iLcvUZ5I#eix1EYd?pimIUNh8GZ zm5X0w!Rj~^JgE4a2?*!k`xKscTX3(6e|{o64+@i!%6zbJz`0Y)lTEp$>F6jK)5H|y zIN>ua0pP&bCZ^Ix4w#yY0Wkxbm0?{?nV-i%Mh4)n1W|_3pO_F>>9BQKVRMtQVxC>r zw($zFdFy0QayGhsU;^Mp%{;byxT2%eN|`cX7{m#+Gg)>9_$P4UFsLN2$N>Uk4U%Q% zvFT}m6>+C9YMG(7m$!r&wXbEr$ISH^Fb)Lbk}-yTpQ%|B-%N{WM9gIR?g%M&2vv6S zhM{n2pSb%WEV+apV%el_VX?5J7zF{*eO>O<NA~+;){`^}tU5c>QdD<UAth`XU?~Q{ z3Oo90jG65&P^l|(Asm)%TnJOWV^2~OCw=8}<dh{bIF5A*AZ%t(V8xX%g3X*Q?AQus zb62<WpprDyEX5>iYod<s$$A>wjYNwLUIKb>mlLD?XgXxeKX8Xq4-(m0#9^cy4zGjN z*-iwmu<At#4lW#oxa1{kxzaH9;Q|-76S(w_E9MGb^ioSuiqSYFbs;8LD%e*qW89>t zf3N}Pi*FT}m_g9c>1-y6-EO&CX7sTKIQOnYN_K@+mPt#sU~q-hFchpxX&9n>DP_Bb zR?Ke7GFl)nD6lDm)7;6afT<BjKPV<mj2R;tcS^LI2cEKbIjO>1E(-X6Fs(^ty51I7 zg^9r<o4we(s0YmPsgN1+baieS_IT*d@KvVnVhhuubZY|!TOy@AO;em^D0Of+K{-aI zlyV<kky<wLc$yBzkT6>Q>NX+}fJF%xJQ_y5X_+|gMF<r3vGEdte>70y#>EjR_@J`P zwCdzwpl>G-DmWTS+A&tt1jiyuCaL~?y#~PKqUF=x{9HKRk9~0U<k9)X2S50+kACzM zpS^nfCqH}r`>+1{Z~gqo-}~18?~lLrr+;$(z7Kx>OJD!WSAYMd&wl<r@B0AWR>nsU z_`EpA1`A~LpUZo#7`aA8IqVyD?k|?7>;OB178{>HU}n~>sqOkzv@6BmarA8wdQ>gr z$Usi#qr;m9CzBRFlY7s*7ury7c&xJ%8evwGZ<E6n)$*-rmW>xnQ7F2Lzx#k1xw(kw zm$-RUsK<Z83{}O-2aDs>9c#eA1_N7%M{U+sQYI8PBY<~R7zB)}!ttd8s1^?koS!|$ zU#YmfcyfLHt2ci7qaVNWonO5A^4Zm|&d#sTUwr<zKl<s9eB#sZdH*MF&Yruueelkc zw;%Iw7qBGMfI2W_y7RzfOv7GbB%ryUl8A}YHA+M}-Zuk0a9GZ>Bvu&rXPCglt%NF_ zanlBs0kSePm_bhxih(9EKVlF@I`E%2XmGy?u|66T?~c+klOZ-vjubOrSb$PN>Br|W z^yq@%G_q3s-AEi5+>47717_S*gO@i&@}*lCk!9K`1#!wzi6#t`1BcBA&Xwbk1=*Q` zH27~#rroBpWzoARbt#Xl5e}^IDJ-qrn>Q^9TlKWpez%-mV}(4Ez|-XDc-%p_t!DHp zrPzCy#yfaVxwkoOnY*z?o#Nbf|GtG5ZYxy6a@kU935A@5)9&34?uO*0?(lR8KqU{B zT{42Uskau96@&c;s2#ovjG8u)D<E+1ZbwoR&-9UfDPmxJt<T(h4C$-=2rg6RZiah_ zgKECC5Bq&+md^Q@bmLC9dWMvH$dY%5VL=?L8(NdWe6%@Y6Bj?2kD~6j`()X&S1G8h z7gw@{{RGXot$06VSgRJ88W90i)Yi3YVa&YMwV@{Yeu0NSL8_t>kid0yi?b#-{rR&t zZF60dRuIN%5Vq76VDJJc)j|<wRQL;)_O@4U03!Ajv_(NQQep9fSXAjK#!XaYngL}r zyphlG;VyWux62h($WC0|E>w64-3u91Y&~ZTD(I3%$QX*@GC{=zXx`=gS<i`v8idVw zEZzrxA53L9-GPFw0>WwlrhFSddu5({RC*+zyT&RQKR|F$xB$^-q-#OTRgoTn=0yN5 zTom{QJ3h&;U%IlsNI_zV;>SV)j5>Ze+FZTkg@4S#0|Tl+#4&~yf!u<PJk+!bQ#{FK zVH=Z(I%U4_00AK97uWdmxQCb5*O%94kIo+a_6I)s;otuB*KXeV>A(J?|K{<}e{}KW z@wfi?Uwr$I|HXq3ec+2<`RZ4`{<mKG%opDC;)k#B#s2ui1G>|Iao~EA-#(zf8K~8z z)<H<aj2tz6rT`DLV}Q6`)I0gQ#i0J8knD(RMri<DJDgqPx=?*~GIaz7y(#UngNarR zK;1Sl0Z?$@D+4rIAm(x6AYgOLVR0nt){_BB3O5Q%2TioN2Ru5AW($*i>IDDfLFnny zk*shyk&aRFS2S&&QoN->MrR<-{FH#<Eg3Li9HD8p;PC;<XAf}q=HbQ713W))_Riy9 z{^&=qe&@AUzkmJ4&z{`8bN<{zd_~|3ANkBT{?0!<yL|Eb_R%|de;>~n;2SG1F5`3j z>?}S%a)CcKfO%*E%)Fz68O>7FNA&>dv!|*=wfRkZ9THN(rkTKsRWmz@0oEd!y(F^- zQ3By{U~nMtF#&8knlQ$nvItJrhqTN@3;z2rGtdS`qeRE1en3;9b2fyHrPQ`B$}Ly( z>l+<)kB>%Fgq@D0h5!mHl}Xb~V>k*Fr5hGzNj=b5ukL|qo-Ud>c)H`>GL9Ql&lJ$i zd{+T2EX5W=Q<<G-DY${FVvlL5cL_yd>Vk*eY0G*j6wM)`Ids&UPVt@uIUY;&ks62R z$ldJBzgI)pn!8YY-Dr$WtdQ1C*sx9g8L$>Ri4%PCJi8KE@1*X4UOdMb*}L1tY%Nvf z30E5;!CBrGE(@zTn4sH;$_-)hF6yWthNkN194U89+H!ASws)SHMHMr#>MBPPpWJtJ zmyd!L%%UDe*^Ux{$L3lic0(bI`d@u2!9;XU6DdyJiE2_5mxo^oMjhsi)=}Ho9S}@W z*HT_$VXjnZi@hTZIEY>%Lfx;dte!So_H8B%Afgzk!9-VzWX)`c+7q=NgrA5&o+GdA zMOgw%v%=r%)|1`6U&{|YQcY9?nr710B_xeA11m6O@e?+Fh?EnFEgyAuRIxW8h{e`p zyWC@U<W|JpH57OulD!%Ut%MRoFiSf<X@?Qp!4JV=Xx%hR^N7HWeUeMuN4B6-fMQAf zE_fW;gmGW7ih<@%tPF$+8u;{w%CL1y$VfrNVL-uGo~GXi)8MDXiE1e-e0iEIG*hH} zOE_%+!D=B?(7}XNnofPWWx#O}eskIu!4Ps<#`&u(5l?zfQ2*07+s%_57lo*YHE{#X zv<UJ-#8;#|%yMGQ&gCRyaaG~+919q>T%VDU&!*$?@7oJJdVYO-^`75)^zelbKmPg8 z{}=zu|J5&l`R1Sh#b3Pg{qOw6zx<<r_ecNc^25LV<*$7GE5G~IPk!n%?|ILA@fr53 zo9k=UjE{-qwgcFBUxYUWP#HAj(juE*OGk|e-&IkMbq%w`B6!tPRaCIWT3J;hn1s30 zMULH01II@Q4<MoPp@pp8(}I4>6>KzVqZx-48)<lphf+YbQzJY3M4*WoV<2OA<hU8F z4)B<;I*tp>=&p_%6Xc~D=BP`7Sow1(OlBr1I{f(P07T+>EO9#k3+XF<pX50o8F=UV z&7b}Vf0f{S@4Wtlv&V0uLoa;r!=L^1OV2%b_NV{dAD=yV;q1YC-+KJ;=KK*41P=;Q zJ*J3n48(f-0sgQ7jwJ6N;mZrowfF@!4upCY$4tXS3(K%aeX)*(F{c+lWx}#F+i^4E z2KO=4B^+Vh-T+#C)G!7YM^2kE(aj8aITNOsbgGEPQ#XL1Cn|zq{D(_@<3!}GDH{3~ zux{Fwm2uaz81cs=kr<U>0C69KpE%$*i*gW!RI5>7wc0#@meD$ueXcfefskLO*<J)g zxDyb`M#Lg{;=#D~U(7tBQ$Wm!**GDVfbzvyERl;^=uJ8FtR)(q6jf^sY1q>}sQ0D& z;v(9$R7EAg-CW(gpLVkDz+KjkV>22+)({ly2qcj&Tl+`IXJ-X2!Wf-BsleeJS>eGM z*=A99S?-o1IxVyiilZc@+wb4v>M=8cQg?UO(z2#$+LwO`Uepo8A=j{1<nV=b6nhjA zc877~HTJTGYa1CkbexcON@*qAa&1XmZvntEVTNPV#l<kfQp)`TY$sax9HI@fySK7e zeQ}C(#sLs25@44nTv$?#*qrr6P5Yz>n3mi}^t7|@6rxI);+oO{Ch8UgVX1BPu6h9} zaL_<HFp`ey?e;E<DR?XwAp~p#oQ@o0x%Zk8vg3u*#P%iW4zjxz%5a%0E_AYG%z}?$ zO0SajZrI^gp%U8&C*RC4u7c@r-53|R?(A{{53!e0R{lDRZpv2xc<*E@h9UHyIn^Bq z*g$7X@JcD8F$gD;mzvQ-MdyKy;H<7xf%>RN)al(C-~uD2aYLM38`jfa!V?ku=;?+? ztBkF6jGlaXEe093EHtR4#`J<$)`SS3P2f|VFq4vq{ry5C5N&0*Q0hKQjZniu#5Rcb zBXcnJy*WJQYUBYQQ$VX<d=`ND@T))Dn1ni59##w||BWpfwdbh>LXSCi{N)-PcrzXW z`WtE3X9REp2Ml)g#MDX;69e%dA2vtJAO3u>At6|&`DZ+qD)4fR$1e}SG6s)fGnQW* zz;|Xj2rL7OdI*=-H`lip_#XR*m(P9RrB8h06JPm9Z~o#Z-~QI$eCwNk`SVx4`{)0k z|N77WzyI}nKJww;`Qlf;^p&rD;&Y#W@x>2a;nN2<_||-saDhiAG#FY1`sM%<U`dD? z_00rmkY07dqyb?+xY5B;m7YdA$VeUkV+6xU8<yQ30gai#uw&CWft2rCvj{Y*jx;pj z|Fm%cb;z~w)SKj5VaAa_1b>5@w%~Jt@M%&Mh6Br!mcxyI=rj*Ql%<*+s3^T<ZgL(7 zkRSvr&HSzI7Do><EZp#AeE51id;#IZ%d02Xzk2KEKYI0tFXQgO*;~KDYX9uT_kZ|v zU;fx9Klh&ZeBi;w^{;;NG9G5R!3)n)=nM8$D6(L3T=EMkz$jjR7a)?*!H<(bWv6ts z+*MSGgQ>ZzXJjy5M6fg-S=6sCi4XMyi(%(?4bTipETo4{bo`HjWm+Buc3mFq9pgAs zC?Nw0z@8yg5ynOery_@t4)GDLoQhc*F}l9;lnRQH%i9DT1$P<yiyM6P1M1+Jbi575 zAqj02Ene7?Blj{+%@RNPLRlflWC|#E2{5}H2;ErlZmet;N)<R7voUJd-Jz1j-;*T5 zwn3M6?mb=h4s1sa*`?f3P`Y!U;T4<)?rXxKOal17DyFcqD0ng&E<4fKVhYRAp(Pt8 zqykz)Ok*TcDw`f}OhYz~6rE<lkYv|kT;#~J(8wg@zSDIc2f8IjQU{cgEXGmN24CVk zKYgq2fP1%hh3kkf)$Eh=l7(R*p-9b~Wv4Y_VYX#My)n#P#P!JrU$9~>z*vl8&L*yE z!Lh^LhS~*ZB=^M6F)L>FMo6cyoJD6}+Voi&ONUVTX@r8U++B5%b|oP8E)a?ZaqKh! zP>>_t8aiU<@eI=8z9Y*{;-@z0$03WW0+GJdGRhW>jfS;a<)yybdhAGJsjwt1WfG_G zLPceHNr!!{HTB%DJgFnAw*tD3tsO96T9p~OF&3sc4UJz5sL0dZ6$59SjSh0#e{5N9 z!4NCFWLT!H;R`$go<-^BO2(7j$({1)v&HXcBy3fOTy!Nw;)Hsi+TskAy9MErbMTE@ zAT+L74OBZ^l<J3lLv(TBwmMM&-4A=^Zp`>G!9XO_wR?m!leHxe9r8qobTo#cMO1D+ zx}h1+yonn7y;Q?{KdE=YGF$%c9;2asuQKFqa#|QRHg{;8hT9lpyWK?$4ol1EHFpe} zswRp*$+_TBDOHXy{XD!{JuxVJksBI}JgWXxfEluI2IUc>T^=~`(u~ovC+Oq`oW3+g z3c6UHb2!`(et|zLR{@O03J*3ov9!hw0;a*T71iNX<=XH3!4v#Byz|R<ZZ01_!QaGt z_}qIw`qjVn(XajfAO7;EuYK>^fAyVj{^jdG{NA7Zi~sgd|J(oWxsQJQi(mcS-~IYG zUi!pmUwq*O+$DH?#pNIgvC_m{2M-!MgH-yX1$>|ZlK}ZyE*jLv^s0nKaUiXzn>9Wt z8F((SJp$|>M@nq$yu$1wn|NSV4M=0Zq9octHlayQL95{qlnQq?NR>53dQ(KG6+u*d z9U%=kdaGd70A@1qg<}!F?{H5ld(>kcF`)2B1rNEs7$+>t@iqO|4=}t>u735)pT6?r zAK-92dE+PiT*h;c-uKB*<G#TAKK${^NAG`pbNTj@i-)(5-^M{X$9vld$0tER=X&t) zKmYN~Zhq?|lEH=Uvshx&&D<IrIADdUIt7CV5eRN343{Su5iVRIGJ===lN~!BE)Ts9 zCdrtADE50|2LAR8f0Q9pM<py&UE-aHYlPq*!{dlD4LftVu^v(FAf~VavO<F~th`5c ziIKfUs}D}FbEt<`3Vv84kPKFL*e#r3q98^aK*H6OpdM*PwnSIVY}jg%+m0iiDXfDa zV=Ip43em2z7t%thQvwlk1cti^7T`V9K_al3Vi2bs&Ap`+OAh_kZA+%ged1O<MvT+k zF1C_np#))fGk(Vvj_4lgI@GdBhkZyfksNLI;nax&m0s^wgne^WBR=i4bZgJHxVCD6 zT|x15dnA&t0AcJt%X4JnWi8hn9NKB`Zpf~YDKqUZAdT%rNK=N6Ig}nVy2joj7Y?K| zZnO42HBOngXygj&oMy!2JjqI;bDf$p{vTCQk%8#?&QOWD(>MHX(e&Ga)@QTBA=70g ze<~2uFG7TjE%WAncp%A$1{+w~fQBoG9ordHhr=B_NW^xZrt@{#v9dT#Crfh#7|>v} zhfiT8m(bbRYdElDt3l8{n&h2g(<qD-yC-{R5v}=Q#z{iF^%F4@gENE)2b(<9iUpcw zW6Ex|r<thiR@*T!P+g##^Tss<M~`>l5?+9^mnHH=r-E?VO-FU{9jZu$t@1?X{C&h; z0sL!M{HA4ml_`#CFcy~p+lyaAfzipTlp<AnYiu3VLWgVe8Ig3kZ{QGxJ9dw;k(8Io zeV)ClV5=>rb{p_=f!#%r0}^(;t}(h64+5Vkm7#->Qdzpa%YtVjMJNOi?kilddo&K{ zVU~MJ%WT!<3h~(k6`R|NDhw@)4;EPa_1$RF9B)Mph<;TUOImx1V3P|ATHv&9#MtnK z6%`ueRmIR?7DoMI9Q=wWP8&QSaNUT1N&*wjUOYjj5*&a;1mm>WbjO29pLigexro4m zn@RcRFLU$L;?h`{YT;)LA|3k$FIFqKk$?{%V1=dcQ@gmpR}$Xh>+zBA_952#=jRV! z{J=}!_`^^C-XHwqpZ@&Ec%b0rZ~oPruf6hT|LmXs*?;q2z5ipM{PI`6^0_a6{Sz;J z?$Pt_edh+x!t;Rz-Xvf*uv)@03Lj#?(-#^^a9{B03D(IGz$%<eURJE{-P4r^4HTA~ z8x871bQaGJaCG8el13`vL~%6O>TZP<S<xUTf|M_CxN9PvD($?p;61@GU=59d8=rxI zlU2~gj;b_6X=9;8kVqZV#F0cRLs>ZD_(nY?-TDZZMgm>9hQ}KpnLodMaB=(K?CSch z*I)hd_ka58_ul;3&(5x|&K^AX@Pi-!*h`=J=*K^E`P_^6%FD+$7gx9`!0!h<d-RYT zD2KIThice)md<fG$KwN-Dfli49)6f`KvcA#qa3REAPNk(oGmO|PF5akVH7A<PAT}{ z(FkzQgxt7iPnlZ=4uaCLC^;3ZNFunpmIKrpF`bF%nW9CjLizm4IiFwQhG~rQcv}Zs z@RRId<DrAgu@H`-=|O)Ws)P9M2NcOKV&us1AaRO-5S;`D0vtdplygKyB+;k{c0;;J zb*%*vX_k|<4jxOHV70HhODi<gE+=~Gz!H*}d7mt-T?ezd$Mk5%XA)h?R9)+Uk6N_g zpK;K#$iv)w0N9F4N1C*IK;hIl@hQx{&v9-C8ztk>mMpO~LTqWvGO<od4%9xhr3eu? zYzsyBvQn#s1h~ruo=7TxxgpqCxDq<1WS_VdHSDciGi-BJeU91!ifvDr;7w`b6c+Y} zs>6{003ZNKL_t)8VtOx2j_cz@6G~yI4<)6eBGS(&U%_yhi;EI%+y+Lj7-29jq>Jic zws2rG%><HZ&<l2-#v~48TRiPD1I(0b!^>V0p)0+;Bfvj*D#od-IxJ-~tf?B_;$SY$ zJA{a6OcAiPOiaG|P9`Y~>$P-wi>Ad0w@{ZZNG+$l3nCc?`wXBqvyje|GjcG5WH(xu z6{?S<6tG|~KrnU=<GTg24>^Cz9}Qszs74n`+mH%zAQ*Xs-?#5}qW54w?4W`$FEOQ- z032iw2HWmv1MA{U+H0c4zBy3H*)(gW+8I*7)&zmg17M<EIwPm}88^9#cNPX_NX~u0 zC39dWNc|4c5(J>{dQ8w{=G>E@jtz`d)gCr2lE_4x#LoH|dO%X;2Yj%M0P}7EmEHif z_@Pq9R?s-wQDSGTJlz<$@|_fzGJjfBRxrTsZ4_lwW9K@SV?a|4J_NoPOj|7k)Il#5 zVIDn|64#vg(aUIFf7p0bz(c}}@}5pQu=meunz^J4O2$$X${EPPs%#{sHdx@NQHLC# zWXF;UVIbgpzz|f%#SNY)c!Do7JiER<yT(V|&n|!K{h$0hfB)lu@Q45Kr$2h-doTah z_rCSb*I#?(kN)5P^k4n+fAL$Nc<IZ(`?W89<*Oh61U~xy96oq(b&ZC(_@@*2+&b4# zu_nI3Z35jFpw;g?<M{@^>55ADVF-9oEh1bgG!G{!*(JGEYxG<Q_cgkoOLYK9#i(rD zNt*d!gZP|BP%UIRL7_QajJW~?F(*?Kz$%>~_Kss8X!n{?!Ai_N5NHy9)g280vXhea zya4V^;O`Ay++O3)75?PMKl<VK-}><@XODk@h4%T2@BQd!f9Inw;m=Hb^!ogTtJ}-R zSNJpx-__<g^0v?gKS#p)R2YUHM}b{+PdI$+rBVWpM@M+4fKHAQHdTwA`yfFjOQI9J zTCD?Vu!4z~#Wtl^&!~gn$4vt;g=qwdQ5<eqXiTW-11cnCdc0s`I1GA5hS_+a_`wHO ztGR=YqBB_-ViYNADQ-d+0Sk@djHa^3AR9an_)G?%2JuW}v7+>&11?ntr?WF;4V`2X zij)DtAZcybJEf#U5i8=?pu67Q-bo6utEmo@N*;3+3uj3)Ie2&_HGg^bgegx}0ifgU ztvDMGs1M8)T)kLQBF+}gYl_RHF+<TOco45rLE!+}TQ{a{xN1my?vcr-T!z{1*0qPl zFeu)7O3M)=cb78)otJsvH&B$o2pG1z!P9xE7&pDM&0I$+5*WrFXyPqdM=$Nz8>_&m z4$zE{o|W?27wK814pNJ?xP~nBg`aUX&aR+PYeA*Y;bFFMagnR_G`!leDIt4HgYsuT zH43nLgKMr%1m%ldb@F7`ydN<`nh~yM&P2qnrHTs<l8U(4moTgLc30u!$TwdTTNaBW zjCyFZF=E;-{afM&8e+o72(-X*4m_j+z@1wn>k5;G1hg=l%u+C_MLdF1DqM|&k3|n^ zm_gNzNtQv#hf{q;L>294{D>RU8by!#pl0BXB*bHjT)E#PT?y`kSz@XyBQ_J~tXd;R zY2g|59$jVytPD=z!G&CQpepwXnPkTGNLmlJf|W3UX{y9EO9w_0fY=Hqtu==Z$7C8r z3{evE8G~K=a^Dibgw2>V?<Jjo_!MJ??Cpc5vF+rqK*1J3sEwiECD?fYDZcsz0>CnY zV;g6H>5bgQbih(esT6v$?&xVY*Mklu12*7Yhg%%ps@;|VVJFx49bN?JKi)y*m-hQN zbuFSeMfik1*MQ7|w>bGOz226$L8}=uXEx+gJy|ky<7X^(^1!F;32R|^BmfoAKm_AN zB!t#ecrREMtivFn!BU0Yge)-L;=~sTDwOp6pgUZ6hnQ~>qho{tf;?O*f|n9McfhdQ z^P3C2K@IfnqxXLJ^S}S`FMRzEuYUT|AHDoHfBoI>{N*oy`0xMC_y6zz=AZpPKKQYZ zfAPz|`^B&P-bX+FsYlPfh(COAg-^gEt5QADbK;j6B0k)XKcR^H@Nz?k_+~x@exW`` zL>)zu?3F+$kuvQ3k^l`Fmuaq?p>*?~4vx6g5r)TsgAtofZ3=qt929(OT2S;HD{G81 z-&hBmmeI_B810lz)u<tf1*S$dE}CX-uD5~(WyM5uDX(!?J#_Id1xEY<-?YDc^470@ z@!C&b`_7MEd*$|*zu-IkkKXg*OJDlfCqDl{ew5((>znhpZt(~J#)4B&2M))ai)AG6 zFz6<dl5n74=2HOZ8Zfx~15Wf&qs@UJ31$u-C1H7Ojm-nYG2px9(OU$_pt99J_TR&e zyGitdz&Zy32LEGc<EX$&Vlk3Uj6m@*0NsBeB_wr#Rk1$No@18sK(V{%4NkfnoOGnd ze}}j{MWdm{T&YhQtt>7!ut-)@LDb04-8ued1irunhYC7UqDtdfqBho`2=R)sm=Yi; z8cj{28FXUP)KU;5X1c>L;SasP9*1*OrbT6r>RFD@NDOp&Wz`Y2HCv1?1Jg5tdn5q0 zX>f)?Fxn<lDgraKgyLBRhg3TU$eg5Wr1VqH;L^_W5xQr!92Nyo&iRI<o+lMzPM>m| zxt^ujvdE*X-QHz&%#F<DEAHkTV8aSL9C;Wbyq%W~V`tAW&yC@!3=+`Lh5z1a1b9ip z><AVsfcexU)^!ZtAmA<-D^s|vr#1I2?s%*x5R?jbeyL^aeg<x91aufJ#R<h74fu~O zDP>}a!|M7(fCG&+l|mg0<hpgt$dIUUbhnWMvz5}~ebz*6&bMPxAF8W{SHCvVVaN>S zFQF0^(lu2}dxq0k9aR7|2;PDsC~Y=e1&+`Rc&2?7upiyrCF(Q*ybM`%Gwid~@Jw!Z z)IY^IXR_l2A(wi-nBf_yCGBujmO_*u*Q^yfeM&r8cc`0x_3qI3L+?mmRTRpmbI3)M zjNxj4A^H~p5w;&{PSCDeVeoES-LQ-kaSG{y9ZWlVhIUwuy<e*+^ak5R5GM7L)4)!S zVJJ4zjQ>Vsuj(}pge7!@J5SiD#0XnFY#C5LA(D+~l@&!eT9)+Klx@1GcRBr0%T(O~ zbnRJCVA`nCI3y;_RNfbRn5Cncwq<5czFj3*GS^WDH^CK9!Um!~-G|T=(ZSe}t%*Sc ziyd*wB%+F-K}KJKjL-QLu{?$&Kts<J7qEPB2=Q34-lybB$}1qE;N^qwShEo0O4v5h z8ds5&*w$%|Q-J52jJh+?&py`~r7IK-6KeW;&&#TCszhn^Id(Ae<noA!p8eJ83;7|k z7B6fqL1S;VhNFdEEQPpezd`8j<?Zdm#~2YT&@P_5=L0YOt-ts2zx{`Q_ZL6@!FRs> zm*08$FMsmtEC1@{@BGm}{ipAJ>2qKC`d7d7m9Ky7qo2Z;?qA(L!Jk*e!|%M;z=z<` zJmDt~m<a=kI|wLJL&qLqt%{{zZmLYhx*~~gT%axxqvsk6F8KlHs9=WyARjS0I`k+Z z5&Sf{fWWaJ`uKKxL~%u}V$`@Oi$4AwVUEAxbU^cwB?mVbqAG1*KK)~H_`?B+!kril z2qw_YTW`PdqaXe7_1FIW)lXkNyL#*F;pL+be&my%{M?5>{<+H+K6HEb=;{VvD#?f3 zNrC$;Xu!>6Ffj|h$X|JQBLH3D=S`v%?lANM^WK2M>g{@TM4$YCmHlvxIIYph|8OC* z+-MAi$|0wdOLg8~z{#K+EKVpmM=5!MMIIWoaX=(%v^bui6Q3jPyy48jMB+Uhb{wBC zh?#E^bsPafYHGK$X=stQp!Aft1iFX98w9w~RiW%F<}t^G_bhxF;QbU?6bCF`oanUa zBs1S&tr8>{*pimWh!#cQ9BS>zzK3nLXA3(Kr85Hwjvy=^K5m3^GS_5K$D(&NbE?0) z-3Cp!n^~Mnp)4JNWL8HMXXVf`Y_q=yWD~PzU;(-aL=OkA3&{dKcZOGW>tr@UJQzCB z1WY?L#W4!lcCu3s+_Oo~%;iA0J5{46?x3#|ICO;8K~zU+iDL)`ZM=$82wv>aebEcy z!#(2YiKD?N0X^JFL34LlKWLrxz}d`^r&%(!OrjCyc!tJA0=|*4r`WKIj(QNKgo}QP z7$=MrfHL@ZgTZ8Whlno+l*6+0l2M~#(j9Ii!6D?>!5r?-9!<;)0RRM87DKCMm+m$* zbvDQzPZ}}!)!P<Aj7M)`@K6$`u-qYa=p^HoRI?`6aE3bViig%onP5+=B$Mlb7Nbm_ ztaX=@P;89H1V|biLyeP|<DYXfB5*wuxy(M(9SQ3~MSC-)c(S%0VBXQLfvvIuYSM~t zE{i^UMoRYD-P5q3diNGu<svEmqcb$-2$GM3;ft6d;~==_$>C@hmt(^C<Bh2MAqR)~ zhkk!)WC{)&7Bgo-n7Cu-kiut;gm8LDJT97T`sFnS3L&%sn&T@j4rN(3g$HpAFSG7$ zM~)0%g9hG+!pUK8+16k=f?+0N$6#R}u~BNR?LNz*KM5mhN=Je;j1+=z8v%vdf$o@s zfjLy(NEM#V?uaBybU-6qI?i}|jpQI`!%Wwiq+guU2xy*)5Q)tEk<Ys{lDbYstatDQ ze@Z65Ry9h6PuIuf<EjM*inCaSP*WZVOeJsZ2#|@D!p-;4;{kkuxt=1u8V3^QN0%WK zFC@zRT!52EV>EMf*6`#2f)5LzKjy_(*0EYV69B70MB#(n{44Y-3^{;cXZSX^PB<W3 zK0fx%WO$1G77rBQqXZBiJ^#Vae&e@4|GR(iKl#~DUwipm`1HYFz43$Z{n5*R`N#j| zfBv!0eEQ2@`@PTp&euNlkx!jHeD0cm`{3-F@6YR23%}?MZ-cX5+=x)YSmU7(%BVtv zKnwn{0@a5%yIGHiQN3kX(hCP<aB7*xQrY(?Uo7g08{LVJk?~C7L}Wnkb=xOmf<c*S zsv0=N2xcFWgOyXW$HnUDf0&epJ_uY?-d<kdFBd+(edm{N{PYK}zxv%be)8(s<Ht|V zpF8`l4}Iu!U;Fq=pL^jwA2>gM4tG?puF)B+jkyfQd*=MI0Vzs_T<9hb7^dq5?!KTT zn7ESV4H$liz>^xs`GSv!s0QyK;$t5Vc&|jaMpzv;^2>nRK?vtCRwwy5iZ%rEITQH! zg2o-G7|MG>SV^N&j~Dm2al!FXIB@*@17uVOc1}FXtVmN5pN+s|V=Z*ELrmeG;IWC@ zOZ=rr*Ws2<0Ij%XVCr2?TkKD`CM1sR15|@P@J}jglCmrv1Xa&;{HFn8hop!D9fO?( z4_lH~jW$qSOo^QLM<Cnp+beMfc#fI1IX5-<QR!O6mI{cik+ImKR!uOe28U<n4sAA) zMC?uxi6Xud6QynVGk1F8;B<AHsk{(Cg>Ax+JrBDx^?btj#<6id84faNSc{uNDFKwu z##0Oa9K^x2hOHbE@?@#X!y16XRyE%vNN@)2V4Eq&O|ZQ}^TeTV_~W!nCtMzeL<|R` zVAWMb1TDE;6EQ0mOoAetPI|;+%S2M1wP9Tg)rMCFHY+ldW<*|a361WjOZ|-avPEKE zUt<cz{G0klcngW7TZ<e{u{i4pN9<iYl4M`CPo<53`xm{O37y?8N79lt6;}i`-4GZw zT1pmPpOzyH&FL!UOp=)@XYpDX{y}&@DN;tpD565sTLuX`)*X|etuR2iZO3;ncKHd{ zXw0!NH9y5vwNHg1*cMf$noT*!g*<MOW2(HAWRoGG$7B`PAYtP!ekgKoU?ZI<kt8&# za<;2g14jXE7h*DD&&}4zHVom3WVGjIQ#lYHm&1`fp}8+`8fxD>O)Pg4<c`Y=idNbB zwXR{h*!tzp(O@I?A#j(R@@gU^igZLGwKj^#ykDq6BXk!fqdmKRq&c#;8b&|DnAHun zvy7UC-xT4=(V&s03`l$G3Qy+An8=1OF41e|t{=*Ca3-9s$7w)2L(#Erz@fy3hI{|K zt6xd%pnut7fLsgN_&;VNp>||Y49jdJ$SDECyOn$!RtSEAK&L%8SsZ6KAz<PAnT`u1 zDz(>bOwn4as_Tm85{dj=acCizeN-S8AVBr{U?3tcGg?c575{jZVRiT?0ZX*3oB=AF zMdJ_Uarx^W@pO@wwJ;9INC<(qC5Vd~B(T7b7Js?`W>kzE=MQdin}93M7k=x5pZ(ka z(Wn2;AO1tEb-(+~fA{jY|J@H?{_YRI`R%hu|E~{x_6xuJrLTYW_x|Ad_kNgvKaxvE z*5sY<M2MZ)wP}F4%3^<57%E3PZY+^yuryfnAi|<6yxfe`s5nMY!qr`7mJAHgJb?T= z0Th_W%pOYxC{O{cS{o}Gq~J4QfCNb@hJ;^7js3y*I$S?@aeH&~i#LD%lOO-!`#=Bj z56<5F8E+Z9@aTP?_|(T=`r>;(^wPz1@4LEvbba<fpU&W5@#`CTTZ+T)QdBTKH1O!e z6w}HT3x4c%^mMyGeM6s##$6iN^hpn@H@DYZwAZR%<7-;pY#}+02n0<lb)DT(N0Ei2 zfo?%Z4Uq9T1kyqvr4OG*2vbk@HIN@0VtD&XW2#&=iaJ6dWOqozdmpzK7mwIQ@u>%} z^OgvT;7p|ne^r2Ajj6iSWQ{IX(V%nLY#oQzw$Y~n*+{rSfP^s?I`dE;DPr^@fQ;@C zCu3|`N9ylxe`mSw)s%ZbqYei8l?4|H49J4b!bC{d9MB4)$nlO?Gf-bB;IMHzE;}eO zsS$oKWq4JyW|;Iz8Jr<?uhXc78GCH>JD=OaTTO`jlB1KLfgx_*ILmGEnSfLWaG0?r zXAPc%n*)XehJ=oN0gHC{CZ6;&AiGz!coJpS;w(Qo5tUsHfX{D(a@?SeaFw#CvPEMT zDjOJ;Hq?%m9Njp9*o1^(N&{OC$Ps?BS3V1+>XJsLVuP!z($pxXU}>+bXHv!<!-%0s zW1>&(M-`RiX~K)TqRWzkJe|`}Sa1L%%ox;;Yl!BA@Um8Kpmi3}&jx7NOj(|8G=)%t z3EGj4CCQKsA8i#hOm|Afb|-QJ&`Fjx=3XdYZDsP6*Of7VBa56&JB4gUXOj*FL?LKr zvxB7bwzbUuUx$|6h+Ic04RiVYeL}y8d74!S1jF(YT%OZ~9>B;|E)$D~Hmi#f_QIEN zI<>rwW`izY5JIobCbVUwtcVIDSQizPhS{SK#}$nQ86CFkAMnnR&>E;T4EX&e##Vd^ zQ%}+uz^1k=VVwe-+oC{5#@W?!BNW>{J3XRib25hkWNAzzVo0QXs_nj^(LZsw8aBBa zpTwpc>tL9>+Pf8wO>{D0q&W9{^&+^J)8%q4#z>%Dk`5cex@w+2A|qgtoQ$UqYJ|eI z3f2btZ67KwHf(indAUQV%3#9)y4l9Yj_P_%LiF8OKmv^g4&L9T6Q?CJQsj#r;7)5~ zhQ($qX*iN20${#7t2hw|4{HB|#th`+mlaTmcVf{uzC{mSym&!X^(2Rcx3KxaYZl3c z8{eeIa_^Gwq{4Q2#jhs>?u8dW@WpTZgD-yl@BPny_M=z7^PRu??svZVv+sWUU;g#K z{p-K{lmGSq?tg!I@dBPcK(Y7|M0P6vyWi@Gazg-JK%&1=r+jyU^{|@^(KaLx2i^RS z4=C_{4ab(<&|~vFI1#FzAQmrRwXy}BSD6yL9A+ddBMvmEmV25gfJ7eqA$#Kx8P3tA z$Sgc+%m9oi@uwax@w$EM-+%w#z4qOId-luM&+umoo_q1(M?dw^Pki<xzy0w?&%f`< z+4J}^$Lq&<Py@4#p@_x07teo)D&LjIA<-eyJN$S<9m`g&QeosU;2&Zc&O^mx6}5An z&n|f*keT>F5-qOru06szfanEg1nU+YboeF?b>F=5aZGtHN*g8vqY#5Ajw@#iIIzRa z!qkey<R)i50l*2#;^FYa5fn9S6x17KgP3;Sm*TfG$_^vZQ1~B2+91N{M%}QPZFi;B z1dK?pJVT*`j~I}i9mBUdU|i9yyg3jBM^@7!23yo7dGJZ?4Tnh;cjJ(!NDkRjX(BoH z?s-~b46=|a$H_RR`$adap~NNDmN^Bruxkp1f{@J?G=q0VWS&-Bnnvo9N?2)Hc)F4X zdK1$-jCC*uIV2t>V27=X6-;-Lm$2r51KXhTakF(Br0Fr7s$+YoBgY_BA+~m-d$O4+ z5nj7FgvXyhYZj|2V+if8un0n6cQS5**Mu4a*4aG_Y=<;+%Z`x1$O&+qA?clCRt+d@ zJ?}t>focii8+u6CVT&<X$V#<<mO=bqo}gXzFfZjPrLPzfka4-+bVng9&;nX-6=2oO zPPe!+q5)^qDJ`eXmXns*$_u@>nk!V(*u?Bq`D|#&@<?#6<wmnyawDo?kZHnHI+imP zw3!}8<g}SN)0f_%cWI5$pk&W-AKjzs1DhkpXjzN0LSU(mbYmf#P_qTc4^e|rKQ;gy z1Z%xw=|&}u%-)64@*Ri?%zaDSBFbArRHvaUV~e<hhsY6T2`#qKZK*a4=mcN{E`A=p zfVbU3Xp*8TRU{5W@-p)PHP@!FO`#K-hg66OmRD+&U3Dl6(^kk#WWU;_BHBcgmw*I0 zr_r*psX~tIz=)0D5}FKxZYJ!0TV+ncG&^MZD^s~L;wX{)Y#MO7u)x)(NAb=PycTiO zT%uUCGP6kl#XPi-3AEa&VSK7>#I|m%H4M<y+nq#=95XHAirJo0Bfhg!&L8wU^foDA zJx2-+Zw*wZF2Iq%K&*W5F#x=^t0G{)w7^d;t_a}9WY-bJ0!(W#SIUEcg+u;;tL_1; zS{O;{yw(e#28%ROc)2cSzI_Wg?<+8bt!9Qadbn0`5d8>-jeo9CIHC}QwG0<%c)OLH z%>^j_IN{|J{M`bP^X*rr@ZwomF7%k53qU?7&+N=W7~cWr3W*AKdQ<xH?BP4tH*fQA z8lJuHBcK0+kA3>@{=I+n`VYVLU;LB*%Nsxa;nmIK^NZ&(GKz|h`@*d}ERNkFKL>CO zBWy8#o-{-nCl=z>IgY!-8KJL?fJ&_Gc4B<6G^K?cqUJzSV@e6(R1$K@ukH&-JL{vu zX+VH~bCw(2w2_4OA&AtJfZ^iu_QBOVKl=7xoW1qhqxZe<Lm$Ui41E5#-v9BNvlp+Q zT)vIJF^MlF@QoS_H8SAK37Gv>e-;9xqtvQVN8fLt^Rol20Cp|X34=x(Vqs;sWZ?j6 z5M|JN{d|goJvWTiDn@;f#AD7LNI{bV!<fKDF+4;bJ?F#&Bgi|bnA$|NDUjX7+|qXn zpiF}GBCl>C(5N|#Kvc&nkkl`K%L1k!?|?A2ZK{ko5X~MMfuGO}48vp}P?~*D0)vin z*)!%O0vS{o@0@8+nUO=Lg5ko!LK`8>wYM?DPGuM-j+?!^2*qV%r2FS~OIn%Wf;^~6 zGHbNtM$fLd^7QfxSwixVrWaU%#$#JEWa`P(7)xw`CYHPRAgUNXO31t$XVfy4BD4ak zD=t^|W(#=KFgXB4VjMl^hrG;N*`1z&3RctVjk%I(ybn;qvexKHs&mYt)+b_ucrw?p zF4+Q8R_Kr$9){35Mn=cdTlh?6gChn&I@PSQC}S{-r?Sd2_?@!1BS*JFF7A{zh9zKD zi5?NNk6JHv)dIbSXGrW9cd1Rth?ZX7f((bCXs~&>3PaBh(Fk>rbp!8)NB=9y!j>xh zGuM7V$0&pb2twOA+MGPjF$g<J<{x{}k`OR#6=tFA6)?d%b;(6hF^57U%Y2*Y;$2zN zk^2}@tNQWF2=d`SthEWj#?ZxUST93z7`h!uGcct1W>dO4l(uQ>q$8XV{Ro|~2g-5< zomleXGY&49=VJ{OTNNU2Y4WwkU{_}zw+*r{=8uMZoOk;K8|x-<7?#@akuYnUQWTA7 z*}#%x9dm5K<Y~B827Py{@HYIrz<V3b*mxtdD%!fH>9Cu~<s;I;#Wm)P!f3DYF}Mv# zOlJoV3gMv2GJd|h4&>`d8)3n=>oTCVcb!AU)ne{1dN}UFSEc@ezEe_F;m#Iq3AQUy z3{g+IgbVD5h%>+;j`!Qr_<aq_5F9fl%BAR_&P5T9A`!t>{w&Wc-)pE?GXNW_WlRM^ zrD}(FE1@tO=(sq?P+)~Y9L)Oe0<G4SM>B_G#kZRIM;EYga-meggJ&Q3#xVpgVel~n zEIThA0?f4;KMxOqA8*H!jCtG_bplsb#%VRmy8y00%Ocjs6)6_nSjn*}7Kd<fT|T~j za&?P7Joka${><6sBiQ+c4oJf<8DI*%aDTz$%_JBRD)6#UY}jG%)EWl_(JWX2iDwX> zL?<nd5n7F|*zt9M&Z6@zhYG~*lqwf58BqogvECJDHr1helv_i{9DK<_QN^n=)lEBV z;>MLEu)2Xl72|jF<T2OtkKXrtfB%2_@WoHOef!+wo6DQC2l0@A0`X`D?#Lh%m1vc$ zvCxq~jlL_x&N4ZVP>dWjj*|;?d8)z<4-jty5#+}$1jV=VYfzwoON;~{HNWGK6N80t zJXsGsc<I0p6XU=>;vYjWbo?*`AjlL5?8qpPLV%B0Qu3oOo_B7=#RGxfW1g~e5f6!x zC`;tBqoI)={C6H2MpTTGjQ4KD#U4kY2*gCkAy6$!k6DKA+l)~mjD;})Oay3nsYi93 zmnXLHZa^eezcaQFC8Q@3vFkFS)wt-aWLaT19^PaK{wd8MJ(3FEXd<O|1rP(Y*)Z}) z2J<8c`y_4^?3n0{AjV|8!}D^H6vGQkO9*?oa`ZCd?)~AB-6@tA95PlNC9s<E;;1XQ zYARt0Hc#uuPDa;{c=1~s?O{McMuDyB^xC;cg5!Xmj^H8XxQhd!72P3l5)j)8001BW zNkl<Z(uIQol0*Pt5v_;Ouxcsvq|mkH1*CKlnXa;Kg@ik6Wh}D<ggLU}XFt71E+F^H z-N17Il398m7CI7?`vmvBYe5UpiHUAl4-_d6M@wXXvux__43b4tm4>^8)s!)ifaVQ+ z?dVG2K5Vi2M_dM>J4G-GgRw`!VKoyWr29$Hw+5rRpysiPc7k=K%bj;u4m!jfh4uVJ zQ8R}YM;0zYH8=zpJA_2iR`UTy+0&UUFmFu?G$NeEuT0X?G-z!>yT@2I3c$GhEF;NM zkK}_p9q}VP)!YX=X%;H~aE9NI?uDhRB^zunj7|x`7PNa=WNleYQk>y_>Rl2zeG5+q zO+JJwteYG9P;_rRIE+<%kYES5y6*`YU}LQ4`oFR(5dLWz=h&>^Q+gykfOK!k5L|v) zrfB=hG=XrX-&}GRJOdR&d(Op}%Ce)O>K_^krdck=VuP_riI&qAv>gepkdE!`f^4iE z)nstZbTdOku4Tv-=n6U%<iHQ~?O@WAB~ZqHfyr+fZ34<jL%}>;un6YyaYP&iD0mT1 zGZtT}1PcQ$k9mZJW`h99f{l<xa%Q(;tS1imt|z|pkKttV9`sxn!K6hPGUADIjRjNZ z#<9^FgeJuU&o}wAqx|#$99q8k-BqUGBhvZ@k@R}19NF}Z`05<v>Ee9=Ruxrf9QY&x z*P?uy9YGuj{%5t=I6`PaplVSIzIgxU{Q0Zf2RTk))#n<RDX8UQrK%_hs4*jVdPNGB z6jj9lnFwP5YV-_+Bf>_IkW_7mSW?5le*|$;B~I_0nG!zd_MREsQGivu7+AeBkcuxU zDv}NAA&D>;Jbn|uo=L~BqZAyA=ij-0`1tzK)$K!+kH7eU(Z!#BxV*%jC?6V-h!@n{ z6Tq^a2`&vceX7Zw=j{W0WFWp@Q-x`gP;vxoGLOjEe-<tjid8q*!f2RH0xP-k(vg$7 z@mDUC2_6;9SlY>}olCIF(d6I&!h1#@SfRv*5)dv|2xQWsl7L5F5QHIu20>q+puftQ zNtqEFlQ95Wlwk#Jjzbw_OLSN@zKqSOh$jec`4>%18wW!J2GAJL`aTEZ^h^PX-K&;R zwx&y*jR;reh@F5lYH|@cgK4nU_HFR6Y$7M_t)j>gt|RGU%UA-+@H|x#bc}m@d)tz1 zt0AxvHZ0lT!EPO_tsY^6NQs<{MoQ%@p(h)%-HsjBRRRi|PnE1^iSdB&%n+`+8D$|V zNlYciSq!K=#jXNLYD?LHa_vQQDD;>v&xy9-*;9Msh)WrnHN}gx1fW93pyd^UQMNkX za<wp`Pf7|KA+kg_EgM`l1Wr1d@>(E8y0nk%lWiNex{GDQXXKn?W2>lf5HmwXPICiZ z$7DO5Yw#iruJXFR<gz(1iDE)Huq8~&wn=xeYymr#89R-!T}iqVTdqz585_o=rX0Pt zLU2sG77^^8${3uTk$j>vRCwBIGq|eB6y(LLsJb1oR*U2*goSY>D)&(m26T{cqdG|N z=EkAx8JbMdNQc-}7BMt<Fp|$!U)DNe$tAV>4=7uOiOzi_-P^f}Q$YK8O|A@CA@(+U ze9~OFCIDAx#~58P7Iq6MqlHqLJPu;fq(QEyZb(h4cH#ub-Q%P{qpL!dHBFwu92YZS zAz^f#o2`CIhTtDt00?9HI;kC^NCL_pHQ#Fojz&F&z}`1z(>4o7(S<I61m>H67EgXC zJqJ34@!&6@>SbmgJvFE74h@LxWMaN-Cu%D6bff`p%bvzep89?Em3<4I>69%@4AS`) zmk5<_0wOeeqdH4@^keFJ3XzC$gao%~vXwXHPXYqW9bs$=mKa#D+TqvzUuzNKFIC5H zZunF<D$tj&DNuFbXmP_zM+Y(wW+!G2B}T*5zuu2k@>~bPE(n=e50({hp*)cDcSa<U zIZ(7p$BrvAYyx8c08l<5pt2CpKc~mHTcvYZCL+dT@r7ujlYn;xZ0GWlX0{jz7Jzk; z$^ZyUTNFa>bL8`<4?xTS!0`Nno?0g>R!z6J_*y=Ev>a~*!-Wqt@O}r(%Bn`47g?P= zcA`F1OSs-JMoRXA--^guuwx1|Tt!pHf0=0J9TJpAuh(uII#~pXg*UT01U`}jg&0~r zzNAtvQ2Q8!?kIX0MH29HII;1e3YWsS>?@L1tjw8*gNa8f*a<u!fKL_3g|UK&$JkLZ z3PdP7!L=tx!7ET6Hc-IA814vCUJNfxxP61+$6qjzPi|Hw0Z<CDn0GurDgr)z&crhb z0L(o_0L{NyK%hpQ(~@rdhmF}Na`PTzi0<%_2Oec7%Y&n_@%Wg4<G^tftPZeLyHJ8A zow#}I7^e}@S6ymIzzz;hP#4U)+Qt;2DmGmtOGnvEpDF-}$UTn>&j|#x4t)BE$B4!5 zZmw3Yj$ky07dDAgtboxKC)w0F@Z0e8HSS8C=rRaQ>ugDm#9N0p8))_j_3$|6jdS*v zMgfG@(H8kuZ~;OP=#VgKmmynEM|D{dyYMvTJ_jdrbQa2mn;by<6;`0|YFW2*BvK3o z{-3s(u(s>$H`@e)0@o4?l~<1yNPXA12mH0zdbS~#v>6c%278I((W&y|?6AyGgH)e8 zP9y&7^qR_sQT8wrp!19Yn{6c6xF$mtHCa;`-qU>RA<Ou&&-lRzUnz@FsxTyn1uyqB z2Z1OX=Mk7S1y%Us8};o;OmMI51S?#fX2_ldE=)-}31q7Lxe%v=rw}YPks!cJq)8z| z@Q;g#7cUrO4<B5@J1DvrfY9zR!p-6iw~6@>b&`S^1`Q-D!z9|HSr^paRWL{_Hx`P9 zp@kBWN?&rf1F!IM?(}c*Eoudbr!*69Z1x|Rd+<pa@uLbUXoA!`yTc@(r;W=p`Jj+) zwTvae*=5J>wt)FHN8B@dmok$3EI2~U_Ubh9mJA4GmtsfB^69rW5y{R|Pp7I+Ph*1s zE}gbQvoT-nYNFr2X5}ijtdjNezc)(AQ-!3x?E`!YB6I;#Sbi4MEG}PvBD0O^6fDL# zBVfs-tC_6El${8p<uEgi1Hsy;bqm0bTI|F=>lXa_QQPPjx~U3uu<L|YSyRD=nc7nb z-N}S`-A+qTsE-bz1!zpXRt>{76^9k3Af0jip@M(IN1aPw=7<i9jfR`Cbb@BeB4&VA zoDi^LB!DKSL-~}or;d%>kyI%7M-A|Y;+?PZlv$Ve%mxGBV%0*Pt2`AgjM5UTH6eg7 z(9hK&{{zj{7B-U7$r{bf7Hc-WN3Ee?CJYG=0(|j;E`wFAKlx0(zNb#BE0v%{H3_+C zP_>tZ03SCvSV`d^susNmuZ%8~B<xg$L12_y_*9^HlwE(HPlxv$A537svjn*#J%Ts_ z;9&tOLo$gIpFUC;m>$Q#&PXhnd1r**28abTfrRm4e60LA;zE%DB5UBV60iFLz*3fv zw;W6$254~;A|?vI+>kxua~@32jrp)c8Yf_fvA&fbf0zPZY|M*)s)RYPIgWMmAN#DF zaIhYMT&>Xr!ia{6oKci~x&=9f4QlR)az@5OVILW%G0+|`M)^Z7%!~QSJ0}=KmF3e% zT;$Le86blqw<bCjiRZ0DSj={NfO<6+@M0=sgu%hF#_>|0RTl5b!GSrCO&!pkg`ks_ z$8x5JDi5sVxXqB#5?F>EVT0Ki6tr)pYxbnp%8aBqB5-P0B8+nNE&~JI)m^!aCCrhl zIlMC{v{q~rbxcmvtnujLZUFnf=h(AxM9U7LDk>w~!Dn9~P>$w{kukg@Ow|G`ShXWM z!lpwyyozH}4B;!i5EgLewVpU|DQ1Z{R!13P7-}!p*2-A|Xj@*2rEUdy-60nvbfIh; z?V+O`wm`eMUN{_4aaqYX51TasmeCwlSW=~7gj}2vR(i!%@e(2&u-eK#TS^N-usFNh z(5|puU9lU_w$=?~W9Uq-h_!6ax}u(h3;-*yNK#G6*5}mFHMUmeWi2_`GI}D3W7^J5 zhIlI;s3n(>DDDR}Bqm&E3PHP(bnI*-6rOw(wO=V}K#F07frC`xUx&OdeSH`UUV#~& zER`*V1(0U$i=-P5>_xK)D$l|)sffb1J0^~2o798Rl7eG=gfZLn(;;J(r<kn$M%y`Y z_M+z4#(hvs;&LCbF%)&^<>_`#A%r!1pG%&ffJDe%g1cQoAG?KPat2qo1$=mh)M1qC zm>xqiM69PO5s(0L^%gFvzQ`LBlhbzjYr4V)Oa?V+;gn}IOL1mdj03%q?nY)&d|Q*@ zE@wj&hT!w{Dxp(cW`wc81XLbfl&A?oO#YxH4F9={GHMdaMtf|&=C9WDDls4Y$M5=h z^Biw&CM{CojZ~~our$E8#*;?tDlC0~)rRGtKG|NGB#;7sOivg_d7Y+3gjPEs=12Lp z7G(N)gw&tl2OWDn=s6&OW4)#YH@@l~Q_Ant@||R_V)UjoY1C)N<K6+@&u7kSeg}a@ z5mm7=k}-{CxM0FF1gwegU8@=#5&OA1;<{HG;%>0y<FXS&2Lvb(k5r;m;fiMfZ>YfQ zV~d@^6c}iYJC26lzs}6=gaE_|tok7vLt?Jlk_iqR6&eIb<v4l*kY85KUr{+9LYbFK zKkTs7#-db7n1RO$dk#1{sCczv$6}iSGVn9}gz8^q^1IH0ag6z%yHJ2}S&5JF%g5Y` z=Xl~aOgvGbVU-;yl)?<asTRth<N{hbrOCzy++@;3LG9A`c);x?WC$1`bP{tF$D8$2 z=CQB)46Kt6N$~pwF@~7+c%X)SVn<7bF{0*;FnhRziygvIN2&O;7YN~VF21*c;iU;M zjwrs!Ade37Yo^elCwK7u8hng_^9-bz=q`$36qPVqRyDSAqVzZs3Rk`XFJChufyV+> zaoQt4y*$|LoV&|T=oS#`WBGVtD?yqXB8N7~&3sB!xcLWc(kuD!Kbusny<}7A49W6^ z<AHVWHt6Dc>M~A5Zn6yWikdJixjX~Bkt(Q!1;W!VO(mq^j{R;8Oavn5o3mOA=j>u8 zSY#|u2~o$a&zc}*3IRL3w%y9pr#uxHnVw>|gib2>ok9s&iY&%d@>9telYR&jd)jyR zjzU}El%z}~P@H43R;HXC5ol0SQj=wgoeSd6j@W=J*|A-PWl<xntR;jacBj(gng%z2 zzRWR;wq@S6_$S2@8!7@EvyB9zypZ=xv9(j!g4QqW;I*+zfZFqgw@ebOtu7a(nF+u` zTl~91(MN6uR}w18CL^1iN1bl4WVF4oBi^A9lB<V?ym1-MP?MXgBFktC(6;O)Stm>) zi|lS;$=(B4`BKerZ@Lw(6D2qm1A8#6{+V8p-CGG2tY1fD5@rROL4=OukH~rJhAz*j zNjnX*H+~80aV)NW2Xc>rJxw-7X6;&ICIzlnyG#gkWC<;B;_OP7floE}jbaw>1l$|G zb|xqGY;RhK*r|v+E9n5oq79PlF)*~mj<xqF>N|&-W^cttb;};8OuAC1d)b3W$U}1C zfxrvJO{mV)9nS2Sz@!^{ibg<K`s<hkQv(1ySp3_H0SXjR(675>SnXX06*jlX!*wAQ zrou1$Q2fX>L0Bzm5r8EhU-(3VP7kdM==Vk=<Kv&!gRo(fnF12XU@=>}%_$pT`BN?< zr0WMSi;PW&1BEk7{7}~NmVcFjA9UC1il1}mSIY5(W&mDnm`**7F#w#Os~|f^oWqU1 zR01O-gcv9;8M$1=f2^i_8%67=tR#|TKJJxO`6xLXC|FS?u%yylqcgkm=p->n?<n<$ zAQ}n4OB)?9s1xAhaHs}*0|g_?a%~(mc*(4x;vyO{!)PL**;zgVH618mR)iriy%H|N zS${^O$Bd;O%#>8R`psO}P`E)<a4&!XoQd8P8A#pWaCx=LXS9$!NW3}0+dm-HJN!_% z_EpKz2CYVw0jQZpGMzr%BC^QGvRoT^kjI&{V^HZ)zq-a=bIw2!h8;{KNSGf^-h$JY zCh|NZEo<f><TPh6WSHP-IT@Rqh#W{UQ1;4~z!Q7krlA{|Pz7#~;64Y&gD+eZJl9nj zZrkwKa)<)};l5d_fT_l^9t*}#X{<~p#1m-nHU%tYEFp_;hEWEM<;a9S!et(S5!a&1 zI07~iYbPq^gun@MwC#DOt{ep}_Tni4fYy%&PiyX{>R=3eCu-3a_nnUH?GhN&-3rsj zy0QbXng+$ON0<%yh)k(LAT~`h`0<j1uDBS4g`OT@b+#}KFDBe{c}YT9b{l{PhYJYY zq|C8!?QG()i)}C``w~NQx-5k@Phmv$K*~+GIEF<O=3$%2V1@<Ta9f|-44JJPEq<gl z`;KK4&~Qp0#W`7YqKyXNFixdRT}V0@k=C!YjXk|X8&Xim&mP%fsvk1qq;*LNK%;|m z@$ZC)n`IQV7?LYJp0#rGXGrBrKTH*ya`<d_s4}KMmE1S3G-;2}C?`{3MghDSX(BXY zW7ef=YiLGJNxA~}9M+wOvWv?S1v3j<AHF$ug5K!@3j#99V4ef13B$(V1VGcFQ|GAU z%YXu#I-?fnFz>_mtQq4Bl_$-+Auf)tT{mMfr0K(c7s_1zJ&Xazn|VB`dd9TxM@H6t zXIaf5wTb0UK|WTn0WF67`H_LSZ{v!Hh6+dXXUNVTp*>#(l~6Hp(XgXp5@$nd8I<g0 zC#)FU`=auX*McSo_k~G0d2(N1gzqryTPNn8BH21qr`W?PW?ch}VruG+?q?QT0)RA! z>=lp#4!Z9J==Xe_>|XDJfeS>w|4AFr@uUI3?gq1HWr$T5mM?hc^YRJbrG=e;Q;<Ky zPz6?GdWV+jpppoyE-t*xs^01ngAlwl2N?*PKhFS*CngtAtO9Sm@-132G9AA<A7uD) zJpR!HM&afLz6L<6tqVR`&u|8VmVa0tEU@8EyJPJ`N`8=CUWSv9%&taQhQh@K8dKuM z6kauP$;tPVQ3Tj9V){e_+{%uO;PE8~ao(V7O(g@VDR==!v2a2&BR0Ml4M=)f3ZMFb ziC=}F7i;vNYETdS_If1OBNp`I?hXfojC^qfP%sY&-$<vC={XbBXTYh!fiCl)Km+kL zI|Usf9xR}tfRAr`<IQh%Nf{WzLj^CMZqQ={7!$0#@u&b7m-I6iCLz5_!K1@31CU$e zC!Bofwf51lGwir{I7S!>P-z?q)cj-u)S&LOaOw=uJsLeVLK9}GM*t8%-9RMZeBr;w zjq7#{MQq}t4`z?IaPAMQ!ti>Y^5CI7-f<wF6M#?*1jhlgIsg}F5P`YrTNL`d1_zaA zo$e2?ka)2QC?Mh%JMKj$Bi%k&Qt#X7v>+$G=>dP{lhPVGa@Y$1UrM%Ok8~4@$#Ke} zriXCE+$XuF%pJGN1RA`AfCfjij1qd*@)V;YT1YxH(dY4&Yhsv`;RYvZD{%=)e%JmW zVBZXDIp%`OT*Ar39aTg&hD%n+<t;uNw{`;Hi}-?X1V{FEhTxczW98W<EQEy#fRl1& zJ*nk1V$kvAFGgqTYRGWJWlRGn)g$OR#v+tr)auA=%MO9XlwOgoA8^|5=;p~ZvuQh~ z<@aUPs?(CW`jWUvgdrM*8JLLL=P(`~2XT#I5usUabl}Ky(8)@8N|<5?Wrl1mZKy`9 zU_02&FlDqucOrb?x+90nCE3I9kv)sW9tj76_G033L5TITron_T4^Q#i1l1O`w6&RG zXC3-MLdjuS3^iLBghT0Ax;xbRUhAVjNcS+dMH!g@Ba=UgTg<4H#;A8|3||IjdhRWw z^Yf7kXcduVB*oF*qo{Ug`W!_a*!Mb86(J^SPoY?NTzbKf5oUCOx{!&+&%5qj<mB-_ zemhz)hpK}zpI|U0C3L#vrmfiptrJ9;g37lxYi#+Q+&OfNAV$X#)4ZGXm9@AeESaVe zF`as{z#<hZND$Zz3Ii1BX57U0Dip!yB&tW0j40=;&~c*KR4s6j{aRvBqb;t%A&_D0 z_R`Wm`p=LGtLjo9NqR+?tp2ScVTCEfEF?v<YW!(WMu>*lQ2l~2!ly&5bImc~){jxt zrP7LZy0*hwj;zH1Um?@B*=LF<g-b)OpEUa1)h|f0<s0klBO+;2Ud?ypgCRGV$W5FU zK)i@()rejv4CKV9hFFk6){O?yc;X<OWLl|{j!aBgD^IM+u!vHD%*ThYv82NCkmaie zvPI324F<Ys_J38yOnC6y%vfQ%O9sY-q@w?6rLK;kEJ|GUk%yh-!|<cCSn49kCbmq2 z7i;7T3&OxsgQ#gi2oysj7(4${O<b8rQ6iGh!R%X%8$|}OS9(mIhVfz@SbB<x1FVX4 zC?p4xe_jHG@&o)#h3ERU{%4doRPMTw3NjrSQAYb#64u2?<U-785PPqK#UT`fn2MA^ zb|^uP3@fD>5p_R7i5<xFup_@QE{7RGrsHHBS}pWB&Jfu$CQ9g1IFk<u+#l)34OA>n zon|_5K*OHn#(N4BV2BJr(?~O39yCbg(Dc!LD}XVTgdsDD;U<Zp3Z{{j6PKHisbF6t z54ph_Vk`1a7w>qWQy4S)#mdyUW5ll1P{F5~d~=2O;x<WW*%*@)#P%_RvZ$duH+LRd z9aSc2j3t)9(11)fQ|_gytULH9%;lNlzAf2y89BCm1!)Pp#QO|Y@*D&6<`~4;(@HrA zo~iDmsW!8@b+KJ8n!}{keF)Q`-He{ui*Xjf&lLDSNDgy~dhv=~;XU!GoJqjFt|fCt z)O?L8yCaG-3FL=$(iPq#;q?nf2!+?B!ZsMk8AFIcm}@?3DswNm8J%EEA-hId9jelX zYe-dd3U>9v?3vi0;N@X#y#Ug%0D~)}WLFdw_jaiRs>erx?3vC7<C9{goOQ*}gx6hL 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 KMNUMnLSTYtR7MK` literal 0 HcmV?d00001 diff --git a/dist/docs/3.0.13/images/guides/creator-economy/three-stages.png b/dist/docs/3.0.13/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.0.13/images/pr-screenshots/event-speakers-admin-modal.png b/dist/docs/3.0.13/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.0.13/intro.mdx b/dist/docs/3.0.13/intro.mdx new file mode 100644 index 0000000000..bce6b94f38 --- /dev/null +++ b/dist/docs/3.0.13/intro.mdx @@ -0,0 +1,713 @@ +--- +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. + +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, capabilities, and authorized agents. Alex's buyer agent reads it 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.0.13/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.0.13/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.0.13/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.0.13/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 brief to every connected seller. Sam describes what he wants in natural language: + +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.0.13/media-buy/get-products-request.json", + "buying_mode": "brief", + "brief": "Premium sports video inventory, Q2 2026, targeting 25-45 males interested in outdoor recreation. Budget $50K across CTV and display.", + "brand": { "domain": "acmeoutdoor.com" } +} +``` + +Every seller responds in the same format — products with pricing, forecasts, targeting options, and creative requirements. Sam compares proposals side by side on one screen instead of four. + +<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_ids": [ + { "agent_url": "https://ads.streamhaus.tv", "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.0.13/media-buy/get-products-request.json", + "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.0.13/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 +{ + "$schema": "https://adcontextprotocol.org/schemas/3.0.13/creative/list-creative-formats-request.json", + "type": "video" +} +``` + +Each seller returns their supported formats with exact specifications — dimensions, codecs, file sizes, duration limits. No guessing. + +Then Maya briefs the creative agent. One brief produces all formats: + +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.0.13/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_format_ids": [ + { "agent_url": "https://ads.streamhaus.tv", "id": "video_16x9_30s" }, + { "agent_url": "https://ads.streamhaus.tv", "id": "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.0.13/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_id": { "agent_url": "https://ads.streamhaus.tv", "id": "video_16x9_30s" }, + "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.0.13/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.0.13/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 the JWKS it publishes in `adagents.json`, 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, keys published in its own `agents[]` entry under `adcp_use: "webhook-signing"`. 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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/governance/check-governance-request.json", + "plan_id": "acme_outdoor_q2_plan", + "caller": "https://buyer.pinnacle-agency.com/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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/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 | `build_creative`, `list_creative_formats`, `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.0.13/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.0.13/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.0.13/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.0.13/building/by-layer/L0/schemas"> + 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.0.13/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.0.13/media-buy"> + Follow Sam through a complete campaign — brief to delivery + </Card> + <Card title="Trusted Match" icon="link" href="/dist/docs/3.0.13/trusted-match"> + Real-time package activation with structural privacy separation + </Card> + <Card title="Creative" icon="paintbrush" href="/dist/docs/3.0.13/creative/index"> + Follow Maya through creative generation and distribution + </Card> + <Card title="Governance" icon="shield-halved" href="/dist/docs/3.0.13/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 your adagents.json** — Declare your properties and authorized agents so buyers can discover you. +3. **Test your implementation** — Validate with [Addie](https://adcontextprotocol.org/chat) or the [client SDKs](/dist/docs/3.0.13/building/by-layer/L0/schemas). + +Implement the protocol domains relevant to your business: +- **Publishers and SSPs**: [Media Buy](/dist/docs/3.0.13/media-buy) and [adagents.json](/dist/docs/3.0.13/governance/property) +- **Data providers**: [Signals](/dist/docs/3.0.13/signals/overview) and [data provider guide](/dist/docs/3.0.13/signals/data-providers) +- **Creative platforms**: [Creative](/dist/docs/3.0.13/creative) +- **Governance vendors**: [Governance protocol](/dist/docs/3.0.13/governance/overview) +- **Brands**: [Brand Protocol](/dist/docs/3.0.13/brand-protocol) and [brand.json](/dist/docs/3.0.13/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.0.13/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.0.13/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.0.13/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.0.13/building) and [client SDKs](/dist/docs/3.0.13/building/by-layer/L0/schemas) with your technical team to start integrating. + +### Client libraries + +<CodeGroup> +```bash JavaScript/TypeScript +npm install @adcp/client +``` +```bash Python +pip install adcp +``` +```bash Go +go get github.com/adcontextprotocol/adcp-go/adcp +``` +</CodeGroup> + +- **NPM**: [@adcp/client](https://www.npmjs.com/package/@adcp/client) | [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.0.13/building/by-layer/L0/schemas) and [skill files](/dist/docs/3.0.13/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 [Slack Community](https://join.slack.com/t/agenticads/shared_invite/zt-3c5sxvdjk-x0rVmLB3OFHVUp~WutVWZg) +- Email: support@adcontextprotocol.org diff --git a/dist/docs/3.0.13/learning/failure-mode-scope.mdx b/dist/docs/3.0.13/learning/failure-mode-scope.mdx new file mode 100644 index 0000000000..7bf3c2c2b4 --- /dev/null +++ b/dist/docs/3.0.13/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.0.13/learning/foundations/a1-agentic-advertising.mdx b/dist/docs/3.0.13/learning/foundations/a1-agentic-advertising.mdx new file mode 100644 index 0000000000..47e1fce6fc --- /dev/null +++ b/dist/docs/3.0.13/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.0.13/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.0.13/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.0.13/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.0.13/building"> + See how to implement AdCP. Optional but helpful for building intuition. + </Card> + <Card title="Campaign governance" icon="shield-check" href="/dist/docs/3.0.13/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.0.13/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.0.13/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.0.13/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.0.13/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 + +## 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.0.13/learning/foundations/a2-protocol-architecture) diff --git a/dist/docs/3.0.13/learning/foundations/a2-protocol-architecture.mdx b/dist/docs/3.0.13/learning/foundations/a2-protocol-architecture.mdx new file mode 100644 index 0000000000..9aca579caf --- /dev/null +++ b/dist/docs/3.0.13/learning/foundations/a2-protocol-architecture.mdx @@ -0,0 +1,95 @@ +--- +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.0.13/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 +- 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.0.13/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.0.13/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.0.13/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.0.13/governance/property/adagents"> + The agent discovery mechanism — like robots.txt for advertising agents. + </Card> + <Card title="A2A guide" icon="arrows-left-right" href="/dist/docs/3.0.13/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.0.13/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` | +| **adagents.json** | Publisher-hosted file declaring agent capabilities (like robots.txt for agents) | +| **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.0.13/building/verification/compliance-catalog). | +| **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.0.13/learning/foundations/a3-ecosystem-governance) diff --git a/dist/docs/3.0.13/learning/foundations/a2b-testing-your-first-agent.mdx b/dist/docs/3.0.13/learning/foundations/a2b-testing-your-first-agent.mdx new file mode 100644 index 0000000000..cc6fe31228 --- /dev/null +++ b/dist/docs/3.0.13/learning/foundations/a2b-testing-your-first-agent.mdx @@ -0,0 +1,279 @@ +--- +title: "A2B: Testing your first agent call" +sidebarTitle: "A2B: Testing your first agent call" +description: "Module A2B: Hands-on lab — initialize an MCP session, 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.0.13/learning/foundations/a2-protocol-architecture). +</Info> + +## Learning objectives + +- Initialize a stateful MCP session against 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.0.13/quickstart"> + End-to-end buyer workflow from setup to delivery. + </Card> + <Card title="Media buy lifecycle" icon="circle-nodes" href="/dist/docs/3.0.13/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.0.13/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.0.13/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.0.13/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.0.13/building/by-layer/L0/mcp-guide"> + Session initialization, the `mcp-session-id` header, and tool call format. + </Card> +</CardGroup> + +## Test agent + +All curl examples below target the AdCP training agent: + +``` +https://test-agent.adcontextprotocol.org/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 five calls in sequence. Addie demonstrates each call, shows the raw response, then guides you through reproducing it yourself. + +1. **Initialize** — open a stateful MCP session; save the `mcp-session-id` header +2. **Discover** — `get_products` with a brief; read proposals +3. **Buy** — `create_media_buy`; handle all three response shapes +4. **Attach creatives** — `sync_creatives`; validate with dry-run first +5. **Poll status** — `get_media_buys` until `valid_actions` shows the buy is serving + +## 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 — Initialize a session + +Every sequence starts with an `initialize` call. The response sets the protocol version and returns an `mcp-session-id` header — save it. + +```bash +curl -X POST https://test-agent.adcontextprotocol.org/mcp \ + -H "Content-Type: application/json" \ + -H "Authorization: Bearer <your-api-key>" \ + -d '{ + "jsonrpc": "2.0", + "method": "initialize", + "params": { + "protocolVersion": "2024-11-05", + "capabilities": {}, + "clientInfo": { "name": "my-buyer-agent", "version": "1.0" } + }, + "id": 1 + }' +``` + +The response includes an `mcp-session-id` in the response headers. Every subsequent call must include it: + +``` +mcp-session-id: <value-from-response-header> +``` + +### Step 2 — 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[]`. + +```bash +curl -X POST https://test-agent.adcontextprotocol.org/mcp \ + -H "Content-Type: application/json" \ + -H "Authorization: Bearer <your-api-key>" \ + -H "mcp-session-id: <session-id>" \ + -d '{ + "jsonrpc": "2.0", + "method": "tools/call", + "params": { + "name": "get_products", + "arguments": { + "adcp_major_version": 3, + "buying_mode": "brief", + "brief": "CTV campaign, adults 25-54 in the US, $50K budget, brand safety required" + } + }, + "id": 2 + }' +``` + +The result is in `content[0].text` as JSON. Look for `proposals[0].proposal_id` — you'll pass it to `create_media_buy`. + +### Step 3 — Place a media buy + +Pass the `proposal_id` from Step 2 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/mcp \ + -H "Content-Type: application/json" \ + -H "Authorization: Bearer <your-api-key>" \ + -H "mcp-session-id: <session-id>" \ + -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": 3 + }' +``` + +**Three response shapes — you'll see one of these:** + +| Shape | What it means | Next step | +|---|---|---| +| `media_buy_id` + `status: "pending_creatives"` | Buy confirmed; attach creatives | Go to Step 4 | +| `media_buy_id` + `status: "pending_start"` or `"active"` | Buy confirmed and ready | Creatives already attached or not required | +| `status: "submitted"` + `task_id` | Buy queued for async processing | Poll `tasks/get` 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 4 — 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/mcp \ + -H "Content-Type: application/json" \ + -H "Authorization: Bearer <your-api-key>" \ + -H "mcp-session-id: <session-id>" \ + -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_id": { + "agent_url": "https://test-agent.adcontextprotocol.org", + "id": "ctv_1920x1080_30s" + }, + "assets": [ + { + "asset_id": "video_url", + "url": "https://cdn.example.com/nova-ctv-30s.mp4" + } + ] + } + ], + "dry_run": true + } + }, + "id": 4 + }' +``` + +Remove `"dry_run": true` to apply. The response includes `creatives[].status` — `approved`, `pending_review`, or `rejected`. + +### Step 5 — Check status + +Poll `get_media_buys` with the `media_buy_id` from Step 3 to see lifecycle state and `valid_actions`. + +```bash +curl -X POST https://test-agent.adcontextprotocol.org/mcp \ + -H "Content-Type: application/json" \ + -H "Authorization: Bearer <your-api-key>" \ + -H "mcp-session-id: <session-id>" \ + -d '{ + "jsonrpc": "2.0", + "method": "tools/call", + "params": { + "name": "get_media_buys", + "arguments": { + "adcp_major_version": 3, + "media_buy_ids": ["<media-buy-id-from-step-3>"] + } + }, + "id": 5 + }' +``` + +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/mcp \ + -H "Content-Type: application/json" \ + -H "Authorization: Bearer <your-api-key>" \ + -H "mcp-session-id: <session-id>" \ + -d '{ + "jsonrpc": "2.0", + "method": "tasks/get", + "params": { "task_id": "<task-id-from-create>", "include_result": true }, + "id": 6 + }' +``` + +<Note> +`tasks/get` is an MCP protocol-level method, not an AdCP tool — it uses `"method": "tasks/get"` directly rather than the `"method": "tools/call"` + `"name": "..."` pattern used for AdCP tasks. It is auto-registered by the MCP SDK alongside `tasks/result`, `tasks/list`, and `tasks/cancel`. +</Note> + +Poll every 2–5 seconds. When `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.0.13/building/by-layer/L3/task-lifecycle) doc for all MCP 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 `task.status` via `tasks/get`; if `failed`, read `task.error.message` for the rejection reason | +| `mcp-session-id: invalid` error | Session expired or header missing | Re-run Step 1 to get a fresh session ID | + +## Assessment + +| Dimension | Weight | What Addie looks for | +|-----------|--------|---------------------| +| Conceptual understanding | 10% | Can you describe the MCP session lifecycle and why `mcp-session-id` is required? | +| Practical knowledge | 40% | Can you trace through all five 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.0.13/learning/foundations/a3-ecosystem-governance) diff --git a/dist/docs/3.0.13/learning/foundations/a3-ecosystem-governance.mdx b/dist/docs/3.0.13/learning/foundations/a3-ecosystem-governance.mdx new file mode 100644 index 0000000000..c438666e45 --- /dev/null +++ b/dist/docs/3.0.13/learning/foundations/a3-ecosystem-governance.mdx @@ -0,0 +1,110 @@ +--- +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.0.13/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 every brand should have one +- Explain `adagents.json` and how agents discover each other +- 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.0.13/brand-protocol/index"> + Brand identity claims, brand.json discovery, and brand hierarchy. Four variants: house portfolio, brand agent, redirects, minimal. + </Card> + <Card title="Governance overview" icon="building-columns" href="/dist/docs/3.0.13/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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/accounts/overview"> + The commercial layer: advertisers, operators, authentication, billing, and account lifecycle. + </Card> + <Card title="Security Model" icon="shield-halved" href="/dist/docs/3.0.13/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`: your brand's machine-readable identity at `/.well-known/brand.json` +- `adagents.json`: how publishers declare which agents can access their 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.0.13/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 +- **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.0.13/learning/tracks/publisher), [Buyer](/dist/docs/3.0.13/learning/tracks/buyer), or [Platform](/dist/docs/3.0.13/learning/tracks/platform) diff --git a/dist/docs/3.0.13/learning/instructional-design.mdx b/dist/docs/3.0.13/learning/instructional-design.mdx new file mode 100644 index 0000000000..8b4764118f --- /dev/null +++ b/dist/docs/3.0.13/learning/instructional-design.mdx @@ -0,0 +1,301 @@ +--- +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. + +### 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.** Addie teaches through conversation, not lecture. Most responses include a question or task, though Addie 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 Addie until they demonstrate mastery of every learning objective. Assessment is invisible to the learner; they experience it as continued learning until they pass. + +**Personalization.** Addie 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, Addie 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 + +Addie 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) + +### 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.0.13/learning/policies/complaints) + +## Competency-based assessment + +### Formative assessment + +Assessment happens continuously during instruction: + +- **Socratic questioning** throughout every module — Addie 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 + +Addie 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 — Addie 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. + +| 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 Addie'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: Addie 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.0.13/building/by-layer/L4/build-an-agent) to generate agents and [storyboards](/dist/docs/3.0.13/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/client`, which generates a working agent from the specification +3. **Validate** (~10 min) — learner runs the matching storyboard from the CLI (`npx @adcp/client@latest storyboard run my-agent media_buy_seller`), shares results with Addie, 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 + +Addie 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, Addie 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, Addie 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, Addie 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," Addie 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.** Addie 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 Addie 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 satisfy 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.0.13/learning/policies/nondiscrimination). diff --git a/dist/docs/3.0.13/learning/overview.mdx b/dist/docs/3.0.13/learning/overview.mdx new file mode 100644 index 0000000000..cac82ac8b7 --- /dev/null +++ b/dist/docs/3.0.13/learning/overview.mdx @@ -0,0 +1,113 @@ +--- +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.0.13/learning/foundations/a1-agentic-advertising), [A2](/dist/docs/3.0.13/learning/foundations/a2-protocol-architecture), [A3](/dist/docs/3.0.13/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> + +<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.0.13/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.0.13/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.0.13/learning/foundations/a1-agentic-advertising) | Why AdCP | 15 min | Yes | +| [A2](/dist/docs/3.0.13/learning/foundations/a2-protocol-architecture) | Your first media buy | 20 min | Yes | +| [A3](/dist/docs/3.0.13/learning/foundations/a3-ecosystem-governance) | The AdCP landscape | 15 min | Yes | + +### 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.0.13/learning/tracks/publisher) | Publishers, SSPs, supply-side platforms | B1–B4 | ~103 min | +| [Buyer / brand](/dist/docs/3.0.13/learning/tracks/buyer) | Brands, agencies, DSPs | C1–C4 | ~92 min | +| [Platform / intermediary](/dist/docs/3.0.13/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.0.13/learning/specialist/media-buy) | Transactions, pricing, multi-agent orchestration | 45 min | +| [S2: Creative](/dist/docs/3.0.13/learning/specialist/creative) | Asset workflows, format compliance, cross-platform adaptation | 45 min | +| [S3: Signals](/dist/docs/3.0.13/learning/specialist/signals) | Signal discovery, activation, privacy, optimization loops | 45 min | +| [S4: Governance](/dist/docs/3.0.13/learning/specialist/governance) | Brand safety, supply chain compliance, content standards | 45 min | +| [S5: Sponsored Intelligence](/dist/docs/3.0.13/learning/specialist/sponsored-intelligence) | Conversational brand experiences, session lifecycle | 45 min | + +## 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.0.13/learning/policies/complaints.mdx b/dist/docs/3.0.13/learning/policies/complaints.mdx new file mode 100644 index 0000000000..78df6c260b --- /dev/null +++ b/dist/docs/3.0.13/learning/policies/complaints.mdx @@ -0,0 +1,60 @@ +--- +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 + +## 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 +- 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 internal resolution is unsatisfactory and the complaint involves accreditation standards, learners may contact the relevant accreditation body directly. + +## 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.0.13/learning/policies/conflict-of-interest.mdx b/dist/docs/3.0.13/learning/policies/conflict-of-interest.mdx new file mode 100644 index 0000000000..e9f907d244 --- /dev/null +++ b/dist/docs/3.0.13/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.0.13/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.0.13/learning/policies/intellectual-property.mdx b/dist/docs/3.0.13/learning/policies/intellectual-property.mdx new file mode 100644 index 0000000000..7d0b8c9bb4 --- /dev/null +++ b/dist/docs/3.0.13/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.0.13/learning/policies/learner-records.mdx b/dist/docs/3.0.13/learning/policies/learner-records.mdx new file mode 100644 index 0000000000..ed02089989 --- /dev/null +++ b/dist/docs/3.0.13/learning/policies/learner-records.mdx @@ -0,0 +1,56 @@ +--- +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 + +## 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, consistent with IACET accreditation requirements. + +## 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 accreditation compliance (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.0.13/learning/policies/nondiscrimination.mdx b/dist/docs/3.0.13/learning/policies/nondiscrimination.mdx new file mode 100644 index 0000000000..0071b85592 --- /dev/null +++ b/dist/docs/3.0.13/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.0.13/learning/policies/complaints). Reports are investigated within 10 business days. diff --git a/dist/docs/3.0.13/learning/policies/personnel-qualifications.mdx b/dist/docs/3.0.13/learning/policies/personnel-qualifications.mdx new file mode 100644 index 0000000000..9464599f64 --- /dev/null +++ b/dist/docs/3.0.13/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 Addie 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 + +Addie is powered by Claude (Anthropic). Teaching behavior is governed by operational rules documented in the [instructional design framework](/dist/docs/3.0.13/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 + +Addie 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.0.13/learning/policies/refund.mdx b/dist/docs/3.0.13/learning/policies/refund.mdx new file mode 100644 index 0000000000..30be6fb5c7 --- /dev/null +++ b/dist/docs/3.0.13/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.0.13/learning/instructional-design#credential-issuance). + +## Questions + +Contact certification@agenticadvertising.org for questions about program fees or membership terms. diff --git a/dist/docs/3.0.13/learning/specialist/creative.mdx b/dist/docs/3.0.13/learning/specialist/creative.mdx new file mode 100644 index 0000000000..9a103d15cb --- /dev/null +++ b/dist/docs/3.0.13/learning/specialist/creative.mdx @@ -0,0 +1,184 @@ +--- +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.0.13/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 +- 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`), and give each cut (`:15` vs `:30`) its own Ad-ID +- Reason about format edge cases, accessibility, and provenance + +## Prerequisite reading + +### Core creative tasks + +<CardGroup cols={2}> + <Card title="list_creative_formats" icon="list" href="/dist/docs/3.0.13/creative/task-reference/list_creative_formats"> + Format discovery: what specs does each publisher require? + </Card> + <Card title="build_creative" icon="hammer" href="/dist/docs/3.0.13/creative/task-reference/build_creative"> + Creative generation and transformation from brand assets. + </Card> + <Card title="preview_creative" icon="eye" href="/dist/docs/3.0.13/creative/task-reference/preview_creative"> + Preview creatives before deployment. + </Card> + <Card title="sync_creatives" icon="rotate" href="/dist/docs/3.0.13/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.0.13/creative/index"> + The creative protocol: assets, formats, manifests, and creative agents. + </Card> + <Card title="Creative specification" icon="scroll" href="/dist/docs/3.0.13/creative/specification"> + Formal specification for the creative protocol. + </Card> + <Card title="Formats reference" icon="image" href="/dist/docs/3.0.13/creative/formats"> + Format definitions, technical specs, and the renders structure. + </Card> + <Card title="Asset types" icon="photo-film" href="/dist/docs/3.0.13/creative/asset-types"> + Images, video, audio, HTML5, and native asset specifications. + </Card> + <Card title="Creative manifests" icon="file-lines" href="/dist/docs/3.0.13/creative/creative-manifests"> + Manifest structure: how creative packages describe their contents. + </Card> + <Card title="Channel guides" icon="tv" href="/dist/docs/3.0.13/creative/channels/video"> + Channel-specific specs for video, display, audio, DOOH, and carousels. + </Card> + <Card title="Broadcast TV" icon="clapperboard" href="/dist/docs/3.0.13/creative/channels/broadcast"> + Broadcast formats, `industry_identifiers[]` (`ad_id`, `isci`, `clearcast_clock`), Ad-ID integration, and why broadcast formats omit tracker slots. + </Card> + <Card title="Generative creative" icon="wand-magic-sparkles" href="/dist/docs/3.0.13/creative/generative-creative"> + AI-generated creative workflows and best practices. + </Card> + <Card title="Accessibility" icon="universal-access" href="/dist/docs/3.0.13/creative/accessibility"> + Accessibility standards for advertising creatives. + </Card> + <Card title="Provenance" icon="certificate" href="/dist/docs/3.0.13/creative/provenance"> + AI creative provenance and disclosure requirements. + </Card> + <Card title="Implementing creative agents" icon="robot" href="/dist/docs/3.0.13/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.0.13/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.0.13/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.0.13/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.0.13/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: + +```bash +export ADCP_AUTH_TOKEN="1v8tAhASaUYYp4odoQ1PnMpdqNaMiTrCRqYo9OJp6IQ" +export AGENT_URL="https://test-agent.adcontextprotocol.org/mcp" +``` + +See the [Quickstart](/dist/docs/3.0.13/quickstart) for a walkthrough of your first call. + +## 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_creative_formats` 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_creative_formats`. 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> + +### Cross-platform skills + +6. **Format discovery** — Query sandbox agents for supported formats, compare requirements across publishers +7. **Cross-platform adaptation** — Adapt one concept across display, video, and native formats using `build_creative` with `target_format_ids` +8. **Compliance** — Configure provenance metadata and disclosure requirements for AI-generated creatives +9. **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. +10. **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. +11. **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 Ad-ID. + +## Assessment + +| Dimension | Weight | What Addie evaluates | +|-----------|--------|---------------------| +| Interaction models | 20% | Correctly identifies and works with all three creative agent types | +| Cross-platform | 25% | Adapts creatives across channels and formats | +| Compliance | 25% | Configures disclosures, provenance, and regulatory requirements | +| Pricing and accounts | 15% | Understands rate cards, reads pricing from `list_creatives` and `list_creative_formats`, 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.0.13/learning/specialist/governance.mdx b/dist/docs/3.0.13/learning/specialist/governance.mdx new file mode 100644 index 0000000000..0b9bc9e893 --- /dev/null +++ b/dist/docs/3.0.13/learning/specialist/governance.mdx @@ -0,0 +1,182 @@ +--- +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.0.13/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`/`sub`/`phase` binding, `jti` replay dedup, revocation-list check. Explain why each step closes a specific attack (spoofed issuer, plan swap, token replay, key compromise). +- 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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/governance/overview"> + The governance protocol: property, content standards, creative, and campaign governance. + </Card> + <Card title="Campaign governance" icon="shield-check" href="/dist/docs/3.0.13/governance/campaign"> + Multi-party validation, budget authority, and the trust model. + </Card> + <Card title="Campaign governance safety model" icon="lock" href="/dist/docs/3.0.13/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.0.13/governance/campaign/specification"> + Full technical specification: validation categories, budget tracking, and audience governance. + </Card> + <Card title="Policy registry" icon="book" href="/dist/docs/3.0.13/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.0.13/governance/property/index"> + Identity, authorization, and data enrichment for publishers. + </Card> + <Card title="Collection governance" icon="clapperboard" href="/dist/docs/3.0.13/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.0.13/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.0.13/governance/content-standards/implementation-guide"> + Implementation guide for content standards. + </Card> + <Card title="Content artifacts" icon="file-circle-check" href="/dist/docs/3.0.13/governance/content-standards/artifacts"> + Artifacts generated during content evaluation. + </Card> + <Card title="Creative governance" icon="eye" href="/dist/docs/3.0.13/governance/creative/index"> + Creative quality, compliance, and feature analysis. + </Card> + <Card title="Provenance verification" icon="certificate" href="/dist/docs/3.0.13/governance/creative/provenance-verification"> + Verifying AI creative provenance and disclosure. + </Card> + <Card title="get_creative_features" icon="bars-staggered" href="/dist/docs/3.0.13/governance/creative/get_creative_features"> + Analyzing creative features for compliance evaluation. + </Card> + <Card title="validate_content_delivery" icon="square-check" href="/dist/docs/3.0.13/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.0.13/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 AGENT_URL="https://test-agent.adcontextprotocol.org/mcp" +``` + +See the [Quickstart](/dist/docs/3.0.13/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.0.13/learning/specialist/media-buy.mdx b/dist/docs/3.0.13/learning/specialist/media-buy.mdx new file mode 100644 index 0000000000..f66bc990c1 --- /dev/null +++ b/dist/docs/3.0.13/learning/specialist/media-buy.mdx @@ -0,0 +1,151 @@ +--- +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` | stable | Media buys negotiated via proposal acceptance | +| `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.0.13/building/verification/compliance-catalog) for the full taxonomy and the [`specialism` enum](https://adcontextprotocol.org/schemas/3.0.13/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) +- Use `get_media_buys` to check status, `valid_actions`, and creative approvals before acting +- 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 +- 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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/media-buy/specification"> + The formal specification for the media buy protocol. + </Card> + <Card title="Pricing models" icon="tag" href="/dist/docs/3.0.13/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.0.13/media-buy/advanced-topics/accountability"> + Negotiate `performance_standards`, `measurement_terms`, and `cancellation_policy`. Recovery from `TERMS_REJECTED`. + </Card> + <Card title="Media buys overview" icon="layer-group" href="/dist/docs/3.0.13/media-buy/media-buys/index"> + Campaign structure, the `pending_creatives` → `pending_start` → `active` state machine, and the approval lifecycle. + </Card> + <Card title="Trusted Match Protocol" icon="microchip" href="/dist/docs/3.0.13/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.0.13/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.0.13/building/operating/orchestrator-design"> + Architecture patterns for multi-agent orchestration. + </Card> + <Card title="Conversion tracking" icon="bullseye" href="/dist/docs/3.0.13/media-buy/conversion-tracking/index"> + Event sources, log_event, and attribution setup. + </Card> + <Card title="Performance feedback" icon="comment-dots" href="/dist/docs/3.0.13/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.0.13/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.0.13/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/mcp" +``` + +See the [Quickstart](/dist/docs/3.0.13/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 creation and optimization** — Create a media buy, monitor delivery, execute updates. Verify `update_media_buy` fails without `account` and succeeds with it. +6. **State machine walkthrough** — Create a buy and trace it through `pending_creatives` (no creatives attached) → `sync_creatives` → `pending_start` → `active` at flight start. Use `get_media_buys` at each step to read `status`, `valid_actions`, and transition timestamps. Force a seller rejection from `pending_start` via the sandbox controller and verify the terminal state. +7. **Lifecycle management** — Check `valid_actions`, cancel a package, handle `NOT_CANCELLABLE`, use `revision` for concurrency +8. **Broadcast billing** — 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. +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. + +## 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.0.13/learning/specialist/security.mdx b/dist/docs/3.0.13/learning/specialist/security.mdx new file mode 100644 index 0000000000..42338181cf --- /dev/null +++ b/dist/docs/3.0.13/learning/specialist/security.mdx @@ -0,0 +1,103 @@ +--- +title: "S6: Security" +sidebarTitle: "S6: Security" +description: "AdCP specialist module S6: Security mastery. Threat model, 5-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. You'll work with sandbox agents to demonstrate the protocol's five-layer defense in practice: identity verification, tenant isolation, idempotency semantics, signed governance verification, and SSRF discipline. Addie evaluates both hands-on execution and your ability to reason about threat scenarios and incident response. + +Passing earns the **AdCP specialist — Security** credential. + +<Warning> +This module is in development and not yet available via Addie. The curriculum, sandbox exercises, and teaching flow are being finalized. Check back soon. +</Warning> + +<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.0.13/building/verification/compliance-catalog) for the full taxonomy. + +| Specialism | Status | What it covers | +|---|---|---| +| `security` | stable | Authentication baseline — unauth rejection, API key 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 5-layer defense model — identity, isolation, idempotency, signed governance, auditability — and name the specific attack each layer closes +- Mint an idempotency key and demonstrate all four outcomes against a sandbox: successful first call, idempotent replay (`replayed: true`), conflict on payload change, and expiry on TTL lapse. Explain the side-effect implications of each outcome. +- Verify a signed governance token against a JWKS endpoint: walk the 15-step verification checklist (`alg` allowlist, `typ` match, SSRF-validated JWKS fetch, `aud`/`sub`/`phase` binding, `jti` replay dedup, revocation list check), tamper with a claim and observe rejection, trace the revocation mechanics +- Implement 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 in responses +- 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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/building/by-layer/L2/authentication"> + API key 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.0.13/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** — Submit four requests to a sandbox endpoint using the same idempotency key: (a) first call — observe success; (b) identical replay — observe `replayed: true` and confirm no side effect; (c) same key, different payload — observe conflict error; (d) after TTL lapse — observe expiry. Reason about what a missing idempotency key means for the seller's safety guarantees. +3. **Governance token verification** — Fetch a signed governance token from the sandbox governance agent. Walk the 15-step verification checklist. Tamper with the `aud` claim and observe rejection. Check the revocation list for a pre-revoked key (`test-revoked-2026`) and confirm the token is rejected before signature verification completes. Explain what each step closes. +4. **SSRF defense implementation** — Given a skeleton outbound-fetch function, add the 6-point SSRF check. Verify that a request to a cloud metadata endpoint (`169.254.169.254`) is blocked, that a redirect to a reserved IP is caught at the IP-pin step, and that error detail is suppressed in the response. +5. **Principal isolation probe** — Use two sandbox principals on the same seller. Attempt to read resources scoped to the other principal. Confirm isolation. Explain the separation model and what would break 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 all four idempotency outcomes on demand and explain their implications? | +| Governance verification | 25% | Can you walk the 15-step checklist and explain what each step prevents? | +| SSRF discipline | 15% | Can you implement the 6-point check correctly? | +| 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.0.13/learning/specialist/signals.mdx b/dist/docs/3.0.13/learning/specialist/signals.mdx new file mode 100644 index 0000000000..0bbe3fb43a --- /dev/null +++ b/dist/docs/3.0.13/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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/signals/overview"> + The signals protocol: audience segments, contextual signals, measurement, and optimization. + </Card> + <Card title="Signals specification" icon="scroll" href="/dist/docs/3.0.13/signals/specification"> + Formal specification for the signals protocol. + </Card> + <Card title="Data providers" icon="database" href="/dist/docs/3.0.13/signals/data-providers"> + How data providers publish signal catalogs via adagents.json. + </Card> + <Card title="Signals ecosystem" icon="diagram-project" href="/dist/docs/3.0.13/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.0.13/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.0.13/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/mcp" +``` + +See the [Quickstart](/dist/docs/3.0.13/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 a signal catalog 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 a signal catalog (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 catalog 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.0.13/signals/data-providers) +- An `authorized_agents` entry authorizing a signals agent to resell your catalog +- `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 catalog 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 signal catalogs, 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.0.13/learning/specialist/sponsored-intelligence.mdx b/dist/docs/3.0.13/learning/specialist/sponsored-intelligence.mdx new file mode 100644 index 0000000000..99d343f1b5 --- /dev/null +++ b/dist/docs/3.0.13/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.0.13/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.0.13/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.0.13/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.0.13/creative/task-reference/list_creative_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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/sponsored-intelligence/specification"> + The formal specification for the Sponsored Intelligence protocol. + </Card> + <Card title="SI Chat Protocol hosts" icon="server" href="/dist/docs/3.0.13/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.0.13/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. 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.0.13/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.0.13/learning/test-personas.md b/dist/docs/3.0.13/learning/test-personas.md new file mode 100644 index 0000000000..c6c2e6b6f1 --- /dev/null +++ b/dist/docs/3.0.13/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 explicit vs. implicit 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 (implicit accounts, agent-trusted model) vs. a first-party platform (explicit accounts, 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, implicit 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 implicit accounts) and how it interacts with AI platforms (operator with explicit accounts 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.0.13/learning/tracks/buyer.mdx b/dist/docs/3.0.13/learning/tracks/buyer.mdx new file mode 100644 index 0000000000..1751c5ffef --- /dev/null +++ b/dist/docs/3.0.13/learning/tracks/buyer.mdx @@ -0,0 +1,263 @@ +--- +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.0.13/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.0.13/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.0.13/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.0.13/building/operating/orchestrator-design"> + Architecture patterns for agents that coordinate across multiple sellers. + </Card> + <Card title="Pricing models" icon="tag" href="/dist/docs/3.0.13/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.0.13/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.0.13/media-buy/advanced-topics/targeting"> + Targeting options, audience overlays, and geo-targeting. + </Card> + <Card title="Version negotiation" icon="code-branch" href="/dist/docs/3.0.13/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.0.13/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.0.13/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.0.13/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.0.13/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` +- **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 +- **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.0.13/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.0.13/brand-protocol/brand-json"> + The brand.json format: identity, logos, colors, guidelines, and agent declarations. + </Card> + <Card title="For advertisers" icon="bullhorn" href="/dist/docs/3.0.13/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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/governance/creative/index"> + Creative quality and compliance governance. + </Card> + <Card title="Campaign governance" icon="shield-check" href="/dist/docs/3.0.13/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.0.13/governance/policy-registry"> + Community-maintained compliance policies (COPPA, GDPR, HFSS) that brands reference by ID. + </Card> +</CardGroup> + +### Key concepts + +- **Brand identity protocol** — `brand.json` at `/.well-known/brand.json` declares brand identity +- **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.0.13/creative/index"> + The creative protocol: assets, formats, manifests, creative agents. + </Card> + <Card title="build_creative task" icon="hammer" href="/dist/docs/3.0.13/creative/task-reference/build_creative"> + Creative generation and transformation. + </Card> + <Card title="preview_creative task" icon="eye" href="/dist/docs/3.0.13/creative/task-reference/preview_creative"> + Previewing creatives before deployment. + </Card> + <Card title="sync_creatives task" icon="rotate" href="/dist/docs/3.0.13/creative/task-reference/sync_creatives"> + Synchronizing creative assets with publisher platforms. + </Card> + <Card title="Generative creative" icon="wand-magic-sparkles" href="/dist/docs/3.0.13/creative/generative-creative"> + AI-generated creative workflows and best practices. + </Card> + <Card title="Creative agent pricing" icon="money-bill" href="/dist/docs/3.0.13/creative/implementing-creative-agents#pricing-walkthrough"> + How creative agents charge: pricing discovery, build costs, and billing reconciliation. + </Card> + <Card title="Sponsored Intelligence" icon="message-bot" href="/dist/docs/3.0.13/sponsored-intelligence/overview"> + Conversational brand experiences in AI assistants. + </Card> + <Card title="SI specification" icon="scroll" href="/dist/docs/3.0.13/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. Broadcast manifests carry `industry_identifiers[]` (Ad-ID, ISCI) — S2 goes deep +- **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.0.13/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.0.13/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. + +<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/client`](/dist/docs/3.0.13/building/by-layer/L0/schemas) SDK. The skill tested is orchestrating a buying workflow correctly. + +### What you'll build + +- Account setup with `sync_accounts` +- Product discovery from at least 2 sellers +- 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.0.13/learning/specialist/media-buy)) +- Creative sync with at least 1 format +- Campaign monitoring via delivery reporting + +### How you'll validate + +Your buyer agent runs against the public test agent (`test-mcp`). Use `npx @adcp/client@latest` to execute tool calls and verify your agent handles the complete buying workflow: + +```bash +npx @adcp/client@latest test-mcp get_products '{"brief":"your campaign brief"}' +``` + +See [Validate Your Agent](/dist/docs/3.0.13/building/verification/validate-your-agent) for CLI setup and the full testing 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.0.13/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 specify a buying workflow in AdCP terms? | +| 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 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.0.13/learning/specialist/media-buy) — transaction flows, pricing, orchestration +- [S2: Creative](/dist/docs/3.0.13/learning/specialist/creative) — asset workflows, format compliance +- [S3: Signals](/dist/docs/3.0.13/learning/specialist/signals) — measurement, attribution, optimization +- [S4: Governance](/dist/docs/3.0.13/learning/specialist/governance) — brand safety, campaign governance, compliance, policy registry +- [S5: Sponsored Intelligence](/dist/docs/3.0.13/learning/specialist/sponsored-intelligence) — conversational brand experiences diff --git a/dist/docs/3.0.13/learning/tracks/platform.mdx b/dist/docs/3.0.13/learning/tracks/platform.mdx new file mode 100644 index 0000000000..bf5a318236 --- /dev/null +++ b/dist/docs/3.0.13/learning/tracks/platform.mdx @@ -0,0 +1,226 @@ +--- +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.0.13/building/index"> + Overview of what it takes to build an AdCP integration. + </Card> + <Card title="MCP integration guide" icon="plug" href="/dist/docs/3.0.13/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.0.13/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.0.13/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.0.13/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.0.13/building/by-layer/L0/schemas"> + 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.0.13/governance/property/index"> + Identity, authorization, and data enrichment for participants in AdCP. + </Card> + <Card title="AdAgents.json" icon="file-code" href="/dist/docs/3.0.13/governance/property/adagents"> + Agent discovery and declaration — verifiable identity for every agent. + </Card> + <Card title="Authorized properties" icon="key" href="/dist/docs/3.0.13/governance/property/authorized-properties"> + How publishers declare authorized sellers, and how buyers verify them. + </Card> + <Card title="Security" icon="shield" href="/dist/docs/3.0.13/building/by-layer/L1/security"> + Security implementation patterns for AdCP servers. + </Card> + <Card title="Accounts and security" icon="user-shield" href="/dist/docs/3.0.13/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.0.13/governance/property/specification"> + The formal specification for property governance. + </Card> + <Card title="Campaign governance" icon="shield-check" href="/dist/docs/3.0.13/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.0.13/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.0.13/governance/policy-registry"> + Community-maintained compliance policies that governance agents resolve and enforce. + </Card> +</CardGroup> + +### Key concepts + +- **Agent identity verification** — domain ownership, cryptographic signatures, organizational registration +- **Supply path transparency** — full visibility into which agents handled each transaction +- **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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/building/by-layer/L3/error-handling"> + Error patterns, retry strategies, and graceful degradation. + </Card> + <Card title="Sandbox" icon="flask" href="/dist/docs/3.0.13/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.0.13/reference/implementor-faq"> + Common questions and answers from teams building AdCP integrations. + </Card> + <Card title="Router architecture" icon="diagram-project" href="/dist/docs/3.0.13/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.0.13/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 +- **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/client`](/dist/docs/3.0.13/building/by-layer/L0/schemas) SDK. Point your coding assistant at a [skill file](/dist/docs/3.0.13/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/client@latest storyboard run my-agent media_buy_seller +``` + +The storyboard validates protocol compliance across the complete workflow. See [Validate Your Agent](/dist/docs/3.0.13/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.0.13/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.0.13/learning/specialist/media-buy) — transaction flows, pricing, orchestration +- [S2: Creative](/dist/docs/3.0.13/learning/specialist/creative) — asset workflows, format compliance +- [S3: Signals](/dist/docs/3.0.13/learning/specialist/signals) — measurement, attribution, optimization +- [S4: Governance](/dist/docs/3.0.13/learning/specialist/governance) — brand safety, campaign governance, compliance, policy registry +- [S5: Sponsored Intelligence](/dist/docs/3.0.13/learning/specialist/sponsored-intelligence) — conversational brand experiences diff --git a/dist/docs/3.0.13/learning/tracks/publisher.mdx b/dist/docs/3.0.13/learning/tracks/publisher.mdx new file mode 100644 index 0000000000..9a701c38e6 --- /dev/null +++ b/dist/docs/3.0.13/learning/tracks/publisher.mdx @@ -0,0 +1,246 @@ +--- +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. + +--- + +## 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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/protocol/get_adcp_capabilities"> + How agents advertise their capabilities so other agents can discover what they offer. + </Card> + <Card title="Version negotiation" icon="code-branch" href="/dist/docs/3.0.13/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.0.13/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.0.13/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 +- **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 `list_creative_formats` and how buyer agents 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.0.13/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.0.13/media-buy/product-discovery/example-briefs"> + Real examples of product discovery queries from buyer agents. + </Card> + <Card title="list_creative_formats task" icon="palette" href="/dist/docs/3.0.13/creative/task-reference/list_creative_formats"> + How creative format specifications work — dimensions, file types, render requirements. + </Card> + <Card title="Creative formats" icon="image" href="/dist/docs/3.0.13/creative/formats"> + Format definitions, technical specs, and the renders structure. + </Card> + <Card title="Implementing standard formats" icon="ruler-combined" href="/dist/docs/3.0.13/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.0.13/media-buy/product-discovery/refinement"> + How buyer agents refine searches and negotiate product parameters. + </Card> +</CardGroup> + +### Key concepts + +- **Format declarations** — `list_creative_formats` tells buyers what you accept +- **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.0.13/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.0.13/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.0.13/signals/overview"> + The signals protocol: audience segments, contextual signals, measurement data. + </Card> + <Card title="Trusted Match Protocol" icon="microchip" href="/dist/docs/3.0.13/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.0.13/trusted-match/router-architecture"> + Deployment, fan-out, and provider configuration for publishers. + </Card> + <Card title="get_signals task" icon="code" href="/dist/docs/3.0.13/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.0.13/signals/tasks/activate_signal"> + Enabling specific measurement on a campaign. + </Card> + <Card title="Accounts overview" icon="building" href="/dist/docs/3.0.13/accounts/overview"> + The commercial layer: advertisers, operators, authentication, and billing. + </Card> + <Card title="Campaign governance" icon="shield-check" href="/dist/docs/3.0.13/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.0.13/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 +- **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.0.13/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 + +### Exercise + +Given sample Context Match and Identity Match responses, determine which packages the publisher activates and what targeting key-values to set. + +<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.0.13/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.0.13/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`, `list_creative_formats`, `get_media_buy_delivery` +- Account setup via `sync_accounts` +- 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/client@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.0.13/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` — proposal-negotiated +- `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.0.13/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.0.13/learning/specialist/media-buy) — transaction flows, pricing, orchestration +- [S2: Creative](/dist/docs/3.0.13/learning/specialist/creative) — asset workflows, format compliance +- [S3: Signals](/dist/docs/3.0.13/learning/specialist/signals) — measurement, attribution, optimization +- [S4: Governance](/dist/docs/3.0.13/learning/specialist/governance) — brand safety, campaign governance, compliance, policy registry +- [S5: Sponsored Intelligence](/dist/docs/3.0.13/learning/specialist/sponsored-intelligence) — conversational brand experiences diff --git a/dist/docs/3.0.13/measurement/taxonomy.mdx b/dist/docs/3.0.13/measurement/taxonomy.mdx new file mode 100644 index 0000000000..95351d9698 --- /dev/null +++ b/dist/docs/3.0.13/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.0.13/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.0.13/media-buy/task-reference/get_media_buy_delivery) — current delivery state +- [`provide_performance_feedback`](/dist/docs/3.0.13/media-buy/task-reference/provide_performance_feedback) — buyer-side observed performance +- [Optimization & Reporting](/dist/docs/3.0.13/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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/media-buy/task-reference/log_event) — buyer-attested event delivery +- [Conversion Tracking](/dist/docs/3.0.13/media-buy/conversion-tracking/) — patterns that connect delivery to outcomes +- [Trusted Match](/dist/docs/3.0.13/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.0.13/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.0.13/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.0.13/signals/overview) and [Governance](/dist/docs/3.0.13/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.70, + "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. + +## Open questions + +The taxonomy clarifies what's distinct, but two questions sit on the boundaries. + +### Should measurement get a dedicated protocol surface? + +Measurement agents are already first-class: vendors are discoverable as `brand.json` `agents[type='measurement']` (the BrandRef anchor), publish their metric catalog via `get_adcp_capabilities.measurement.metrics[]`, are referenced by `BrandRef` from `performance-standard.vendor`, `vendor_metrics`, and `committed_metrics` (vendor-scope entries), and emit attested values through `delivery-metrics.viewability` (graduated standards) and `vendor_metric_values` (non-graduated vendor metrics). The pattern is *"discoverable agent identity consumed across multiple protocols,"* not *"no protocol home."* + +The open question is whether that distributed pattern is right or whether measurement deserves a *peer protocol* alongside Signals and Governance — with its own task surface (e.g., `register_measurement`, `attest_outcome`, `dispute_measurement`) and its own specification page. Today, the measurement-agent contract is implicit, defined by the union of where the BrandRef gets consumed. + +**Case for status quo (distributed).** Measurement vendors already operate via OMID, MRC accreditation, and vendor SDKs. The protocol's job is making them callable from buyer/seller flows, which it does. A dedicated protocol risks duplicating what already works. + +**Case for peer protocol.** Dispute resolution, recount, and signed measurement attestation as a primary artifact (rather than a vendor field on a delivery row) might benefit from common primitives. If measurement-agent capabilities expand beyond *"report a value"* — into in-flight signal-survival reporting, predictive measurability, or independent governance audit — the distributed pattern strains. + +This question doesn't need an abstract answer. It will resolve as soon as a measurement-vendor capability surfaces that doesn't fit the current pattern. + +### 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 store or normalize attribution outputs. + +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.0.13/media-buy/advanced-topics/accountability.mdx b/dist/docs/3.0.13/media-buy/advanced-topics/accountability.mdx new file mode 100644 index 0000000000..f1d01cb47e --- /dev/null +++ b/dist/docs/3.0.13/media-buy/advanced-topics/accountability.mdx @@ -0,0 +1,232 @@ +--- +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 +{ + "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.0.13/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.0.13/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.0.13/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.0.13/media-buy/advanced-topics/accounts-and-security.mdx b/dist/docs/3.0.13/media-buy/advanced-topics/accounts-and-security.mdx new file mode 100644 index 0000000000..0215ba7523 --- /dev/null +++ b/dist/docs/3.0.13/media-buy/advanced-topics/accounts-and-security.mdx @@ -0,0 +1,61 @@ +--- +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.0.13/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.0.13/building/by-layer/L2/accounts-and-agents) for details. + +## 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.0.13/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.0.13/media-buy/advanced-topics/agentic-execution-engine.mdx b/dist/docs/3.0.13/media-buy/advanced-topics/agentic-execution-engine.mdx new file mode 100644 index 0000000000..1349148e53 --- /dev/null +++ b/dist/docs/3.0.13/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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/media-buy/advanced-topics/targeting)** - Brief-based targeting and geographic overlays +- **[Signals Protocol](/dist/docs/3.0.13/signals/overview)** - Signal discovery and activation +- **[Universal Macros](/dist/docs/3.0.13/creative/universal-macros)** - Creative-level AXE integration +- **[Orchestrator Design](/dist/docs/3.0.13/building/operating/orchestrator-design)** - Building orchestration platforms diff --git a/dist/docs/3.0.13/media-buy/advanced-topics/billing-authority.mdx b/dist/docs/3.0.13/media-buy/advanced-topics/billing-authority.mdx new file mode 100644 index 0000000000..85cf4f91af --- /dev/null +++ b/dist/docs/3.0.13/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.0.13/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.0.13/core/measurement-terms.json) — schema +- [`get_media_buy_delivery`](/dist/docs/3.0.13/media-buy/task-reference/get_media_buy_delivery) — seller-side finality flags +- [`report_usage`](/dist/docs/3.0.13/accounts/tasks/report_usage) — buyer-side / third-party finality flags +- [Accountability](/dist/docs/3.0.13/media-buy/advanced-topics/accountability) — performance standards, makegood remedies, cancellation +- [Reporting capabilities and measurement windows](/dist/docs/3.0.13/media-buy/media-buys/optimization-reporting) diff --git a/dist/docs/3.0.13/media-buy/advanced-topics/index.mdx b/dist/docs/3.0.13/media-buy/advanced-topics/index.mdx new file mode 100644 index 0000000000..7db45ac72f --- /dev/null +++ b/dist/docs/3.0.13/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.0.13/media-buy/advanced-topics/targeting)** - Brief-based targeting with geographic overlays and real-time signals +- **[Trusted Match Protocol (TMP)](/dist/docs/3.0.13/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.0.13/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.0.13/media-buy/advanced-topics/accounts-and-security)** - Multi-tenant security model and access control +- **[Policy Compliance](/dist/docs/3.0.13/media-buy/media-buys/policy-compliance)** - Automated compliance checking and enforcement + +### Implementation Architecture +Deep technical details for implementers: + +- **[Orchestrator Design](/dist/docs/3.0.13/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.0.13/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.0.13/media-buy/advanced-topics/sandbox)** for development best practices +- **Explore [Orchestrator Design](/dist/docs/3.0.13/building/operating/orchestrator-design)** for architecture guidance \ No newline at end of file diff --git a/dist/docs/3.0.13/media-buy/advanced-topics/pricing-models.mdx b/dist/docs/3.0.13/media-buy/advanced-topics/pricing-models.mdx new file mode 100644 index 0000000000..89742b0a41 --- /dev/null +++ b/dist/docs/3.0.13/media-buy/advanced-topics/pricing-models.mdx @@ -0,0 +1,877 @@ +--- +title: Pricing Models +description: "AdCP pricing models — CPM, CPCV, CPP, CPC, CPA, 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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/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, + "max_bid": true, + "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.0.13/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`). +- `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. + +--- + +### 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.0.13/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.0.13/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.0.13/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 (where only `bid_price` exists), `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", + "bid_price": 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) +- Bid-based auction models (`cpm`, `vcpm`, `cpc`, `cpcv`, `cpv`) may also include optional `max_bid: true` to explicitly signal `bid_price` is treated as buyer maximum willingness to pay (ceiling mode) +- Common for non-guaranteed inventory +- Buyer submits `bid_price` in media buy request + +**Auction Example**: +```json +{ + "pricing_option_id": "cpcv_usd_auction", + "pricing_model": "cpcv", + "currency": "USD", + "floor_price": 0.08, + "max_bid": true, + "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 currency and pricing model: + +```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_ids": [{"agent_url": "https://creative.adcontextprotocol.org", "id": "video_30s"}], + "pricing_option_id": "cpcv_usd_auction", + "budget": 50000, + "pacing": "even", + "bid_price": 0.16 + }] +} +``` + +**How it works:** +1. Package selects `pricing_option_id` from product (e.g., "cpcv_usd_auction") +2. Pricing option determines currency, pricing model, and fixed vs auction +3. Package `budget` is in the pricing option's currency +4. Auction-based pricing requires `bid_price`; it is the exact honored price unless `max_bid: true`, which switches it to a maximum-willingness-to-pay ceiling +5. Sellers validate currency compatibility across packages + +## 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_ids": [ + { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "video_15s" + }, + { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "video_30s" + } + ], + "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. + +## 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.0.13/media-buy/product-discovery/media-products) - Product model reference +- [Creating Media Buys](/dist/docs/3.0.13/media-buy/task-reference/create_media_buy) - How to select pricing when buying +- [Delivery Reporting](/dist/docs/3.0.13/media-buy/task-reference/get_media_buy_delivery) - Understanding metrics by pricing model +- [Glossary](/dist/docs/3.0.13/reference/glossary) - Pricing and metric definitions diff --git a/dist/docs/3.0.13/media-buy/advanced-topics/sandbox.mdx b/dist/docs/3.0.13/media-buy/advanced-topics/sandbox.mdx new file mode 100644 index 0000000000..6482289b84 --- /dev/null +++ b/dist/docs/3.0.13/media-buy/advanced-topics/sandbox.mdx @@ -0,0 +1,250 @@ +--- +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. + +### Implicit 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" +} +``` + +### Explicit accounts (`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 + +| | Implicit (`require_operator_auth: false`) | Explicit (`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 (implicit account) + +This example shows the implicit account path. For explicit accounts, replace the natural key account reference with `{ "account_id": "acct_sandbox_acme_001" }` in each step. + +### 1. Discover products + +```json +// get_products +{ + "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_id": { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "video_standard_30s" + }, + "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 **explicit account sellers**: ensure your platform has pre-existing sandbox/test accounts that `list_accounts` can return when filtered with `sandbox: true`. + +For **implicit 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.0.13/media-buy/advanced-topics/targeting.mdx b/dist/docs/3.0.13/media-buy/advanced-topics/targeting.mdx new file mode 100644 index 0000000000..047e0c73c6 --- /dev/null +++ b/dist/docs/3.0.13/media-buy/advanced-topics/targeting.mdx @@ -0,0 +1,855 @@ +--- +title: Targeting +description: "AdCP targeting — how natural language briefs replace taxonomy-based audience selection, with geographic overlays and real-time decisioning at impression time." +"og:title": "AdCP — Targeting" +testable: true +--- + + +AdCP's targeting philosophy centers on **brief-based targeting** where targeting requirements are communicated through natural language briefs, and publishers return products that include all necessary targeting capabilities. + +## Core Principle: Targeting Through Briefs + +The primary way to specify targeting in AdCP is through campaign briefs. Instead of configuring complex targeting parameters, buyers describe their audience requirements in plain language: + +```json +{ + "brief": "We want to reach millennial parents (ages 25-40) 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. + +## Why Brief-Based Targeting? + +### Eliminates Targeting Conflicts +- **Single source**: All targeting comes from the publisher's product definition +- **No layering conflicts**: Avoids multiple targeting systems competing +- **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.0.13/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.0.13/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 +{ + "product_id": "premium_millennial_mobile", + "name": "Premium Millennial Mobile Package", + "description": "Mobile display inventory targeting millennials (25-40) across lifestyle and entertainment apps in top 25 US markets", + "targeting_description": "Ages 25-40, household income $50K+, interests in lifestyle/entertainment, mobile apps only, top 25 US metro areas", + "audience_size": "~2.5M monthly unique users", + "pricing": { + "cpm": 8.50, + "targeting_included": true + } +} +``` + +## Product Filters vs Targeting Overlays + +Some targeting dimensions appear in both `get_products` filters and `create_media_buy` targeting overlays. These serve different purposes at different stages: + +| Filter (`get_products`) | Overlay (`create_media_buy`) | Filter: what it does | Overlay: what it does | +|---|---|---|---| +| `countries` | `geo_countries` / `_exclude` | Show products serving these countries | Deliver only in these countries | +| `regions` | `geo_regions` / `_exclude` | Show products serving these regions | Deliver only in these regions | +| `metros` | `geo_metros` / `_exclude` | Show products serving these metros | Deliver only in these metros | +| `postal_areas` | `geo_postal_areas` / `_exclude` | Show products serving these postal codes | Deliver only in these postal codes | +| `geo_proximity` | `geo_proximity` | Show products with inventory near this point | Deliver only to users near this point | +| `keywords` | `keyword_targets` / `negative_keywords` | Show products supporting these search terms | Bid on these specific terms | + +**Filters** tell the sell-side agent what matters to the buyer so it can curate relevant products. Without a proximity filter, a seller might recommend products that don't support geo_proximity — and the buyer wouldn't discover the gap until `create_media_buy`. + +**Overlays** apply the precise functional constraint at execution time. The overlay is what the seller's ad server enforces. + +Value filters (`countries`, `regions`, `metros`, `postal_areas`, `geo_proximity`, `keywords`) narrow by coverage area — "show me inventory in these places." Capability filters (`required_geo_targeting`, `required_features`) narrow by what the seller can enforce — "only sellers that support zip-level targeting." These compose: use both when you need inventory in a specific area from sellers that can target at that granularity. + +For buyers: pass filters at discovery time, then apply the same values (or refined versions) as overlays at buy time. Note that overlay schemas are stricter — for example, `keyword_targets` requires `match_type` while the `keywords` filter defaults to `broad`. + +### Example: discovery to buy + +```json +// Step 1: get_products — signal intent with filters +{ + "brief": "Coffee shop promotion in downtown Seattle", + "filters": { + "geo_proximity": [{ + "lat": 47.6062, + "lng": -122.3321, + "label": "Downtown Seattle", + "radius": { "value": 5, "unit": "mi" } + }], + "keywords": [{ "keyword": "coffee" }] + } +} +``` + +```json +// Step 2: create_media_buy — apply precise constraints as overlays +{ + "targeting": { + "geo_proximity": [{ + "lat": 47.6062, + "lng": -122.3321, + "label": "Downtown Seattle", + "radius": { "value": 5, "unit": "mi" } + }], + "keyword_targets": [{ "keyword": "coffee", "match_type": "broad" }] + } +} +``` + +Note that `keywords` (filter) becomes `keyword_targets` (overlay), and `match_type` becomes required. + +## When to Use Targeting Overlays + +Targeting overlays in `create_media_buy` and `update_media_buy` are **rare** and should only be used for: + +### 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 system (e.g., `us_zip`, `gb_outward`) — not all publishers support postal-level targeting + +**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` + +**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.0.13/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.0.13/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` - World ID orb verification + +**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.0.13/core/targeting.json", + "device_platform": ["ios", "android"] +} +``` + +**Available platforms** (defined in [`device-platform.json`](https://adcontextprotocol.org/schemas/3.0.13/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.0.13/core/targeting.json", + "device_type": ["mobile", "tablet"] +} +``` + +**Exclusion** — use `device_type_exclude` to exclude specific form factors: + +```json +{ + "$schema": "/schemas/3.0.13/core/targeting.json", + "device_type_exclude": ["dooh"] +} +``` + +**Available types** (defined in [`device-type.json`](https://adcontextprotocol.org/schemas/3.0.13/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.0.13/core/targeting.json", + "language": ["es", "en"] +} +``` + +**Format**: ISO 639-1 two-letter language codes (e.g., `en`, `es`, `fr`, `de`, `zh`). + +### Frequency Capping +Two frequency controls can be used independently or together: + +**Cooldown between exposures** — `suppress` prevents back-to-back delivery: +```json +{ + "$schema": "/schemas/3.0.13/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.0.13/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 +- **Third-party audience segments** - "Auto intenders" or "Luxury shoppers" in brief text (use signals protocol for data provider segments) +- **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` | | +| Third-party audience segment (interest targeting) | | ✅ "Auto intenders" in brief, or use signals protocol | +| 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. + +**Capabilities.** Sellers that declare geographic targeting support in `get_adcp_capabilities` SHOULD support both inclusion and exclusion at that level. If a seller only supports one direction, it MUST return a validation error for unsupported fields rather than silently ignoring them. + +### 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 + +### geo_regions +- **Description**: Restrict delivery to specific regions/states +- **Format**: ISO 3166-2 subdivision codes +- **Examples**: `["US-CA", "US-NY"]`, `["GB-SCT", "GB-ENG"]` +- **Use cases**: State-level compliance, regional testing + +### geo_regions_exclude +- **Description**: Exclude specific regions/states 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 + +### 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 `system` and `values` +- **Systems**: `us_zip`, `us_zip_plus_four`, `gb_outward`, `gb_full`, `ca_fsa`, `ca_full`, `de_plz`, `fr_code_postal`, `au_postcode`, `ch_plz`, `at_plz` +- **Example**: `[{ "system": "us_zip", "values": ["10001", "10002"] }]` +- **Use cases**: Hyper-local campaigns, postal-level restrictions +- **Note**: Seller must declare supported systems in `get_adcp_capabilities` + +### geo_postal_areas_exclude +- **Description**: Exclude specific postal areas from delivery +- **Format**: Array of objects, each with a `system` and `values` +- **Example**: `[{ "system": "us_zip", "values": ["90210"] }]` +- **Use cases**: RCT holdout zip codes, restricted delivery areas +- **Note**: Seller must declare supported systems in `get_adcp_capabilities` + +### 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.0.13/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.0.13/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.0.13/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.0.13/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` + +### 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, "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_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` + +### language +- **Description**: Restrict to users with specific language preferences +- **Format**: Array of ISO 639-1 two-letter language codes +- **Examples**: `["en"]`, `["es", "en"]`, `["zh", "ja", "ko"]` +- **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.0.13/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.0.13/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. + +Validated examples: + +```json +{ + "$schema": "/schemas/3.0.13/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.0.13/core/targeting.json", + "geo_proximity": [ + { + "lat": 51.4700, + "lng": -0.4543, + "label": "Heathrow Airport", + "radius": { "value": 30, "unit": "km" } + } + ] +} +``` + +```json +{ + "$schema": "/schemas/3.0.13/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.0.13/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`) to the extent your platform supports them. Declare supported metro and postal 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.0.13/trusted-match)** - Real-time execution layer for impression-time targeting, frequency capping, and brand suitability +- **[Signals Protocol](/dist/docs/3.0.13/signals/overview)** - Real-time targeting signals for brand suitability and contextual targeting +- **[Product Discovery](/dist/docs/3.0.13/media-buy/product-discovery/)** - How briefs lead to targeted product recommendations +- **[Example Briefs](/dist/docs/3.0.13/media-buy/product-discovery/example-briefs)** - Real examples of effective targeting briefs +- **[Policy Compliance](/dist/docs/3.0.13/media-buy/media-buys/policy-compliance)** - Automated compliance checking and enforcement diff --git a/dist/docs/3.0.13/media-buy/capability-discovery/implementing-standard-formats.mdx b/dist/docs/3.0.13/media-buy/capability-discovery/implementing-standard-formats.mdx new file mode 100644 index 0000000000..d1335d6974 --- /dev/null +++ b/dist/docs/3.0.13/media-buy/capability-discovery/implementing-standard-formats.mdx @@ -0,0 +1,490 @@ +--- +title: Implementing Standard Format Support +description: "Implementing standard creative formats in AdCP — reference IAB formats from the AdCP creative reference agent instead of redefining display, video, and native specs." +"og:title": "AdCP — Implementing Standard Format Support" +--- + + +This guide is for **sales agents** implementing creative format support. Before creating custom format definitions, you should check what formats are already available in the AdCP ecosystem. + +## Implementation Philosophy: Check First, Then Extend + +Most publishers support some combination of standard formats - whether IAB standard sizes, common video specs, or widely-used native formats. Rather than defining these yourself: + +1. **Check the reference creative agent** to see if your formats are already defined +2. **Reference the formats** if they match your needs +3. **Only create custom formats** when you have truly unique requirements + +This approach: +- **Reduces maintenance burden** - No need to maintain format definitions that already exist +- **Enables creative portability** - Buyers can reuse creatives across publishers +- **Improves ecosystem consistency** - Everyone uses the same specifications for common formats + +## The Reference Creative Agent + +**URL:** `https://creative.adcontextprotocol.org` + +**Status:** Production service - this is a real, working AdCP creative agent + +The reference creative agent provides authoritative definitions for common creative formats used across the advertising industry: +- IAB standard display sizes (300x250, 728x90, 320x50, etc.) +- Standard video formats (15s, 30s, 60s pre-roll, etc.) +- Audio formats for streaming and podcast insertion +- DOOH formats for digital out-of-home +- Native formats for responsive placements +- Carousel formats for multi-product displays + +**Before creating custom formats,** query the reference creative agent to see if the formats you need already exist. + +## Why Use Standard Formats? + +### For Sales Agents +- **No maintenance burden**: Don't replicate IAB standard format definitions +- **Ecosystem consistency**: Everyone uses the same format specifications +- **Focus on differentiation**: Spend time on custom formats unique to your inventory + +### For Buyers +- **Portability**: One creative works across multiple publishers +- **Predictability**: Format requirements are consistent +- **Faster launches**: No custom creative production per publisher + +## Implementation Steps + +### Step 1: Discover What Formats You Need + +List the creative formats your inventory accepts. For example: +- Display: 300x250, 728x90, 320x50 +- Video: 15-second pre-roll, 30-second pre-roll +- Native: Responsive native format + +### Step 2: Check the Reference Creative Agent + +Query `https://creative.adcontextprotocol.org` using `list_creative_formats` to see which of your formats already exist. The reference agent maintains formats for: +- All IAB standard display sizes +- Common video durations and aspect ratios +- Standard audio formats +- DOOH specifications +- Native ad formats + +### Step 3: Decide What to Reference vs Define + +**Reference formats when:** +- The format matches your technical requirements exactly +- You accept creatives built to standard IAB specifications +- You want creative portability across publishers + +**Define custom formats when:** +- You have unique technical requirements (custom dimensions, special asset needs) +- You need publisher-specific validation or assembly logic +- You offer premium, differentiated ad experiences + +### Step 4: Implement Your Response + +When implementing `list_creative_formats`, include the reference creative agent if you support any standard formats: + +**Most Common: Reference Standard Formats** + +If your inventory accepts standard formats (which most publishers do): + +```json +{ + "formats": [], + "creative_agents": [ + "https://creative.adcontextprotocol.org" + ] +} +``` + +This tells buyers: "We support all standard formats from the reference creative agent." + +**With Custom Formats: Combine Both** + +If you have unique formats PLUS standard format support: + +```json +{ + "formats": [ + { + "format_id": { + "agent_url": "https://youragent.com", + "id": "homepage_takeover" + }, + "name": "Homepage Takeover", + "type": "rich_media", + "assets": [...] + } + ], + "creative_agents": [ + "https://creative.adcontextprotocol.org" + ] +} +``` + +This tells buyers: "We support our custom homepage takeover format, PLUS all standard formats from the reference creative agent." + +**Only Custom Formats: Skip the Reference** + +If you ONLY support custom formats with truly unique requirements (rare): + +```json +{ + "formats": [ + { + "format_id": { + "agent_url": "https://youragent.com", + "id": "custom_holographic_display" + }, + "name": "Holographic Display Format", + "type": "dooh", + "assets": [...] + } + ] +} +``` + +**Note:** This is uncommon. Most publishers accept at least some standard formats (300x250, etc.) and should include the reference creative agent URL. + +## What Standard Formats Are Included? + +The reference creative agent provides formats across all major channels: + +- **[Display Formats](/dist/docs/3.0.13/creative/channels/display)** - IAB standard banner sizes (300x250, 728x90, 320x50, etc.) +- **[Video Formats](/dist/docs/3.0.13/creative/channels/video)** - Standard video ad specifications (15s, 30s, vertical, CTV) +- **[Audio Formats](/dist/docs/3.0.13/creative/channels/audio)** - Streaming audio and podcast insertion formats +- **[DOOH Formats](/dist/docs/3.0.13/creative/channels/dooh)** - Digital out-of-home billboard and transit specs +- **[Carousel Formats](/dist/docs/3.0.13/creative/channels/carousels)** - Multi-product and slideshow formats + +Each format includes: +- Precise technical requirements (dimensions, duration, file types) +- Required and optional assets with specifications +- Universal macro support +- Preview and validation capabilities + +## Format Discovery Flow + +When buyers discover formats from your sales agent: + +1. **Buyer calls** `list_creative_formats` on your sales agent +2. **Your response includes** custom formats plus `creative_agents: ["https://creative.adcontextprotocol.org"]` +3. **Buyer recursively queries** the reference agent to discover standard formats +4. **Buyer sees combined list** of your custom formats plus all standard formats + +The buyer tracks which URLs they've queried to avoid infinite loops. + +## Best Practices for Sales Agents + +### ✅ DO Reference Standard Formats + +```json +{ + "creative_agents": [ + "https://creative.adcontextprotocol.org" + ] +} +``` + +**When:** Your inventory accepts standard IAB sizes with no special requirements + +**Why:** Reduces maintenance, ensures consistency, buyers already have compatible creatives + +### ✅ DO Define Custom Formats + +```json +{ + "formats": [ + { + "format_id": { + "agent_url": "https://youragent.com", + "id": "native_feed_card" + }, + "type": "native" + } + ] +} +``` + +**When:** You have unique inventory experiences or specific technical requirements + +**Why:** Enables differentiation and premium inventory + +### ❌ DON'T Replicate Standard Formats + +```json +{ + "formats": [ + {"format_id": {"agent_url": "https://youragent.com", "id": "display_300x250"}}, + {"format_id": {"agent_url": "https://youragent.com", "id": "display_728x90"}}, + {"format_id": {"agent_url": "https://youragent.com", "id": "display_320x50"}}, + // ... copying 50+ standard formats + ] +} +``` + +**Why not:** Maintenance burden, version drift, inconsistency across ecosystem + +**Exception:** You need custom validation/preview logic for these formats + +### ✅ DO Use Both When Appropriate + +```json +{ + "formats": [ + // Your differentiating formats + ], + "creative_agents": [ + "https://creative.adcontextprotocol.org" + ] +} +``` + +**Result:** Buyers see your custom formats plus all standard formats + +## Format ID Namespacing + +To prevent conflicts when multiple agents define formats, AdCP uses a **namespace pattern** for format identifiers. + +### Namespace Pattern: `{domain}:{format_id}` + +**Structure:** +``` +domain:format_id +``` + +**Examples:** +- `creative.adcontextprotocol.org:display_300x250` +- `creative.adcontextprotocol.org:video_30s_hosted` +- `youragent.com:homepage_takeover_2024` +- `publisher.example:native_feed_card` + +### Domain Requirements + +**The domain in a namespaced format_id MUST:** + +1. **Host a valid agent card** at `{domain}/.well-known/adagents.json` +2. **Declare MCP endpoint** in the agent card extension +3. **Declare A2A endpoint** in the standard agent card section + +**Example agent card at** `https://youragent.com/.well-known/adagents.json`: + +```json +{ + "agents": [ + { + "agent_url": "https://youragent.com", + "agent_name": "Your Creative Agent", + "protocols": ["mcp", "a2a"], + "mcp_endpoint": "https://youragent.com/mcp", + "a2a_endpoint": "https://youragent.com/a2a", + "capabilities": ["list_creative_formats", "preview_creative"] + } + ] +} +``` + +This ensures the domain in the namespace is a valid, discoverable agent that can provide format specifications and validation. + +### When to Use Namespaces + +**Always use namespaced format_ids** when defining formats: + +```json +{ + "$schema": "/schemas/3.0.13/media-buy/list-creative-formats-response.json", + "formats": [ + { + "format_id": { + "agent_url": "https://youragent.com", + "id": "homepage_takeover" + }, + "name": "Homepage Takeover", + "type": "rich_media" + } + ] +} +``` + +**Benefits:** +- **No collisions** - Each agent owns its namespace +- **Clear ownership** - Domain identifies the authoritative agent +- **Discoverable** - Buyers can query the domain's agent card +- **Verifiable** - Domain must prove ownership via agent card + +### Namespace Examples by Agent Type + +**Reference Creative Agent:** +```json +{ + "format_id": { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "display_300x250" + } +} +``` + +**Publisher Sales Agent:** +```json +{ + "format_id": { + "agent_url": "https://youragent.com", + "id": "custom_format" + } +} +``` + +**DCO Platform:** +```json +{ + "format_id": { + "agent_url": "https://dco.example", + "id": "dynamic_creative_v2" + } +} +``` + +### Conflict Resolution + +With namespaced format_ids, conflicts **cannot occur** - each domain controls its own namespace. + +**No conflict:** +```json +// Two different formats, both valid +{ + "format_id": { + "agent_url": "https://publisher-a.com", + "id": "video_30s" + } +} +{ + "format_id": { + "agent_url": "https://publisher-b.com", + "id": "video_30s" + } +} +``` + +If a buyer encounters the same namespaced format_id from multiple sources, they are **the same format** - the namespace guarantees identity. + +### Validation Rules + +1. **Domain MUST match agent_url domain:** + ```json + // ✅ Valid - domain matches + { + "format_id": { + "agent_url": "https://youragent.com", + "id": "format_x" + } + } + + // ❌ Invalid - domain mismatch + { + "format_id": { + "agent_url": "https://otheragent.com", + "id": "format_x" + } + } + ``` + +2. **Domain MUST have valid agent card:** + - Agent card must exist at `{domain}/.well-known/adagents.json` + - Must declare MCP and/or A2A endpoints + - Endpoints must be functional + +3. **Format_id MUST follow pattern:** + - `{domain}:{format_id}` structure + - Domain is valid DNS hostname + - Format_id is alphanumeric with underscores/hyphens + +### Migration from Unnamespaced IDs + +If you previously used simple IDs like `display_300x250`, migrate to namespaced versions: + +**Before:** +```json +{ + "format_id": { + "agent_url": "https://youragent.com", + "id": "display_300x250_old" + } +} +``` + +**After:** +```json +{ + "format_id": { + "agent_url": "https://youragent.com", + "id": "display_300x250" + } +} +``` + +Support both during transition if needed, but new implementations should use namespaced IDs from the start. + +## Reference Agent as Format Authority + +Each format includes a `format_id` field with an `agent_url` indicating its authoritative source: + +```json +{ + "$schema": "/schemas/3.0.13/core/format.json", + "format_id": { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "display_300x250" + }, + "name": "Medium Rectangle", + "type": "display" +} +``` + +The creative agent at that URL is the definitive source for: +- Complete format specifications +- Asset requirements and validation rules +- Preview generation +- Rendering instructions + +## When NOT to Use Standard Formats + +Define your own formats when: + +1. **Unique technical requirements** - Your platform needs different specs than IAB standards +2. **Custom validation** - You require additional creative review or approval +3. **Proprietary assembly** - Your rendering pipeline has special requirements +4. **Premium experiences** - Differentiated ad products not covered by standard formats + +Even in these cases, you can reference standard formats for basic inventory while defining custom formats for premium placements. + +## Implementation Notes + +### Format Authority Pattern + +The `agent_url` field enables a **distributed format authority** model: +- Reference agent is authoritative for IAB standards +- Each publisher is authoritative for their custom formats +- Buyers can discover and validate against the correct authority + +### Version Management + +The reference creative agent maintains format versions and compatibility: +- Format definitions evolve with industry standards +- Backward compatibility is maintained +- Buyers can rely on stable format_id values + +### What Makes a Format "Standard" + +**Standard formats** are those defined by the reference creative agent at `https://creative.adcontextprotocol.org` based on: + +1. **Industry specifications** - IAB standards, VAST/VPAID specs, common ad unit sizes +2. **Cross-platform compatibility** - Work across multiple publishers without customization +3. **Stable definitions** - Versioned and maintained for consistency across the ecosystem + +**Protocol perspective:** At the protocol level, standard formats are just formats like any other - there's no special API treatment. The `agent_url` field identifies the reference agent as the authoritative source, just as it would for any custom format. + +**Ecosystem perspective:** Standard formats enable portability. A buyer can build one creative and use it across many publishers who reference the same format definitions. + +## Related Documentation + +- [Creative Protocol Overview](/dist/docs/3.0.13/creative) - How formats, manifests, and agents work together +- [Creative Formats](/dist/docs/3.0.13/creative/formats) - Understanding format specifications and discovery +- [Channel Guides](/dist/docs/3.0.13/creative/channels/video) - Detailed format documentation by media type +- [list_creative_formats Task](/dist/docs/3.0.13/creative/task-reference/list_creative_formats) - API reference for format discovery diff --git a/dist/docs/3.0.13/media-buy/capability-discovery/index.mdx b/dist/docs/3.0.13/media-buy/capability-discovery/index.mdx new file mode 100644 index 0000000000..765043792f --- /dev/null +++ b/dist/docs/3.0.13/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.0.13/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.0.13/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.0.13/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.0.13/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. + +### [`list_creative_formats`](/dist/docs/3.0.13/creative/task-reference/list_creative_formats) +Discover all supported creative formats with detailed specifications including dimensions, file types, duration limits, and technical requirements. + +## Integration Pattern + +Capability discovery typically happens early in your AdCP workflow: + +1. **Discover Capabilities**: Call [`get_adcp_capabilities`](/dist/docs/3.0.13/protocol/get_adcp_capabilities) to learn what the agent supports +2. **Understand Formats**: Call [`list_creative_formats`](/dist/docs/3.0.13/creative/task-reference/list_creative_formats) to learn supported creative types +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.0.13/media-buy/task-reference/get_products) +5. **Plan Creatives**: Match discovered products to available formats for production planning +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.0.13/media-buy/task-reference/)** - Complete API documentation +- **[Product Discovery](/dist/docs/3.0.13/media-buy/product-discovery/)** - Finding advertising inventory +- **[Creatives](/dist/docs/3.0.13/media-buy/creatives/)** - Creative asset management +- **[Creative Protocol](/dist/docs/3.0.13/creative/)** - Creative agents and manifests +- **[Creative Channel Guides](/dist/docs/3.0.13/creative/channels/video)** - Format examples and patterns +- **[Creative Manifests](/dist/docs/3.0.13/creative/creative-manifests)** - Understanding creative specifications +- **[adagents.json Specification](/dist/docs/3.0.13/governance/property/adagents)** - Publisher authorization system (applies across all AdCP protocols) \ No newline at end of file diff --git a/dist/docs/3.0.13/media-buy/commerce-media.mdx b/dist/docs/3.0.13/media-buy/commerce-media.mdx new file mode 100644 index 0000000000..893f0e06cb --- /dev/null +++ b/dist/docs/3.0.13/media-buy/commerce-media.mdx @@ -0,0 +1,670 @@ +--- +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.0.13/media-buy/advanced-topics/accounts-and-security) | +| Advertiser account with retailer | `account_id` + `list_accounts` | [Accounts & Agents](/dist/docs/3.0.13/building/by-layer/L2/accounts-and-agents) | +| Brand's product catalog | `brand.product_catalog` | [Brand identity](/dist/docs/3.0.13/brand-protocol/brand-json) | +| GTIN / SKU selection for promotion | Catalog selectors (`ids`, `gtins`, `tags`) on `Catalog` | [Catalogs](/dist/docs/3.0.13/creative/catalogs) | +| Sponsored product listing | Product with catalog-rendered creative | [Creative Formats](/dist/docs/3.0.13/creative/formats) | +| On-site display / video | Product with standard `format_ids` | [Media Products](/dist/docs/3.0.13/media-buy/product-discovery/media-products) | +| Retailer first-party audience | Brief-based; named segments via `data_provider_signals` | [Targeting](/dist/docs/3.0.13/media-buy/advanced-topics/targeting) | +| ROAS target / max conversions | `optimization_goals` on package | [Optimization & Reporting](/dist/docs/3.0.13/media-buy/media-buys/optimization-reporting) | +| Closed-loop measurement | `outcome_measurement` + `conversion_tracking` on product | [Delivery Reporting](/dist/docs/3.0.13/media-buy/task-reference/get_media_buy_delivery) | +| Attribution window (14d click, 1d view) | `attribution_window` in delivery response | [Delivery Reporting](/dist/docs/3.0.13/media-buy/task-reference/get_media_buy_delivery) | +| ROAS / attributed revenue | `roas`, `conversion_value` in delivery metrics | [Delivery Reporting](/dist/docs/3.0.13/media-buy/task-reference/get_media_buy_delivery) | +| In-store attribution | `by_action_source` with `in_store` | [Delivery Reporting](/dist/docs/3.0.13/media-buy/task-reference/get_media_buy_delivery) | +| Store locations / store locator | Store catalog (seller-provided or buyer-synced) | [Catalogs — Stores](/dist/docs/3.0.13/creative/catalogs#stores) | +| Real-time inventory / in-stock | Inventory catalog via `sync_catalogs` | [Catalogs](/dist/docs/3.0.13/creative/catalogs) | +| Proximity / catchment targeting | Store catchment areas (isochrone, radius, GeoJSON) | [Catalogs — Catchment areas](/dist/docs/3.0.13/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.0.13/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_ids": [ + { "agent_url": "https://ads.shopgrid.example", "id": "sponsored_product_listing" } + ], + "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_ids": [ + { "agent_url": "https://creative.adcontextprotocol.org", "id": "display_300x250" }, + { "agent_url": "https://creative.adcontextprotocol.org", "id": "display_728x90" }, + { "agent_url": "https://creative.adcontextprotocol.org", "id": "video_15s" } + ], + "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_ids": [ + { "agent_url": "https://creative.adcontextprotocol.org", "id": "display_300x250" }, + { "agent_url": "https://creative.adcontextprotocol.org", "id": "video_15s" } + ], + "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_ids": [ + { "agent_url": "https://creative.adcontextprotocol.org", "id": "display_970x250" }, + { "agent_url": "https://creative.adcontextprotocol.org", "id": "display_300x250" } + ], + "placements": [ + { + "placement_id": "homepage_hero", + "name": "Homepage Hero Banner", + "format_ids": [{ "agent_url": "https://creative.adcontextprotocol.org", "id": "display_970x250" }] + }, + { + "placement_id": "homepage_sidebar", + "name": "Homepage Sidebar", + "format_ids": [{ "agent_url": "https://creative.adcontextprotocol.org", "id": "display_300x250" }] + } + ], + "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_ids": [ + { "agent_url": "https://creative.adcontextprotocol.org", "id": "display_1080x1920" }, + { "agent_url": "https://creative.adcontextprotocol.org", "id": "video_15s" } + ], + "placements": [ + { + "placement_id": "checkout_screen", + "name": "Checkout Lane Screens", + "format_ids": [ + { "agent_url": "https://creative.adcontextprotocol.org", "id": "display_1080x1920" }, + { "agent_url": "https://creative.adcontextprotocol.org", "id": "video_15s" } + ] + }, + { + "placement_id": "endcap_screen", + "name": "Aisle End-Cap Displays", + "format_ids": [ + { "agent_url": "https://creative.adcontextprotocol.org", "id": "display_1080x1920" } + ] + }, + { + "placement_id": "pharmacy_waiting", + "name": "Pharmacy Waiting Area", + "format_ids": [ + { "agent_url": "https://creative.adcontextprotocol.org", "id": "display_1080x1920" }, + { "agent_url": "https://creative.adcontextprotocol.org", "id": "video_15s" } + ] + } + ], + "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 `format_ids`. 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.0.13/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.0.13/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: + +**`outcome_measurement`** describes the attribution methodology: +```json +{ + "outcome_measurement": { + "type": "attributed_sales", + "attribution": "deterministic_purchase", + "window": { "interval": 14, "unit": "days" }, + "reporting": "daily_api" + } +} +``` + +**`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.0.13/building/by-layer/L2/account-state) — How catalogs, event sources, and campaigns build on the account +- [Accounts & Agents](/dist/docs/3.0.13/building/by-layer/L2/accounts-and-agents) — Account setup and billing relationships +- [Media Channel Taxonomy](/dist/docs/3.0.13/reference/media-channel-taxonomy) — `retail_media` channel definition +- [Media Products](/dist/docs/3.0.13/media-buy/product-discovery/media-products) — Product model reference +- [Catalogs](/dist/docs/3.0.13/creative/catalogs) — Product, inventory, store, and promotion feeds +- [Brand identity](/dist/docs/3.0.13/brand-protocol/brand-json) — Product catalog and brand identity +- [Pricing Models](/dist/docs/3.0.13/media-buy/advanced-topics/pricing-models) — CPC, CPM, flat rate details +- [Optimization & Reporting](/dist/docs/3.0.13/media-buy/media-buys/optimization-reporting) — `optimization_goals` and conversion optimization +- [Delivery Reporting](/dist/docs/3.0.13/media-buy/task-reference/get_media_buy_delivery) — Commerce attribution metrics +- [Targeting](/dist/docs/3.0.13/media-buy/advanced-topics/targeting) — Brief-based targeting approach diff --git a/dist/docs/3.0.13/media-buy/conversion-tracking/index.mdx b/dist/docs/3.0.13/media-buy/conversion-tracking/index.mdx new file mode 100644 index 0000000000..0c61da0ade --- /dev/null +++ b/dist/docs/3.0.13/media-buy/conversion-tracking/index.mdx @@ -0,0 +1,698 @@ +--- +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.0.13/media-buy/task-reference/sync_event_sources) configures where events come from, and [`log_event`](/dist/docs/3.0.13/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 events are collected — a website pixel, mobile SDK, server-to-server integration, or CRM import. + +Configure event sources with [`sync_event_sources`](/dist/docs/3.0.13/media-buy/task-reference/sync_event_sources). You provide an `event_source_id`, optional `name`, `event_types`, and `allowed_domains`. 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) | +| `action_source` | [ActionSource](#action-sources) | Type of event source (website pixel, app SDK, etc.) | +| `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.0.13/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.0.13/media-buy/task-reference/log_event): + +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.0.13/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 | +| `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.0.13/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. For purchase events, always include `value` and `currency` to enable ROAS reporting. + +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.0.13/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) | +| `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 subscribed to a service or newsletter | +| `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`) | + +## 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 source health + +Sellers that evaluate event source quality include a `health` object on each source in the [`sync_event_sources`](/dist/docs/3.0.13/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.0.13/core/event-source-health.json`](https://adcontextprotocol.org/schemas/3.0.13/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.0.13/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({ + 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.0.13/core/measurement-readiness.json`](https://adcontextprotocol.org/schemas/3.0.13/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.0.13/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.0.13/core/optimization-goal.json`](https://adcontextprotocol.org/schemas/3.0.13/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.0.13/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 | 1 = highest priority. When omitted, sellers use array position. | + +### 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 time**: + +```json +{ + "kind": "metric", + "metric": "attention_seconds", + "target": { "kind": "threshold_rate", "value": 5.0 }, + "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 | +| `attention_seconds` | seconds/impression | 5.0 (5s attention) | Attention time per impression | +| `attention_score` | score/impression | 40.0 (vendor-specific) | Attention score per impression | +| `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 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. | + +### Target kinds + +All target kinds across both goal types: + +| `target.kind` | Metric goals | Event goals | Description | +|---|---|---|---| +| `cost_per` | Cost per click/view/etc. | Cost per conversion event | `spend / count` | +| `threshold_rate` | Minimum per-impression 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 | Minimum attention time | `kind: "metric"`, `metric: "attention_seconds"` + `target: { kind: "threshold_rate", value: 5.0 }` | +| 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/subscribers | `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`, `start_trial`, `contact`, `schedule`, `donate`, `submit_application` | Safe as standalone optimization targets | +| 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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/protocol/get_adcp_capabilities). When unsupported, use a single event source per goal. +4. **Send events** — Use [`log_event`](/dist/docs/3.0.13/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.0.13/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.0.13/media-buy/task-reference/get_media_buy_delivery) shows per-item metrics (impressions, spend, clicks, conversions). + +## Related documentation + +- [`sync_event_sources`](/dist/docs/3.0.13/media-buy/task-reference/sync_event_sources) — Configure event sources +- [`log_event`](/dist/docs/3.0.13/media-buy/task-reference/log_event) — Send conversion events +- [`create_media_buy`](/dist/docs/3.0.13/media-buy/task-reference/create_media_buy#campaign-with-conversion-optimization) — Set optimization goals on packages +- [`get_media_buy_delivery`](/dist/docs/3.0.13/media-buy/task-reference/get_media_buy_delivery) — Monitor conversion metrics +- [Pricing Models](/dist/docs/3.0.13/media-buy/advanced-topics/pricing-models#cpa-cost-per-acquisition) — CPA billing (pay per conversion) diff --git a/dist/docs/3.0.13/media-buy/creatives/index.mdx b/dist/docs/3.0.13/media-buy/creatives/index.mdx new file mode 100644 index 0000000000..571c09f053 --- /dev/null +++ b/dist/docs/3.0.13/media-buy/creatives/index.mdx @@ -0,0 +1,180 @@ +--- +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.0.13/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. + +### Creative Library Management +Use [`list_creatives`](/dist/docs/3.0.13/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 creating any creative assets, you need to understand **what formats are available and required**. AdCP provides two complementary tools that work together: + +#### The Discovery Workflow + +**`get_products`** finds advertising inventory that matches your campaign needs and returns format IDs those products support. **`list_creative_formats`** provides full format specifications with detailed creative requirements. + +#### Recursive Format Discovery + +Sales agents can optionally reference creative agents that provide additional formats. This creates a recursive discovery pattern: + +1. Call `list_creative_formats` on a sales agent +2. Receive full format definitions for formats the agent directly supports +3. Optionally receive a `creative_agents` array with URLs to other creative agents +4. Recursively call `list_creative_formats` on those creative agents to discover more formats +5. **Buyers must track visited URLs to avoid infinite loops** + +Each format includes an `agent_url` field indicating its authoritative source. + +**Note**: `list_creative_formats` does not require authentication, enabling public format discovery. + +#### Two Common Approaches: + +**1. Inventory-First** - "What products match my campaign, and what formats do they need?" +```javascript +// Find products for your campaign +const products = await get_products({ + brand: { + domain: "acmecorp.com" + }, + brief: "Acme Corp product launch campaign" +}); +// Products return: format_ids: ["video_15s_hosted", "homepage_takeover_2024"] + +// Get full creative specs (returns complete format objects, not just IDs) +const response = await list_creative_formats({}); +const formatSpecs = response.formats.filter(f => + products.products.flatMap(p => p.format_ids).includes(f.format_id) +); +// Now you have full specs: video_15s_hosted needs MP4 H.264, 15s, 1920x1080 +// homepage_takeover_2024 needs hero image + logo + headline + +// Optionally discover formats from linked creative agents +if (response.creative_agents) { + for (const agent of response.creative_agents) { + const agentFormats = await list_creative_formats({ agent_url: agent.agent_url }); + formatSpecs.push(...agentFormats.formats); + } +} +``` + +**2. Creative-First** - "What video formats does this publisher support?" +```javascript +// Browse all available formats (returns full format objects immediately) +const response = await list_creative_formats({ + type: "video", + category: "standard" +}); +// response.formats contains: full format objects for video_15s_hosted, video_30s_vast, etc. + +// Recursively discover formats from creative agents if needed +const allFormats = [...response.formats]; +if (response.creative_agents) { + for (const agent of response.creative_agents) { + const agentResponse = await list_creative_formats({ + agent_url: agent.agent_url, + type: "video" + }); + allFormats.push(...agentResponse.formats); + } +} + +// Find products supporting your creative capabilities +const products = await get_products({ + brand: { + domain: "acmecorp.com" + }, + brief: "Acme Corp product launch campaign", + filters: { + format_ids: allFormats.map(f => f.format_id) + } +}); +``` + +#### Why Both Tools Matter + +- **Without `list_creative_formats`**: Format IDs from products are opaque identifiers +- **Without `get_products`**: You don't know which formats actually have available inventory +- **Together**: You understand both what's available AND what's required to meet specifications + +### 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.0.13/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.0.13/creative/task-reference/sync_creatives)** - Bulk creative management with upsert semantics +- **[`list_creatives`](/dist/docs/3.0.13/creative/task-reference/list_creatives)** - Advanced creative library querying and filtering +- **[`list_creative_formats`](/dist/docs/3.0.13/creative/task-reference/list_creative_formats)** - Understanding format requirements +- **[Brand identity](/dist/docs/3.0.13/brand-protocol/brand-json)** - Brand identity and asset management +- **[Creative Formats](/dist/docs/3.0.13/creative/formats)** - Understanding format specifications and discovery +- **[Creative Channel Guides](/dist/docs/3.0.13/creative/channels/video)** - Format examples across video, display, audio, DOOH, and carousels +- **[Asset Types](/dist/docs/3.0.13/creative/asset-types)** - Understanding asset roles and specifications diff --git a/dist/docs/3.0.13/media-buy/index.mdx b/dist/docs/3.0.13/media-buy/index.mdx new file mode 100644 index 0000000000..9f99a64843 --- /dev/null +++ b/dist/docs/3.0.13/media-buy/index.mdx @@ -0,0 +1,258 @@ +--- +title: Media buy protocol +sidebarTitle: Overview +"og:image": /images/walkthrough/media-buy-01-sams-desk.png +description: "AdCP media buy protocol walkthrough — follow a campaign from brief to delivery across CTV, display, and audio using one unified workflow." +"og:title": "AdCP — Media buy protocol" +--- + +<img src="/images/walkthrough/media-buy-01-sams-desk.png" alt="A media buyer sits at a desk surrounded by four different platform dashboards, each showing different data formats and interfaces" style={{ width: '100%', borderRadius: '12px', marginBottom: '2rem' }} /> + +Sam is a media buyer at Pinnacle Agency. His client just greenlit a $50,000 Q2 campaign for Acme Outdoor's Trail Pro 3000 — 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. Four logins. A spreadsheet to compare proposals that were never in the same format. He entered the same flight dates into four different systems. + +This walkthrough follows Sam through the same campaign on AdCP — one protocol that replaces four platform-specific workflows. + +## Step 1: Write the brief + +Sam starts with what he knows: the campaign objectives. + +<img src="/images/walkthrough/media-buy-02-brief-radiates.png" alt="Sam's brief glows on screen and radiates outward as clean teal rays to three seller agent robots, each standing at their own podium examining the incoming request" style={{ width: '100%', borderRadius: '12px', marginBottom: '1rem' }} /> + +In AdCP, the brief is natural language inside `get_products`. Sam doesn't need to learn each publisher's targeting taxonomy or inventory categories — he describes what he wants, and each sales agent interprets it against their own inventory: + +```javascript +const products = await Promise.all( + sellers.map(seller => seller.getProducts({ + buying_mode: "brief", + brief: "Premium video inventory on sports and outdoor lifestyle publishers. Q2 flight, $50K budget. Adults 25-54, US and Canada.", + brand: { domain: "acmeoutdoor.com" }, + account: { brand: { domain: "acmeoutdoor.com" }, operator: "pinnacle-agency.com" } + })) +); +``` + +One brief. Three sellers. Same JSON structure back. + +<Accordion title="Agency language → protocol terms"> + +| What Sam says | What the protocol calls it | +|---|---| +| Campaign brief | `brief` field on `get_products` | +| Media plan | Products returned from `get_products` | +| IO / insertion order | `create_media_buy` | +| Trafficking creatives | `sync_creatives` to each seller | +| Campaign report | `get_media_buy_delivery` across agents | +| Flight dates | `start_time` / `end_time` on the media buy or packages | +| Viewability / IVT / completion SLAs | `performance_standards` on packages — see [Accountability](/dist/docs/3.0.13/media-buy/advanced-topics/accountability) | +| Makegoods | `makegood_policy` in `measurement_terms` — see [Accountability](/dist/docs/3.0.13/media-buy/advanced-topics/accountability) | + +</Accordion> + +## Step 2: Compare proposals + +<img src="/images/walkthrough/media-buy-03-proposals.png" alt="Three seller robots present their offerings — a video slate, a display banner, and a podcast waveform — while Sam reviews them side by side on a single clean screen, looking pleased" style={{ width: '100%', borderRadius: '12px', marginBottom: '1rem' }} /> + +Products come back in a standard format. For the first time, Sam sees pricing, delivery forecasts, targeting options, and creative requirements — all side by side: + +| Seller | Product | CPM | Forecast | Format | +|---|---|---|---|---| +| StreamHaus | CTV sports pre-roll | $28 | 890K impressions | SSAI 30s video | +| OutdoorNet | Adventure lifestyle display | $12 | 2.1M impressions | 300x250, 728x90 | +| PodTrail | Outdoor podcast mid-roll | $22 | 340K impressions | Audio 30s + companion | + +No CSVs. No spreadsheets. No manual data entry. The products are comparable because every seller returns the same schema. + +Sam wants to narrow down. He switches to `refine` mode, telling each agent exactly how to adjust: + +```javascript +const refined = await seller.getProducts({ + buying_mode: "refine", + refine: [ + { + scope: "request", + ask: "Only guaranteed packages. Must include completion rate SLA above 80%." + } + ], + brand: { domain: "acmeoutdoor.com" }, + account: { brand: { domain: "acmeoutdoor.com" }, operator: "pinnacle-agency.com" } +}); +``` + +The `refine` array lets Sam layer constraints without starting over. Each refinement narrows the previous result set. + +## Step 3: Match creatives + +<img src="/images/walkthrough/media-buy-04-creatives.png" alt="Creative format templates — a 16:9 video frame, a 300x250 banner, and an audio waveform with companion — snap together with actual ad assets like puzzle pieces, assisted by a small robot" style={{ width: '100%', borderRadius: '12px', marginBottom: '1rem' }} /> + +Each product has creative requirements. Sam's platform calls `list_creative_formats` on each seller to understand exactly what they need: + +- **StreamHaus** needs SSAI-compatible 30s video (MP4, specific codecs) +- **OutdoorNet** needs display banners (300x250 and 728x90) +- **PodTrail** needs 30s audio plus a 300x250 companion banner + +Sam's creative team already has assets in their library. The platform matches existing manifests to each seller's format requirements and flags the gap — PodTrail needs an audio cut that doesn't exist yet. + +```javascript +const result = await seller.syncCreatives({ + account: { brand: { domain: "acmeoutdoor.com" }, operator: "pinnacle-agency.com" }, + creatives: [ + { + creative_id: "video_30s_trail_pro", + name: "Trail Pro 3000 - 30s CTV Spot", + format_id: { agent_url: "https://streamhaus.example", id: "ssai_30s" }, + assets: { video: { url: "https://cdn.pinnacle-agency.example/trail-pro-30s.mp4", mime_type: "video/mp4" } } + }, + { + creative_id: "display_trail_pro_300x250", + name: "Trail Pro 3000 - Display 300x250", + format_id: { agent_url: "https://outdoornet.example", id: "display_300x250" }, + assets: { image: { url: "https://cdn.pinnacle-agency.example/trail-pro-300x250.png", mime_type: "image/png" } } + } + ] +}); +if (result.errors) { + console.error('Sync failed:', result.errors); +} else { + console.log(`Synced ${result.creatives.length} creatives`); +} +``` + +## Step 4: Launch the campaign + +<img src="/images/walkthrough/media-buy-05-launch.png" alt="Sam presses a glowing launch button and a holographic campaign blueprint materializes above his desk, showing three branches — CTV, display, and audio — with budget amounts flowing along each branch" style={{ width: '100%', borderRadius: '12px', marginBottom: '1rem' }} /> + +Sam creates the media buy. One call per seller, same structure everywhere: + +```javascript +const buy = await seller.createMediaBuy({ + 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_preroll_q2", + budget: 25000, + pricing_option_id: "cpm_standard", + creative_assignments: [{ creative_id: "video_30s_trail_pro" }] + }] +}); +``` + +The seller validates the creatives and either approves the buy or sends it through review. Sam doesn't log into any dashboard — the protocol handles status updates. + +## Step 5: Governance checks + +<img src="/images/walkthrough/media-buy-06-governance.png" alt="The campaign blueprint passes through a security checkpoint staffed by a governance robot who scans each branch, stamping three green checkmarks for budget, brand safety, and targeting compliance" style={{ width: '100%', borderRadius: '12px', marginBottom: '1rem' }} /> + +Before any money moves, Sam's governance agent validates the buy: + +- **Budget**: $25K is within Sam's authorized spending limit +- **Brand safety**: StreamHaus is on Acme Outdoor's approved publisher list +- **Compliance**: Targeting parameters meet regulatory requirements for US and Canada +- **Creative**: All creatives carry required provenance metadata + +If the buy exceeds Sam's authority — say, if the total across all sellers hit $75K — the governance agent escalates to his manager. The `create_media_buy` task sits in `submitted` (or `input-required`) at the task layer until a human signs off; only once approved does the task complete and the media buy get its `media_buy_id`. + +Campaign governance requires the orchestrator to register the campaign plan via [`sync_plans`](/dist/docs/3.0.13/governance/campaign/tasks/sync_plans) before any governance checks. The plan defines authorized parameters — budget limits, channels, flight dates, and compliance policies — against which all subsequent actions are validated. The full governance sequence is `sync_plans` → `check_governance` (proposed) → `create_media_buy` → `check_governance` (committed by seller). See [Campaign Governance](/dist/docs/3.0.13/governance/campaign/index) for the complete specification. + +<Accordion title="What governance looks like in the protocol"> + +```javascript +// Step 1: Register the campaign plan with the governance agent +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"] + }] +}); + +// Step 2: Check governance before sending to seller (intent check) +const check = await governance.checkGovernance({ + plan_id: "acme-q2-trail-pro", + caller: "https://orchestrator.pinnacle-agency.example", + tool: "create_media_buy", + payload: buy +}); + +if (check.status === "denied") { + // Don't proceed — governance rejected the plan +} + +// Step 3: Send the buy to the seller with governance_context attached +const governanceContext = check.governance_context; +const mediaBuy = await seller.createMediaBuy({ ...buy, governance_context: governanceContext }); + +// Step 4: The seller independently calls check_governance with media_buy_id + +// planned_delivery before confirming — validating against the same plan +``` + +</Accordion> + +## Step 6: Match at serve time + +The campaign is approved and live. When a user loads a StreamHaus page, opens OutdoorNet's app, or asks an AI assistant a question, the publisher's TMP Router evaluates which of Sam's packages should activate. + +Two operations run separately — Context Match asks "does this content fit the package's targeting?" while Identity Match asks "is this user eligible?" The publisher joins both responses locally. Sam's buyer agent never sees user identity and content context together — the structural separation is built into the protocol. + +The same flow works on every surface. Sam didn't write surface-specific activation code for CTV versus web versus AI. TMP handles all of them. + +<Accordion title="How TMP activates a package"> + +When a user visits a StreamHaus article about hiking gear: + +1. StreamHaus sends a Context Match request with the article's content signals and Sam's available packages +2. Sam's buyer agent responds: "Activate pkg-outdoor-display — this hiking content matches the targeting" +3. StreamHaus sends a separate Identity Match request with a user token and ALL of Sam's active packages +4. Sam's buyer agent responds: "This user is eligible for pkg-outdoor-display (intent_score: 0.82)" +5. StreamHaus joins the results locally and activates the line item + +See the [Trusted Match Protocol](/dist/docs/3.0.13/trusted-match) for the full specification. + +</Accordion> + +## Step 7: Monitor delivery + +<img src="/images/walkthrough/media-buy-07-delivery.png" alt="Sam leans back at his desk, relaxed, with a single clean dashboard showing unified performance charts from all three sellers — bar charts rising, line graphs converging, all in teal" style={{ width: '100%', borderRadius: '12px', marginBottom: '1rem' }} /> + +The campaign is running. Sam monitors through a single view — his platform calls `get_media_buy_delivery` on each seller and merges the results: + +```javascript +const delivery = await seller.getMediaBuyDelivery({ + account: { brand: { domain: "acmeoutdoor.com" }, operator: "pinnacle-agency.com" }, + media_buy_ids: [buy.media_buy_id], + include_package_daily_breakdown: true +}); +``` + +Every seller reports in the same format: impressions, clicks, spend, completion rates. Sam sees one dashboard instead of four. When StreamHaus underdelivers on the CTV package, he reallocates budget to OutdoorNet — one `update_media_buy` call instead of logging into two platforms. + +## The full picture + +<img src="/images/concepts/media-buy-lifecycle.png" alt="A horizontal pipeline showing the five stages of a media buy: Discovery (magnifying glass), Planning (blueprint), Execution (rocket launch), Optimization (adjusting dials), and Reporting (clean dashboard)" style={{ width: '100%', borderRadius: '12px', marginBottom: '1rem' }} /> + +Sam went from four dashboards to one protocol. The same tasks that bought CTV inventory also bought display and audio — no platform-specific code, no manual data translation, no spreadsheet reconciliation. + +| Before AdCP | With AdCP | +|---|---| +| 4 dashboards, 4 logins | 1 protocol, 1 view | +| Manual CSV comparison | Standardized product proposals | +| Platform-specific creative specs | `list_creative_formats` on any seller | +| 4 campaign setup workflows | `create_media_buy` everywhere | +| Manual reporting reconciliation | `get_media_buy_delivery` aggregated | +| Per-surface activation ad-ops | TMP matches packages on any surface automatically | + +## Go deeper + +- **Product discovery**: [How `get_products` works](/dist/docs/3.0.13/media-buy/product-discovery/media-products) — briefs, wholesale mode, proposals, and refinement +- **Campaign lifecycle**: [Managing media buys](/dist/docs/3.0.13/media-buy/media-buys/index) — status transitions, updates, and approvals +- **Optimization**: [Delivery and reporting](/dist/docs/3.0.13/media-buy/media-buys/optimization-reporting) — metrics, dimensional breakdowns, and feedback loops +- **Governance**: [Campaign governance](/dist/docs/3.0.13/governance/overview) — how the three-party trust model protects Sam's spend +- **Creative**: [Creative walkthrough](/dist/docs/3.0.13/creative/index) — how Maya builds the creatives Sam uses +- **Real-time matching**: [Trusted Match Protocol](/dist/docs/3.0.13/trusted-match) — how packages activate at serve time via Context Match and Identity Match +- **Get certified**: The [Buyer track](/dist/docs/3.0.13/learning/tracks/buyer) teaches the full media buy workflow through interactive modules diff --git a/dist/docs/3.0.13/media-buy/media-buys/index.mdx b/dist/docs/3.0.13/media-buy/media-buys/index.mdx new file mode 100644 index 0000000000..e414528573 --- /dev/null +++ b/dist/docs/3.0.13/media-buy/media-buys/index.mdx @@ -0,0 +1,569 @@ +--- +title: Media Buy Lifecycle +description: "AdCP media buy lifecycle — create, update, monitor, and optimize campaigns across sellers using create_media_buy, update_media_buy, and get_media_buys tasks." +"og:title": "AdCP — Media Buy Lifecycle" +--- + + +Media buys represent the complete lifecycle of advertising campaigns in AdCP. The AdCP:Buy protocol provides a unified interface for managing media buys across multiple advertising platforms, from initial campaign creation through ongoing optimization and updates. + +## Overview + +AdCP's media buy management provides a unified interface for: + +- **Campaign Creation** from discovered products and packages +- **Lifecycle Management** through all campaign states +- **Budget and Targeting Updates** for ongoing optimization +- **Cross-Platform Orchestration** with consistent operations +- **Asynchronous Operations** with human-in-the-loop support + +## The Media Buy Lifecycle Phases + +### 1. Creation Phase +Transform discovered products into active advertising campaigns using [`create_media_buy`](/dist/docs/3.0.13/media-buy/task-reference/create_media_buy): + +- **Package Configuration**: Combine products with formats, targeting, and budget +- **Campaign Setup**: Define timing, overall budget, and brand context +- **Validation & Approval**: Automated checks with optional human approval +- **Platform Deployment**: Campaign creation across advertising platforms + +This phase may involve: +- Immediate creation with `active` status (instant activation) +- Deferred creation with `pending_creatives` status (awaiting creative assignment) or `pending_start` status (ready to serve, waiting for flight date) +- Human approval workflow via `pending_manual` task status (see [Asynchronous Operations](#asynchronous-operations-and-human-in-the-loop)) +- Permission requirements via `pending_permission` task status (see [Asynchronous Operations](#asynchronous-operations-and-human-in-the-loop)) + +<Note> +`pending_manual` and `pending_permission` are **task-level** statuses from the human-in-the-loop queue — they describe whether the *operation* requires approval, not the media buy's lifecycle state. The media buy itself enters `pending_creatives`, `pending_start`, or `active` once the operation completes. +</Note> + +**Platform Mapping:** +- **Google Ad Manager**: Creates an Order with LineItems +- **Kevel**: Creates a Campaign with Flights +- **Triton Digital**: Creates a Campaign with Flights + +### 2. Creative Upload Phase +Once created, the media buy requires creative assets via [`sync_creatives`](/dist/docs/3.0.13/creative/task-reference/sync_creatives): + +- **Platform-specific format support** (video, audio, display, custom) +- **Validation and policy review** for creative compliance +- **Assignment to specific packages** for targeted delivery + +### 3. Activation & Delivery Phase +Monitor and manage active campaigns: + +- **Status Tracking**: Campaign transitions from `pending_creatives` to `pending_start` to `active` +- **Creative Assignment**: Attach assets from the creative library +- **Delivery Monitoring**: Track pacing and performance metrics with [`get_media_buy_delivery`](/dist/docs/3.0.13/media-buy/task-reference/get_media_buy_delivery) +- **Issue Resolution**: Handle approval delays and platform issues + +### 4. Optimization & Reporting Phase +Ongoing performance monitoring and data-driven campaign optimization using AdCP's comprehensive reporting tools. + +Key activities include: +- **Performance monitoring** with real-time and historical analytics +- **Campaign optimization** through budget reallocation and targeting refinement +- **Dimensional reporting** using the same targeting dimensions for consistent analysis +- **AI-driven insights** through performance feedback loops + +For complete details on optimization strategies, performance monitoring, standard metrics, and best practices, see **[Optimization & Reporting](/dist/docs/3.0.13/media-buy/media-buys/optimization-reporting)**. + +## Key Concepts + +### Media Buy Structure +A media buy contains: +- **Campaign metadata** (buyer reference, brand, timing) +- **Overall budget** with currency and pacing preferences +- **Multiple packages** representing different targeting/creative combinations +- **Status tracking** through creation, approval, and execution phases + + +### Package types + +Three distinct types represent a package at different lifecycle stages: + +| Type | Schema | Used in | Purpose | +|------|--------|---------|---------| +| `PackageRequest` | `media-buy/package-request.json` | `create_media_buy` request | What the buyer sends to create a package | +| `Package` | `core/package.json` | `create_media_buy` success response | What the seller returns after creation (confirmed state) | +| `PackageStatus` | inline in `media-buy/get-media-buys-response.json` | `get_media_buys` response | Delivery/reporting view — includes creative approvals and optional snapshot | + +When implementing `create_media_buy`, send a `PackageRequest`. The response returns `Package` objects. When calling `get_media_buys` to check status or delivery, the response contains `PackageStatus` items with delivery-specific fields. + +### Package model +Packages are the building blocks of media buys: +- **Single product** selection from discovery results - when you buy a product, you buy the entire product (unless using property targeting) +- **Creative formats** to be provided for this package +- **Targeting overlays** for refinements including geo restrictions, frequency caps, and property targeting +- **Budget allocation** as portion of overall media buy budget +- **Pricing option** selection from product's available pricing models +- **Pacing strategy** for budget delivery (even, asap, or front_loaded) +- **Bid price** for auction-based pricing models (when applicable) +- **Flight scheduling** with optional `start_time` and `end_time` per package +- **[Accountability terms](/dist/docs/3.0.13/media-buy/advanced-topics/accountability)** for guaranteed buys — `performance_standards`, `measurement_terms`, and `cancellation_policy` + +### Flight scheduling + +Packages can have independent flight dates within a media buy. This enables weekly (or any cadence) flight patterns where the same product appears as multiple packages with different date windows and budgets. + +- **Inheritance**: When `start_time` or `end_time` is omitted on a package, the package inherits the media buy's dates. Each field inherits independently — a package may specify `start_time` while inheriting the media buy's `end_time`, or vice versa. +- **Validation**: Package dates must fall within the parent media buy's date range. Sellers SHOULD reject packages where `start_time` is equal to or after `end_time`. +- **Overlapping flights**: Multiple packages for the same product may have overlapping date ranges. Each package maintains its own independent budget. +- **Format**: Plain ISO 8601 date-time — packages do not support `"asap"` + +**Weekly flights example:** + +A display campaign running March 1-31, broken into weekly $2,000 flights with a dark period for lift measurement (abbreviated — see [`create_media_buy`](/dist/docs/3.0.13/media-buy/task-reference/create_media_buy) for the full request shape): + +```json +{ + "start_time": "2026-03-01T00:00:00Z", + "end_time": "2026-03-31T23:59:59Z", + "packages": [ + { + "product_id": "prod_premium_display", + "pricing_option_id": "cpm_usd_fixed", + "budget": 2000, + "start_time": "2026-03-01T00:00:00Z", + "end_time": "2026-03-07T23:59:59Z" + }, + { + "product_id": "prod_premium_display", + "pricing_option_id": "cpm_usd_fixed", + "budget": 2000, + "start_time": "2026-03-08T00:00:00Z", + "end_time": "2026-03-14T23:59:59Z" + }, + { + "product_id": "prod_premium_display", + "pricing_option_id": "cpm_usd_fixed", + "budget": 2000, + "start_time": "2026-03-22T00:00:00Z", + "end_time": "2026-03-28T23:59:59Z" + } + ] +} +``` + +Week 3 is intentionally omitted — a dark period for lift measurement. Each flight gets its own budget, so pacing and spend are controlled per week. To adjust mid-campaign, update individual package budgets without affecting other flights. + +### Creative Assignment and Placement Targeting + +When a product defines multiple placements, buyers can assign different creatives to different placements while still purchasing the entire product. + +**Key Points:** +- **Packages buy the entire product** - you cannot target individual placements at the package level +- Placement targeting happens **only at the creative assignment level** +- Creatives without `placement_ids` run on **all placements** in the product + +**Example Workflow:** + +1. **Product defines placements:** +```json +{ + "product_id": "news_site_premium", + "placements": [ + { + "placement_id": "homepage_banner", + "name": "Homepage Banner", + "format_ids": [{"agent_url": "...", "id": "display_728x90"}] + }, + { + "placement_id": "article_sidebar", + "name": "Article Sidebar", + "format_ids": [{"agent_url": "...", "id": "display_300x250"}] + } + ] +} +``` + +2. **Buyer creates package (buys entire product) and assigns different creatives to each placement:** +```json +{ + "product_id": "news_site_premium", + "creative_assignments": [ + { + "creative_id": "creative_homepage", + "placement_ids": ["homepage_banner"] + }, + { + "creative_id": "creative_article", + "placement_ids": ["article_sidebar"] + } + ] +} +``` + +3. **Or assign one creative to all placements (omit placement_ids):** +```json +{ + "product_id": "news_site_premium", + "creative_assignments": [ + { + "creative_id": "creative_universal" + // No placement_ids = runs on all placements in the product + } + ] +} +``` + +**Use Cases:** +- **Format-specific placements**: Homepage takes 728x90, sidebar takes 300x250 +- **A/B testing**: Test different creatives on different placements +- **Geo-targeting**: Different creatives for different DOOH screen locations +- **Dayparting**: Different creatives for morning vs evening placements + +See [Media Products - Placements](/dist/docs/3.0.13/media-buy/product-discovery/media-products.mdx#placements) for complete placement documentation. + +### Property Targeting + +For products with `property_targeting_allowed: true`, buyers can specify which properties to target using `property_list` in the `targeting_overlay`: + +```json +{ + "product_id": "flexible_news_network", + "targeting_overlay": { + "property_list": { + "agent_url": "https://governance.example.com", + "list_id": "pl_brand_safe_2024" + } + }, + "budget": 50000 +} +``` + +**Key Points:** +- Only valid for products with `property_targeting_allowed: true` +- The package runs on the intersection of the product's `publisher_properties` and the `property_list` +- If omitted, the package runs on all of the product's properties +- If provided for a product with `property_targeting_allowed: false`, the seller SHOULD return a validation error + +See [Media Products - Property Targeting](/dist/docs/3.0.13/media-buy/product-discovery/media-products#property-targeting) for more on how products declare targeting flexibility. + +### Lifecycle States + +Media buys progress through defined states with explicit transition rules: + +``` +create_media_buy ──┬──▶ pending_creatives ──▶ pending_start ──▶ active + │ ▲ + └──▶ active │ resume + │ ▲ │ + (pause) │ │ (resume) │ + ▼ │ │ + paused ────────────────────────────────────┘ + │ + active ───────┼──────────────▶ completed (terminal) + paused ───────┘ ▲ flight ends / goal met / budget exhausted + +pending_creatives ──▶ rejected (terminal) — seller rejects during setup +pending_start ──────▶ rejected (terminal) — seller rejects during setup + +Any non-terminal ──── update(canceled: true) ──▶ canceled (terminal) +``` + +- **`pending_creatives`**: Approved but no creatives assigned +- **`pending_start`**: Ready to serve, waiting for flight date +- **`active`**: Running and delivering impressions +- **`paused`**: Temporarily stopped by buyer or seller +- **`completed`**: Finished — flight ended, goal met, or budget exhausted +- **`rejected`**: Declined by the seller (terminal) +- **`canceled`**: Terminated before natural completion. Check `cancellation.canceled_by` to determine whether the buyer or seller initiated. + +<Note> +**Display collapsing.** `pending_creatives` and `pending_start` are granular to support downstream gating — conditional UI, task routing, readiness checks. Buyer applications MAY render both as a single `pending` label for end users, but MUST preserve the raw status value on the wire (API responses, webhooks, persisted records, logs) so logic that depends on the distinction keeps working. Treat the raw enum as the source of truth and derive display labels from it. Where possible, drive UI affordances from `valid_actions` rather than from the status value directly. +</Note> + +**Effect on creatives**: A media buy reaching `rejected`, `canceled`, or `completed` releases its creative assignments but does not modify the creatives themselves. Assigned creatives remain in the library with their existing review status and are available for assignment to other media buys. See [creative state and assignment state](/dist/docs/3.0.13/creative/creative-libraries#creative-state-and-assignment-state-are-separate). + +**Order confirmation**: A successful `create_media_buy` response constitutes order confirmation. The response includes `confirmed_at` with the confirmation timestamp. + +**Terminal states**: `completed`, `rejected`, and `canceled` are terminal — no transitions out. Sellers MUST reject updates to terminal-state media buys with error code `INVALID_STATE`. + +**Seller implementation requirement — persist status, never recompute from dates**: `status` MUST be stored as an explicit field and mutated only by protocol events. Flight-date arithmetic cannot represent `paused`, `canceled`, or `rejected` — those are driven by explicit commands, not the clock. Sellers that recompute `status` from `start_time`/`end_time` at request time will silently drop these states, breaking `valid_actions` for every buyer reading the media buy. The correct approach: date comparison sets the initial status at `create_media_buy` time (`pending_creatives`, `pending_start`, or `active`); after that, the state machine owns the field. + +**Discovering valid actions**: The `get_media_buys` response includes `valid_actions` for each media buy — a list of actions the buyer can perform in the current state. Agents SHOULD use this instead of hardcoding the state machine: + +```json +{ + "media_buys": [{ + "media_buy_id": "mb_12345", + "status": "active", + "revision": 3, + "valid_actions": ["pause", "cancel", "update_budget", "update_dates", "update_packages", "add_packages", "sync_creatives"], + "packages": [...] + }] +} +``` + +**Revision tracking**: Each media buy carries a `revision` number that increments on every change. Pass `revision` in `update_media_buy` for optimistic concurrency — the seller rejects with `CONFLICT` if the revision has changed since you last read it. + + +## Core Operations + +### Creating Media Buys +The creation process handles: +- **Product validation** ensuring discovered products are still available +- **Format compatibility** checking creative requirements across packages +- **Budget distribution** allocating spend across multiple packages +- **Platform coordination** creating campaigns across multiple ad servers + +### Updating Media Buys + +The operation type for each package is structurally explicit — determined by where it appears in the request: + +| Operation | Request field | Example | +|-----------|--------------|---------| +| **New** | `new_packages[]` | Add a line item mid-flight | +| **Changed** | `packages[]` | Adjust budget, targeting, dates, creatives | +| **Canceled** | `packages[]` with `canceled: true` | Cancel a line item (irreversible) | + +Campaign-level modifications include: +- **Budget adjustments** for increased/decreased spend +- **Targeting updates** to refine audience parameters +- **Schedule changes** for extended or shortened campaign timing +- **Pause/resume** for campaign-level delivery control + +### Canceling Media Buys + +Cancel a media buy or individual package using [`update_media_buy`](/dist/docs/3.0.13/media-buy/task-reference/update_media_buy) with `canceled: true`: + +```json +{ + "media_buy_id": "mb_12345", + "canceled": true, + "cancellation_reason": "Campaign strategy changed" +} +``` + +Cancel a single package within an active media buy: + +```json +{ + "media_buy_id": "mb_12345", + "packages": [ + { + "package_id": "pkg_67890", + "canceled": true, + "cancellation_reason": "Underperforming — reallocating budget" + } + ] +} +``` + +- Cancellation is **irreversible** — canceled media buys and packages cannot be reactivated +- Sellers MAY reject cancellation with error code `NOT_CANCELLABLE` (e.g., contractual obligations, in-production print orders) +- A canceled package does not affect other packages in the same media buy. When all packages are canceled, sellers that support `add_packages` allow the buyer to add new packages via `new_packages` in `update_media_buy`. Otherwise, the buyer SHOULD explicitly cancel the media buy. +- Sellers MAY cancel media buys or packages (e.g., policy violation, inventory withdrawal). Seller-initiated cancellations set `cancellation.canceled_by: "seller"` and MUST trigger a webhook notification to the orchestrator. + +### Package Lifecycle + +Packages follow the same pause/cancel pattern as media buys, with additional creative deadline enforcement: + +- **`paused`**: Temporarily stopped — can be resumed with `paused: false` +- **`canceled`**: Permanently stopped — irreversible +- **`creative_deadline`**: Per-package deadline for creative uploads or changes. After this deadline, creative changes are rejected with `CREATIVE_REJECTED`. + +When `creative_deadline` is absent on a package, the media buy's `creative_deadline` applies. This is important for mixed-channel orders — a print package may have an earlier material deadline than a digital package in the same media buy. + +### Status Management +Campaign state transitions: +- **Activation requests** to start pending campaigns +- **Pause/resume operations** for campaign control +- **Cancellation** for buyer-initiated termination +- **Completion handling** for successful campaign closure +- **Error recovery** for failed operations + +## Response Times + +Media buy operations use a unified status system with predictable timing: + +- **[`create_media_buy`](/dist/docs/3.0.13/media-buy/task-reference/create_media_buy)**: Instant to days + - `completed`: Simple campaigns created immediately + - `working`: Processing within 120 seconds (validation, setup) + - `submitted`: Complex campaigns requiring hours to days (human approval) + +- **[`update_media_buy`](/dist/docs/3.0.13/media-buy/task-reference/update_media_buy)**: Instant to days + - `completed`: Budget changes applied immediately + - `working`: Targeting updates within 120 seconds + - `submitted`: Package modifications requiring approval (hours to days) + +- **[`get_media_buy_delivery`](/dist/docs/3.0.13/media-buy/task-reference/get_media_buy_delivery)**: ~60 seconds (data aggregation) +- **Performance analysis**: ~1 second (cached metrics) + +**Status Meanings:** +- **`completed`**: Operation finished, process results immediately +- **`working`**: Processing, expect completion within 120 seconds +- **`submitted`**: Long-running operation, provide webhook or poll with `tasks/get` + +## Best Practices + +### Campaign Planning +- **Start with clear objectives** defined in your product discovery brief +- **Plan package structure** around distinct audience/creative combinations +- **Set realistic budgets** based on product pricing guidance +- **Allow time for approval** in publisher workflows + +### Ongoing Management +- **Monitor daily pacing** to ensure delivery against targets +- **Review performance weekly** for optimization opportunities +- **Update targeting gradually** to avoid disrupting delivery +- **Refresh creatives regularly** to prevent audience fatigue + +### Budget Management +- **Allocate conservatively** initially, then increase based on performance +- **Reserve budget** for high-performing packages +- **Plan for seasonality** in audience availability and pricing +- **Monitor spend efficiency** across different targeting approaches +- **Budget Management**: The system automatically recalculates impressions based on CPM when budgets are updated + +### Technical Implementation +- **Pause/Resume Strategy**: Use campaign-level controls for maintenance, package-level for optimization +- **Performance Monitoring**: Regular status checks and delivery reports ensure campaigns stay on track +- **Asynchronous Design**: Design orchestrators to handle long-running operations gracefully +- **Task Tracking**: Maintain persistent storage for pending task IDs +- **Webhook Integration**: Implement webhooks for real-time updates +- **User Communication**: Clearly communicate pending states to end users + +## Error Handling + +For comprehensive error handling guidance including pending vs error states, response patterns, and recovery strategies, see [Error Handling](/dist/docs/3.0.13/building/by-layer/L3/error-handling). + +Media buy specific error codes are documented in each task specification and the [Error Handling Reference](/dist/docs/3.0.13/building/by-layer/L3/error-handling). + +## Asynchronous Operations and Human-in-the-Loop + +The AdCP:Buy protocol is designed for asynchronous operations as a core principle. Orchestrators MUST handle pending states gracefully. + +### Human-in-the-Loop (HITL) Operations + +Many publishers require manual approval for automated operations. The protocol supports this through the HITL task queue: + +1. **Operation Request**: Orchestrator calls any modification task +2. **Pending Response**: Server returns `pending_manual` status with task ID +3. **Task Monitoring**: Orchestrator polls or receives webhooks +4. **Human Review**: Publisher reviews and approves/rejects +5. **Completion**: Original operation executes upon approval + +### HITL Task States + +``` +pending → assigned → in_progress → completed/failed + ↓ + escalated +``` + +### Orchestrator Requirements + +Orchestrators MUST: +1. Handle `pending_manual` and `pending_permission` as normal states +2. Store task IDs for tracking pending operations +3. Implement retry logic with exponential backoff +4. Handle eventual rejection of operations gracefully +5. Support webhook callbacks for real-time updates (recommended) + +## 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 +- Orders can contain multiple LineItems +- LineItems map 1:1 with packages +- Sophisticated targeting and frequency capping +- Requires creative approval process +- **Reporting**: Comprehensive dimensional reporting, real-time and historical data, advanced viewability metrics + +### Kevel +- Campaigns contain Flights +- Flights map 1:1 with packages +- Real-time decisioning engine +- Supports custom creative templates +- **Reporting**: Real-time reporting API, custom metric support, flexible aggregation options + +### Triton Digital +- Optimized for audio advertising +- Campaigns contain Flights for different dayparts +- Strong station/stream targeting capabilities +- Audio-only creative support +- **Reporting**: 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 + +## Integration Patterns + +### Discovery to Media Buy +Seamless flow from product discovery to campaign creation: +1. Use [`get_products`](/dist/docs/3.0.13/media-buy/task-reference/get_products) to find inventory +2. Select products that align with campaign objectives +3. Configure packages with appropriate targeting and formats +4. Create media buy with [`create_media_buy`](/dist/docs/3.0.13/media-buy/task-reference/create_media_buy) + +### Creative Integration +Coordinate with creative management: +1. Understand format requirements from selected products +2. Prepare assets using [Creative Management](/dist/docs/3.0.13/media-buy/creatives/) +3. Assign creatives during campaign creation or via updates +4. Monitor creative performance and refresh as needed + +### Performance Optimization +Data-driven campaign improvement leveraging comprehensive analytics: + +1. **Track delivery** with [`get_media_buy_delivery`](/dist/docs/3.0.13/media-buy/task-reference/get_media_buy_delivery) + - Monitor real-time delivery metrics and pacing analysis + - Get package-level performance breakdown for optimization opportunities + - Track performance across different targeting approaches + +2. **Analyze performance** across packages and targeting + - Use dimensional reporting for granular insights + - Monitor performance index scores for AI-driven optimization + - Identify high and low performing segments + +3. **Update campaigns** with [`update_media_buy`](/dist/docs/3.0.13/media-buy/task-reference/update_media_buy) + - Reallocate budgets between high and low performing packages + - Adjust targeting based on performance data + - Pause underperforming packages and scale successful ones + +4. **Iterate** based on performance data and business outcomes + - Feed performance data back into optimization algorithms + - Continuously refine targeting and creative assignments + - Scale successful strategies across similar campaigns + +#### Optimization 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 + +## Related Documentation + +- **[Product Discovery](/dist/docs/3.0.13/media-buy/product-discovery/)** - Finding inventory for media buys +- **[Task Reference](/dist/docs/3.0.13/media-buy/task-reference/)** - Complete API documentation +- **[Creatives](/dist/docs/3.0.13/media-buy/creatives/)** - Creative asset management +- **[Orchestrator Design Guide](/dist/docs/3.0.13/building/operating/orchestrator-design)** - Implementation best practices diff --git a/dist/docs/3.0.13/media-buy/media-buys/lifecycle.mdx b/dist/docs/3.0.13/media-buy/media-buys/lifecycle.mdx new file mode 100644 index 0000000000..3a0568cc17 --- /dev/null +++ b/dist/docs/3.0.13/media-buy/media-buys/lifecycle.mdx @@ -0,0 +1,277 @@ +--- +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.0.13/media-buy/media-buys/). + +## Standard flow + +Every media buy follows four steps: + +```mermaid +flowchart TD + A[get_products] --> B[create_media_buy] + B --> C{initial state} + C -->|creatives missing| D[pending_creatives] + C -->|creatives present,\nflight not yet started| E[pending_start] + C -->|creatives present,\nflight started| F[active] + D --> G[sync_creatives] + G --> E + E --> F + F --> H{delivery} + H -->|budget exhausted /\ngoal met / flight ended| I[completed] + H -->|buyer or seller action| J[paused] + J --> F +``` + +1. **`get_products`** — discover available inventory matching your brief. +2. **`create_media_buy`** — submit packages; the seller validates and confirms. +3. **`sync_creatives`** — assign creative assets to packages that need them. +4. **Delivery** — the buy enters `active`, accrues impressions, and eventually reaches a terminal state. + +## 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> +`pending_manual` and `pending_permission` are **task-level** statuses — they describe whether the *operation* (e.g., `create_media_buy`) is queued for human review, not the media buy's own state. The media buy enters `pending_creatives`, `pending_start`, or `active` once the operation completes. See [Asynchronous Operations](/dist/docs/3.0.13/media-buy/media-buys/#asynchronous-operations-and-human-in-the-loop). +</Note> + +### Transitions + +```mermaid +stateDiagram-v2 + [*] --> pending_creatives : create_media_buy\n(no creatives) + [*] --> pending_start : create_media_buy\n(creatives present,\nflight future) + [*] --> active : create_media_buy\n(creatives present,\nflight started) + + pending_creatives --> pending_start : sync_creatives + pending_start --> active : flight date reached + + active --> paused : update_media_buy\n(paused: true) + paused --> active : update_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 : update_media_buy\n(canceled: true) + pending_start --> canceled : update_media_buy\n(canceled: true) + active --> canceled : update_media_buy\n(canceled: true) + paused --> canceled : update_media_buy\n(canceled: true) + + 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"] +} +``` + +Always pass `revision` in `update_media_buy` calls. The seller rejects with `CONFLICT` if the revision has changed since your last read. + +## Guaranteed / PG deal variation + +Products with `delivery_type: "guaranteed"` require contractual commitment before delivery begins. The flow diverges after `create_media_buy`: + +```mermaid +flowchart TD + A[get_products\ndelivery_type: guaranteed] --> B[create_media_buy\nwith accountability_terms] + B --> C{task status} + C -->|IO signing needed| D[submitted\ntask_id returned] + C -->|IO pre-signed| E[pending_creatives\nor pending_start] + D --> F[IO signed\nout-of-band] + F --> E + E --> G[sync_creatives\nif needed] + G --> H[active — guaranteed delivery] + H --> I{performance} + I -->|standards met| J[completed] + I -->|under-delivery| K[makegood / remediation] + K --> J +``` + +### What makes a guaranteed buy different + +**`accountability_terms` are required** on each package with a guaranteed product. Three fields are required: + +- `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 signing** — `create_media_buy` for a guaranteed product may return task status `submitted` with a `task_id` rather than completing synchronously. This means the seller's system is awaiting insertion order (IO) acceptance. Poll with `tasks/get` or configure a webhook. Once the IO is signed, the completion artifact carries the `media_buy_id` and the media buy enters `pending_creatives` or `pending_start`. + +**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.0.13/media-buy/advanced-topics/accountability) for the full negotiation flow including how buyers can propose non-default terms at `create_media_buy` time. +</Note> + +## Creative sync timing + +### When creatives are required + +`create_media_buy` accepts inline `creative_assignments` or `creatives` per package. If you supply them at creation time and the flight date has passed, the buy enters `active` directly. If the flight date is in the future, it enters `pending_start`. + +If no creatives are assigned at creation, the buy enters `pending_creatives`. Delivery cannot begin until `sync_creatives` is called to assign at least one creative per package. + +### The `creative_deadline` + +`create_media_buy` returns a `creative_deadline` timestamp on the media buy response. Individual packages may carry their own `creative_deadline`. **Package-level deadlines take precedence over the media buy deadline.** This matters for mixed-channel orders — a print package may have a material deadline days before the digital packages in the same buy. + +After the deadline, `sync_creatives` calls for that package return `CREATIVE_REJECTED`. Creative changes are blocked; delivery continues with whatever creatives are currently assigned (or the package remains in `pending_creatives` if none were ever assigned). + +``` +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. 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. + +## 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 `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.0.13/building/by-layer/L3/webhooks#persistent-channel-contract) for delivery semantics (at-least-once, no-ordering, coalescence, replay via 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` | Same path as initial creative approval — fix the issue and resubmit via `sync_creatives`. Campaign-level decision (replace vs. wait for resubmit) depends on creative pool composition and is left to the buyer. | +| `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 via the same discovery tool used at campaign setup (`get_products`, `get_signals`, `list_creative_formats`), 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 property via `get_products` or remove 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.0.13/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: 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.0.13/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 from approved → rejected on an active buy, verifies the buy reflects `health: impaired` with a matching `impairments[]` entry, recovers 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.0.13/protocol/snapshot-and-log) for the read-side rules that tie `impairments[]` (snapshot) to the `impairment` push (log). + +<Tip> +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. See [creative state and assignment state](/dist/docs/3.0.13/creative/creative-libraries#creative-state-and-assignment-state-are-separate). +</Tip> + +## See also + +- [Media Buy Lifecycle](/dist/docs/3.0.13/media-buy/media-buys/) — full lifecycle reference: campaign structure, package model, async operations +- [`create_media_buy`](/dist/docs/3.0.13/media-buy/task-reference/create_media_buy) — task reference with request parameters, response shapes, and examples +- [`sync_creatives`](/dist/docs/3.0.13/creative/task-reference/sync_creatives) — assign and update creative assets on active packages +- [Accountability](/dist/docs/3.0.13/media-buy/advanced-topics/accountability) — performance standards, measurement terms, makegood resolution +- [Optimization & Reporting](/dist/docs/3.0.13/media-buy/media-buys/optimization-reporting) — delivery monitoring, dimensional reporting, campaign updates diff --git a/dist/docs/3.0.13/media-buy/media-buys/optimization-reporting.mdx b/dist/docs/3.0.13/media-buy/media-buys/optimization-reporting.mdx new file mode 100644 index 0000000000..6adb297a24 --- /dev/null +++ b/dist/docs/3.0.13/media-buy/media-buys/optimization-reporting.mdx @@ -0,0 +1,1138 @@ +--- +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.0.13/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.0.13/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.0.13/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.0.13/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 + +## 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.0.13/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) +- **`monthly`**: Receive notifications once per month (timezone specified by publisher) + +**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.0.13/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`**: 100% video completions +- **`video_completions`**: Completed video views +- **`completion_rate`**: Video completion percentage +- **`conversions`**: Post-click or post-view conversions +- **`conversion_value`**: Monetary value of attributed conversions +- **`roas`**: Return on ad spend +- **`cost_per_acquisition`**: Cost per conversion +- **`leads`**: Leads generated +- **`reach`**: Unique reach +- **`frequency`**: Average frequency per individual +- **`grps`**: Gross Rating Points (for CPP billing) +- **`viewability`**: Viewability data (measurable_impressions, viewable_impressions, viewable_rate, standard). Separates MRC and GroupM standards. +- **`engagement_rate`**: Platform-specific engagement metric +- **`quartile_data`**: Video quartile completion data (q1-q4) +- **`dooh_metrics`**: DOOH-specific metrics (loop plays, screens, venue breakdown) +- **`cost_per_click`**: Cost per click + +Buyers can optionally request a subset via `requested_metrics` to reduce payload size and focus on relevant KPIs. + +#### 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 use the same payload structure as [`get_media_buy_delivery`](/dist/docs/3.0.13/media-buy/task-reference/get_media_buy_delivery) with additional metadata: + +```json +{ + "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.00, + "clicks": 250, + "ctr": 0.002 + }, + "by_package": [...] + } + ] +} +``` + +**Fields:** +- **`notification_type`**: `"scheduled"` (regular update), `"final"` (campaign complete), or `"delayed"` (data not yet available) +- **`sequence_number`**: Sequential notification number (starts at 1) +- **`next_expected_at`**: ISO 8601 timestamp for next notification (omitted for final notifications) +- **`media_buy_deliveries`**: Array of media buy delivery data (may contain multiple media buys aggregated by publisher) + +#### 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). + +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.0.13/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.0.13/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.adcp.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.0.13/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.0.13/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.0.13/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.0.13/media-buy/conversion-tracking/) for the complete setup flow, and [Optimization Goals](/dist/docs/3.0.13/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.0.13/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.0.13/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.0.13/creative/task-reference/sync_creatives) 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.0.13/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.0.13/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 | Key fields | Capability flag | +|-----------|----------------|------------|-----------------| +| Geography | `by_geo` | `geo_level`, `geo_code`, `geo_name` | `supports_geo_breakdown` (object — declares available levels/systems) | +| Device type | `by_device_type` | `device_type` | `supports_device_type_breakdown` | +| Device platform | `by_device_platform` | `device_platform` | `supports_device_platform_breakdown` | +| Audience | `by_audience` | `audience_id`, `audience_source`, `audience_name` | `supports_audience_breakdown` | +| Placement | `by_placement` | `placement_id`, `placement_name` | `supports_placement_breakdown` | + +Each breakdown entry inherits all fields from `delivery-metrics` (impressions, spend, clicks, conversions, etc.) plus its dimension-specific identifier fields. Every entry requires at minimum its identifier(s), `impressions`, and `spend`. + +Breakdowns are opt-in — no dimension data is returned unless explicitly requested. Sellers that don't support a requested dimension silently omit it. Each breakdown array has a sibling `by_*_truncated` boolean indicating whether additional rows exist beyond the requested `limit`. + +## Targeting Consistency +Reporting aligns with AdCP's [Targeting](/dist/docs/3.0.13/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.0.13/media-buy/task-reference/get_media_buy_delivery)** - Retrieve delivery reports +- **[`update_media_buy`](/dist/docs/3.0.13/media-buy/task-reference/update_media_buy)** - Modify campaigns based on performance +- **[Media Buy Lifecycle](/dist/docs/3.0.13/media-buy/media-buys)** - Complete campaign management workflow +- **[Targeting](/dist/docs/3.0.13/media-buy/advanced-topics/targeting)** - Brief-based targeting and overlays \ No newline at end of file diff --git a/dist/docs/3.0.13/media-buy/media-buys/policy-compliance.mdx b/dist/docs/3.0.13/media-buy/media-buys/policy-compliance.mdx new file mode 100644 index 0000000000..1e70ba431e --- /dev/null +++ b/dist/docs/3.0.13/media-buy/media-buys/policy-compliance.mdx @@ -0,0 +1,210 @@ +--- +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 centers around the `brand` field - a required reference to the advertiser brand. This enables publishers to: + +- Filter inappropriate advertisers before showing inventory +- Enforce category-specific restrictions +- Maintain brand safety standards +- Comply with regulatory requirements + +## Brand + +All product discovery and media buy creation requests must include a `brand` field that identifies the advertiser brand: + +```json +{ + "brand": { + "domain": "acmecorp.com" + } +} +``` + +The brand domain is used to look up the brand's published identity (via `brand.json`), which provides: +- **Brand name and identity** for verification +- **Industry category** for policy filtering +- **Brand assets** for creative compliance + +Combined with the `brief` field (which describes what's being promoted), publishers have full context for policy decisions. + +For comprehensive guidance on briefs and brand information, see [Brief Expectations](/dist/docs/3.0.13/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. Validate that the `brand` field is present and meaningful +2. Extract brand and category information +3. Check against publisher policies +4. Filter out unsuitable products + +**Example Policy Check Flow:** +```python +def check_brand_policy(brand: dict) -> PolicyResult: + # Look up brand identity from domain + domain = brand.get("domain") + brand_identity = fetch_brand_json(domain) + + # Verify brand identity if needed + if not verify_brand_domain(domain, brand_identity): + return PolicyResult( + status="blocked", + message="Brand verification failed" + ) + + category = brand_identity.get("category") + + # Check blocked categories + if category in BLOCKED_CATEGORIES: + return PolicyResult( + status="blocked", + message=f"{category} advertising is not permitted on this publisher" + ) + + # Check restricted categories + if category in RESTRICTED_CATEGORIES: + return PolicyResult( + status="restricted", + message=f"{category} advertising requires manual approval", + contact="sales@publisher.com" + ) + + return PolicyResult(status="allowed", category=category) +``` + +### 2. During Media Buy Creation (`create_media_buy`) + +When creating a media buy: + +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 Compliance Responses + +The protocol defines three compliance statuses: + +### `allowed` +The brand passes initial policy checks. Products are returned normally. + +```json +{ + "products": [...], + "policy_compliance": { + "status": "allowed" + } +} +``` + +### `restricted` +The brand category requires manual approval before products can be shown. + +```json +{ + "products": [], + "policy_compliance": { + "status": "restricted", + "message": "Cryptocurrency advertising is restricted but may be approved on a case-by-case basis.", + "contact": "sales@publisher.com" + } +} +``` + +### `blocked` +The brand category cannot be supported by this publisher. + +```json +{ + "products": [], + "policy_compliance": { + "status": "blocked", + "message": "Publisher policy prohibits alcohol advertising without age verification capabilities." + } +} +``` + +## 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 + +## Error Handling + +For policy violations during media buy creation: + +```json +{ + "error": { + "code": "POLICY_VIOLATION", + "message": "Brand category not permitted on this publisher", + "field": "brand", + "suggestion": "Contact publisher for category approval process" + } +} +``` + +## Integration with HITL + +Policy decisions can trigger Human-in-the-Loop workflows: + +1. Restricted categories create `pending_manual` tasks +2. Human reviewers assess the campaign +3. Approval or rejection is communicated back +4. Campaign proceeds or is terminated based on decision + +## Related Documentation + +- [`get_products`](/dist/docs/3.0.13/media-buy/task-reference/get_products) - Product discovery with policy checks +- [`create_media_buy`](/dist/docs/3.0.13/media-buy/task-reference/create_media_buy) - Media buy creation with validation +- [Accounts & Security](/dist/docs/3.0.13/media-buy/advanced-topics/accounts-and-security) - Authentication and authorization diff --git a/dist/docs/3.0.13/media-buy/product-discovery/brief-expectations.mdx b/dist/docs/3.0.13/media-buy/product-discovery/brief-expectations.mdx new file mode 100644 index 0000000000..c1b7fd323a --- /dev/null +++ b/dist/docs/3.0.13/media-buy/product-discovery/brief-expectations.mdx @@ -0,0 +1,396 @@ +--- +title: Brief Expectations +description: "AdCP brief expectations — how to write campaign briefs for get_products. Required fields, optional details, and implementation guidance for publishers and buyer agents." +"og:title": "AdCP — Brief Expectations" +--- + + +A comprehensive brief is essential for effective media buying through AdCP. This document defines the expectations and requirements for briefs in the `get_products` specification, providing implementation guidance for publishers and clear expectations for buyers. + +## Overview + +A brief in AdCP is a natural language description of campaign requirements that helps publishers understand and fulfill media buying requests. While briefs can be as simple or detailed as needed, complete briefs enable better product recommendations and more efficient campaign execution. + +## Required Components + +Every `get_products` and `create_media_buy` request MUST include: + +### Brand + +The `brand` field is **required** in all requests. It identifies the advertiser brand: + +```json +{ + "brand": { + "domain": "acmecorp.com" + } +} +``` + +This enables publishers to: +- Apply policy restrictions (age-gated, prohibited categories, etc.) +- Verify brand identity +- Enforce brand safety standards + +### Brief Field + +The `brief` field describes **what is being promoted** and **campaign requirements**: + +```json +{ + "buying_mode": "brief", + "brief": "Nike Air Max 2024 - the latest innovation in cushioning technology featuring sustainable materials, targeting runners and fitness enthusiasts" +} +``` + +## When Briefs Are Optional + +The `brief` field is **optional only when `buying_mode` is `"wholesale"`**. For catalog discovery without publisher curation, set `buying_mode: "wholesale"` explicitly: + +### Wholesale Buying Mode + +When the buyer will apply their own audience targeting and does not want publisher curation: + +```json +{ + "brand": { + "domain": "acmecorp.com" + }, + "buying_mode": "wholesale", + "filters": { + "delivery_type": "non_guaranteed", + "standard_formats_only": true + } +} +``` + +`buying_mode: "wholesale"` and `brief` are mutually exclusive — providing both is an error. If `buying_mode: "brief"` is set explicitly, `brief` is required. + +When a publisher receives `buying_mode: "wholesale"`: +1. Returns products that support buyer-directed targeting +2. Does not apply AI curation or personalization +3. Does not return proposals +4. Buyer applies their own audiences, e.g. through [TMP](/dist/docs/3.0.13/trusted-match) + +## Core Brief Components + +When a `brief` IS provided, it should include these essential elements: + +### 1. Business Objectives + +**What you're trying to achieve** with the campaign: + +- **Awareness**: Build brand recognition or product awareness +- **Consideration**: Drive interest and research +- **Conversion**: Generate sales or sign-ups +- **Retention**: Re-engage existing customers +- **App installs**: Drive mobile app downloads +- **Lead generation**: Capture contact information +- **Traffic**: Drive website or store visits + +Example in brief: *"Drive awareness for our new product launch among young professionals"* + +### 2. Success Metrics + +**How you'll measure success** of the campaign: + +- **CTR** (Click-Through Rate): Engagement measurement +- **CPA** (Cost Per Acquisition): Conversion efficiency +- **ROAS** (Return on Ad Spend): Revenue generation +- **Brand lift**: Awareness and perception improvement +- **Video completion rate**: Content engagement +- **Conversion rate**: Action completion +- **Reach and frequency**: Audience coverage + +Example in brief: *"Success measured by achieving 2% CTR and $50 CPA"* + +### 3. Flight Dates + +**When the campaign should run**: + +- **Start date**: Campaign launch date +- **End date**: Campaign completion date +- **Specific periods**: Holiday seasons, events, promotions +- **Blackout dates**: Dates to avoid +- **Dayparting requirements**: Time-of-day preferences + +Example in brief: *"Run from March 1-31, focusing on weekday morning commutes"* + +## Optional Brief Components + +These elements enhance brief quality and enable better recommendations: + +### Target Audience + +**Who you want to reach**: + +#### Demographics +- Age ranges (e.g., 25-34, 35-44) +- Gender identity +- Household income levels +- Education level +- Parental status +- Employment status + +#### Psychographics +- Interests and hobbies +- Lifestyle attributes +- Values and beliefs +- Purchase behaviors +- Media consumption habits +- Technology adoption + +#### Behavioral Signals +- Past purchase behavior +- Website visit history +- App usage patterns +- Content engagement +- Shopping cart abandonment + +Example in brief: *"Target pet owners aged 25-45 with household income over $75K who have shown interest in premium pet products"* + +### Budget Information + +**Spending parameters**: + +- **Total budget**: Overall campaign spend +- **Daily budget**: Maximum daily spend +- **Budget flexibility**: Ability to adjust +- **Cost constraints**: CPM limits, efficiency requirements +- **Budget allocation**: Split across products or time periods + +Example in brief: *"$50,000 total budget with flexibility to increase by 20% for high-performing inventory"* + +### Geographic Markets + +**Where ads should appear**: + +- **Countries**: Target nations +- **Regions/States**: Specific areas within countries +- **Cities/DMAs**: Metropolitan areas +- **Postal codes**: Hyperlocal targeting +- **Exclusions**: Areas to avoid + +Example in brief: *"Focus on California and New York, specifically Los Angeles and New York City metros"* + +### Creative Constraints + +**Format and content requirements**: + +- **Available formats**: Video, audio, display, native +- **Creative variations**: Number of versions available +- **Language versions**: Multilingual capabilities +- **Technical limitations**: File sizes, durations +- **Brand guidelines**: Color, logo, messaging requirements + +Example in brief: *"We have 30-second and 15-second video creatives in English and Spanish"* + +### Brand Safety Requirements + +**Content to avoid**: + +- **Blocked categories**: Content types to exclude +- **Sensitive topics**: Subjects to avoid +- **Competitor separation**: Competing brands to avoid +- **Quality standards**: Viewability, fraud prevention +- **Certification requirements**: Industry certifications and standards + +Example in brief: *"Avoid news, political content, and competitive automotive brands"* + +## Brief Quality Levels + +Publishers should handle briefs at different completeness levels: + +### Wholesale (Standard Catalog) +```json +{ + "brand": {"domain": "acmecorp.com"}, + "buying_mode": "wholesale", + "filters": { + "delivery_type": "non_guaranteed", + "standard_formats_only": true + } +} +``` +**Publisher Response**: Return standard catalog products (broad reach inventory optimized for scale). No AI curation, no proposals. Buyer applies their own targeting. + +### Minimal Brief +```json +{ + "brand": {"domain": "acmecorp.com"}, + "buying_mode": "brief", + "brief": "Reach business decision makers" +} +``` +**Publisher Response**: Request clarification on budget, timing, and specific objectives. + +### Standard Brief +```json +{ + "brand": {"domain": "acmecorp.com"}, + "buying_mode": "brief", + "brief": "Acme Corp project management software - cloud-based solution for remote teams. Reach IT decision makers in tech companies with 50-500 employees, $25K budget for Q1, focusing on driving free trial signups" +} +``` +**Publisher Response**: Provide relevant product recommendations with clear rationale. + +### Comprehensive Brief +```json +{ + "brand": {"domain": "acmecorp.com"}, + "buying_mode": "brief", + "brief": "Acme Corp project management software - cloud-based solution for remote teams with AI-powered automation. Drive 500 free trial signups from IT decision makers and project managers at tech companies (50-500 employees) in SF Bay Area and NYC. $25K budget for March 1-31, measured by $50 CPA. We have video and display creatives. Avoid competitor content and news sites." +} +``` +**Publisher Response**: Provide optimized product mix with detailed performance projections. + +## Delivery Preferences + +Buyers can signal delivery type preference without excluding inventory. `preferred_delivery_types` is an ordered array that tells the publisher what the buyer wants most, while still allowing the publisher to include alternatives when they match the brief well. + +```json +{ + "buying_mode": "brief", + "brief": "Exclusive podcast sponsorship for a fintech brand — we want guaranteed placement on business shows", + "preferred_delivery_types": ["guaranteed"] +} +``` + +This differs from `filters.delivery_type`, which is a hard filter: + +| Field | Effect | +|---|---| +| `filters.delivery_type` | Excludes products that don't match | +| `preferred_delivery_types` | Signals preference — publisher may still include other types | + +When both are present, `filters.delivery_type` takes precedence (it removes non-matching products before preference is applied). + +### For publishers + +When a buyer includes `preferred_delivery_types`, rank preferred types first in results but include strong matches of other types lower in the response. If a buyer prefers guaranteed but you have a non-guaranteed product that matches the brief well, include it with a clear `brief_relevance` explanation of why it's worth considering. + +## Implementation Guidelines + +### For Publishers + +1. **Parse Brief Elements**: Extract key components programmatically +2. **Handle Incompleteness**: Gracefully request missing critical information +3. **Provide Guidance**: Suggest what additional information would help +4. **Match Intelligently**: Use AI to interpret natural language and match products +5. **Explain Relevance**: Always provide `brief_relevance` field in responses + +### For Buyers + +1. **Be Specific**: More detail enables better recommendations +2. **Prioritize Goals**: Clearly state primary vs secondary objectives +3. **Provide Context**: Include market conditions or competitive landscape +4. **Update Iteratively**: Refine brief based on publisher feedback +5. **Maintain Consistency**: Ensure brief aligns with campaign objectives + +## Brief Processing Flow + +```mermaid +graph TD + A[Receive Request] --> B{Request Valid?} + B -->|No| C[Return Policy Error] + B -->|Yes| W{Wholesale Mode?} + W -->|Yes| M[Return All Products Matching Filters] + W -->|No| D{Brief Provided?} + D -->|No| F[Request Clarification] + D -->|Yes| E{Brief Complete?} + E -->|No| F + E -->|Yes| G[Process Requirements] + F --> H[Provide Specific Questions] + G --> I[Match Products] + I --> J{Products Found?} + J -->|No| K[Suggest Alternatives] + J -->|Yes| L[Return Recommendations] + L --> N[Include Relevance Explanation] +``` + +## Clarification Handling + +When briefs need clarification, publishers should: + +1. **Ask Specific Questions**: Target missing critical information +2. **Provide Examples**: Show what complete information looks like +3. **Maintain Context**: Remember previous brief elements +4. **Suggest Defaults**: Offer reasonable assumptions +5. **Progressive Disclosure**: Don't overwhelm with all questions at once + +Example clarification response: +```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?\n• What are your success metrics (awareness, conversions, etc.)?", + "clarification_needed": true +} +``` + +## Natural Language Processing + +Publishers should implement NLP to extract: + +- **Temporal expressions**: "next quarter", "holiday season", "ASAP" +- **Budget indicators**: "$50K", "low budget", "premium spend" +- **Audience descriptors**: "millennials", "high-income", "parents" +- **Geographic references**: "west coast", "major cities", "nationwide" +- **Objective keywords**: "awareness", "drive sales", "generate leads" + +## Best Practices + +### DO: +- ✅ Include both advertiser and product in brand and brief +- ✅ Specify measurable success criteria +- ✅ Provide clear timing requirements +- ✅ Describe target audience in detail +- ✅ Mention creative format availability +- ✅ State budget or budget constraints +- ✅ Include brand safety requirements + +### DON'T: +- ❌ Provide vague objectives like "good performance" +- ❌ Omit timing without expecting clarification requests +- ❌ Use undefined abbreviations or jargon +- ❌ Contradict between brief and brand +- ❌ Include sensitive or confidential information +- ❌ Assume publisher knowledge of your business + +## Examples + +### Wholesale Buying +```json +{ + "brand": {"domain": "acmecorp.com"}, + "buying_mode": "wholesale", + "filters": { + "delivery_type": "non_guaranteed", + "channels": ["display", "ctv"] + } +} +``` +**Use Case**: Buyer has sophisticated audience segments in their DMP/CDP and will apply targeting through [TMP](/dist/docs/3.0.13/trusted-match). They need raw inventory without publisher curation. + +### E-commerce Brief +``` +"Launch our new sustainable fashion line targeting environmentally conscious millennials in urban markets. $75K budget for April, focused on driving online sales with a target ROAS of 4:1. We have video and carousel creatives showcasing the manufacturing process." +``` + +### B2B Software Brief +``` +"Generate qualified leads for our enterprise CRM solution among sales leaders at companies with 500+ employees. Q2 campaign with $100K budget, targeting 2% conversion rate from landing page visits. Display and native formats available." +``` + +### Local Services Brief +``` +"Drive appointment bookings for our dental practice in Chicago suburbs. $5K monthly budget targeting families with children within 10 miles of our locations. Focus on Saturday availability." +``` + +## Conclusion + +Briefs serve different purposes for different buyers: + +- **Discovery-focused buyers** benefit from detailed briefs that help publishers recommend the best products +- **Targeting-focused buyers** may skip briefs entirely, using filters to get broad inventory and applying their own targeting +- **Hybrid approaches** can use minimal briefs to narrow the field while retaining control over targeting + +Publishers should implement robust brief processing to handle all these scenarios, from no brief at all to comprehensive campaign descriptions, while maintaining a conversational, helpful approach when clarification would add value. diff --git a/dist/docs/3.0.13/media-buy/product-discovery/collections-and-installments.mdx b/dist/docs/3.0.13/media-buy/product-discovery/collections-and-installments.mdx new file mode 100644 index 0000000000..fda6e4440b --- /dev/null +++ b/dist/docs/3.0.13/media-buy/product-discovery/collections-and-installments.mdx @@ -0,0 +1,1015 @@ +--- +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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/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": [ + { "placement_id": "pre_roll", "name": "Pre-roll" } + ], + "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": [ + { "placement_id": "pre_roll", "name": "Pre-roll" }, + { "placement_id": "mid_roll", "name": "Mid-roll" } + ], + "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": [ + { "placement_id": "pre_roll", "name": "Pre-roll (15s)" }, + { "placement_id": "mid_roll", "name": "Mid-roll (30s)" } + ], + "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": [ + { "placement_id": "pre_roll", "name": "Pre-roll (15s)" } + ], + "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": [ + { "placement_id": "pre_roll", "name": "Pre-roll (30s)" }, + { "placement_id": "mid_roll", "name": "Mid-roll host read (60s)" } + ], + "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": [ + { "placement_id": "in_game_overlay", "name": "In-game overlay (10s)" }, + { "placement_id": "halftime", "name": "Halftime feature (60s)" } + ], + "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 +{ + "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.0.13/governance/property/adagents). There is no separate collection discovery endpoint — collections surface through product discovery and `adagents.json` crawling. + +## 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.0.13/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_playlist_id`, `amazon_title_id`, `roku_channel_id`, `pluto_channel_id`, `tubi_id`, `peacock_id`, `tiktok_id`, `twitch_channel`. Other: `domain`, `substack_id`. + +## 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.0.13/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": [ + { "placement_id": "full_page", "name": "Full Page" }, + { "placement_id": "dps", "name": "Double Page Spread" }, + { "placement_id": "ifc", "name": "Inside Front Cover" } + ], + "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.0.13/media-buy/product-discovery/media-products) — the full product model +- [Print ads](/dist/docs/3.0.13/creative/channels/print) — print-specific creative formats, physical dimensions, bleed, and DPI +- [brand.json](/dist/docs/3.0.13/brand-protocol/brand-json) — talent identity and brand safety evaluation +- [Product discovery](/dist/docs/3.0.13/media-buy/product-discovery) — how buyers discover inventory via `get_products` diff --git a/dist/docs/3.0.13/media-buy/product-discovery/example-briefs.mdx b/dist/docs/3.0.13/media-buy/product-discovery/example-briefs.mdx new file mode 100644 index 0000000000..2a7630b604 --- /dev/null +++ b/dist/docs/3.0.13/media-buy/product-discovery/example-briefs.mdx @@ -0,0 +1,271 @@ +--- +sidebar_label: Example Briefs +title: Example Campaign Briefs +description: "AdCP example campaign briefs — annotated examples from minimal to advanced showing how natural language briefs drive product discovery in get_products." +"og:title": "AdCP — Example Campaign Briefs" +--- + + +These annotated examples demonstrate how natural language briefs work in AdCP, describing target customers and campaign objectives to help publishers recommend appropriate media products. + +## 1. Minimal Brief: Essential Elements + +### Local Service Business + +```json +{ + "buying_mode": "brief", + "brief": "Mike's Plumbing Services needs to reach homeowners in the Denver, Colorado area who might need plumbing services. We have $8,000 USD to spend from October 15-31, 2024. Looking for display and native formats to drive phone calls." +} +``` + +**Why This Works:** +- ✅ **Clear business** - Mike's Plumbing Services +- ✅ **Customer description** - Homeowners needing plumbing +- ✅ **Geographic market** - Denver, Colorado (USA implied) +- ✅ **Format preferences** - Display and native +- ✅ **Budget and timing** - $8,000 USD over 2 weeks +- ✅ **Business outcome** - Phone calls + +**Publisher Interpretation:** +Publishers can suggest targeting approaches like: +- Homeownership signals +- Home improvement interest +- Local service searchers +- Emergency service needs + +--- + +## 2. Standard Brief: Customer Story + +### E-commerce Product Launch + +```json +{ + "buying_mode": "brief", + "brief": "TechGear Pro is launching premium wireless headphones in the United States. Our customers are typically young professionals who commute, work out regularly, and value high-quality audio for both music and calls. They're willing to pay more for products that last longer and perform better. We need video and display formats to drive online sales during our launch November 1-14, 2024. Budget is $25,000 USD with a target of acquiring customers at $45-55 each." +} +``` + +**Why This Works:** +- ✅ **Customer profile** - Young professionals with active lifestyles +- ✅ **Customer values** - Quality, durability, performance +- ✅ **Geographic market** - United States +- ✅ **Format needs** - Video and display +- ✅ **Clear economics** - $45-55 customer acquisition cost +- ✅ **Natural description** - Lets publishers suggest targeting + +**Publisher Suggestions Might Include:** +- Commuter targeting +- Fitness enthusiast segments +- Premium brand affinity +- Audio equipment researchers +- Professional demographic overlays + +--- + +## 3. Comprehensive Brief: B2B Customer Description + +### Enterprise Software Campaign + +```json +{ + "buying_mode": "brief", + "brief": "CloudSync Solutions helps companies manage data across multiple cloud platforms. Our ideal customers are growing businesses in the United States, Canada, United Kingdom, and Germany that have recently adopted cloud services and are struggling to keep data synchronized. These companies typically have distributed teams, use multiple SaaS tools, and are concerned about data security and compliance. The decision makers are usually technical leaders who report directly to the C-suite and are tasked with modernizing their company's infrastructure. We're looking for native content and display formats to generate qualified leads at $200-250 per lead. Q4 2024 campaign with $90,000 USD total budget." +} +``` + +**Why This Works:** +- ✅ **Customer context** - Growing businesses with cloud challenges +- ✅ **Customer pain points** - Data sync, security, compliance +- ✅ **Decision maker profile** - Technical leaders near C-suite +- ✅ **Multiple countries** - US, CA, UK, DE specified +- ✅ **Format preferences** - Native content and display +- ✅ **Flexible targeting** - Publishers can interpret signals + +**Publisher Interpretation Opportunities:** +- Cloud adoption signals +- Company growth indicators +- Technology stack analysis +- Title and seniority matching +- Industry compliance needs + +--- + +## 4. Advanced Brief: Multi-Audience Campaign + +### Automotive Launch + +```json +{ + "buying_mode": "brief", + "brief": "EcoMotion is launching our new hybrid SUV in the United States, specifically California, Pacific Northwest, and Northeast regions. We have three distinct customer groups we want to reach with video, Connected TV, and display formats: + +1. Eco-conscious families who currently drive older SUVs and are concerned about their environmental impact but need the space for kids and activities. They research extensively and value safety ratings and environmental certifications. + +2. Tech-forward professionals who see their vehicle as an extension of their digital lifestyle. They're early adopters who want the latest features and are willing to pay premium prices for innovation. + +3. Current owners of competitor vehicles (Toyota Highlander, Honda Pilot) who might be in market for their next vehicle. They value reliability and total cost of ownership. + +Campaign runs October-December 2024 with $450,000 USD budget. Success means driving dealership visits and test drive appointments." +} +``` + +**Why This Works:** +- ✅ **Three distinct customer stories** - Each with different motivations +- ✅ **Regional focus** - Specific US regions identified +- ✅ **Format strategy** - Video, CTV, and display +- ✅ **Competitive context** - Without being prescriptive +- ✅ **Customer journey insights** - Research behavior, values +- ✅ **Clear success metrics** - Dealership engagement + +**Publisher Value-Add:** +- Suggest family-oriented contexts +- Identify early adopter signals +- Find competitive conquesting opportunities +- Layer in environmental interest data +- Apply automotive shopping behaviors + +--- + +## Industry-Specific Examples + +### Financial Services - United States +```json +{ + "buying_mode": "brief", + "brief": "NextGen Banking is promoting our high-yield savings account across the United States. Our target customers are professionals who have accumulated some savings but keep it in traditional banks earning minimal interest. They're financially responsible but not necessarily investment-savvy, and they value security and ease of use over complex features. Looking for display and native formats to acquire 5,000 new accounts in January 2025 with $400,000 USD budget." +} +``` + +### Healthcare - Regional US +```json +{ + "buying_mode": "brief", + "brief": "HealthFirst Urgent Care serves families in Ohio who need convenient, affordable healthcare. Our patients typically have insurance but want to avoid emergency room costs and wait times. They're parents with young children, working professionals who can't take time off for appointments, and seniors who need accessible care close to home. We need display and video formats to drive appointment bookings. $20,000 USD monthly budget." +} +``` + +### Streaming Service - North America +```json +{ + "buying_mode": "brief", + "brief": "StreamPlus is expanding in the United States and Canada. Our subscribers love live sports but have cut the cord on traditional cable. They're social viewers who watch games with friends and family, follow multiple teams, and want access to both local and national broadcasts. We need Connected TV, video, and display formats for our Q4 2024 campaign with $2M USD budget to drive free trial sign-ups." +} +``` + +### Broadcast TV - Regional Automotive + +```json +{ + "buying_mode": "brief", + "brief": "Nova Motors is launching the Volta EV across the top 10 US DMAs. We need primetime :30 spots on major network affiliates (ABC, NBC, CBS, FOX) and late fringe :15 spots for frequency. Adults 25-54, $400K budget, 4-week flight in Q4 2026. We want to guarantee against C7 ratings with VideoAmp as the measurement vendor." +} +``` + +This brief includes broadcast-specific concepts: DMAs (designated market areas), spot lengths (:30 and :15), dayparts (primetime, late fringe), and a measurement window preference (C7). The seller interprets these against their station schedule and available avails. + +### Mobile Gaming - Global English Markets +```json +{ + "buying_mode": "brief", + "brief": "GameStudio is launching our puzzle game in the United States, United Kingdom, Canada, and Australia. Our players are typically adults who play mobile games during commutes, breaks, and before bed. They've played games like Candy Crush or Wordle and enjoy mental challenges that don't require long time commitments. Looking for video and display formats to acquire 50,000 players at $3.50 each in January 2025 with $175,000 USD budget." +} +``` + +--- + +## Brief Writing Best Practices + +### Describe Your Customer Naturally + +Instead of prescribing targeting tactics, describe your customer's: +- **Situation**: What's happening in their life/business? +- **Challenges**: What problems do they face? +- **Values**: What matters to them? +- **Behaviors**: How do they research and buy? +- **Context**: When and why do they need you? + +### Always Include Geographic Scope + +- Specify countries explicitly +- Include currency (USD, EUR, GBP, etc.) +- Note regional focuses within countries +- Consider time zones for global campaigns + +### Specify Format Preferences + +Include format types to indicate channel strategy: +- **Display**: Standard web advertising +- **Video**: In-stream and out-stream video +- **Connected TV**: Television streaming ads +- **Audio**: Podcast and music streaming +- **Native**: Content-style advertising + +### Let Publishers Add Value + +Good briefs leave room for publisher expertise: +- Describe customers, not targeting parameters +- Share context, not just demographics +- Explain the "why" behind your campaign +- Allow for creative targeting suggestions + +--- + +## What's Different About AdCP Briefs + +### ✅ DO Include: +- Customer descriptions and stories +- Geographic markets and currencies +- Format preferences (indicates channels) +- Business objectives and KPIs +- Budget and timing +- Competitive context + +### ❌ DON'T Prescribe: +- Specific targeting parameters +- Exact audience segments +- Technical implementations +- Frequency caps or bid strategies +- Attribution methodologies + +### 🤝 Let Publishers: +- Suggest targeting approaches +- Recommend audience strategies +- Optimize based on their data +- Apply their platform expertise +- Test and learn what works + +--- + +## Brief Evaluation Checklist + +### Essential Elements +- [ ] Clear advertiser/brand identification +- [ ] Geographic markets specified +- [ ] Currency indicated +- [ ] Format preferences stated +- [ ] Budget and timing included +- [ ] Business objective defined + +### Customer Description +- [ ] Customer situation/context +- [ ] Problems they're solving +- [ ] How they make decisions +- [ ] What they value +- [ ] Natural, conversational tone + +### Campaign Context +- [ ] Why this campaign now? +- [ ] Success metrics defined +- [ ] Competitive landscape mentioned +- [ ] Flexibility for publisher input + +--- + +## Related Documentation + +- [Brief Expectations](/dist/docs/3.0.13/media-buy/product-discovery/brief-expectations) - How publishers process briefs +- [Creative Formats](/dist/docs/3.0.13/creative/formats) - Understanding format specifications and discovery +- [Media Buy Lifecycle](/dist/docs/3.0.13/media-buy/media-buys) - Campaign execution workflow +- [Product Discovery](/dist/docs/3.0.13/media-buy/product-discovery) - How briefs influence product selection \ No newline at end of file diff --git a/dist/docs/3.0.13/media-buy/product-discovery/index.mdx b/dist/docs/3.0.13/media-buy/product-discovery/index.mdx new file mode 100644 index 0000000000..1091c760e2 --- /dev/null +++ b/dist/docs/3.0.13/media-buy/product-discovery/index.mdx @@ -0,0 +1,132 @@ +--- +title: Product Discovery +sidebarTitle: Overview +description: "AdCP product discovery — use natural language campaign briefs to find advertising inventory across publishers. Covers brief writing, product structures, and refinement." +"og:title": "AdCP — Product Discovery" +--- + + +Product discovery is the foundation of AdCP media buying. Use natural language to describe your campaign goals and discover relevant advertising inventory that matches your requirements. + +AdCP's product discovery revolutionizes how advertising inventory is found and evaluated: + +- **Natural Language First**: Describe campaigns in plain English instead of navigating complex catalogs +- **AI-Powered Matching**: Advanced algorithms match briefs to relevant inventory +- **Format-Aware Discovery**: Products include creative format compatibility +- **Account-Specific Results**: See inventory based on your account's access and negotiated deals + +## The Discovery Process + +### 1. Write Your Brief +Start with a natural language description of your campaign objectives: + +*"Mike's Plumbing Services needs to reach homeowners in the Denver, Colorado area who might need plumbing services. We have $8,000 USD to spend from October 15-31, 2024. Looking for display and native formats to drive phone calls."* + +### 2. Discover Products +Use [`get_products`](/dist/docs/3.0.13/media-buy/task-reference/get_products) to find matching inventory based on your brief and brand. + +### 3. Evaluate Results +Review returned products for: +- **Audience alignment** with your target customers +- **Format compatibility** with your creative assets +- **Pricing model** (fixed CPM vs auction-based) +- **Delivery type** (guaranteed vs non-guaranteed) +- **Delivery forecasts** on proposals to estimate expected impressions, reach, and spend + +### 4. Refine and Iterate +Use `buying_mode: "refine"` with the `refine` array of change requests to iterate on products and proposals — include, omit, or find similar products, and request adjustments to proposals before committing to a buy. See [Refinement](/dist/docs/3.0.13/media-buy/product-discovery/refinement). + +### 5. Work with Proposals +Publishers may return **proposals** alongside products—structured media plans with budget allocations that can be executed directly. See [Proposals](/dist/docs/3.0.13/media-buy/product-discovery/media-products#proposals). + +## Key Concepts + +### Natural Language Briefs +AdCP accepts campaign descriptions in conversational English rather than requiring: +- ❌ Product catalog navigation +- ❌ Technical targeting syntax +- ❌ Platform-specific terminology + +Instead, describe your campaign naturally: +- ✅ "Premium sports fans for energy drink launch" +- ✅ "Local restaurant targeting dinner rush commuters" +- ✅ "B2B software for marketing managers" + +Learn more in [Brief Expectations](/dist/docs/3.0.13/media-buy/product-discovery/brief-expectations). + +### Product Model +Products describe sellable inventory along three independent dimensions: +- **Publisher properties** — WHERE the ad runs (the website, app, or platform) +- **Collections and installments** — WHAT CONTENT the ad runs in or around (a series, podcast, or live event) +- **Placements** — WHAT POSITION the ad appears in (pre-roll, mid-roll, host read) + +Each product also includes audience targeting, creative format requirements, pricing, and delivery characteristics. When products reference collections, buyers resolve full collection metadata (talent, genre, content ratings, distribution identifiers) from the collection creator's or publisher's `adagents.json`. + +Understand the complete product structure in [Media Products](/dist/docs/3.0.13/media-buy/product-discovery/media-products). For collection-centric inventory like podcasts, CTV series, and live events, see [Collections and Installments](/dist/docs/3.0.13/media-buy/product-discovery/collections-and-installments). + +### Catalog-driven discovery +For catalog-driven campaigns (retail media, job boards, travel), pass a `catalog` on `get_products` to find products that match your catalog items. Products declare which catalog types they support via `catalog_types`, and the response includes `catalog_match` with matched item counts. See [Catalogs](/dist/docs/3.0.13/creative/catalogs#catalogs-in-the-media-buy-lifecycle). + +### Property Governance Filtering +For compliance-filtered discovery, pass a `property_list` on `get_products` to restrict results to properties that meet governance requirements (COPPA certification, sustainability scores, brand safety ratings). Property lists are created via a [property governance agent](/dist/docs/3.0.13/governance/property/index). See [`get_products` — Property Governance](/dist/docs/3.0.13/media-buy/task-reference/get_products#request-parameters) for details. + +### Format Discovery Integration +Product discovery works hand-in-hand with creative planning: + +1. **Products return format IDs** for required creative specifications +2. **Use [`list_creative_formats`](/dist/docs/3.0.13/creative/task-reference/list_creative_formats)** to get detailed format requirements +3. **Plan creative production** based on discovered format needs + +## Brief Examples & Patterns + +Real-world examples of effective briefs for different campaign types: + +- **Local Business**: Service area, customer demographics, business outcomes +- **E-commerce**: Product categories, shopping behaviors, conversion goals +- **B2B**: Job titles, company characteristics, lead generation +- **Brand Awareness**: Lifestyle attributes, media consumption, reach objectives + +Explore comprehensive examples in [Example Briefs](/dist/docs/3.0.13/media-buy/product-discovery/example-briefs). + +## Discovery Best Practices + +### Effective Brief Writing +- **Be specific about your business** and what you're promoting +- **Describe your ideal customer** rather than demographic codes +- **Include geographic scope** and any location relevance +- **Mention format preferences** if you have creative constraints +- **State business objectives** (calls, visits, sales, awareness) + +### Iterative Discovery +- Start with a broad brief to explore available inventory +- Use structured filters to narrow results by delivery type or pricing +- [Refine](/dist/docs/3.0.13/media-buy/product-discovery/refinement) specific products with the `refine` array before committing +- Experiment with different customer descriptions to find new opportunities + +### Working with Results +- Review all returned products for unexpected opportunities +- Check format requirements before creative production +- Consider mix of guaranteed and non-guaranteed inventory +- Evaluate pricing guidance for budget planning + +## Response Times + +Product discovery operations: +- **[`get_products`](/dist/docs/3.0.13/media-buy/task-reference/get_products)**: ~60 seconds (AI processing) +- **[`list_creative_formats`](/dist/docs/3.0.13/creative/task-reference/list_creative_formats)**: ~1 second (database lookup) + +## Next Steps + +After discovering products: +1. **[Create Media Buy](/dist/docs/3.0.13/media-buy/media-buys/)** - Build campaigns from selected products +2. **[Creative Planning](/dist/docs/3.0.13/media-buy/creatives/)** - Prepare assets matching format requirements +3. **[Task Reference](/dist/docs/3.0.13/media-buy/task-reference/)** - Detailed API documentation for implementation + +## Related Documentation + +- **[Brief Expectations](/dist/docs/3.0.13/media-buy/product-discovery/brief-expectations)** - Comprehensive guide to brief structure +- **[Example Briefs](/dist/docs/3.0.13/media-buy/product-discovery/example-briefs)** - Real-world campaign brief patterns +- **[Media Products](/dist/docs/3.0.13/media-buy/product-discovery/media-products)** - Understanding product model and attributes +- **[Refinement](/dist/docs/3.0.13/media-buy/product-discovery/refinement)** - Iterating on products and proposals with change requests +- **[Proposals](/dist/docs/3.0.13/media-buy/product-discovery/media-products#proposals)** - Structured media plans with budget allocations +- **[`get_products` Task](/dist/docs/3.0.13/media-buy/task-reference/get_products)** - Complete API reference \ No newline at end of file diff --git a/dist/docs/3.0.13/media-buy/product-discovery/media-products.mdx b/dist/docs/3.0.13/media-buy/product-discovery/media-products.mdx new file mode 100644 index 0000000000..9bc10ed091 --- /dev/null +++ b/dist/docs/3.0.13/media-buy/product-discovery/media-products.mdx @@ -0,0 +1,1237 @@ +--- +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.0.13/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) +- `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.0.13/reference/media-channel-taxonomy). +- `format_ids` (list[FormatID], required): Structured format ID references. See [Creative Formats](/dist/docs/3.0.13/creative/formats). +- `placements` (list[Placement], optional): Specific ad placements within this product. When provided, buyers can target individual placements when assigning creatives. 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.0.13/media-buy/product-discovery/collections-and-installments). +- `episodes` (list[Episode], optional): Specific episodes available within this product. See [Collections and installments](/dist/docs/3.0.13/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. See [Pricing Models](#pricing-models). +- `delivery_measurement` (object, optional): Who measures ad delivery — the ad server and viewability vendor used to count impressions (e.g., "Google Ad Manager with IAS viewability"). When absent, buyers should apply their own measurement defaults. See [Delivery Measurement](#delivery-measurement). +- `outcome_measurement` (OutcomeMeasurement, optional): Business outcome measurement included with the product — incremental sales lift, brand lift studies, etc. Common for retail media products. +- `creative_policy` (CreativePolicy, optional): Creative requirements and restrictions. +- `is_custom` (bool, optional): `true` if the product was generated for a specific brief. +- `expires_at` (datetime, optional): If `is_custom`, the time the product is no longer valid. +- `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. +- `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.0.13/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.0.13/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.0.13/media-buy/conversion-tracking) for the full optimization goals reference. + +### 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; buyers must use a supported currency +- **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.) +- **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.0.13/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 minimum bid constraints and optional `price_guidance` for percentile hints. Bid-based auction models (`cpm`, `vcpm`, `cpc`, `cpcv`, `cpv`) may also include `max_bid` as a boolean signal that `bid_price` switches from exact honored price to buyer ceiling mode: +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.0.13/pricing-options/cpm-option.json", + "pricing_option_id": "cpm_usd_auction", + "pricing_model": "cpm", + "currency": "USD", + "floor_price": 10.00, + "max_bid": true, + "price_guidance": { + "p25": 12.50, + "p50": 15.00, + "p75": 18.00, + "p90": 22.00 + } +} +``` + +#### 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.0.13/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.0.13/core/creative-policy.json", + "co_branding": "required", + "landing_page": "retailer_site_only", + "templates_available": true +} +``` + +### Placements + +Products can optionally declare specific ad placements within their inventory. When placements are provided: + +- **Buyers purchase the entire product** - Packages always target the whole product, not individual placements +- **Placement targeting happens at creative assignment** - Different creatives can be assigned to different placements +- **Omitting placement targeting** - Creatives without placement_ids run on all placements in the package +- **Reuse registered IDs when available** - If the publisher declares canonical `placements` in `adagents.json`, product placements SHOULD reuse those `placement_id` values +- **Preserve registry semantics** - When a product reuses a registered `placement_id`, it is referring to that same placement. The product may narrow `format_ids` 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 + +#### Placement Object Structure + +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.0.13/core/placement.json", + "placement_id": "homepage_banner", + "name": "Homepage Banner", + "description": "Above-the-fold banner on the homepage", + "tags": ["homepage", "display", "premium"], + "format_ids": [ + {"agent_url": "https://creative.adcontextprotocol.org", "id": "display_728x90"}, + {"agent_url": "https://creative.adcontextprotocol.org", "id": "display_970x250"} + ] +} +``` + +#### Example: Product with Placements + +```json +{ + "product_id": "news_site_premium", + "name": "News Site Premium Package", + "description": "Premium placements across news site", + "format_ids": [ + {"agent_url": "https://creative.adcontextprotocol.org", "id": "display_728x90"}, + {"agent_url": "https://creative.adcontextprotocol.org", "id": "display_300x250"} + ], + "placements": [ + { + "placement_id": "homepage_banner", + "name": "Homepage Banner", + "tags": ["homepage", "display", "premium"], + "format_ids": [{"agent_url": "https://creative.adcontextprotocol.org", "id": "display_728x90"}] + }, + { + "placement_id": "article_sidebar", + "name": "Article Sidebar", + "tags": ["article", "display"], + "format_ids": [{"agent_url": "https://creative.adcontextprotocol.org", "id": "display_300x250"}] + } + ], + "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_ids": ["homepage_banner"] + }, + { + "creative_id": "creative_2", + "placement_ids": ["article_sidebar"] + } + ] + } + ] +} +``` + +See [Creative Assignment and Placement Targeting](/dist/docs/3.0.13/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.0.13/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_ids": [ + { "agent_url": "https://ads.crestnetwork.example", "id": "audio_pre_roll_30s" }, + { "agent_url": "https://ads.crestnetwork.example", "id": "audio_mid_roll_60s" } + ], + "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_ids": [ + { "agent_url": "https://ads.crestnetwork.example", "id": "audio_pre_roll_30s" }, + { "agent_url": "https://ads.crestnetwork.example", "id": "audio_mid_roll_60s" } + ], + "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. + +### 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` and an `expires_at` timestamp + +## 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_ids": [ + { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "video_15s" + }, + { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "video_30s" + } + ], + "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_ids": [ + { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "display_300x250" + }, + { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "display_728x90" + } + ], + "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_ids": [ + { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "display_300x250" + }, + { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "display_728x90" + }, + { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "video_15s" + } + ], + "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 display in user interfaces. Publishers can optionally include card definitions that reference card formats and provide the assets needed to render attractive visual cards. + +### 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": { + "format_id": { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "product_card_standard" + }, + "manifest": { + "display_name": "Premium CTV - Living Room Audiences", + "hero_image_url": "https://cdn.example.com/products/ctv_hero.jpg", + "brief_highlight": "Perfect for reaching cord-cutters and premium streaming audiences" + } + }, + + "product_card_detailed": { + "format_id": { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "product_card_detailed" + }, + "manifest": { + "display_name": "Premium CTV - Living Room Audiences", + "description": "Reach high-income households with premium CTV inventory during peak viewing hours...", + "carousel_images": [ + "https://cdn.example.com/products/ctv_context1.jpg", + "https://cdn.example.com/products/ctv_context2.jpg" + ], + "specifications_markdown": "# Technical Specifications\n\n..." + } + } +} +``` + +### 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. + +## Proposals + +Publishers can return **proposals** alongside products - structured media plans with budget allocations that buyers can execute directly. + +### 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**: Buyers execute proposals directly via `create_media_buy` with a `proposal_id` +- **Budget-agnostic**: Allocations use percentages, allowing the same proposal to scale to any budget +- **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% + +### 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({ + 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({ + 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.0.13/media-buy/task-reference/get_products#refinement) for the full workflow and examples. + +### Executing a Proposal + +To execute a 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" +} +``` + +The publisher converts the proposal's allocation percentages into packages: +- `ch_desktop_de`: 20% × \$50,000 = \$10,000 +- `ch_desktop_fr`: 30% × \$50,000 = \$15,000 +- etc. + +This approach simplifies complex multi-line-item campaigns to a single proposal execution. + +### 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. + +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, 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 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. +- **`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"). +- **`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. + +#### 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. + +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.0.13/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.0.13/media-buy/product-discovery) - How to discover products using natural language +- [Media Buys](/dist/docs/3.0.13/media-buy/media-buys) - How to purchase products +- [Targeting](/dist/docs/3.0.13/media-buy/advanced-topics/targeting) - Detailed targeting options +- [Creative Formats](/dist/docs/3.0.13/creative/formats) - Understanding format specifications and discovery diff --git a/dist/docs/3.0.13/media-buy/product-discovery/refinement.mdx b/dist/docs/3.0.13/media-buy/product-discovery/refinement.mdx new file mode 100644 index 0000000000..410d7ea43f --- /dev/null +++ b/dist/docs/3.0.13/media-buy/product-discovery/refinement.mdx @@ -0,0 +1,287 @@ +--- +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.0.13/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 + +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 +{ + "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 +{ + "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 +{ + "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 +{ + "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 + +### 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 +{ + "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 +{ + "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 +{ + "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" } + ] +} +``` + +## 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 `refine` array and `filters` on each request fully specify the refinement intent. Sales agents MUST NOT depend on transport-level session state (e.g., remembering what was sent in a previous request). + +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. + +Client implementations should validate refinement requests against the [request schema](/dist/docs/3.0.13/building/by-layer/L0/schemas) before sending. + +## Error handling + +| Error Code | When | Resolution | +|------------|------|------------| +| `PRODUCT_NOT_FOUND` | One or more referenced product IDs are unknown or expired | Remove invalid IDs and retry, or re-discover with a `brief` request | +| `PROPOSAL_EXPIRED` | A referenced proposal ID has passed its `expires_at` | Re-discover with a new `brief` or `wholesale` request | +| `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.0.13/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.0.13/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.0.13/media-buy/task-reference/get_products#refinement) — API reference with request/response schemas +- [Media Products](/dist/docs/3.0.13/media-buy/product-discovery/media-products) — product model and proposal structure +- [Media Buy Specification](/dist/docs/3.0.13/media-buy/specification#get_products) — normative requirements +- [Orchestrator Design](/dist/docs/3.0.13/building/operating/orchestrator-design) — building buyer-side agents diff --git a/dist/docs/3.0.13/media-buy/specification.mdx b/dist/docs/3.0.13/media-buy/specification.mdx new file mode 100644 index 0000000000..97f3a8d7d2 --- /dev/null +++ b/dist/docs/3.0.13/media-buy/specification.mdx @@ -0,0 +1,558 @@ +--- +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.0.13/protocol/get-adcp-capabilities-response.json", + "adcp": { + "major_versions": [2], + "idempotency": { "supported": true, "replay_ttl_seconds": 86400 } + }, + "supported_protocols": ["media_buy"], + "account": { + "supported_billing": ["operator", "agent"] + } +} +``` + +## 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 + +- **`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. + +### 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 │ resume + │ ▲ │ + (pause) │ │ (resume) │ + ▼ │ │ + paused ────────────────────────────────────┘ + │ + active ───────┼──────────────▶ completed (terminal) + paused ───────┘ ▲ flight ends / goal met / budget exhausted + +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`, `pending_creatives`, or `pending_start` from `create_media_buy` (seller's choice based on platform setup time) +- 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 `create_media_buy` response constitutes **order confirmation**. Sales agents MUST include `confirmed_at` in the response. +- Sales agents MUST include `revision` in create and update responses. The revision number MUST increment on every state change or update. +- `active` ↔ `paused` transitions use `update_media_buy` with `paused: true` or `paused: false` +- `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` +- Seller-initiated cancellation (e.g., policy violation, inventory withdrawal) transitions the media buy to `canceled` with `cancellation.canceled_by: "seller"`. Sellers MUST notify orchestrators via webhook when performing seller-initiated cancellation. +- Seller-initiated rejection (from `pending_creatives` or `pending_start`) MUST also notify orchestrators via `push_notification_config`. The webhook payload MUST include `media_buy_id`, `status: "rejected"`, and `rejection_reason`. +- 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`. +- Seller-initiated cancellation notifications MUST use the `push_notification_config` webhook provided by the orchestrator during `create_media_buy` or `update_media_buy`. The webhook payload MUST include `media_buy_id`, `status: "canceled"`, and a `cancellation` object with `canceled_at`, `canceled_by: "seller"`, and `reason`. +- 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; the creatives themselves remain in the creative library.** When a media buy transitions to `rejected` or `canceled`, all package-creative assignments on that media buy are released. The creatives persist in the creative library per [assignment state and creative state](/dist/docs/3.0.13/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, regardless of submission path (inline creatives submitted on the rejected/canceled `create_media_buy` enter the library on the same lifecycle as `sync_creatives` uploads). +- **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 (surfaced in the buy's `history` and in the webhook notifications required above) IS the audit record for all its released assignments; buyers MUST NOT rely on per-assignment diff observability. Released assignments no longer appear in `get_media_buys` responses for that buy. Buyers confirming reusability SHOULD call `list_creatives` to verify the creative is still in the library and observe its current status. Package-scoped deadlines (`creative_deadline`) on the prior package have no bearing on the creative's eligibility for a new buy. +- **Retention.** Sales agents 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. + +**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` is reserved for content policy 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.0.13/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 via `sync_creatives`, 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` +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.0.13/media-buy/get-products-request.json) / [`media-buy/get-products-response.json`](https://adcontextprotocol.org/schemas/3.0.13/media-buy/get-products-response.json) + +**Reference**: [`get_products` task](/dist/docs/3.0.13/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 + +**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 + +### list_creative_formats + +**Schema**: [`media-buy/list-creative-formats-request.json`](https://adcontextprotocol.org/schemas/3.0.13/media-buy/list-creative-formats-request.json) / [`media-buy/list-creative-formats-response.json`](https://adcontextprotocol.org/schemas/3.0.13/media-buy/list-creative-formats-response.json) + +**Reference**: [`list_creative_formats` task](/dist/docs/3.0.13/creative/task-reference/list_creative_formats) + +Discover creative format requirements and specifications. + +**Requirements:** +- Sales agents MUST return all supported creative formats +- Sales agents MUST include technical specifications for each format +- Sales agents SHOULD reference standard format IDs from the Creative Protocol when applicable + +### create_media_buy + +**Schema**: [`media-buy/create-media-buy-request.json`](https://adcontextprotocol.org/schemas/3.0.13/media-buy/create-media-buy-request.json) / [`media-buy/create-media-buy-response.json`](https://adcontextprotocol.org/schemas/3.0.13/media-buy/create-media-buy-response.json) + +**Reference**: [`create_media_buy` task](/dist/docs/3.0.13/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` — a successful response constitutes order confirmation +- 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.0.13/media-buy/update-media-buy-request.json) / [`media-buy/update-media-buy-response.json`](https://adcontextprotocol.org/schemas/3.0.13/media-buy/update-media-buy-response.json) + +**Reference**: [`update_media_buy` task](/dist/docs/3.0.13/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 `canceled: true` is present alongside other fields in an update request, sales agents MUST apply cancellation and MUST ignore all other fields except `cancellation_reason`. Cancellation takes precedence over concurrent mutations. Sales agents SHOULD include a warning in the response `context` when non-cancellation fields were present and ignored. +- 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.0.13/media-buy/sync-catalogs-request.json) / [`media-buy/sync-catalogs-response.json`](https://adcontextprotocol.org/schemas/3.0.13/media-buy/sync-catalogs-response.json) + +**Reference**: [`sync_catalogs` task](/dist/docs/3.0.13/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.0.13/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.0.13/creative/task-reference/list_creatives). +</Note> + +### sync_creatives + +<Note> +`sync_creatives` is defined in the [Creative Protocol](/dist/docs/3.0.13/creative/specification#sync_creatives). Any agent that hosts a creative library implements `sync_creatives` as part of the Creative Protocol. See the [`sync_creatives` task reference](/dist/docs/3.0.13/creative/task-reference/sync_creatives). +</Note> + +### get_media_buys + +**Schema**: [`media-buy/get-media-buys-request.json`](https://adcontextprotocol.org/schemas/3.0.13/media-buy/get-media-buys-request.json) / [`media-buy/get-media-buys-response.json`](https://adcontextprotocol.org/schemas/3.0.13/media-buy/get-media-buys-response.json) + +**Reference**: [`get_media_buys` task](/dist/docs/3.0.13/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 `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` | `cancel`, `sync_creatives` | +| `pending_start` | `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). + +`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." +- 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 a media-buy currency and MUST denominate monetary fields consistently (`snapshot.currency` -> `package.currency` -> `media_buy.currency`) +- 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.0.13/media-buy/get-media-buy-delivery-request.json) / [`media-buy/get-media-buy-delivery-response.json`](https://adcontextprotocol.org/schemas/3.0.13/media-buy/get-media-buy-delivery-response.json) + +**Reference**: [`get_media_buy_delivery` task](/dist/docs/3.0.13/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.0.13/media-buy/provide-performance-feedback-request.json) / [`media-buy/provide-performance-feedback-response.json`](https://adcontextprotocol.org/schemas/3.0.13/media-buy/provide-performance-feedback-response.json) + +**Reference**: [`provide_performance_feedback` task](/dist/docs/3.0.13/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.0.13/media-buy/sync-event-sources-request.json) / [`media-buy/sync-event-sources-response.json`](https://adcontextprotocol.org/schemas/3.0.13/media-buy/sync-event-sources-response.json) + +**Reference**: [`sync_event_sources` task](/dist/docs/3.0.13/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.0.13/media-buy/log-event-request.json) / [`media-buy/log-event-response.json`](https://adcontextprotocol.org/schemas/3.0.13/media-buy/log-event-response.json) + +**Reference**: [`log_event` task](/dist/docs/3.0.13/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.0.13/media-buy/sync-audiences-request.json) / [`media-buy/sync-audiences-response.json`](https://adcontextprotocol.org/schemas/3.0.13/media-buy/sync-audiences-response.json) + +**Reference**: [`sync_audiences` task](/dist/docs/3.0.13/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.0.13/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.0.13/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 +- `BUDGET_EXCEEDED`: Operation would exceed allocated budget +- `CREATIVE_REJECTED`: Creative failed content policy 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. +- `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: re-negotiate via `get_products` in `refine` mode against the existing `proposal_id` to obtain a fresh quote reflecting the new parameters, then resubmit the update against the new `proposal_id`. 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_REQUIRED`: Authentication is required to access this resource + +## 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 + +See [Required tasks by protocol](/dist/docs/3.0.13/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 + +## Implementation Notes + +### Response Time Expectations + +Sales agents SHOULD target the following response times: + +| Operation Type | Target Latency | +|----------------|----------------| +| Simple lookups (list_creative_formats) | < 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 + +Sales agents SHOULD support idempotent operations using `idempotency_key`: + +- If an `idempotency_key` has been seen before for the same account, sales agents SHOULD return the existing resource +- This enables safe retries without duplicate creation + +For mutation tasks (`update_media_buy`, `sync_creatives`), orchestrators MAY include an `idempotency_key` (16-255 characters) for safe retries. If a request fails without a response, resending with the same `idempotency_key` guarantees at-most-once execution. + +### 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.0.13/media-buy/get-products-request.json) | get_products request | +| [`media-buy/get-products-response.json`](https://adcontextprotocol.org/schemas/3.0.13/media-buy/get-products-response.json) | get_products response | +| [`media-buy/create-media-buy-request.json`](https://adcontextprotocol.org/schemas/3.0.13/media-buy/create-media-buy-request.json) | create_media_buy request | +| [`media-buy/create-media-buy-response.json`](https://adcontextprotocol.org/schemas/3.0.13/media-buy/create-media-buy-response.json) | create_media_buy response | +| [`media-buy/update-media-buy-request.json`](https://adcontextprotocol.org/schemas/3.0.13/media-buy/update-media-buy-request.json) | update_media_buy request | +| [`media-buy/update-media-buy-response.json`](https://adcontextprotocol.org/schemas/3.0.13/media-buy/update-media-buy-response.json) | update_media_buy response | +| [`media-buy/list-creative-formats-request.json`](https://adcontextprotocol.org/schemas/3.0.13/media-buy/list-creative-formats-request.json) | list_creative_formats request | +| [`media-buy/list-creative-formats-response.json`](https://adcontextprotocol.org/schemas/3.0.13/media-buy/list-creative-formats-response.json) | list_creative_formats response | +| [`creative/list-creatives-request.json`](https://adcontextprotocol.org/schemas/3.0.13/creative/list-creatives-request.json) | list_creatives request (Creative Protocol) | +| [`creative/list-creatives-response.json`](https://adcontextprotocol.org/schemas/3.0.13/creative/list-creatives-response.json) | list_creatives response (Creative Protocol) | +| [`creative/sync-creatives-request.json`](https://adcontextprotocol.org/schemas/3.0.13/creative/sync-creatives-request.json) | sync_creatives request (Creative Protocol) | +| [`creative/sync-creatives-response.json`](https://adcontextprotocol.org/schemas/3.0.13/creative/sync-creatives-response.json) | sync_creatives response (Creative Protocol) | +| [`media-buy/get-media-buy-delivery-request.json`](https://adcontextprotocol.org/schemas/3.0.13/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.0.13/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.0.13/media-buy/provide-performance-feedback-request.json) | provide_performance_feedback request | +| [`media-buy/provide-performance-feedback-response.json`](https://adcontextprotocol.org/schemas/3.0.13/media-buy/provide-performance-feedback-response.json) | provide_performance_feedback response | diff --git a/dist/docs/3.0.13/media-buy/task-reference/create_media_buy.mdx b/dist/docs/3.0.13/media-buy/task-reference/create_media_buy.mdx new file mode 100644 index 0000000000..4763cac488 --- /dev/null +++ b/dist/docs/3.0.13/media-buy/task-reference/create_media_buy.mdx @@ -0,0 +1,1397 @@ +--- +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. + +Supports two modes: +- **Manual Mode**: Provide `packages` array with explicit line item configurations +- **Proposal Mode**: Provide `proposal_id` and `total_budget` to execute a proposal from `get_products` + +**Response Time**: Instant to days (returns `completed`, `working` < 120s, or `submitted` for hours/days) + +**Request Schema**: [`/schemas/3.0.13/media-buy/create-media-buy-request.json`](https://adcontextprotocol.org/schemas/3.0.13/media-buy/create-media-buy-request.json) +**Response Schema**: [`/schemas/3.0.13/media-buy/create-media-buy-response.json`](https://adcontextprotocol.org/schemas/3.0.13/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/client/testing'; +import { CreateMediaBuyResponseSchema } from '@adcp/client'; + +// 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_ids: [ + { + agent_url: 'https://creative.adcontextprotocol.org', + id: 'display_300x250_image' + } + ], + budget: 2500, + bid_price: 5.00 + }, + { + product_id: 'prod_e8fd6012', + pricing_option_id: 'cpm_usd_auction', + format_ids: [ + { + agent_url: 'https://creative.adcontextprotocol.org', + id: 'display_300x250_html' + } + ], + budget: 2500, + bid_price: 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_ids': [ + { + 'agent_url': 'https://creative.adcontextprotocol.org', + 'id': 'display_300x250_image' + } + ], + 'budget': 2500, + 'bid_price': 5.00 + }, + { + 'product_id': 'prod_e8fd6012', + 'pricing_option_id': 'cpm_usd_auction', + 'format_ids': [ + { + 'agent_url': 'https://creative.adcontextprotocol.org', + 'id': 'display_300x250_html' + } + ], + 'budget': 2500, + 'bid_price': 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/client@latest \ + https://test-agent.adcontextprotocol.org/mcp \ + create_media_buy \ + '{"brand":{"domain":"acmecorp.com"},"packages":[{"product_id":"prod_d979b543","pricing_option_id":"cpm_usd_auction","format_ids":[{"agent_url":"https://creative.adcontextprotocol.org","id":"display_300x250_image"}],"budget":30000,"bid_price":5.00},{"product_id":"prod_e8fd6012","pricing_option_id":"cpm_usd_auction","format_ids":[{"agent_url":"https://creative.adcontextprotocol.org","id":"display_300x250_html"}],"budget":20000,"bid_price":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.0.13/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 a proposal from `get_products` to execute. Alternative to providing packages. | +| `total_budget` | TotalBudget | No* | Total budget when executing a proposal. Publisher applies allocation percentages. | +| `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.0.13/brand-protocol/brand-json) | +| `start_time` | string | Yes | `"asap"` or ISO 8601 date-time | +| `end_time` | string | Yes | ISO 8601 date-time (UTC unless timezone specified) | +| `invoice_recipient` | [BusinessEntity](/dist/docs/3.0.13/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` when governance agents are configured. | +| `po_number` | string | No | Purchase order number | +| `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 | + +\* Either `packages` OR (`proposal_id` + `total_budget`) must be provided. + +### 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 | Product ID from `get_products` | +| `pricing_option_id` | string | Yes | Pricing option ID from product's `pricing_options` array | +| `format_ids` | FormatID[] | Yes | Format IDs that will be used - must be supported by product | +| `budget` | number | Yes | Budget in currency specified by pricing option | +| `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"` | +| `bid_price` | number | No | Bid price for auction pricing. This is the exact bid/price to honor unless the selected pricing option has `max_bid: true`, in which case it is treated as the buyer's maximum willingness to pay (ceiling). | +| `optimization_goals` | [OptimizationGoal[]](/dist/docs/3.0.13/media-buy/conversion-tracking/#optimization-goals) | No | Optimization targets for this package. Each goal is either `kind: "event"` (conversion events with `event_sources` array, optional `cost_per`, `per_ad_spend`, or `maximize_value` target) or `kind: "metric"` (seller-native metric with optional `cost_per` or `threshold_rate` target). Event goals require `conversion_tracking.supported_targets` on the product; metric goals require `metric_optimization.supported_metrics`. | +| `targeting_overlay` | TargetingOverlay | No | Additional targeting criteria (see [Targeting](/dist/docs/3.0.13/media-buy/advanced-topics/targeting)) | +| `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 | +| `creatives` | CreativeAsset[] | No | Upload new creative assets and assign (`creative_id` must not already exist in library) | +| `context` | object | No | Opaque correlation data echoed unchanged in the package response. Use to map seller-assigned `package_id` back to your internal line items, campaign structure, or tracking state. | +| `measurement_terms` | [MeasurementTerms](/dist/docs/3.0.13/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`, or adjusts. When omitted, product's `measurement_terms` apply. | +| `performance_standards` | [PerformanceStandard[]](/dist/docs/3.0.13/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. | + +## Response + +### Success Response + +| Field | Description | +|-------|-------------| +| `media_buy_id` | Seller's unique identifier | +| `confirmed_at` | ISO 8601 timestamp of order confirmation. A successful response constitutes confirmation. | +| `creative_deadline` | ISO 8601 timestamp for creative upload deadline | +| `packages` | Array of created packages with complete state. Packages may include per-package `creative_deadline` when different from the media buy deadline. | + +### Error Response + +| Field | Description | +|-------|-------------| +| `errors` | Array of error objects explaining failure | + +### 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 via `tasks/get` or push-notification webhook) carries `media_buy_id` and `packages`. + +| Field | Description | +|-------|-------------| +| `status` | Literal `"submitted"` — discriminates this shape from the sync success branch, whose `status` carries a `MediaBuyStatus` value (`pending_creatives` / `pending_start` / `active`). | +| `task_id` | Handle the buyer polls with `tasks/get` 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. + +## Common Scenarios + +### Campaign with Targeting + +Add geographic restrictions and frequency capping: + +<CodeGroup> + +```javascript JavaScript test=false +import { testAgent } from '@adcp/client/testing'; +import { CreateMediaBuyResponseSchema } from '@adcp/client'; + +// 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_ids: [{ + agent_url: 'https://creative.adcontextprotocol.org', + id: 'display_300x250_image' + }], + budget: 2500, + bid_price: 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_ids': [{ + 'agent_url': 'https://creative.adcontextprotocol.org', + 'id': 'display_300x250_image' + }], + 'budget': 2500, + 'bid_price': 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 + +Set a per_ad_spend target for conversion-optimized delivery. The product must declare support in `conversion_tracking.supported_targets`, and you must have an event source configured via `sync_event_sources`: + +<CodeGroup> + +```javascript JavaScript test=false +import { testAgent } from '@adcp/client/testing'; +import { CreateMediaBuyResponseSchema } from '@adcp/client'; + +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, + bid_price: 1.20, + optimization_goals: [{ + kind: 'event', + event_sources: [ + { event_source_id: 'retailer_sales', event_type: 'purchase', value_field: 'value' } + ], + target: { kind: 'per_ad_spend', value: 4.0 }, + 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 per_ad_spend target`); +} +``` + +```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, + 'bid_price': 1.20, + 'optimization_goals': [{ + 'kind': 'event', + 'event_sources': [ + { 'event_source_id': 'retailer_sales', 'event_type': 'purchase', 'value_field': 'value' } + ], + 'target': { 'kind': 'per_ad_spend', 'value': 4.0 }, + '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 per_ad_spend target") + +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.0.13/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, + "bid_price": 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, + "bid_price": 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.0.13/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. + +### Campaign with Inline Creatives + +Upload creatives at the same time as creating the campaign: + +<CodeGroup> + +```javascript JavaScript test=false +import { testAgent } from '@adcp/client/testing'; +import { CreateMediaBuyResponseSchema } from '@adcp/client'; + +// 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_ids: [{ + agent_url: 'https://creative.adcontextprotocol.org', + id: 'display_300x250_image' + }], + budget: 2500, + bid_price: 5.00, + creatives: [{ + creative_id: 'hero_video_30s', + name: 'Hero Video', + format_id: { + agent_url: 'https://creative.adcontextprotocol.org', + id: 'display_300x250_image' + }, + assets: { + 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_ids': [{ + 'agent_url': 'https://creative.adcontextprotocol.org', + 'id': 'display_300x250_image' + }], + 'budget': 2500, + 'bid_price': 5.00, + 'creatives': [{ + 'creative_id': 'hero_video_30s', + 'name': 'Hero Video', + 'format_id': { + 'agent_url': 'https://creative.adcontextprotocol.org', + 'id': 'display_300x250_image' + }, + 'assets': { + '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/client/testing'; +import { CreateMediaBuyResponseSchema } from '@adcp/client'; + +// 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_ids: [{ + agent_url: 'https://creative.adcontextprotocol.org', + id: 'display_300x250_image' + }], + budget: 2500, + bid_price: 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', 'video_completions'] + } +}); + +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_ids': [{ + 'agent_url': 'https://creative.adcontextprotocol.org', + 'id': 'display_300x250_image' + }], + 'budget': 2500, + 'bid_price': 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', 'video_completions'] + } + ) + + 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 proposal from `get_products` without manually constructing packages: + +<CodeGroup> + +```javascript JavaScript test=false +import { testAgent } from '@adcp/client/testing'; +import { CreateMediaBuyResponseSchema } from '@adcp/client'; + +// 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 get_products response + 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 get_products response + 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: +- The publisher converts allocation percentages to actual budgets using `total_budget` +- 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.0.13/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, useful for mapping `package_id` back to your internal line items + +**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, + "bid_price": 5.00, + "context": { + "line_item_id": "li-001", + "flight": "june-awareness" + } + }, + { + "product_id": "prod_e8fd6012", + "pricing_option_id": "cpm_usd_auction", + "budget": 10000, + "bid_price": 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` | Invalid product_id | Verify product exists via `get_products` | +| `FORMAT_INCOMPATIBLE` | Format not supported by product | Check product's `format_ids` field | +| `BUDGET_TOO_LOW` | Budget below product minimum | Increase budget or choose different product | +| `TARGETING_TOO_NARROW` | Targeting yields zero inventory | Broaden geographic or audience criteria | +| `POLICY_VIOLATION` | Brand/product violates policy | Review publisher's content policies | +| `INVALID_PRICING_OPTION` | pricing_option_id not found | Use ID from product's `pricing_options` | +| `CREATIVE_ID_EXISTS` | Creative ID already exists in library | Use a different `creative_id`, assign existing creatives via `creative_assignments`, or update via `sync_creatives` | + +Example error response: + +```json +{ + "errors": [{ + "code": "FORMAT_INCOMPATIBLE", + "message": "Product 'prod_d979b543' does not support format 'display_728x90'", + "field": "packages[0].format_ids", + "suggestion": "Use display_300x250_image, display_300x250_html, or display_300x250_generative formats" + }] +} +``` + +## Key Concepts + +### Format Specification + +Format IDs are **required** for each package because: +- Publishers create placeholder creatives in ad servers +- Both parties know exactly what creative assets are needed +- Validation ensures products support requested formats +- Progress tracking shows which assets are missing + +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.0.13/brand-protocol/brand-json). + +### Pricing & Currency + +Each package specifies its `pricing_option_id`, which determines: +- Currency (USD, EUR, etc.) +- Pricing model (CPM, CPCV, CPP, etc.) +- Rate and whether it's fixed or auction-based + +Packages can use different currencies when sellers support it. See [Pricing Models](/dist/docs/3.0.13/media-buy/advanced-topics/pricing-models). + +### 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.0.13/trusted-match)) + +See [Targeting](/dist/docs/3.0.13/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. list_creative_formats → Get available format specifications +2. get_products → Find products (returns format_ids they support) +3. Validate compatibility → Ensure products support desired formats +4. create_media_buy → Specify formats (REQUIRED) + └── Publisher creates placeholders + └── Clear creative requirements established +5. sync_creatives → Upload actual files matching formats +6. Campaign activation → Replace placeholders with real creatives +``` + +### Format Validation + +Publishers MUST validate: +- All formats are supported by the product +- Format specifications match `list_creative_formats` output +- Creative requirements can be fulfilled within timeline + +Invalid format example: + +```json +{ + "errors": [{ + "code": "FORMAT_INCOMPATIBLE", + "message": "Product 'ctv_sports_premium' does not support format 'audio_standard_30s'", + "field": "packages[0].format_ids", + "supported_formats": [ + { "agent_url": "https://creative.adcontextprotocol.org", "id": "video_standard_30s" }, + { "agent_url": "https://creative.adcontextprotocol.org", "id": "video_standard_15s" } + ] + }] +} +``` + +### Flight date validation + +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.0.13/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", + "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" + } + ] +} +``` + +### 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", + "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: { + parts: [{ + kind: 'data', + data: { + skill: 'create_media_buy', + parameters: { + brand: { domain: 'acmecorp.com' }, + packages: [ + { + product_id: 'prod_ctv_sports', + pricing_option_id: 'cpm_fixed', + budget: 50000 + } + ] + } + } + }] + } +}); +``` + +**Response:** +```json +{ + "status": "completed", + "taskId": "task_123", + "contextId": "ctx_456", + "artifacts": [{ + "parts": [ + { "text": "Media buy created successfully" }, + { + "data": { + "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`) + +Task is actively processing. Use SSE streaming or poll for updates. + +**Initial response:** +```json +{ + "status": "working", + "taskId": "task_789", + "contextId": "ctx_456" +} +``` + +**SSE status update:** +```json +{ + "taskId": "task_789", + "status": { + "state": "working", + "message": { + "parts": [ + { "text": "Validating inventory availability..." }, + { + "data": { + "percentage": 50, + "current_step": "inventory_check" + } + } + ] + } + } +} +``` + +### Long-Running (`submitted`) + +**Request with push notification:** +```javascript test=false +const response = await a2a.send({ + message: { + parts: [{ + kind: 'data', + data: { + skill: 'create_media_buy', + parameters: { + packages: [{ budget: 500000 }] // Triggers approval + } + } + }] + }, + pushNotificationConfig: { + url: 'https://your-app.com/webhooks/a2a', + authentication: { + schemes: ['bearer'], + credentials: 'your_webhook_secret' + } + } +}); +``` + +**Initial response:** +```json +{ + "status": "submitted", + "taskId": "task_abc", + "contextId": "ctx_456" +} +``` + +**Webhook POST (Task) when completed:** +```json +{ + "id": "task_abc", + "contextId": "ctx_456", + "status": { + "state": "completed", + "message": { + "parts": [ + { "text": "Media buy approved and created" }, + { + "data": { + "media_buy_id": "mb_67890", + "packages": [{ "package_id": "pkg_002" }] + } + } + ] + }, + "timestamp": "2025-01-22T14:30:00Z" + } +} +``` + +### Input Required (`input-required`) + +Task is paused waiting for clarification or approval. + +**Response:** +```json +{ + "status": "input-required", + "taskId": "task_def", + "contextId": "ctx_456", + "artifacts": [{ + "parts": [ + { "text": "The requested budget exceeds your pre-approved limit. Please confirm you want to proceed with $500K spend." }, + { + "data": { + "reason": "APPROVAL_REQUIRED", + "errors": [ + { + "code": "BUDGET_EXCEEDS_LIMIT", + "message": "Requested budget exceeds pre-approved limit", + "field": "total_budget" + } + ] + } + } + ] + }] +} +``` + +**Follow-up to approve:** +```javascript test=false +await a2a.send({ + contextId: 'ctx_456', // Continue the conversation + message: { + parts: [{ kind: 'text', text: 'Yes, I confirm the $500K budget' }] + } +}); +``` + +### Error (`failed`) + +**Response:** +```json +{ + "status": "failed", + "taskId": "task_xyz", + "artifacts": [{ + "parts": [ + { "text": "Failed to create media buy" }, + { + "data": { + "errors": [ + { + "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.0.13/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.0.13/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 NEW creatives only. To update existing creatives, use [`sync_creatives`](/dist/docs/3.0.13/creative/task-reference/sync_creatives). To assign existing library creatives, use `creative_assignments` instead. +- **Inline creative lifecycle**: Inline creatives enter the library with the same lifecycle as `sync_creatives` uploads. If the `create_media_buy` task resolves as `pending_manual` and the buy never activates, or if the buy is rejected or canceled, only the package assignments are released — the creatives remain in the library and can be reused by `creative_id` on a later `create_media_buy` call. Creative review is independent of the buy outcome; sellers MUST NOT skip review solely because the buy did not activate. Retention of unassigned creatives is seller-defined in 3.0. See [Inline creatives on the package](/dist/docs/3.0.13/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` 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.0.13/governance/content-standards/tasks/create_content_standards) on a verification agent (e.g., IAS, DoubleVerify). Standards MUST be [calibrated](/dist/docs/3.0.13/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.0.13/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. **Upload Creatives**: Use [`sync_creatives`](/dist/docs/3.0.13/creative/task-reference/sync_creatives) before deadline +2. **Monitor Status**: Use [`get_media_buy_delivery`](/dist/docs/3.0.13/media-buy/task-reference/get_media_buy_delivery) +3. **Optimize**: Use [`provide_performance_feedback`](/dist/docs/3.0.13/media-buy/task-reference/provide_performance_feedback) +4. **Update**: Use [`update_media_buy`](/dist/docs/3.0.13/media-buy/task-reference/update_media_buy) to modify campaign + +## Learn More + +- [Media Buy Lifecycle](/dist/docs/3.0.13/media-buy/media-buys/) - Complete campaign workflow +- [get_products](/dist/docs/3.0.13/media-buy/task-reference/get_products) - Discover inventory +- [Targeting](/dist/docs/3.0.13/media-buy/advanced-topics/targeting) - Targeting strategies +- [Pricing Models](/dist/docs/3.0.13/media-buy/advanced-topics/pricing-models) - Currency and pricing diff --git a/dist/docs/3.0.13/media-buy/task-reference/get_media_buy_delivery.mdx b/dist/docs/3.0.13/media-buy/task-reference/get_media_buy_delivery.mdx new file mode 100644 index 0000000000..88f9555cf7 --- /dev/null +++ b/dist/docs/3.0.13/media-buy/task-reference/get_media_buy_delivery.mdx @@ -0,0 +1,790 @@ +--- +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.0.13/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` for an account-owned buy. + +**Request Schema**: [`/schemas/3.0.13/media-buy/get-media-buy-delivery-request.json`](https://adcontextprotocol.org/schemas/3.0.13/media-buy/get-media-buy-delivery-request.json) +**Response Schema**: [`/schemas/3.0.13/media-buy/get-media-buy-delivery-response.json`](https://adcontextprotocol.org/schemas/3.0.13/media-buy/get-media-buy-delivery-response.json) + +## Request Parameters + +| Parameter | Type | Required | Description | +|-----------|------|----------|-------------| +| `account` | [account-ref](/dist/docs/3.0.13/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`, `placement`. Each accepts optional `limit` (defaults to 25 for geo, audience, placement) and `sort_by` (sort-metric enum, default: `spend`). Geo requires `geo_level` (one per request) and `system` for metro/postal levels. Unsupported dimensions are silently omitted; malformed requests return a validation error. | + +> **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"`. + +**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) | +| `media_buy_deliveries` | Array of delivery data per media buy | + +### Media Buy Delivery Object + +| 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`. | +| `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.0.13/media-buy/get-media-buy-delivery-response.json) for complete field list. + +### Billing-grade vs best-effort numbers + +Unless the seller explicitly declares otherwise, `get_media_buy_delivery` returns **best-effort** numbers: real-time or near-real-time telemetry, subject to revision as counts settle, **not** an invoicing source of truth. Callers that use these numbers for client reporting or pacing decisions are safe; callers that use them for reconciliation, accruals, or finance close are not. + +Sellers **MAY** declare a finalization window in their capabilities (e.g., `delivery_reporting.finalization_window_hours`) and, once that window has elapsed for a reporting period, treat the numbers returned for that period as authoritative for billing — stable across subsequent calls, suitable for invoice reconciliation, and liable as the source of truth in a dispute. Callers **MUST NOT** assume finalization in the absence of such a declaration. + +When a buyer's independent measurement disagrees with these numbers, reconciliation happens out-of-band through the commercial relationship between counterparties, backed by the audit trail on both sides. AdCP 3.0 does not specify a structured dispute task. + +## Common Scenarios + +### Single Media Buy + +<CodeGroup> + +```javascript JavaScript test=false +import { testAgent } from '@adcp/client/testing'; +import { GetMediaBuyDeliveryResponseSchema } from '@adcp/client'; + +// 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 +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/client/testing'; +import { GetMediaBuyDeliveryResponseSchema } from '@adcp/client'; + +// 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/client/testing'; +import { GetMediaBuyDeliveryResponseSchema } from '@adcp/client'; + +// 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 +import { testAgent } from '@adcp/client/testing'; +import { GetMediaBuyDeliveryResponseSchema } from '@adcp/client'; + +// 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 +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> + +### Buyer Reference Query + +<CodeGroup> + +```javascript JavaScript +import { testAgent } from '@adcp/client/testing'; +import { GetMediaBuyDeliveryResponseSchema } from '@adcp/client'; + +// Query by buyer reference instead of media buy ID +const result = await testAgent.getMediaBuyDelivery({ + media_buy_ids: ['acme_q1_campaign_2024', 'acme_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 +import asyncio +from adcp.testing import test_agent +from adcp.types import GetMediaBuyDeliveryRequest + +async def main(): + # Query by buyer reference instead of media buy ID + result = await test_agent.get_media_buy_delivery( + GetMediaBuyDeliveryRequest( + media_buy_ids=['acme_q1_campaign_2024', 'acme_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/client/testing'; +import { GetMediaBuyDeliveryResponseSchema } from '@adcp/client'; + +// 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) | +| **Reach Unit** | Unit of measurement for reach — required when reach is present | +| **Frequency** | Average ad exposures per reach unit | +| **Follows** | New followers, subscribes, or page likes 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`) + +### 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 a `DATE_RANGE_NOT_SUPPORTED` 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.0.13/media-buy/advanced-topics/accountability) for measurement terms and [Optimization and reporting](/dist/docs/3.0.13/media-buy/media-buys/optimization-reporting) for the full lifecycle. + +## Error Handling + +| Error Code | Description | Resolution | +|------------|-------------|------------| +| `AUTH_REQUIRED` | Authentication needed | Provide credentials | +| `MEDIA_BUY_NOT_FOUND` | Media buy doesn't exist | Verify media_buy_id | +| `INVALID_DATE_RANGE` | Invalid start/end dates | Use YYYY-MM-DD format, ensure start < end | +| `DATE_RANGE_NOT_SUPPORTED` | Product only supports lifetime reporting | Omit `start_date` and `end_date`. Check `reporting_capabilities.date_range_support` on the product. | +| `CONTEXT_REQUIRED` | No media buys in context | Provide media_buy_ids explicitly | +| `INVALID_STATUS_FILTER` | Invalid status value | Use valid status: pending_creatives, pending_start, active, paused, completed | + +## 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 + - `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, etc.) + +**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.0.13/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.0.13/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 + } + ] + } + ] +} +``` + +## 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": {}, + "placement": { "limit": 5, "sort_by": "roas" } + } +} +``` + +Each dimension accepts optional `limit` (max rows; defaults to 25 for geo, audience, and placement) and `sort_by` (any value from the `sort-metric` enum, e.g., `spend`, `impressions`, `clicks`, `roas` — defaults to `spend` descending; falls back to `spend` if the seller does not report the requested metric). Geo requires `geo_level` (`country`, `region`, `metro`, `postal_area`) and `system` for metro/postal levels. Each request uses a single geo_level — for multiple granularities (e.g., country and region), make separate requests. Unsupported dimensions are silently omitted from the response, but malformed requests (e.g., geo without `geo_level`) return a validation error. Breakdowns are per-dimension only — cross-dimensional intersections (e.g., device_type × geo) are not supported. + +### Available dimensions + +| Dimension | Breakdown field | Required fields | Capability flag | +|-----------|----------------|-----------------|-----------------| +| Geography | `by_geo` | `geo_level`, `geo_code`, `impressions`, `spend` | `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` | `supports_audience_breakdown` | +| Placement | `by_placement` | `placement_id`, `impressions`, `spend` | `supports_placement_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. + +### 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. Rows are sorted by the requested `sort_by` metric descending. + +### Audience sources + +The `audience_source` field indicates where the audience segment originated: + +| Source | Description | Targetable? | +|--------|-------------|-------------| +| `synced` | Buyer's first-party data via `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.0.13/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.0.13/governance/property/tasks/validate_property_delivery) to catch unauthorized supply paths + +| Governance task | Purpose | +|----------------|---------| +| [`report_plan_outcome`](/dist/docs/3.0.13/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.0.13/governance/property/tasks/validate_property_delivery) | Validate delivery records against property lists — catches ads running on unauthorized properties | +| [`validate_content_delivery`](/dist/docs/3.0.13/governance/content-standards/tasks/validate_content_delivery) | Validate content artifacts against brand suitability standards | +| [`get_plan_audit_logs`](/dist/docs/3.0.13/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.0.13/media-buy/task-reference/update_media_buy) to adjust budgets, pacing, or targeting +2. **Provide Feedback**: Use [`provide_performance_feedback`](/dist/docs/3.0.13/media-buy/task-reference/provide_performance_feedback) to share results with seller +3. **Update Creatives**: Use [`sync_creatives`](/dist/docs/3.0.13/creative/task-reference/sync_creatives) to refresh underperforming assets +4. **Create Follow-Up Campaigns**: Use [`create_media_buy`](/dist/docs/3.0.13/media-buy/task-reference/create_media_buy) based on insights + +## Learn More + +- [Media Buy Lifecycle](/dist/docs/3.0.13/media-buy/media-buys/) - Complete campaign workflow +- [Async Operations](/dist/docs/3.0.13/building/by-layer/L3/async-operations) - Async patterns and status handling +- [Performance Optimization](/dist/docs/3.0.13/media-buy/media-buys/optimization-reporting) - Using delivery data for optimization diff --git a/dist/docs/3.0.13/media-buy/task-reference/get_media_buys.mdx b/dist/docs/3.0.13/media-buy/task-reference/get_media_buys.mdx new file mode 100644 index 0000000000..4a539529eb --- /dev/null +++ b/dist/docs/3.0.13/media-buy/task-reference/get_media_buys.mdx @@ -0,0 +1,412 @@ +--- +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`, 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.0.13/media-buy/specification#account-ownership-vs-creation-surface). + +**Request Schema**: [`/schemas/3.0.13/media-buy/get-media-buys-request.json`](https://adcontextprotocol.org/schemas/3.0.13/media-buy/get-media-buys-request.json) +**Response Schema**: [`/schemas/3.0.13/media-buy/get-media-buys-response.json`](https://adcontextprotocol.org/schemas/3.0.13/media-buy/get-media-buys-response.json) + +## Request Parameters + +| Parameter | Type | Required | Description | +|-----------|------|----------|-------------| +| `account` | [account-ref](/dist/docs/3.0.13/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. | +| `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. | +| `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. + +## 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 + +| Field | Description | +|-------|-------------| +| `media_buy_id` | Seller's media buy identifier | +| `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`) | +| `currency` | ISO 4217 currency for media-buy-level monetary values | +| `total_budget` | Total campaign budget (in `currency`) | +| `creative_deadline` | Creative upload deadline (ISO 8601) | +| `confirmed_at` | ISO 8601 timestamp when the seller confirmed this media buy | +| `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 `update_media_buy` 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). | +| `history` | Revision history entries, most recent first. Only present when `include_history > 0`. Append-only — entries are never modified or deleted. | +| `packages` | Array of packages with creative status and optional snapshots | + +### Package Object + +| Field | Description | +|-------|-------------| +| `package_id` | Seller's package identifier | +| `currency` | Optional package-level currency override (defaults to media buy `currency`) | +| `bid_price` | Current bid price for auction-based packages (in package `currency` if present, otherwise media buy `currency`) | +| `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. | +| `creative_approvals` | Array of creative approval states (see below) | +| `format_ids_pending` | Format IDs from `format_ids_to_provide` not yet uploaded | +| `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`, or `rejected` | +| `rejection_reason` | Explanation of rejection (when `approval_status` is `rejected`) | + +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 assets via [`sync_creatives`](/dist/docs/3.0.13/creative/task-reference/sync_creatives). + +### 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. + +### 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. + +Money fields use this currency precedence: `snapshot.currency` -> `package.currency` -> `media_buy.currency`. + +## 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` | `cancel`, `sync_creatives` | +| `pending_start` | `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). + +## Common Scenarios + +### Check creative approval status + +<CodeGroup> + +```javascript JavaScript +import { testAgent } from '@adcp/client/testing'; +import { GetMediaBuysResponseSchema } from '@adcp/client'; + +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.format_ids_pending?.length > 0) { + console.log(`Package ${pkg.package_id}: missing formats ${pkg.format_ids_pending.map(f => f.id).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 === '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.format_ids_pending: + ids = [f.id for f in pkg.format_ids_pending] + print(f"Package {pkg.package_id}: missing formats {', '.join(ids)}") + + # 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 == '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/client/testing'; +import { GetMediaBuysResponseSchema } from '@adcp/client'; + +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/client/testing'; +import { GetMediaBuysResponseSchema } from '@adcp/client'; + +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.format_ids_pending?.length > 0) { + issues.push(`Package ${pkg.package_id}: ${pkg.format_ids_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.format_ids_pending: + issues.append(f"Package {pkg.package_id}: {len(pkg.format_ids_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` | +|---|---|---| +| **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` | Media buy ID does not exist | Verify `media_buy_id` | +| `CONTEXT_REQUIRED` | No media buys found for the requested scope | Provide valid IDs/refs or broaden `status_filter`/pagination scope | +| `AUTH_REQUIRED` | Authentication needed | Provide credentials | + +## Next Steps + +- **Upload missing creatives**: Use [`sync_creatives`](/dist/docs/3.0.13/creative/task-reference/sync_creatives) for formats in `format_ids_pending` +- **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.0.13/media-buy/task-reference/update_media_buy) to adjust pricing or targeting +- **Detailed reporting**: Use [`get_media_buy_delivery`](/dist/docs/3.0.13/media-buy/task-reference/get_media_buy_delivery) for date-range reporting and daily breakdowns +- **Optimize campaigns**: Use [`provide_performance_feedback`](/dist/docs/3.0.13/media-buy/task-reference/provide_performance_feedback) to share results with the seller diff --git a/dist/docs/3.0.13/media-buy/task-reference/get_products.mdx b/dist/docs/3.0.13/media-buy/task-reference/get_products.mdx new file mode 100644 index 0000000000..cc8a034550 --- /dev/null +++ b/dist/docs/3.0.13/media-buy/task-reference/get_products.mdx @@ -0,0 +1,1363 @@ +--- +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. + +**Authentication**: Optional (returns limited results without credentials) + +**Response Time**: ~60 seconds (AI inference with back-end systems) + +**Request Schema**: [`/schemas/3.0.13/media-buy/get-products-request.json`](https://adcontextprotocol.org/schemas/3.0.13/media-buy/get-products-request.json) +**Response Schema**: [`/schemas/3.0.13/media-buy/get-products-response.json`](https://adcontextprotocol.org/schemas/3.0.13/media-buy/get-products-response.json) + +## Quick Start + +Discover products with a natural language brief: + +<CodeGroup> + +```javascript JavaScript +import { testAgent } from '@adcp/client/testing'; +import { GetProductsResponseSchema } from '@adcp/client'; + +const result = await testAgent.getProducts({ + 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); +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_ids.map(f => f.id).join(', ')}`); +} +``` + +```python Python +import asyncio +from adcp.testing import test_agent + +async def discover_products(): + result = await test_agent.simple.get_products( + buying_mode='brief', + brief='Premium athletic footwear with innovative cushioning', + brand={ + 'domain': 'acmecorp.com' + } + ) + print(f"Found {len(result.products)} products") + +asyncio.run(discover_products()) +``` + +```bash CLI +uvx adcp \ + https://test-agent.adcontextprotocol.org/mcp \ + get_products \ + '{"buying_mode":"brief","brief":"Premium athletic footwear with innovative cushioning","brand":{"domain":"acmecorp.com"}}' \ + --auth $ADCP_AUTH_TOKEN +``` + +</CodeGroup> + +### Using Structured Filters + +You can also use structured filters instead of (or in addition to) a brief. In `brief` mode, filters act as hard constraints on top of the publisher's curation — the brief describes intent, filters enforce requirements: + +<CodeGroup> + +```javascript JavaScript +import { testAgent } from '@adcp/client/testing'; + +const result = await testAgent.getProducts({ + buying_mode: 'wholesale', + 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='wholesale', + 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 | +|-----------|------|----------|-------------| +| `buying_mode` | string | Yes | `"brief"`, `"wholesale"`, or `"refine"`. `"brief"`: publisher curates products from the brief. `"wholesale"`: raw inventory 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"`. | +| `brief` | string | Conditional | Natural language description of campaign requirements. Required when `buying_mode` is `"brief"`. Must not be provided when `buying_mode` is `"wholesale"` or `"refine"`. | +| `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.0.13/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 | Structured filters (see below) | +| `property_list` | PropertyListRef | No | [AdCP 3.0] Reference to a property list for filtering. See [Property Lists](/dist/docs/3.0.13/governance/property/tasks/property_lists) | +| `pagination` | PaginationRequest | No | Cursor-based pagination for large product catalogs (see below) | +| `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"}`. | + +<Note> +**Property Governance** + +The `property_list` filter references a property list created via [`create_property_list`](/dist/docs/3.0.13/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. + +To use property list filtering: +1. Call `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 `property_list_id` to `get_products` to filter inventory + +The seller must declare `features.property_list_filtering: true` in [`get_adcp_capabilities`](/dist/docs/3.0.13/protocol/get_adcp_capabilities) to support this filter. See the [Property Governance overview](/dist/docs/3.0.13/governance/property/index) for the full workflow. +</Note> + +### Filters Object + +| Parameter | Type | Description | +|-----------|------|-------------| +| `delivery_type` | string | Filter by `"guaranteed"` or `"non_guaranteed"` | +| `is_fixed_price` | boolean | Filter for fixed price vs auction products | +| `format_ids` | FormatID[] | Filter by specific format IDs | +| `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[] | Filter by target countries using ISO 3166-1 alpha-2 codes (e.g., `["US", "CA", "GB"]`) | +| `regions` | string[] | Filter by region coverage using ISO 3166-2 codes (e.g., `["US-NY", "GB-SCT"]`). Best for locally-bound inventory | +| `metros` | object[] | Filter by metro coverage. Each entry: `{ system, code }` (e.g., `[{ "system": "nielsen_dma", "code": "501" }]`) | +| `channels` | string[] | Filter by advertising channels (e.g., `["display", "ctv", "social", "streaming_audio"]`). See [Media Channel Taxonomy](/dist/docs/3.0.13/reference/media-channel-taxonomy) | +| `postal_areas` | object[] | Filter by postal area coverage. Each entry: `{ system, values }` (e.g., `[{ "system": "us_zip", "values": ["10001"] }]`) | +| `geo_proximity` | object[] | Filter by proximity to geographic points. Each entry uses exactly one boundary method: `radius`, `travel_time` + `transport_mode`, or `geometry` | +| `keywords` | object[] | Filter by keyword relevance for search/retail media. Each entry: `{ keyword, match_type? }`. `match_type` defaults to `broad` if omitted | +| `required_performance_standards` | [PerformanceStandard[]](/dist/docs/3.0.13/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. | + +### 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.0.13/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`. + +### Products Array + +| Field | Type | Description | +|-------|------|-------------| +| `product_id` | string | Unique product identifier | +| `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_ids` | FormatID[] | Supported creative format IDs | +| `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.0.13/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. | +| `brief_relevance` | string | Why this product matches the brief (when brief provided) | +| `measurement_readiness` | [MeasurementReadiness](/dist/docs/3.0.13/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.0.13/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`. | +| `performance_standards` | [PerformanceStandard[]](/dist/docs/3.0.13/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.0.13/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. | + +### Proposals Array (Optional) + +Publishers may return proposals alongside products - structured media plans with budget allocations. See [Proposals](/dist/docs/3.0.13/media-buy/product-discovery/media-products#proposals) for details. + +| Field | Type | Description | +|-------|------|-------------| +| `proposal_id` | string | Unique identifier for executing this proposal via `create_media_buy` | +| `name` | string | Human-readable name for the media plan | +| `allocations` | ProductAllocation[] | Budget allocations across products (percentages must sum to 100). Each allocation may include optional `start_time` and `end_time` for per-flight scheduling. | +| `forecast` | DeliveryForecast | Aggregate delivery forecast for the proposal. Contains forecast points with metric ranges. See [Delivery Forecasts](/dist/docs/3.0.13/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 | + +### Pagination + +For large product catalogs, use cursor-based pagination: + +| 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 matching products (optional, not all backends support this) | + +Pagination is optional. When omitted, the server returns all results (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. + +### 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. | + +### incomplete array + +When the seller 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. Buyers can use `estimated_wait` to decide whether to retry with a larger 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. | +| `description` | string | Yes | Human-readable explanation of what is missing and why. | +| `estimated_wait` | Duration | No | How much additional time would resolve this scope. | + +**See schema for complete field list**: [`get-products-response.json`](https://adcontextprotocol.org/schemas/3.0.13/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/client/testing'; + +const result = await testAgent.getProducts({ + 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(` Would resolve in ${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( + 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" Would resolve in {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" } + } + ] +} +``` + +### Standard Catalog Discovery + +<CodeGroup> + +```javascript JavaScript +import { testAgent } from '@adcp/client/testing'; + +// wholesale mode: buyer applies their own audiences, no publisher curation +const result = await testAgent.getProducts({ + 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 catalog products`); +} +``` + +```python Python +import asyncio +from adcp.testing import test_agent + +async def discover_standard_catalog(): + # wholesale mode: buyer applies their own audiences, no publisher curation + result = await test_agent.simple.get_products( + buying_mode='wholesale', + brand={ + 'domain': 'acmecorp.com' + }, + filters={ + 'delivery_type': 'non_guaranteed' + } + ) + print(f"Found {len(result.products)} standard catalog products") + +asyncio.run(discover_standard_catalog()) +``` + +</CodeGroup> + +### Multi-Format Discovery + +<CodeGroup> + +```javascript JavaScript +import { testAgent } from '@adcp/client/testing'; + +// Find products supporting both video and display +const result = await testAgent.getProducts({ + 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( + 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/client/testing'; + +// Find products within budget and date range for specific countries and channels +const result = await testAgent.getProducts({ + 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( + 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/client/testing'; + +// Get products with property tags +const result = await testAgent.getProducts({ + 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( + 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/client/testing'; + +// Find guaranteed delivery products for measurement +const result = await testAgent.getProducts({ + 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( + 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/client/testing'; + +// Find products that only accept IAB standard formats +const result = await testAgent.getProducts({ + 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( + 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/client/testing'; + +// Discover retail media products for specific catalog items +const result = await testAgent.getProducts({ + 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( + 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 +uvx adcp \ + https://test-agent.adcontextprotocol.org/mcp \ + get_products \ + '{"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/client/testing'; + +// Filter products by property list from governance agent +const result = await testAgent.getProducts({ + 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( + 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.0.13/media-buy/product-discovery/media-products#property-targeting) for more details and [Property Governance](/dist/docs/3.0.13/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.0.13/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 +{ + "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`. +- **Filters are absolute**, not deltas. Always send the full filter set you want applied. +- **Proposals are ephemeral.** Proposals typically include an `expires_at` timestamp. After expiration, the seller returns `PROPOSAL_EXPIRED`. +- **Product IDs are stable catalog identifiers.** Custom products (`is_custom: true`) may have an `expires_at` timestamp, after which refinement returns `PRODUCT_NOT_FOUND`. + +## Error Handling + +| Error Code | Description | Resolution | +|------------|-------------|------------| +| `AUTH_REQUIRED` | Authentication needed for full catalog | Provide credentials via auth header | +| `INVALID_REQUEST` | Brief too long or malformed filters | Check request parameters | +| `PRODUCT_NOT_FOUND` | One or more referenced product IDs are unknown or expired | Remove invalid IDs and retry, or re-discover with a `brief` request | +| `PROPOSAL_EXPIRED` | A referenced proposal ID has passed its `expires_at` timestamp | Re-discover with a new `brief` or `wholesale` request | +| `POLICY_VIOLATION` | Category blocked for advertiser | See policy response message for details | + +### Authentication Comparison + +See the difference between authenticated and unauthenticated access: + +<CodeGroup> + +```javascript JavaScript +import { testAgent, testAgentNoAuth } from '@adcp/client/testing'; + +// WITH authentication - full catalog with pricing +const fullCatalog = await testAgent.getProducts({ + buying_mode: 'brief', + brief: 'Premium CTV inventory for brand awareness', + brand: { + domain: 'acmecorp.com' + } +}); + +if (!fullCatalog.success) { + throw new Error(`Failed to get products: ${fullCatalog.error}`); +} + +console.log(`With auth: ${fullCatalog.data.products.length} products`); +console.log(`First product pricing: ${fullCatalog.data.products[0].pricing_options.length} options`); + +// WITHOUT authentication - limited public catalog +const publicCatalog = await testAgentNoAuth.getProducts({ + buying_mode: 'brief', + brief: 'Premium CTV inventory for brand awareness', + brand: { + domain: 'acmecorp.com' + } +}); + +if (!publicCatalog.success) { + throw new Error(`Failed to get products: ${publicCatalog.error}`); +} + +console.log(`Without auth: ${publicCatalog.data.products.length} products`); +console.log(`First product pricing: ${publicCatalog.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 catalog with pricing + full_catalog = await test_agent.simple.get_products( + buying_mode='brief', + brief='Premium CTV inventory for brand awareness', + brand={ + 'domain': 'acmecorp.com' + } + ) + + print(f"With auth: {len(full_catalog['products'])} products") + print(f"First product pricing: {len(full_catalog['products'][0]['pricing_options'])} options") + + # WITHOUT authentication - limited public catalog + public_catalog = await test_agent_no_auth.simple.get_products( + buying_mode='brief', + brief='Premium CTV inventory for brand awareness', + brand={ + 'domain': 'acmecorp.com' + } + ) + + print(f"Without auth: {len(public_catalog['products'])} products") + print(f"First product pricing: {len(public_catalog['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 catalog (standard catalog products), no pricing, no custom offerings +- **With credentials**: Returns complete catalog with pricing and custom products + +See [Authentication Guide](/dist/docs/3.0.13/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` and can track progress through webhooks or polling. + +### 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": { + "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) + +For searches requiring deep inventory analysis, configure a webhook: + +```json +POST /api/mcp/call_tool + +{ + "name": "get_products", + "arguments": { + "buying_mode": "brief", + "brief": "Premium inventory across all formats for luxury automotive brand", + "brand": { "domain": "acmecorp.com" }, + "pushNotificationConfig": { + "url": "https://buyer.com/webhooks/adcp/get_products", + "authentication": { + "schemes": ["Bearer"], + "credentials": "secret_token_32_chars" + } + } + } +} + +Response (200 OK): +{ + "status": "working", + "message": "Searching premium inventory across display, video, and audio", + "task_id": "task_456", + "context_id": "ctx_123", + "percentage": 10, + "current_step": "searching_inventory" +} + +// Later, 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) + +```json +POST /api/a2a + +{ + "message": { + "role": "user", + "parts": [{ + "kind": "data", + "data": { + "skill": "get_products", + "parameters": { + "buying_mode": "brief", + "brief": "CTV inventory for sports audience", + "brand": { "domain": "acmecorp.com" } + } + } + }] + } +} + +Response (200 OK): +{ + "id": "task_123", + "contextId": "ctx_456", + "artifact": { + "kind": "data", + "data": { + "products": [...] + } + }, + "status": { + "state": "completed", + "message": { + "role": "agent", + "parts": [{ "text": "Found 3 products matching your requirements" }] + } + } +} +``` + +#### Needs Clarification + +Real-time updates via SSE when clarification is needed: + +```json +// Initial response +{ + "id": "task_789", + "contextId": "ctx_123", + "status": { + "state": "input-required", + "message": { + "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 follow-up +POST /api/a2a + +{ + "contextId": "ctx_123", + "message": { + "role": "user", + "parts": [{ "text": "Budget is $75K for a 3-week campaign in March" }] + } +} + +// SSE update: task completed +{ + "id": "task_789", + "contextId": "ctx_123", + "artifact": { + "kind": "data", + "data": { "products": [...] } + }, + "status": { + "state": "completed", + "message": { + "role": "agent", + "parts": [{ "text": "Perfect! Found 5 products within your budget" }] + } + } +} +``` + +#### Complex Search (With Webhook) + +Configure push notifications for long searches: + +```json +POST /api/a2a + +{ + "message": { + "role": "user", + "parts": [{ + "kind": "data", + "data": { + "skill": "get_products", + "parameters": { + "buying_mode": "brief", + "brief": "Premium inventory across all formats for luxury automotive brand", + "brand": { "domain": "acmecorp.com" } + } + } + }] + }, + "pushNotificationConfig": { + "url": "https://buyer.com/webhooks/a2a/get_products", + "authentication": { + "schemes": ["bearer"], + "credentials": "secret_token_32_chars" + } + } +} + +Response (200 OK): +{ + "id": "task_456", + "contextId": "ctx_789", + "status": { + "state": "working", + "message": { + "role": "agent", + "parts": [ + { "text": "Searching premium inventory across display, video, and audio" }, + { + "data": { + "percentage": 10, + "current_step": "searching_inventory" + } + } + ] + } + } +} + +// Later, webhook POST to https://buyer.com/webhooks/a2a/get_products +{ + "id": "task_456", + "contextId": "ctx_789", + "artifact": { + "kind": "data", + "data": { + "products": [...] + } + }, + "status": { + "state": "completed", + "message": { + "role": "agent", + "parts": [ + { "text": "Found 12 premium products across all formats" }, + { + "data": { + "products": [...] + } + } + ] + }, + "timestamp": "2025-01-22T10:30:00Z" + } +} +``` + +</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 for webhook or poll for updates | +| `submitted` | Custom curation queued | Wait for webhook notification | +| `failed` | Search couldn't complete | Check error message, adjust brief | + +**Note:** For the complete status list see [Task Lifecycle](/dist/docs/3.0.13/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.0.13/media-buy/task-reference/create_media_buy) to execute campaign +3. **Prepare Creatives**: Use [`list_creative_formats`](/dist/docs/3.0.13/creative/task-reference/list_creative_formats) to see format requirements +4. **Upload Assets**: Use [`sync_creatives`](/dist/docs/3.0.13/creative/task-reference/sync_creatives) to provide creative assets + +## Learn More + +- [Product Discovery Guide](/dist/docs/3.0.13/media-buy/product-discovery/) - Understanding briefs and products +- [Pricing Models](/dist/docs/3.0.13/media-buy/advanced-topics/pricing-models) - CPM, CPCV, CPP explained +- [Brief Expectations](/dist/docs/3.0.13/media-buy/product-discovery/brief-expectations) - How to write effective briefs +- [Media Products](/dist/docs/3.0.13/media-buy/product-discovery/media-products) - Product structure and fields diff --git a/dist/docs/3.0.13/media-buy/task-reference/index.mdx b/dist/docs/3.0.13/media-buy/task-reference/index.mdx new file mode 100644 index 0000000000..ce33a00d0c --- /dev/null +++ b/dist/docs/3.0.13/media-buy/task-reference/index.mdx @@ -0,0 +1,165 @@ +--- +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 | +|------|---------|---------------|-------| +| [`get_products`](/dist/docs/3.0.13/media-buy/task-reference/get_products) | Discover inventory and refine products | ~60s | Discovery | +| [`create_media_buy`](/dist/docs/3.0.13/media-buy/task-reference/create_media_buy) | Create campaigns from selected products | Minutes-Days | Media Buys | +| [`update_media_buy`](/dist/docs/3.0.13/media-buy/task-reference/update_media_buy) | Modify campaign settings and budgets | Minutes-Days | Media Buys | +| [`list_creative_formats`](/dist/docs/3.0.13/creative/task-reference/list_creative_formats) | View supported creative specifications | ~1s | Capability | +| [`sync_catalogs`](/dist/docs/3.0.13/media-buy/task-reference/sync_catalogs) | Sync catalog feeds (products, stores, inventory) | Minutes-Days | Catalogs | +| [`sync_creatives`](/dist/docs/3.0.13/creative/task-reference/sync_creatives) | Upload and manage creative assets | Minutes-Days | Creatives | +| [`list_creatives`](/dist/docs/3.0.13/creative/task-reference/list_creatives) | Query creative library with filtering | ~1s | Creatives | +| [`get_media_buys`](/dist/docs/3.0.13/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.0.13/media-buy/task-reference/get_media_buy_delivery) | Retrieve performance and delivery data | ~60s | Reporting | +| [`provide_performance_feedback`](/dist/docs/3.0.13/media-buy/task-reference/provide_performance_feedback) | Submit performance signals for optimization | ~1s | Optimization | +| [`sync_event_sources`](/dist/docs/3.0.13/media-buy/task-reference/sync_event_sources) | Configure event sources for conversion tracking | ~1s | Conversion Tracking | +| [`log_event`](/dist/docs/3.0.13/media-buy/task-reference/log_event) | Send marketing events for attribution | ~1s | Conversion Tracking | +| [`sync_audiences`](/dist/docs/3.0.13/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_creative_formats`](/dist/docs/3.0.13/creative/task-reference/list_creative_formats) - Format specifications +- [`list_creatives`](/dist/docs/3.0.13/creative/task-reference/list_creatives) - Creative library queries +- [`get_media_buys`](/dist/docs/3.0.13/media-buy/task-reference/get_media_buys) - Media buy status and creative approvals +- [`provide_performance_feedback`](/dist/docs/3.0.13/media-buy/task-reference/provide_performance_feedback) - Performance signal submission +- [`sync_event_sources`](/dist/docs/3.0.13/media-buy/task-reference/sync_event_sources) - Event source configuration +- [`log_event`](/dist/docs/3.0.13/media-buy/task-reference/log_event) - Event ingestion + +### 🟡 Processing (~60 seconds) +**AI/LLM inference with backend systems** +- [`get_products`](/dist/docs/3.0.13/media-buy/task-reference/get_products) - Natural language product discovery and refinement +- [`get_media_buy_delivery`](/dist/docs/3.0.13/media-buy/task-reference/get_media_buy_delivery) - Performance data aggregation + +### 🟠 Asynchronous (Minutes to Days) +**Complex operations with potential human approval** +- [`create_media_buy`](/dist/docs/3.0.13/media-buy/task-reference/create_media_buy) - Campaign creation and validation +- [`update_media_buy`](/dist/docs/3.0.13/media-buy/task-reference/update_media_buy) - Campaign modifications +- [`sync_catalogs`](/dist/docs/3.0.13/media-buy/task-reference/sync_catalogs) - Catalog feed processing and review +- [`sync_creatives`](/dist/docs/3.0.13/creative/task-reference/sync_creatives) - Creative asset processing +- [`sync_audiences`](/dist/docs/3.0.13/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.0.13/accounts/tasks/sync_accounts)** - Declare brand/operator pairs and billing; seller provisions accounts +- **[`list_accounts`](/dist/docs/3.0.13/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.0.13/protocol/get_adcp_capabilities)** - Discover agent capabilities, portfolio, and supported features (protocol-level task) +- **[`get_products`](/dist/docs/3.0.13/media-buy/task-reference/get_products)** - The core discovery task using natural language briefs +- **[`list_creative_formats`](/dist/docs/3.0.13/creative/task-reference/list_creative_formats)** - Understand creative requirements + +### Media Buy Management +Create and manage your advertising campaigns. + +- **[`create_media_buy`](/dist/docs/3.0.13/media-buy/task-reference/create_media_buy)** - Create campaigns from discovered products +- **[`update_media_buy`](/dist/docs/3.0.13/media-buy/task-reference/update_media_buy)** - Modify budgets, targeting, and settings + +### Catalog Management +Sync product feeds, inventory, and store data to seller accounts. + +- **[`sync_catalogs`](/dist/docs/3.0.13/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.0.13/creative/task-reference/sync_creatives)** - Upload assets to an agent-hosted creative library +- **[`list_creatives`](/dist/docs/3.0.13/creative/task-reference/list_creatives)** - Search and manage your creative library (creative protocol) + +### Performance & Optimization +Monitor and optimize campaign performance. + +- **[`get_media_buys`](/dist/docs/3.0.13/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.0.13/media-buy/task-reference/get_media_buy_delivery)** - Track delivery and performance metrics for reporting +- **[`provide_performance_feedback`](/dist/docs/3.0.13/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.0.13/media-buy/task-reference/sync_event_sources)** - Configure event sources on seller accounts +- **[`log_event`](/dist/docs/3.0.13/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.0.13/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.0.13/media-buy/[task-name]-request.json` +- **Response Schemas**: `/schemas/3.0.13/media-buy/[task-name]-response.json` + +**Task Management**: For tracking async operations across all AdCP domains, see [Task Lifecycle](/dist/docs/3.0.13/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_products`, `get_media_buys`, `get_media_buy_delivery`) +- `list_*`: Enumerate collections with optional filtering (for example `list_creative_formats`, `list_creatives`) +- `create_*`: Create new resources (`create_media_buy`) +- `update_*`: Apply partial updates to existing resources (`update_media_buy`) +- `sync_*`: Reconcile external state into seller systems with upsert-like behavior (`sync_catalogs`, `sync_creatives`, `sync_event_sources`) +- `log_*`: Ingest append-only event records (`log_event`) +- `provide_*`: Submit optimization or feedback signals (`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**: Use [`get_adcp_capabilities`](/dist/docs/3.0.13/protocol/get_adcp_capabilities) to understand what the agent supports +2. **Find Inventory**: Use [`get_products`](/dist/docs/3.0.13/media-buy/task-reference/get_products) to find relevant inventory +3. **Refine Products**: Re-call [`get_products`](/dist/docs/3.0.13/media-buy/task-reference/get_products) with `buying_mode: "refine"` to iterate on budgets, pricing, and targeting +4. **Understand Formats**: Check [`list_creative_formats`](/dist/docs/3.0.13/creative/task-reference/list_creative_formats) for requirements +5. **Sync Catalogs**: Use [`sync_catalogs`](/dist/docs/3.0.13/media-buy/task-reference/sync_catalogs) to push product feeds to the account +6. **Upload Creatives**: Use [`sync_creatives`](/dist/docs/3.0.13/creative/task-reference/sync_creatives) for asset management +7. **Create Campaign**: Use [`create_media_buy`](/dist/docs/3.0.13/media-buy/task-reference/create_media_buy) with selected products +8. **Check Operational State**: Use [`get_media_buys`](/dist/docs/3.0.13/media-buy/task-reference/get_media_buys) for status, approvals, and missing formats +9. **Monitor Performance**: Track reporting metrics with [`get_media_buy_delivery`](/dist/docs/3.0.13/media-buy/task-reference/get_media_buy_delivery) + +For reporting and reconciliation, treat [`get_media_buy_delivery`](/dist/docs/3.0.13/media-buy/task-reference/get_media_buy_delivery) as the authoritative, billing-grade source. Use [`get_media_buys`](/dist/docs/3.0.13/media-buy/task-reference/get_media_buys) snapshots for operational monitoring only. + +## Related Documentation + +- **[Product Discovery](/dist/docs/3.0.13/media-buy/product-discovery/)** - Natural language inventory discovery +- **[Media Buys](/dist/docs/3.0.13/media-buy/media-buys/)** - Campaign lifecycle management +- **[Creatives](/dist/docs/3.0.13/media-buy/creatives/)** - Creative asset management +- **[Advanced Topics](/dist/docs/3.0.13/media-buy/advanced-topics/)** - Targeting, security, and architecture diff --git a/dist/docs/3.0.13/media-buy/task-reference/log_event.mdx b/dist/docs/3.0.13/media-buy/task-reference/log_event.mdx new file mode 100644 index 0000000000..4e53ee70cf --- /dev/null +++ b/dist/docs/3.0.13/media-buy/task-reference/log_event.mdx @@ -0,0 +1,532 @@ +--- +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.0.13/media-buy/log-event-request.json`](https://adcontextprotocol.org/schemas/3.0.13/media-buy/log-event-request.json) +**Response Schema**: [`/schemas/3.0.13/media-buy/log-event-response.json`](https://adcontextprotocol.org/schemas/3.0.13/media-buy/log-event-response.json) + +## Quick Start + +Log a purchase event: + +<CodeGroup> + +```javascript JavaScript +import { testAgent } from "@adcp/client/testing"; +import { LogEventResponseSchema } from "@adcp/client"; + +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` | +| `events` | [Event](/dist/docs/3.0.13/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.0.13/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.0.13/media-buy/conversion-tracking/#user-match) | No | User identifiers for attribution matching | +| `custom_data` | [CustomData](/dist/docs/3.0.13/media-buy/conversion-tracking/#custom-data) | No | Event-specific data (value, currency, items) | +| `action_source` | [ActionSource](/dist/docs/3.0.13/media-buy/conversion-tracking/#action-sources) | No | Where the event occurred (`website`, `app`, `in_store`, etc.) | +| `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 | +| `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. 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.0.13/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 | +| `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 + +### Batch Events + +Send multiple events in a single request: + +<CodeGroup> + +```javascript JavaScript +import { testAgent } from "@adcp/client/testing"; +import { LogEventResponseSchema } from "@adcp/client"; + +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/client/testing"; +import { LogEventResponseSchema } from "@adcp/client"; + +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/client/testing"; +import { LogEventResponseSchema } from "@adcp/client"; + +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` | Event source not configured or not accessible (`error.field` = `event_source_id`) | Run `sync_event_sources` first | +| `INVALID_EVENT_TYPE` | Unrecognized or disallowed event type | Check event source's `event_types` configuration | +| `INVALID_EVENT_TIME` | Event time too far in the past/future | Use timestamps within the seller's attribution window | +| `MISSING_USER_MATCH` | No user identifiers provided | Include at least one of: uids, hashed_email, hashed_phone, click_id, or client_ip + client_user_agent | +| `BATCH_TOO_LARGE` | More than 10,000 events | Split into smaller batches | +| `RATE_LIMITED` | Too many requests | Wait and retry with exponential backoff | + +## Best Practices + +1. **Configure sources first** - Always run `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 value and currency** - For purchase events, always include `custom_data.value` and `custom_data.currency` to enable ROAS reporting and optimization. + +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.0.13/media-buy/conversion-tracking/) - Data model, optimization goals, and the end-to-end flow +- [sync_event_sources](/dist/docs/3.0.13/media-buy/task-reference/sync_event_sources) - Configure event sources before logging events +- [create_media_buy](/dist/docs/3.0.13/media-buy/task-reference/create_media_buy#campaign-with-conversion-optimization) - Set optimization goals on packages +- [get_media_buy_delivery](/dist/docs/3.0.13/media-buy/task-reference/get_media_buy_delivery) - Monitor conversion metrics in delivery reports diff --git a/dist/docs/3.0.13/media-buy/task-reference/provide_performance_feedback.mdx b/dist/docs/3.0.13/media-buy/task-reference/provide_performance_feedback.mdx new file mode 100644 index 0000000000..ab202352e2 --- /dev/null +++ b/dist/docs/3.0.13/media-buy/task-reference/provide_performance_feedback.mdx @@ -0,0 +1,396 @@ +--- +title: provide_performance_feedback +description: "provide_performance_feedback task — share normalized performance scores with AdCP publishers so sellers can optimize delivery based on buyer-observed outcomes." +"og:title": "AdCP — provide_performance_feedback" +--- + + +Share performance outcomes with publishers to enable data-driven optimization and improved campaign delivery. + +**Response Time**: ~5 seconds (data ingestion) + +**Request Schema**: [`https://adcontextprotocol.org/schemas/3.0.13/media-buy/provide-performance-feedback-request.json`](https://adcontextprotocol.org/schemas/3.0.13/media-buy/provide-performance-feedback-request.json) +**Response Schema**: [`https://adcontextprotocol.org/schemas/3.0.13/media-buy/provide-performance-feedback-response.json`](https://adcontextprotocol.org/schemas/3.0.13/media-buy/provide-performance-feedback-response.json) + +## Request Parameters + +| Parameter | Type | Required | Description | +|-----------|------|----------|-------------| +| `media_buy_id` | string | Yes | Seller's media buy identifier | +| `measurement_period` | object | Yes | Time period for performance measurement | +| `performance_index` | number | Yes | Normalized performance score (0.0 = no value, 1.0 = expected, >1.0 = above expected) | +| `package_id` | string | No | Specific package within the media buy (if feedback is package-specific) | +| `creative_id` | string | No | Specific creative asset (if feedback is creative-specific) | +| `metric_type` | string | No | The business metric being measured (defaults to "overall_performance") | +| `feedback_source` | string | No | Source of the performance data (defaults to "buyer_attribution") | + +## Response (Message) + +The response includes a human-readable message that: +- Confirms receipt of the performance feedback +- Summarizes the performance level provided +- Explains how the feedback will be used for optimization +- Provides next steps or recommendations + +The message is returned differently in each protocol: +- **MCP**: Returned as a `message` field in the JSON response +- **A2A**: Returned as a text part in the artifact + +## Response (Payload) + +```json +{ + "success": "boolean", + "message": "string" +} +``` + +### Field Descriptions + +- **success**: Whether the performance feedback was successfully received +- **message**: Optional human-readable message about the feedback processing + +## Protocol-Specific Examples + +The AdCP payload is identical across protocols. Only the request/response wrapper differs. + +### MCP Request +```json +{ + "tool": "provide_performance_feedback", + "arguments": { + "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" + } +} +``` + +### MCP Response +```json +{ + "message": "Performance feedback received for campaign gam_1234567890. The 35% above-expected conversion rate will be used to optimize future delivery. Next optimization cycle runs tonight at midnight UTC.", + "success": true +} +``` + +### A2A Request + +#### Natural Language Invocation +```javascript +await a2a.send({ + message: { + parts: [{ + kind: "text", + text: "The campaign gam_1234567890 had a conversion rate 35% above expectations for the week of January 15-21. Please use this to optimize future delivery." + }] + } +}); +``` + +#### Explicit Skill Invocation +```javascript +await a2a.send({ + message: { + parts: [{ + kind: "data", + data: { + skill: "provide_performance_feedback", + parameters: { + 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" + } + } + }] + } +}); +``` + +### A2A Response +A2A returns results as artifacts: +```json +{ + "artifacts": [{ + "artifactId": "artifact-perf-feedback-abc789", + "name": "performance_feedback_confirmation", + "parts": [ + { + "kind": "text", + "text": "Performance feedback received for campaign gam_1234567890. The 35% above-expected conversion rate will be used to optimize future delivery. Next optimization cycle runs tonight at midnight UTC." + }, + { + "kind": "data", + "data": { + "success": true + } + } + ] + }] +} +``` + +### Key Differences +- **MCP**: Direct tool call with arguments, returns flat JSON response +- **A2A**: Skill invocation with input, returns artifacts with text and data parts +- **Payload**: The `input` field in A2A contains the exact same structure as MCP's `arguments` + +## Scenarios + +### Example 1: Campaign-Level Performance Feedback + +#### Request +```json +{ + "$schema": "/schemas/3.0.13/media-buy/provide-performance-feedback-request.json", + "idempotency_key": "c7d8e9f0-a1b2-4345-c678-345678901234", + "media_buy_id": "gam_1234567890", + "measurement_period": { + "start": "2024-01-01T00:00:00Z", + "end": "2024-01-31T23:59:59Z" + }, + "performance_index": 0.85, + "metric_type": "brand_lift", + "feedback_source": "third_party_measurement" +} +``` + +#### Response - Below Expected Performance +**Message**: "Performance feedback received for campaign gam_1234567890. The 15% below-expected brand lift suggests targeting refinement is needed. Our optimization algorithms will reduce spend on underperforming segments starting with the next cycle." + +**Payload**: +```json +{ + "$schema": "/schemas/3.0.13/media-buy/provide-performance-feedback-response.json", + "success": true, + "message": "Performance feedback processed successfully. Optimization algorithms updated." +} +``` + +### Example 2: Package-Specific Performance Feedback + +#### Request +```json +{ + "$schema": "/schemas/3.0.13/media-buy/provide-performance-feedback-request.json", + "idempotency_key": "d8e9f0a1-b2c3-4456-d789-456789012345", + "media_buy_id": "meta_9876543210", + "package_id": "pkg_social_feed", + "measurement_period": { + "start": "2024-02-01T00:00:00Z", + "end": "2024-02-07T23:59:59Z" + }, + "performance_index": 2.1, + "metric_type": "click_through_rate", + "feedback_source": "buyer_attribution" +} +``` + +#### Response - Exceptional Performance +**Message**: "Outstanding performance feedback for package pkg_social_feed! The 110% above-expected click-through rate indicates this audience segment is highly engaged. We'll increase allocation to similar inventory and audiences." + +**Payload**: +```json +{ + "$schema": "/schemas/3.0.13/media-buy/provide-performance-feedback-response.json", + "success": true, + "message": "Exceptional performance noted. Increasing allocation to similar segments." +} +``` + +### Example 3: Creative-Specific Performance Feedback + +#### Request +```json +{ + "$schema": "/schemas/3.0.13/media-buy/provide-performance-feedback-request.json", + "idempotency_key": "e9f0a1b2-c3d4-4567-e890-567890123456", + "media_buy_id": "ttd_5555555555", + "creative_id": "creative_video_123", + "measurement_period": { + "start": "2024-02-01T00:00:00Z", + "end": "2024-02-07T23:59:59Z" + }, + "performance_index": 0.65, + "metric_type": "completion_rate", + "feedback_source": "verification_partner" +} +``` + +#### Response - Poor Creative Performance +**Message**: "Creative creative_video_123 shows 35% below-expected completion rate. Consider creative refresh or A/B testing alternative versions." + +**Payload**: +```json +{ + "$schema": "/schemas/3.0.13/media-buy/provide-performance-feedback-response.json", + "success": true, + "message": "Creative performance feedback recorded. Consider creative optimization." +} +``` + +### Example 4: Multiple Performance Metrics + +To report multiple metrics for the same media buy, send one request per metric type: + +#### Request - Viewability Feedback +```json +{ + "$schema": "/schemas/3.0.13/media-buy/provide-performance-feedback-request.json", + "idempotency_key": "f0a1b2c3-d4e5-4678-f901-678901234567", + "media_buy_id": "ttd_5555555555", + "measurement_period": { + "start": "2024-02-01T00:00:00Z", + "end": "2024-02-14T23:59:59Z" + }, + "metric_type": "viewability", + "performance_index": 1.15, + "feedback_source": "verification_partner" +} +``` + +#### Request - Completion Rate Feedback +```json +{ + "$schema": "/schemas/3.0.13/media-buy/provide-performance-feedback-request.json", + "idempotency_key": "a1b2c3d4-e5f6-4789-a012-789012345678", + "media_buy_id": "ttd_5555555555", + "measurement_period": { + "start": "2024-02-01T00:00:00Z", + "end": "2024-02-14T23:59:59Z" + }, + "metric_type": "completion_rate", + "performance_index": 0.92, + "feedback_source": "verification_partner" +} +``` + +#### Request - Brand Safety Feedback +```json +{ + "$schema": "/schemas/3.0.13/media-buy/provide-performance-feedback-request.json", + "idempotency_key": "b2c3d4e5-f6a7-4890-b123-890123456789", + "media_buy_id": "ttd_5555555555", + "measurement_period": { + "start": "2024-02-01T00:00:00Z", + "end": "2024-02-14T23:59:59Z" + }, + "metric_type": "brand_safety", + "performance_index": 1.05, + "feedback_source": "verification_partner" +} +``` + +## Performance Index Scale + +The performance index provides a normalized way to communicate business outcomes: + +- **0.0**: No measurable value or impact +- **0.5**: Significantly below expectations (-50%) +- **1.0**: Meets baseline expectations (0% variance) +- **1.5**: Exceeds expectations by 50% +- **2.0+**: Exceptional performance (100%+ above expected) + +### Common Metric Types + +- **overall_performance**: General campaign success (default) +- **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 + +### Feedback Sources + +- **buyer_attribution**: Buyer's own measurement and attribution +- **third_party_measurement**: Independent measurement partner +- **platform_analytics**: Publisher platform's analytics +- **verification_partner**: Third-party verification service + +## How Publishers Use Performance Feedback + +Publishers leverage performance indices to: + +1. **Optimize Targeting**: Shift impressions to high-performing segments and audiences +2. **Improve Inventory**: Identify and prioritize high-value placements +3. **Adjust Pricing**: Update CPMs based on proven value delivery +4. **Enhance Algorithms**: Train machine learning models on actual business outcomes +5. **Product Development**: Refine product definitions based on performance patterns + +## Usage Notes + +- Performance feedback is optional but highly valuable for optimization +- Feedback can be provided at campaign or package level +- Multiple performance indices can be shared for the same period (batch submission planned for future releases) +- Optimization impact depends on the publisher's algorithm sophistication +- Feedback is processed asynchronously; status can be checked via the response +- Historical feedback helps improve future campaign performance across the publisher's inventory + +## 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 +- Publishers should provide clear data usage policies in their AdCP documentation + +## Implementation Guide + +### Calculating Performance Index + +```python +def calculate_performance_index(actual_metric, expected_metric): + """ + Calculate normalized performance index + + Args: + actual_metric: Measured performance value + expected_metric: Baseline or expected performance value + + Returns: + Performance index (0.0 = no value, 1.0 = expected, >1.0 = above expected) + """ + if expected_metric == 0: + return 0.0 + + return actual_metric / expected_metric + +# Examples: +# CTR: 0.15% actual vs 0.12% expected = 1.25 performance index (25% above) +# Conversions: 45 actual vs 60 expected = 0.75 performance index (25% below) +# Brand lift: 8% actual vs 5% expected = 1.6 performance index (60% above) +``` + +### Determining Metric Types + +Choose metric types based on campaign objectives: + +```python +METRIC_TYPE_MAPPING = { + 'awareness': 'brand_lift', + 'consideration': 'brand_lift', + 'traffic': 'click_through_rate', + 'conversions': 'conversion_rate', + 'sales': 'conversion_rate', + 'engagement': 'completion_rate', + 'reach': 'overall_performance' +} + +def get_metric_type(campaign_objective): + return METRIC_TYPE_MAPPING.get(campaign_objective, 'overall_performance') +``` + +## Related Documentation + +- [`get_media_buy_delivery`](/dist/docs/3.0.13/media-buy/task-reference/get_media_buy_delivery) - Retrieve delivery metrics +- [Optimization & Reporting](/dist/docs/3.0.13/media-buy/media-buys/optimization-reporting) - Performance feedback concepts +- [Targeting](/dist/docs/3.0.13/media-buy/advanced-topics/targeting) - Understanding targeting for optimization \ No newline at end of file diff --git a/dist/docs/3.0.13/media-buy/task-reference/sync_audiences.mdx b/dist/docs/3.0.13/media-buy/task-reference/sync_audiences.mdx new file mode 100644 index 0000000000..48a54b0e15 --- /dev/null +++ b/dist/docs/3.0.13/media-buy/task-reference/sync_audiences.mdx @@ -0,0 +1,550 @@ +--- +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` targeting overlays for explicit retargeting or suppression. + +Audiences are distinct from [signals](/dist/docs/3.0.13/signals/): signals are third-party data products you discover and activate; 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. 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. 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. + +**Request Schema**: [`/schemas/3.0.13/media-buy/sync-audiences-request.json`](https://adcontextprotocol.org/schemas/3.0.13/media-buy/sync-audiences-request.json) +**Response Schema**: [`/schemas/3.0.13/media-buy/sync-audiences-response.json`](https://adcontextprotocol.org/schemas/3.0.13/media-buy/sync-audiences-response.json) + +## Quick Start + +Upload a customer list and check its status: + +<CodeGroup> + +```javascript JavaScript +import { testAgent } from "@adcp/client/testing"; +import { SyncAudiencesResponseSchema } from "@adcp/client"; +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); + +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} (${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')}, + ] + }] + ) + + 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}: {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.0.13/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` → `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 + +**Success Response:** + +- `audiences` — Results for each audience on the account, including audiences not in this request + +**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 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/client/testing"; +import { SyncAudiencesResponseSchema } from "@adcp/client"; + +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/client/testing"; +import { SyncAudiencesResponseSchema } from "@adcp/client"; +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/client/testing"; +import { SyncAudiencesResponseSchema } from "@adcp/client"; +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/client/testing"; +import { SyncAudiencesResponseSchema } from "@adcp/client"; + +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` 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` → `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. Use `tasks/get` with the `task_id` to check task status — 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`. + +## 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.0.13/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` | Account does not exist | Verify `account_id` | +| `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_HASH_FORMAT` | Identifier doesn't match expected hash format | Verify SHA-256 hex encoding (64 chars, lowercase) | +| `RATE_LIMITED` | Too many sync requests | Retry with exponential backoff; poll no more than every 15 minutes | +| `CALL_TOO_LARGE` | Too many members in payload | Payloads are limited to 100,000 members across all audiences | + +## Next Steps + +- [Targeting](/dist/docs/3.0.13/media-buy/advanced-topics/targeting) — Reference audiences in `targeting_overlay.audience_include` and `audience_exclude` +- [create_media_buy](/dist/docs/3.0.13/media-buy/task-reference/create_media_buy) — Apply audience targeting to packages +- [Conversion Tracking](/dist/docs/3.0.13/media-buy/conversion-tracking/) — Track outcomes from audience-targeted campaigns diff --git a/dist/docs/3.0.13/media-buy/task-reference/sync_catalogs.mdx b/dist/docs/3.0.13/media-buy/task-reference/sync_catalogs.mdx new file mode 100644 index 0000000000..3cb0529685 --- /dev/null +++ b/dist/docs/3.0.13/media-buy/task-reference/sync_catalogs.mdx @@ -0,0 +1,266 @@ +--- +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 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, and discovery of existing catalogs. + +**Response Time**: Instant to days (returns `completed` for small catalogs, or `submitted` for large feeds requiring platform review) + +**Request Schema**: [`/schemas/3.0.13/media-buy/sync-catalogs-request.json`](https://adcontextprotocol.org/schemas/3.0.13/media-buy/sync-catalogs-request.json) +**Response Schema**: [`/schemas/3.0.13/media-buy/sync-catalogs-response.json`](https://adcontextprotocol.org/schemas/3.0.13/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.0.13/building/by-layer/L2/account-state): + +1. `list_creative_formats` — check `catalog` asset types in each format's `assets` array to know what feeds to sync +2. **`sync_catalogs`** — push the required feeds to the account +3. `sync_creatives` — submit creatives that reference synced catalogs by `catalog_id` +4. `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.0.13/building/by-layer/L2/accounts-and-agents#account-references) | Conditional | Account reference. Pass `{ "account_id": "..." }` or `{ "brand": {...}, "operator": "..." }` if the seller supports implicit resolution. Required when the agent has multiple accounts. | +| `catalogs` | Catalog[] | No | Catalog feeds to sync (max 50). Omit for discovery mode. | +| `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) fails entire sync on any error. `"lenient"` processes valid catalogs and reports errors. | +| `push_notification_config` | object | No | Webhook configuration for async completion notification. | + +### Catalog object + +Each catalog in the `catalogs` array is a [Catalog](/dist/docs/3.0.13/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[].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) | + +**Error response** — operation failed entirely: + +| Field | Type | Description | +|-------|------|-------------| +| `errors` | Error[] | Operation-level errors (auth failure, service unavailable) | + +Responses use discriminated unions — you get either `catalogs` or `errors`, never both. + +### 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` 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` | 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 | +| `FEED_FETCH_FAILED` | Platform couldn't fetch the feed URL | Check URL accessibility, authentication, and feed format | +| `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` | Items failed schema validation | Check `item_issues` for per-item rejection reasons | +| `CATALOG_LIMIT_EXCEEDED` | Account has reached maximum catalog count | Remove unused catalogs or contact seller | + +## Best practices + +1. **Check format requirements first** — Call `list_creative_formats` and check `catalog` asset types in each format's `assets` array 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.0.13/creative/catalogs) — Complete documentation on catalog types, sourcing, and format requirements +- [Account state](/dist/docs/3.0.13/building/by-layer/L2/account-state) — How catalogs fit into the account setup sequence +- [sync_creatives](/dist/docs/3.0.13/creative/task-reference/sync_creatives) — Submit creatives that reference synced catalogs +- [list_creative_formats](/dist/docs/3.0.13/creative/task-reference/list_creative_formats) — Discover format catalog requirements diff --git a/dist/docs/3.0.13/media-buy/task-reference/sync_event_sources.mdx b/dist/docs/3.0.13/media-buy/task-reference/sync_event_sources.mdx new file mode 100644 index 0000000000..3ab8f8dccd --- /dev/null +++ b/dist/docs/3.0.13/media-buy/task-reference/sync_event_sources.mdx @@ -0,0 +1,450 @@ +--- +title: sync_event_sources +description: "sync_event_sources task — configure website pixels, mobile SDKs, and server-to-server 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. Supports upsert semantics, seller-managed sources, and setup instructions. + +**Response Time**: ~1s (synchronous configuration) + +**Request Schema**: [`/schemas/3.0.13/media-buy/sync-event-sources-request.json`](https://adcontextprotocol.org/schemas/3.0.13/media-buy/sync-event-sources-request.json) +**Response Schema**: [`/schemas/3.0.13/media-buy/sync-event-sources-response.json`](https://adcontextprotocol.org/schemas/3.0.13/media-buy/sync-event-sources-response.json) + +## Quick Start + +Configure an event source for purchase tracking: + +<CodeGroup> + +```javascript JavaScript +import { testAgent } from "@adcp/client/testing"; +import { SyncEventSourcesResponseSchema } from "@adcp/client"; + +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.0.13/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.0.13/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.0.13/media-buy/conversion-tracking/#event-types)[] | No | Event types this source handles. If omitted, accepts all event types. | +| `allowed_domains` | string[] | No | Domains authorized to send events for this source | + +## 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.) +- `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"`) + +**See schema for complete field list**: [sync-event-sources-response.json](https://adcontextprotocol.org/schemas/3.0.13/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/client/testing"; +import { SyncEventSourcesResponseSchema } from "@adcp/client"; + +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/client/testing"; +import { SyncEventSourcesResponseSchema } from "@adcp/client"; + +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. + +### Clean Sync with delete_missing + +Replace all buyer-managed event sources on the account: + +<CodeGroup> + +```javascript JavaScript +import { testAgent } from "@adcp/client/testing"; +import { SyncEventSourcesResponseSchema } from "@adcp/client"; + +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` API directly | + +## Error Handling + +| Error Code | Description | Resolution | +|------------|-------------|------------| +| `ACCOUNT_NOT_FOUND` | Account does not exist | Verify `account_id` from account setup | +| `INVALID_EVENT_TYPE` | Unrecognized event type | Check seller's `supported_event_types` in `get_adcp_capabilities` | +| `DUPLICATE_EVENT_SOURCE_ID` | Multiple sources with same ID in request | Use unique `event_source_id` values | +| `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`. 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` 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.0.13/media-buy/conversion-tracking/) - Data model, optimization goals, and the end-to-end flow +- [log_event](/dist/docs/3.0.13/media-buy/task-reference/log_event) - Send marketing events to configured event sources +- [create_media_buy](/dist/docs/3.0.13/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.0.13/media-buy/task-reference/get_media_buy_delivery) - Monitor conversion metrics in delivery reports diff --git a/dist/docs/3.0.13/media-buy/task-reference/update_media_buy.mdx b/dist/docs/3.0.13/media-buy/task-reference/update_media_buy.mdx new file mode 100644 index 0000000000..d14b68e3bb --- /dev/null +++ b/dist/docs/3.0.13/media-buy/task-reference/update_media_buy.mdx @@ -0,0 +1,868 @@ +--- +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. + +**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.0.13/media-buy/task-reference/get_media_buys), not just buys created via `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` on the buy rather than silently rejecting the corresponding update. **Creation surface is not a business reason.** Sellers MUST NOT return `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.0.13/media-buy/specification#account-ownership-vs-creation-surface) rule. + +**PATCH Semantics**: Only specified fields are updated; omitted fields remain unchanged. + +**Request Schema**: [`/schemas/3.0.13/media-buy/update-media-buy-request.json`](https://adcontextprotocol.org/schemas/3.0.13/media-buy/update-media-buy-request.json) +**Response Schema**: [`/schemas/3.0.13/media-buy/update-media-buy-response.json`](https://adcontextprotocol.org/schemas/3.0.13/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/client/testing'; +import { CreateMediaBuyResponseSchema, UpdateMediaBuyResponseSchema } from '@adcp/client'; + +// 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_ids: [{ + agent_url: 'https://creative.adcontextprotocol.org', + id: 'display_300x250_image' + }], + budget: 800, + bid_price: 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, + 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_ids': [{ + 'agent_url': 'https://creative.adcontextprotocol.org', + 'id': 'display_300x250_image' + }], + 'budget': 800, + 'bid_price': 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, + 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.0.13/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 | +| `revision` | integer | No | Expected current revision for optimistic concurrency. Seller rejects with `CONFLICT` on mismatch. Obtain from `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`. | +| `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.0.13/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` when governance agents are configured. | +| `new_packages` | PackageRequest[] | No | New packages to add to this media buy. Same shape as `create_media_buy` packages. Only supported by sellers that advertise `add_packages` in `valid_actions`. | +| `push_notification_config` | object | No | Webhook for async operation notifications | + +`account` and `media_buy_id` are always required. + +### 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`, or `monthly` | +| `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 | Updated budget allocation | +| `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 | +| `bid_price` | number | Updated bid price (auction products only). This is the exact bid/price to honor unless the selected pricing option has `max_bid: true`, in which case it is treated as the buyer's maximum willingness to pay (ceiling). | +| `optimization_goals` | OptimizationGoal[] | Replace all optimization goals for this package. Uses replacement semantics — omit to leave goals unchanged. | +| `targeting_overlay` | TargetingOverlay | Updated targeting restrictions | +| `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 creatives with optional weights and placement targeting | +| `creatives` | CreativeAsset[] | Upload and assign new creatives inline (must not exist in library) | + +`package_id` is required to identify the package to update. + +## Response + +### Success Response + +| Field | Description | +|-------|-------------| +| `media_buy_id` | Media buy identifier | +| `status` | Media buy status after the update (present when status changes, e.g., cancellation) | +| `revision` | Revision number after this update. Use in subsequent requests for optimistic concurrency. | +| `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` | Actions the buyer can perform after this update. Saves a round-trip to `get_media_buys`. | +| `affected_packages` | Array of full Package objects showing complete state after update | + +### Error Response + +| Field | Description | +|-------|-------------| +| `errors` | Array of error objects explaining failure | + +**Note**: Responses use discriminated unions - you get either success fields OR errors, never both. Always check for `errors` before accessing success fields. + +## Common Scenarios + +### Update Package Budget + +Increase budget for a specific package: + +<CodeGroup> + +```javascript test=false JavaScript +import { testAgent } from '@adcp/client/testing'; +import { UpdateMediaBuyResponseSchema } from '@adcp/client'; + +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/client/testing'; +import { UpdateMediaBuyResponseSchema } from '@adcp/client'; + +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/client/testing'; +import { UpdateMediaBuyResponseSchema } from '@adcp/client'; + +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/client/testing'; +import { UpdateMediaBuyResponseSchema } from '@adcp/client'; + +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/client/testing'; +import { UpdateMediaBuyResponseSchema } from '@adcp/client'; + +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", + "status": "canceled", + "revision": 4, + "implementation_date": "2025-06-15T10:00:00Z", + "affected_packages": [] +} +``` + +**`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` 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` 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 proposal prop_abc123", + "details": { + "proposal_id": "prop_abc123", + "envelope_field": ["packages[0].budget", "end_time"] + }, + "suggestion": "Call get_products with buying_mode='refine' against proposal_id prop_abc123 to obtain a fresh quote, then resubmit this update against the new proposal_id" + }] +} +``` + +### 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:** +- Package ID +- Product ID +- Pricing option ID +- Format IDs (creatives must match existing formats) + +## Error Handling + +Common errors and resolutions: + +| Error Code | Description | Resolution | +|------------|-------------|------------| +| `MEDIA_BUY_NOT_FOUND` | Media buy doesn't exist | Verify media_buy_id | +| `PACKAGE_NOT_FOUND` | Package doesn't exist | Verify package_id | +| `UPDATE_NOT_ALLOWED` | Field cannot be changed | See "What Can Be Updated" above | +| `BUDGET_INSUFFICIENT` | New budget below minimum | Increase budget amount | +| `POLICY_VIOLATION` | Update violates content policy | Review policy requirements | +| `INVALID_STATE` | Operation not allowed in current state (e.g., updating completed/canceled media buy) | Check campaign status via `get_media_buys` | +| `NOT_CANCELLABLE` | Media buy or package cannot be canceled | Check seller's cancellation policy or contact seller | +| `CREATIVE_REJECTED` | Creative failed content policy review | Revise the creative per the seller's advertising policies | +| `CREATIVE_DEADLINE_EXCEEDED` | Creative change submitted past the package's `creative_deadline` | Check package `creative_deadline` before submitting creative changes | +| `CREATIVE_ID_EXISTS` | Creative ID already exists in library | Use a different `creative_id`, assign existing creatives via `creative_assignments`, or update via `sync_creatives` | +| `BUDGET_EXCEEDED` | Operation would exceed allocated budget | Reduce the amount or increase media buy total budget | +| `CONFLICT` | Revision mismatch — another update was applied since you last read | Re-read via `get_media_buys` and retry with current `revision` | +| `REQUOTE_REQUIRED` | Requested change (budget, dates, volume, targeting) falls outside the envelope the original quote was priced against | Call `get_products` with `buying_mode: "refine"` against the existing `proposal_id` to obtain a fresh quote, then resubmit the update against the new `proposal_id`. Seller's `error.details.envelope_field` names which fields breached. | +| `VALIDATION_ERROR` | Request format or business rule violation | Check error `field` and `message` for specifics | + +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 state of each package that would be modified: + +```json +{ + "media_buy_id": "mb_12345", + "implementation_date": null, + "affected_packages": [ + { + "package_id": "pkg_abc123", + "budget": 50000, + "status": "pending_start" + } + ] +} +``` + +## 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", + "budget": 50000, + "status": "active" + } + ] +} +``` + +**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.0.13/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 + +- Updates are atomic - either all changes apply or none do +- 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 creates NEW creatives only. To update existing creatives, use [`sync_creatives`](/dist/docs/3.0.13/creative/task-reference/sync_creatives). To assign existing library creatives, use `creative_assignments` in the Package Update object. + +<Note> +**Campaign Governance — Modification Phase** + +When a buyer's account has governance agents configured, sellers MUST call [`check_governance`](/dist/docs/3.0.13/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.0.13/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.0.13/media-buy/task-reference/get_media_buy_delivery) to confirm updates +2. **Upload New Creatives**: Use [`sync_creatives`](/dist/docs/3.0.13/creative/task-reference/sync_creatives) if creative assignments changed +3. **Monitor Performance**: Track impact of changes on campaign metrics +4. **Optimize Further**: Use [`provide_performance_feedback`](/dist/docs/3.0.13/media-buy/task-reference/provide_performance_feedback) for ongoing optimization + +## Learn More + +- [Media Buy Lifecycle](/dist/docs/3.0.13/media-buy/media-buys/) - Complete campaign workflow +- [Targeting](/dist/docs/3.0.13/media-buy/advanced-topics/targeting) - Targeting overlays and restrictions +- [Async Operations](/dist/docs/3.0.13/building/by-layer/L3/async-operations) - Async patterns and status checking +- [create_media_buy](/dist/docs/3.0.13/media-buy/task-reference/create_media_buy) - Initial campaign creation diff --git a/dist/docs/3.0.13/protocol/architecture.mdx b/dist/docs/3.0.13/protocol/architecture.mdx new file mode 100644 index 0000000000..03b213cf04 --- /dev/null +++ b/dist/docs/3.0.13/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 buy-side identity through `brand.json` files hosted at `/.well-known/brand.json`. Brands declare their corporate hierarchy, sub-brands, properties, and authorized operators. Any domain can be resolved to a canonical brand identity. See [Brand Protocol](/dist/docs/3.0.13/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.0.13/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.0.13/accounts/overview). + +### Transaction domains + +Four protocol domains handle core advertising operations. The [Trusted Match Protocol (TMP)](/dist/docs/3.0.13/trusted-match) serves as the execution layer, connecting planning-time decisions to real-time activation through a four-phase lifecycle: + +1. **Planning** — `get_products` and `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` 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.0.13/media-buy). + +**Creative** handles format discovery (`list_creative_formats`), AI-powered creative generation (`build_creative`), catalog synchronization (`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.0.13/creative). + +**Signals** enables audience and targeting data discovery (`get_signals`) and activation (`activate_signal`). Data providers publish signal catalogs that buyers can discover with natural language queries, then activate on decisioning platforms. See [Signals](/dist/docs/3.0.13/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.0.13/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.0.13/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` and `check_governance`. See [How human-in-the-loop enters the protocol](/dist/docs/3.0.13/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.0.13/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.0.13/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.0.13/trusted-match). + +**Agentic eXecution Engine (AXE)** — deprecated predecessor to TMP. See [AXE documentation](/dist/docs/3.0.13/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.0.13/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` 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.0.13/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`. + +**Sandbox exemption.** Sandbox accounts are allowed to carry ephemeral state that does not persist across process restarts (see [Sandbox mode](/dist/docs/3.0.13/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.0.13/building/verification/validate-your-agent#verifying-cross-instance-state). diff --git a/dist/docs/3.0.13/protocol/calling-an-agent.mdx b/dist/docs/3.0.13/protocol/calling-an-agent.mdx new file mode 100644 index 0000000000..ac922fc187 --- /dev/null +++ b/dist/docs/3.0.13/protocol/calling-an-agent.mdx @@ -0,0 +1,135 @@ +--- +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.0.13/building/by-layer/L0/schemas) 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 tool *names*. AdCP MCP servers no longer publish per-tool parameter schemas in `tools/list` — every tool shows `{type: 'object', properties: {}}`. Don't try to infer shape from there. +2. **`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.0.13/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/client` 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 body** → server-defined; most agents return the original cached response and ignore the body change. Don't rely on it. + +For async flows, the replayed response carries the **same `task_id`** so polling continues against the same task instead of forking. + +`idempotency_key` is required on: `create_media_buy`, `update_media_buy`, `sync_creatives`, `sync_audiences`, `sync_accounts`, `sync_catalogs`, `sync_event_sources`, `sync_plans`, `sync_governance`, `activate_signal`, `acquire_rights`, `log_event`, `report_usage`, `provide_performance_feedback`, `report_plan_outcome`, `create_property_list`, `update_property_list`, `delete_property_list`, `create_collection_list`, `update_collection_list`, `delete_collection_list`, `create_content_standards`, `update_content_standards`, `calibrate_content`, `si_initiate_session`, `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` and `update_media_buy`, two variants: + +```json +// variant 0: by seller-assigned id (from sync_accounts or list_accounts) +"account": { "account_id": "seller_assigned_id" } + +// variant 1: by natural key (brand + operator, optional sandbox) +"account": { "brand": { "domain": "acme.com" }, "operator": "sales.example" } +``` + +**Do NOT merge required fields across variants.** `additionalProperties: false` on each variant means `{account_id, brand}` fails BOTH. + +Other tools (e.g. `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": "..." }] } +``` + +When you see `status: 'submitted'`, the work is **not** complete. Poll via `tasks/get` (A2A) or the MCP async task extension, using the returned `task_id`. Over A2A the AdCP `task_id` also rides on `artifact.metadata.adcp_task_id`. + +## 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`. | +| `additionalProperties` at `/format_id` (string passed) | Sent `"format_id": "video_..."` | `format_id` is `{agent_url, id}` — always an object. | +| `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 | Poll via `tasks/get` (A2A) or the MCP async task extension using `task_id`. | + +## Transport notes + +- **MCP**: `tools/call` with `{ name: 'tool_name', arguments: {...} }`. Read `structuredContent` for the typed response. +- **A2A**: `message/send` with a `DataPart` of shape `{ skill: 'tool_name', input: {...} }`. The typed response is at `task.artifacts[0].parts[0].data`. + +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.state: 'completed'` is not the same as AdCP completion.** A2A task state describes the transport call lifecycle; AdCP-level completion is in the artifact's payload (`structuredContent.status` or `data.status`). A `completed` A2A task can still carry a `submitted` AdCP response. + +## Related + +- Per-task request/response shapes: see the protocol-specific reference (`/docs/media-buy/`, `/docs/creative/`, `/docs/signals/`, etc.). +- [Protocol architecture](/dist/docs/3.0.13/protocol/architecture) — how the protocol domains fit together. +- [Required tasks](/dist/docs/3.0.13/protocol/required-tasks) — which tasks an agent must implement to claim a specialism. +- [`get_adcp_capabilities`](/dist/docs/3.0.13/protocol/get_adcp_capabilities) — first call against any new agent. +- [Schemas and SDKs](/dist/docs/3.0.13/building/by-layer/L0/schemas) — how SDKs consume the protocol tarball (which now bundles `skills/`). diff --git a/dist/docs/3.0.13/protocol/capabilities-explorer.mdx b/dist/docs/3.0.13/protocol/capabilities-explorer.mdx new file mode 100644 index 0000000000..941dcd20e0 --- /dev/null +++ b/dist/docs/3.0.13/protocol/capabilities-explorer.mdx @@ -0,0 +1,245 @@ +--- +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.0.13/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.0.13/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`. 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-beta"`). 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. + +[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` requires an established account. +- **`authorization_endpoint`** — OAuth/auth URL for account negotiation. +- **`require_operator_auth`** — declares whether operator-level authentication is required. +- **`supported_billing`** — array of billing models (e.g. `prepaid`, `monthly_invoice`). +- **`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.0.13/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, fixed, 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. Currently `catalog_signals` (structured signal_id references). **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 + +Optional in 3.0; capability-advertised so counterparties can opt into signing selectively. + +- **`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`** — whether signatures cover the request body digest. + +[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` 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.0.13/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.0.13/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.0.13/protocol/design-principles) — the reasoning behind the capability surface shape. +- [`get_adcp_capabilities` task reference](/dist/docs/3.0.13/protocol/get_adcp_capabilities) — the response schema as documented per-field. +- [Specification Guidelines](/dist/docs/3.0.13/spec-guidelines) — type naming, enum design, vendor-neutral rule. diff --git a/dist/docs/3.0.13/protocol/design-principles.mdx b/dist/docs/3.0.13/protocol/design-principles.mdx new file mode 100644 index 0000000000..25b2b1a8b4 --- /dev/null +++ b/dist/docs/3.0.13/protocol/design-principles.mdx @@ -0,0 +1,148 @@ +--- +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. Five 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.0.13/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.0.13/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.0.13/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 [`get_products`](/dist/docs/3.0.13/media-buy/task-reference/get_products) and [`create_media_buy`](/dist/docs/3.0.13/media-buy/task-reference/create_media_buy) — a configure-price-quote step where the buyer submits targeting and the seller returns a firm rate. Most of what that proposal asks for already exists: account-scoped rate cards via `account`, firm prices via `pricing_options`, the `pricing_option_id` lock at commit time, and `buying_mode: "refine"` for the iteration loop. The "new task" framing assumes targeting and pricing are missing from discovery; they aren't. + +**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. + +--- + +## Five supporting principles + +### 3. The brief drives discovery; targeting is an input, not a step + +Targeting is what the buyer wants. It's not a downstream filter on a generic catalog — it's what the seller curates *against*. Buyers send a brief (or `wholesale + filters`) to [`get_products`](/dist/docs/3.0.13/media-buy/task-reference/get_products); the seller returns products already shaped for that intent, with pricing already scoped to the buyer's account via the `account` parameter. Iteration happens through `buying_mode: "refine"` with a typed change array — the round-trip is folded into discovery, not bolted on afterward. + +**Why we chose it.** A brief is the natural unit of buyer intent. The publisher knows their inventory, their audience, and their rate card better than any external taxonomy. Curating against the brief lets the seller bring all of that to the response in one round-trip, which is also the round-trip that produces the price. Splitting targeting and pricing across two tasks turns one expert decision into two underspecified ones. + +**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 pricing depends on flight dates and total budget that the buyer hasn't committed yet — seasonality, volume tiers, sell-through-rate-driven yield. Or when the seller wants to issue a time-bound firm rate (`valid_until`) before commitment, distinct from indicative pricing options. Or when buyers need an auditable explanation of what drove the price (a `rate_basis` field). Those three are real gaps, and they're extensions to `pricing_options` and the discovery flow — not a new task. + +→ See [Targeting](/dist/docs/3.0.13/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.0.13/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. Sellers declare authorized buyers via [`adagents.json`](/dist/docs/3.0.13/governance/property/adagents); buyers declare brand identity via [`brand.json`](/dist/docs/3.0.13/brand-protocol/brand-json) at `/.well-known/brand.json`. Either party can resolve and verify the other's declarations. The [Registry](/dist/docs/3.0.13/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.0.13/trust) for what AdCP provides versus what it explicitly does not. + +--- + +### 6. Privacy is layered, not uniform + +[Trusted Match Protocol](/dist/docs/3.0.13/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 — TMP wasn't designed as the GAM/FreeWheel decisioning hook, and saying "no ad server supports TMP for direct-sold" is true but slightly misleading because that's not the layer TMP operates at. The honest framing is different: AdCP has no protocol-level mechanism to declare whether a seller can enforce signal-based targeting on guaranteed line items. That's a `signals.features` flag plus a [`create_media_buy`](/dist/docs/3.0.13/media-buy/task-reference/create_media_buy) validation rule — 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.0.13/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` 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.0.13/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.0.13/trust#governance) for what AdCP provides versus what it explicitly does not, and [Governance — Embedded human judgment](/dist/docs/3.0.13/governance/embedded-human-judgment) for how HITL surfaces in the protocol. + +--- + +## 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.0.13/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.0.13/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.0.13/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.0.13/protocol/format-references.mdx b/dist/docs/3.0.13/protocol/format-references.mdx new file mode 100644 index 0000000000..77b1e16576 --- /dev/null +++ b/dist/docs/3.0.13/protocol/format-references.mdx @@ -0,0 +1,113 @@ +--- +title: Format References +description: "Normative reference for format_id (structured identifier object) vs format (full definition object) in AdCP." +"og:title": "AdCP — Format References" +--- + +AdCP uses two related but distinct concepts when working with creative formats. Their names are similar, which causes a recurring implementation error — this page defines both precisely and names the two failure modes. + +## format\_id — structured reference object + +`format_id` is **always a JSON object**, never a plain string. It identifies a format by the agent that declared it and the format's local slug: + +```json +{ + "agent_url": "https://creative.adcontextprotocol.org", + "id": "display_300x250" +} +``` + +Optional dimension and duration fields extend it for parameterized template formats: + +```json +{ + "agent_url": "https://creative.adcontextprotocol.org", + "id": "display_static", + "width": 300, + "height": 250 +} +``` + +`format_id` is a **pointer** — it names a format without carrying its definition. + +## format — full definition object + +`format` is the complete specification of a creative format. It is returned by `list_creative_formats` and related tasks. A `format` object contains a `format_id` as one of its properties, plus the asset requirements, render specs, and all other metadata: + +```json +{ + "format_id": { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "display_300x250" + }, + "name": "Display Banner 300×250", + "assets": [ + { "asset_id": "image", "asset_type": "image", "item_type": "individual", "required": true } + ], + "renders": [ + { "role": "primary", "dimensions": { "width": 300, "height": 250 } } + ] +} +``` + +A `format` is a **definition** — it describes what the format requires and how it renders. + +## Contrast at a glance + +| Concept | Field name | JSON type | Use | +|---------|-----------|-----------|-----| +| Format identifier | `format_id` | `object` — `{ agent_url, id }` | Pointer. Used in creative manifests, request filters, placement declarations. | +| Format definition | `format` | `object` — full spec | Returned by `list_creative_formats`. Contains `format_id` as a nested field. | +| Array of identifiers | `format_ids` | `array` of `format_id` objects | Filter parameter on `list_creatives`, `list_creative_formats`, and related requests. | +| Array of definitions | `formats` | `array` of `format` objects | Response field on `list_creative_formats`. | + +## Two named failure modes + +### Anti-pattern A — string in a `format_id` slot + +Wrong — `format_id` must be an object, not a plain string: + +```json +{ "format_id": "display_300x250" } +``` + +Correct: + +```json +{ "format_id": { "agent_url": "https://creative.adcontextprotocol.org", "id": "display_300x250" } } +``` + +AJV error: `format_id must be of type object`. Cause: the `.id` string inside the `format_id` object looks like a self-contained name and is sometimes extracted and used directly. + +### Anti-pattern B — format\_id object in a `format` / `formats` slot + +Wrong — a `formats[]` element must be a full definition object, not a bare `format_id`: + +```json +{ + "formats": [ + { "agent_url": "https://creative.adcontextprotocol.org", "id": "display_300x250" } + ] +} +``` + +Correct: + +```json +{ + "formats": [ + { + "format_id": { "agent_url": "https://creative.adcontextprotocol.org", "id": "display_300x250" }, + "name": "Display Banner 300×250", + "assets": [ { "asset_id": "image", "asset_type": "image", "item_type": "individual", "required": true } ] + } + ] +} +``` + +AJV error: `formats[0] must have required property 'name'`. Cause: `format_id` and `format` are both objects; the shorter object is sometimes put in the slot that expects the larger one. + +## See also + +- [Creative Formats](/dist/docs/3.0.13/creative/formats) — full format object structure, asset types, and render specs +- [Template Format IDs](/dist/docs/3.0.13/creative/template-format-ids) — parameterized format IDs for dimension-variable templates diff --git a/dist/docs/3.0.13/protocol/get_adcp_capabilities.mdx b/dist/docs/3.0.13/protocol/get_adcp_capabilities.mdx new file mode 100644 index 0000000000..68b1cc6d05 --- /dev/null +++ b/dist/docs/3.0.13/protocol/get_adcp_capabilities.mdx @@ -0,0 +1,958 @@ +--- +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. + +**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 + +**Request Schema**: [`/schemas/3.0.13/protocol/get-adcp-capabilities-request.json`](https://adcontextprotocol.org/schemas/3.0.13/protocol/get-adcp-capabilities-request.json) +**Response Schema**: [`/schemas/3.0.13/protocol/get-adcp-capabilities-response.json`](https://adcontextprotocol.org/schemas/3.0.13/protocol/get-adcp-capabilities-response.json) + +## Tool-Based Discovery + +AdCP uses native MCP/A2A tool discovery. **The presence of `get_adcp_capabilities` in an agent's tool list indicates AdCP support.** + +``` +Discovery Flow: +1. Browse agent's tool list (MCP) or skills (A2A) +2. See 'get_adcp_capabilities' tool → Agent supports AdCP +3. Call get_adcp_capabilities → Get version, protocols, features, capabilities +4. Proceed based on returned capabilities +``` + +This approach: +- Uses standard MCP/A2A mechanisms (no custom extensions) +- Always returns current capabilities (not stale metadata) +- Single source of truth for all capability information + +:::note +The agent card extension (`adcp-extension.json`) has been removed in v3. Use tool-based discovery instead. +::: + +## 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` (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. A seller at 3.1 can 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` 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 for mutating requests. See [idempotency](#idempotency). | + +#### idempotency + +Declares whether this seller honors `idempotency_key` replay protection on mutating requests. Mirrors the `request_signing.supported` pattern — a single positive declaration, decoupled from the window detail. 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` or `IDEMPOTENCY_EXPIRED`, and a naive retry WILL double-process. Buyers MUST use natural-key checks (e.g., `get_media_buys` by `buyer_ref`) before retrying spend-committing operations. | +| `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. + +### 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.0.13/building/verification/compliance-catalog) for every protocol's scope. Support for the [compliance test controller](/dist/docs/3.0.13/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.0.13/building/verification/compliance-catalog) for every specialism and the [enum schema](https://adcontextprotocol.org/schemas/3.0.13/enums/specialism.json) for the authoritative list. + +### account + +Account and authentication capabilities. All sellers should declare this section — buyers read it before calling `sync_accounts`, `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`. The buyer must pass one of these values as `billing` in every `sync_accounts` entry. | +| `require_operator_auth` | boolean | Default: `false`. Determines the account model. When `true` (explicit accounts): each operator authenticates independently, buyer discovers accounts via `list_accounts`, passes `account_id`. When `false` (implicit accounts): agent is trusted, buyer declares accounts via `sync_accounts`, passes natural key (`brand` + `operator`). For sandbox, the path follows the account model: explicit accounts discover pre-existing test accounts via `list_accounts`; implicit accounts declare sandbox via `sync_accounts` with `sandbox: true`. | +| `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`. 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.0.13/accounts/tasks/get_account_financials) for querying spend, credit, and invoice status. Only applicable to operator-billed accounts. | +| `sandbox` | boolean | Default: `false`. Strongly recommended for production sales agents. When `true`, the seller supports sandbox accounts for testing. For sandbox, the path follows the account model: explicit accounts discover pre-existing test accounts via `list_accounts`; implicit accounts declare sandbox via `sync_accounts` with `sandbox: true` — no real platform calls or spend. See [Sandbox mode](/dist/docs/3.0.13/media-buy/advanced-topics/sandbox). | + +#### Auth models + +**Implicit accounts** (`require_operator_auth: false`) — The seller trusts the agent's identity claims. The agent authenticates once with its own bearer token, then calls `sync_accounts` to declare which brands and operators it represents. The seller provisions accounts based on the agent's claims, optionally verifying operators against `brand.json`. All subsequent calls use the agent's single credential and pass natural keys (`brand` + `operator`). + +**Explicit accounts** (`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 discovers accounts via `list_accounts`. The buyer passes seller-assigned `account_id` values on all subsequent requests. + +For sandbox, the path follows the account model: explicit accounts (`require_operator_auth: true`) discover pre-existing test accounts via `list_accounts`; implicit accounts declare sandbox via `sync_accounts` with `sandbox: true`. + +See [Accounts and Agents](/dist/docs/3.0.13/building/by-layer/L2/accounts-and-agents#what-sellers-declare) for full workflows and [seller patterns](/dist/docs/3.0.13/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. + +:::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` 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` 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.0.13/media-buy/media-buys/optimization-reporting#offline-file-delivery-based-reporting) for details. + +#### features + +Optional media-buy features. **If declared true, seller MUST honor requests using that feature.** + +| Feature | Description | +|---------|-------------| +| `inline_creative_management` | Accepts creatives inline in `create_media_buy` requests | +| `property_list_filtering` | Honors `property_list` parameter in `get_products` | +| `catalog_management` | Supports `sync_catalogs` for catalog feed management | + +#### 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` 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.0.13/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.0.13/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"]`) | +| `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 | Region/state-level targeting using ISO 3166-2 codes (e.g., `US-NY`, `GB-SCT`) | +| `geo_metros` | object | Metro area targeting with system-specific support | +| `geo_postal_areas` | object | Postal area targeting with country and precision support | +| `age_restriction` | object | Age restriction capabilities with `supported` flag and `verification_methods` | +| `language` | boolean | Language targeting (ISO 639-1 codes) | +| `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. | +| `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. + +Sellers that support a geographic targeting level SHOULD support both inclusion and exclusion at that level. For example, `geo_metros.nielsen_dma: true` SHOULD mean the seller supports both `geo_metros` and `geo_metros_exclude` with Nielsen DMA codes. If a seller only supports one direction (e.g., inclusion but not exclusion), it MUST return a validation error for unsupported fields rather than silently ignoring them. See [Targeting Overlays](/dist/docs/3.0.13/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 postal code systems are supported: + +| System | Description | +|--------|-------------| +| `us_zip` | US 5-digit ZIP codes (e.g., `10001`) | +| `us_zip_plus_four` | US 9-digit ZIP+4 codes (e.g., `10001-1234`) | +| `gb_outward` | UK postcode district (e.g., `SW1`, `EC1`) | +| `gb_full` | UK full postcode (e.g., `SW1A 1AA`) | +| `ca_fsa` | Canadian Forward Sortation Area (e.g., `K1A`) | +| `ca_full` | Canadian full postal code (e.g., `K1A 0B1`) | +| `de_plz` | German Postleitzahl (e.g., `10115`) | +| `fr_code_postal` | French code postal (e.g., `75001`) | +| `au_postcode` | Australian postcode (e.g., `2000`) | +| `ch_plz` | Swiss Postleitzahl (e.g., `8000`) | +| `at_plz` | Austrian Postleitzahl (e.g., `1010`) | + +#### audience_targeting + +Audience targeting capabilities. Presence of this object indicates the seller supports audience targeting, including `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: + +| Field | Type | Description | +|-------|------|-------------| +| `publisher_domains` | string[] | **Required.** Publisher domains this seller represents | +| `primary_channels` | string[] | Main advertising channels | +| `primary_countries` | string[] | Main countries (ISO codes) | +| `description` | string | Markdown portfolio description | +| `advertising_policies` | string | Content policies and restrictions | + +### signals + +Signals protocol capabilities. Only present if `signals` is in `supported_protocols`. Reserved for future use. + +### 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 (`required_disclosures`, `prohibited_claims`) and will validate that disclosures can be satisfied by the target format. Use the `disclosure_positions` filter on `list_creative_formats` to find compatible formats. | + +### 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. + +#### property_features + +Array of property features this governance agent can evaluate. See [Property Governance](/dist/docs/3.0.13/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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/protocol/get-adcp-capabilities-response.json", + "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"] + } + } +} +``` + +### compliance_testing + +Compliance testing capabilities. The presence of this block declares that the agent supports deterministic testing via [`comply_test_controller`](/dist/docs/3.0.13/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.0.13/building/by-layer/L3/comply-test-controller#sandbox-gating). + +| Field | Type | Description | +|-------|------|-------------| +| `scenarios` | string[] | Compliance testing scenarios this agent supports. Possible values: `force_creative_status`, `force_account_status`, `force_media_buy_status`, `force_session_status`, `simulate_delivery`, `simulate_budget_spend`, `seed_product`, `seed_pricing_option`, `seed_creative`, `seed_plan`, `seed_media_buy`. Runners MUST accept unknown scenario strings — new scenarios may be added in additive minor bumps. | + +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 skips unsupported ones. + +:::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` 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.0.13/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` or `media_buy.content_standards.supports_webhook_delivery: 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.0.13/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.0.13/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`. `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.0.13/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"] +} +``` + +### 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", "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", "trusted_match.core"] +} +``` + +See [experimental status](/dist/docs/3.0.13/reference/experimental-status) for the full stability contract, graduation criteria, and client guidance. + +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 + +## The Capability Contract + +**If a capability is declared, the seller MUST honor it.** + +- `media_buy.execution.targeting.geo_postal_areas.us_zip: true` → Buyer can send US ZIP 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.content_standards` object present → Seller MUST apply content standards when provided +- `media_buy.audience_targeting` object present → Seller MUST support `sync_audiences` and audience targeting overlays +- `media_buy.conversion_tracking` object present → Seller MUST support `sync_event_sources` and `log_event` +- AXE URL in `media_buy.execution.axe_integrations` → Seller can execute through that exchange (legacy — new integrations use [TMP](/dist/docs/3.0.13/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/client'; + +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 + if (mediaBuy.execution?.targeting?.geo_postal_areas?.us_zip) { + 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) { + if (!mediaBuy.execution?.targeting?.geo_postal_areas?.us_zip) { + 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 + +Capabilities tell you what you CAN specify in create_media_buy targeting. Use `required_geo_targeting` to filter products to sellers that support specific geo targeting levels and systems: + +```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; + +// Filter products to sellers with specific geo targeting capabilities +const products = await client.getProducts({ + brief: "Premium video inventory in US for ZIP-targeted campaign", + filters: { + channels: ['olv', 'ctv'], + countries: ['US'], + // Require seller supports ZIP targeting (capability filter - no actual ZIPs needed) + // level = granularity, system = classification taxonomy + required_geo_targeting: [ + { level: 'postal_area', system: 'us_zip' } + ], + // Only include if seller supports this AXE (legacy — new integrations use TMP) + required_axe_integrations: ['https://axe.example.com'] + } +}); + +// 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, + // Targeting overlay refines delivery within product coverage + targeting_overlay: { + geo_countries: ['US'], + // Only specify ZIP targeting if seller supports it + ...(mediaBuy.execution?.targeting?.geo_postal_areas?.us_zip && { + geo_postal_areas: [{ + system: 'us_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` +- **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({ + 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.0.13/protocol/get-adcp-capabilities-response.json", + "adcp": { + "major_versions": [3], + "idempotency": { "supported": true, "replay_ttl_seconds": 86400 } + }, + "supported_protocols": ["media_buy"], + "account": { + "require_operator_auth": false, + "supported_billing": ["operator", "agent"] + }, + "media_buy": { + "features": { + "inline_creative_management": true, + "property_list_filtering": true + }, + "execution": { + "axe_integrations": ["https://axe.example.com"], + "creative_specs": { + "vast_versions": ["4.0", "4.1", "4.2"], + "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, + "gb_outward": true, + "ca_fsa": true + }, + "language": true, + "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, declare brands via `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.0.13/protocol/get-adcp-capabilities-response.json", + "adcp": { + "major_versions": [3], + "idempotency": { "supported": true, "replay_ttl_seconds": 86400 } + }, + "supported_protocols": ["media_buy", "creative"], + "account": { + "require_operator_auth": false, + "supported_billing": ["operator"] + }, + "media_buy": { + "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 + } +} +``` + +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` +- **Shared account**: A single account established via `sync_accounts` applies to both protocols + +When `supported_protocols` includes `"creative"`, the buyer can call Creative Protocol tasks (`list_creative_formats`, `sync_creatives`, `get_creative_delivery`, etc.) on this agent. See [Creative capabilities on sales agents](/dist/docs/3.0.13/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_REQUIRED` | Authentication needed | Provide credentials | +| `VERSION_UNSUPPORTED` | Declared `adcp_major_version` not in seller's `major_versions` | Call without `adcp_major_version` to discover supported versions, then retry | +| `INTERNAL_ERROR` | Server error | Retry with backoff | + +## Best Practices + +**1. Cache Capabilities** +Capabilities rarely change. Cache results and use `last_updated` for staleness detection. + +**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.0.13/building/by-layer/L2/accounts-and-agents#what-sellers-declare) +2. **Filter products**: Use [`get_products`](/dist/docs/3.0.13/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.0.13/media-buy/task-reference/create_media_buy) with supported features + +## Learn More + +- [Accounts and Agents](/dist/docs/3.0.13/building/by-layer/L2/accounts-and-agents) - Auth models, account setup, billing +- [adagents.json Specification](/dist/docs/3.0.13/governance/property/adagents) - Publisher authorization files +- [Product Filters](/dist/docs/3.0.13/media-buy/task-reference/get_products#filters) - Capability-aware filtering +- [Content Standards](/dist/docs/3.0.13/governance/content-standards) - Brand safety configuration diff --git a/dist/docs/3.0.13/protocol/required-tasks.mdx b/dist/docs/3.0.13/protocol/required-tasks.mdx new file mode 100644 index 0000000000..f1ffb70281 --- /dev/null +++ b/dist/docs/3.0.13/protocol/required-tasks.mdx @@ -0,0 +1,207 @@ +--- +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, `list_creative_formats` and `sync_creatives` are defined in the Creative Protocol but also implemented by Media Buy sales agents. These appear under both protocols with a note indicating the source. + +## Shared + +Every AdCP agent, regardless of protocol, implements: + +| Task | Requirement | Reference | +|------|------------|-----------| +| `get_adcp_capabilities` | Required | [Capability discovery](/dist/docs/3.0.13/protocol/get_adcp_capabilities) | + +## Media Buy Protocol + +### Sales agent (seller) + +| Task | Requirement | Notes | +|------|------------|-------| +| `get_products` | Required | Inventory discovery | +| `list_creative_formats` | Required | Format specifications (Creative Protocol task) | +| `create_media_buy` | Required | Campaign creation and order confirmation | +| `update_media_buy` | Required | Budget, targeting, pause, cancel | +| `get_media_buys` | Required | Operational state retrieval | +| `get_media_buy_delivery` | Required | Delivery metrics at the package level; `reporting_capabilities` MUST be included on every product | +| `provide_performance_feedback` | Required | Accept buyer optimization signals | +| `sync_creatives` | Conditional | Required when the sales agent hosts a creative library (Creative Protocol task) | +| `list_creatives` | Optional | Creative catalog browsing (Creative Protocol task) | +| `sync_catalogs` | Optional | Product/inventory catalog sync | +| `sync_event_sources` | Optional | Conversion tracking setup | +| `log_event` | Conditional | Required when event sources are configured | +| `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.0.13/media-buy/specification) · [Seller integration guide](/dist/docs/3.0.13/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.0.13/media-buy/specification#orchestrator-conformance) + +## Creative Protocol + +### Creative agent + +| Task | Requirement | Notes | +|------|------------|-------| +| `list_creative_formats` | Required | Format discovery with technical specs | +| `build_creative` | Optional | Generation, transformation, or library retrieval | +| `preview_creative` | Optional | Preview rendering | +| `list_creatives` | Conditional | Required when `has_creative_library: true` | +| `sync_creatives` | Conditional | Required when the agent accepts creative uploads | +| `get_creative_delivery` | Optional | Variant-level delivery metrics | + +Creative agents MUST return authoritative format definitions only for formats they own. + +**Reference**: [Creative Specification](/dist/docs/3.0.13/creative/specification) + +## Signals Protocol + +### Signal agent + +| Task | Requirement | Notes | +|------|------------|-------| +| `get_signals` | Required | Signal discovery | +| `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.0.13/signals/specification) + +## Brand Protocol + +### Brand agent + +| Task | Requirement | Notes | +|------|------------|-------| +| `get_brand_identity` | Required | Core identity is public; authorized callers get deeper data | +| `get_rights` | Conditional | Required when the agent manages brand rights | +| `acquire_rights` | Conditional | Required when the agent manages brand rights | +| `update_rights` | Conditional | Required when the agent manages brand rights | +| `creative_approval` | Conditional | Required when the agent reviews AI-generated content | + +Brand agents MUST declare `brand` in `supported_protocols`. + +**Reference**: [Brand Protocol](/dist/docs/3.0.13/brand-protocol) · [Building a brand agent](/dist/docs/3.0.13/brand-protocol/building-a-brand-agent) + +## Accounts Protocol + +### Any agent accepting accounts + +| Task | Requirement | Notes | +|------|------------|-------| +| `sync_accounts` | Conditional | Implicit accounts (`require_operator_auth: false`) — buyer declares brand/operator pairs | +| `list_accounts` | Conditional | Explicit accounts (`require_operator_auth: true`) — buyer discovers pre-existing accounts | +| `sync_governance` | Conditional | Required when the buyer uses campaign governance | +| `report_usage` | Conditional | Required when the agent charges for services | +| `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 (e.g., ad networks that use implicit accounts on the buyer side and explicit accounts with underlying platforms). + +**Reference**: [Accounts Protocol](/dist/docs/3.0.13/accounts/overview) + +## Governance: Campaign + +### Governance agent + +| Task | Requirement | Notes | +|------|------------|-------| +| `sync_plans` | Required | Plan creation and amendment | +| `check_governance` | Required | Validation at purchase, modification, and delivery phases | +| `report_plan_outcome` | Required | Outcome reporting and budget commitment | +| `get_plan_audit_logs` | Required | Audit trail retrieval | + +**Reference**: [Campaign Governance Specification](/dist/docs/3.0.13/governance/campaign/specification) + +## Governance: Property + +### Governance agent + +| Task | Requirement | Notes | +|------|------------|-------| +| `create_property_list` | Required | List creation with filters | +| `get_property_list` | Required | Resolved property retrieval | +| `update_property_list` | Required | List modification | +| `delete_property_list` | Required | List removal | +| `list_property_lists` | Required | List enumeration | +| `validate_property_delivery` | Optional | Post-campaign compliance validation | + +**Reference**: [Property Governance Specification](/dist/docs/3.0.13/governance/property/specification) + +## Governance: Collection + +### Governance agent + +| Task | Requirement | Notes | +|------|------------|-------| +| `create_collection_list` | Required | List creation with collection sources and filters | +| `get_collection_list` | Required | Resolved collection retrieval | +| `update_collection_list` | Required | List modification | +| `list_collection_lists` | Required | List enumeration | +| `delete_collection_list` | Required | List removal | + +**Reference**: [Collection Governance](/dist/docs/3.0.13/governance/collection) + +## Governance: Content Standards + +### Content standards agent + +| Task | Requirement | Notes | +|------|------------|-------| +| `create_content_standards` | Required | Standards creation | +| `get_content_standards` | Required | Standards retrieval | +| `list_content_standards` | Required | Standards enumeration | +| `update_content_standards` | Required | Standards modification | +| `calibrate_content` | Optional | Seller calibration against standards | +| `validate_content_delivery` | Optional | Post-delivery content compliance | +| `get_media_buy_artifacts` | Optional | Artifact retrieval for validation | + +**Reference**: [Content Standards](/dist/docs/3.0.13/governance/content-standards) + +## Governance: Creative + +### Creative governance agent + +| Task | Requirement | Notes | +|------|------------|-------| +| `get_creative_features` | Required | Security scanning, content categorization | + +**Reference**: [Creative Governance](/dist/docs/3.0.13/governance/creative) + +## Sponsored Intelligence Protocol + +### Brand agent + +| Task | Requirement | Notes | +|------|------------|-------| +| `si_get_offering` | Optional | Pre-session offering lookup | +| `si_initiate_session` | Required | Session creation with consent | +| `si_send_message` | Required | Conversational messaging | +| `si_terminate_session` | Required | Session cleanup | + +Brand agents MUST declare `sponsored_intelligence` in `supported_protocols`. + +**Reference**: [Sponsored Intelligence Specification](/dist/docs/3.0.13/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.0.13/trusted-match/specification) for message types and conformance requirements. diff --git a/dist/docs/3.0.13/protocol/snapshot-and-log.mdx b/dist/docs/3.0.13/protocol/snapshot-and-log.mdx new file mode 100644 index 0000000000..0d25f16f54 --- /dev/null +++ b/dist/docs/3.0.13/protocol/snapshot-and-log.mdx @@ -0,0 +1,184 @@ +--- +title: Snapshot and log +description: "The contract that ties every read API to its push channel — what a snapshot is, what a log is, how they share an id space, and why pulling the snapshot is the only replay primitive AdCP commits to." +"og:title": "AdCP — Snapshot and log" +--- + +# Snapshot and log + +Every state surface AdCP exposes has two faces: a **snapshot** read from a `get_*` task and a **log** of push 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 them coherent. + +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` returns each buy's `status`, `health`, open `impairments[]`, and `webhook_activity[]`. +- `list_creatives` returns each creative's `status`. +- `sync_audiences` (without changes) returns each audience's current `status`. +- `get_event_source_health` returns each source's current `assessment-status`. + +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`). +- Dependency impairment fires (`notification_type: impairment`). +- Future event types are added the same way: a new `notification-type` value, a defined payload, the same delivery contract. + +Each event carries a stable `notification_id` and corresponds to a change visible on the snapshot. + +## The five rules + +These rules apply across every snapshot/log pair in the protocol. If you're building a new notification type, your design must satisfy all five. + +### 1. Two distinct ids: per-fire and per-state + +**Dedupe transport retries by `idempotency_key`. Correlate fires to state by `notification_id`.** These are different ids on the same fire — receivers MUST track both. + +- **`idempotency_key`** — transport-layer, **per delivery attempt**. Issued by the seller for each fire. Receivers dedupe on this to suppress retries of the same logical fire. Defined in the [webhooks transport contract](/dist/docs/3.0.13/building/by-layer/L3/webhooks). +- **`notification_id`** — event-layer, **per state event**. Stable across re-emissions of the same logical event. For state-shaped events this equals the resource's stable id (e.g., `impairment_id` is the `notification_id` for impairment events). Typed at the envelope level on [`mcp-webhook-payload.json`](https://adcontextprotocol.org/schemas/3.0.13/core/mcp-webhook-payload.json); per-type population is documented on [`notification-type.json`](https://adcontextprotocol.org/schemas/3.0.13/enums/notification-type.json) enumDescriptions. Absent on point-in-time data events (e.g., delivery report fires) that have no persistent state id. + +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 state-shaped events (impairment, lifecycle), the per-state id is the resource id. For point-in-time data events (delivery report fires), there is no persistent state id — the per-fire `idempotency_key` is all there is. That asymmetry is honest about the limits of Rule 4 below. + +### 2. Every push event corresponds to a snapshot delta + +There is no webhook-only state. If a webhook fires with `notification_type: impairment`, the affected media buy's `impairments[]` will show the impairment on the next read. If a delivery report fires, the next `get_media_buy_delivery` reflects the same reporting window. Push channels do not carry information unavailable from the read API. + +This rule rules out push events that exist solely as ephemeral signals — "you might want to know X" without a corresponding readable state. If you want to surface a suggestion that doesn't change state, build a pull tool, not a webhook. + +### 3. Push is at-least-once; the snapshot is authoritative + +When push and snapshot disagree, the snapshot wins. A duplicate webhook fire (same `notification_id`) is the expected behavior under at-least-once delivery — buyer agents dedupe and continue. 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. Either path is complete + +A buyer using webhooks reliably gets all the data. A buyer using only GET (no webhooks) gets the same data. The two paths are at parity in content and granularity; the buyer chooses based on latency, ergonomics, and receiver infrastructure. + +This rule has two halves: + +- **For state events** (impairment, lifecycle, status changes): GET returns current state. A buyer who missed a webhook calls `get_*` and reads the snapshot — recovery is lossless. ✅ Holds today. +- **For data-bearing events** (delivery report fires, individual log events): GET MUST honor windowed pulls at every granularity the seller declares in `reporting_capabilities.windowed_pull_granularities`, with the same windowing the webhook delivers at that granularity. A seller that declares `["hourly", "daily"]` MUST honor hourly and daily windowed pulls on `get_media_buy_delivery` (via `time_granularity` + `include_window_breakdown: true`); the slice payload is shape-aligned with the webhook fire it could have replaced. Sellers MAY emit higher-frequency webhooks than they expose for pull — common in stream-tap architectures where the webhook is a Kafka tap and historical reads go through a warehouse with coarser granularity. In that case the buyer knows up front via the capability that pull-recovery is unavailable at the higher frequency and treats the webhook as primary for it. + +The two-paths-equal contract holds within each seller's **declared** parity set. Sellers MUST be honest about the set: declare every granularity at which the GET surface can in fact reproduce the webhook payload, no more, no less. A seller that declares a granularity but rejects pulls at that granularity is in breach of Rule 4; a seller that omits a granularity is opting out of two-paths-parity at that frequency and is fine. Pulls outside the declared set return `UNSUPPORTED_GRANULARITY` with `error.details.supported_granularities` echoing the capability. + +Without two-paths-equal, AdCP becomes pub/sub for some channels and REST for others — buyers building against the contract have to know which model applies where. With it, both paths are equivalent: a buyer chooses webhooks for latency or polling for simplicity, and gets the same data either way. + +### 5. Push events and log entries share an id space + +A webhook delivery surfaced via `webhook_activity[]` references the same `notification_id` that the buyer received in the push body. A buyer can correlate "I received fire X" with "the seller's log shows fire X" without bookkeeping across two namespaces. Likewise, an `impairment_id` referenced in `impairments[]` matches the `notification_id` of the push that announced it. + +## 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.0.13/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`), `subscriber_id` (reserved for #3009 multi-subscriber), `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). + +### 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.0.13/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 satisfy this today via per-buy `push_notification_config` (and the related `reporting_webhook`); resources that outlive any single buy — creatives, audiences, properties, account-level governance — wait on the **per-account subscription model defined in #4582 track 3** (forthcoming in 3.2.0). The two are different primitives that fulfill the same prerequisite: a buy-scoped config blob attached to the buy versus an account-scoped subscription resource. Without a channel there are no fires for `webhook_activity[]` to log; this item gates every other rule below. 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.0.13/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 + +#### Today (3.1) + +- `get_media_buys.media_buys[].webhook_activity[]` — the first and currently only consumer of this pattern. The notification channel is the existing per-buy `push_notification_config`, so item 1 of the checklist is satisfied without any new primitive. 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.0.13/media-buy/task-reference/get_media_buys#webhook-activity) for the call-site documentation and the [persistent webhook contract](/dist/docs/3.0.13/building/by-layer/L3/webhooks#persistent-channel-contract) for the transport-side rules this surface debugs against. + +#### Account-level adopters (3.1) + +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.0.13/accounts/tasks/sync_accounts#account-level-webhook-subscriptions) and echoed on `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 webhooks** — `list_creatives.creatives[].webhook_activity[]` is the second consumer of this pattern. 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`. The two creative-lifecycle event types — `creative.status_changed` and `creative.purged` — share the same record shape and retention rule as media-buy webhook activity; the parent creative is unambiguous so `ext.creative_id` MAY be omitted on the inner records. See [list_creatives § Webhook activity](/dist/docs/3.0.13/creative/task-reference/list_creatives#webhook-activity) for the call-site documentation. +- **Other resources that outlive a buy** — audiences, properties, account-level compliance under [#1711](https://github.com/adcontextprotocol/adcp/issues/1711) — follow the same chain: subscribe via `sync_accounts.accounts[].notification_configs[]`, adopt the `webhook_activity[]` read on the resource's `list_` task. These are open RFCs. + +**Rule 4 carve-out for hard purges.** `creative.purged` with `purge_kind: hard` (legal-erasure-only — GDPR Article 17, CCPA deletion, court order) is the one sanctioned exception to Rule 4: the webhook fire has no corresponding snapshot delta because the seller MUST NOT retain a tombstone. Buyers who miss a hard-purge fire have no read-side recovery; that's the legal regime's design constraint, not a protocol gap. Soft purges retain a tombstone on `list_creatives` (with `include_purged: true`) and remain Rule-4 compliant. + +Adopters follow this checklist verbatim regardless of whether the notification channel is per-buy or per-account. + +## 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 advisory epic.) +- **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 the account-level surface is heterogeneous (creative events, future audience/property events) and an endpoint that handles only creative events would otherwise be force-fed signals 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.0.13/building/by-layer/L3/webhooks#persistent-channel-contract). Sellers do not poll buyers for receipt. + +## Where the surface doesn't yet follow this + +- **Delivery reports** (`scheduled` / `final` / `delayed` / `adjusted`) predate this contract. Rule 4 closes for them in 3.1 via two surfaces: + - **Per-window data parity** — `get_media_buy_delivery` accepts `time_granularity` + `include_window_breakdown: true`, returning `media_buy_deliveries[].windows[]` slices shape-aligned with `reporting_webhook` payloads at the same granularity. Capability-scoped via `reporting_capabilities.windowed_pull_granularities`; pulls outside the declared set return `UNSUPPORTED_GRANULARITY`. Landed in #4590. + - **Per-fire transport log** — even with per-window parity, buyers debugging webhook delivery want to see which fires hit their endpoint and when. The `webhook_activity[]` surface on `get_media_buys` ([#4278](https://github.com/adcontextprotocol/adcp/issues/4278)) closes this for transport-layer observability. It is the first consumer of the [webhook activity log pattern](#webhook-activity-log-pattern) above; future resources adopting the pattern follow the same record shape, retention floor, and three-state presence semantics. +- **Audience and property lifecycle webhooks** — creative-lifecycle webhooks now adopt this pattern via [#2261](https://github.com/adcontextprotocol/adcp/issues/2261) (account-level `notification_configs[]` + `list_creatives.webhook_activity[]`). Audience suspensions outside a buy's scope and property depublications remain open — until those land, the snapshot half (a fresh `sync_audiences` or property crawl) is the only reliable signal for changes to those resources when not currently referenced by an active buy. + +## 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.0.13/building/by-layer/L3/webhooks) — the transport contract that this page sits on top of. +- [Media buy lifecycle](/dist/docs/3.0.13/media-buy/media-buys/lifecycle) — applies snapshot/log to `status` + `health` + `impairments[]`. diff --git a/dist/docs/3.0.13/quickstart.mdx b/dist/docs/3.0.13/quickstart.mdx new file mode 100644 index 0000000000..0e521774cc --- /dev/null +++ b/dist/docs/3.0.13/quickstart.mdx @@ -0,0 +1,304 @@ +--- +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.0.13/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/mcp" +``` + +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": { + "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.0.13/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's `adagents.json` JWKS, 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.0.13/building/by-layer/L1/security) and [Webhooks guide](/dist/docs/3.0.13/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/client # JavaScript/TypeScript +pip install adcp # Python +``` + +```javascript +import { AdCPClient } from '@adcp/client'; + +const client = new AdCPClient([{ + id: 'test', + name: 'Test Agent', + agent_uri: 'https://test-agent.adcontextprotocol.org/mcp', + protocol: 'mcp', + auth_token: process.env.ADCP_AUTH_TOKEN, +}]); + +const result = await client.agent('test').executeTask('get_products', { + 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.0.13/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.0.13/building/verification/validate-your-agent)** — test your agent with storyboards and compliance checks +- **[Compliance Catalog](/dist/docs/3.0.13/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.0.13/building/by-layer/L0/mcp-guide)** — transport, sessions, auth details +- **[A2A integration guide](/dist/docs/3.0.13/building/by-layer/L0/a2a-guide)** — streaming, artifacts, push notifications +- **[Task reference](/dist/docs/3.0.13/media-buy/task-reference)** — all available tasks with testable examples +- **[Error handling](/dist/docs/3.0.13/building/operating/transport-errors)** — error codes, recovery strategies +- **[Authentication](/dist/docs/3.0.13/building/by-layer/L2/authentication)** — production credential setup diff --git a/dist/docs/3.0.13/reference/changelog.mdx b/dist/docs/3.0.13/reference/changelog.mdx new file mode 100644 index 0000000000..6fcca0c134 --- /dev/null +++ b/dist/docs/3.0.13/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 high-level summaries and migration guides, see [Release Notes](/dist/docs/3.0.13/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 version management. Each pull request includes a changeset description compiled into the changelog at release time. All changes follow [semantic versioning](https://semver.org/). diff --git a/dist/docs/3.0.13/reference/experimental-status.mdx b/dist/docs/3.0.13/reference/experimental-status.mdx new file mode 100644 index 0000000000..42f6241e7a --- /dev/null +++ b/dist/docs/3.0.13/reference/experimental-status.mdx @@ -0,0 +1,120 @@ +--- +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.0.13/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.0.13/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.0.13/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.0: + +| Feature id | Surface | Why experimental | +|---|---|---| +| `brand.rights_lifecycle` | [`get_rights`](/dist/docs/3.0.13/brand-protocol/tasks/get_rights), [`acquire_rights`](/dist/docs/3.0.13/brand-protocol/tasks/acquire_rights), [`update_rights`](/dist/docs/3.0.13/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.0.13/governance/campaign/tasks/sync_plans), [`check_governance`](/dist/docs/3.0.13/governance/campaign/tasks/check_governance), [`report_plan_outcome`](/dist/docs/3.0.13/governance/campaign/tasks/report_plan_outcome), [`get_plan_audit_logs`](/dist/docs/3.0.13/governance/campaign/tasks/get_plan_audit_logs) | Multi-party governance semantics (buyer vs seller approval conflicts, audit provenance verification, tie-breaking under Embedded Human Judgment) are not yet settled. | +| `trusted_match.core` | [TMP](/dist/docs/3.0.13/trusted-match/) | Privacy architecture is thinly specified relative to what a regulator deep-dive will demand. Exposure tokens, country-partitioned identity, and Offer macros are expected to change. | +| `sponsored_intelligence.core` | [`si_get_offering`](/dist/docs/3.0.13/sponsored-intelligence/tasks/si_get_offering), [`si_initiate_session`](/dist/docs/3.0.13/sponsored-intelligence/tasks/si_initiate_session), [`si_send_message`](/dist/docs/3.0.13/sponsored-intelligence/tasks/si_send_message), [`si_terminate_session`](/dist/docs/3.0.13/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.0.13/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). | + +Graduation progress and notice of upcoming breaking changes will be called out in the [release notes](/dist/docs/3.0.13/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.0.13/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.0.13/reference/glossary.mdx b/dist/docs/3.0.13/reference/glossary.mdx new file mode 100644 index 0000000000..76d119baa8 --- /dev/null +++ b/dist/docs/3.0.13/reference/glossary.mdx @@ -0,0 +1,440 @@ +--- +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.0.13/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 third-party data discovered via `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 reference (pointing to a specific data provider signal) 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`. + +**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.0.13/trusted-match), which adds structural privacy separation and multi-surface support. See [AXE documentation](/dist/docs/3.0.13/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.0.13/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.0.13/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 catalogs via `/.well-known/adagents.json` on their domain, enabling discovery and authorization verification. See [Data Provider Guide](/dist/docs/3.0.13/signals/data-providers). + +**Data Provider Domain** +The domain where a data provider publishes their signal catalog (e.g., `polk.com`). Used in `signal_id` objects to reference signals: `{ "data_provider_domain": "polk.com", "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`, `search`) through intent (`add_to_cart`, `initiate_checkout`) to conversion (`purchase`, `lead`, `complete_registration`). Each event has an `event_id` (for deduplication), `event_type`, `event_time`, and optional `user_match` and `custom_data`. 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`, `refund`). Covers the full lifecycle: engagement (`select_content`, `share`), e-commerce (`add_to_cart`, `remove_from_cart`, `viewed_cart`, `purchase`, `refund`), lead management (`lead`, `qualify_lead`, `close_convert_lead`, `disqualify_lead`), 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.0.13/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.0.13/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.0.13/building/concepts/security-model#layer-3-idempotency--at-most-once-execution) for the narrative and [Security: Request Safety](/dist/docs/3.0.13/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.0.13/building/by-layer/L1/security#idempotency). + +**Impressions** (Media Buy Protocol) +The number of times an ad is displayed, used for pricing and delivery tracking. + +**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.0.13/trusted-match/specification). + +**Optimization Goal** +A single entry in a package's `optimization_goals` array. Two 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) and `kind: "metric"` (optimize for a seller-native delivery metric — clicks, views, completed views, engagements, attention, etc. — 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. 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. + +**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`. Uses the same values as `delegation_type` in adagents.json. 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. + +**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`. + +**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, may differ from signal_id. + +**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 Catalog** +A collection of signal definitions published by a data provider via `/.well-known/adagents.json`. The catalog includes signal metadata (id, name, value_type, tags) and authorization declarations for signals agents. See [Data Provider Guide](/dist/docs/3.0.13/signals/data-providers). + +**Signal Definition** +A single signal entry in a data provider's signal catalog, containing: `id` (unique identifier), `name` (human-readable), `value_type` (binary, categorical, or numeric), and optional fields like `description`, `tags`, `allowed_values`, and `range`. + +**Signal Discovery** +The process of finding relevant data signals (audiences, contextual, geographical, temporal) using natural language descriptions or structured ID lookup. + +**Signal ID** +A structured identifier referencing a signal. Uses `source` as a discriminator with two variants: `catalog` signals reference a data provider's published catalog (`data_provider_domain` + `id`, verifiable); `agent` signals are native to the signals agent (`agent_url` + `id`, trust-based). Example catalog signal: `{ "source": "catalog", "data_provider_domain": "polk.com", "id": "likely_tesla_buyers" }`. Example agent signal: `{ "source": "agent", "agent_url": "https://liveramp.com/signals", "id": "custom_segment" }`. + +**Signal Source** +The origin type for a signal identifier: `catalog` (from a data provider's published catalog, authorization verifiable via adagents.json) or `agent` (native to the signals agent, not externally verifiable). See [Data Provider Guide](/dist/docs/3.0.13/signals/data-providers). + +**Signal Tags** +Tags used to group related signals within a data provider's catalog. Enable efficient authorization (authorize "all automotive signals" rather than listing individual IDs). Tags must be lowercase alphanumeric with underscores/hyphens. + +**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.0.13/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.0.13/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.0.13/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.0.13/building/concepts/security-model) for the narrative and [Security: Webhook URL validation](/dist/docs/3.0.13/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.0.13/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.0.13/trusted-match). + +## U + +**UID (Universal ID)** +An already-resolved, privacy-preserving user token from an identity graph. Used for cross-platform user matching. Distinct from [Hashed Identifiers](#hashed-identifier): UIDs are pre-resolved 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.0.13/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 \ No newline at end of file diff --git a/dist/docs/3.0.13/reference/gmsf-reference.mdx b/dist/docs/3.0.13/reference/gmsf-reference.mdx new file mode 100644 index 0000000000..6c5eae0582 --- /dev/null +++ b/dist/docs/3.0.13/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.0.13/reference/implementor-faq.mdx b/dist/docs/3.0.13/reference/implementor-faq.mdx new file mode 100644 index 0000000000..521e7dbdae --- /dev/null +++ b/dist/docs/3.0.13/reference/implementor-faq.mdx @@ -0,0 +1,328 @@ +--- +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: Does `get_products` require specific parameters like budget, dates, and objectives? + +**A:** Currently, `get_products` only has three parameters: `brief` (natural language string), `brand`, and `filters` (structured filters). Campaign details like budget, dates, and objectives should be included in the natural language `brief`. + +**Future:** Structured parameters for budget, dates, objectives, and targeting are being considered to reduce conversational back-and-forth. Track the roadmap for updates. + +**Current Workaround:** Include these details in your brief: +```json +{ + "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:** All targeting requests currently go in the natural language `brief`. There's no structured targeting filter yet. + +**Example:** +```json +{ + "brand": { + "domain": "energydrink.com" + }, + "brief": "Target sports fans, ages 18-34, in major US cities for energy drink campaign" +} +``` + +The publisher's AI interprets this and returns relevant products. Future versions may add structured targeting filters. + +### Q: What does "no brief = standard catalog" mean? We don't have a standard catalog. + +**A:** When buyers omit the `brief` field, they're requesting your standard catalog - baseline products available to all advertisers without custom recommendations. + +**If you don't offer a standard catalog**, 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 standard catalog**, return standard products matching the provided filters (format types, delivery type, etc.). + +### Q: Should buyers call `list_creative_formats` before or after `get_products`? + +**A:** **After `get_products`**. The recommended flow is: + +1. Call `get_products` with your campaign brief/filters +2. Review the products returned (they include `format_ids` arrays) +3. Call `list_creative_formats` for the specific format IDs you need details on +4. Verify creative requirements match your capabilities +5. Call `create_media_buy` for selected products + +**Why:** You don't know which format IDs you need until you see which products are available. Getting all formats upfront is inefficient. + +## 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.0.13/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: Why is it called `format_ids` instead of `ad_units`? + +**A:** AdCP uses protocol-agnostic terminology: + +- **`format_ids`**: Structured references to creative format specifications (e.g., `{agent_url: "...", id: "video_30s_hosted"}`) +- **Ad units**: Platform-specific terminology (like "300x250 banner") + +Formats are abstract specifications that work across all ad platforms. The `_ids` suffix indicates these are references—use `list_creative_formats` to get full format objects. + +### 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_id": { "agent_url": "...", "id": "product_carousel" }, + "catalogs": [{ + "catalog_id": "product-feed", + "type": "product" + }] +} +``` + +## 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_ids": [...] +} +``` + +Buyers can discover the agent's portfolio via [`get_adcp_capabilities`](/dist/docs/3.0.13/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({ + 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:** Check that you're using structured `format_ids`, not strings: + +**Wrong:** +```json +{ + "filters": { + "format_ids": ["video_30s"] // ❌ Strings don't work + } +} +``` + +**Correct:** +```json +{ + "filters": { + "format_ids": [ + { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "video_30s_hosted" + } + ] + } +} +``` + +### 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.0.13/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.0.13/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.0.13/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.0.13/media-buy/task-reference/) for detailed API documentation +2. Review [Brief Expectations](/dist/docs/3.0.13/media-buy/product-discovery/brief-expectations) for discovery guidance +3. See [Media Products](/dist/docs/3.0.13/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.0.13/reference/known-limitations.mdx b/dist/docs/3.0.13/reference/known-limitations.mdx new file mode 100644 index 0000000000..96a45a2da4 --- /dev/null +++ b/dist/docs/3.0.13/reference/known-limitations.mdx @@ -0,0 +1,80 @@ +--- +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.0.13/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.0.13/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.0.13/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. + +## 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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/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 + +- **Reference test vectors are partial.** [Conformance](/dist/docs/3.0.13/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.0.13/media-buy/advanced-topics/accountability). A structured SLA declaration is deferred. + +## 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.0.13/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.0.13/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.0.13/building/concepts/security-model) — the threat model and layered defense +- [Privacy Considerations](/dist/docs/3.0.13/reference/privacy-considerations) — cross-protocol privacy entry point +- [Experimental Status](/dist/docs/3.0.13/reference/experimental-status) — surfaces shipped in 3.x but not yet frozen +- [Versioning & Governance](/dist/docs/3.0.13/reference/versioning) — cadence, support windows, and how limitations become follow-ups +- [Roadmap](/dist/docs/3.0.13/reference/roadmap) — what's coming next diff --git a/dist/docs/3.0.13/reference/media-channel-taxonomy.mdx b/dist/docs/3.0.13/reference/media-channel-taxonomy.mdx new file mode 100644 index 0000000000..0f4c955c45 --- /dev/null +++ b/dist/docs/3.0.13/reference/media-channel-taxonomy.mdx @@ -0,0 +1,792 @@ +--- +title: Media Channel Taxonomy +description: "AdCP media channel taxonomy: the 19 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**: Draft Specification +**Version**: 1.0.0-draft +**Last Updated**: 2026-01-23 +</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 + +## 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/rev-share) rather than where content appears. + +#### `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 `format_ids` 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-draft (2026-03-13) + +- 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 + +### 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.0.13/reference/migration/attribution.mdx b/dist/docs/3.0.13/reference/migration/attribution.mdx new file mode 100644 index 0000000000..c0ddbbdcf0 --- /dev/null +++ b/dist/docs/3.0.13/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.0.13/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.0.13/media-buy/conversion-tracking/index"> + Configure event sources, send conversion events, and set attribution windows. +</Card> + +--- + +**Related:** [Channels](/dist/docs/3.0.13/reference/migration/channels) | [Pricing](/dist/docs/3.0.13/reference/migration/pricing) | [Geo targeting](/dist/docs/3.0.13/reference/migration/geo-targeting) | [Creatives](/dist/docs/3.0.13/reference/migration/creatives) | [Catalogs](/dist/docs/3.0.13/reference/migration/catalogs) | [AdCP 3.0 overview](/dist/docs/3.0.13/reference/whats-new-in-v3) diff --git a/dist/docs/3.0.13/reference/migration/audiences.mdx b/dist/docs/3.0.13/reference/migration/audiences.mdx new file mode 100644 index 0000000000..aa562c4392 --- /dev/null +++ b/dist/docs/3.0.13/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.0.13/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.0.13/signals/overview"> + Full reference for signal discovery, activation, and pricing models. +</Card> + +--- + +**Related:** [Brand identity](/dist/docs/3.0.13/reference/migration/brand-identity) | [Optimization goals](/dist/docs/3.0.13/reference/migration/optimization-goals) | [AdCP 3.0 overview](/dist/docs/3.0.13/reference/whats-new-in-v3) diff --git a/dist/docs/3.0.13/reference/migration/brand-identity.mdx b/dist/docs/3.0.13/reference/migration/brand-identity.mdx new file mode 100644 index 0000000000..5d37d3a9bd --- /dev/null +++ b/dist/docs/3.0.13/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.0.13/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.0.13/brand-protocol/brand-json"> + Full reference for brand.json variants, the brand registry, and BrandRef resolution. +</Card> + +--- + +**Related:** [Channels](/dist/docs/3.0.13/reference/migration/channels) | [Catalogs](/dist/docs/3.0.13/reference/migration/catalogs) | [Brand Protocol](/dist/docs/3.0.13/brand-protocol) | [AdCP 3.0 overview](/dist/docs/3.0.13/reference/whats-new-in-v3) diff --git a/dist/docs/3.0.13/reference/migration/catalogs.mdx b/dist/docs/3.0.13/reference/migration/catalogs.mdx new file mode 100644 index 0000000000..298b383f61 --- /dev/null +++ b/dist/docs/3.0.13/reference/migration/catalogs.mdx @@ -0,0 +1,366 @@ +--- +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) + +```json +{ + "$schema": "/schemas/3.0.13/core/creative-manifest.json", + "format_id": { + "agent_url": "https://creatives.example.com", + "id": "product_carousel" + }, + "assets": { + "product_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 +- **Catalogs** are `catalog` asset types in the `assets` map, keyed by a role name (e.g., `product_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 + +``` +list_creative_formats → check catalog assets → sync_catalogs → sync_creatives with catalog assets +``` + +1. Discover what catalogs a format needs via `catalog` asset types in the format's `assets` +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.0.13/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.0.13/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"> + Call `list_creative_formats` and check for `catalog` asset types in each format's `assets` to understand what catalog types and fields are needed. + </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.0.13/reference/migration/channels) | [Pricing](/dist/docs/3.0.13/reference/migration/pricing) | [Geo targeting](/dist/docs/3.0.13/reference/migration/geo-targeting) | [Creatives](/dist/docs/3.0.13/reference/migration/creatives) | [Attribution](/dist/docs/3.0.13/reference/migration/attribution) | [AdCP 3.0 overview](/dist/docs/3.0.13/reference/whats-new-in-v3) diff --git a/dist/docs/3.0.13/reference/migration/channels.mdx b/dist/docs/3.0.13/reference/migration/channels.mdx new file mode 100644 index 0000000000..ee81d52f8c --- /dev/null +++ b/dist/docs/3.0.13/reference/migration/channels.mdx @@ -0,0 +1,165 @@ +--- +title: "Migrating channels" +description: "Migrate AdCP channels from v2 to v3. Maps v2's 9 format-oriented channels to v3's 19 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 19 planning-oriented channels that reflect how buyers allocate budgets. Five channels carry over unchanged, while the rest are split, removed, or renamed. + +## 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 19 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 +``` + +| 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 | + +<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.0.13/protocol/get-adcp-capabilities-response.json", + "adcp": { + "major_versions": [3], + "idempotency": { "supported": true, "replay_ttl_seconds": 86400 } + }, + "supported_protocols": ["media_buy"], + "account": { + "supported_billing": ["operator", "agent"] + }, + "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` to discover which channels a seller supports before filtering `get_products` requests. The `portfolio.primary_channels` field lists the seller's main channels. + +## 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.0.13/reference/media-channel-taxonomy"> + Full definitions and design rationale for all 19 v3 channels. +</Card> + +--- + +**Related:** [Pricing](/dist/docs/3.0.13/reference/migration/pricing) | [Geo targeting](/dist/docs/3.0.13/reference/migration/geo-targeting) | [Creatives](/dist/docs/3.0.13/reference/migration/creatives) | [Catalogs](/dist/docs/3.0.13/reference/migration/catalogs) | [Attribution](/dist/docs/3.0.13/reference/migration/attribution) | [AdCP 3.0 overview](/dist/docs/3.0.13/reference/whats-new-in-v3) diff --git a/dist/docs/3.0.13/reference/migration/creatives.mdx b/dist/docs/3.0.13/reference/migration/creatives.mdx new file mode 100644 index 0000000000..a8e53a20fd --- /dev/null +++ b/dist/docs/3.0.13/reference/migration/creatives.mdx @@ -0,0 +1,368 @@ +--- +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 + +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.0.13/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. + +### 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.0.13/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": { + "url_type": "tracking_pixel" + } + } + ] +} +``` + +### 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.0.13/creative/index"> + Full creative documentation: formats, asset types, manifests, and creative agents. +</Card> + +--- + +**Related:** [Channels](/dist/docs/3.0.13/reference/migration/channels) | [Pricing](/dist/docs/3.0.13/reference/migration/pricing) | [Geo targeting](/dist/docs/3.0.13/reference/migration/geo-targeting) | [Catalogs](/dist/docs/3.0.13/reference/migration/catalogs) | [Attribution](/dist/docs/3.0.13/reference/migration/attribution) | [AdCP 3.0 overview](/dist/docs/3.0.13/reference/whats-new-in-v3) diff --git a/dist/docs/3.0.13/reference/migration/geo-targeting.mdx b/dist/docs/3.0.13/reference/migration/geo-targeting.mdx new file mode 100644 index 0000000000..a6c46f062f --- /dev/null +++ b/dist/docs/3.0.13/reference/migration/geo-targeting.mdx @@ -0,0 +1,204 @@ +--- +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 and postal targeting now require explicit system specification, and codes are grouped by 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` (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.0.13/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.0.13/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 | + +Supported systems are defined in the `metro-system.json` enum: `nielsen_dma`, `uk_itl1`, `uk_itl2`, `eurostat_nuts2`, `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 system: +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.0.13/core/targeting.json", + "geo_postal_areas": [ + { "system": "us_zip", "values": ["10001", "90210"] } + ] +} +``` + +### Postal systems + +| System | Coverage | Precision | Example codes | +|--------|----------|-----------|---------------| +| `us_zip` | US | 5-digit ZIP | `10001`, `90210` | +| `us_zip_plus_four` | US | ZIP+4 | `10001-1234` | +| `gb_outward` | UK | Area-level | `SW1`, `EC2` | +| `gb_full` | UK | Full postcode | `SW1A 1AA` | +| `ca_fsa` | Canada | Forward sortation area | `M5V`, `V6B` | +| `ca_full` | Canada | Full postal code | `M5V 2T6` | +| `de_plz` | Germany | Postleitzahl | `10115`, `80331` | +| `fr_code_postal` | France | Code postal | `75001`, `13001` | +| `au_postcode` | Australia | Postcode | `2000`, `3000` | +| `ch_plz` | Switzerland | Postleitzahl | `8000`, `3000` | +| `at_plz` | Austria | Postleitzahl | `1010`, `6020` | + +Supported systems are defined in the `postal-system.json` enum: `us_zip`, `us_zip_plus_four`, `gb_outward`, `gb_full`, `ca_fsa`, `ca_full`, `de_plz`, `fr_code_postal`, `au_postcode`, `ch_plz`, `at_plz`. + +## Exclusion targeting + +v3 adds `_exclude` variants for metro and postal targeting: + +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.0.13/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.0.13/protocol/get-adcp-capabilities-response.json", + "adcp": { + "major_versions": [3], + "idempotency": { "supported": true, "replay_ttl_seconds": 86400 } + }, + "supported_protocols": ["media_buy"], + "account": { + "supported_billing": ["operator", "agent"] + }, + "media_buy": { + "execution": { + "targeting": { + "geo_countries": true, + "geo_regions": true, + "geo_metros": { + "nielsen_dma": true + }, + "geo_postal_areas": { + "us_zip": true + } + } + } + } +} +``` + +The `geo_metros` and `geo_postal_areas` objects use boolean properties to indicate which systems are supported. 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.0.13/core/targeting.json", + "geo_countries": ["US", "CA"], + "geo_regions": ["US-NY", "US-CA"], + "geo_metros": [ + { "system": "nielsen_dma", "values": ["501", "803"] } + ], + "geo_postal_areas": [ + { "system": "us_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 flat arrays into `{ "system": "...", "values": [...] }` objects. + </Step> + <Step title="Choose systems"> + For US-only code, use `nielsen_dma` and `us_zip`. For international, add the appropriate 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.0.13/media-buy/advanced-topics/targeting"> + Full targeting reference: audiences, contextual, geographic, and device targeting. +</Card> + +--- + +**Related:** [Channels](/dist/docs/3.0.13/reference/migration/channels) | [Pricing](/dist/docs/3.0.13/reference/migration/pricing) | [Creatives](/dist/docs/3.0.13/reference/migration/creatives) | [Catalogs](/dist/docs/3.0.13/reference/migration/catalogs) | [Attribution](/dist/docs/3.0.13/reference/migration/attribution) | [AdCP 3.0 overview](/dist/docs/3.0.13/reference/whats-new-in-v3) diff --git a/dist/docs/3.0.13/reference/migration/index.mdx b/dist/docs/3.0.13/reference/migration/index.mdx new file mode 100644 index 0000000000..88514fb57a --- /dev/null +++ b/dist/docs/3.0.13/reference/migration/index.mdx @@ -0,0 +1,124 @@ +--- +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.0.13/reference/whats-new-in-v3); for release-candidate deltas see [prerelease upgrade notes](/dist/docs/3.0.13/reference/migration/prerelease-upgrades); for SDK versions that support 3.0 see [Schemas and SDKs](/dist/docs/3.0.13/building/by-layer/L0/schemas#adcp-3-0-support). + +<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.0.13/reference/v2-sunset) for the full timeline, AAO registry policy, and why v2 is not safe for interoperable production. +</Warning> + +<Info> +**Starting from v2?** See the [v3 readiness checklist](/dist/docs/3.0.13/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.0.13/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.0.13/reference/migration/channels) | +| Channels | `video` split into `olv`, `linear_tv`, `cinema` | Restructure | [Channels migration](/dist/docs/3.0.13/reference/migration/channels) | +| Channels | 10 new channels added (including `sponsored_intelligence`) | Rename | [Channels migration](/dist/docs/3.0.13/reference/migration/channels) | +| Pricing | `fixed_rate` → `fixed_price` | Rename | [Pricing migration](/dist/docs/3.0.13/reference/migration/pricing) | +| Pricing | `price_guidance.floor` → `floor_price` | Rename | [Pricing migration](/dist/docs/3.0.13/reference/migration/pricing) | +| Pricing | Price guidance restructured | Restructure | [Pricing migration](/dist/docs/3.0.13/reference/migration/pricing) | +| Creatives | `creative_ids` → `creative_assignments` with weights | Restructure | [Creatives migration](/dist/docs/3.0.13/reference/migration/creatives) | +| Creatives | Asset discovery via `assets` array | New requirement | [Creatives migration](/dist/docs/3.0.13/reference/migration/creatives) | +| Catalogs | `promoted_offerings` → `sync_catalogs` | Restructure | [Catalogs migration](/dist/docs/3.0.13/reference/migration/catalogs) | +| Geo targeting | Flat arrays → system specification required | Restructure | [Geo targeting migration](/dist/docs/3.0.13/reference/migration/geo-targeting) | +| Optimization | `optimization_goal` (single) → `optimization_goals` (array, discriminated union) | Restructure | [Optimization goals migration](/dist/docs/3.0.13/reference/migration/optimization-goals) | +| Brand identity | `brand_manifest` → `brand` ref (`{ domain, brand_id }`) | Restructure | [Brand identity migration](/dist/docs/3.0.13/reference/migration/brand-identity) | +| Capability discovery | `adcp-extension.json` → `get_adcp_capabilities` | Restructure | [Capability discovery](/dist/docs/3.0.13/protocol/get_adcp_capabilities) | +| Signals | Delivery flattening, pricing restructure | Restructure | [Signals migration](/dist/docs/3.0.13/reference/migration/signals) | +| Audiences | `external_id` promoted to required top-level field | Restructure | [Audiences migration](/dist/docs/3.0.13/reference/migration/audiences) | +| Attribution | Integer day counts → `Duration` objects | Restructure | [Attribution migration](/dist/docs/3.0.13/reference/migration/attribution) | +| Products | `buying_mode` required on every `get_products` request | New requirement | [get_products reference](/dist/docs/3.0.13/media-buy/task-reference/get_products) | +| Media buy status | `pending_activation` → `pending_start` | Rename | [Media buys](/dist/docs/3.0.13/media-buy/media-buys) | +| Media buy status | `pending_creatives` added (no creatives assigned yet) | New requirement | [Media buys](/dist/docs/3.0.13/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.0.13/building/by-layer/L3/task-lifecycle) | +| Capabilities | `compliance_testing` capability block on `get_adcp_capabilities` | Additive | [Capability discovery](/dist/docs/3.0.13/protocol/get_adcp_capabilities#compliance_testing) | +| Idempotency | `idempotency_key` required on all mutating requests (UUID v4) | New requirement | [Security § Idempotency](/dist/docs/3.0.13/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.0.13/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.0.13/building/by-layer/L3/webhooks) | +| Webhook idempotency | `idempotency_key` required on every webhook payload | New requirement | [Webhooks § Reliability](/dist/docs/3.0.13/building/by-layer/L3/webhooks) | +| Governance | `governance_context` is a signed JWS verified via governance agent JWKS | Restructure | [Governance](/dist/docs/3.0.13/governance/campaign) | +| IO approval | `MediaBuy.pending_approval` removed — approval is a task-layer object | Restructure | [Media buy lifecycle](/dist/docs/3.0.13/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.0.13/governance/annex-iii-obligations) | + +<Warning> +`buying_mode` on `get_products` is checked by storyboard testing. Sellers must handle all three buying modes (`browse`, `brief`, `refine`). See the [v3 readiness checklist](/dist/docs/3.0.13/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` (implicit accounts), `list_accounts` when `true` (explicit accounts) | All buyers — the seller's `require_operator_auth` flag 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 long-term posture. After August 1, 2026, v3-only is the required configuration — see the [v2 sunset page](/dist/docs/3.0.13/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 version via `adcp_major_version` and sellers advertise the versions they accept via `major_versions`. See [version negotiation](/dist/docs/3.0.13/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. + +## Deep-dive pages + +<CardGroup cols={2}> + <Card title="Channels" icon="tv" href="/dist/docs/3.0.13/reference/migration/channels"> + `native` removed, `video` split, 10 new channels + </Card> + <Card title="Pricing" icon="tag" href="/dist/docs/3.0.13/reference/migration/pricing"> + Field renames and price guidance restructure + </Card> + <Card title="Creatives" icon="palette" href="/dist/docs/3.0.13/reference/migration/creatives"> + Creative assignments with weights and asset discovery + </Card> + <Card title="Catalogs" icon="database" href="/dist/docs/3.0.13/reference/migration/catalogs"> + `promoted_offerings` to first-class `sync_catalogs` + </Card> + <Card title="Geo targeting" icon="map" href="/dist/docs/3.0.13/reference/migration/geo-targeting"> + System specification for global geo support + </Card> + <Card title="Optimization goals" icon="bullseye" href="/dist/docs/3.0.13/reference/migration/optimization-goals"> + Single goal to array with discriminated union + </Card> + <Card title="Brand identity" icon="fingerprint" href="/dist/docs/3.0.13/reference/migration/brand-identity"> + `brand_manifest` to `brand` ref via `brand.json` + </Card> + <Card title="Signals" icon="signal" href="/dist/docs/3.0.13/reference/migration/signals"> + Delivery flattening and pricing restructure + </Card> + <Card title="Audiences" icon="users" href="/dist/docs/3.0.13/reference/migration/audiences"> + `external_id` promotion to required field + </Card> + <Card title="Attribution" icon="link" href="/dist/docs/3.0.13/reference/migration/attribution"> + Integer days to structured `Duration` objects + </Card> +</CardGroup> diff --git a/dist/docs/3.0.13/reference/migration/media-buy-status.mdx b/dist/docs/3.0.13/reference/migration/media-buy-status.mdx new file mode 100644 index 0000000000..1aacff8269 --- /dev/null +++ b/dist/docs/3.0.13/reference/migration/media-buy-status.mdx @@ -0,0 +1,92 @@ +--- +title: "Migrating to `media_buy_status` (3.1)" +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) + +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 | +|---------|-----|-----| +| `create_media_buy` success response | `status` (MediaBuyStatus) at root | `media_buy_status` (MediaBuyStatus) at root; legacy `status` is `deprecated: true` | +| `update_media_buy` success response | Same | Same | +| `get_media_buys` items | `media_buys[].status` (MediaBuyStatus) | Unchanged in 3.1 — 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 in 3.1 — renamed in 4.0 ([#4905](https://github.com/adcontextprotocol/adcp/issues/4905)) | +| `core/media-buy.json` | `status` (MediaBuyStatus) | Unchanged in 3.1 — 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 conformance + +- **Sellers** SHOULD emit `media_buy_status` on `create_media_buy` and `update_media_buy` success responses. MAY continue emitting the deprecated top-level `status: MediaBuyStatus` during the 3.1 deprecation window. +- **Buyers** MUST prefer `media_buy_status` when present. MAY fall back to legacy `status` for compatibility with sellers still on the legacy form. +- **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 + +The legacy `status` field carries `deprecated: true` (JSON Schema 2020-12). Propagation through 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 toolchain doesn't surface the deprecation, the storyboard gate is your enforcement signal. + +## 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. + +## Forward-compatible buyer code + +Code that needs to span 3.0, 3.1, and 4.0 sellers: + +```js +// Prefer media_buy_status (3.1+), fall back to status (3.0 + 4.0 nested-surface compat) +const mediaBuyStatus = response.media_buy_status ?? response.status; +const buyLifecycleStatus = mediaBuy.media_buy_status ?? mediaBuy.status; +``` + +## Related + +- [create_media_buy reference](/dist/docs/3.0.13/media-buy/task-reference/create_media_buy) — canonical response examples +- [Media buy lifecycle](/dist/docs/3.0.13/media-buy/media-buys/lifecycle) — the MediaBuyStatus state machine +- [Envelope task-status](/dist/docs/3.0.13/building/by-layer/L3/task-lifecycle) — TaskStatus semantics diff --git a/dist/docs/3.0.13/reference/migration/optimization-goals.mdx b/dist/docs/3.0.13/reference/migration/optimization-goals.mdx new file mode 100644 index 0000000000..c2ab0161e1 --- /dev/null +++ b/dist/docs/3.0.13/reference/migration/optimization-goals.mdx @@ -0,0 +1,193 @@ +--- +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.0.13/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`, `attention_seconds`, `attention_score`, `engagements`, `follows`, `saves`, `profile_visits`, `reach`. + +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.0.13/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.0.13/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.0.13/media-buy/conversion-tracking/index"> + Configure event sources, send conversion events, and optimize delivery goals. +</Card> + +--- + +**Related:** [Channels](/dist/docs/3.0.13/reference/migration/channels) | [Pricing](/dist/docs/3.0.13/reference/migration/pricing) | [Signals](/dist/docs/3.0.13/reference/migration/signals) | [AdCP 3.0 overview](/dist/docs/3.0.13/reference/whats-new-in-v3) diff --git a/dist/docs/3.0.13/reference/migration/prerelease-upgrades.mdx b/dist/docs/3.0.13/reference/migration/prerelease-upgrades.mdx new file mode 100644 index 0000000000..c25dbfc728 --- /dev/null +++ b/dist/docs/3.0.13/reference/migration/prerelease-upgrades.mdx @@ -0,0 +1,227 @@ +--- +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.0.13/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.0.13/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 the webhook-signing JWK in your JWKS at `jwks_uri` (referenced from `brand.json` `agents[]`). Set `adcp_use: "webhook-signing"` on the JWK itself (NOT as a field on the `agents[]` entry), and keep `kid` unique across purposes within the JWKS. 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.0.13/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.0.13/media-buy/media-buys#lifecycle-states) 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 webhook-signing JWK in their JWKS at `jwks_uri` with `adcp_use: "webhook-signing"` on the JWK, and keep `kid` unique across purposes in the JWKS. 14-step webhook verifier checklist in the [Security guide](/dist/docs/3.0.13/building/by-layer/L1/security). HMAC-SHA256 remains a legacy fallback through 3.x (the entire `authentication` object is removed in 4.0). +- **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/implementation/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.0.13/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 implicit account references. + +--- + +## Need help? + +- **Community**: [Slack](https://join.slack.com/t/agenticads/shared_invite/zt-3c5sxvdjk-x0rVmLB3OFHVUp~WutVWZg) — 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.0.13/reference/migration) diff --git a/dist/docs/3.0.13/reference/migration/pricing.mdx b/dist/docs/3.0.13/reference/migration/pricing.mdx new file mode 100644 index 0000000000..23c07826b0 --- /dev/null +++ b/dist/docs/3.0.13/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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/pricing-options/`. + </Step> +</Steps> + +<Card title="Media products" icon="arrow-right" href="/dist/docs/3.0.13/media-buy/product-discovery/media-products"> + How products declare pricing options, channels, and capabilities. +</Card> + +--- + +**Related:** [Channels](/dist/docs/3.0.13/reference/migration/channels) | [Geo targeting](/dist/docs/3.0.13/reference/migration/geo-targeting) | [Creatives](/dist/docs/3.0.13/reference/migration/creatives) | [Catalogs](/dist/docs/3.0.13/reference/migration/catalogs) | [Attribution](/dist/docs/3.0.13/reference/migration/attribution) | [AdCP 3.0 overview](/dist/docs/3.0.13/reference/whats-new-in-v3) diff --git a/dist/docs/3.0.13/reference/migration/signals.mdx b/dist/docs/3.0.13/reference/migration/signals.mdx new file mode 100644 index 0000000000..52d11e25a8 --- /dev/null +++ b/dist/docs/3.0.13/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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/signals/overview"> + Full reference for signal discovery, activation, usage reporting, and pricing models. +</Card> + +--- + +**Related:** [Pricing](/dist/docs/3.0.13/reference/migration/pricing) | [Optimization goals](/dist/docs/3.0.13/reference/migration/optimization-goals) | [AdCP 3.0 overview](/dist/docs/3.0.13/reference/whats-new-in-v3) diff --git a/dist/docs/3.0.13/reference/migration/v3-readiness.mdx b/dist/docs/3.0.13/reference/migration/v3-readiness.mdx new file mode 100644 index 0000000000..d54abf892e --- /dev/null +++ b/dist/docs/3.0.13/reference/migration/v3-readiness.mdx @@ -0,0 +1,162 @@ +--- +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.0.13/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.0.13/reference/migration). v2 is fully deprecated on August 1, 2026 (UTC) — see the [v2 sunset page](/dist/docs/3.0.13/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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/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. Your agent must accept and handle it. The three modes are `browse`, `brief`, and `refine`. + +<Card title="get_products reference" icon="arrow-right" href="/dist/docs/3.0.13/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.0.13/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. + +| 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": "..." +} +``` + +--- + +## 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.0.13/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.0.13/reference/migration). diff --git a/dist/docs/3.0.13/reference/privacy-considerations.mdx b/dist/docs/3.0.13/reference/privacy-considerations.mdx new file mode 100644 index 0000000000..9cea8b51c7 --- /dev/null +++ b/dist/docs/3.0.13/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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/building/concepts/security-model#data-handling-and-subprocessors). + +### Retention + +The protocol describes cache retention for idempotency (see [Layer 3: Idempotency](/dist/docs/3.0.13/building/concepts/security-model#layer-3-idempotency--at-most-once-execution)) and audit-log retention for governance (see [Layer 5: Auditability](/dist/docs/3.0.13/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.0.13/trusted-match/privacy-architecture). + +For TMP-specific deployments, see [TMP Data Protection Roles](/dist/docs/3.0.13/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.0.13/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.0.13/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.0.13/trusted-match/privacy-architecture), including TEE attestation when deployed. +- **Threat model and operational controls** — the [Security Model](/dist/docs/3.0.13/building/concepts/security-model), including the [data handling and subprocessors checklist](/dist/docs/3.0.13/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.0.13/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.0.13/trusted-match/privacy-architecture)** — the structural separation model, with TEE attestation details +- **[Security Model](/dist/docs/3.0.13/building/concepts/security-model)** — threat model, layered defense, deployment checklist +- **[Security (implementation reference)](/dist/docs/3.0.13/building/by-layer/L1/security)** — normative rules for auth, idempotency, SSRF, governance verification +- **[Privacy posture across domains](/dist/docs/3.0.13/protocol/architecture#privacy-posture-across-domains)** — the summary table +- **[Known Limitations](/dist/docs/3.0.13/reference/known-limitations)** — what the protocol does not do on privacy diff --git a/dist/docs/3.0.13/reference/release-notes.mdx b/dist/docs/3.0.13/reference/release-notes.mdx new file mode 100644 index 0000000000..cd0dc40625 --- /dev/null +++ b/dist/docs/3.0.13/reference/release-notes.mdx @@ -0,0 +1,1313 @@ +--- +title: Release Notes +description: "AdCP release notes with version highlights and migration guides. Covers breaking changes, new tasks, and schema updates for each major release." +"og:title": "AdCP — Release Notes" +--- + + +High-level summaries of major AdCP releases with migration guidance. For detailed technical 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.0.13/reference/versioning). For v2 end-of-life see the [v2 sunset page](/dist/docs/3.0.13/reference/v2-sunset). + +--- + +## 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.0.13/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.0.13/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 behaviour 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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/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[]`). The JWK carries `adcp_use: "webhook-signing"` to distinguish it from the request-signing key; `kid` values MUST be unique across purposes within a JWKS. 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.0.13/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.0.13/building/verification/compliance-catalog) and [What's new in v3](/dist/docs/3.0.13/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.0.13/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 webhook-signing JWK in your JWKS at `jwks_uri` (JWKS is referenced from `brand.json` `agents[]`) with `adcp_use: "webhook-signing"` on the JWK and a `kid` unique across purposes. 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.0.13/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.0.13/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 [lifecycle states](/dist/docs/3.0.13/media-buy/media-buys#lifecycle-states). +- **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.0.13/reference/migration). +- **Upgrading from a prerelease?** Go to the [prerelease upgrade notes](/dist/docs/3.0.13/reference/migration/prerelease-upgrades). +- **New to AdCP?** Read the [3.0 overview](/dist/docs/3.0.13/reference/whats-new-in-v3) and then [get started](/dist/docs/3.0.13/quickstart). + +--- + +## Version 3.0.0-rc.3 + +**Status:** Release Candidate (superseded by 3.0.0) | [AdCP 3.0 overview](/dist/docs/3.0.13/reference/whats-new-in-v3) | [SDK support](/dist/docs/3.0.13/building/by-layer/L0/schemas#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.0.13/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.0.13/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 implicit account flows. + +13. **Governance Agent Sync** — `sync_governance` task for syncing governance agent endpoints to specific accounts. Supports both explicit accounts (`account_id`) and implicit 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.0.13/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** — `ch_plz` and `at_plz` added to the postal-system enum, with corresponding updates to `get_adcp_capabilities`. + +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` (full catalog), 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.0.13/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.0.13/media-buy/commerce-media) and [Catalogs](/dist/docs/3.0.13/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. **Signal Catalog** - 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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/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 system | +| Asset discovery | `assets_required: [...]` | `assets: [{ asset_id, required }]` | + +See [AdCP 3.0 overview](/dist/docs/3.0.13/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.0.13/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.0.13/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.0.13/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.0.13/` - 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.0.13/reference/versioning) for the canonical version tiers, release cadence, 3.x stability guarantees, and deprecation policy. See the [v2 sunset page](/dist/docs/3.0.13/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](https://join.slack.com/t/agenticads/shared_invite/zt-3c5sxvdjk-x0rVmLB3OFHVUp~WutVWZg) +- **Issues** - [GitHub Issues](https://github.com/adcontextprotocol/adcp/issues) +- **Support** - support@adcontextprotocol.org diff --git a/dist/docs/3.0.13/reference/roadmap.mdx b/dist/docs/3.0.13/reference/roadmap.mdx new file mode 100644 index 0000000000..c1c851d49f --- /dev/null +++ b/dist/docs/3.0.13/reference/roadmap.mdx @@ -0,0 +1,111 @@ +--- +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.0.13/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. | + +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 AgenticAds Slack](https://join.slack.com/t/agenticads/shared_invite/zt-3c5sxvdjk-x0rVmLB3OFHVUp~WutVWZg)** +- **[GitHub Discussions](https://github.com/adcontextprotocol/adcp/discussions)** +- **[Working Groups](../community/working-group)** diff --git a/dist/docs/3.0.13/reference/schema-extensions.mdx b/dist/docs/3.0.13/reference/schema-extensions.mdx new file mode 100644 index 0000000000..2783bebfb7 --- /dev/null +++ b/dist/docs/3.0.13/reference/schema-extensions.mdx @@ -0,0 +1,135 @@ +--- +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.0.13/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.0.13/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.0.13/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.0.13/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. | + +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-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.0.13/reference/specification-lifecycle.mdx b/dist/docs/3.0.13/reference/specification-lifecycle.mdx new file mode 100644 index 0000000000..6561cbd11f --- /dev/null +++ b/dist/docs/3.0.13/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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/reference/test-vectors/index.mdx b/dist/docs/3.0.13/reference/test-vectors/index.mdx new file mode 100644 index 0000000000..7674875605 --- /dev/null +++ b/dist/docs/3.0.13/reference/test-vectors/index.mdx @@ -0,0 +1,56 @@ +--- +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.0.13/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.0.13/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.0.13/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` — 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, `adcp_use: "webhook-signing"` discriminator, `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/` | +| [`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) | +| [`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.0.13/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) | + +**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-revoked-webhook-2026` (webhook-signing). 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. + +## Planned coverage + +The sets above exercise transport, signing, and canonicalization rules that cross every surface. Task-level vectors — per-task request/response pairs covering happy path, each documented error code, lifecycle transitions, and idempotency replay/conflict/expired cases across the `media-buy/`, `creative/`, `signals/`, `curation/`, `brand-protocol/`, `trusted-match/`, and `sponsored-intelligence/` task directories — are scoped in [issue #2383](https://github.com/adcontextprotocol/adcp/issues/2383) against the **3.1** milestone and will land incrementally under this path between 3.0 GA and 3.1 release. (These are task directory names, not `supported_protocols` values; see the [Conformance Specification](/dist/docs/3.0.13/building/verification/conformance#protocol-conformance) for the protocol taxonomy.) + +Until task-level vectors ship, the authoritative source for task shapes is the pair of [conformance storyboards](https://adcontextprotocol.org/compliance/latest/) (wire behavior) and [JSON Schemas](https://github.com/adcontextprotocol/adcp/tree/main/static/schemas/source) (request/response shapes). Neither yields ready-made fixtures — implementers derive expected shapes from the schema and confirm wire behavior by running the storyboards against their agent. diff --git a/dist/docs/3.0.13/reference/url-canonicalization.mdx b/dist/docs/3.0.13/reference/url-canonicalization.mdx new file mode 100644 index 0000000000..56ae3de44a --- /dev/null +++ b/dist/docs/3.0.13/reference/url-canonicalization.mdx @@ -0,0 +1,66 @@ +--- +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.0.13/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. **Lowercase the host.** 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`). 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]`). **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.0.13/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.0.13/trusted-match/specification#sync-time-validation) | +| TMP provider resolution | `ProviderEntry.agent_url` vs router's registered provider endpoint | [TMP Product Integration](/dist/docs/3.0.13/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.0.13/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.0.13/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.0.13/governance/property/managed-networks#security-considerations) | +| 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.0.13/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. +- **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.0.13/reference/v2-sunset.mdx b/dist/docs/3.0.13/reference/v2-sunset.mdx new file mode 100644 index 0000000000..b61edfadd7 --- /dev/null +++ b/dist/docs/3.0.13/reference/v2-sunset.mdx @@ -0,0 +1,71 @@ +--- +title: v2 Sunset +sidebarTitle: v2 sunset +description: "AdCP v2 is unsupported as of 3.0 GA. Security-only patches through August 1, 2026 (UTC); full deprecation thereafter. Begin migration to 3.0 now." +"og:title": "AdCP — v2 Sunset" +--- + +<Warning> +**AdCP v2 is not supported and is not safe for interoperable production on the AAO network.** v2 predates the accounts and governance protections that the AAO 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.0.13/reference/whats-new-in-v3) now. +</Warning> + +## Timeline + +| Date (UTC) | Event | +|---|---| +| **April 2026** (3.0 GA) | v2 no longer supported by AAO. Security-only patches begin. No feature work. | +| **August 1, 2026** | v2 fully deprecated. No further patches. Reference documentation archived. | + +The v2 sunset is not tied to 4.0. v2 reaches 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 cannot 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.0.13/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 AAO certification.** Certification requires v3.0 or later. +- **Not verified in the AAO 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. + +After August 1, 2026 (UTC), v2 is fully deprecated: security patches stop 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 AAO 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 AAO network means running without these protections. Private deployments with their own governance and identity layers are the operator's call — but the AAO 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.0.13/reference/whats-new-in-v3). +2. Work through the [v2→v3 migration guide](/dist/docs/3.0.13/reference/migration). +3. Validate with [storyboard testing](/dist/docs/3.0.13/reference/migration/v3-readiness). +4. Complete migration before August 1, 2026 (UTC). + +### If you are a buyer integrating with v2 sellers + +1. Inventory which of your sellers are v2-only. +2. Notify them of the August 1, 2026 (UTC) deprecation and share the [migration guide](/dist/docs/3.0.13/reference/migration). +3. Shift traffic to v3 sellers as they become available. + +### If you use the AAO 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 in mid-migration can temporarily support both versions using `get_adcp_capabilities` and the `major_versions` array — see [Running v2 and v3 side by side](/dist/docs/3.0.13/reference/migration#running-v2-and-v3-side-by-side). Dual-support is a migration tool, not a long-term posture. After August 1, 2026 (UTC), v3-only is the required configuration. + +## Related + +- **[What's new in v3](/dist/docs/3.0.13/reference/whats-new-in-v3)** — feature-by-feature summary of what 3.0 adds +- **[Migration guide](/dist/docs/3.0.13/reference/migration)** — breaking changes and deep-dive pages for every protocol area +- **[v3 readiness checklist](/dist/docs/3.0.13/reference/migration/v3-readiness)** — 8 minimum requirements for storyboard testing +- **[Versioning & governance](/dist/docs/3.0.13/reference/versioning)** — 3.x stability guarantees and release cadence diff --git a/dist/docs/3.0.13/reference/verifying-protocol-tarballs.mdx b/dist/docs/3.0.13/reference/verifying-protocol-tarballs.mdx new file mode 100644 index 0000000000..bafff2a555 --- /dev/null +++ b/dist/docs/3.0.13/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 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.0.13/building/by-layer/L0/schemas) — 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.0.13/reference/versioning.mdx b/dist/docs/3.0.13/reference/versioning.mdx new file mode 100644 index 0000000000..0f78b50730 --- /dev/null +++ b/dist/docs/3.0.13/reference/versioning.mdx @@ -0,0 +1,219 @@ +--- +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. A patch corrects behavior that diverged from the spec but introduces no new capabilities. | + +### 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 + +When a seller supports multiple major versions simultaneously (e.g., during a v2→v3 migration), buyers and sellers negotiate using `get_adcp_capabilities`: + +1. **Seller advertises**: `adcp.major_versions` in the `get_adcp_capabilities` response lists all supported major versions (e.g., `[2, 3]`). +2. **Buyer declares**: `adcp_major_version` on every request tells the seller which version the buyer's payloads conform to. The field is optional on all AdCP request schemas. +3. **Seller validates**: If the declared version is outside the supported range, the seller returns `VERSION_UNSUPPORTED`. If omitted, the seller assumes its highest supported version. + +This lets sellers upgrade first — declare multi-version support, and let buyers migrate on their own schedule. + +### 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.0.13/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.0.13/reference/experimental-status) operate under a separate, faster notice window of 6 weeks. The deprecation policy above applies only to stable surfaces. + +### Spec changes vs. conformance-suite 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 **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 | +| 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 the verification machinery evolve quickly without dragging spec-level versioning along with it. + +--- + +## 3.x stability guarantees + +Implementations built against 3.0 can rely on the following through the 3.x cycle: + +| 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. They graduate to stable once they have demonstrated real-world signal — see the full [experimental status contract](/dist/docs/3.0.13/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, or validation that was diverging from the documented spec. 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. + +### 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. The same posture applies to v2 during its security-only window — see the [v2 sunset page](/dist/docs/3.0.13/reference/v2-sunset) for that timeline. + +### 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.0.13/reference/release-notes) with a migration note +- An entry in the [changelog](/dist/docs/3.0.13/reference/changelog) +- A section in the [migration guide](/dist/docs/3.0.13/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 + +--- + +## 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 runs through August 1, 2026 — see the [v2 sunset page](/dist/docs/3.0.13/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** | Late September 2026 | +| **4.0** | Early 2027 — next major, accumulated breaking changes | + +Further 3.x releases are scheduled based on implementation feedback and working group priorities, with at least 8 weeks between 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.0.13/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.0.13/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.0.13/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 + +- **[Roadmap](/dist/docs/3.0.13/reference/roadmap)** — Planned features and milestones +- **[Release Notes](/dist/docs/3.0.13/reference/release-notes)** — What shipped, with migration guides +- **[Changelog](/dist/docs/3.0.13/reference/changelog)** — Technical change history diff --git a/dist/docs/3.0.13/reference/versions.mdx b/dist/docs/3.0.13/reference/versions.mdx new file mode 100644 index 0000000000..11fe8dd770 --- /dev/null +++ b/dist/docs/3.0.13/reference/versions.mdx @@ -0,0 +1,84 @@ +--- +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 + +| Status | Versions | Wire pin | What it means | +|---|---|---|---| +| **Active** | 3.0 (current: 3.0.11) | `"3.0"` | Default for new integrations. Receives feature and security patches. | +| **Security-only** | 2.5.0, 2.5.1, 2.5.3 | `"2.5"` | Security patches through **August 1, 2026 (UTC)**. Not safe for AAO-network production — see [v2 sunset](/dist/docs/3.0.13/reference/v2-sunset). | +| **End of life** | 2.0.0, 2.1.0 | — | No patches. Migrate to 3.0. | +| **Planned** | 3.1, 3.2, 4.0 | — | Targets in [planned releases](/dist/docs/3.0.13/reference/versioning#planned-releases). | + +**Wire values are release-precision only.** Send `"3.0"`, not `"3.0.11"` — a patch component on the wire is rejected. See [patches are not negotiated](/dist/docs/3.0.13/reference/versioning#patches-are-not-negotiated). + +*Status legend: Active = current generation, receiving feature work. 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** | **2026-05-11** | **Latest published patch.** | + +Patches don't change the wire contract. Upgrading within 3.0.x is always safe. For per-version detail, see [Release Notes](/dist/docs/3.0.13/reference/release-notes) (curated narrative) and the [Changelog](/dist/docs/3.0.13/reference/changelog) (full technical history). + +### Prereleases (superseded) + +| Version | Released | Notes | +|---|---|---| +| 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.0.13/reference/migration/prerelease-upgrades) if you adopted rc.3. | + +### 2.x — sunsetting + +| 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 | Security-only through Aug 1, 2026 (UTC). | +| 2.5.1 | 2025-12-24 | Security-only through Aug 1, 2026 (UTC). | +| 2.5.3 | January 2026 | Security-only through Aug 1, 2026 (UTC). **Last 2.x release.** | + +After August 1, 2026 (UTC), the entire 2.x line is fully deprecated. 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.0.13/reference/v2-sunset) for migration paths. + +## FAQ + +### What's "current"? +**3.0.11.** Pin your integration to `"3.0"` (not `"3.0.11"`) — wire values use release precision. See [Version negotiation](/dist/docs/3.0.13/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 five published 2.x releases are 2.0.0, 2.1.0, 2.5.0, 2.5.1, and 2.5.3. + +### Can I still register a v2 agent? +Yes — v2 agents can be registered in the AAO registry but cannot be AAO Verified. Certification and verified-default discovery require v3.x. See [v2 Sunset → If you use the AAO registry](/dist/docs/3.0.13/reference/v2-sunset#if-you-use-the-aao-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.0.13/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.0.13/reference/versioning#planned-releases). + +## Choosing a version + +| If you are… | Use | +|---|---| +| Building a new integration today | **3.0** (latest patch). Pin `"3.0"` on the wire. | +| Running a 2.5.x integration | Migrate to 3.0 before **Aug 1, 2026 (UTC)**. Start with the [migration guide](/dist/docs/3.0.13/reference/migration). | +| Running a 2.0 or 2.1 integration | Upgrade now — out of support. | +| Trying an unreleased feature | See [prerelease upgrade notes](/dist/docs/3.0.13/reference/migration/prerelease-upgrades) and [experimental status](/dist/docs/3.0.13/reference/experimental-status). | + +## Related + +- **[Versioning & Governance](/dist/docs/3.0.13/reference/versioning)** — release tiers, schema-change scope, cadence policy +- **[v2 Sunset](/dist/docs/3.0.13/reference/v2-sunset)** — full v2 end-of-life timeline and migration paths +- **[What's new in v3](/dist/docs/3.0.13/reference/whats-new-in-v3)** — feature-by-feature summary of what 3.0 adds +- **[Release Notes](/dist/docs/3.0.13/reference/release-notes)** — curated narrative for each version +- **[Changelog](/dist/docs/3.0.13/reference/changelog)** — full technical change history diff --git a/dist/docs/3.0.13/reference/whats-new-in-3-1.mdx b/dist/docs/3.0.13/reference/whats-new-in-3-1.mdx new file mode 100644 index 0000000000..8f4e2c0158 --- /dev/null +++ b/dist/docs/3.0.13/reference/whats-new-in-3-1.mdx @@ -0,0 +1,242 @@ +--- +title: What's New in AdCP 3.1 +description: "Adopter overview of AdCP 3.1 — distributed brand.json, dependency-impact webhooks, wholesale feed mirroring (conditional fetch, wholesale signals, wholesale feed webhooks), release-precision version negotiation, canonical creative formats, vendor-attested measurement, action discovery, and more. Additive over 3.0 — no breaking changes — but the new surfaces solve real production problems and adopters should upgrade as soon as their SDK pins 3.1." +"og:title": "AdCP — What's New in 3.1" +--- + +<Warning> +**Status: 3.1 beta.** The spec is feature-complete for 3.1; the published `@adcp/sdk` and the runtime grader are advisory-only against the new surfaces during beta. 3.1 GA target: **2026-05-29**. Adopters can pin `adcp_version: "3.1-beta"` today and migrate the pin to `"3.1"` on GA without code changes. +</Warning> + +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.** But schemas moved — 3.1 introduces meaningful new surfaces that solve production problems 3.0 left open. **You should bump your pin to 3.1 as soon as your SDK is ready** to pick up the new fields. + +For per-PR detail and migration tables, see [Release Notes § Version 3.1.0](/dist/docs/3.0.13/reference/release-notes#version-3-1-0-unreleased). 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.0.13/reference/whats-new-in-v3). This page covers the 3.0 → 3.1 minor delta only. +</Note> + +## 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 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. +- **You can pin a release and stop fighting drift.** Release-precision `adcp_version` (`"3.1"`, `"3.1-beta"`) 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 — no more per-publisher format spaghetti. +- **Action discovery is mechanical.** Products advertise `allowed_actions[]`; media buys carry `available_actions[]`. Buyers pre-flight which mutations are valid instead of failing mid-flight. +- **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 (partners can ask the brand if a claim belongs to it) | +| **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 `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 `pricing_options[]` populated | +| **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) | +| **Version negotiation** | Integer `adcp_major_version` per request | Release-precision `adcp_version` (e.g. `"3.1"`) + `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: `supported_optimization_metrics`, `supported_target_kinds`, `media_buy.frequency_capping`, `media_buy.propagation_surfaces`, `creative.bills_through_adcp`, `capabilities.idempotency.in_flight_max_seconds` | +| **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` responses | +| **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** | — | `x-adcp-hoist` opt-in marker; `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`; storyboard `requires` runtime gate; `comply_test_controller` sandbox gate | + +## 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.0.13/brand-protocol/brand-json#distributed-publishing) · PR [#4505](https://github.com/adcontextprotocol/adcp/pull/4505) + +### `verify_brand_claim` / `verify_brand_claims` — federated brand verification + +Three 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. + +→ Spec: [Brand Protocol § verify_brand_claim](/dist/docs/3.0.13/brand-protocol/tasks/verify_brand_claim) · PRs [#4540](https://github.com/adcontextprotocol/adcp/pull/4540), [#4603](https://github.com/adcontextprotocol/adcp/pull/4603) + +### Dependency-impact webhooks and snapshot coherence + +When a resource a media buy depends on transitions to an offline state — an audience suspended, a creative 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.0.13/media-buy/media-buys/lifecycle#health-impairments) · [Snapshot and log contract](/dist/docs/3.0.13/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.0.13/protocol/snapshot-and-log) · [Webhooks § Persistent channel contract](/dist/docs/3.0.13/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_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.0.13/media-buy/task-reference/get_products#wholesale-feed-versioning) · [`get_products` § Cache layering](/dist/docs/3.0.13/media-buy/task-reference/get_products#cache-layering) · [`get_signals` § Wholesale signals feed](/dist/docs/3.0.13/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) + +### Canonical creative formats — live, 12 canonicals, backwards-compatible + +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`, `responsive_creative`, `sponsored_placement`, `agent_placement`, `custom` — plus `native_in_feed`. Three of those (`sponsored_placement`, `responsive_creative`, `agent_placement`) are tagged **experimental** within the framework; the rest are **stable**. The promotion queue for new canonicals is tracked in [#3666](https://github.com/adcontextprotocol/adcp/issues/3666). + +**Backwards compatibility.** The v1 `format_ids` path still works. `ProductFormatDeclaration` carries an optional `v1_format_ref: [{agent_url, id}]` array so v2 declarations link to one or more v1 named formats — sellers can dual-emit during the migration window. SDKs treat the enum as **open at parse time**: unknown future canonicals don't fail validation; they're surfaced as `runtime_status: declared_only` for routing purposes. + +**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. + +→ Spec: [Canonical formats](/dist/docs/3.0.13/creative/canonical-formats) · PRs [#3307](https://github.com/adcontextprotocol/adcp/pull/3307), [#4770](https://github.com/adcontextprotocol/adcp/pull/4770) + +### Release-precision version negotiation — pin your release + +Every request and response now carries `adcp_version` (release-precision: `"3.1"`, `"3.1-beta"`); 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.0.13/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. + +→ Spec: [Optimization goals § `vendor_metric` kind](/dist/docs/3.0.13/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.0.13/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.0.13/media-buy/advanced-topics/accountability#billing-measurement) · [`report_usage`](/dist/docs/3.0.13/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). + +→ Spec: [Media Buy Lifecycle § Action discovery](/dist/docs/3.0.13/media-buy/media-buys/lifecycle#action-discovery) · 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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/building/verification/compliance-catalog). + +→ Spec: [Compliance catalog](/dist/docs/3.0.13/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) + +### Final-spec clarifications (WG-review batch) + +Ten normative tightenings landed as the spec settled into beta. Mostly low-risk — adopters who'd already inferred reasonable defaults will continue working — but worth knowing about because the grader will check them at GA. + +- **`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. +- **`idempotency_key` required on every AdCP task request** (#4399). Closes a longstanding gap where the spec said dedupe via idempotency_key but didn't require buyers to send one. Sellers MAY reject requests missing the key after 3.1 GA. +- **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 one entry uses `action: "finalize"`, that entry MUST be the only one in the array — multi-finalize is rejected. Multi-finalize across multiple proposals goes through separate `get_products` calls. Atomicity guarantee: finalize either succeeds completely or leaves the proposal unchanged. +- **`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.0.13/reference/migration/media-buy-status). + +→ 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. **`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.0.13/reference/release-notes#version-3-1-0-unreleased) for the per-PR detail. + +## Adopter action + +| If you are… | What you need to do | +|---|---| +| A 3.0-conformant production agent | Nothing required — 3.1 changes are additive and a 3.0 client keeps working. **But you should bump your SDK pin to 3.1 as soon as it's available** to pick up the new fields and emit `adcp_version` for forward-compatibility with future minors. | +| A buyer running production campaigns | Bump your SDK; pass `adcpVersion: "3.1"` (or your release) on construction. 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 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. | +| 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 `measurement.metrics[]` catalog at your AdCP agent. 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. | +| An SDK author | Pin `published_version` to a 3.1 release; emit `adcp_version` (release-precision string) plus `adcp_major_version` (integer mirror); normalize semver values to release-precision before wire emission (`"3.1.0-beta.1"` → `"3.1-beta.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 the 3.1 GA cut. + +**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.0.13/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.0.13/reference/release-notes#version-3-1-0-unreleased). For the version-negotiation cadence and the 3.1 → 3.2 → 4.0 timeline, see [Versioning & Governance § Migration timeline](/dist/docs/3.0.13/reference/versioning#migration-timeline). diff --git a/dist/docs/3.0.13/reference/whats-new-in-v3.mdx b/dist/docs/3.0.13/reference/whats-new-in-v3.mdx new file mode 100644 index 0000000000..002e9736b4 --- /dev/null +++ b/dist/docs/3.0.13/reference/whats-new-in-v3.mdx @@ -0,0 +1,952 @@ +--- +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.0.13/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.0.13/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 (Ad-ID, 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` by `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[]`). The JWK itself carries `adcp_use: "webhook-signing"` (distinct from `adcp_use: "request-signing"`); `kid` values MUST be unique across purposes within a JWKS. 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.0.13/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.0.13/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.0.13/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/client` / 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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/governance/annex-iii-obligations). + +<Card title="Governance Protocol" icon="arrow-right" href="/dist/docs/3.0.13/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.0.13/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.0.13/sponsored-intelligence/si-chat-protocol"> + Full specification including session lifecycle, implementing agents, and implementing hosts. +</Card> + +--- + +### Signal catalogs for data providers + +Data providers can publish signal catalogs via `adagents.json`, 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 catalog. + +<Card title="Data provider guide" icon="arrow-right" href="/dist/docs/3.0.13/signals/data-providers"> + Complete implementation guide for publishing signal catalogs. +</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 and account model. Sandbox support moves to `account.sandbox`, and sandbox can participate in the natural account key for implicit-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.0.13/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.0.13/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.0.13/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 keep their typed shapes: `geo_countries` and `geo_regions` as booleans, `geo_metros` and `geo_postal_areas` as structured objects. + +See the [prerelease upgrade notes](/dist/docs/3.0.13/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_major_version`, allowing v3 buyers to declare which major version their payloads conform to. Sellers validate against their `major_versions` and return `VERSION_UNSUPPORTED` if unsupported. When omitted, sellers default to their highest supported version. + +Note: `adcp_major_version` is a v3 field — v2 clients cannot set it (the field does 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 this field. + +### 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.0.13/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: + +- **Ad-ID identifiers** — `industry_identifiers` on creative assets and manifests, with `creative-identifier-type` enum (`ad_id`, `isci`, `clearcast_clock`). Broadcast creatives are identified by Ad-ID, 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.0.13/creative/channels/broadcast"> + Channel guide covering spot formats, Ad-ID, 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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/trusted-match/) | `trusted_match.core` | Privacy architecture will evolve with regulator engagement; TMPX exposure tokens, country-partitioned identity, and Offer macros are expected to change. | +| [Sponsored Intelligence](/dist/docs/3.0.13/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.0.13/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.0.13/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.0.13/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.0.13/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 now require explicit system specification, supporting global markets. Values are grouped by system using `{ "system": "...", "values": [...] }` objects. + +| v2 field | v3 field | +|----------|----------| +| `geo_metros` (string array) | `geo_metros` (system/values objects) | +| `geo_postal_codes` (string array) | `geo_postal_areas` (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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/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 +{ + "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.0.13/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 both the auth model and account reference style: `true` means explicit accounts (discover via `list_accounts`, pass `account_id`), `false` means implicit 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.0.13/reference/migration/channels) + - [ ] Rename `fixed_rate` -> `fixed_price` in [pricing options](/dist/docs/3.0.13/reference/migration/pricing) + - [ ] Move `price_guidance.floor` -> `floor_price` ([pricing details](/dist/docs/3.0.13/reference/migration/pricing)) + - [ ] Replace `creative_ids` with [`creative_assignments`](/dist/docs/3.0.13/reference/migration/creatives) + - [ ] Add system specification to [metro/postal targeting](/dist/docs/3.0.13/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.0.13/reference/migration/creatives#asset-discovery) + - [ ] Replace `preview_image` reads with [`format_card`](/dist/docs/3.0.13/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.0.13/reference/migration/catalogs) + - [ ] Remove `promoted_offering` string from media buy and creative manifest objects + - [ ] Update `optimization_goal` to [`optimization_goals`](/dist/docs/3.0.13/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.0.13/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.0.13/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.0.13/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.0.13/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 catalogs via `adagents.json`. See [Data Provider Guide](/dist/docs/3.0.13/signals/data-providers). + + - [ ] Create signal catalog 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 catalog 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.0.13/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 buy-side identity. See [brand.json specification](/dist/docs/3.0.13/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.0.13/registry) if not hosting `brand.json` + </Accordion> + + <Accordion title="Governance agents (new in v3)"> + Implement brand suitability capabilities. See [Governance Protocol](/dist/docs/3.0.13/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.0.13/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.0.13/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](https://join.slack.com/t/agenticads/shared_invite/zt-3c5sxvdjk-x0rVmLB3OFHVUp~WutVWZg) +- **Issues**: [GitHub Issues](https://github.com/adcontextprotocol/adcp/issues) +- **Support**: support@adcontextprotocol.org diff --git a/dist/docs/3.0.13/registry/index.mdx b/dist/docs/3.0.13/registry/index.mdx new file mode 100644 index 0000000000..a8d59b8e36 --- /dev/null +++ b/dist/docs/3.0.13/registry/index.mdx @@ -0,0 +1,698 @@ +--- +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 | +|----------|-------| +| Bulk resolve (`/api/brands/resolve/bulk`, `/api/properties/resolve/bulk`) | 20 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. + +## Endpoint Groups + +<CardGroup cols={2}> + <Card title="Brand Resolution" icon="fingerprint" href="/dist/docs/3.0.13/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.0.13/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.0.13/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.0.13/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.0.13/registry/index#lookups--authorization"> + Look up agents by domain, validate product authorization, and check property authorization in real time. + </Card> +</CardGroup> + +### Brand Resolution + +These endpoints resolve domains to brand identities. The `source` field in the response indicates where the data came from: + +| Source | Meaning | +|--------|---------| +| `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. To get full brand identity data (logos, colors, tone), use `/api/brands/enrich` or look up the brand in the registry. + +| Method | Path | Description | +|--------|------|-------------| +| GET | `/api/brands/resolve` | Resolve a domain to its canonical brand | +| POST | `/api/brands/resolve/bulk` | Resolve up to 100 domains at once | +| GET | `/api/brands/brand-json` | Fetch raw brand.json for a domain | +| GET | `/api/brands/registry` | List all brands (search, pagination) | +| 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 agents (filter by type, with enrichment) | +| 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) | + +### Change Feed + +| Method | Path | Description | +|--------|------|-------------| +| GET | `/api/registry/feed` | Poll cursor-based registry change feed (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 creative formats 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.0.13/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. + +### 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`. + +**Request body:** + +```json +{ + "publisher_domain": "examplepub.com", + "authorized_agents": [ + { "url": "https://agent.example.com", "authorized_for": "sell" } + ], + "properties": [ + { "type": "website", "name": "Example Publisher" } + ], + "contact": { + "name": "Ad Ops", + "email": "adops@examplepub.com" + } +} +``` + +`publisher_domain` and `authorized_agents` (each with a required `url` and optional `authorized_for`) are 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", + "authorized_agents": [{"url": "https://agent.example.com", "authorized_for": "sell"}], + "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", + authorized_agents: [{ url: "https://agent.example.com", authorized_for: "sell" }], + 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", + "authorized_agents": [{"url": "https://agent.example.com", "authorized_for": "sell"}], + "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`. + +**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 | +| `agent.discovered` | A new agent was found via adagents.json | +| `agent.removed` | An agent was removed from the registry | +| `agent.profile_updated` | Agent inventory profile changed | +| `publisher.adagents_changed` | A publisher's adagents.json was updated | +| `authorization.granted` | An agent was authorized for a property | +| `authorization.revoked` | An authorization was removed | + +<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> + +```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": {}, + "actor": "crawler", + "created_at": "2026-03-31T10:00:00.000Z" + } + ], + "cursor": "019539a0-1234-7000-8000-000000000001", + "has_more": true +} +``` + +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. + +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 and /catalog/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_ids": [], + "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.0.13/registry/registering-an-agent.mdx b/dist/docs/3.0.13/registry/registering-an-agent.mdx new file mode 100644 index 0000000000..c1b38c4a70 --- /dev/null +++ b/dist/docs/3.0.13/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.0.13/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/recrawl` — refresh a publisher's `adagents.json` mapping in the authorization graph. diff --git a/dist/docs/3.0.13/signals/data-providers.mdx b/dist/docs/3.0.13/signals/data-providers.mdx new file mode 100644 index 0000000000..5afcbe9cdb --- /dev/null +++ b/dist/docs/3.0.13/signals/data-providers.mdx @@ -0,0 +1,647 @@ +--- +title: Data Provider Guide +sidebarTitle: Data Providers +description: "Publish a signal catalog 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 catalogs via `adagents.json`, 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 + +Signal Catalogs solve these problems by letting data providers publish a machine-readable catalog 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 your catalog; as you add signals, authorized agents automatically have access + +## Overview + +Data providers own audience and contextual data (purchase intent, demographics, behavioral segments). The Signal Catalog feature 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.0.13/governance/property/adagents#unified-declaration-model). + +## File Location + +Data providers host their signal catalog 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.0.13/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: + +### Required Fields + +| Field | Type | Description | +|-------|------|-------------| +| `id` | string | Unique identifier within your catalog. 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 }` | +| `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. | + +## 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: + +```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-catalog-agent.example.com", + "authorized_for": "All automotive signals", + "authorization_type": "signal_tags", + "signal_tags": ["automotive"] + } + ] +} +``` + +**Best for**: Large catalogs. 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 catalog +- Enables efficient authorization ("all premium signals") +- Groups related signals for easier discovery + +## How Buyers Use Your Catalog + +### 1. Discovery + +Buyers call `get_signals` on a signals agent. The agent may use your catalog for: +- Natural language matching ("find automotive purchase intent signals") +- Structured lookup by `signal_id` + +### 2. Authorization Verification + +When a buyer receives a signal, they can verify authorization: + +```json +{ + "signal_id": { + "data_provider_domain": "pinnacle-auto-data.com", + "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_id": { "source": "catalog", "data_provider_domain": "pinnacle-auto-data.com", "id": "likely_ev_buyers" }, + "value_type": "binary", + "value": true +} + +// Categorical targeting +{ + "signal_id": { "source": "catalog", "data_provider_domain": "pinnacle-auto-data.com", "id": "vehicle_ownership" }, + "value_type": "categorical", + "values": ["luxury_ev", "luxury_non_ev"] +} + +// Numeric targeting +{ + "signal_id": { "source": "catalog", "data_provider_domain": "pinnacle-auto-data.com", "id": "purchase_propensity" }, + "value_type": "numeric", + "min_value": 0.7 +} +``` + +## Agent-Native Signals + +Not all signals come from data provider catalogs. Signals agents may also offer **agent-native signals** - custom signals they've created themselves (proprietary models, first-party data, etc.). + +### Signal ID Structure + +Signal IDs use `source` as a discriminator: + +| Source | Fields | Verification | +|--------|--------|--------------| +| `catalog` | `data_provider_domain` + `id` | Verifiable via data provider's adagents.json | +| `agent` | `agent_url` + `id` | Trust-based - buyer trusts the agent | + +### Example: Agent-Native Signal + +```json +{ + "signal_id": { + "source": "agent", + "agent_url": "https://luminary-data.com/.well-known/adcp/signals", + "id": "custom_auto_intenders" + }, + "value_type": "binary", + "value": true +} +``` + +### When to Use Each + +**Use `source: "catalog"`** when: +- Signal comes from an external data provider (Pinnacle Data, Meridian Analytics, etc.) +- Authorization verification is important +- You want to reference the canonical signal definition + +**Use `source: "agent"`** when: +- Signal is proprietary to the signals agent +- No external data provider to verify against +- Agent has created custom models or first-party segments + +## Complete Example + +A full signal catalog for an automotive data provider: + +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.0.13/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 signal catalog uses 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 signal catalog publishes 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.0.13/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.0.13/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 signal catalog, 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 catalog 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.0.13/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.0.13/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.0.13/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.0.13/governance/policy-registry#policy-category-definitions) for the full list of valid `policy_categories` values and [restricted attribute definitions](/dist/docs/3.0.13/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' catalogs the agent can access. + +## Next Steps + +1. **Create your adagents.json** with your signal catalog +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.0.13/signals/overview) - How signals work in AdCP +- [get_signals Task](/dist/docs/3.0.13/signals/tasks/get_signals) - Signal discovery API +- [activate_signal Task](/dist/docs/3.0.13/signals/tasks/activate_signal) - Signal activation API +- [adagents.json Tech Spec](/dist/docs/3.0.13/governance/property/adagents) - Full adagents.json reference (property-focused) diff --git a/dist/docs/3.0.13/signals/ecosystem.mdx b/dist/docs/3.0.13/signals/ecosystem.mdx new file mode 100644 index 0000000000..af8d9875ee --- /dev/null +++ b/dist/docs/3.0.13/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.0.13/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 ──────┤──→ Signal catalog ──→ Signal agent ──→ Buyer agent ──→ Campaign targeting +CDPs ────────────┤ (adagents.json) (get_signals) (activate) +Identity cos ────┘ +``` + +Every company that owns targetable data can publish a **signal catalog** via `/.well-known/adagents.json`. Signal agents discover these catalogs 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 a signal catalog so that signal agents can discover and resell your data. + +**What you build**: +1. A signal catalog 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.0.13/signals/data-providers) — complete walkthrough of signal catalogs +- [Signals specification](/dist/docs/3.0.13/signals/specification) — protocol details +- [S3: Signals specialist module](/dist/docs/3.0.13/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. A signal catalog 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 signal catalog**: + +```json +{ + "$schema": "https://adcontextprotocol.org/schemas/3.0.13/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.0.13/reference/roadmap) for planned extensions. +</Note> + +**Next steps**: +- [Data provider guide](/dist/docs/3.0.13/signals/data-providers) — complete walkthrough of signal catalogs +- [Signals specification](/dist/docs/3.0.13/signals/specification) — protocol details +- [S3: Signals specialist module](/dist/docs/3.0.13/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.0.13/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.0.13/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.0.13/media-buy/task-reference/sync_event_sources) to register your purchase event feed with buyer agents, then [`log_event`](/dist/docs/3.0.13/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.0.13/media-buy/commerce-media) — maps retail concepts to AdCP +- [Data provider guide](/dist/docs/3.0.13/signals/data-providers) — how to publish your signal catalog +- [Conversion tracking](/dist/docs/3.0.13/media-buy/conversion-tracking/index) — closed-loop measurement with `sync_event_sources` and `log_event` +- [Seller integration guide](/dist/docs/3.0.13/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.0.13/signals/data-providers) — add signals to your existing adagents.json +- [Publisher/seller track](/dist/docs/3.0.13/learning/tracks/publisher) — build your sales agent (if you haven't already) +- [S3: Signals specialist module](/dist/docs/3.0.13/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.0.13/reference/roadmap). + +**Where you add value today**: +1. **Publish demographic and financial segments** as signals in your catalog +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.0.13/signals/data-providers) — publish your signal catalog +- [Platform/intermediary track](/dist/docs/3.0.13/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 catalog, 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.0.13/signals/data-providers) — catalog structure +- [Platform/intermediary track](/dist/docs/3.0.13/learning/tracks/platform) — building MCP-based infrastructure +- [Signals specification](/dist/docs/3.0.13/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.0.13/learning/tracks/buyer) — media buying with AdCP +- [Data provider guide](/dist/docs/3.0.13/signals/data-providers) — publish your proprietary signals +- [S3: Signals specialist module](/dist/docs/3.0.13/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 a signal catalog 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.0.13/learning/tracks/platform) — MCP server architecture +- [Signals specification](/dist/docs/3.0.13/signals/specification) — destination and deployment model +- [Industry landscape](/dist/docs/3.0.13/building/concepts/industry-landscape) — how AdCP fits alongside other standards +- [Working group](/dist/docs/3.0.13/community/working-group) — help shape clean room integration patterns + +--- + +## Try it hands-on + +The training agent at `https://test-agent.adcontextprotocol.org/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.0.13/signals/key-concepts.mdx b/dist/docs/3.0.13/signals/key-concepts.mdx new file mode 100644 index 0000000000..5d75e004a9 --- /dev/null +++ b/dist/docs/3.0.13/signals/key-concepts.mdx @@ -0,0 +1,149 @@ +--- +title: Key concepts +description: "AdCP signal types (binary, categorical, numeric), signal sources (catalog vs agent), 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 sources + +Signal IDs use `source` as a discriminator: + +| Source | Fields | Verification | +|--------|--------|--------------| +| `catalog` | `data_provider_domain` + `id` | Verifiable via data provider's adagents.json | +| `agent` | `agent_url` + `id` | Trust-based — buyer trusts the agent | + +**Catalog signals** come from external data providers who publish their offerings at `/.well-known/adagents.json`. Buyers can independently verify that a signal agent is authorized to resell them. + +**Agent-native signals** are proprietary to the signal agent — custom models, first-party data, or composite segments the agent builds from multiple sources. + +## The two tasks + +| Task | Purpose | +|------|---------| +| [`get_signals`](/dist/docs/3.0.13/signals/tasks/get_signals) | Discover signals matching campaign criteria | +| [`activate_signal`](/dist/docs/3.0.13/signals/tasks/activate_signal) | Activate a signal for use in campaigns | + +### Discovery with get_signals + +Buyers describe what they need in natural language. The signal agent searches across all its data providers' catalogs 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 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.0.13/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.0.13/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 signals by ID — 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 signal agent appears in `authorized_agents`. + +## Go deeper + +- [Data provider guide](/dist/docs/3.0.13/signals/data-providers) — how to publish a signal catalog +- [Signals ecosystem](/dist/docs/3.0.13/signals/ecosystem) — how each type of company participates +- [Protocol specification](/dist/docs/3.0.13/signals/specification) — formal conformance requirements +- [get_signals task reference](/dist/docs/3.0.13/signals/tasks/get_signals) — discovery API details +- [activate_signal task reference](/dist/docs/3.0.13/signals/tasks/activate_signal) — activation API details diff --git a/dist/docs/3.0.13/signals/overview.mdx b/dist/docs/3.0.13/signals/overview.mdx new file mode 100644 index 0000000000..a0755a37f9 --- /dev/null +++ b/dist/docs/3.0.13/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.0.13/signals/get-signals-request.json", + "signal_spec": "In-market EV buyers with high purchase propensity, near auto dealerships" +} +``` + +The signal agent searches catalogs 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 catalog (`adagents.json`) | +| Data provider | Signal source (`data_provider_domain`) | +| Activate on my DSP | `activate_signal` with destination | +| Audience size | `coverage_percentage` in signal response | +| 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 catalog 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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/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 catalogs 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.0.13/signals/key-concepts) — the building blocks behind this walkthrough +- **Ecosystem**: [Who participates and how](/dist/docs/3.0.13/signals/ecosystem) — data providers, retailers, publishers, CDPs, agencies, identity companies +- **Publish your data**: [Data provider guide](/dist/docs/3.0.13/signals/data-providers) — how to create a signal catalog +- **Protocol spec**: [Signals specification](/dist/docs/3.0.13/signals/specification) — formal requirements and conformance +- **Get certified**: The [Signals specialist module](/dist/docs/3.0.13/learning/specialist/signals) teaches signal discovery and activation through interactive labs with a sandbox signal agent diff --git a/dist/docs/3.0.13/signals/specification.mdx b/dist/docs/3.0.13/signals/specification.mdx new file mode 100644 index 0000000000..29b5823523 --- /dev/null +++ b/dist/docs/3.0.13/signals/specification.mdx @@ -0,0 +1,202 @@ +--- +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.0.13/protocol/get-adcp-capabilities-response.json", + "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.0.13/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.0.13/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 catalog access without account registration +- Signal agents SHOULD support personalized catalogs for registered accounts + +### Identifiers + +- **`signal_agent_segment_id`**: Unique identifier for a signal. Signal agents MUST return this for each signal. Orchestrators MUST use this in `activate_signal` requests. + +- **`activation_key`**: Key for campaign targeting. Signal agents MUST return this when `is_live: true` AND the caller has access to the deployment. Orchestrators MUST use this for targeting (not `signal_agent_segment_id`). + +### 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. + +- **`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.0.13/signals/data-providers#declaring-governance-metadata) for implementation details. + +## Tasks + +The Signals Protocol defines two tasks. See task reference pages for complete request/response schemas and examples. + +### get_signals + +**Schema**: [`get-signals-request.json`](https://adcontextprotocol.org/schemas/3.0.13/signals/get-signals-request.json) / [`get-signals-response.json`](https://adcontextprotocol.org/schemas/3.0.13/signals/get-signals-response.json) + +**Reference**: [`get_signals` task](/dist/docs/3.0.13/signals/tasks/get_signals) + +Discover signals matching campaign criteria. + +**Requirements:** +- Orchestrators MUST include `signal_spec` or `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.0.13/signals/activate-signal-request.json) / [`activate-signal-response.json`](https://adcontextprotocol.org/schemas/3.0.13/signals/activate-signal-response.json) + +**Reference**: [`activate_signal` task](/dist/docs/3.0.13/signals/tasks/activate_signal) + +Activate a signal for use on a decisioning platform. + +**Requirements:** +- Orchestrators MUST include `signal_agent_segment_id` and `destinations` +- 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.0.13/building/by-layer/L3/error-handling). + +Signal agents MUST use Signals Protocol error codes as defined in the [Error Handling Reference](/dist/docs/3.0.13/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 Signals Protocol agent MUST: + +1. Support at least one specified transport (MCP or A2A) +2. Implement `get_signals` and `activate_signal` tasks per schema +3. Return required fields as defined in response schemas +4. Use specified error codes +5. Enforce access control for private signals and activation keys + +### 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 +4. Use `activation_key` for campaign targeting + +## 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 agents MUST support both destination types per the destination schema. + +## Schema Reference + +| Schema | Description | +|--------|-------------| +| [`signals/get-signals-request.json`](https://adcontextprotocol.org/schemas/3.0.13/signals/get-signals-request.json) | get_signals request | +| [`signals/get-signals-response.json`](https://adcontextprotocol.org/schemas/3.0.13/signals/get-signals-response.json) | get_signals response | +| [`signals/activate-signal-request.json`](https://adcontextprotocol.org/schemas/3.0.13/signals/activate-signal-request.json) | activate_signal request | +| [`signals/activate-signal-response.json`](https://adcontextprotocol.org/schemas/3.0.13/signals/activate-signal-response.json) | activate_signal response | +| [`core/deployment.json`](https://adcontextprotocol.org/schemas/3.0.13/core/deployment.json) | Deployment target | +| [`core/activation-key.json`](https://adcontextprotocol.org/schemas/3.0.13/core/activation-key.json) | Activation key | diff --git a/dist/docs/3.0.13/signals/tasks/activate_signal.mdx b/dist/docs/3.0.13/signals/tasks/activate_signal.mdx new file mode 100644 index 0000000000..da1234bc36 --- /dev/null +++ b/dist/docs/3.0.13/signals/tasks/activate_signal.mdx @@ -0,0 +1,537 @@ +--- +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.0.13/signals/activate-signal-request.json`](https://adcontextprotocol.org/schemas/3.0.13/signals/activate-signal-request.json) +**Response Schema**: [`https://adcontextprotocol.org/schemas/3.0.13/signals/activate-signal-response.json`](https://adcontextprotocol.org/schemas/3.0.13/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.0.13/building/by-layer/L1/security#idempotency) for normative semantics. | +| `signal_agent_segment_id` | string | Yes | The universal identifier 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.0.13/building/by-layer/L2/accounts-and-agents#account-references) | No | Account for this activation. Associates with a commercial relationship established via `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.0.13/signals/tasks/get_signals) response. Records the buyer's pricing commitment at activation time. Pass this same value in subsequent `report_usage` calls. | + +### 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 applies signal-based targeting when fulfilling media buys through `create_media_buy`. 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.0.13/signals/activate-signal-response.json", + "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.0.13/signals/activate-signal-response.json", + "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.0.13/signals/activate-signal-response.json", + "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 +```javascript +await a2a.send({ + message: { + parts: [{ + kind: "text", + text: "Please activate the luxury_auto_intenders signal on The Trade Desk for account agency-123-ttd." + }] + } +}); +``` + +#### Explicit Skill Invocation +```javascript +await a2a.send({ + message: { + parts: [{ + kind: "data", + data: { + skill: "activate_signal", + parameters: { + 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 (with streaming) +Initial response: +```json +{ + "taskId": "task-signal-001", + "status": { "state": "working" } +} +``` + +Then via Server-Sent Events: +``` +data: {"message": "Validating signal access permissions..."} +data: {"message": "Configuring deployment on The Trade Desk..."} +data: {"message": "Finalizing activation..."} +data: {"status": {"state": "completed"}, "artifacts": [{ + "artifactId": "artifact-signal-activation-abc123", + "name": "signal_activation_result", + "parts": [ + {"kind": "text", "text": "Signal successfully activated on The Trade Desk"}, + {"kind": "data", "data": { + "context_id": "ctx-signals-123", + "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" + }] + }} + ] +}]} +``` + +### Protocol Transport +- **MCP**: Returns task_id for polling-based asynchronous operation tracking or webhook-based push notifications +- **A2A**: Uses Server-Sent Events for real-time progress updates and completion +- **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.0.13/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.0.13/signals/activate-signal-response.json", + "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.0.13/signals/activate-signal-response.json", + "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.0.13/signals/activate-signal-response.json", + "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.0.13/signals/activate-signal-response.json", + "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.0.13/signals/activate-signal-response.json", + "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`: 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}" +``` \ No newline at end of file diff --git a/dist/docs/3.0.13/signals/tasks/get_signals.mdx b/dist/docs/3.0.13/signals/tasks/get_signals.mdx new file mode 100644 index 0000000000..45a1909ae1 --- /dev/null +++ b/dist/docs/3.0.13/signals/tasks/get_signals.mdx @@ -0,0 +1,837 @@ +--- +title: get_signals +description: "get_signals is the AdCP task for discovering audience and contextual signals. Search by natural language or signal ID, 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.0.13/signals/get-signals-request.json`](https://adcontextprotocol.org/schemas/3.0.13/signals/get-signals-request.json) +**Response Schema**: [`https://adcontextprotocol.org/schemas/3.0.13/signals/get-signals-response.json`](https://adcontextprotocol.org/schemas/3.0.13/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. + +## Request Parameters + +| Parameter | Type | Required | Description | +|-----------|------|----------|-------------| +| `signal_spec` | string | Conditional | Natural language description of the desired signals. Required unless `signal_ids` is provided. | +| `signal_ids` | SignalID[] | Conditional | Specific signals to look up by data provider and ID. Required unless `signal_spec` is provided. | +| `account` | [AccountRef](/dist/docs/3.0.13/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. | +| `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) | +| `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. | + +### 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 | + +## 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_agent_segment_id": "string", + "name": "string", + "description": "string", + "signal_type": "string", + "data_provider": "string", + "coverage_percentage": "number", + "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", + "...": "..." + } + ] + } + ] +} +``` + +### Field Descriptions + +- **signals**: Array of matching signals + - **signal_agent_segment_id**: Unique identifier for the signal + - **name**: Human-readable signal name + - **description**: Detailed signal description + - **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 agent directly owns + - `custom` — agent-native segment built on demand from models, composites, or buyer inputs (not attributable to a standing upstream provider) + - **data_provider**: Name of the data provider + - **coverage_percentage**: Percentage of audience coverage + - **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. Pass the selected `pricing_option_id` in `report_usage` for billing verification. + - **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 and pass its `pricing_option_id` in `report_usage` for billing verification. If a signal offers multiple models (e.g., CPM and flat fee), choose based on your expected delivery volume and campaign structure. + +### 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.0.13/signals/get-signals-response.json", + "message": "Found 1 luxury segment matching your criteria. Already activated for your sales agent.", + "context_id": "ctx-signals-123", + "signals": [ + { + "signal_id": { + "source": "catalog", + "data_provider_domain": "experian.com", + "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": "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`: + +```json +{ + "$schema": "/schemas/3.0.13/signals/get-signals-response.json", + "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", + "signals": [ + { + "signal_id": { + "source": "catalog", + "data_provider_domain": "acmedata.com", + "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.0.13/signals/get-signals-response.json", + "message": "Found 1 luxury segment matching your criteria. Already activated on The Trade Desk, pending activation on Amazon DSP.", + "context_id": "ctx-signals-123", + "signals": [ + { + "signal_id": { + "source": "catalog", + "data_provider_domain": "experian.com", + "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 +```javascript +await a2a.send({ + message: { + parts: [{ + kind: "text", + text: "Find me signals for high-income households interested in luxury goods that can be deployed on The Trade Desk and Amazon DSP in the US, with a maximum CPM of $5.00." + }] + } +}); +``` + +#### Explicit Skill Invocation +```javascript +await a2a.send({ + message: { + parts: [{ + kind: "data", + data: { + skill: "get_signals", + parameters: { + 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 +A2A returns results as artifacts with the same data structure: +```json +{ + "artifacts": [{ + "artifactId": "artifact-signal-discovery-def456", + "name": "signal_discovery_result", + "parts": [ + { + "kind": "text", + "text": "Found 1 luxury segment matching your criteria. Available on The Trade Desk, pending activation on Amazon DSP." + }, + { + "kind": "data", + "data": { + "context_id": "ctx-signals-123", + "signals": [ + { + "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": "agent", + "agent_url": "https://thetradedesk.com", + "account": "agency-123", + "is_live": true + }, + { + "type": "agent", + "agent_url": "https://advertising.amazon.com/dsp", + "is_live": false, + "estimated_activation_duration_minutes": 60 + } + ], + "pricing_options": [ + { + "pricing_option_id": "po_cpm_usd", + "model": "cpm", + "cpm": 3.50, + "currency": "USD" + } + ] + } + ] + } + } + ] + }] +} +``` + +### 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.0.13/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.0.13/signals/get-signals-response.json", + "signals": [{ + "signal_id": { + "source": "catalog", + "data_provider_domain": "peer39.com", + "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): Universal identifier for the signal + - **name** (string): Human-readable signal name + - **description** (string): Detailed signal description + - **signal_type** (string): `marketplace` (resold third-party), `owned` (agent's first-party data), or `custom` (agent-native segment built on demand) + - **data_provider** (string): Provider of the signal data + - **coverage_percentage** (number): Estimated reach percentage + - **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. Select one and pass its `pricing_option_id` in `report_usage`. + - **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`: 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` task +6. **The message field** provides a quick summary of the most relevant findings + +## Iterative refinement + +`get_signals` supports iterative refinement without a separate mode flag. The combination of `signal_spec` and `signal_ids` determines the operation: + +| Fields provided | Behavior | +|----------------|----------| +| `signal_spec` only | Discovery — find signals matching the description | +| `signal_ids` only | Exact lookup — return specific signals by ID | +| `signal_ids` + `signal_spec` | Refinement — start from known signals, adjust per the spec | + +To refine previous results, pass back the `signal_id` values from signals you want to keep, and provide an updated `signal_spec` describing what to change: + +```json +{ + "$schema": "/schemas/3.0.13/signals/get-signals-request.json", + "signal_spec": "Same audience but with broader coverage, ideally above 20%", + "signal_ids": [ + { + "source": "catalog", + "data_provider_domain": "experian.com", + "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_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.0.13/signals/get-signals-response.json", + "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", + "signals": [ + { + "signal_id": { + "source": "catalog", + "data_provider_domain": "experian.com", + "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.0.13/signals/get-signals-response.json", + "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", + "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 = "" + return f"I found a perfect match: '{signal.name}' from {signal.data_provider} with {signal.coverage_percentage}% coverage. {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." +``` \ No newline at end of file diff --git a/dist/docs/3.0.13/spec-guidelines.md b/dist/docs/3.0.13/spec-guidelines.md new file mode 100644 index 0000000000..bbd80e8f33 --- /dev/null +++ b/dist/docs/3.0.13/spec-guidelines.md @@ -0,0 +1,350 @@ +--- +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 + +## Enum Design + +### Enum File Structure + +All enums should live in `/schemas/3.0.13/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 + +## 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`, `openai_product_feed` in `brand.json` (enum values) +- 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. + +### 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.0.13/` +2. **Maintain v1**: Keep old schemas functional +3. **Document migration**: Provide before/after examples +4. **Deprecation period**: Support both versions for defined period + +## 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 changeset describing the 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 +- [ ] 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.0.13/` +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.0.13/sponsored-intelligence/implementing-si-agents.mdx b/dist/docs/3.0.13/sponsored-intelligence/implementing-si-agents.mdx new file mode 100644 index 0000000000..60bc92756a --- /dev/null +++ b/dist/docs/3.0.13/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](https://join.slack.com/t/agenticads/shared_invite/zt-3c5sxvdjk-x0rVmLB3OFHVUp~WutVWZg) to discuss implementation questions diff --git a/dist/docs/3.0.13/sponsored-intelligence/implementing-si-hosts.mdx b/dist/docs/3.0.13/sponsored-intelligence/implementing-si-hosts.mdx new file mode 100644 index 0000000000..bf2543274e --- /dev/null +++ b/dist/docs/3.0.13/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](https://join.slack.com/t/agenticads/shared_invite/zt-3c5sxvdjk-x0rVmLB3OFHVUp~WutVWZg) for implementation support diff --git a/dist/docs/3.0.13/sponsored-intelligence/measurement.mdx b/dist/docs/3.0.13/sponsored-intelligence/measurement.mdx new file mode 100644 index 0000000000..530aff1c29 --- /dev/null +++ b/dist/docs/3.0.13/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.0.13/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.0.13/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.0.13/sponsored-intelligence/monetizing-ai.mdx b/dist/docs/3.0.13/sponsored-intelligence/monetizing-ai.mdx new file mode 100644 index 0000000000..5b2ca208bf --- /dev/null +++ b/dist/docs/3.0.13/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.0.13/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.0.13/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.0.13/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.0.13/sponsored-intelligence/overview) — Full technical protocol with product spectrum, ad networks, workflows, and measurement +- [Catalogs](/dist/docs/3.0.13/creative/catalogs) — How product, offering, store, and inventory catalogs work +- [Brand identity](/dist/docs/3.0.13/brand-protocol/brand-json) — The `brand.json` specification for voice, visual guidelines, and positioning +- [Content standards](/dist/docs/3.0.13/governance/overview) — How brand suitability rules are defined, shared, and enforced +- [SDKs and integration](/dist/docs/3.0.13/building/by-layer/L0) — JavaScript and Python SDKs for building buyer agents + +</Accordion> +</AccordionGroup> diff --git a/dist/docs/3.0.13/sponsored-intelligence/networks.mdx b/dist/docs/3.0.13/sponsored-intelligence/networks.mdx new file mode 100644 index 0000000000..5a18f2dc2f --- /dev/null +++ b/dist/docs/3.0.13/sponsored-intelligence/networks.mdx @@ -0,0 +1,196 @@ +--- +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_ids": [ + { "agent_url": "https://ads.ai-network.example.com", "id": "sponsored_response" } + ], + "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 implicit accounts (`require_operator_auth: false`). The buyer agent is trusted and declares brands via `sync_accounts`. The network then manages its own accounts with each underlying AI platform: + +``` +Buyer agent -> Network (implicit accounts, agent-trusted) +Network -> AI Platform A (explicit accounts, operator auth) +Network -> AI Platform B (explicit accounts, operator auth) +``` + +Declare capabilities accordingly: + +```json +{ + "adcp": { "major_versions": [3] }, + "supported_protocols": ["media_buy", "creative"], + "account": { + "require_operator_auth": false, + "supported_billing": ["operator", "agent"], + "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.0.13/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.0.13/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" + }] + }] +} +``` + +The `relationship` field uses the same values as `delegation_type` in adagents.json, plus `owned`: + +| 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.0.13/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.0.13/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.0.13/sponsored-intelligence/si-chat-protocol) and [implementing SI hosts](/dist/docs/3.0.13/sponsored-intelligence/implementing-si-hosts). +</Note> diff --git a/dist/docs/3.0.13/sponsored-intelligence/overview.mdx b/dist/docs/3.0.13/sponsored-intelligence/overview.mdx new file mode 100644 index 0000000000..ec5e99d895 --- /dev/null +++ b/dist/docs/3.0.13/sponsored-intelligence/overview.mdx @@ -0,0 +1,254 @@ +--- +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.0.13/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.0.13/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 — explicit accounts, 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.0.13/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.0.13/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.0.13/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({ + 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.0.13/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.0.13/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.0.13/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. + +If the user taps "Talk to Ridgeline," NovaMind hands off to Ridgeline's brand agent via [SI Chat Protocol](/dist/docs/3.0.13/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.0.13/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.0.13/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.0.13/sponsored-intelligence/networks"> + Network topology, implicit 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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/sponsored-intelligence/monetizing-ai"> + Non-technical guide for brands, agencies, and SMBs getting started. + </Card> +</CardGroup> diff --git a/dist/docs/3.0.13/sponsored-intelligence/product-spectrum.mdx b/dist/docs/3.0.13/sponsored-intelligence/product-spectrum.mdx new file mode 100644 index 0000000000..cb1b1a5622 --- /dev/null +++ b/dist/docs/3.0.13/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.0.13/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.0.13/sponsored-intelligence/si-chat-protocol) | + +<Info> +The first three product types are bought and served entirely through the [media buy protocol](/dist/docs/3.0.13/media-buy/index). SI Chat Protocol handoffs additionally use the `si_*` session tasks. See [protocol architecture](/dist/docs/3.0.13/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_ids": [ + { "agent_url": "https://ads.ai-platform.example.com", "id": "sponsored_response" } + ], + "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_ids": [ + { "agent_url": "https://ads.ai-platform.example.com", "id": "search_result_native" } + ], + "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_ids": [ + { "agent_url": "https://creative.adcontextprotocol.org", "id": "display_300x250" }, + { "agent_url": "https://creative.adcontextprotocol.org", "id": "display_native" } + ], + "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.0.13/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.0.13/sponsored-intelligence/si-chat-protocol) for the session lifecycle and capability model. diff --git a/dist/docs/3.0.13/sponsored-intelligence/si-chat-protocol.mdx b/dist/docs/3.0.13/sponsored-intelligence/si-chat-protocol.mdx new file mode 100644 index 0000000000..4f55c47765 --- /dev/null +++ b/dist/docs/3.0.13/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.0.13/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](https://join.slack.com/t/agenticads/shared_invite/zt-3c5sxvdjk-x0rVmLB3OFHVUp~WutVWZg) to discuss + +--- + +*The Sponsored Intelligence Protocol is part of the broader [AdCP ecosystem](/dist/docs/3.0.13/intro), enabling the next generation of AI-powered advertising.* diff --git a/dist/docs/3.0.13/sponsored-intelligence/specification.mdx b/dist/docs/3.0.13/sponsored-intelligence/specification.mdx new file mode 100644 index 0000000000..56c22f7a29 --- /dev/null +++ b/dist/docs/3.0.13/sponsored-intelligence/specification.mdx @@ -0,0 +1,524 @@ +--- +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.0.13/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. + +## Session Lifecycle + +### Session States + +**Schema**: [`enums/si-session-status.json`](https://adcontextprotocol.org/schemas/3.0.13/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 + +#### 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 + +### 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 + +#### 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 + +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.0.13/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.0.13/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.0.13/sponsored-intelligence/tasks/index.mdx b/dist/docs/3.0.13/sponsored-intelligence/tasks/index.mdx new file mode 100644 index 0000000000..429ccdd89a --- /dev/null +++ b/dist/docs/3.0.13/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`, `si_initiate_session`, `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.0.13/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` 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` 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`](./si_get_offering) | Get offering details, availability, and matching products (anonymous) | Host | +| [`si_initiate_session`](./si_initiate_session) | Start a conversation with a brand agent | Host | +| [`si_send_message`](./si_send_message) | Exchange messages within an active session | Host | +| [`si_terminate_session`](./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.0.13/sponsored-intelligence/tasks/si_get_offering.mdx b/dist/docs/3.0.13/sponsored-intelligence/tasks/si_get_offering.mdx new file mode 100644 index 0000000000..c733287ded --- /dev/null +++ b/dist/docs/3.0.13/sponsored-intelligence/tasks/si_get_offering.mdx @@ -0,0 +1,313 @@ +--- +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`, `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.0.13/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` | +| `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) | +| `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 | +| `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 | +| `url` | string | Product detail page URL | + +### 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.0.13/sponsored-intelligence/si-get-offering-request.json", + "offering_id": "nike-summer-sale" +} +``` + +### Response + +```json +{ + "$schema": "/schemas/3.0.13/sponsored-intelligence/si-get-offering-response.json", + "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.0.13/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.0.13/sponsored-intelligence/si-get-offering-response.json", + "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?" + +### Unavailable Response + +```json +{ + "$schema": "/schemas/3.0.13/sponsored-intelligence/si-get-offering-response.json", + "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`: + +```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": { ... } + } +} +``` + +## 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. **Caching** - Hosts may cache responses for up to `ttl_seconds`. This reduces load on brand agents for frequently checked offerings. + +5. **Graceful degradation** - If the lookup fails or times out, hosts may still initiate sessions directly. The offering lookup is optional. + +6. **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 +- 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 +- 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.0.13/sponsored-intelligence/tasks/si_initiate_session.mdx b/dist/docs/3.0.13/sponsored-intelligence/tasks/si_initiate_session.mdx new file mode 100644 index 0000000000..a46424ec44 --- /dev/null +++ b/dist/docs/3.0.13/sponsored-intelligence/tasks/si_initiate_session.mdx @@ -0,0 +1,189 @@ +--- +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`, `si_initiate_session`, `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.0.13/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` for correlation | +| `context` | object | No | Opaque correlation data echoed unchanged in the response (see [application context](/dist/docs/3.0.13/building/by-layer/L2/context-sessions#application-context-context)) | + +### Offering Token + +If a host performed a [`si_get_offering`](./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 + +### 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 | + +### 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.0.13/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.0.13/sponsored-intelligence/si-initiate-session-response.json", + "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. **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.0.13/sponsored-intelligence/tasks/si_send_message.mdx b/dist/docs/3.0.13/sponsored-intelligence/tasks/si_send_message.mdx new file mode 100644 index 0000000000..04a3a7cac1 --- /dev/null +++ b/dist/docs/3.0.13/sponsored-intelligence/tasks/si_send_message.mdx @@ -0,0 +1,214 @@ +--- +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`, `si_initiate_session`, `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.0.13/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` | +| `message` | string | No | User's text message | +| `action_response` | object | No | Response to a UI action (button click, form submit) | + +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 | +| `handoff` | object | Present when session_status is "pending_handoff" | + +### 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` 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.0.13/sponsored-intelligence/tasks/si_terminate_session.mdx b/dist/docs/3.0.13/sponsored-intelligence/tasks/si_terminate_session.mdx new file mode 100644 index 0000000000..bdf353e572 --- /dev/null +++ b/dist/docs/3.0.13/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`, `si_initiate_session`, `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.0.13/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.0.13/sponsored-intelligence/workflow.mdx b/dist/docs/3.0.13/sponsored-intelligence/workflow.mdx new file mode 100644 index 0000000000..0badfc9e36 --- /dev/null +++ b/dist/docs/3.0.13/sponsored-intelligence/workflow.mdx @@ -0,0 +1,211 @@ +--- +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 require explicit accounts (each advertiser authenticates via OAuth), while [ad networks](/dist/docs/3.0.13/sponsored-intelligence/networks) may use implicit accounts (the agent declares brands via `sync_accounts`). + +**Example: first-party AI platform (explicit accounts)** + +```json +{ + "adcp": { "major_versions": [3] }, + "supported_protocols": ["media_buy", "creative"], + "account": { + "require_operator_auth": true, + "supported_billing": ["operator"], + "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 explicit accounts, after OAuth authentication discover 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.0.13/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.0.13/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 +{ + "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.0.13/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.0.13/sponsored-intelligence/measurement) for metric definitions and conversion tracking. + +</Steps> diff --git a/dist/docs/3.0.13/trust.mdx b/dist/docs/3.0.13/trust.mdx new file mode 100644 index 0000000000..407e437b4c --- /dev/null +++ b/dist/docs/3.0.13/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.0.13/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.0.13/governance/campaign/specification). An independently operated governance agent validates each plan against deployer-configured policies via [`check_governance`](/dist/docs/3.0.13/governance/campaign/specification) before the orchestrator proceeds. Every governance decision produces a [`get_plan_audit_logs`](/dist/docs/3.0.13/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.0.13/reference/known-limitations#governance) section. + +→ [Governance overview](/dist/docs/3.0.13/governance/overview) · [Embedded human judgment](/dist/docs/3.0.13/governance/embedded-human-judgment) · [Policy registry](/dist/docs/3.0.13/governance/policy-registry) · [Annex III & Art 22 obligations](/dist/docs/3.0.13/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.0.13/governance/annex-iii-obligations) is the authoritative framing. + +→ [Annex III & Art 22 obligations](/dist/docs/3.0.13/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.0.13/reference/known-limitations#security-and-privacy). + +→ [Privacy Considerations](/dist/docs/3.0.13/reference/privacy-considerations) · [Trusted Match Protocol](/dist/docs/3.0.13/trusted-match/index) + +--- + +## Identity + +**What AdCP provides.** Discoverable identity for every party an agent transacts with. + +A house publishes [`brand.json`](/dist/docs/3.0.13/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.0.13/governance/property/adagents) declaring which sales agents are authorized to sell which properties or signal catalogs, with publisher-attested `signing_keys` per agent. + +A bilateral verification chain ties the two together: brand.json's `properties[].relationship` MUST match adagents.json's `delegation_type` for the inventory path to be valid. 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.0.13/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.0.13/reference/known-limitations#authentication-and-identity). + +**Inventory and product claims.** When a buyer evaluates a [`get_products`](/dist/docs/3.0.13/media-buy/task-reference/get_products) response, the chain above establishes *who is authorized to sell* the inventory in question: the seller's domain resolves to an agent declared in the property owner's `adagents.json`, that file matches the property owner's `brand.json` under the bilateral verification rule, and the response itself is RFC 9421-signed by a key listed in `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.0.13/brand-protocol/brand-json) · [adagents.json and agent identity](/dist/docs/3.0.13/governance/property/adagents) · [AAO Verified](/dist/docs/3.0.13/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.0.13/reference/known-limitations#authentication-and-identity) for the full description. + +→ [Security Model](/dist/docs/3.0.13/building/concepts/security-model) · [Security implementation reference](/dist/docs/3.0.13/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.0.13/governance/creative/provenance-verification) · [adagents.json and agent identity](/dist/docs/3.0.13/governance/property/adagents) + +--- + +## Disclosure + +**What AdCP provides.** The AI Disclosure page at [/docs/ai-disclosure](/dist/docs/3.0.13/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.0.13/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.0.13/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.0.13/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.0.13/trusted-match/ai-mediation.mdx b/dist/docs/3.0.13/trusted-match/ai-mediation.mdx new file mode 100644 index 0000000000..1ddc9d28ab --- /dev/null +++ b/dist/docs/3.0.13/trusted-match/ai-mediation.mdx @@ -0,0 +1,189 @@ +--- +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", + "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 +{ + "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_id": { "agent_url": "https://streamhaus.example", "id": "sponsored_recommendation" }, + "assets": { + "headline": { "content": "Built for rocky trails" }, + "body": { "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.0.13/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.0.13/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.0.13/trusted-match"> + Cross-publisher frequency capping walkthrough — how TMP solves the execution gap. + </Card> + <Card title="Specification" icon="scroll" href="/dist/docs/3.0.13/trusted-match/specification"> + Authoritative message types, field tables, and conformance requirements. + </Card> +</CardGroup> diff --git a/dist/docs/3.0.13/trusted-match/buyer-guide.mdx b/dist/docs/3.0.13/trusted-match/buyer-guide.mdx new file mode 100644 index 0000000000..c05e6f6eaa --- /dev/null +++ b/dist/docs/3.0.13/trusted-match/buyer-guide.mdx @@ -0,0 +1,246 @@ +--- +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", + "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 response +{ + "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_id": { "agent_url": "https://streamhaus.example", "id": "sidebar_display" }, + "assets": { + "headline": { "content": "Trail-ready gear for every summit" }, + "image": { "url": "https://cdn.acme.example/hiking-hero.jpg", "width": 300, "height": 250 }, + "cta": { "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.0.13/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.0.13/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. + +### 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.0.13/trusted-match/specification#tmpx-exposure-tokens) for the encryption format and binary token structure, and [Frequency-Cap Data Flow](/dist/docs/3.0.13/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.0.13/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.0.13/trusted-match/context-and-identity.mdx b/dist/docs/3.0.13/trusted-match/context-and-identity.mdx new file mode 100644 index 0000000000..e8eaca7426 --- /dev/null +++ b/dist/docs/3.0.13/trusted-match/context-and-identity.mdx @@ -0,0 +1,231 @@ +--- +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", + "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 +{ + "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_id": { "agent_url": "https://retailer.example.com", "id": "sponsored_carousel" }, + "assets": { + "items": { + "type": "catalog-asset", + "items": [ + { "gtin": "gtin-001", "image_url": "https://cdn.example.com/gtin-001.jpg" }, + { "gtin": "gtin-002", "image_url": "https://cdn.example.com/gtin-002.jpg" } + ] + } + } + }, + "macros": { + "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_id": { "agent_url": "https://retailer.example.com", "id": "native_text" }, + "assets": { + "headline": { "content": "Free shipping on iced beverages" }, + "body": { "content": "Summer promotion — order any iced beverage and get free delivery." }, + "cta": { "content": "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 `macros`. 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. The response also includes enrichment signals — audience segments and targeting key-values — that the publisher can pass to their ad server. + +### 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.0.13/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. +Set targeting KVs: category_affinity=beverages, seasonal_relevance=high. +``` + +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 `macros` (a key-value map for dynamic values). + +**Simple case (GAM/Prebid)**: The offer carries `package_id`. The publisher flows `package_id` via `targeting_kvs` signals to GAM for line item matching. The `macros` map carries dynamic values (e.g., sponsor labels, promo text) that GAM can insert into the creative at render time. + +**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 needed for rendering. 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**: Arbitrary key-value pairs (e.g., `category_affinity=beverages`) that the publisher can use for line item targeting, reporting breakdowns, or real-time decisioning. + +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.0.13/trusted-match/data-protection-roles.mdx b/dist/docs/3.0.13/trusted-match/data-protection-roles.mdx new file mode 100644 index 0000000000..5ee7c43c1a --- /dev/null +++ b/dist/docs/3.0.13/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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/trusted-match/execution-gap.mdx b/dist/docs/3.0.13/trusted-match/execution-gap.mdx new file mode 100644 index 0000000000..9d6cbc382a --- /dev/null +++ b/dist/docs/3.0.13/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.0.13/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.0.13/trusted-match/identity-match-implementation.mdx b/dist/docs/3.0.13/trusted-match/identity-match-implementation.mdx new file mode 100644 index 0000000000..1531d36d02 --- /dev/null +++ b/dist/docs/3.0.13/trusted-match/identity-match-implementation.mdx @@ -0,0 +1,116 @@ +--- +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.0.13/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.0.13/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.0.13/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.0.13/trusted-match/specification) — wire spec, TMPX format, conformance invariants +- [Buyer Guide](/dist/docs/3.0.13/trusted-match/buyer-guide) — buyer agent integration, Context Match + Identity Match flows +- [Migration from AXE](/dist/docs/3.0.13/trusted-match/migration-from-axe) — for buyers transitioning from AXE-shaped pipelines, including the OpenRTB User.eids cross-walk +- [Privacy architecture](/dist/docs/3.0.13/trusted-match/privacy-architecture) — what each party learns +- [Router architecture](/dist/docs/3.0.13/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.0.13/trusted-match/impression-tracker-implementation.mdx b/dist/docs/3.0.13/trusted-match/impression-tracker-implementation.mdx new file mode 100644 index 0000000000..ccd41d958d --- /dev/null +++ b/dist/docs/3.0.13/trusted-match/impression-tracker-implementation.mdx @@ -0,0 +1,302 @@ +--- +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.0.13/trusted-match/identity-match-implementation) boundary. The protocol only constrains: + +- The wire spec — see the [TMP specification](/dist/docs/3.0.13/trusted-match/specification). +- The conformance invariants the Identity Match service must satisfy — also normative in the [TMP specification](/dist/docs/3.0.13/trusted-match/specification#conformance-invariants-for-identitymatch-eligibility). +- The cap-fire boundary contract — defined in [Frequency-Cap Data Flow](/dist/docs/3.0.13/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 generates one `impression_id` per impression at TMPX decode time 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. Use UUIDv4 (≥122 bits randomness) or an equivalent collision-resistant generator. +2. **Generated by the buyer's impression tracker at TMPX decode** — not by the seller, the publisher, the router, or the TMPX nonce. The TMPX nonce is per-Identity-Match-evaluation and shared across all impressions in the serve window; seller- or publisher-supplied IDs would collide. +3. **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. +4. **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.0.13/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 TMPX-bearing pixel fire, the impression tracker: + +1. Decodes the TMPX (HPKE decrypt + binary parse) → resolved identities + `(seller_agent_url, package_id)` context. +2. Looks up the package's `fcap_keys`. +3. Generates one `impression_id`. +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). + +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.0.13/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.0.13/trusted-match/identity-match-implementation) — the cap-fire boundary contract this page sits behind +- [TMP Specification](/dist/docs/3.0.13/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.0.13/trusted-match/index.mdx b/dist/docs/3.0.13/trusted-match/index.mdx new file mode 100644 index 0000000000..e4898d02cd --- /dev/null +++ b/dist/docs/3.0.13/trusted-match/index.mdx @@ -0,0 +1,245 @@ +--- +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.0.13/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.0.13/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", + "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 +{ + "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.0.13/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.0.13/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.0.13/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.0.13/trusted-match/specification"> + Authoritative message types, field tables, and conformance requirements. + </Card> + <Card title="Privacy architecture" icon="shield-halved" href="/dist/docs/3.0.13/trusted-match/privacy-architecture"> + Structural separation, temporal decorrelation, and TEE attestation. + </Card> + <Card title="Data protection roles" icon="scale-balanced" href="/dist/docs/3.0.13/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.0.13/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.0.13/trusted-match/surfaces/web" /> + <Card title="AI assistants" icon="robot" href="/dist/docs/3.0.13/trusted-match/surfaces/ai-assistants" /> + <Card title="Mobile" icon="mobile" href="/dist/docs/3.0.13/trusted-match/surfaces/mobile" /> + <Card title="Retail media" icon="store" href="/dist/docs/3.0.13/trusted-match/surfaces/retail-media" /> + <Card title="CTV" icon="tv" href="/dist/docs/3.0.13/trusted-match/surfaces/ctv" /> +</CardGroup> diff --git a/dist/docs/3.0.13/trusted-match/migration-from-axe.mdx b/dist/docs/3.0.13/trusted-match/migration-from-axe.mdx new file mode 100644 index 0000000000..c44065c211 --- /dev/null +++ b/dist/docs/3.0.13/trusted-match/migration-from-axe.mdx @@ -0,0 +1,105 @@ +--- +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 `macros` + `{TMPX}` | Structured assets move to the creative manifest; dynamic key-values pass through Offer `macros`; 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 through Offer `macros` for dynamic creative rendering. 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.0.13/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` | | +| `uid2` | `uidapi.com` | `atype: 3` | +| `euid` | `euid.eu` | | +| `pairid` | `iabtechlab.com/pair` | | +| `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 | | +| `other` | buyer-defined `source` URL | | + +The TMP `user_token` field corresponds to `User.eids[].uids[].id`. AdCP carries up to 3 identities per Identity Match request (HPKE size budget — see [TMPX size budget](/dist/docs/3.0.13/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.0.13/trusted-match/privacy-architecture.mdx b/dist/docs/3.0.13/trusted-match/privacy-architecture.mdx new file mode 100644 index 0000000000..990f58ef6e --- /dev/null +++ b/dist/docs/3.0.13/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's privacy model is structural, not policy-based. The protocol separates user identity from page context so that buyers never receive both together. 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 code is running unmodified, upgrading the guarantee from "auditable" to "independently verifiable." + +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.0.13/protocol/architecture#privacy-posture-across-domains) and the cross-protocol [Privacy Considerations](/dist/docs/3.0.13/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:** + +- Associate a user token with a page URL or content signal +- Determine that a specific user visited a specific page +- Build a cross-page browsing profile for any user + +These limitations hold because the buyer never receives identity and context in the same request, and the decorrelation mechanisms described below prevent joining them after the fact. + +### 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.0.13/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 structural separation + +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. + +The TMPX token does not violate structural separation because: + +- 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 constructible: buyer never sees identity + context together | +| 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 protocol level. Buyers receive context or identity, never both. The separation is structural, not contractual. + +## Regulatory Posture + +TMP's structural separation aligns with the data minimization principle required by GDPR, CCPA, ePrivacy, and similar regulations: + +- Buyer agents never receive user identity paired with content context. Minimization is enforced by the protocol, not by policy. +- 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, the separation is independently verifiable, providing auditable evidence for regulators. + +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.0.13/trusted-match/data-protection-roles). For cross-protocol privacy guidance, see [Privacy Considerations](/dist/docs/3.0.13/reference/privacy-considerations). diff --git a/dist/docs/3.0.13/trusted-match/router-architecture.mdx b/dist/docs/3.0.13/trusted-match/router-architecture.mdx new file mode 100644 index 0000000000..a1c1235076 --- /dev/null +++ b/dist/docs/3.0.13/trusted-match/router-architecture.mdx @@ -0,0 +1,294 @@ +--- +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/tmp/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.0.13/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. +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 first response received. Duplicate `package_id` across providers is a configuration error; the router SHOULD log a warning. + - **Enrichment signals** are concatenated. Segments from all providers are combined into a single list. Targeting key-values from different providers are namespaced to prevent collisions. +5. It returns the merged response to the publisher. + +### 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 using the canonical `identities_hash` of the filtered set. 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. + +Duplicate `package_id` across providers is a configuration error — packages come from media buys and are provider-specific. If it occurs, the router applies conservative merging: the package is only eligible if it appears in `eligible_package_ids` from both providers. The router uses the minimum `serve_window_sec` across providers and SHOULD log a warning. + +### 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.0.13/trusted-match/specification.mdx b/dist/docs/3.0.13/trusted-match/specification.mdx new file mode 100644 index 0000000000..8b488f7d37 --- /dev/null +++ b/dist/docs/3.0.13/trusted-match/specification.mdx @@ -0,0 +1,698 @@ +--- +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.0.13/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.0.13/trusted-match/) and [core concepts](/dist/docs/3.0.13/trusted-match/context-and-identity). + +Specific areas expected to evolve include TMPX exposure tokens, country-partitioned identity, and Offer macros — 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`, `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. | +| `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.0.13/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.0.13/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 + +Returned by the buyer agent. Contains offers for matched packages and optional response-level targeting signals. + +| 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. | +| `signals` | Signals | No | Response-level targeting signals for ad server pass-through. Not per-offer — applies to the response as a whole. In the GAM case, these carry the key-value pairs that trigger line items. | + +#### 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. | +| `macros` | Map\<string, string\> | No | Key-value pairs for dynamic creative rendering or attribution tracking. In the GAM case, these flow as macro values. Distinct from the Identity Match `tmpx` field which carries an encrypted exposure token for frequency tracking. | + +#### 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 targeting signals for ad server pass-through. + +| Field | Type | Required | Description | +|---|---|---|---| +| `segments` | List\<string\> | No | Audience or contextual segment IDs. | +| `targeting_kvs` | List\<KeyValuePair\> | No | Key-value pairs for ad server targeting. | + +#### KeyValuePair + +| Field | Type | Required | Description | +|---|---|---|---| +| `key` | string | Yes | Targeting key. | +| `value` | string | Yes | Targeting value. | + +### 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.0.13/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. | + +Each entry in `identities` is an `{user_token, uid_type}` pair: + +| 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`, `other`. Tells the buyer which identity graph to resolve against. See `uid-type` enum. | + +### IdentityMatchResponse + +Returned by the buyer agent. A list of eligible package IDs with a serve-window throttle. + +| 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. 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.0.13/trusted-match/identity-match-implementation). | +| `tmpx` | string | No | HPKE-encrypted exposure token containing resolved user identity tokens. The publisher substitutes this into creative tracking URLs as `{TMPX}`. The buyer's impression pixel receives the token, enabling real-time per-user frequency state updates. Wire format: `kid.base64url_nopad(ciphertext)` (unpadded, no `=` characters). Publishers MUST treat this value as opaque pass-through data. | + +The response includes eligible package IDs, a serve-window throttle, and an optional `tmpx` field. The TMPX token 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. + +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.0.13/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). + +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.0.13/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. | + +### 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/tmp/provider-registration.json`). + +| Setting | Type | Required | Description | +|---|---|---|---| +| `provider_id` | string | Yes | Stable identifier for this provider registration. 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 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 merge conflict resolution. Lower values = higher priority. Default: 0. | +| `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. + +### 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.0.13/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.** The existing "deployment-specific (mTLS, API key, etc.)" language in [Request Authentication](#request-authentication) sets the mechanism; the minimum bar is that 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.0.13/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.0.13/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_ids` | List\<FormatId\> | No | Creative format identifiers eligible for this package. Uses the standard `{agent_url, id}` shape. | +| `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.0.13/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.** Context Match and Identity Match are processed by different actors with different package visibility, so seller identity is on the wire for one but not the other: Context Match goes to the provider (which already has the sync-time binding), Identity Match goes to the buyer agent (which needs the seller URL to index its own registered active set). `seller_agent` lives on the cached `AvailablePackage` (sync time) and does not appear on `context_match_request`: + +- Sync time is when a provider first learns about a package; the binding is established once and reused for every subsequent evaluation. +- Putting `seller_agent` on `context_match_request` would either duplicate the sync-time binding (redundant) or open a path for request-time seller filtering on the context path, which re-introduces the identity- and allocation-leakage failure modes [Package set decorrelation](#package-set-decorrelation) exists to prevent. +- Publishers and routers can derive seller identity from `media_buy_id` via their own stores; providers cannot. Keeping attribution on the package serves the actor that actually needs it on the wire. + +`identity_match_request` carries `seller_agent_url` directly because the buyer's identity-match service needs it to resolve the active package set it has registered for that seller — that resolution happens at the buyer agent, not at the provider, and is keyed on seller URL rather than on a per-package binding. This is buyer-side scoping, not provider-side filtering, and so does not interact with the package-set decorrelation guarantee. + +**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.0.13/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.0.13/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. MUST NOT forward `seller_agent` into `context_match_request`. (`identity_match_request` carries `seller_agent_url` directly per its schema; the router MUST forward it unchanged.) | +| **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 request-time filter on Context Match.** Publishers, routers, and providers MUST NOT use `seller_agent` to scope, filter, or route `context_match_request`. `package_ids` is not present on Context Match either; package selection is provider-side based on the cached sync. `identity_match_request` does carry `seller_agent_url`, but only as the key the buyer agent uses to resolve its registered package set — not as a provider/router filter. +- **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. + +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` | +| `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 placement per provider, the same signature can be cached and reused for all requests to the same `(placement_id, provider_endpoint_url)` pair within a 24-hour epoch. Cache keys MUST include `provider_endpoint_url` — reusing a signature across 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 | +| `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 | +| `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), sort entries by `uid_type` (UTF-8 byte order), then by `user_token` (UTF-8 byte order), then serialize the resulting array as [RFC 8785 JCS](https://datatracker.ietf.org/doc/html/rfc8785). SHA-256 the UTF-8 bytes; hex-encode for the signed input, use raw bytes for cache keys (both conventions hash the same preimage). + +The router filters `identities` per provider before forwarding (see [Identity Match fan-out](/dist/docs/3.0.13/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 + +The router MUST authenticate incoming requests from the publisher before signing and fanning out. The mechanism for publisher-to-router authentication is deployment-specific (mTLS, API key, etc.) and outside the scope of TMP signing, but MUST be enforced. This prevents a compromised publisher-side component from laundering unauthenticated requests through the router's signature. + +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 | + +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. + +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 + +- **Web, mobile, CTV (SSAI), audio (DAI):** Standard impression pixel — `{TMPX}` substituted at serve time. +- **CTV (client-side VAST):** Publisher substitutes `{TMPX}` before the VAST document reaches the player. +- **DOOH:** Play-log-based — the TMPX token is logged by the DOOH player and included in play log records rather than pixel URLs. + +## 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. | +| `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}`, 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). 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) + +### 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.0.13/trusted-match/surfaces/ai-assistants.mdx b/dist/docs/3.0.13/trusted-match/surfaces/ai-assistants.mdx new file mode 100644 index 0000000000..018c1c2b7c --- /dev/null +++ b/dist/docs/3.0.13/trusted-match/surfaces/ai-assistants.mdx @@ -0,0 +1,179 @@ +--- +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", + "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 +{ + "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_id": { "agent_url": "https://chatplatform.example.com", "id": "sponsored_recommendation" }, + "assets": { + "headline": { "content": "Trending for spring" }, + "body": { "content": "Apex Classic Low — clean lines, tons of colorways. Free shipping this month." }, + "product_catalog": { "catalog_id": "catalog-sneakers", "ids": ["sku-classic-low", "sku-runner-x"] } + } + }, + "macros": { + "click_url": "https://apexathletics.example.com/classic-low?utm_source=chatplatform" + } + } + ], + "signals": { + "segments": ["sneaker_enthusiast"], + "targeting_kvs": [{ "key": "product_affinity", "value": "sneakers" }] + } +} +``` + +The buyer's offer includes `package_id` (required) along with optional fields: `brand`, `price`, `summary`, `creative_manifest`, and `macros`. 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.0.13/trusted-match/surfaces/ctv.mdx b/dist/docs/3.0.13/trusted-match/surfaces/ctv.mdx new file mode 100644 index 0000000000..8c27df9d6a --- /dev/null +++ b/dist/docs/3.0.13/trusted-match/surfaces/ctv.mdx @@ -0,0 +1,209 @@ +--- +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", + "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 +{ + "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_id": { "agent_url": "https://riverview.example.com", "id": "video_30s" }, + "assets": { + "video": { + "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_id": { "agent_url": "https://riverview.example.com", "id": "video_15s" }, + "assets": { + "video": { + "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.0.13/trusted-match/surfaces/mobile.mdx b/dist/docs/3.0.13/trusted-match/surfaces/mobile.mdx new file mode 100644 index 0000000000..841a817328 --- /dev/null +++ b/dist/docs/3.0.13/trusted-match/surfaces/mobile.mdx @@ -0,0 +1,268 @@ +--- +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", + "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 +{ + "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", + "artifact_refs": [ + { "type": "url", "value": "https://tastecraft.example.com/weeknight-pasta-recipes" } + ] +} +``` + +#### Response + +```json +{ + "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_id": { "agent_url": "https://tastecraft.example.com", "id": "native_card" }, + "assets": { + "headline": { "content": "Everything for pasta night" }, + "body": { "content": "Fresh basil, San Marzano tomatoes, and artisan pasta. 20% off your next order." }, + "image": { "url": "https://cdn.freshmart.example/campaigns/pasta-night-card.jpg", "width": 1200, "height": 628 }, + "cta": { "content": "Shop Now" } + } + }, + "macros": { + "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_id": { "agent_url": "https://tastecraft.example.com", "id": "native_card" }, + "assets": { + "headline": { "content": "The only pan you need" }, + "body": { "content": "Pre-seasoned 12-inch cast iron. Free shipping this week." }, + "image": { "url": "https://cdn.ironpan.example/campaigns/skillet-card.jpg", "width": 1200, "height": 628 }, + "cta": { "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", + "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.0.13/trusted-match/surfaces/retail-media.mdx b/dist/docs/3.0.13/trusted-match/surfaces/retail-media.mdx new file mode 100644 index 0000000000..4bee694a7e --- /dev/null +++ b/dist/docs/3.0.13/trusted-match/surfaces/retail-media.mdx @@ -0,0 +1,129 @@ +--- +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", + "artifact_refs": [ + { "type": "custom", "value": "search:beverages-coffee" } + ] +} +``` + +The buyer responds with an offer: + +```json +{ + "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_id": { "agent_url": "https://grocery-retailer.example.com", "id": "sponsored_product_listing" }, + "assets": { + "items": { + "type": "product", + "items": [ + { "gtin": "gtin-cold-brew-12oz", "badge": "BOGO", "image_url": "https://cdn.example.com/cold-brew-12oz.jpg" }, + { "gtin": "gtin-iced-latte-4pk", "badge": "PROMO", "image_url": "https://cdn.example.com/iced-latte-4pk.jpg" } + ] + }, + "promo_banner": { + "url": "https://cdn.example.com/banners/b2g1.png", + "width": 728, + "height": 90 + } + } + }, + "macros": { + "click_tracker": "https://track.example.com/click?pkg=coffee-sponsored", + "impression_tracker": "https://track.example.com/imp?pkg=coffee-sponsored" + } + } + ] +} +``` + +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.0.13/trusted-match/surfaces/web.mdx b/dist/docs/3.0.13/trusted-match/surfaces/web.mdx new file mode 100644 index 0000000000..45717d78de --- /dev/null +++ b/dist/docs/3.0.13/trusted-match/surfaces/web.mdx @@ -0,0 +1,227 @@ +--- +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", + "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 +{ + "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"], + "targeting_kvs": [ + { "key": "adcp_seg", "value": "sustainability" }, + { "key": "adcp_seg", "value": "home_cooking" }, + { "key": "adcp_pkg", "value": "pkg-display-0041" }, + { "key": "adcp_pkg", "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`, `macros`) are available for integrations that need them but are not required. +- `signals.targeting_kvs` are the key-value pairs that the Prebid module sets on the GAM ad request. GAM line items are configured to match on these keys. + +## 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 takes the context match `signals.targeting_kvs` and sets them on the GAM ad request as key-value pairs: + +``` +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 TMP Prebid module is a Real-Time Data (RTD) module that replaces vendor-specific RTD modules. It is defined by the [TMP Prebid proposal](/specs/prebid-tmp-proposal) and follows the standard Prebid RTD module interface. It handles 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. + +## 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.0.13/verification/overview.mdx b/dist/docs/3.0.13/verification/overview.mdx new file mode 100644 index 0000000000..401687a201 --- /dev/null +++ b/dist/docs/3.0.13/verification/overview.mdx @@ -0,0 +1,260 @@ +--- +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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/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.0.13/brand-protocol/brand-json) — full schema for self-declarations, parent-house portfolios, and Keller architecture metadata +- [adagents.json reference](/dist/docs/3.0.13/governance/property/adagents) — publisher-side authorization, the `authorization_type` discriminator, and the `signing_keys[]` JWK shape +- [verify_brand_claim](/dist/docs/3.0.13/brand-protocol/tasks/verify_brand_claim) — Tier-2 implementer guide for delegating verification to a brand agent +- [Security model](/dist/docs/3.0.13/building/concepts/security-model) — three-party governance and trust posture +- [Request signing](/dist/docs/3.0.13/building/by-layer/L1/request-signing) — RFC 9421 details, key rotation, transparency-log roadmap +- [Trust & Security](/dist/docs/3.0.13/trust) — CISO-facing surface map; this walkthrough is the buyer-facing companion +- [AAO Verified](/dist/docs/3.0.13/building/verification/aao-verified) — continuous behavioral conformance attestation, layered on top of the identity chain above