S1: Media buy mastery
Members only — Requires Practitioner credential. ~45 minutes with Addie.
Combines hands-on lab and adaptive exam.
Specialisms this track prepares you to validate
Agents in themedia_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:
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
issclaims and client-supplied headers are never treated as identity, and what each link in the chain defends against. - Apply
idempotency_keycorrectly across the lifecycle: fresh UUID v4 per logical buy, same key + same payload on network retry (returnsreplayed: true), new key when the agent re-plans with a different payload, and the handling ofIDEMPOTENCY_CONFLICTandIDEMPOTENCY_EXPIRED. Explain why this is what makes agent retries safe for real money. - Trace the state machine:
create_media_buyreturnspending_creativesorpending_start;sync_creativesclearspending_creatives; the seller MUST transitionpending_start→activeat flight start and webhook the orchestrator. Seller-initiatedrejectedis only valid from the pending states. - Reason about which actions are valid in which states (
cancel,sync_creativesfrom pending states;pause/resume/update_media_buyfromactive), and handleNOT_CANCELLABLEand concurrency conflicts viarevision - Select a
pricing_option_idfrom a product’spricing_options[]array — CPM, vCPM, CPP, CPA, flat rate, time — and explain why different pricing models carry differentparameters - Negotiate
measurement_termsandperformance_standardson guaranteed buys: propose overrides oncreate_media_buy, interpret seller acceptance (echoed back), adjustments, orTERMS_REJECTED. Recover by aligning to the seller’s supported vendors or accepting product defaults. - Know that
update_media_buyrequiresaccount(not justmedia_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_numberat the buy or package level (package-level overrides buy-level when flights or stations differ) - Interpret broadcast delivery reports:
get_media_buy_deliveryreturns 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_buysto check status,valid_actions, and creative approvals before acting - Interpret seller indicators as current relationship-scoped state: explain why creative fatigue belongs to one package–creative assignment, why the same creative may be fatigued on one seller but not another, and why provider methodology belongs in
ext - Handle pricing negotiation, budget allocation, and multi-agent orchestration
- Use refinement and package requests for complex buying scenarios
- Monitor and optimize campaign delivery using protocol tools
- Explain the measurement-agent loop: make the orchestrator a buyer-controlled gateway for the fixed
get_media_buy_deliveryandprovide_performance_feedbacktasks, authenticate provider output, and fan normalized assertions out to sellers without granting providers seller access - Reason about failure modes, conflict resolution, and edge cases
Prerequisite reading
Core transaction tasks
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.Proposal negotiation guide
Typed constraints, ask-only fallback, immutable successors, holds, and
acceptance.
Media buys overview
Campaign structure, the
pending_creatives → pending_start → active
state machine, and the approval lifecycle.Indicators
Seller interpretations such as package-scoped creative fatigue, returned through existing resource reads.
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:Lab exercises
During the module, Addie will guide you through hands-on exercises:- Product discovery and evaluation — Query multiple sandbox agents, compare products, evaluate pricing
- Pricing option selection — From the same product’s
pricing_options[]array, select a CPM option and a CPP option. Explain what each option’sparametersmean and why the minimum spend differs. - Proposal and forecasting — Request proposals, analyze delivery forecasts (spend curves and availability)
- Terms negotiation — On a guaranteed product, propose
measurement_termswith a different vendor than the seller’s default, andperformance_standardswith a tighter viewability threshold. Observe seller acceptance, adjustment, orTERMS_REJECTED. Recover by aligning to the seller’s supported vendors. - Campaign commitment and optimization — Commit a direct offer with
buy_products, assign creatives throughsync_creatives, monitor throughget_media_buys, and apply an in-envelope change withcontrol_media_buy. Submit compact performance feedback with a named baseline, interpretingaccepted,applied, andnot_appliedwithout overstating causality. Explain how the 3.xcreate_media_buyandupdate_media_buyfacades map to the canonical operations, and verify that the update facade requiresaccount. - Proposal negotiation and lifecycle walkthrough — Following the proposal negotiation implementation guide, act as Sam at Pinnacle Agency against StreamHaus. Use
request_proposals, inspectproposal_refinement.supported_dimensions, and construct a refinement the seller can actually evaluate. Try a USD budget ceiling, a product include/omit decision, a targeting change, and multiple alternatives only when advertised; interpretpartialandunableas structured counteroffers rather than generic failures. On an ask-only seller, observe the pre-mutationUNSUPPORTED_FEATURE, remove or translate the typed field, and retry. Finalize the chosen immutable proposal, callaccept_proposal, and trace the resulting buy throughpending_creatives→sync_creatives→pending_start→active. - Lifecycle management and recovery — Use
revisionfor concurrency, followavailable_actionstocontrol_media_buyfor operational changes, and route commercial changes throughrefine_proposals(accepted_proposal_id)plusaccept_proposal. HandleREQUOTE_REQUIREDwithout mutating the accepted snapshot. - Broadcast billing and delivery — Create a broadcast buy with a buy-level
agency_estimate_numberand one package that overrides it with a station-specific estimate number. Verify both appear on delivery reconciliation. Callget_media_buy_deliveryand interpret the measurement window fields: explain whyc3data may be incomplete immediately after broadcast and when thec7window closes. - Multi-agent orchestration and execution — Manage campaigns across multiple sellers. Trace a cross-publisher suppression scenario: a viewer sees an ad on publisher A, then visits publisher B within the 2-hour recency window — what does Identity Match return and why? Configure frequency parameters (5/week, 2-hour minimum recency) and predict delivery impact. Explain why Context Match and Identity Match are structurally separated. Then design, conceptually and outside the public sales-agent sandbox, an orchestrator-hosted measurement gateway that exposes
get_media_buy_deliveryandprovide_performance_feedback, grants only those orchestrator tasks, and maps one cross-seller result into seller-local submissions. - Warnings, indicators, and invalidations — Analyze a success warning and the later resource snapshot; distinguish buy/package/assignment indicator placement, exact type coverage, assignment approval, and webhook invalidation handling.
control_media_buy receipt:
get_media_buys read supplies the durable conclusion. The same warning may be mirrored by the update_media_buy compatibility facade:
get_media_buys baseline (known IDs or every status, fully paginated, without indicator_types), the learner receives these invalidations in either order:
get_creative_delivery. A material in-place brief revision invalidates the prior evaluation and fires indicators.changed; the snapshot is unknown until reevaluated. After replacing the creative, a successful direct unfiltered read confirming the old assignment is absent retires its old indicator keys; filtered disappearance does not.
Assessment
Passing threshold: 70%.
Start this module
Start S1 with Addie
“I’d like to start the media buy specialist module.”