Execute AdCP Media Buy Protocol operations with sales agents - discover advertising products, create and manage campaigns, sync creatives, and track delivery. Use when users want to buy advertising, create media buys, interact with ad sales agents, or test advertising APIs.
Installation
Details
Usage
After installing, this skill will be available to your AI coding assistant.
Verify installation:
skills listSkill Instructions
name: adcp-media-buy description: Execute AdCP Media Buy Protocol operations with sales agents - discover advertising products, create and manage campaigns, sync creatives, and track delivery. Use when users want to buy advertising, create media buys, interact with ad sales agents, or test advertising APIs.
AdCP Media Buy Protocol
This skill enables you to execute the AdCP Media Buy Protocol with sales agents. Use the call_adcp_agent tool to send requests to sales agents.
Overview
The Media Buy Protocol provides 8 standardized tasks for managing advertising campaigns:
| Task | Purpose | Response Time |
|---|---|---|
get_products | Discover inventory using natural language | ~60s |
list_authorized_properties | See publisher properties | ~1s |
list_creative_formats | View creative specifications | ~1s |
create_media_buy | Create campaigns | Minutes-Days |
update_media_buy | Modify campaigns | Minutes-Days |
sync_creatives | Upload creative assets | Minutes-Days |
list_creatives | Query creative library | ~1s |
get_media_buy_delivery | Get performance data | ~60s |
Typical Workflow
- Discover products:
get_productswith a natural language brief - Review formats:
list_creative_formatsto understand creative requirements - Create campaign:
create_media_buywith selected products and budget - Upload creatives:
sync_creativesto add creative assets - Monitor delivery:
get_media_buy_deliveryto track performance
Task Reference
get_products
Discover advertising products using natural language briefs.
Request:
{
"brief": "Looking for premium video inventory for a tech brand targeting developers",
"brand_manifest": {
"url": "https://example.com"
},
"filters": {
"channels": ["video", "ctv"],
"budget_range": { "min": 5000, "max": 50000 }
}
}
Key fields:
brief(string): Natural language description of campaign requirementsbrand_manifest(object): Brand context - can be{ "url": "https://..." }or inline manifestfilters(object, optional): Filter by channels, budget, delivery_type, format_types
Response contains:
products: Array of matching products withproduct_id,name,description,pricing_options- Each product includes
format_ids(supported creative formats) andtargeting(available targeting)
list_authorized_properties
Get the list of publisher properties this agent can sell.
Request:
{}
No parameters required.
Response contains:
publisher_domains: Array of domain strings the agent is authorized to sell
list_creative_formats
View supported creative specifications.
Request:
{
"format_types": ["video", "display"]
}
Key fields:
format_types(array, optional): Filter to specific format categories
Response contains:
formats: Array of format specifications with dimensions, requirements, and asset schemas
create_media_buy
Create an advertising campaign from selected products.
Request:
{
"buyer_ref": "campaign-2024-q1-001",
"brand_manifest": {
"url": "https://acme.com",
"name": "Acme Corporation"
},
"packages": [
{
"buyer_ref": "pkg-video-001",
"product_id": "premium_video_30s",
"pricing_option_id": "cpm-standard",
"budget": 10000
}
],
"start_time": {
"type": "asap"
},
"end_time": "2024-03-31T23:59:59Z"
}
Key fields:
buyer_ref(string, required): Your unique identifier for this campaignbrand_manifest(object, required): Brand identity - URL or inline manifestpackages(array, required): Products to purchase, each with:buyer_ref: Your identifier for this packageproduct_id: Fromget_productsresponsepricing_option_id: From product'spricing_optionsbudget: Amount in dollarsbid_price: Required for auction pricingtargeting_overlay: Additional targeting constraintscreative_idsorcreatives: Creative assignments
start_time(object, required):{ "type": "asap" }or{ "type": "scheduled", "datetime": "..." }end_time(string, required): ISO 8601 datetime
Response contains:
media_buy_id: The created campaign identifierstatus: Current state (oftenpendingfor async approval)packages: Created packages with their IDs
update_media_buy
Modify an existing campaign.
Request:
{
"media_buy_id": "mb_abc123",
"updates": {
"budget_change": 5000,
"end_time": "2024-04-30T23:59:59Z",
"status": "paused"
}
}
Key fields:
media_buy_id(string, required): The campaign to updateupdates(object): Changes to apply - budget_change, end_time, status, targeting, etc.
sync_creatives
Upload and manage creative assets.
Request:
{
"creatives": [
{
"creative_id": "hero_video_30s",
"name": "Brand Hero Video",
"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", "pkg_002"]
}
}
Key fields:
creatives(array, required): Creative assets to synccreative_id: Your unique identifierformat_id: Object withagent_urlandidfrom format specificationsassets: Asset content (video, image, html, etc.)
assignments(object, optional): Map creative_id to package IDsdry_run(boolean): Preview changes without applyingdelete_missing(boolean): Archive creatives not in this sync
list_creatives
Query the creative library with filtering.
Request:
{
"filters": {
"status": ["active"],
"format_types": ["video"]
},
"limit": 20
}
get_media_buy_delivery
Retrieve performance metrics for a campaign.
Request:
{
"media_buy_id": "mb_abc123",
"granularity": "daily",
"date_range": {
"start": "2024-01-01",
"end": "2024-01-31"
}
}
Response contains:
delivery: Aggregated metrics (impressions, spend, clicks, etc.)by_package: Breakdown by packagetimeseries: Data points over time if granularity specified
Key Concepts
Brand Manifest
Brand context can be provided in two ways:
- URL reference (recommended):
{
"brand_manifest": {
"url": "https://brand.com"
}
}
- Inline manifest:
{
"brand_manifest": {
"name": "Brand Name",
"url": "https://brand.com",
"tagline": "Brand tagline",
"colors": { "primary": "#FF0000" }
}
}
Format IDs
Creative format identifiers are structured objects:
{
"format_id": {
"agent_url": "https://creative.adcontextprotocol.org",
"id": "display_300x250"
}
}
The agent_url specifies which creative agent defines the format. Use https://creative.adcontextprotocol.org for standard IAB formats.
Pricing Options
Products include pricing_options array. Each option has:
pricing_option_id: Use this increate_media_buypricing_model: "cpm", "cpm-auction", "flat-fee", etc.price: Base price (for fixed pricing)floor: Minimum bid (for auction)
For auction pricing, include bid_price in your package.
Asynchronous Operations
Operations like create_media_buy and sync_creatives may require human approval. The response includes:
status: "pending"- Operation awaiting approvaltask_id- For tracking async progress
Poll or use webhooks to check completion status.
Error Handling
Common error patterns:
- 400 Bad Request: Invalid parameters - check required fields
- 401 Unauthorized: Invalid or missing authentication token
- 404 Not Found: Invalid product_id, media_buy_id, or creative_id
- 422 Validation Error: Schema validation failure - check field types
Error responses include:
{
"errors": [
{
"code": "VALIDATION_ERROR",
"message": "budget must be greater than 0",
"field": "packages[0].budget"
}
]
}
Testing Mode
For testing without real transactions, agents may support:
X-Dry-Run: trueheader - Preview without side effects- Test products with
test: trueflag - Sandbox environments
Ask the agent about testing capabilities before creating real campaigns.
More by adcontextprotocol
View allExecute AdCP Creative Protocol operations with creative agents - build creatives from briefs or existing assets, preview renderings, and discover format specifications. Use when users want to generate or transform ad creatives, preview how ads will look, or understand creative format requirements.
Execute AdCP Signals Protocol operations with signal agents - discover audience signals using natural language and activate them on DSPs or sales agents. Use when users want to find targeting data, activate audience segments, or work with signal providers.
