Buyer Cloud MCP Reference
# Buyer Cloud MCP Server - Combined Reference
**Total Tools: 407** | 16 direct MCP tools + 391 API tools via `invoke_tool` | **MCP Resources: 2** (Campaign Planner Guide, Buyer Cloud Lookup Values)
> This document combines the Full Toolset Reference (tool names, HTTP methods, and API paths) with the Tool Descriptions Reference (parameter details and usage notes) into a single comprehensive guide.
---
## Architecture Overview
The Buyer Cloud MCP server exposes **18 direct tools** to the AI client. Of these, **3 are gateway meta-tools** (`search_tools`, `list_categories`, `invoke_tool`) that provide discovery and execution access to an additional **391 API tools** auto-generated from OpenAPI specifications.
```
AI Client
|
|-- 16 Direct MCP Tools (always visible in tools/list)
| |-- 3 Gateway Meta-Tools
| |-- 2 Authentication and session tools
| |-- 9 Analytics and operations tools
| |-- 2 Help tools
|
|-- 391 API Tools (discoverable via meta-tools, callable via invoke_tool)
|-- 214 Core API Resources (v2.0)
|-- 85 Reference Resources (v2.0)
|-- 20 Reporting Resources (v2.0)
|-- 33 Creative API Resources (v2.0)
|-- 6 Identity Network Resources (v2.0)
|-- 3 Campaign Planner Resources (v2.0) NEW
|-- 30 Buzz Legacy (v0.5)
```
## API Categories (46 total)
`list_categories` groups the registered API tools by OpenAPI tag. Counts below are from the current runtime registry; multi-tagged tools appear in each matching category, and `uncategorized` reflects operations without a category tag.
| Category | Tools |
|----------|------:|
| Account Groups | 9 |
| Accounts | 10 |
| Activity Logs | 2 |
| Admin | 2 |
| Advertisers | 13 |
| Alerts | 14 |
| Analytics | 2 |
| App/Site Targeting | 1 |
| Audio Targeting | 2 |
| Authentication | 4 |
| Bid Modifiers | 13 |
| Bulk File Upload | 1 |
| Campaign Planner | 3 |
| Campaigns | 13 |
| Content Targeting | 5 |
| Conversion Tags | 14 |
| Creative Add-ons | 14 |
| Creative Approval | 7 |
| Creative Assets | 3 |
| Creatives | 14 |
| Custom List Item | 13 |
| Deals | 13 |
| Delivery Modifiers | 7 |
| Environment Targeting | 4 |
| Exchange Targeting | 1 |
| Geo Targeting | 8 |
| Identity Network | 6 |
| Line Items | 25 |
| Lists | 14 |
| Metrics | 5 |
| Models | 10 |
| Native Offers | 6 |
| Platform Targeting | 10 |
| Preset | 6 |
| Reference | 11 |
| Report | 15 |
| Role | 9 |
| Seat | 1 |
| Targeting | 14 |
| Trafficking | 12 |
| Users | 9 |
| Vendor Fees | 4 |
| Video Targeting | 5 |
| Warning | 3 |
| authentication | 1 |
| uncategorized | 33 |
### Typical Workflow
```
1. list_categories() -- Browse what's available
2. search_tools(query="line items export") -- Find specific tools
3. invoke_tool(tool_name="bc_v2_get_line_items", -- Execute the tool
parameters={...})
```
---
## MCP Resources (2 total)
The MCP server exposes contextual resources that provide downstream LLMs with usage guidance and authoritative lookup values.
### Buyer Cloud Lookup Values
- **`resource://buyer-cloud/lookup-values`** -- Server-wide reference of enumerated/coded values, so LLMs look values up instead of guessing during troubleshooting
- Integer-coded values (e.g. `environment_type`: 0 = web, 1 = in-app)
- Spec-derived enums: line_item_type, deal_type/deal_format, pacing, segment_type, comparators, creative asset types, report formats, and the canonical targeting key list
- Points to the `bc_v2_get_ref_*` endpoints for dynamic lookups (countries, metros, inventory sources, device makes, ...)
### Campaign Planner Guide
- **`resource://campaign-planner/guide`** -- Complete Campaign Planner reference, combining API usage, the practical targeting guide, and the official targeting reference
- Typical workflow: discover keys → list values → run forecast, with parameter descriptions and examples
- Describes the targeting modules (geo, app_site, platform, environment, exchange, time, user)
- Explains predicates (all/any/none) and comparators, with common targeting pattern examples
- Error handling, rate limits, and best practices
---
## v2.0 Refresh Notes
The live v2.0 OpenAPI bundle now includes the following major additions:
- Core API: account alerts, activity logs, alerts CRUD, bid-modifier deleted/version lookups, conversion tags/assignments, custom-list-item admin/debug queues, delivery modifier versions, line-item targeting conversion helpers, lists-in-use, logout, and models CRUD/versioning
- Creative API: creative-addons CRUD/bulk/duplicate/versioning and creative-approval-queue CRUD
- Reference: audio-content-genres, congressional-districts, deliveries, feeds, state-house-districts, state-senate-districts, and usa-states
- Reporting: acquire-embed-session and generate-embed-tokens
Removed from the live bundle:
- `/creative_asset/upload/{id}`
- `/ref/audio-feeds`
- `/reporting/async-results/{id}` (the MCP server still registers `bc_v2_get_reporting_async_results_id`, the same name as the tool generated from the pre-update spec, as a hand-built tool because the live API serves this endpoint and run-query/run-saved-report responses point to it)
## The 3 Gateway Meta-Tools
These are the key tools that unlock the full 391-tool API. They follow a **discover-then-execute** pattern.
### `search_tools`
Search all 391 API tools by keyword. Returns tool names, HTTP methods, paths, descriptions, and full parameter schemas. This is the primary way to discover what's available.
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `query` | string | *required* | Search keywords (e.g. "campaign budget", "line items", "creatives") |
| `max_results` | int | 10 | Maximum results to return |
**What it returns:** For each matching tool: `tool_name`, `http_method`, `path`, `summary`, `description`, `tags`, and `parameters` (full JSON Schema). When reporting tools are included, the response may also include a top-level `guidance.reporting` note with reporting-specific usage rules.
**How the search works:** Full-text keyword search across tool names, summaries, descriptions, API paths, tags, and parameter names. Exact substring matches in tool names get a ranking boost.
---
### `list_categories`
Browse all tools organized by category (derived from OpenAPI tags). Use this to get a bird's-eye view of what's available.
No parameters required. Returns: `total_categories`, `total_tools` (391), and `categories` array of `{ category, tool_count, tools[] }`.
---
### `invoke_tool`
Execute any of the 391 API tools by name. This is the universal dispatcher.
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `tool_name` | string | *required* | The tool name from `search_tools` results |
| `parameters` | dict | `{}` | Parameters matching the tool's schema |
Returns the raw API response as JSON. If the tool name doesn't exist, returns suggestions from a fuzzy search.
### Typical Workflow
```
1. list_categories() -- Browse what's available
2. search_tools(query="line items export") -- Find specific tools
3. invoke_tool(tool_name="bc_v2_get_line_items", -- Execute the tool
parameters={...})
```
---
## Direct MCP Tools (16 total)
### Authentication
The server supports **two coexisting authentication modes**. Pick the one that matches how your client connects.
#### Mode 1: OAuth 2.1 + PKCE (preferred, production)
OAuth 2.1 authorization_code flow with PKCE is the production authentication path, implemented in [buyer_cloud/oauth21.py](buyer_cloud/oauth21.py) and exposed through [buyer_cloud/http_bridge_full.py](buyer_cloud/http_bridge_full.py). Clients such as the Claude Custom Connector use this path via the dedicated `POST /mcp/oauth` JSON-RPC endpoint.
**Endpoints**
| Endpoint | Purpose |
|---|---|
| `GET /.well-known/oauth-authorization-server` | Discovery metadata (`authorization_endpoint`, `token_endpoint`, `registration_endpoint`) |
| `POST /oauth/register` | Dynamic client registration — returns `client_id` |
| `GET /oauth/authorize` | Starts the PKCE authorization flow; renders the browser login form |
| `POST /oauth/authorize/login` | Server-side Buyer Cloud login; captures the BC cookie jar and issues the auth code |
| `POST /oauth/token` | Exchanges an `authorization_code` (with `code_verifier`) or a `refresh_token` for an access token |
| `POST /mcp/oauth` | JSON-RPC endpoint; requires `Authorization: Bearer <access_token>` |
**Flow**
```
1. Client discovers endpoints via /.well-known/oauth-authorization-server
2. Client POSTs to /oauth/register -> client_id
3. Client redirects user to /oauth/authorize
?response_type=code
&client_id=...
&redirect_uri=...
&code_challenge=<S256(verifier)>
&code_challenge_method=S256
&state=<csrf>
4. User submits the BC login form (email, password, buzz_key)
Server runs an internal authentication helper server-side, stores session
and redirects back with ?code=...
5. Client POSTs to /oauth/token with grant_type=authorization_code,
code, and code_verifier -> access_token (JWT) + refresh_token
6. Client calls POST /mcp/oauth with Authorization: Bearer <access_token>
```
**Buyer Cloud session expiry:** the access JWT can outlive the server-side Buyer Cloud session, which expires after 24h idle (`SESSION_TTL`). When the session is gone and cannot be re-established automatically, `POST /mcp/oauth` returns HTTP 401 with a `WWW-Authenticate` challenge instead of accepting the token and failing each tool call with "Not authenticated for session". A refresh attempt returns `400 invalid_grant`, which makes standards-compliant clients run the authorization flow again without a manual disconnect.
#### Mode 2: Machine-to-machine client credentials
For headless integrations, register once with encrypted Buyer Cloud credentials, then use the returned client credentials. The server establishes the Buyer Cloud session automatically when issuing the access token; no login tool call is required.
**Endpoints**
- `GET /api/login/public-key` -- Fetch the public key used to encrypt credentials during registration.
- `POST /register` -- Register a client with encrypted Buyer Cloud credentials.
- `POST /token` -- Exchange `client_id` and `client_secret` for a bearer token.
- `POST /mcp` -- Call MCP methods with the bearer token.
**`buyer_cloud_logout`** -- Clears the stored session cookies for the given session.
- `session_id` (string, required): The session to terminate
**`v2_whoami`** -- Verifies the current authenticated session is valid. Returns info about accessible accounts and confirms the session is active.
- `session_id` (string, required): The session to verify
---
### Gateway Meta-Tools (3 tools)
See "The 3 Gateway Meta-Tools" section above for full details on `search_tools`, `list_categories`, and `invoke_tool`.
---
### Built-in Analytics and Operations (9 tools)
**`check_campaign_health`** -- Comprehensive automated health check that diagnoses campaign delivery issues. Analyzes configuration across multiple dimensions and returns severity-ranked issues with recommendations.
Checks for: inactive or misconfigured line items, budget pacing problems, missing or inactive creatives, date/flight scheduling issues, targeting concerns, bid price issues, frequency cap impacts.
- `campaign_id` (string/int, required): Campaign ID to diagnose
- `session_id` (string, required): Authenticated session
---
**`bidstream_analyzer`** -- Analyzes bid-stream performance statistics for a specific line item. Fetches performance data (requests, bids, wins, spend) and computes key rates (bid rate, win rate, avg win CPM). Generates an HTML artifact for visualization.
- `session_id` (string, required): Authenticated session
- `line_item_id` (string, required): Line item to analyze
- `date_from` (string, optional): Start date
- `date_to` (string, optional): End date
- `timezone_hint` (string, default "America/New_York"): Timezone
- `window_hours` (int, optional): Hours to look back (default 24, max ~744)
Returns: Totals (requests/bids/wins/spend), bid rate, win rate, avg win CPM, sample rows.
---
**`ssp_analyzer`** -- Runs the `inventory_agg` report to summarize inventory performance by SSP/source and placement type. Identifies where CPMs are high or low and where inventory cost is concentrated.
- `session_id` (string, required): Authenticated session
- `account_id` (string, optional): Account ID (enables auto-export to Excel)
- `bid_day` (string, default "14 days"): Date filter (supports Looker-style: "this month", "60 days", "2026/02/01 to 2026/02/23")
- `limit` (int, default 5000, max 30000): Max rows
Returns: Rows by inventory source and placement type with impressions, CPM, and inventory cost; summary with totals and weighted average CPM.
---
**`deal_discovery`** -- Searches for available programmatic deals matching specified criteria.
- `session_id` (string, required): Authenticated session
- `advertiser_id` (string, optional): Filter by advertiser
- `deal_format` (string, optional): "banner", "video", "native", or "audio"
- `inventory_source_viewable` (bool, optional): Viewability filter
- `name_search` (string, optional): Partial name match
- `archived` (bool, optional, default false): Include archived deals
- `min_results` (int, default 10): Number of results to return
Returns: List of matching deals with ID, name, format, advertiser, dates, and pagination info.
---
**`deal_analyst`** -- Analyzes deal health and floor gap for a specific line item. Returns a deal-by-deal breakdown showing delivery health (auctions, bids, wins, impressions), CPM vs floor price analysis, and suggested optimization actions.
- `session_id` (string, required): Authenticated session
- `account_id` (string, required): Account ID
- `line_item_id` (int, required): Line item to analyze
- `floor_gap_threshold_pct` (float, default 0.20): Threshold for flagging deals above floor price
- `date_range_days` (int, optional): Analysis window (auto-derived if omitted)
Returns: Deal health rows with delivery metrics, CPM/floor analysis, summary, and metadata.
---
**`deal_diagnostics`** -- Diagnoses a deal across every line item, campaign, and advertiser using it. Returns per-line-item performance, deal health, anomalies, and an optional daily trend. Use this for deal-wide analysis; `deal_analyst` is line-item-centric.
- `session_id` (string, default "oauth"): Authenticated session; normally supplied automatically by the server
- `account_id` (string, required): Buyer Cloud account ID used for authentication and report scoping
- `deal_id` (string, required): Deal ID, including string IDs such as `stv/PMG-ROKU-00001`
- `date_range_days` (int, default 14, max 90): Number of days to analyze
- `include_daily_trend` (bool, default false): Include a day-over-day breakdown
- `anomaly_threshold_stddev` (float, default 2.0): Standard deviations used for anomaly detection
Returns: Deal overview, line-item breakdown, anomalies, optional daily trend, summary, and metadata. Results can be exported with `create_spreadsheet`.
---
**`quality_evaluator`** -- Analyzes device quality across deals to detect quality drift over time. Compares device type distribution between deal start and current period, identifying shifts from "good" devices (CTV, STB, Games Console) to "unwanted" devices (Mobile, Unknown, Connected Device).
Useful for: detecting end-of-quarter inventory substitutions, ensuring deal fulfillment quality, publisher accountability.
- `session_id` (string, required): Authenticated session
- `account_id` (string, required): Account ID
- `deal_ids` (list, required, max 5): List of deal IDs to evaluate
- `unwanted_increase_threshold_pct` (float, default 10.0): Alert threshold for unwanted device increase
- `unwanted_doubling_threshold` (float, default 2.0): Alert threshold for unwanted device doubling
Returns: Device quality analysis rows, summary with flags, metadata.
---
**`commitment_analyst`** -- Tracks publisher spend commitments across direct and indirect channels over the last ~6 months (183 days).
Returns breakdown of spend and inventory cost by publisher (Disney, Paramount, NBC, Roku, Tubi, Samsung, LG, Vizio, WBD, Other), broadcast month and quarter, and Direct vs Indirect classification.
- `session_id` (string, required): Authenticated session
- `account_id` (string, required): Account ID
---
**`create_spreadsheet`** -- Exports analysis results to an Excel (.xlsx) file. Three modes:
1. **Auto mode** (easiest): No extra params needed. Automatically finds the most recent analysis result.
2. **Fast mode**: Pass a `result_id` (cache key from a previous analysis) for explicit retrieval.
3. **Full data mode**: Pass a complete `data` dict directly.
- `session_id` (string, required): Authenticated session
- `account_id` (string, required): Account ID
- `data` (dict, optional): Full data object to export
- `result_id` (string, optional): Cache key from previous analysis
- `filename` (string, optional): Custom filename (without extension)
- `sheet_name` (string, default "Analysis"): Excel sheet name
- `include_metadata` (bool, default true): Include metadata sheet
Returns: Signed download URL (valid 15 minutes), filename, file size, sheets created. Filenames use a 128-bit random token to prevent enumeration. Download links include an HMAC-SHA256 signature and expiry — no authentication header required to download.
---
### Help (2 tools)
**`help_list_tools`** -- Lists all available tools with one-line descriptions. Useful for getting a quick overview of what's available.
**`help_about_tool`** -- Returns detailed help for a specific tool by name, including parameter descriptions and usage notes.
- `tool_name` (string, required): Tool to get help for
---
## API Tools via invoke_tool (391 total)
All tools below are called via `invoke_tool(tool_name="...", parameters={...})`.
### Tool Naming Convention
```
bc_v2_{method}_{normalized_path} -- V2.0 API tools
bc_v05_{method}_{normalized_path} -- V0.5 Legacy tools
```
Path normalization: `/` → `_`, `-` → `_`, `{param}` → param name without braces.
### HTTP Method Distribution
| Method | Count | Description |
|--------|-------|-------------|
| GET | 230 | Read / List / Export |
| POST | 60 | Create / Execute / Duplicate |
| PATCH | 38 | Partial update |
| PUT | 30 | Full replace / Update |
| DELETE | 33 | Remove |
### Common Parameters (GET tools)
All GET tools accept:
- `page` (int): Page number for pagination
- `page_size` (int): Results per page (max 1000)
- `order` (string): Sort fields (e.g. "-end_date,name")
- `timezone` (string): IANA timezone (default UTC)
Field modifier support for filtering (many non-reporting GET tools):
| Modifier | Applies To | Example |
|----------|-----------|---------|
| `__gte` | Dates, Numbers | `end_date__gte="2026-03-01"` |
| `__lte` | Dates, Numbers | `start_date__lte="2026-12-31"` |
| `__contains` | Strings | `name__contains="brandX"` |
| `__in` | IDs | `advertiser_id__in="100,200,300"` |
Reporting endpoints are an exception: reporting tool descriptions do not advertise generic `__gte/__lte/__contains/__in` modifier support.
### Common Parameters (POST/PUT/PATCH tools)
- `body` (dict): Request body containing the object to create or update
- Path parameters (e.g. `id`, `line_item_id`) are required for single-resource operations
---
### Core API Resources - v2.0 (214 tools)
#### Account Groups
| Tool Name | Method | Path | Description |
|-----------|--------|------|-------------|
| `bc_v2_get_account_groups` | GET | /account-groups | Get a list of account groups |
| `bc_v2_get_account_groups_id` | GET | /account-groups/{id} | Get an account group by ID |
| `bc_v2_post_account_groups` | POST | /account-groups | Create an account group |
| `bc_v2_post_account_groups_bulk` | POST | /account-groups/bulk | Create multiple account groups |
| `bc_v2_put_account_groups_id` | PUT | /account-groups/{id} | Update an account group |
| `bc_v2_patch_account_groups_id` | PATCH | /account-groups/{id} | Partial update an account group |
| `bc_v2_patch_account_groups_bulk` | PATCH | /account-groups/bulk | Update multiple account groups |
| `bc_v2_delete_account_groups_id` | DELETE | /account-groups/{id} | Delete an account group |
| `bc_v2_delete_account_groups_bulk` | DELETE | /account-groups/bulk | Delete multiple account groups |
#### Accounts
| Tool Name | Method | Path | Description |
|-----------|--------|------|-------------|
| `bc_v2_get_accounts` | GET | /accounts | Get a list of accounts |
| `bc_v2_get_accounts_id` | GET | /accounts/{id} | Get an account by ID |
| `bc_v2_get_accounts_id_settings` | GET | /accounts/{id}/settings | Get account settings |
| `bc_v2_post_accounts` | POST | /accounts | Create an account (requires all_account_access) |
| `bc_v2_post_accounts_bulk` | POST | /accounts/bulk | Create multiple accounts |
| `bc_v2_put_accounts_id` | PUT | /accounts/{id} | Update an account |
| `bc_v2_put_accounts_id_settings` | PUT | /accounts/{id}/settings | Update account settings |
| `bc_v2_patch_accounts_id` | PATCH | /accounts/{id} | Partial update an account |
| `bc_v2_patch_accounts_bulk` | PATCH | /accounts/bulk | Update multiple accounts |
| `bc_v2_patch_accounts_id_settings` | PATCH | /accounts/{id}/settings | Partial update account settings |
#### Advertisers
| Tool Name | Method | Path | Description |
|-----------|--------|------|-------------|
| `bc_v2_get_advertisers` | GET | /advertisers | Get a list of advertisers |
| `bc_v2_get_advertisers_id` | GET | /advertisers/{id} | Get an advertiser by ID |
| `bc_v2_post_advertisers` | POST | /advertisers | Create an advertiser |
| `bc_v2_post_advertisers_bulk` | POST | /advertisers/bulk | Create multiple advertisers |
| `bc_v2_put_advertisers_id` | PUT | /advertisers/{id} | Update an advertiser by ID |
| `bc_v2_patch_advertisers_id` | PATCH | /advertisers/{id} | Partial update an advertiser by ID |
| `bc_v2_patch_advertisers_bulk` | PATCH | /advertisers/bulk | Update multiple advertisers |
| `bc_v2_patch_advertisers_bulk_validate` | PATCH | /advertisers/bulk/validate | Validate multiple advertisers before updating |
| `bc_v2_delete_advertisers_id` | DELETE | /advertisers/{id} | Delete an advertiser by ID |
| `bc_v2_delete_advertisers_bulk` | DELETE | /advertisers/bulk | Delete multiple advertisers |
#### Alerts
| Tool Name | Method | Path | Description |
|-----------|--------|------|-------------|
| `bc_v2_post_alerts_dismiss_all` | POST | /alerts/dismiss-all | Dismiss all alerts |
| `bc_v2_post_alerts_id_dismiss` | POST | /alerts/{id}/dismiss | Dismiss a specific alert by ID |
#### Authentication (API-level)
| Tool Name | Method | Path | Description |
|-----------|--------|------|-------------|
| `bc_v2_post_authenticate` | POST | /authenticate | Authenticate a session with email and password |
| `bc_v2_post_change_password` | POST | /change-password | Change password for the logged-in user |
| `bc_v2_post_logout` | POST | /logout | Logout the current user |
#### Bid Modifiers
| Tool Name | Method | Path | Description |
|-----------|--------|------|-------------|
| `bc_v2_get_bid_modifiers` | GET | /bid-modifiers | Get a list of bid modifiers |
| `bc_v2_get_bid_modifiers_id` | GET | /bid-modifiers/{id} | Get a bid modifier by ID |
| `bc_v2_get_bid_modifiers_id_campaigns` | GET | /bid-modifiers/{id}/campaigns | Get all campaigns associated with a bid modifier |
| `bc_v2_get_bid_modifiers_id_line_items` | GET | /bid-modifiers/{id}/line-items | Get all line items associated with a bid modifier |
| `bc_v2_post_bid_modifiers` | POST | /bid-modifiers | Create a bid modifier |
| `bc_v2_put_bid_modifiers_id` | PUT | /bid-modifiers/{id} | Update a bid modifier |
| `bc_v2_patch_bid_modifiers_id` | PATCH | /bid-modifiers/{id} | Partial update a bid modifier |
| `bc_v2_delete_bid_modifiers_id` | DELETE | /bid-modifiers/{id} | Delete a bid modifier |
#### Bulk Uploads
| Tool Name | Method | Path | Description |
|-----------|--------|------|-------------|
| `bc_v2_get_bulk_uploads_id_download` | GET | /bulk-uploads/{id}/download | Retrieve errors from a bulk upload |
#### Campaigns
| Tool Name | Method | Path | Description |
|-----------|--------|------|-------------|
| `bc_v2_get_campaigns` | GET | /campaigns | Get a list of campaigns |
| `bc_v2_get_campaigns_id` | GET | /campaigns/{id} | Get a campaign by ID |
| `bc_v2_get_campaigns_id_duplicate` | GET | /campaigns/{id}/duplicate | Get the JSON representation of a campaign for duplication |
| `bc_v2_get_campaigns_id_metrics` | GET | /campaigns/{id}/metrics | Get campaign pacing indicators (no date range, no impressions/spend) |
| `bc_v2_post_campaigns` | POST | /campaigns | Create a campaign |
| `bc_v2_post_campaigns_bulk` | POST | /campaigns/bulk | Create multiple campaigns |
| `bc_v2_post_campaigns_id_duplicate` | POST | /campaigns/{id}/duplicate | Initiate campaign duplication |
| `bc_v2_put_campaigns_id` | PUT | /campaigns/{id} | Update a campaign by ID |
| `bc_v2_patch_campaigns_id` | PATCH | /campaigns/{id} | Partial update a campaign by ID |
| `bc_v2_patch_campaigns_bulk` | PATCH | /campaigns/bulk | Update multiple campaigns |
| `bc_v2_patch_campaigns_bulk_validate` | PATCH | /campaigns/bulk/validate | Validate multiple campaigns before updating |
| `bc_v2_delete_campaigns_id` | DELETE | /campaigns/{id} | Delete a campaign by ID |
| `bc_v2_delete_campaigns_bulk` | DELETE | /campaigns/bulk | Delete multiple campaigns |
#### Curated Deals
| Tool Name | Method | Path | Description |
|-----------|--------|------|-------------|
| `bc_v2_get_curated_deals` | GET | /curated-deals | Get list of curated deals |
| `bc_v2_get_curated_deals_id` | GET | /curated-deals/{id} | Get a curated deal by ID |
| `bc_v2_put_curated_deals_id` | PUT | /curated-deals/{id} | Update a curated deal |
| `bc_v2_patch_curated_deals_id` | PATCH | /curated-deals/{id} | Partial update a curated deal |
#### Custom List Items
| Tool Name | Method | Path | Description |
|-----------|--------|------|-------------|
| `bc_v2_get_custom_list_items` | GET | /custom-list-items | Get a list of custom list items |
| `bc_v2_get_custom_list_items_id` | GET | /custom-list-items/{id} | Retrieve a custom list item |
| `bc_v2_post_custom_list_items` | POST | /custom-list-items | Create a custom list item |
| `bc_v2_post_custom_list_items_bulk` | POST | /custom-list-items/bulk | Create/update multiple custom list items in a single transaction |
| `bc_v2_put_custom_list_items_id` | PUT | /custom-list-items/{id} | Update a custom list item |
| `bc_v2_patch_custom_list_items_id` | PATCH | /custom-list-items/{id} | Partial update a custom list item |
| `bc_v2_delete_custom_list_items_id` | DELETE | /custom-list-items/{id} | Delete a custom list item |
#### Deals
| Tool Name | Method | Path | Description |
|-----------|--------|------|-------------|
| `bc_v2_get_deals` | GET | /deals | Get a list of deals |
| `bc_v2_get_deals_id` | GET | /deals/{id} | Get a deal by ID |
| `bc_v2_post_deals` | POST | /deals | Create a deal |
| `bc_v2_post_deals_bulk` | POST | /deals/bulk | Create multiple deals |
| `bc_v2_put_deals_id` | PUT | /deals/{id} | Update a deal |
| `bc_v2_patch_deals_id` | PATCH | /deals/{id} | Partial update a deal |
| `bc_v2_patch_deals_bulk` | PATCH | /deals/bulk | Update multiple deals |
| `bc_v2_delete_deals_id` | DELETE | /deals/{id} | Delete a deal |
| `bc_v2_delete_deals_bulk` | DELETE | /deals/bulk | Delete multiple deals |
#### Delivery Modifiers
| Tool Name | Method | Path | Description |
|-----------|--------|------|-------------|
| `bc_v2_get_delivery_modifiers` | GET | /delivery-modifiers | Get a list of delivery modifiers |
| `bc_v2_get_delivery_modifiers_id` | GET | /delivery-modifiers/{id} | Get a delivery modifier by ID |
| `bc_v2_get_delivery_modifiers_id_campaigns` | GET | /delivery-modifiers/{id}/campaigns | Get all campaigns associated with a delivery modifier |
| `bc_v2_get_delivery_modifiers_id_line_items` | GET | /delivery-modifiers/{id}/line-items | Get all line items associated with a delivery modifier |
| `bc_v2_post_delivery_modifiers` | POST | /delivery-modifiers | Create a delivery modifier |
| `bc_v2_put_delivery_modifiers_id` | PUT | /delivery-modifiers/{id} | Update a delivery modifier |
| `bc_v2_patch_delivery_modifiers_id` | PATCH | /delivery-modifiers/{id} | Partial update a delivery modifier |
| `bc_v2_delete_delivery_modifiers_id` | DELETE | /delivery-modifiers/{id} | Delete a delivery modifier |
#### Dismissed Warnings
| Tool Name | Method | Path | Description |
|-----------|--------|------|-------------|
| `bc_v2_get_dismissed_warnings_object_type` | GET | /dismissed-warnings/{object_type} | Get a list of dismissed warnings for an object type |
| `bc_v2_post_dismissed_warnings_object_type` | POST | /dismissed-warnings/{object_type} | Dismiss multiple warnings for an object type |
| `bc_v2_delete_dismissed_warnings_object_type` | DELETE | /dismissed-warnings/{object_type} | Re-enable previously dismissed warnings |
#### Line Items
| Tool Name | Method | Path | Description |
|-----------|--------|------|-------------|
| `bc_v2_get_line_items` | GET | /line-items | Get a list of line items (defines objectives, budget, timing, and delivery details) |
| `bc_v2_get_line_items_id` | GET | /line-items/{id} | Get a line item by ID |
| `bc_v2_get_line_items_export` | GET | /line-items/export | Export line items to CSV |
| `bc_v2_get_line_items_import_template` | GET | /line-items/import/template | Get CSV template with required columns for bulk import |
| `bc_v2_get_line_items_id_duplicate` | GET | /line-items/{id}/duplicate | Get JSON representation of a line item for duplication |
| `bc_v2_get_line_items_id_metrics` | GET | /line-items/{id}/metrics | Get line item pacing indicators (no date range, no impressions/spend) |
| `bc_v2_get_line_items_id_notifications` | GET | /line-items/{id}/notifications | Get notifications for a line item |
| `bc_v2_get_line_items_line_item_id_creatives` | GET | /line-items/{line_item_id}/creatives | Get creative associations for a line item |
| `bc_v2_get_line_items_line_item_id_creatives_cli_id` | GET | /line-items/{line_item_id}/creatives/{cli_id} | Get a specific creative-line item association |
| `bc_v2_post_line_items` | POST | /line-items | Create a line item |
| `bc_v2_post_line_items_import` | POST | /line-items/import | Import line items from CSV |
| `bc_v2_post_line_items_bulk_targeting` | POST | /line-items/bulk-targeting | Update targeting for multiple line items in a single transaction |
| `bc_v2_post_line_items_id_duplicate` | POST | /line-items/{id}/duplicate | Initiate line item duplication |
| `bc_v2_post_line_items_line_item_id_creatives` | POST | /line-items/{line_item_id}/creatives | Create a creative association for a line item |
| `bc_v2_put_line_items_id` | PUT | /line-items/{id} | Update a line item by ID |
| `bc_v2_put_line_items_line_item_id_creatives` | PUT | /line-items/{line_item_id}/creatives | Update/create creative associations for a line item |
| `bc_v2_put_line_items_line_item_id_creatives_validate` | PUT | /line-items/{line_item_id}/creatives/validate | Validate creative associations for a line item |
| `bc_v2_patch_line_items_id` | PATCH | /line-items/{id} | Partial update a line item by ID |
| `bc_v2_patch_line_items_bulk` | PATCH | /line-items/bulk | Update multiple line items |
| `bc_v2_patch_line_items_bulk_validate` | PATCH | /line-items/bulk/validate | Validate multiple line items before updating |
| `bc_v2_patch_line_items_line_item_id_creatives_cli_id` | PATCH | /line-items/{line_item_id}/creatives/{cli_id} | Partial update a creative association |
| `bc_v2_delete_line_items_id` | DELETE | /line-items/{id} | Delete a line item by ID |
| `bc_v2_delete_line_items_line_item_id_creatives` | DELETE | /line-items/{line_item_id}/creatives | Delete creative associations for a line item |
#### Lists (Custom Lists)
| Tool Name | Method | Path | Description |
|-----------|--------|------|-------------|
| `bc_v2_get_lists` | GET | /lists | Get a list of custom lists |
| `bc_v2_get_lists_id` | GET | /lists/{id} | Retrieve a custom list |
| `bc_v2_get_lists_id_duplicate` | GET | /lists/{id}/duplicate | Get JSON representation of a list for duplication |
| `bc_v2_post_lists` | POST | /lists | Create a custom list |
| `bc_v2_post_lists_id_duplicate` | POST | /lists/{id}/duplicate | Initiate list duplication |
| `bc_v2_put_lists_id` | PUT | /lists/{id} | Update a custom list |
| `bc_v2_patch_lists_id` | PATCH | /lists/{id} | Partial update a custom list |
| `bc_v2_delete_lists_id` | DELETE | /lists/{id} | Delete a custom list |
#### Presets
| Tool Name | Method | Path | Description |
|-----------|--------|------|-------------|
| `bc_v2_get_presets` | GET | /presets | Get a list of all presets |
| `bc_v2_get_presets_preset_id` | GET | /presets/{preset_id} | Get a preset by ID |
| `bc_v2_post_presets` | POST | /presets | Create a preset |
| `bc_v2_put_presets_preset_id` | PUT | /presets/{preset_id} | Update a preset by ID |
| `bc_v2_patch_presets_preset_id` | PATCH | /presets/{preset_id} | Partially update a preset by ID |
| `bc_v2_delete_presets_preset_id` | DELETE | /presets/{preset_id} | Delete a preset by ID |
#### Roles
| Tool Name | Method | Path | Description |
|-----------|--------|------|-------------|
| `bc_v2_get_roles` | GET | /roles | Get a list of roles |
| `bc_v2_get_roles_id` | GET | /roles/{id} | Get a role by ID |
| `bc_v2_post_roles` | POST | /roles | Create a role with permissions and report permissions |
| `bc_v2_post_roles_bulk` | POST | /roles/bulk | Create multiple roles |
| `bc_v2_put_roles_id` | PUT | /roles/{id} | Update a role with permissions and report permissions |
| `bc_v2_patch_roles_id` | PATCH | /roles/{id} | Partial update a role |
| `bc_v2_patch_roles_bulk` | PATCH | /roles/bulk | Update multiple roles |
| `bc_v2_delete_roles_id` | DELETE | /roles/{id} | Delete a role (only if no users are associated) |
| `bc_v2_delete_roles_bulk` | DELETE | /roles/bulk | Delete multiple roles |
#### Targeting Expressions
| Tool Name | Method | Path | Description |
|-----------|--------|------|-------------|
| `bc_v2_get_targeting_expressions` | GET | /targeting-expressions | Get targeting expressions (complex rules for when ads serve) |
| `bc_v2_get_targeting_expressions_id` | GET | /targeting-expressions/{id} | Get a targeting expression by ID |
| `bc_v2_post_targeting_expressions` | POST | /targeting-expressions | Create a targeting expression |
| `bc_v2_put_targeting_expressions_id` | PUT | /targeting-expressions/{id} | Update a targeting expression |
| `bc_v2_delete_targeting_expressions_id` | DELETE | /targeting-expressions/{id} | Delete a targeting expression (only if not associated to a line item) |
#### Users
| Tool Name | Method | Path | Description |
|-----------|--------|------|-------------|
| `bc_v2_get_users` | GET | /users | Get a list of users |
| `bc_v2_get_users_id` | GET | /users/{id} | Get a user by ID |
| `bc_v2_post_users` | POST | /users | Create a user |
| `bc_v2_post_users_bulk` | POST | /users/bulk | Create multiple users |
| `bc_v2_put_users_id` | PUT | /users/{id} | Update a user by ID |
| `bc_v2_patch_users_id` | PATCH | /users/{id} | Partially update a user by ID |
| `bc_v2_patch_users_bulk` | PATCH | /users/bulk | Update multiple users |
| `bc_v2_delete_users_id` | DELETE | /users/{id} | Delete a user |
---
### Creative API Resources - v2.0 (33 tools)
| Tool Name | Method | Path | Description |
|-----------|--------|------|-------------|
| `bc_v2_get_creatives` | GET | /creatives | Get a list of creatives |
| `bc_v2_get_creatives_id` | GET | /creatives/{id} | Get a creative by ID |
| `bc_v2_get_creatives_id_duplicate` | GET | /creatives/{id}/duplicate | Get JSON representation of a creative for duplication |
| `bc_v2_post_creatives` | POST | /creatives | Insert a new creative |
| `bc_v2_post_creatives_id_duplicate` | POST | /creatives/{id}/duplicate | Initiate creative duplication |
| `bc_v2_post_creatives_tag_preview` | POST | /creatives/tag-preview | Render a creative tag preview |
| `bc_v2_put_creatives_id` | PUT | /creatives/{id} | Update a creative |
| `bc_v2_patch_creatives_id` | PATCH | /creatives/{id} | Partial update a creative |
| `bc_v2_delete_creatives_id` | DELETE | /creatives/{id} | Delete a creative |
| `bc_v2_get_creative_approval` | GET | /creative-approval | Get a list of creative approval requests |
| `bc_v2_get_creative_approval_creative_approval_id` | GET | /creative-approval/{creative_approval_id} | Retrieve a specific creative approval request |
| `bc_v2_get_creative_approval_queue_history` | GET | /creative-approval-queue-history | Get creative approval history entries |
| `bc_v2_get_creative_approval_queue` | GET | /creative-approval-queue | Retrieves all creative approval requests with optional filtering. Supports filtering by multiple attributes when available. |
| `bc_v2_get_creative_approval_queue_creative_approval_id` | GET | /creative-approval-queue/{creative_approval_id} | Retrieves detailed information about a specific creative approval request. |
| `bc_v2_post_creative_approval_queue` | POST | /creative-approval-queue | Creates a new creative approval request based on the provided data. |
| `bc_v2_patch_creative_approval_queue_creative_approval_id` | PATCH | /creative-approval-queue/{creative_approval_id} | Updates fields of an existing creative approval request. |
| `bc_v2_get_creative_addons` | GET | /creative-addons | Retrieve a list of all creative add-ons in the account. Supports filtering by name, type, creative type, vendor, currency and status. |
| `bc_v2_get_creative_addons_global` | GET | /creative-addons/global | Retrieve a read-only list of creative add-ons visible to the account, including platform-wide global add-ons. |
| `bc_v2_get_creative_addons_global_creative_addon_id` | GET | /creative-addons/global/{creative_addon_id} | Retrieve the read-only details of a global creative add-on using its ID. |
| `bc_v2_get_creative_addons_creative_addon_id` | GET | /creative-addons/{creative_addon_id} | Retrieve the details of a specific creative add-on using its ID. |
| `bc_v2_get_creative_addons_creative_addon_id_duplicate` | GET | /creative-addons/{creative_addon_id}/duplicate | Return a pre-filled duplication template for a creative add-on. Nothing is created by this call. |
| `bc_v2_get_creative_addons_creative_addon_id_versions` | GET | /creative-addons/{creative_addon_id}/versions | Retrieve the change history for a creative add-on. |
| `bc_v2_post_creative_addons` | POST | /creative-addons | Create a new creative add-on with the provided details. |
| `bc_v2_post_creative_addons_bulk` | POST | /creative-addons/bulk | Create multiple creative add-ons at once. The request body should contain a list of creative add-on objects. |
| `bc_v2_post_creative_addons_creative_addon_id_duplicate` | POST | /creative-addons/{creative_addon_id}/duplicate | Create a copy of a creative add-on in the target account. The duplicate list must include resource. |
| `bc_v2_patch_creative_addons_bulk` | PATCH | /creative-addons/bulk | Update multiple creative add-ons at once. The request body should contain a list of creative add-on objects with the fields to be updated. |
| `bc_v2_patch_creative_addons_creative_addon_id` | PATCH | /creative-addons/{creative_addon_id} | Update one or more fields of a specific creative add-on using its ID. |
| `bc_v2_put_creative_addons_creative_addon_id` | PUT | /creative-addons/{creative_addon_id} | Update the details of a specific creative add-on using its ID. |
| `bc_v2_delete_creative_addons_bulk` | DELETE | /creative-addons/bulk | Soft delete multiple creative add-ons at once. Pass the IDs in the ids query parameter. |
| `bc_v2_delete_creative_addons_creative_addon_id` | DELETE | /creative-addons/{creative_addon_id} | Soft delete a specific creative add-on using its ID. The record is retained and its active state is set to deleted. |
| `bc_v2_get_creative_assets` | GET | /creative_assets | Get a list of creative assets |
| `bc_v2_get_creative_assets_creative_asset_id` | GET | /creative_assets/{creative_asset_id} | Get a creative asset by ID |
| `bc_v2_post_creative_assets` | POST | /creative_assets | Insert a new creative asset |
---
### Reporting Resources - v2.0 (20 tools)
**Reporting usage guidance:**
- Use `bc_v2_post_reporting_run_query` for ad-hoc reporting requests.
- Use `bc_v2_post_reporting_run_saved_report` only when a saved report is explicitly requested or a saved report ID is provided.
- Use `bc_v2_post_reporting_acquire_embed_session` and `bc_v2_put_reporting_generate_embed_tokens` for Looker cookieless embed flows.
- Discover valid report/view names with `bc_v2_get_reporting_reports`. Use each result's `view` value (for example `performance_agg`), not its display `name` ("Performance Report").
- Inspect report-specific fields and filters with `bc_v2_get_reporting_reports_report_name` (pass the `view` value as `report_name`) before building ad-hoc queries.
- Reporting date filters are Looker-style expressions (for example `"60 days"`, `"this month"`, `"2026/01/01 to 2026/05/31"`), not `__gte`/`__lte` suffix filters. The end date of `"X to Y"` is exclusive: for delivery through yesterday, use today's date as `Y`.
**`bc_v2_post_reporting_run_query` `body` fields** (verified against the live API, 2026-10-19):
| Key | Required | Description |
|-----|----------|-------------|
| `view` | Yes | Report view, i.e. the `view` value from `bc_v2_get_reporting_reports` (for example `performance_agg`). Same string as `report_name` in `bc_v2_get_reporting_reports_report_name`. |
| `fields` | Yes | List of bare field `name`s from the report metadata (for example `bid_day`, `line_item_id`, `impression`, `spend`). Do not prefix them with the view (`performance_agg.impression` fails). |
| `filters` | No | Object of `{field_name: Looker expression}`, for example `{"campaign_id": "7,27", "bid_day": "2026/10/01 to 2026/10/19"}`. Commas mean OR. Defaults to the last 14 days if no date filter is given. |
| `sorts` | No | List such as `["impression desc"]` (bare names). |
| `limit` | No | Maximum rows Looker returns (spec max 30000). The MCP still caps the response at `max_rows`. |
| `total` | No | `true` appends a totals row (dimension values are null). |
| `pivots` | No | List of dimension names to pivot on. Rows become nested objects. |
| `query_timezone` | No | IANA timezone, for example `America/New_York`. It changes day boundaries. |
| `result_format` | No | Defaults to `json`. `csv` returns text in `raw` instead of `rows`. |
| `id` | — | Do not send it. The spec marks it required, but it is read-only and the live API does not require it. |
Worked example (delivery through yesterday, with yesterday = 2026-10-18):
```json
{
"body": {
"view": "performance_agg",
"fields": ["bid_day", "campaign_id", "line_item_id", "impression", "spend"],
"filters": {"campaign_id": "7,27", "bid_day": "2026/10/01 to 2026/10/19"},
"sorts": ["bid_day asc"]
}
}
```
The rows are keyed by field **label**, not by the field name you sent, for example `{"Day": "2026-10-01", "Campaign ID": 7, "Line Item ID": 123, "Impressions": 1000, "Spend": 12.5}`. An invalid field name or filter value is accepted on submit, but the task then finishes with a Looker error. The MCP returns this as `status: "failed"` with the Looker message in `error`.
**`bc_v2_post_reporting_run_saved_report` `body`:** `{"saved_report_id": <int>}` is required (the spec wrongly shows the run-query schema). `result_format` and `limit` are accepted. Whether a `filters` override is honored has not been verified.
- `run_query` and `run_saved_report` wait server-side for the results and return `{status, task_id, rows, row_count, truncated}`. Optional `wait_seconds` (default `BC_REPORT_WAIT_SECONDS`=40, max `BC_REPORT_MAX_WAIT_SECONDS`=50, kept under the 60s ALB idle timeout) and `max_rows` (default/max `BC_REPORT_MAX_ROWS`=5000). Set `wait_seconds=0` to get the task ID back immediately.
- If the response is `status: "pending"`, call `bc_v2_get_reporting_async_results_id` with `id` set to the returned `task_id` (`task_id` is also accepted as the parameter name; optionally add `wait_seconds`). Results expire roughly 5 minutes after completion; `status: "not_found"` means re-run the query.
- `bc_v2_get_campaigns_id_metrics` and `bc_v2_get_line_items_id_metrics` return pacing indicators only (for example `on_schedule_indicator`, `days_remaining`). They take no date range and return no impressions or spend; use `run_query` for date-bounded delivery.
| Tool Name | Method | Path | Description |
|-----------|--------|------|-------------|
| `bc_v2_get_reporting_async_results_id` | GET | /reporting/async-results/{id} | Get the status and result rows of an async report task (hand-registered) |
| `bc_v2_get_reporting_reports` | GET | /reporting/reports | Get all reports the user has access to |
| `bc_v2_get_reporting_reports_report_name` | GET | /reporting/reports/{report_name} | Get details for a specific report by name |
| `bc_v2_post_reporting_run_query` | POST | /reporting/run-query | Run a report query asynchronously |
| `bc_v2_post_reporting_run_saved_report` | POST | /reporting/run-saved-report | Run a saved report query asynchronously |
| `bc_v2_post_reporting_acquire_embed_session` | POST | /reporting/acquire-embed-session | Acquire a Looker embed session for cookieless embed flows |
| `bc_v2_put_reporting_generate_embed_tokens` | PUT | /reporting/generate-embed-tokens | Generate embed tokens for Looker cookieless embed sessions |
| `bc_v2_get_reporting_folders` | GET | /reporting/folders | Get all report folders the user can access |
| `bc_v2_get_reporting_saved_reports` | GET | /reporting/saved-reports | Get a list of saved reports |
| `bc_v2_get_reporting_saved_reports_id` | GET | /reporting/saved-reports/{id} | Get a saved report by ID |
| `bc_v2_post_reporting_saved_reports` | POST | /reporting/saved-reports | Create a saved report |
| `bc_v2_put_reporting_saved_reports_id` | PUT | /reporting/saved-reports/{id} | Update a saved report |
| `bc_v2_delete_reporting_saved_reports_id` | DELETE | /reporting/saved-reports/{id} | Delete a saved report |
| `bc_v2_get_reporting_report_schedules` | GET | /reporting/report-schedules | Get a list of report schedules |
| `bc_v2_get_reporting_report_schedules_id` | GET | /reporting/report-schedules/{id} | Get a report schedule by ID |
| `bc_v2_post_reporting_report_schedules` | POST | /reporting/report-schedules | Create a scheduled report |
| `bc_v2_post_reporting_report_schedules_run_once` | POST | /reporting/report-schedules/run-once | Create a temporary schedule that runs once immediately |
| `bc_v2_post_reporting_report_schedules_id_run_once` | POST | /reporting/report-schedules/{id}/run-once | Run an existing schedule once immediately |
| `bc_v2_put_reporting_report_schedules_id` | PUT | /reporting/report-schedules/{id} | Update a report schedule |
| `bc_v2_delete_reporting_report_schedules_id` | DELETE | /reporting/report-schedules/{id} | Delete a report schedule |
---
### Identity Network Resources - v2.0 (6 tools)
| Tool Name | Method | Path | Description |
|-----------|--------|------|-------------|
| `bc_v2_get_id_mapping_overview` | GET | /id-mapping/overview | Identity network ID mapping overview |
| `bc_v2_get_id_mapping_status` | GET | /id-mapping/status | Identity network ID mapping status |
| `bc_v2_get_id_mapping_status_export` | GET | /id-mapping/status/export | Export identity network ID mapping status |
| `bc_v2_get_id_permissions` | GET | /id-permissions | Get identity network ID permissions |
| `bc_v2_get_id_permissions_download` | GET | /id-permissions/download | Download identity network ID permissions |
| `bc_v2_get_id_permissions_id_usage` | GET | /id-permissions/id-usage | Get identity network ID permission usage stats |
---
### Campaign Planner Resources - v2.0 (3 tools)
Pre-sales forecasting tools. Use these endpoints to estimate available inventory before creating campaigns.
**Workflow**: 1. Discover available targeting keys with `bc_v2_get_forecasting_keys`, 2. List values for a key with `bc_v2_get_forecasting_values`, 3. Run forecast with `bc_v2_post_forecasting_run`. See the `resource://campaign-planner/guide` resource for the comprehensive usage guide.
| Tool Name | Method | Path | Description |
|-----------|--------|------|-------------|
| `bc_v2_get_forecasting_keys` | GET | /forecasting/keys | List available forecasting targeting keys (dimensions like geo, platform, etc.) |
| `bc_v2_get_forecasting_values` | GET | /forecasting/values | List values for a specific forecasting targeting key (e.g., countries, device types) |
| `bc_v2_post_forecasting_run` | POST | /forecasting/run | Run a pre-sales forecast with specified targeting, date range, and line item type |
---
### Reference Resources - v2.0 (85 tools)
All GET-only. These return lookup/reference data used for targeting, creative setup, and configuration.
#### Ad & Content
| Tool Name | Method | Path | Description |
|-----------|--------|------|-------------|
| `bc_v2_get_ref_ad_positions` | GET | /ref/ad-positions | Get list of ad positions |
| `bc_v2_get_ref_content_categories` | GET | /ref/content-categories | Get IAB content categories from OpenRTB |
| `bc_v2_get_ref_content_genres` | GET | /ref/content-genres | Get content genres |
| `bc_v2_get_ref_content_ratings` | GET | /ref/content-ratings | Get content rating types (OpenRTB 6) |
| `bc_v2_get_ref_native_layouts` | GET | /ref/native-layouts | Get native ad layouts |
#### Advertiser & Creative
| Tool Name | Method | Path | Description |
|-----------|--------|------|-------------|
| `bc_v2_get_ref_advertiser_categories` | GET | /ref/advertiser-categories | Get advertiser categories |
| `bc_v2_get_ref_advertiser_indexes` | GET | /ref/advertiser-indexes | Get advertiser indexes |
| `bc_v2_get_ref_advertiser_sensitive_categories` | GET | /ref/advertiser-sensitive-categories | Get advertiser sensitive categories |
| `bc_v2_get_ref_creative_approval_vendors` | GET | /ref/creative-approval-vendors | Get creative approval vendors |
| `bc_v2_get_ref_creative_sizes` | GET | /ref/creative-sizes | Get available creative sizes (WxH format) |
#### Bidding & Budget
| Tool Name | Method | Path | Description |
|-----------|--------|------|-------------|
| `bc_v2_get_ref_bid_models` | GET | /ref/bid-models | Get bid models |
| `bc_v2_get_ref_bidding_strategies` | GET | /ref/bidding-strategies | Get bidding strategies |
| `bc_v2_get_ref_bidding_strategies_id` | GET | /ref/bidding-strategies/{id} | Get a bidding strategy by ID |
| `bc_v2_get_ref_custom_bidding_strategies` | GET | /ref/custom-bidding-strategies | Get custom bidding strategies |
| `bc_v2_get_ref_custom_bidding_strategies_id` | GET | /ref/custom-bidding-strategies/{id} | Get a custom bidding strategy by ID |
| `bc_v2_get_ref_budget_types` | GET | /ref/budget-types | Get budget types |
| `bc_v2_get_ref_revenue_types` | GET | /ref/revenue-types | Get revenue types |
#### Targeting Keys & Modifiers
| Tool Name | Method | Path | Description |
|-----------|--------|------|-------------|
| `bc_v2_get_ref_targeting_keys` | GET | /ref/targeting-keys | Get available targeting keys |
| `bc_v2_get_ref_targeting_keys_key` | GET | /ref/targeting-keys/{key} | Get details for a specific targeting key |
| `bc_v2_get_ref_bid_modifier_targeting_keys` | GET | /ref/bid-modifier-targeting-keys | Get available targeting keys for bid modifiers |
| `bc_v2_get_ref_bid_modifier_targeting_keys_key` | GET | /ref/bid-modifier-targeting-keys/{key} | Get details for a specific bid modifier targeting key |
| `bc_v2_get_ref_delivery_modifier_targeting_keys` | GET | /ref/delivery-modifier-targeting-keys | Get available targeting keys for delivery modifiers |
| `bc_v2_get_ref_delivery_modifier_targeting_keys_key` | GET | /ref/delivery-modifier-targeting-keys/{key} | Get details for a specific delivery modifier targeting key |
#### Geography
| Tool Name | Method | Path | Description |
|-----------|--------|------|-------------|
| `bc_v2_get_ref_continents` | GET | /ref/continents | Get continents (country groups) |
| `bc_v2_get_ref_countries` | GET | /ref/countries | Get country codes (ISO 3166-1 alpha-3) |
| `bc_v2_get_ref_regions` | GET | /ref/regions | Get regions (states/provinces) |
| `bc_v2_get_ref_cities` | GET | /ref/cities | Get cities |
| `bc_v2_get_ref_metros` | GET | /ref/metros | Get metro codes (similar to Nielsen DMAs, US only) |
| `bc_v2_get_ref_congressional_districts` | GET | /ref/congressional-districts | Retrieve a list of congressional legislative districts. |
| `bc_v2_get_ref_state_house_districts` | GET | /ref/state-house-districts | Retrieve a list of state house legislative districts. |
| `bc_v2_get_ref_state_senate_districts` | GET | /ref/state-senate-districts | Retrieve a list of state senate legislative districts. |
| `bc_v2_get_ref_usa_states` | GET | /ref/usa-states | Retrieve a list of USA states. |
#### Devices & Technology
| Tool Name | Method | Path | Description |
|-----------|--------|------|-------------|
| `bc_v2_get_ref_devices` | GET | /ref/devices | Get device types (OpenRTB 6) |
| `bc_v2_get_ref_device_makes` | GET | /ref/device-makes | Get device manufacturers |
| `bc_v2_get_ref_device_models` | GET | /ref/device-models | Get device models |
| `bc_v2_get_ref_device_screen_sizes` | GET | /ref/device-screen-sizes | Get device screen sizes |
| `bc_v2_get_ref_browsers` | GET | /ref/browsers | Get browsers |
| `bc_v2_get_ref_browser_versions` | GET | /ref/browser-versions | Get browser versions |
| `bc_v2_get_ref_operating_systems` | GET | /ref/operating-systems | Get operating systems |
| `bc_v2_get_ref_operating_system_versions` | GET | /ref/operating-system-versions | Get OS versions |
| `bc_v2_get_ref_carriers` | GET | /ref/carriers | Get mobile carriers |
| `bc_v2_get_ref_bandwidths` | GET | /ref/bandwidths | Get bandwidth types |
#### Video & Audio
| Tool Name | Method | Path | Description |
|-----------|--------|------|-------------|
| `bc_v2_get_ref_audio_content_genres` | GET | /ref/audio-content-genres | Retrieve a list of audio content genres with optional filtering. |
| `bc_v2_get_ref_video_apis` | GET | /ref/video-apis | Get video APIs available to video creatives |
| `bc_v2_get_ref_video_autoplay_types` | GET | /ref/video-autoplay-types | Get video autoplay types |
| `bc_v2_get_ref_video_encoding_profiles` | GET | /ref/video-encoding-profiles | Get video encoding profiles |
| `bc_v2_get_ref_video_encoding_statuses` | GET | /ref/video-encoding-statuses | Get video encoding statuses |
| `bc_v2_get_ref_video_placement_types` | GET | /ref/video-placement-types | Get video placement types |
| `bc_v2_get_ref_video_playback_methods` | GET | /ref/video-playback-methods | Get video playback methods |
| `bc_v2_get_ref_video_player_sizes` | GET | /ref/video-player-sizes | Get video player sizes |
| `bc_v2_get_ref_video_protocols` | GET | /ref/video-protocols | Get video protocols |
| `bc_v2_get_ref_video_start_delays` | GET | /ref/video-start-delays | Get video start delays |
#### Inventory & Environment
| Tool Name | Method | Path | Description |
|-----------|--------|------|-------------|
| `bc_v2_get_ref_deliveries` | GET | /ref/deliveries | Retrieve a list of deliveries. |
| `bc_v2_get_ref_feeds` | GET | /ref/feeds | Retrieve the list of feeds available in the system. |
| `bc_v2_get_ref_inventory_sources` | GET | /ref/inventory-sources | Get inventory source codes |
| `bc_v2_get_ref_environment_types` | GET | /ref/environment-types | Get environment types |
| `bc_v2_get_ref_ads_txts` | GET | /ref/ads-txts | Get ads.txt entries |
| `bc_v2_get_ref_second_level_domains` | GET | /ref/second-level-domains | Get second-level domains |
| `bc_v2_get_ref_deals` | GET | /ref/deals | Get reference deal data |
#### Segments & Lists
| Tool Name | Method | Path | Description |
|-----------|--------|------|-------------|
| `bc_v2_get_ref_segment_search` | GET | /ref/segment-search | Search custom segments owned by or shared with active account |
| `bc_v2_get_ref_segment_tree` | GET | /ref/segment-tree | Navigate custom segment tree (categories and segments) |
| `bc_v2_get_ref_lists` | GET | /ref/lists | Get reference lists |
| `bc_v2_get_ref_lists_id` | GET | /ref/lists/{id} | Get a reference list by ID |
| `bc_v2_get_ref_lists_id_items` | GET | /ref/lists/{id}/items | Get items in a reference list |
| `bc_v2_get_ref_custom_list_types` | GET | /ref/custom-list-types | Get custom list types |
| `bc_v2_get_third_party_data_providers` | GET | /third-party/data-providers | Get third-party data providers enabled for the account |
| `bc_v2_get_third_party_segment_search` | GET | /third-party/segment-search | Search third-party segments shared with the active account |
| `bc_v2_get_third_party_segment_tree` | GET | /third-party/segment-tree | Navigate the third-party segment tree |
#### System & Configuration
| Tool Name | Method | Path | Description |
|-----------|--------|------|-------------|
| `bc_v2_get_ref_currencies` | GET | /ref/currencies | Get currencies |
| `bc_v2_get_ref_timezones` | GET | /ref/timezones | Get timezones |
| `bc_v2_get_ref_languages` | GET | /ref/languages | Get languages for ad targeting |
| `bc_v2_get_ref_dashboards` | GET | /ref/dashboards | Get dashboards (IDs for use in role configuration) |
| `bc_v2_get_ref_line_item_types` | GET | /ref/line-item-types | Get line item types |
| `bc_v2_get_ref_object_types` | GET | /ref/object-types | Get object types |
| `bc_v2_get_ref_event_tag_types` | GET | /ref/event-tag-types | Get event tag types |
| `bc_v2_get_ref_event_types` | GET | /ref/event-types | Get event types |
| `bc_v2_get_ref_experiment_id_types` | GET | /ref/experiment-id-types | Get experiment ID types |
| `bc_v2_get_ref_frequency_cap_id_types` | GET | /ref/frequency-cap-id-types | Get frequency cap ID types |
| `bc_v2_get_ref_conversion_attribution_methods` | GET | /ref/conversion-attribution-methods | Get conversion attribution methods |
| `bc_v2_get_ref_system_alerts` | GET | /ref/system-alerts | Get system alerts |
| `bc_v2_get_ref_system_fee_types` | GET | /ref/system-fee-types | Get system fee types |
| `bc_v2_get_ref_vendor_fee_types` | GET | /ref/vendor-fee-types | Get vendor fee types |
| `bc_v2_get_ref_vendors` | GET | /ref/vendors | Get vendors |
| `bc_v2_get_ref_warning_codes` | GET | /ref/warning-codes | Get warning codes |
| `bc_v2_get_ref_report_field_groups` | GET | /ref/report-field-groups | Get report field groups |
---
### Buzz Legacy - v0.5 (30 tools)
Selected endpoints from the legacy Buzz v0.5 API. This includes GET tools and `v05_put_authenticate`.
#### Segments & Audiences
| Tool Name | Method | Path | Description |
|-----------|--------|------|-------------|
| `bc_v05_get_segment` | GET | /segment | Get segments (audience segments for targeting) |
| `bc_v05_get_segment_category` | GET | /segment_category | Get segment categories |
| `bc_v05_get_segment_category_association` | GET | /segment_category_association | Get segment-to-category associations |
| `bc_v05_get_segment_category_lookup` | GET | /segment_category_lookup | Lookup segment categories |
| `bc_v05_get_segment_category_sharing` | GET | /segment_category_sharing | Get segment category sharing configuration |
| `bc_v05_get_segment_lookup` | GET | /segment_lookup | Lookup segments |
| `bc_v05_get_segment_sharing` | GET | /segment_sharing | Get segment sharing configuration |
| `bc_v05_get_segment_tag` | GET | /segment_tag | Get segment tags |
| `bc_v05_get_segment_upload` | GET | /segment_upload | Get segment upload status |
#### Events & Tracking
| Tool Name | Method | Path | Description |
|-----------|--------|------|-------------|
| `bc_v05_get_event` | GET | /event | Get conversion/tracking events |
| `bc_v05_get_event_assignment` | GET | /event_assignment | Get event assignments (event-to-object mappings) |
| `bc_v05_get_event_tag` | GET | /event_tag | Get event tags |
#### Bidding & Strategy
| Tool Name | Method | Path | Description |
|-----------|--------|------|-------------|
| `bc_v05_get_bid_model` | GET | /bid_model | Get bid models |
| `bc_v05_get_bid_model_version` | GET | /bid_model_version | Get bid model versions |
| `bc_v05_get_strategy` | GET | /strategy | Get strategies |
| `bc_v05_get_delivery_modifier` | GET | /delivery_modifier | Get delivery modifiers |
| `bc_v05_get_targeting_template` | GET | /targeting_template | Get targeting templates |
#### Vendors & Fees
| Tool Name | Method | Path | Description |
|-----------|--------|------|-------------|
| `bc_v05_get_vendor` | GET | /vendor | Get vendors |
| `bc_v05_get_vendor_fee` | GET | /vendor_fee | Get vendor fee configurations |
#### Account & Users
| Tool Name | Method | Path | Description |
|-----------|--------|------|-------------|
| `bc_v05_get_account_setting` | GET | /account_setting | Get account settings |
| `bc_v05_get_activity_log` | GET | /activity_log | Get activity/audit log |
| `bc_v05_get_alert` | GET | /alert | Get alerts |
| `bc_v05_get_user_lookup` | GET | /user_lookup | Lookup users |
| `bc_v05_get_native_offer` | GET | /native_offer | Get native offers |
#### Reporting & Views
| Tool Name | Method | Path | Description |
|-----------|--------|------|-------------|
| `bc_v05_get_report_queue` | GET | /report_queue | Get queued reports |
| `bc_v05_get_report_save` | GET | /report_save | Get saved reports |
| `bc_v05_get_search` | GET | /search | General search across objects |
| `bc_v05_get_view` | GET | /view | Get views |
| `bc_v05_get_view_list` | GET | /view_list | Get view lists |
#### Authentication
The server supports OAuth 2.1 + PKCE and machine-to-machine client credentials. OAuth is preferred for browser-mediated clients; client credentials are preferred for headless integrations.
| Tool Name | Method | Path | Description |
|-----------|--------|------|-------------|
| `v05_put_authenticate` | PUT | /authenticate | Authenticate a user session (v0.5 endpoint) |
### Additional APIs in the Current Registry (68 tools)
These registered tools were missing from the earlier per-resource tables. Category names match `list_categories`.
| Category | Tool Name | Method | Path | Summary |
|----------|-----------|--------|------|---------|
| uncategorized | `bc_v2_get_vendor_fees_vendor_fee_id` | GET | `/vendor-fees/{vendor_fee_id}` | |
| uncategorized | `bc_v2_patch_vendor_fees_vendor_fee_id` | PATCH | `/vendor-fees/{vendor_fee_id}` | |
| Activity Logs | `bc_v2_get_activity_logs` | GET | `/activity-logs` | List activity logs |
| Activity Logs | `bc_v2_get_activity_logs_id` | GET | `/activity-logs/{id}` | Retrieve an activity log |
| Alerts | `bc_v2_delete_account_alerts_id` | DELETE | `/account-alerts/{id}` | Delete an account alert |
| Alerts | `bc_v2_delete_alerts_id` | DELETE | `/alerts/{id}` | Delete an alert |
| Alerts | `bc_v2_get_account_alerts` | GET | `/account-alerts` | List account alerts |
| Alerts | `bc_v2_get_account_alerts_id` | GET | `/account-alerts/{id}` | Retrieve an account alert |
| Alerts | `bc_v2_get_alerts` | GET | `/alerts` | List alerts |
| Alerts | `bc_v2_get_alerts_id` | GET | `/alerts/{id}` | Retrieve an alert |
| Alerts | `bc_v2_patch_account_alerts_id` | PATCH | `/account-alerts/{id}` | Partially update an account alert |
| Alerts | `bc_v2_patch_alerts_id` | PATCH | `/alerts/{id}` | Partially update an alert |
| Alerts | `bc_v2_post_account_alerts` | POST | `/account-alerts` | Create an account alert |
| Alerts | `bc_v2_post_alerts` | POST | `/alerts` | Create an alert |
| Alerts | `bc_v2_put_account_alerts_id` | PUT | `/account-alerts/{id}` | Update an account alert |
| Alerts | `bc_v2_put_alerts_id` | PUT | `/alerts/{id}` | Update an alert |
| Authentication | `bc_v2_get_logout` | GET | `/logout` | Logout current user session |
| Bid Modifiers | `bc_v2_get_bid_modifiers_deleted` | GET | `/bid-modifiers/deleted` | Get list of soft-deleted Bid Modifiers |
| Bid Modifiers | `bc_v2_get_bid_modifiers_deleted_id` | GET | `/bid-modifiers/deleted/{id}` | Get soft-deleted Bid Modifier by ID |
| Bid Modifiers | `bc_v2_get_bid_modifiers_id_versions` | GET | `/bid-modifiers/{id}/versions` | List versions of a bid modifier |
| Conversion Tags | `bc_v2_delete_conversion_tag_assignments_id` | DELETE | `/conversion-tag-assignments/{id}` | Delete an event assignment |
| Conversion Tags | `bc_v2_delete_conversion_tags_id` | DELETE | `/conversion-tags/{id}` | Delete an event |
| Conversion Tags | `bc_v2_get_conversion_tag_assignments` | GET | `/conversion-tag-assignments` | List event assignments |
| Conversion Tags | `bc_v2_get_conversion_tag_assignments_id` | GET | `/conversion-tag-assignments/{id}` | Retrieve an event assignment |
| Conversion Tags | `bc_v2_get_conversion_tags` | GET | `/conversion-tags` | List events |
| Conversion Tags | `bc_v2_get_conversion_tags_bulk_tag` | GET | `/conversion-tags/bulk-tag` | List event tags |
| Conversion Tags | `bc_v2_get_conversion_tags_id` | GET | `/conversion-tags/{id}` | Retrieve an event |
| Conversion Tags | `bc_v2_get_conversion_tags_id_duplicate` | GET | `/conversion-tags/{id}/duplicate` | Duplicate an event |
| Conversion Tags | `bc_v2_get_conversion_tags_id_tag` | GET | `/conversion-tags/{id}/tag` | Render an event tag |
| Conversion Tags | `bc_v2_patch_conversion_tags_id` | PATCH | `/conversion-tags/{id}` | Partially update an event |
| Conversion Tags | `bc_v2_post_conversion_tag_assignments` | POST | `/conversion-tag-assignments` | Create an event assignment |
| Conversion Tags | `bc_v2_post_conversion_tags` | POST | `/conversion-tags` | Create an event |
| Conversion Tags | `bc_v2_post_conversion_tags_id_duplicate` | POST | `/conversion-tags/{id}/duplicate` | Duplicate an event |
| Conversion Tags | `bc_v2_put_conversion_tags_id` | PUT | `/conversion-tags/{id}` | Update an event |
| Custom List Item | `bc_v2_delete_custom_list_items_delete_all_for_list_list_id` | DELETE | `/custom-list-items/delete-all-for-list/{list_id}` | Delete custom list items by ID |
| Custom List Item | `bc_v2_get_custom_list_items_debug` | GET | `/custom-list-items/debug` | Get debug data for custom list items |
| Custom List Item | `bc_v2_get_custom_list_items_lat_long` | GET | `/custom-list-items/lat-long` | Get latitude/longitude list items |
| Custom List Item | `bc_v2_get_custom_list_items_queued` | GET | `/custom-list-items/queued` | Get queued custom list items |
| Custom List Item | `bc_v2_get_custom_list_items_updated_since_pushed` | GET | `/custom-list-items/updated-since-pushed` | Get updated custom list items since last push |
| Custom List Item | `bc_v2_post_custom_list_items_ack` | POST | `/custom-list-items/ack` | Acknowledge custom list items |
| Delivery Modifiers | `bc_v2_get_delivery_modifiers_id_versions` | GET | `/delivery-modifiers/{id}/versions` | List versions of a delivery modifier |
| Lists | `bc_v2_get_lists_in_use` | GET | `/lists/in-use` | Get IDs of lists currently in use |
| Lists | `bc_v2_get_lists_in_use_by_models` | GET | `/lists/in-use-by-models` | Get IDs of lists in use by bid model versions |
| Models | `bc_v2_get_models` | GET | `/models` | List models |
| Models | `bc_v2_get_models_id` | GET | `/models/{id}` | Retrieve a model |
| Models | `bc_v2_get_models_id_versions` | GET | `/models/{id}/versions` | List all versions for a specific model |
| Models | `bc_v2_get_models_versions` | GET | `/models/versions` | List all model versions |
| Models | `bc_v2_get_models_versions_id` | GET | `/models/versions/{id}` | Retrieve a specific model version |
| Models | `bc_v2_patch_models_id` | PATCH | `/models/{id}` | Partially update a model |
| Models | `bc_v2_patch_models_id_reset_current_version` | PATCH | `/models/{id}/reset-current-version` | Reset the current version |
| Models | `bc_v2_post_models` | POST | `/models` | Create a model |
| Models | `bc_v2_post_models_id_versions` | POST | `/models/{id}/versions` | List all versions for a specific model |
| Models | `bc_v2_put_models_id` | PUT | `/models/{id}` | Update a model |
| Native Offers | `bc_v2_delete_native_offers_native_offer_id` | DELETE | `/native-offers/{native_offer_id}` | Delete a native offer by ID |
| Native Offers | `bc_v2_get_native_offers` | GET | `/native-offers` | List native offers |
| Native Offers | `bc_v2_get_native_offers_native_offer_id` | GET | `/native-offers/{native_offer_id}` | Get a native offer by ID |
| Native Offers | `bc_v2_patch_native_offers_native_offer_id` | PATCH | `/native-offers/{native_offer_id}` | Partially update a native offer by ID |
| Native Offers | `bc_v2_post_native_offers` | POST | `/native-offers` | Create a new native offer for an advertiser |
| Native Offers | `bc_v2_put_native_offers_native_offer_id` | PUT | `/native-offers/{native_offer_id}` | Update a native offer by ID |
| Seat | `bc_v2_get_object_type_object_id_seat` | GET | `/{object_type}/{object_id}/seat` | Retrieve seat assignment |
| Targeting | `bc_v2_get_line_items_id_convert_targeting` | GET | `/line-items/{id}/convert-targeting` | Convert targeting template to expression |
| Targeting | `bc_v2_get_targeting_booleans` | GET | `/targeting-booleans` | List targeting templates or expressions in boolean format |
| Targeting | `bc_v2_get_targeting_booleans_id` | GET | `/targeting-booleans/{id}` | Retrieve targeting template or expression in boolean format |
| Users | `bc_v2_delete_users_bulk` | DELETE | `/users/bulk` | Bulk user operations |
| Vendor Fees | `bc_v2_delete_vendor_fees_vendor_fee_id` | DELETE | `/vendor-fees/{vendor_fee_id}` | Delete a VendorFee by ID |
| Vendor Fees | `bc_v2_get_vendor_fees` | GET | `/vendor-fees` | List VendorFees |
| Vendor Fees | `bc_v2_post_vendor_fees` | POST | `/vendor-fees` | Create a VendorFee |
| Vendor Fees | `bc_v2_put_vendor_fees_vendor_fee_id` | PUT | `/vendor-fees/{vendor_fee_id}` | Update a VendorFee by ID |
| Authentication | `v05_put_authenticate` | PUT | `/authenticate` | Authenticate a user and establish a session |
---
## Summary by Numbers
| Category | Tools |
|----------|-------|
| Direct MCP Tools | 16 |
| — Authentication and session | 2 |
| — Gateway Meta-Tools | 3 |
| — Built-in Analytics and Operations | 9 |
| — Help | 2 |
| API Tools (via invoke_tool) | 391 |
| — Core API Resources v2.0 | 214 |
| — Reference Resources v2.0 | 85 |
| — Reporting Resources v2.0 | 20 |
| — Creative API Resources v2.0 | 33 |
| — Identity Network Resources v2.0 | 6 |
| — Campaign Planner Resources v2.0 | 3 |
| — Buzz Legacy v0.5 | 30 |
| **Grand Total** | **407** |
| HTTP Method | Count |
|-------------|-------|
| GET | 230 |
| POST | 60 |
| PATCH | 38 |
| PUT | 30 |
| DELETE | 33 |
| **Total** | **391** |