Buyer Cloud MCP Reference

Download Markdown View Raw Markdown
# Buyer Cloud MCP Server - Combined Reference

**Total Tools: 315** | 17 direct MCP tools + 298 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 **17 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 **298 API tools** auto-generated from OpenAPI specifications.

```
AI Client
  |
      |-- 17 Direct MCP Tools (always visible in tools/list)
  |     |-- 3 Meta-Tools (gateway to 298 API tools)
      |     |-- 4 Auth Tools
  |     |-- 7 Analytics Tools
  |     |-- 2 Help Tools
  |     |-- 1 Health Check Tool
  |
  |-- 298 API Tools (discoverable via meta-tools, callable via invoke_tool)
        |-- 146 Core API Resources (v2.0)
        |-- 79  Reference Resources (v2.0)
        |-- 18  Reporting Resources (v2.0)
        |-- 16  Creative API Resources (v2.0)
        |-- 6   Identity Network Resources (v2.0)
      |-- 3   Campaign Planner Resources (v2.0)  NEW
        |-- 30  Buzz Legacy (v0.5)
### 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

---
```

---

## The 3 Gateway Meta-Tools

These are the key tools that unlock the full 295-tool API. They follow a **discover-then-execute** pattern.

### `search_tools`

Search all 298 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` (298), and `categories` array of `{ category, tool_count, tools[] }`.

---

### `invoke_tool`

Execute any of the 298 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 (17 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 cookie jar in
   Redis at bc:oauth:session:{sid}, 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>
```

**Security rules enforced by the server**

- **PKCE S256 is required** for `authorization_code`. Plaintext challenges are rejected.
- **Authorization codes are single-use** — consumed from Redis via `GETDEL`. Replay fails.
- **Refresh tokens rotate on every use**; the prior refresh token is invalidated.
- **JWT access tokens** carry an opaque `sid` claim that points to the upstream BC session in Redis (`bc:oauth:session:{sid}`). Upstream cookies are never embedded in the JWT — this limits blast radius if a token leaks and makes revocation a single Redis `DEL`.
- **Audience claim must be `bc-mcp`.** A Streaming Hub token (audience `sh-mcp`) will be rejected.
- **Access token TTL** defaults to 30 days (`ACCESS_TOKEN_TTL_SECONDS`).
- **Separate JWT secret** per server (`BC_JWT_SECRET`); never shared with Streaming Hub.
- **No plaintext credentials, tokens, or cookies are logged.**

**How tool calls resolve the session under OAuth**

When a request hits `/mcp/oauth`, the middleware validates the Bearer token, looks up the `sid` claim in Redis, and sets `request.state.bc_session_id` to the real BC session. The JSON-RPC `call_tool()` handler then **force-overrides** any `session_id` in the tool arguments with the HTTP-layer value:

```python
# buyer_cloud/mcp_jsonrpc.py
if session_id:
    arguments = dict(arguments)
    arguments["session_id"] = session_id
```

This override is load-bearing: LLM clients (notably Claude) inject a placeholder `session_id="oauth"` into tool arguments based on the schema. Without the override, that truthy placeholder would shadow the real OAuth-bound session and every tool call would fail with "Not authenticated". **When you are authenticated via OAuth, pass `session_id="oauth"` to all tools** — the server will swap in the real session automatically.

**Legacy `client_credentials` path (still supported)**

The pre-existing `POST /register` and `POST /token` endpoints continue to work for the OAuth 2.0 `client_credentials` grant. These are kept for backward compatibility with existing integrations and are not the recommended path for new clients.

#### Mode 2: Legacy session_id tools (3 tools)

If you are **not** using OAuth, authenticate by calling one of the login tools below and passing the returned `session_id` to every subsequent tool call. This path remains fully supported and is required for existing integrations (e.g. Seller Agent) and for clients that cannot perform a browser-based OAuth flow.

**`buyer_cloud_login_encrypted`** -- Authenticate using encrypted credentials via PyNaCl sealed box. More secure than plaintext login. The `ciphertext` is produced client-side using the public key from `buyer_cloud_get_login_public_key`. The decrypted payload must contain `email`, `password`, and either `buzz_key` or `base_url`.

- `ciphertext` (string, required): Base64-encoded sealed box ciphertext
- `session_id` (string, optional): Custom session ID; auto-generated if omitted
- `account_id` (int/string, optional): Masquerade account (can be set outside the ciphertext to switch accounts without re-encrypting)

**`buyer_cloud_get_login_public_key`** -- Returns the server's X25519 public key used for encrypting login credentials. No parameters required. Returns: `{ kid, alg, public_key_b64 }`.

**`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 (7 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.

---

**`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 (298 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 | 219 | Read / List / Export |
| POST | 35 | Create / Execute / Duplicate |
| PATCH | 27 | Partial update |
| PUT | 18 | Full replace / Update |
| DELETE | 20 | 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 (146 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 metrics |
| `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 metrics |
| `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 (16 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_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 |
| `bc_v2_post_creative_asset_upload_id` | POST | /creative_asset/upload/{id} | Upload binary file data for a creative asset |

---

### Reporting Resources - v2.0 (18 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.
- Discover valid report/view names with `bc_v2_get_reporting_reports`.
- Inspect report-specific fields and filters with `bc_v2_get_reporting_reports_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.

| Tool Name | Method | Path | Description |
|-----------|--------|------|-------------|
| `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_get_reporting_async_results_id` | GET | /reporting/async-results/{id} | Get results of a completed async report query |
| `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 (79 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) |

#### 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_feeds` | GET | /ref/audio-feeds | Get audio feed types |
| `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_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. All GET except `bc_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

| Tool Name | Method | Path | Description |
|-----------|--------|------|-------------|
| `bc_v05_put_authenticate` | PUT | /authenticate | Authenticate a user session (v0.5 endpoint) |

---

## Summary by Numbers

| Category | Tools |
|----------|-------|
| Direct MCP Tools | 18 |
| — Authentication | 5 |
| — Gateway Meta-Tools | 3 |
| — Built-in Analytics | 7 |
| — Help | 2 |
| — Health Check | 1 |
| API Tools (via invoke_tool) | 295 |
| — Core API Resources v2.0 | 146 |
| — Reference Resources v2.0 | 79 |
| — Reporting Resources v2.0 | 18 |
| — Creative API Resources v2.0 | 16 |
| — Identity Network Resources v2.0 | 6 |
| — Buzz Legacy v0.5 | 30 |
| **Grand Total** | **313** |

| HTTP Method | Count |
|-------------|-------|
| GET | 216 |
| POST | 34 |
| PATCH | 27 |
| PUT | 18 |
| DELETE | 20 |
| **Total** | **315*** |

*\*Some resource groups list more operations per-row than the 295 verified count from the OpenAPI spec parser.*