Use this file to discover all available pages before exploring further.
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.
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.
For broader discovery — “find me CTV publishers with sports inventory” — the AgenticAdvertising.org 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.
What the registry returns
The registry API resolves brands to their AdCP agents:
GET /api/registry/agents?capability=get_products&channel=ctv
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:
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.
Deep dive: Accounts
Commercial identity, billing models, and multi-advertiser management.
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:
{ "$schema": "https://adcontextprotocol.org/schemas/v3/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.
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:
{ "$schema": "https://adcontextprotocol.org/schemas/v3/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.
Follow Sam's full journey
The complete media buy walkthrough — brief to delivery across three sellers.
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:
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:
{ "$schema": "https://adcontextprotocol.org/schemas/v3/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:
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.
The trust surface underneath
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.
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) 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.
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:
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:
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.
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:
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:
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:
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.
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:
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 — discovery, acquisition, creative approval, and lifecycle management, all through the same protocol.
Brand protocol
Brand identity, rights licensing, and how brands control what AI does with their assets.
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.
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:
Implement an AdCP agent — Expose your platform’s capabilities as AdCP tasks over MCP or A2A. Start with get_adcp_capabilities.
Publish your adagents.json — Declare your properties and authorized agents so buyers can discover you.
Test your implementation — Validate with Addie or the client SDKs.
Implement the protocol domains relevant to your business:
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.
Read the buyer’s guide — The monetizing AI guide explains how this works for brands, agencies, and SMBs.
Check platform support — See which of your media partners support AdCP, or browse the registry.
Try it with Addie — Ask Addie to walk you through the protocol — no code required.
Build your own agent — No engineering team required. The certification program teaches anyone to build a working advertising agent through vibe coding — describe what you want, an AI coding assistant writes the code.
Connect with your team — Share the building guide and client SDKs with your technical team to start integrating.
The Prebid Sales Agent 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 and skill files.
AdCP is a project of 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 and published at agenticadvertising.org/governance.