Skip to main content

Documentation Index

Fetch the complete documentation index at: https://agenticadvertisingorg-changeset-release-main.mintlify.app/llms.txt

Use this file to discover all available pages before exploring further.

S1: Media buy mastery

Members only — Requires Practitioner credential. ~45 minutes with Addie. Combines hands-on lab and adaptive exam.
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:
SpecialismStatusWhat it covers
sales-guaranteedstableGuaranteed media buys with human IO approval
sales-non-guaranteedstableNon-guaranteed auction-based media buys
sales-proposal-modedeprecatedDeprecated in 3.1. Replace with sales-guaranteed + media_buy.supports_proposals: true.
sales-catalog-drivenstableCatalog-driven commerce with conversion tracking
sales-broadcast-tvstableBroadcast linear TV with guaranteed inventory and FCC cancellation rules
sales-socialstableSocial media advertising platform with self-service flows
See the Compliance Catalog for the full taxonomy and the specialism enum 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_startactive at flight start and webhook the orchestrator. Seller-initiated rejected is only valid from the pending states.
  • Reason about which actions are valid in which states (cancel, sync_creatives from pending states; pause/resume/update_media_buy from active), and handle NOT_CANCELLABLE and concurrency conflicts via revision
  • Select a pricing_option_id from a product’s pricing_options[] array — CPM, vCPM, CPP, CPA, flat rate, time — and explain why different pricing models carry different parameters
  • Negotiate measurement_terms and performance_standards on guaranteed buys: propose overrides on create_media_buy, interpret seller acceptance (echoed back), adjustments, or TERMS_REJECTED. Recover by aligning to the seller’s supported vendors or accepting product defaults.
  • Know that update_media_buy requires account (not just media_buy_id) so billing routes to the right relationship; omitting it is a protocol error
  • Tie broadcast buys to agency billing by attaching agency_estimate_number at the buy or package level (package-level overrides buy-level when flights or stations differ)
  • Interpret broadcast delivery reports: get_media_buy_delivery returns measurement window data (live, c3, c7) that progresses over days after broadcast — the C7 window’s DVR accumulation doesn’t close until seven days post-air, and vendor processing adds further delay before final data is available; incomplete data during this period is by design, not underdelivery
  • Use get_media_buys to check status, valid_actions, and creative approvals before acting
  • 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

get_products

Product discovery: natural language briefs, structured filters, response schemas.

create_media_buy

Campaign creation: manual mode, proposal mode, approval lifecycle.

update_media_buy

Campaign modification: budgets, targeting, scheduling, creative swaps.

get_media_buys

Operational status: lifecycle state, creative approvals, valid actions, delivery snapshots.

get_media_buy_delivery

Delivery reporting: impressions, spend, completion rates, performance.

Supporting concepts

Media buy specification

The formal specification for the media buy protocol.

Pricing models

pricing_options[] and pricing_option_id: CPM, vCPM, CPP, CPA, flat rate, time.

Accountability terms

Negotiate performance_standards, measurement_terms, and cancellation_policy. Recovery from TERMS_REJECTED.

Media buys overview

Campaign structure, the pending_creativespending_startactive state machine, and the approval lifecycle.

Trusted Match Protocol

How TMP handles impression-time decisions such as cross-publisher frequency capping.

AdCP and OpenRTB

How campaign workflows in AdCP connect to impression-time execution patterns.

Orchestrator design

Architecture patterns for multi-agent orchestration.

Conversion tracking

Event sources, log_event, and attribution setup.

Performance feedback

Seller optimization feedback based on campaign performance.

Context and Identity Match

The two structurally separated operations that power impression-time execution.

Router architecture

Deployment, fan-out, and provider configuration for the TMP Router.

Connecting to the test agent

Lab exercises run against the public test agent. Use the shared token — no signup required:
export ADCP_AUTH_TOKEN="1v8tAhASaUYYp4odoQ1PnMpdqNaMiTrCRqYo9OJp6IQ"
export AGENT_URL="https://test-agent.adcontextprotocol.org/sales/mcp"
See the 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_creativespending_startactive 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 and delivery — Create a broadcast buy with a buy-level agency_estimate_number and one package that overrides it with a station-specific estimate number. Verify both appear on delivery reconciliation. Call get_media_buy_delivery and interpret the measurement window fields: explain why c3 data may be incomplete immediately after broadcast and when the c7 window closes.
  9. Multi-agent orchestration and execution — Manage campaigns across multiple sellers. Trace a cross-publisher suppression scenario: a viewer sees an ad on publisher A, then visits publisher B within the 2-hour recency window — what does Identity Match return and why? Configure frequency parameters (5/week, 2-hour minimum recency) and predict delivery impact. Explain why Context Match and Identity Match are structurally separated.

Assessment

DimensionWeightWhat Addie evaluates
Protocol mastery30%Comprehensive understanding of media buy lifecycle
Targeting expertise25%Masters advanced targeting capabilities
Analytical skill25%Analyzes delivery data effectively
Problem solving20%Handles complex scenarios and edge cases
Passing threshold: 70%.

Start this module

Start S1 with Addie

“I’d like to start the media buy specialist module.”