Skip to main content
A media buyer sits at a desk surrounded by four different platform dashboards, each showing different data formats and interfaces 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. 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 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:
One brief. Three sellers. Same JSON structure back.

Step 2: Compare proposals

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 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: 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:
The refine array lets Sam layer constraints without starting over. Each refinement narrows the previous result set.

Step 3: Match creatives

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 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.

Step 4: Launch the campaign

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 Sam creates the media buy. One call per seller, same structure everywhere:
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

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 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 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_planscheck_governance (proposed) → create_media_buycheck_governance (committed by seller). See Campaign Governance for the complete specification.

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.
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 for the full specification.

Step 7: Monitor delivery

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 The campaign is running. Sam monitors through a single view — his platform calls get_media_buy_delivery on each seller and merges the results:
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

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) 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.

Go deeper