Documentation Index Fetch the complete documentation index at: https://docs.agentic.scope3.com/llms.txt
Use this file to discover all available pages before exploring further.
v1 is deprecated. August 1, 2026 is the final day these endpoints will be available. Migrate to v2 , which is the current stable API.
Overview
Media Buys are the actual execution layer where budget meets publisher inventory. Tactics provide the targeting configuration (channels, countries), and Media Buys execute with specific publishers through ADCP (Ad Context Protocol).
Two-Tier Architecture : Campaign → Strategy → Media Buy
Campaigns : Overall marketing initiative with total budget
Strategies : Targeting configuration (channels, countries) and media buy organization
Media Buys : Direct publisher execution at negotiated CPMs
Phase 1: Discovery & Selection
Media buys begin with publisher product discovery:
// Discover available publisher products
const products = await discover_publisher_products ({
query: "premium video inventory for sports fans" ,
maxCpm: 30 ,
formats: [ "video" , "display" ]
});
// Returns publisher media products with pricing:
// • ESPN Video Package - $25 CPM (guaranteed delivery)
// • Fox Sports Display - $18 CPM (non-guaranteed)
// • NBC Sports CTV - $45 CPM (premium guaranteed)
Phase 2: Creation & Pricing
Create a media buy within a strategy with transparent pricing. Media buys can include multiple products from different publishers:
// Single product media buy
const mediaBuy = await media_buy_create ({
tacticId: "strat_123" ,
name: "Q4 ESPN Video Buy" ,
products: [{
salesAgentId: "agent_espn_456" ,
mediaProductId: "prod_video_789" ,
budgetAmount: 25000 ,
pricingCpm: 25.00 , // Base CPM from publisher
pricingSignalCost: 2.50 // Additional cost for data targeting
}],
budget: {
amount: 25000 ,
currency: "USD" ,
dailyCap: 1000 ,
pacing: "even"
}
});
// Total effective CPM: $27.50
// Projected impressions: ~909,090
// Multi-product media buy (single execution, multiple publishers)
const multiProductBuy = await media_buy_create ({
tacticId: "strat_123" ,
name: "Q4 Sports Multi-Publisher Buy" ,
products: [
{
salesAgentId: "agent_espn_456" ,
mediaProductId: "prod_video_789" ,
budgetAmount: 15000 ,
pricingCpm: 25.00 ,
pricingSignalCost: 2.50
},
{
salesAgentId: "agent_fox_123" ,
mediaProductId: "prod_display_456" ,
budgetAmount: 10000 ,
pricingCpm: 18.00 ,
pricingSignalCost: 2.00
}
],
budget: {
amount: 25000 , // Must match sum of product budgets
currency: "USD" ,
pacing: "even"
}
});
// Each sales agent receives separate ADCP submission
// Budget validation ensures sum ≤ total
Phase 3: Execution via ADCP
Media buys are submitted to publishers through their ADCP sales agents:
const execution = await media_buy_execute ({
mediaBuyId: "mb_123"
});
// Status progression:
// draft → pending_approval → active → completed
// ⚪ → 🟡 → 🟢 → ✅
Real-time performance data flows back from publishers:
const performance = await media_buy_get ({
mediaBuyId: "mb_123"
});
// Returns live metrics:
// 📊 Impressions: 450,230 delivered
// 💰 Spend: $12,381 (49.5% of budget)
// 📈 CPM: $27.51 (on target)
// ⏱️ Pacing: On track (51% remaining, 10 days left)
Key Concepts
Budget Allocation
Media buys are organized under strategies for campaign execution. Each media buy can allocate budget across multiple products:
Budget Validation : The system validates that product budget allocations don’t exceed the total media buy budget:
✅ Valid : Product budgets sum to ≤ total budget
⚠️ Warning : Product budgets sum to < total budget (some budget unallocated)
❌ Error : Product budgets sum to > total budget (rejected at creation time)
Pricing Transparency
Every media buy shows complete pricing breakdown:
Base CPM : Publisher’s rate for the inventory
Signal Cost : Additional cost for data/targeting
Total CPM : Effective cost you pay per thousand impressions
// Example pricing breakdown
{
pricing : {
cpm : 25.00 , // What publisher charges
signalCost : 2.50 , // Data/targeting premium
totalCpm : 27.50 // What you actually pay
}
}
Publisher Integration States
Media buys progress through clear states. For multi-product media buys with multiple sales agents, the most restrictive status is used:
Status Icon Description Next Action draft⚪ Created but not submitted Execute to submit pending_approval🟡 Awaiting publisher approval Wait for webhook active🟢 Live and delivering Monitor performance rejected🔴 Publisher declined Review and modify completed✅ Fully delivered Analyze results failed❌ Technical failure Check error details
Multi-Agent Status Aggregation : When a media buy has multiple products from different sales agents, the overall status is determined by the most restrictive agent status. For example, if one agent is active and another is pending_approval, the media buy status will be pending_approval.
Conversational
Programmatic
User: "Create a $10,000 media buy with ESPN for my sports strategy"
Claude: Creating ESPN media buy...
✅ Media Buy Created Successfully!
## 💰 Q4 ESPN Sports Buy
### 📦 Publisher Details
• Publisher: ESPN
• Product: Premium Video Inventory
• Delivery: Guaranteed
### 💳 Budget Allocation
• Amount: $10,000 USD
• Daily Cap: $500
• Pacing: even
### 💰 Pricing
• Base CPM: $28.00
• Signal Cost: +$2.00
• Total CPM: $30.00
• Projected Impressions: ~333,333
### 🔗 ADCP Integration
• Status: ⚪ draft
Next: Execute this buy with media_buy_execute
// Step 1: Discover products for your strategy
const products = await discover_publisher_products ({
tacticId: "strat_sports_123" ,
query: "premium sports video inventory"
});
// Step 2: Create media buy with selected product(s)
const mediaBuy = await media_buy_create ({
tacticId: "strat_sports_123" ,
name: "Q4 ESPN Sports Buy" ,
products: [{
salesAgentId: products [ 0 ]. salesAgentId ,
mediaProductId: products [ 0 ]. id ,
budgetAmount: 10000 ,
pricingCpm: products [ 0 ]. basePricing . targetCpm ,
pricingSignalCost: 2.00
}],
budget: {
amount: 10000 ,
currency: "USD" ,
dailyCap: 500 ,
pacing: "even"
}
});
// Step 3: Execute to submit to publisher
await media_buy_execute ({
mediaBuyId: mediaBuy . id
});
Strategies typically have multiple media buys for diversification:
// List all media buys for a strategy
const mediaBuys = await media_buy_list ({
tacticId: "strat_123"
});
// Returns aggregated view:
// Total Media Buys: 5
// Active: 3 ($45,000 allocated)
// Pending: 1 ($10,000 allocated)
// Draft: 1 ($5,000 allocated)
//
// Top Performer: ESPN Buy (120% delivery)
// Needs Attention: Fox Buy (65% delivery)
Media buys can be optimized while running:
// Pause underperforming buy
await media_buy_update ({
mediaBuyId: "mb_underperformer" ,
status: "paused"
});
// Increase budget for high performer
await media_buy_update ({
mediaBuyId: "mb_top_performer" ,
budget: {
amount: 15000 // Increased from 10000
}
});
// Adjust pacing for time-sensitive campaign
await media_buy_update ({
mediaBuyId: "mb_urgent" ,
budget: {
pacing: "asap" // Changed from "even"
}
});
Advanced Features
Webhook Integration
Media buys support real-time status updates via webhooks:
// Webhook payload when publisher approves
{
event : "media_buy.approved" ,
mediaBuyId : "mb_123" ,
adcpMediaBuyId : "adcp_456" ,
status : "active" ,
timestamp : "2024-01-15T10:30:00Z"
}
// Automatic status update in your system
// No polling required
Budget Pacing Strategies
Three pacing options control delivery speed:
Strategy Use Case Behavior evenStandard campaigns Consistent daily delivery asapTime-sensitive Deliver as fast as possible front_loadedLaunch campaigns Higher initial spend, taper down
Publisher Product Types
Different inventory types serve different goals:
Type Description Typical CPM Best For premiumTop-tier placements $30-60 Brand campaigns run_of_siteGeneral inventory $10-25 Scale/reach targeted_packageCustom audiences $20-40 Performance
Best Practices
1. Diversification Strategy
Don’t put all budget in one media buy:
// Good: Diversified across publishers
Strategy : $50 , 000
├── ESPN : $15 , 000 ( 30 % )
├── Fox : $12 , 000 ( 24 % )
├── NBC : $10 , 000 ( 20 % )
├── CNN : $8 , 000 ( 16 % )
└── CBS : $5 , 000 ( 10 % )
// Risky: Single publisher concentration
Strategy : $50 , 000
└── ESPN : $50 , 000 ( 100 % ) ❌
2. CPM Benchmarking
Compare CPMs across similar inventory:
// Analyze CPM efficiency
const analysis = await analyze_media_buys ({
tacticId: "strat_123"
});
// Premium Video CPMs:
// ESPN: $28 (baseline)
// Fox: $26 (-7% vs ESPN) ✅
// NBC: $32 (+14% vs ESPN) ⚠️
// CBS: $25 (-11% vs ESPN) ✅
Set up regular performance checks:
// Daily monitoring routine
const dailyCheck = async () => {
const mediaBuys = await media_buy_list ({
tacticId: "strat_123" ,
status: "active"
});
for ( const mb of mediaBuys ) {
if ( mb . performance . cpm > mb . pricing . totalCpm * 1.1 ) {
// CPM drifting 10% above target
console . warn ( `Review ${ mb . name } : CPM drift detected` );
}
if ( mb . performance . impressions < mb . projectedDaily * 0.8 ) {
// Under-delivering by 20%
console . warn ( `Review ${ mb . name } : Under-delivery detected` );
}
}
};
Common Patterns
Testing New Publishers
// Start small with new publishers
const testBuy = await media_buy_create ({
tacticId: "strat_123" ,
salesAgentId: "new_publisher" ,
name: "Test Buy - New Publisher" ,
budget: {
amount: 1000 , // Small test budget
pacing: "even"
},
cpm: 20.00
});
// If performance is good, scale up
if ( testBuy . performance . qualityScore > 80 ) {
await media_buy_update ({
mediaBuyId: testBuy . id ,
budget: { amount: 10000 } // 10x increase
});
}
Seasonal Inventory Booking
// Book premium inventory in advance
const holidayBuy = await media_buy_create ({
tacticId: "strat_holiday" ,
name: "Black Friday Premium Video" ,
budget: {
amount: 50000 ,
pacing: "front_loaded" // Heavy early delivery
},
startDate: "2024-11-25" ,
endDate: "2024-11-30"
});
Integration with Strategies
Media buys are organized under strategies for execution:
// Strategy organizes all media buys
const strategy = await strategy_get ({
tacticId: "strat_123"
});
// Shows aggregated metrics:
{
metrics : {
totalSpend : 45230 , // Sum of all media buys
totalImpressions : 1650000 , // Combined delivery
averageCpm : 27.41 , // Weighted average
activeMediaBuys : 3 , // Currently delivering
totalMediaBuys : 5 // All statuses
}
}
API Reference
media_buy_create Create Media Buy Set up new publisher execution with budget and pricing.
media_buy_execute Execute Media Buy Submit to publisher via ADCP for approval and delivery.
media_buy_list List Media Buys View all media buys for a tactic with performance data.
media_buy_get Get Media Buy Details Detailed view with real-time performance metrics.
media_buy_update Update Media Buy Modify budget, pacing, or status while running.
media_buy_delete Delete Media Buy Remove draft media buys that haven’t been executed.
Next Steps
Tactic Guide Tactic Organization Learn how tactics organize and configure media buys.
Publisher Products ADCP Integration Understand how publishers expose inventory through sales agents.