create_media_buy
<tool_description> Create a media buy (bid on publisher inventory). Validates rules, runs auction scoring, and returns approval/rejection status. AdCP-compatible first-price sealed-bid auction. </tool_description>
<when_to_use> When an advertiser wants to place a bid on a publisher inventory slot. Requires inventory_id from list_inventory/get_inventory_item. ALWAYS confirm with user before calling — creates a binding commitment. </when_to_use>
<combination_hints> list_inventory → get_inventory_item → create_media_buy → submit_creatives → activate. If rejected: check rejection_reason and adjust bid/brand/category. Score formula: 0.3bid + 0.3similarity + 0.2quality + 0.2context. </combination_hints>
<output_format> Media buy ID, status (approved/rejected), auction score, rejection reason if applicable. </output_format>
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| brand | No | Advertiser brand name (for rules check) | |
| agent_id | No | Optional agent identifier (telemetry; feeds ADR-066 behavioral-risk shadow logging). | |
| category | No | Product category (for rules check) | |
| end_date | No | Campaign end date (ISO 8601) | |
| bid_cents | Yes | Bid amount in cents | |
| start_date | No | Campaign start date (ISO 8601) | |
| campaign_id | No | Parent campaign UUID. When set, the campaign's default pacing + frequency cap cascade into this buy unless explicitly overridden. | |
| budget_cents | Yes | Total budget in cents | |
| creative_ref | No | Creative asset URL or reference | |
| inventory_id | Yes | Target inventory slot UUID | |
| advertiser_id | Yes | Advertiser account UUID | |
| agent_mandate | No | Optional signed agent mandate (ADR-066). Verified by the auction-entry gate. | |
| creative_data | No | Creative metadata (JSON) | |
| pricing_model | Yes | Pricing model for the buy | |
| quality_score | No | Quality score 0-1 (default: 0.5) | |
| pacing_strategy | No | Override pacing strategy. Falls back to campaign default, then "even". | |
| context_relevance | No | Context relevance 0-1 (default: 0) | |
| frequency_cap_session | No | Per-session impression cap for this buy. NULL means defer to inventory cap. Falls back to campaign default, then 3. |