# Streaming Hub MCP Server - Combined Reference

**Total Tools: 309** | 7 direct MCP tools + 302 API tools via `invoke_tool`

> 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 Streaming Hub MCP server exposes **7 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 **302 API tools** auto-generated from OpenAPI specifications.

```
AI Client
  |
  |-- 7 Direct MCP Tools (always visible in tools/list)
  |     |-- 3 Meta-Tools (gateway to 302 API tools)
  |     |-- 4 Auth Tools
  |
  |-- 302 API Tools (discoverable via meta-tools, callable via invoke_tool)
      |-- 42 Categories:
        |
        |--   2  Ad Creative Scheduling API v4
        |--   8  Ad Unit Node API V3
        |--  11  Advertiser API V3
        |--  12  Agency API V3
        |--   6  Allocation Open API
        |--   1  Audience Item API V4
        |--  12  Audience Manager
        |--   5  Brand API V3
        |--   6  Campaign API V3
        |--   1  Channel Group API V4
        |--   7  Creative Instance API V4
        |--   3  Creative Instance Metrics API V4
        |--   9  Creative Management API V4
        |--   5  Forecasting API V4
        |--   2  HyLDA APIs
        |--   9  Insertion Order API V3
        |--   6  Inventory Package API V4
        |--   4  Marketplace Creative API V4
        |--   1  Marketplace Inventory Split API V4
        |--   1  Marketplace Inventory Split Orders API V4
        |--   1  Marketplace Listing API V4
        |--   2  Marketplace Purchased Inventory Orders API V4
        |--   2  Marketplace Sold Inventory Orders API V4
        |--   2  Marketplace Supply Source Package API V4
        |--   3  Partner Tag Creative API V4
        |--   9  Placement API V3
        |--   6  Programmatic Client Creative API V4
        |--   6  Programmatic Creatives
        |--  14  Programmatic Deal Open API
        |--   4  Proposed Ad API V4
        |--   6  Proposed Insertion Order API V4
        |--   4  Proposed Placement API V4
        |--   4  RFP Open API
        |--   3  Reporting API
        |--   1  Restriction API V4
        |--  37  Site API V4
        |--  11  Standard Attributes API V4
        |--   1  TV Network Groups
        |--   1  TV Network List
        |--   4  Vendor Contextual Segment API
        |--  43  Video API V4
        |--  27  Yield Optimization API V4
```

---

## The 3 Gateway Meta-Tools

These are the key tools that unlock the full 302-tool API. They follow a **discover-then-execute** pattern.

### `search_tools`

Search all 302 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 list', 'deal forecast', 'site group') |
| `max_results` | integer | 10 | Maximum results to return |

### `list_categories`

List all API tool categories with tool counts. Browse available capabilities at a glance. Takes no parameters.

### `invoke_tool`

Execute any tool by name. This is the universal execution gateway for all 302 API tools plus the 4 auth tools.

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `tool_name` | string | *required* | Tool name from search_tools results |
| `parameters` | object | `{}` | Tool parameters matching the schema from search_tools |
| `session_id` | string | - | Authenticated session ID from streaming_hub_login_encrypted |

---

## The 4 Authentication Tools

### `streaming_hub_get_login_public_key`

Get server public key `{kid, alg, public_key_b64}` used for client-side encryption before `streaming_hub_login_encrypted`. Takes no parameters.

### `streaming_hub_login_encrypted`

**START HERE** — Log in to FreeWheel Streaming Hub. Must be called before any other API tool. Returns a `session_id` used for all subsequent calls.

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ciphertext` | string | Yes | Sealed-box ciphertext decrypting to `{environment, username, password}` |
| `session_id` | string | No | Optional session ID (auto-generated if not provided) |

### `who_am_i`

Get token information for current session.

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `session_id` | string | Yes | Session ID |

### `streaming_hub_logout`

Logout and revoke token.

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `session_id` | string | Yes | Session ID |

---

## Typical Workflow

```
1. streaming_hub_get_login_public_key  --> get server public key
2. streaming_hub_login_encrypted       --> get session_id (pass ciphertext)
3. search_tools / list_categories      --> discover API tools
4. invoke_tool                         --> execute API calls (pass session_id)
5. streaming_hub_logout                --> clean up
```

---

## Connecting via OAuth 2.1 (PKCE) — alternative to `streaming_hub_login_encrypted`

Instead of bootstrapping a session by calling the `streaming_hub_login_encrypted` tool over MCP, a client can authenticate the **transport layer** using OAuth 2.1 with PKCE. The MCP server resolves the bearer token to an upstream FreeWheel session server-side, so the LLM never sees credentials and never needs to pass `session_id` in tool arguments — the server injects it for every `tools/call`.

This is the recommended path for hosted MCP clients that support OAuth (e.g. Claude Custom Connectors).

### High-level flow

```
1. Client discovers OAuth metadata via /.well-known/oauth-authorization-server
2. Client dynamically registers via POST /oauth/register (PKCE, no client_secret)
3. Client redirects user to GET /oauth/authorize  (PKCE S256, state)
4. Server redirects browser to GET /oauth/authorize/login (HTML form)
5. User submits username + password + environment to POST /oauth/login
   --> server calls authenticate_with_password() against FreeWheel
   --> server stores the resulting FW access_token under sh:oauth:session:{sid}
   --> server redirects back to client redirect_uri with ?code=...&state=...
6. Client exchanges the code at POST /oauth/token (with code_verifier)
   --> server returns a JWT access_token (aud=sh-mcp) + rotating refresh_token
7. Client opens an MCP session at POST /mcp/oauth with
       Authorization: Bearer <jwt>
   --> server resolves JWT --> sid --> FW access_token
   --> all subsequent tools/call invocations run as that FW session
8. Client refreshes via POST /oauth/token (grant_type=refresh_token)
```

### Endpoints

| Endpoint | Method | Purpose |
|----------|--------|---------|
| `/.well-known/oauth-authorization-server` | GET | RFC 8414 discovery metadata |
| `/.well-known/oauth-protected-resource` | GET | Protected-resource metadata |
| `/oauth/register` | POST | Dynamic client registration (PKCE public client, no secret) |
| `/oauth/authorize` | GET | Authorization endpoint (PKCE S256 required) |
| `/oauth/authorize/login` | GET | HTML login form (rendered by server) |
| `/oauth/login` | POST | Form submission — runs FreeWheel auth, issues auth code |
| `/oauth/token` | POST | Code exchange + refresh token rotation |
| `/mcp/oauth` | POST | OAuth-protected MCP JSON-RPC endpoint |

The legacy `/register`, `/token` (OAuth 2.0 `client_credentials`), and root `POST /` MCP endpoint remain available for existing clients and the `streaming_hub_login_encrypted` tool path.

### Step 1 — Discover

```
GET https://<host>/.well-known/oauth-authorization-server
```

Returns:

```json
{
  "issuer": "https://<host>",
  "registration_endpoint": "https://<host>/oauth/register",
  "authorization_endpoint": "https://<host>/oauth/authorize",
  "token_endpoint": "https://<host>/oauth/token",
  "grant_types_supported": ["authorization_code", "refresh_token", "client_credentials"],
  "response_types_supported": ["code", "token"],
  "code_challenge_methods_supported": ["S256"],
  "token_endpoint_auth_methods_supported": ["none", "client_secret_post"]
}
```

### Step 2 — Register a PKCE client

```
POST /oauth/register
Content-Type: application/json

{
  "redirect_uris": ["https://your-client.example.com/callback"],
  "client_name": "My MCP Client"
}
```

Response includes a `client_id` (no `client_secret` — this is a public PKCE client).

### Step 3 — Authorization request (PKCE)

Generate a `code_verifier` (43-128 chars, URL-safe) and derive `code_challenge = BASE64URL(SHA256(code_verifier))`.

```
GET /oauth/authorize
    ?response_type=code
    &client_id=<client_id>
    &redirect_uri=<registered_redirect_uri>
    &code_challenge=<challenge>
    &code_challenge_method=S256
    &state=<csrf_random>
    &scope=api
```

The server 302-redirects the browser to `/oauth/authorize/login?csrf_token=...` and renders an HTML form. The user enters:

| Field | Required | Notes |
|-------|----------|-------|
| `username` | Yes | FreeWheel username |
| `password` | Yes | FreeWheel password |
| `environment` | Yes | `production` or `staging` |

On submit (`POST /oauth/login`), the server calls `authenticate_with_password()` against FreeWheel, stores the resulting FW access token in Redis under `sh:oauth:session:{sid}`, then 302-redirects to the client's `redirect_uri` with `?code=<auth_code>&state=<state>`.

### Step 4 — Exchange code for tokens

```
POST /oauth/token
Content-Type: application/x-www-form-urlencoded

grant_type=authorization_code
&client_id=<client_id>
&code=<auth_code>
&redirect_uri=<same redirect_uri as step 3>
&code_verifier=<original code_verifier>
```

Response:

```json
{
  "access_token": "<JWT>",
  "token_type": "Bearer",
  "expires_in": 3600,
  "refresh_token": "<opaque>",
  "scope": "api"
}
```

The JWT is HS256-signed, has `aud=sh-mcp`, and carries an opaque `sid` claim. The actual FreeWheel access token is **never** in the JWT — it lives server-side in Redis.

### Step 5 — Call MCP tools with the bearer token

Use `POST /mcp/oauth` (NOT the root `POST /` endpoint) for all JSON-RPC traffic:

```
POST /mcp/oauth
Authorization: Bearer <JWT>
Content-Type: application/json

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "invoke_tool",
    "arguments": {
      "tool_name": "sh_1_1_list-campaigns",
      "parameters": { "page": 1, "per_page": 50 }
    }
  }
}
```

Notes:
- **Do NOT call `streaming_hub_login_encrypted` first** — the OAuth flow has already established the session.
- **Do NOT pass `session_id` in `arguments`** — the server force-overrides it from the OAuth context. Any `session_id` the LLM injects (e.g. the placeholder string `"oauth"`) is discarded.
- A missing or invalid `Authorization: Bearer` header on `/mcp/oauth` returns `401 Unauthorized` with a `WWW-Authenticate` header pointing at `/oauth/authorize` and `/oauth/token`. That `401` is what triggers MCP clients to start the PKCE flow — the root `POST /` endpoint will not, because it always returns `200`.

### Step 6 — Refresh

```
POST /oauth/token
Content-Type: application/x-www-form-urlencoded

grant_type=refresh_token
&client_id=<client_id>
&refresh_token=<previous_refresh_token>
```

Refresh tokens **rotate on every use** — store the new `refresh_token` from each response and discard the old one.

### Token lifetimes (defaults, env-overridable)

| Artifact | TTL | Env var |
|----------|-----|---------|
| Access token (JWT) | 1 hour | `SH_ACCESS_TOKEN_TTL_SECONDS` |
| Auth code | 5 minutes (single use) | `SH_AUTH_CODE_TTL_SECONDS` |
| Refresh token | 7 days (rotating) | `SH_REFRESH_TOKEN_TTL_SECONDS` |
| CSRF state | 10 minutes | `SH_CSRF_TTL_SECONDS` |
| FreeWheel upstream token | ~7 days (FW-controlled) | n/a |

When the upstream FreeWheel token expires the server returns a clear auth error — the client must restart the PKCE flow (FW password grant does not return refresh tokens, so silent re-auth is not possible).

### When to use OAuth vs the legacy `_login` tools

| Situation | Use |
|-----------|-----|
| Hosted MCP client with OAuth support (e.g. Claude Custom Connector) | **OAuth 2.1 / `/mcp/oauth`** |
| Browser-mediated user login, no credentials in the LLM context | **OAuth 2.1 / `/mcp/oauth`** |
| Local/scripted client, you already hold credentials | `streaming_hub_login_encrypted` (legacy `POST /` endpoint) |
| Service-to-service with a pre-issued OAuth client_id/secret | Legacy `client_credentials` on `/token` |

The two paths coexist — choosing OAuth 2.1 does not disable the `streaming_hub_login_encrypted` tool, and vice versa.

---

## Complete API Tool Reference (302 Tools)

All tools below are called via `invoke_tool` with `tool_name` set to the tool name and `parameters` matching the schema shown. Every API tool requires `session_id` as a parameter.

### Common Parameters

Many list/search endpoints share these pagination and filtering parameters:

| Parameter | Type | Description |
|-----------|------|-------------|
| `session_id` | string | Authenticated session ID (always required) |
| `page` | integer | Page number for paginated results |
| `per_page` | integer | Results per page |
| `sort` | string | Sort order |
| `name` | string | Filter by name (prefix-match on words) |
| `status` | string/integer | Filter by status |
| `created_at` | string | Filter by creation date (ISO8601 range with `..`) |
| `updated_at` | string | Filter by update date (ISO8601 range with `..`) |
| `start_date` | string | Filter by start date (ISO8601 range with `..`) |
| `end_date` | string | Filter by end date (ISO8601 range with `..`) |
| `body` | string/object | Request body for POST/PUT (XML string for V3, JSON object for V4) |

**Date Range Syntax** (used across V3 APIs): `"2016-01-01..2017-01-01"` (between), `"..2017-01-01"` (before), `"2017-01-01.."` (after). ISO8601, UTC.

**Name Search** (V3 APIs): Case-sensitive prefix match on word boundaries. `"?name=camp"` matches "Campaign" but `"?name=ampaign"` does not.

**V3 APIs use XML request bodies. V4 APIs use JSON request bodies.**

---

### Ad Creative Scheduling API v4 (2 tools)

Manage ad creative scheduling -- retrieve and update which creatives are scheduled to run against a specific ad unit.

| Tool Name | Method | Path | Summary |
|-----------|--------|------|---------|
| `sh_1_0_get-an-ads-creatives-scheduling` | GET | `/services/v4/ads/{ad_id}/scheduling` | Get an Ad's Creative Scheduling |
| `sh_1_0_update-an-ads-creatives-scheduling` | PUT | `/services/v4/ads/{ad_id}/scheduling` | Update an Ad's Creatives Scheduling |

---

### Ad Unit Node API V3 (8 tools)

Manage ad unit nodes (V3) -- activate/deactivate ad unit nodes and manage linked creatives.

| Tool Name | Method | Path | Summary |
|-----------|--------|------|---------|
| `sh_1_0_list-ad-unit-nodes` | GET | `/services/v3/ad_unit_nodes` | List Ad Unit Nodes |
| `sh_1_0_show-an-ad-unit-node` | GET | `/services/v3/ad_unit_nodes/{ad_unit_node_id}` | Show an Ad Unit Node |
| `sh_1_0_update-an-ad-unit-nodeputad_unit_nodesad_unit_node_id` | PUT | `/services/v3/ad_unit_nodes/{ad_unit_node_id}` | Update an Ad Unit Node |
| `sh_1_0_activate-an-ad-unit-node` | PUT | `/services/v3/ad_unit_nodes/{ad_unit_node_id}/activate.xml` | Activate an Ad Unit Node |
| `sh_1_0_deactivate-an-ad-unit-node` | PUT | `/services/v3/ad_unit_nodes/{ad_unit_node_id}/deactivate.xml` | Deactivate an Ad Unit Node |
| `sh_1_0_link-creativeupdate-linked-creative-status` | POST | `/services/v3/ad_unit_nodes/{ad_unit_node_id}/creatives/{creative_id}.xml` | Link Creative / Update Linked Creative Status |
| `sh_1_0_get-a-linked-creative` | GET | `/services/v3/ad_unit_nodes/{ad_unit_node_id}/creatives/{creative_id}.xml` | Get a Linked Creative |
| `sh_1_0_list-all-linked-creatives` | GET | `/services/v3/ad_unit_nodes/{ad_unit_node_id}/creatives.xml` | List All Linked Creatives |

---

### Advertiser API V3 (11 tools)

Manage advertisers within the network -- create, update, activate/deactivate, and manage their agency relationships.

| Tool Name | Method | Path | Summary |
|-----------|--------|------|---------|
| `sh_1_1_list-advertisers` | GET | `/services/v3/advertisers` | List Advertisers |
| `sh_1_1_create-an-advertiser` | POST | `/services/v3/advertisers` | Create an Advertiser |
| `sh_1_1_show-an-advertiser` | GET | `/services/v3/advertisers/{advertiser_id}` | Show an Advertiser |
| `sh_1_1_update-basic-advertiser` | PUT | `/services/v3/advertisers/{advertiser_id}` | Update Basic Advertiser |
| `sh_1_1_activate-an-advertiser` | PUT | `/services/v3/advertisers/{advertiser_id}/activate` | Activate an Advertiser |
| `sh_1_1_deactivate-an-advertiser` | PUT | `/services/v3/advertisers/{advertiser_id}/deactivate` | Deactivate an Advertiser |
| `sh_1_1_add-advertiser-relationships` | PUT | `/services/v3/advertisers/{advertiser_id}/add_relationships` | Add Advertiser Relationships |
| `sh_1_1_activate-advertiser-relationships` | PUT | `/services/v3/advertisers/{advertiser_id}/activate_relationships` | Activate Advertiser Relationships |
| `sh_1_1_deactivate-advertiser-relationships` | PUT | `/services/v3/advertisers/{advertiser_id}/deactivate_relationships` | Deactivate Advertiser Relationships |
| `sh_1_1_list-advertiser-parent-agencies` | GET | `/services/v3/advertisers/{advertiser_id}/parent_agencies` | List Parent Agencies of an Advertiser |
| `sh_1_1_list-the-brands-of-an-advertiser` | GET | `/services/v3/advertisers/{advertiser_id}/brands` | List the Brands of an Advertiser |

---

### Agency API V3 (12 tools)

Manage agencies -- create, update, activate/deactivate, and manage parent/child relationships with other agencies and advertisers.

| Tool Name | Method | Path | Summary |
|-----------|--------|------|---------|
| `sh_1_1_list-agencies` | GET | `/services/v3/agencies` | List Agencies |
| `sh_1_1_create-an-agency` | POST | `/services/v3/agencies` | Create an Agency |
| `sh_1_1_show-an-agency` | GET | `/services/v3/agencies/{agency_id}` | Show an Agency |
| `sh_1_1_update-basic-agency` | PUT | `/services/v3/agencies/{agency_id}` | Update Basic Agency |
| `sh_1_1_activate-an-agency` | PUT | `/services/v3/agencies/{agency_id}/activate` | Activate an Agency |
| `sh_1_1_deactivate-an-agency` | PUT | `/services/v3/agencies/{agency_id}/deactivate` | Deactivate an Agency |
| `sh_1_1_add-agency-relationships` | PUT | `/services/v3/agencies/{agency_id}/add_relationships` | Add Agency Relationships |
| `sh_1_1_activate-agency-relationships` | PUT | `/services/v3/agencies/{agency_id}/activate_relationships` | Activate Agency Relationships |
| `sh_1_1_deactivate-agency-relationships` | PUT | `/services/v3/agencies/{agency_id}/deactivate_relationships` | Deactivate Agency Relationships |
| `sh_1_1_list-agency-parent-agencies` | GET | `/services/v3/agencies/{agency_id}/parent_agencies` | List Parent Agencies of an Agency |
| `sh_1_1_list-agency-child-advertisers` | GET | `/services/v3/agencies/{agency_id}/child_advertisers` | List Child Advertisers of an Agency |
| `sh_1_1_list-agency-child-agencies` | GET | `/services/v3/agencies/{agency_id}/child_agencies` | List Child Agencies of an Agency |

---

### Allocation Open API (6 tools)

Manage allocation commitments for inventory allocation workflows.

| Tool Name | Method | Path | Summary |
|-----------|--------|------|---------|
| `sh_1_0_commitmentapiservice_searchcommitments` | GET | `/services/v4/allocation/commitments` | List Commitments |
| `sh_1_0_commitmentapiservice_createcommitment` | POST | `/services/v4/allocation/commitments` | Create a Commitment |
| `sh_1_0_commitmentapiservice_getcommitment` | GET | `/services/v4/allocation/commitments/{id}` | Get a Commitment |
| `sh_1_0_commitmentapiservice_updatecommitment` | PATCH | `/services/v4/allocation/commitments/{id}` | Update a Commitment |
| `sh_1_0_commitmentapiservice_activatecommitment` | POST | `/services/v4/allocation/commitments/{id}/activate` | Activate a Commitment |
| `sh_1_0_commitmentapiservice_deactivatecommitment` | POST | `/services/v4/allocation/commitments/{id}/deactivate` | Deactivate a Commitment |

---

### Audience Item API V4 (1 tool)

| Tool Name | Method | Path | Summary |
|-----------|--------|------|---------|
| `sh_1_0_list-audience-items` | GET | `/services/v4/audience_items` | List Audience Items |

---

### Audience Manager (Audience Reporting) (2 tools)

Audience performance reporting -- metrics by audience items and audience segments.

| Tool Name | Method | Path | Summary |
|-----------|--------|------|---------|
| `sh_0_0_1_get__reporting_v1_audience_audience_items` | GET | `/reporting/v1/audience/audience_items` | Get metrics by Audience Item ID or Audience Item Name. **Required**: `sales_channel`, `start_date`, `end_date`. |
| `sh_0_0_1_get__reporting_v1_audience_audience_segments` | GET | `/reporting/v1/audience/audience_segments` | Get metrics by Audience Segment Key-Value string. **Required**: `sales_channel`, `start_date`, `end_date`. |

---

### Audience Manager (Audience Definition) (6 tools)

Manage audience definitions -- create, retrieve, update, and delete audience definitions by network. Includes audience sharing network configuration.

| Tool Name | Method | Path | Summary |
|-----------|--------|------|---------|
| `sh_latest_listaudiencedefinitions` | GET | `/services/v4/audience_definition` | List Audience Definitions by Network |
| `sh_latest_createaudiencedefinition` | POST | `/services/v4/audience_definition` | Create Audience Definition |
| `sh_latest_getaudiencedefinition` | GET | `/services/v4/audience_definition/{id}` | Retrieve Audience Definition by ID |
| `sh_latest_replaceaudiencedefinition` | PUT | `/services/v4/audience_definition/{id}` | Update Audience Definition |
| `sh_latest_deleteaudiencedefinition` | DELETE | `/services/v4/audience_definition/{id}` | Remove Audience Definition |
| `sh_latest_listaudiencesharingnetworks` | GET | `/services/v4/audience_definition/audience_sharing_networks` | List Audience Sharing Networks |

---

### Brand API V3 (5 tools)

Manage brands associated with advertisers.

| Tool Name | Method | Path | Summary |
|-----------|--------|------|---------|
| `sh_1_1_list-brands` | GET | `/services/v3/advertisers/{advertiser_id}/brands` | List Brands |
| `sh_1_1_create-a-brand` | POST | `/services/v3/advertisers/{advertiser_id}/brands` | Create a Brand |
| `sh_1_1_show-a-brand` | GET | `/services/v3/advertisers/{advertiser_id}/brands/{brand_id}` | Show a Brand |
| `sh_1_1_update-a-brand` | PUT | `/services/v3/advertisers/{advertiser_id}/brands/{brand_id}` | Update a Brand |
| `sh_1_1_delete-a-brand` | DELETE | `/services/v3/advertisers/{advertiser_id}/brands/{brand_id}` | Delete a Brand |

---

### Campaign API V3 (6 tools)

Manage campaigns within the network -- the top-level container for insertion orders and placements.

| Tool Name | Method | Path | Summary |
|-----------|--------|------|---------|
| `sh_1_1_list-campaigns` | GET | `/services/v3/campaigns` | List Campaigns |
| `sh_1_1_create-a-campaign` | POST | `/services/v3/campaign` | Create a Campaign |
| `sh_1_1_show-a-campaign` | GET | `/services/v3/campaign/{campaign_id}` | Show a Campaign |
| `sh_1_1_update-a-campaign` | PUT | `/services/v3/campaign/{campaign_id}` | Update a Campaign |
| `sh_1_1_delete` | DELETE | `/services/v3/campaign/{campaign_id}` | Delete a Campaign |
| `sh_1_1_list-insertion-orders-of-a-campaign` | GET | `/services/v3/campaign/{campaign_id}/insertion_orders` | List Insertion Orders of a Campaign |

---

### Channel Group API V4 (1 tool)

Look up MRM IDs for channel groups.

| Tool Name | Method | Path | Summary |
|-----------|--------|------|---------|
| `sh_1_0_retrieve-mrm-ids-of-channel-groups` | GET | `/services/v4/channel_groups` | Retrieve MRM Basic Info of Channel Groups |

---

### Creative Instance API V4 (7 tools)

Manage creative instances -- the link between creatives and ad units.

| Tool Name | Method | Path | Summary |
|-----------|--------|------|---------|
| `sh_1_0_list-creative-instances` | GET | `/services/v4/creative_instances` | List Creative Instances |
| `sh_1_0_create-a-creative-instance` | POST | `/services/v4/creative_instances` | Create a Creative Instance |
| `sh_1_0_get-a-creative-instance` | GET | `/services/v4/creative_instances/{creative_instance_id}` | Get a Creative Instance |
| `sh_1_0_update-a-creative-instance` | PUT | `/services/v4/creative_instances/{creative_instance_id}` | Update a Creative Instance |
| `sh_1_0_activate-a-creative-instance` | POST | `/services/v4/creative_instances/{creative_instance_id}:activate` | Activate a Creative Instance |
| `sh_1_0_deactivate-a-creative-instance` | POST | `/services/v4/creative_instances/{creative_instance_id}:deactivate` | Deactivate a Creative Instance |
| `sh_1_0_delete-a-creative-instance` | DELETE | `/services/v4/creative_instances/{creative_instance_id}` | Delete a Creative Instance |

---

### Creative Instance Metrics API V4 (3 tools)

Manage metrics attached to creative instances.

| Tool Name | Method | Path | Summary |
|-----------|--------|------|---------|
| `sh_1_0_create-a-creative-metric` | POST | `/services/v4/creative_instances/{creative_instance_id}/creative_metrics` | Create a Creative Metric |
| `sh_1_0_update-creative-metric` | PUT | `/services/v4/creative_instances/{creative_instance_id}/creative_metrics/{creative_metric_id}` | Update a Creative Metric |
| `sh_1_0_delete-a-creative-metric` | DELETE | `/services/v4/creative_instances/{creative_instance_id}/creative_metrics/{creative_metric_id}` | Delete a Creative Metric |

---

### Creative Management API V4 (9 tools)

Manage creatives and renditions in the MRM Creative Library. **Max 50 creatives per page.** Up to 10-second delay for list detection.

| Tool Name | Method | Path | Summary |
|-----------|--------|------|---------|
| `sh_1_0_list-creatives-and-renditions` | GET | `/services/v4/creative_resources` | List Creatives and Renditions |
| `sh_1_0_create-creatives-and-renditions` | POST | `/services/v4/creative_resources` | Create Creatives and Renditions |
| `sh_1_0_show-creatives-and-renditions` | GET | `/services/v4/creative_resources/{creative_id}` | Show Creatives and Renditions |
| `sh_1_0_updatecreativesandrenditionsviacreativeid` | PUT | `/services/v4/creative_resources/{creative_id}` | Update Creatives and Renditions via Creative ID |
| `sh_1_0_update-creatives-and-renditions-via-external-id` | PUT | `/services/v4/creative_resources?external_id=<TEST_EXT_ID>` | Update Creatives and Renditions via External ID |
| `sh_1_0_delete-creative` | DELETE | `/services/v4/creative_resources/{creative_id}` | Delete Creatives |
| `sh_1_0_append-renditions` | POST | `/services/v4/creative_renditions` | Append Renditions |
| `sh_1_0_update-management-renditions` | PUT | `/services/v4/creative_renditions/{creative_rendition_id}` | Update Management Renditions |
| `sh_1_0_delete-creative-renditions` | DELETE | `/services/v4/creative_renditions/{creative_rendition_id}` | Delete Creative Renditions |

---

### Forecasting API V4 (5 tools)

Run nightly and on-demand forecasting for placements. Returns metrics like FFDI, NA, NUA. Supports webhook delivery via AWS S3.

| Tool Name | Method | Path | Summary |
|-----------|--------|------|---------|
| `sh_1_0_nightly-forecast` | GET | `/services/v4/placements/{placement_id}/forecasts?type=nightly` | Nightly Forecast |
| `sh_1_0_on-demand-forecast-1-1` | POST | `/services/v4/placements/{placement_id}/forecasts?` | On-Demand Forecast |
| `sh_1_0_on-demand-result-forecast` | GET | `/services/v4/placements/{placement_id}/forecasts?forecast_id=xxx` | On-Demand Result Forecast |
| `sh_1_0_simplified-on-demand-forecastpostplacementsplacement_idfo` | POST | `/services/v4/placements/{placement_id}/forecasts` | Simplified On-Demand Forecast |
| `sh_1_0_simplified-on-demand-result-forecast` | GET | `/services/v4/placements/{placement_id}/forecasts?forecast_id=xyz` | Simplified On-Demand Result Forecast |

---

### HyLDA APIs (2 tools)

Retrieve linear schedule (airing) data and external airing IDs from the HyLDA system.

| Tool Name | Method | Path | Summary |
|-----------|--------|------|---------|
| `sh_1_0_retrieve-schedules` | GET | `/services/v4/airings` | Retrieve Schedules |
| `sh_1_0_list-all-external-airing-ids` | GET | `/services/v4/airings_basic_info` | List External Airing IDs |

---

### Insertion Order API V3 (9 tools)

Manage insertion orders -- the contractual container for placements within a campaign.

| Tool Name | Method | Path | Summary |
|-----------|--------|------|---------|
| `sh_1_1_list-insertion-ordersget` | GET | `/services/v3/insertion_orders` | List Insertion Orders |
| `sh_1_1_create-an-insertion-order` | POST | `/services/v3/campaign/{campaign_id}/insertion_order` | Create an Insertion Order |
| `sh_1_1_get-a-insertion-order` | GET | `/services/v3/insertion_order/{insertion_order_id}` | Show an Insertion Order |
| `sh_1_1_update-an-insertion-order` | PUT | `/services/v3/insertion_order/{insertion_order_id}` | Update an Insertion Order |
| `sh_1_1_delete-an-insertion-order` | DELETE | `/services/v3/insertion_order/{insertion_order_id}` | Delete an Insertion Order |
| `sh_1_1_list-insertion-order-placements` | GET | `/services/v3/insertion_order/{insertion_order_id}/placements` | List Placements of the Insertion Order |
| `sh_1_1_book-an-insertion-order` | PUT | `/services/v3/insertion_order/{insertion_order_id}/book` | Book an Insertion Order |
| `sh_1_1_unbook-an-insertion-order` | PUT | `/services/v3/insertion_order/{insertion_order_id}/unbook` | Unbook an Insertion Order |
| `sh_1_1_proposal` | PUT | `/services/v3/insertion_order/{insertion_order_id}/propose` | Propose an Insertion Order |

---

### Inventory Package API V4 (6 tools)

Manage inventory packages with targeting rules for content and SSP targeting.

| Tool Name | Method | Path | Summary |
|-----------|--------|------|---------|
| `sh_1_0_listinventorypackages` | GET | `/services/v4/inventory_packages` | List Inventory Packages |
| `sh_1_0_createinventorypackage` | POST | `/services/v4/inventory_packages` | Create Inventory Package |
| `sh_1_0_getinventorypackage` | GET | `/services/v4/inventory_packages/{id}` | Retrieve Inventory Package |
| `sh_1_0_updateinventorypackage` | PUT | `/services/v4/inventory_packages/{id}` | Update Inventory Package |
| `sh_1_0_activateinventorypackage` | PUT | `/services/v4/inventory_packages/{id}/activate` | Activate Inventory Package |
| `sh_1_0_deactivateinventorypackage` | PUT | `/services/v4/inventory_packages/{id}/deactivate` | Deactivate Inventory Package |

---

### Marketplace Creative API V4 (4 tools total)

Update creatives associated with marketplace ads (private programmatic, private direct sold).

| Tool Name | Method | Path | Summary |
|-----------|--------|------|---------|
| `sh_1_0_update-marketplace-creatives` | PUT | `/services/v4/mkpl_creatives/{mkpl_creative_id}` | Update Marketplace Creatives |
| `sh_1_0_update-marketplace-private-direct-sold-creatives` | PUT | `/services/v4/mkpl_private_direct_sold_creatives/{mkpl_private_direct_sold_market_ad_id}` | Update Marketplace Private Direct Sold Creatives |
| `sh_1_0_update-marketplace-private-programmatic-creatives` | PUT | `/services/v4/mkpl_private_programmatic_creatives/{mkpl_private_programmatic_market_ad_id}` | Update Marketplace Private Programmatic Creatives |

---

### Marketplace Creative API V4 (Exchange Programmatic) (1 tool)

Update creatives associated with marketplace exchange programmatic ads.

| Tool Name | Method | Path | Summary |
|-----------|--------|------|---------|
| `sh_1_0_update-marketplace-exchange-creatives` | PUT | `/services/v4/mkpl_exchange_programmatic_creatives/{mkpl_exchange_programmatic_creative_id}` | Update Marketplace Exchange Programmatic Creatives |

---

### Marketplace Inventory Split API V4 (1 tool)

| Tool Name | Method | Path | Summary |
|-----------|--------|------|---------|
| `sh_1_0_listinventorysplits` | GET | `/services/v4/inventory_splits` | List All Inventory Splits |

---

### Marketplace Inventory Split Orders API V4 (1 tool)

| Tool Name | Method | Path | Summary |
|-----------|--------|------|---------|
| `sh_1_0_listinventorysplitorders` | GET | `/services/v4/inventory_split_orders` | List All Inventory Split Orders |

---

### Marketplace Listing API V4 (1 tool)

| Tool Name | Method | Path | Summary |
|-----------|--------|------|---------|
| `sh_1_0_getlisting` | GET | `/services/v4/listings/{id}` | Show an MKPL Listing |

---

### Marketplace Purchased Inventory Orders API V4 (2 tools)

| Tool Name | Method | Path | Summary |
|-----------|--------|------|---------|
| `sh_1_0_listpurchasedinventoryorders` | GET | `/services/v4/purchased_inventory_orders` | List All Purchased Inventory Orders |
| `sh_1_0_getpurchasedinventoryorder` | GET | `/services/v4/purchased_inventory_orders/{id}` | Show a Purchased Inventory Order |

---

### Marketplace Sold Inventory Orders API V4 (2 tools)

| Tool Name | Method | Path | Summary |
|-----------|--------|------|---------|
| `sh_1_0_listsoldinventoryorders` | GET | `/services/v4/sold_inventory_orders` | List All Sold Inventory Orders |
| `sh_1_0_getsoldinventoryorder` | GET | `/services/v4/sold_inventory_orders/{id}` | Show a Sold Inventory Order |

---

### Marketplace Supply Source Package API V4 (2 tools)

| Tool Name | Method | Path | Summary |
|-----------|--------|------|---------|
| `sh_1_0_listsupplysourcepackages` | GET | `/services/v4/supply_source_packages` | List All Supply Source Packages |
| `sh_1_0_getsupplysourcepackage` | GET | `/services/v4/supply_source_packages/{id}` | Get One Supply Source Package |

---

### Partner Tag Creative API V4 (3 tools)

Manage partner tag creatives linked to ad units.

| Tool Name | Method | Path | Summary |
|-----------|--------|------|---------|
| `sh_1_0_list-partner-tag-creatives` | GET | `/services/v4/partner_tag_creatives/list` | List Partner Tag Creatives |
| `sh_1_0_get-partner` | GET | `/services/v4/partner_tag_creatives/{partner_tag_creative_id}` | Retrieve Partner Tag Creatives |
| `sh_1_0_update-partner-tags-creatives` | PUT | `/services/v4/partner_tag_creatives/{partner_tag_creative_id}` | Update Partner Tag Creatives |

---

### Placement API V3 (9 tools)

Manage placements -- the actual ad delivery configuration tied to insertion orders. Includes lifecycle management (activate, deactivate, cancel, extend).

| Tool Name | Method | Path | Summary |
|-----------|--------|------|---------|
| `sh_1_1_list-placements-orig` | GET | `/services/v3/placements` | List Placements |
| `sh_1_1_create-a-placement` | POST | `/services/v3/placement/create` | Create a Placement |
| `sh_1_1_show-a-placement` | GET | `/services/v3/placement/{placement_id}` | Show a Placement |
| `sh_1_1_update-a-placement` | PUT | `/services/v3/placement/{placement_id}` | Update a Placement |
| `sh_1_1_delete-a-placement` | DELETE | `/services/v3/placement/{placement_id}` | Delete a Placement |
| `sh_1_1_activate-a-placement` | PUT | `/services/v3/placement/{placement_id}/activate` | Activate a Placement |
| `sh_1_1_deactivate-a-placement` | PUT | `/services/v3/placement/{placement_id}/deactivate` | Deactivate a Placement |
| `sh_1_1_cancel-a-placement` | PUT | `/services/v3/placement/{placement_id}/cancel` | Cancel a Placement |
| `sh_1_1_extend-a-placement` | PUT | `/services/v3/placement/{placement_id}/extend` | Extend a Placement |

---

### Programmatic Client Creative API V4 (6 tools)

Manage client-side creatives and their renditions for programmatic delivery.

| Tool Name | Method | Path | Summary |
|-----------|--------|------|---------|
| `sh_1_0_show-client-creative` | GET | `/services/v4/programmatic_client_creatives` | Show Client Creatives |
| `sh_1_0_create-client-creative` | POST | `/services/v4/programmatic_client_creatives` | Create Client Creative |
| `sh_1_0_update-client-creative` | PUT | `/services/v4/programmatic_client_creatives` | Update Client Creative |
| `sh_1_0_delete-a-client-creative` | DELETE | `/services/v4/programmatic_client_creatives` | Delete a Client Creative |
| `sh_1_0_append-client-creative-rendition` | POST | `/services/v4/programmatic_client_creative_renditions` | Append New Rendition to Client Creative |
| `sh_1_0_delete-a-client-creative-rendition` | DELETE | `/services/v4/programmatic_client_creative_renditions/{creative_rendition_id}` | Delete a Client Creative Rendition |

---

### Programmatic Creatives (6 tools)

Manage programmatic creatives, transcoding, and transcode packages. **Max 50 creatives per page. 30-second timeout.**

| Tool Name | Method | Path | Summary |
|-----------|--------|------|---------|
| `sh_1_0_list-programmatic-creatives` | GET | `/services/v4/programmatic_creatives/list` | List Programmatic Creatives |
| `sh_1_0_retrieve-programmatic-creatives-by-by-universal-ad-id-and` | GET | `/services/v4/programmatic_creatives/{programmatic_creative_id}` | Retrieve Programmatic Creatives |
| `sh_1_0_update-programmatic-creatives` | PUT | `/services/v4/programmatic_creatives/{programmatic_creative_id}` | Update Programmatic Creatives |
| `sh_1_0_create-programmatic-creative-transcode` | POST | `/services/v4/programmatic_creatives/{programmatic_creative_id}:transcode` | Transcode a Programmatic Creative |
| `sh_1_0_create-programmatic-creative-batch-transcode` | POST | `/services/v4/programmatic_creatives:batchTranscode` | Batch Transcode Programmatic Creatives |
| `sh_1_0_list-programmatic-transcode-package` | GET | `/services/v4/programmatic_transcode_package` | List Programmatic Transcode Packages within the Network |

---

### Programmatic Deal Open API (Forecasting) (3 tools)

Nightly and on-demand forecasting for programmatic deals.

| Tool Name | Method | Path | Summary |
|-----------|--------|------|---------|
| `sh_1_0_getdealnightlyforecast` | GET | `/services/v4/programmatic/deals/{deal_id}/nightly_forecast` | Retrieve a Nightly Forecast |
| `sh_1_0_rundealondemandforecast` | POST | `/services/v4/programmatic/deals/{deal_id}/on_demand_forecasts` | Create an On-Demand Forecast |
| `sh_1_0_getdealondemandforecast` | GET | `/services/v4/programmatic/deals/{deal_id}/on_demand_forecasts/{forecast_id}` | Retrieve an On-Demand Forecast |

---

### Programmatic Deal Open API (Core) (11 tools)

Full lifecycle management of programmatic deals -- create, update, activate/deactivate, and look up global entities (buyers, advertisers, agencies, brands).

| Tool Name | Method | Path | Summary |
|-----------|--------|------|---------|
| `sh_1_0_searchdeals` | GET | `/services/v4/programmatic/deals` | List Deals |
| `sh_1_0_createdeal` | POST | `/services/v4/programmatic/deals` | Create a Deal |
| `sh_1_0_getdeal` | GET | `/services/v4/programmatic/deals/{id}` | Retrieve a Deal |
| `sh_1_0_updatedeal` | PATCH | `/services/v4/programmatic/deals/{deal_id}` | Update a Deal |
| `sh_1_0_activatedeal` | PUT | `/services/v4/programmatic/deals/{deal_id}/activate` | Activate a Deal |
| `sh_1_0_deactivatedeal` | PUT | `/services/v4/programmatic/deals/{deal_id}/deactivate` | Deactivate a Deal |
| `sh_1_0_listbuyers` | GET | `/services/v4/programmatic/buyers` | List Buyers |
| `sh_1_0_listglobaladvertisers` | GET | `/services/v4/global_advertisers` | List Global Advertisers |
| `sh_1_0_listglobalagencies` | GET | `/services/v4/programmatic/global_agencies` | List Global Agencies |
| `sh_1_0_listglobalbrands` | GET | `/services/v4/global_brands` | List Global Brands |
| `sh_1_0_listdataprotectionpackages` | GET | `/services/v4/data_protection_packages` | List Data Protection Packages |

---

### Proposed Ad API V4 (4 tools)

Manage proposed ads -- lightweight ad drafts within proposed placements, used in pre-booking workflows.

| Tool Name | Method | Path | Summary |
|-----------|--------|------|---------|
| `sh_1_0_create-a-proposed-ad` | POST | `/services/v4/proposed_placements/{proposed_placement_id}/proposed_ads` | Create a Proposed Ad |
| `sh_1_0_show-information-about-a-proposed-ad` | GET | `/services/v4/proposed_ads/{proposed_ad_id}` | Show Information about a Proposed Ad |
| `sh_1_0_update-a-proposed-ad-partial` | PATCH | `/services/v4/proposed_ads/{proposed_ad_id}` | Update a Proposed Ad - Partial |
| `sh_1_0_delete-a-proposed-ad` | DELETE | `/services/v4/proposed_ads/{proposed_ad_id}` | Delete a Proposed Ad |

---

### Proposed Insertion Order API V4 (6 tools)

Manage proposed insertion orders and their proposed placements before formal booking.

| Tool Name | Method | Path | Summary |
|-----------|--------|------|---------|
| `sh_1_0_list-proposed-insertion-orders` | GET | `/services/v4/proposed_insertion_orders` | List Proposed Insertion Orders |
| `sh_1_0_list-proposed-insertion-orders-within-the-current-campaig` | GET | `/services/v4/campaigns/{campaign_id}/proposed_insertion_orders` | List Proposed Insertion Orders within the current Campaign |
| `sh_1_0_create-a-proposed-insertion-order` | POST | `/services/v4/campaigns/{campaign_id}/proposed_insertion_orders` | Create a Proposed Insertion Order |
| `sh_1_0_show-information-about-a-proposed-insertion-order` | GET | `/services/v4/proposed_insertion_orders/{proposed_io_id}` | Show Information about a Proposed Insertion Order |
| `sh_1_0_update-a-proposed-insertion-order-partial` | PATCH | `/services/v4/proposed_insertion_orders/{proposed_io_id}` | Update a Proposed Insertion Order - Partial |
| `sh_1_0_list-proposed-placements-within-the-current-proposed-inse` | GET | `/services/v4/proposed_insertion_orders/{proposed_io_id}/proposed_placements` | List Proposed Placements within the Current Proposed Insertion Order |

---

### Proposed Placement API V4 (4 tools)

Manage proposed placements -- the placement-level drafts within proposed insertion orders.

| Tool Name | Method | Path | Summary |
|-----------|--------|------|---------|
| `sh_1_0_list-proposed-placements` | GET | `/services/v4/proposed_placements` | List Proposed Placements |
| `sh_1_0_create-a-proposed-placement` | POST | `/services/v4/proposed_insertion_orders/{proposed_io_id}/proposed_placements` | Create a Proposed Placement |
| `sh_1_0_show-information-about-a-proposed-placement` | GET | `/services/v4/proposed_placements/{proposed_placement_id}` | Show Information about a Proposed Placement |
| `sh_1_0_update-a-proposed-placement-partial` | PATCH | `/services/v4/proposed_placements/{proposed_placement_id}` | Update a Proposed Placement - Partial |

---

### RFP Open API (4 tools)

Create, retrieve, update, and delete request-for-proposal (RFP) forecast entities.

| Tool Name | Method | Path | Summary |
|-----------|--------|------|---------|
| `sh_1_0_apirfpservice_createandrun` | POST | `/services/v4/forecasts/rfp` | Create and Run an RFP |
| `sh_1_0_apirfpservice_getrfp` | GET | `/services/v4/forecasts/rfp/{id}` | Shows the details of an RFP |
| `sh_1_0_apirfpservice_updaterfp` | PUT | `/services/v4/forecasts/rfp/{id}` | Update the details of an RFP |
| `sh_1_0_apirfpservice_deleterfp` | DELETE | `/services/v4/forecasts/rfp/{id}` | Delete an RFP |

---

### Reporting API (Job Status) (1 tool)

Check status of async reporting jobs.

| Tool Name | Method | Path | Summary |
|-----------|--------|------|---------|
| `sh_0_0_1_get__reporting_v1_job__job_id_` | GET | `/reporting/v1/job/{job_id}` | Get job info |

---

### Restriction API V4 (1 tool)

List ad restrictions configured in the network.

| Tool Name | Method | Path | Summary |
|-----------|--------|------|---------|
| `sh_1_0_restrictionqueryservice_listrestrictions` | GET | `/services/v4/restrictions` | List Restrictions |

---

### Audience Manager (Segment) (6 tools)

Search and retrieve audience segments by ID, name, or data provider. Includes ingestion status monitoring.

| Tool Name | Method | Path | Summary |
|-----------|--------|------|---------|
| `sh_latest_getsegment` | GET | `/services/v4/segment/{segment-id}` | Retrieve Segment by ID |
| `sh_latest_listsegmentsbyname` | GET | `/services/v4/segment/by_name/{segment-name}` | Search Segments by Name |
| `sh_latest_listsegmentsbyexternalid` | GET | `/services/v4/segment/by_provider_segment_id/{provider-segment-id}` | List Segments by Data Provider Segment ID |
| `sh_latest_listsegmentsfordataprovider` | GET | `/services/v4/segment/by_data_provider_id/{data-provider-name}` | List Segments by Data Provider |
| `sh_latest_countsegmentsbyprovider` | GET | `/services/v4/segment/count_by_provider` | Count Segments by Data Provider |
| `sh_latest_getsegmentingestionstatus` | GET | `/services/v4/segment/ingestion/status` | List Segments' Ingestion Status |

---

### Site API V4 (Site) (9 tools)

Manage sites and their parent site group relationships.

| Tool Name | Method | Path | Summary |
|-----------|--------|------|---------|
| `sh_1_0_list-sites` | GET | `/services/v4/sites` | List Sites |
| `sh_1_0_create-a-site` | POST | `/services/v4/sites` | Create a Site |
| `sh_1_0_show-a-site` | GET | `/services/v4/sites/{site_id}` | Show a Site |
| `sh_1_0_update-a-site` | PUT | `/services/v4/sites/{site_id}` | Update a Site |
| `sh_1_0_list-parent-site-groups` | GET | `/services/v4/sites/{site_id}/parent_site_groups` | List Parent Site Groups |
| `sh_1_0_list-child-site-sections` | GET | `/services/v4/sites/{site_id}/child_site_sections` | List Child Site Sections |
| `sh_1_0_add-a-parent-site-group` | PUT | `/services/v4/sites/{site_id}/parent_site_groups/{site_group_id}` | Add a Parent Site Group |
| `sh_1_0_delete-a-parent-site-group` | DELETE | `/services/v4/sites/{site_id}/parent_site_groups/{site_group_id}` | Delete a Parent Site Group |
| `sh_1_0_update-site-and-parent-site-groups-relationship` | PUT | `/services/v4/sites/{site_id}/parent_site_groups` | Update Site And Parent Site Groups Relationship |

---

### Site API V4 (Site Group) (20 tools)

Manage site groups and their hierarchical relationships (parent/child site groups, child sites, child site sections).

| Tool Name | Method | Path | Summary |
|-----------|--------|------|---------|
| `sh_1_0_list-site-groups` | GET | `/services/v4/site_groups` | List Site Groups |
| `sh_1_0_create-a-site-group` | POST | `/services/v4/site_groups` | Create a Site Group |
| `sh_1_0_show-a-site-group` | GET | `/services/v4/site_groups/{site_group_id}` | Show a Site Group |
| `sh_1_0_update-a-site-group` | PUT | `/services/v4/site_groups/{site_group_id}` | Update a Site Group |
| `sh_1_0_list-parent-site-groups-1` | GET | `/services/v4/site_groups/{site_group_id}/parent_site_groups` | List Parent Site Groups |
| `sh_1_0_add-a-parent-site-group-1` | PUT | `/services/v4/site_groups/{site_group_id}/parent_site_groups/{parent_site_group_id}` | Add a Parent Site Group |
| `sh_1_0_delete-a-parent-site-group-1` | DELETE | `/services/v4/site_groups/{site_group_id}/parent_site_groups/{parent_site_group_id}` | Delete a Parent Site Group |
| `sh_1_0_update-site-group-and-parent-site-groups-relationship` | PUT | `/services/v4/site_groups/{site_group_id}/parent_site_groups` | Update Site Group And Parent Site Groups Relationship |
| `sh_1_0_list-child-site-groups` | GET | `/services/v4/site_groups/{site_group_id}/child_site_groups]` | List Child Site Groups |
| `sh_1_0_add-a-child-site-group` | PUT | `/services/v4/site_groups/{site_group_id}/child_site_groups/{child_site_group_id}` | Add a Child Site Group |
| `sh_1_0_delete-a-child-site-group` | DELETE | `/services/v4/site_groups/{site_group_id}/child_site_groups/{child_site_group_id}` | Delete a Child Site Group |
| `sh_1_0_update-site-group-and-child-site-groups-relationship` | PUT | `/services/v4/site_groups/{site_group_id}/child_site_groups` | Update Site Group And Child Site Groups Relationship |
| `sh_1_0_list-child-sites` | GET | `/services/v4/site_groups/{site_group_id}/child_sites` | List Child Sites |
| `sh_1_0_add-a-child-site` | PUT | `/services/v4/site_groups/{site_group_id}/child_sites/{site_id}` | Add a Child Site |
| `sh_1_0_delete-a-child-site` | DELETE | `/services/v4/site_groups/{site_group_id}/child_sites/{site_id}` | Delete a Child Site |
| `sh_1_0_update-site-group-and-child-sites-relationship` | PUT | `/services/v4/site_groups/{site_group_id}/child_sites` | Update Site Group And Child Sites Relationship |
| `sh_1_0_list-child-site-sections-1` | GET | `/services/v4/site_groups/{site_group_id}/child_site_sections` | List Child Site Sections |
| `sh_1_0_add-a-child-site-section` | PUT | `/services/v4/site_groups/{site_group_id}/child_site_sections/{site_section_id}` | Add a Child Site Section |
| `sh_1_0_delete-a-child-site-section` | DELETE | `/services/v4/site_groups/{site_group_id}/child_site_sections/{site_section_id}` | Delete a Child Site Section |
| `sh_1_0_update-site-group-and-child-site-sections-relationship-pu` | PUT | `/services/v4/site_groups/{site_group_id}/child_site_sections` | Update Site Group And Child Site Sections Relationship |

---

### Site API V4 (Site Section) (8 tools)

Manage site sections and their parent site group relationships.

| Tool Name | Method | Path | Summary |
|-----------|--------|------|---------|
| `sh_1_0_site-sections` | GET | `/services/v4/site_sections` | List Site Sections |
| `sh_1_0_create-a-site-section` | POST | `/services/v4/sites/{site_id}/site_sections` | Create a Site Section |
| `sh_1_0_show-a-site-section` | GET | `/services/v4/site_sections/{site_section_id}` | Show a Site Section |
| `sh_1_0_update-a-site-section` | PUT | `/services/v4/site_sections/{site_section_id}` | Update a Site Section |
| `sh_1_0_list-parent-site-groups-2` | GET | `/services/v4/site_sections/{site_section_id}/parent_site_groups` | List Parent Site Groups |
| `sh_1_0_add-a-parent-site-group-2` | PUT | `/services/v4/site_sections/{site_section_id}/parent_site_groups/{site_group_id}` | Add a Parent Site Group |
| `sh_1_0_delete-a-parent-site-group-2` | DELETE | `/services/v4/site_sections/{site_section_id}/parent_site_groups/{site_group_id}` | Delete a Parent Site Group |
| `sh_1_0_update-site-section-and-parent-site-groups-relationship` | PUT | `/services/v4/site_sections/{site_section_id}/parent_site_groups` | Update Site Section And Parent Site Group Relationship |

---

### Standard Attributes API V4 (11 tools)

Reference data lookups for IAB categories, apps, domains, channels, publishers, series, sport entities, and programmer/brand/channel data.

| Tool Name | Method | Path | Summary |
|-----------|--------|------|---------|
| `sh_1_0_liststandardattributes` | GET | `/services/v4/standard_attributes` | List All Standard Attributes |
| `sh_1_0_listiabcategories` | GET | `/services/v4/standard_attributes/iab_categories` | List IAB Categories |
| `sh_1_0_listinventorysources` | GET | `/services/v4/standard_attributes/programmerbrandchannels` | List Programmer, Brand, Channel |
| `sh_1_0_liststandardseries` | GET | `/services/v4/standard_attributes/series` | List Series |
| `sh_1_0_liststandardappbundles` | GET | `/services/v4/standard_attributes/endpoints/app_bundles` | List App Bundles |
| `sh_1_0_liststandardapps` | GET | `/services/v4/standard_attributes/endpoints/apps` | List Apps |
| `sh_1_0_liststandarddomains` | GET | `/services/v4/standard_attributes/endpoints/domains` | List Domains |
| `sh_1_0_listsspchannels` | GET | `/services/v4/standard_attributes/ssp_channels` | List SSP Channels |
| `sh_1_0_listsspiabcategories` | GET | `/services/v4/standard_attributes/ssp_iab_categories` | List SSP IAB Categories |
| `sh_1_0_listssppublishers` | GET | `/services/v4/standard_attributes/ssp_publishers` | List SSP Publishers |
| `sh_1_0_liststandardsportentities` | GET | `/services/v4/standard_attributes/sport_entities` | List Sport Entities |

---

### TV Network Groups (1 tool)

Look up MRM IDs of TV network groups.

| Tool Name | Method | Path | Summary |
|-----------|--------|------|---------|
| `sh_1_0_list-tv-network-groups` | GET | `/services/v4//television_network_groups` | List TV Network Groups |

---

### TV Network List (1 tool)

Look up MRM IDs of available television networks.

| Tool Name | Method | Path | Summary |
|-----------|--------|------|---------|
| `sh_1_0_retrieve-mrm-ids-of-tv-networks` | GET | `/services/v4/available_television_networks` | Retrieve MRM IDs of TV Networks |

---

### Vendor Contextual Segment API (4 tools)

Manage contextual segments for a specific vendor. Full CRUD.

| Tool Name | Method | Path | Summary |
|-----------|--------|------|---------|
| `sh_1_0_list-vendor-contextual-segment` | GET | `/services/v4/vendors/{vendor_id}/contextual_segments` | List contextual segments |
| `sh_1_0_create-vendor-contextual-segment` | POST | `/services/v4/vendors/{vendor_id}/contextual_segments` | Create contextual segments |
| `sh_1_0_update-vendor-contextual-segment` | PUT | `/services/v4/vendors/{vendor_id}/contextual_segments` | Update contextual segments |
| `sh_1_0_delete-vendor-contextual-segment` | DELETE | `/services/v4/vendors/{vendor_id}/contextual_segments` | Delete contextual segments |

---

### Video API V4 (43 tools)

Comprehensive video content management including videos, video groups, and series with full hierarchical relationship support.

#### Videos (13 tools)

| Tool Name | Method | Path | Summary |
|-----------|--------|------|---------|
| `sh_1_0_list-videos` | GET | `/services/v4/videos` | List Videos |
| `sh_1_0_create-a-video` | POST | `/services/v4/videos` | Create a Video |
| `sh_1_0_show-a-video` | GET | `/services/v4/videos/{video_id}` | Show a Video |
| `sh_1_0_update-a-video` | PUT | `/services/v4/videos/{video_id}` | Update a Video |
| `sh_1_0_list-parent-video-group` | GET | `/services/v4/videos/{video_id}/parent_video_groups` | List Parent Video Group |
| `sh_1_0_update-parent-video-group-relation` | PUT | `/services/v4/videos/{video_id}/parent_video_groups` | Update Parent Video Group Relations |
| `sh_1_0_add-parent-video-group` | PUT | `/services/v4/videos/{video_id}/parent_video_groups/{video_group_id}` | Add Parent Video Group |
| `sh_1_0_remove-parent-video-group` | DELETE | `/services/v4/videos/{video_id}/parent_video_groups/{video_group_id}` | Remove Parent Video Group |
| `sh_1_0_list-parent-series` | GET | `/services/v4/videos/{video_id}/parent_series` | List Parent Series |
| `sh_1_0_add-parent-series` | PUT | `/services/v4/videos/{video_id}/parent_series/{series_id}` | Add Parent Series |
| `sh_1_0_remove-parent-series` | DELETE | `/services/v4/videos/{video_id}/parent_series/{series_id}` | Remove Parent Series |
| `sh_1_0_get-video-contextual-segments` | GET | `/services/v4/videos/contextual_segments` | Get Contextual Segments associated with a Video |
| `sh_1_0_update-video-contextual-segments` | PUT | `/services/v4/videos/contextual_segments` | Associate Contextual Segments for a Video |

#### Video Groups (18 tools)

| Tool Name | Method | Path | Summary |
|-----------|--------|------|---------|
| `sh_1_0_list-video-groups` | GET | `/services/v4/video_groups` | List Video Groups |
| `sh_1_0_create-a-video-group` | POST | `/services/v4/video_groups` | Create a Video Group |
| `sh_1_0_show-a-video-group` | GET | `/services/v4/video_groups/{video_group_id}` | Show a Video Group |
| `sh_1_0_update-a-video-group` | PUT | `/services/v4/video_groups/{video_group_id}` | Update a Video Group |
| `sh_1_0_list-parent-video-groups` | GET | `/services/v4/video_groups/{video_group_id}/parent_video_groups` | List Parent Video Groups |
| `sh_1_0_add-parent-video-groups-relation` | PUT | `/services/v4/video_groups/{video_group_id}/parent_video_groups/{parent_video_group_id}` | Add Parent Video Group Relation |
| `sh_1_0_remove-parent-video-groups-relations` | DELETE | `/services/v4/video_groups/{video_group_id}/parent_video_groups/{parent_video_group_id}` | Remove Parent Video Group Relation |
| `sh_1_0_list-child-video-groups` | GET | `/services/v4/video_groups/{video_group_id}/child_video_groups` | List Child Video Groups |
| `sh_1_0_update-child-video-group-relation` | PUT | `/services/v4/video_groups/{video_group_id}/child_video_groups` | Update Child Video Group Relations |
| `sh_1_0_add-child-video-groups-relations` | PUT | `/services/v4/video_groups/{video_group_id}/child_video_groups/{child_video_group_id}` | Add Child Video Group Relation |
| `sh_1_0_remove-child-video-groups-relations` | DELETE | `/services/v4/video_groups/{video_group_id}/child_video_groups/{child_video_group_id}` | Remove Child Video Group Relation |
| `sh_1_0_list-child-video` | GET | `/services/v4/video_groups/{video_group_id}/child_videos` | List Child Videos |
| `sh_1_0_update-child-video-relations` | PUT | `/services/v4/video_groups/{video_group_id}/child_videos` | Update Child Video Relations |
| `sh_1_0_add-child-video` | PUT | `/services/v4/video_groups/{video_group_id}/child_videos/{video_id}` | Add Child Video |
| `sh_1_0_remove-child-video` | DELETE | `/services/v4/video_groups/{video_group_id}/child_videos/{video_id}` | Remove Child Video |
| `sh_1_0_list-child-video-series` | GET | `/services/v4/video_groups/{video_group_id}/child_series` | List Child Video Series |
| `sh_1_0_add-child-video-series` | PUT | `/services/v4/video_groups/{video_group_id}/child_series/{series_id}` | Add Child Video Series |
| `sh_1_0_remove-child-video-series` | DELETE | `/services/v4/video_groups/{video_group_id}/child_series/{series_id}` | Remove Child Video Series |

#### Series (12 tools)

| Tool Name | Method | Path | Summary |
|-----------|--------|------|---------|
| `sh_1_0_list-series` | GET | `/services/v4/series` | List Series |
| `sh_1_0_create-a-series` | POST | `/services/v4/series` | Create a Series |
| `sh_1_0_show-a-series` | GET | `/services/v4/series/{series_id}` | Show a Series |
| `sh_1_0_update-a-series` | PUT | `/services/v4/series/{series_id}` | Update a Series |
| `sh_1_0_list-parent-video-group-1` | GET | `/services/v4/series/{series_id}/parent_video_groups` | List Parent Video Groups of a Series |
| `sh_1_0_update-parent-video-group-relations` | PUT | `/services/v4/series/{series_id}/parent_video_groups` | Update Parent Video Group Relations |
| `sh_1_0_add-parent-video-group-1` | PUT | `/services/v4/series/{series_id}/parent_video_groups/{video_group_id}` | Add Parent Video Group |
| `sh_1_0_remove-parent-video-group-1` | DELETE | `/services/v4/series/{series_id}/parent_video_groups/{video_group_id}` | Remove Parent Video Group |
| `sh_1_0_list-child-videos` | GET | `/services/v4/series/{series_id}/child_videos` | List Child Videos of a Series |
| `sh_1_0_update-child-videos-relations` | PUT | `/services/v4/series/{series_id}/child_videos` | Update Child Video Relations |
| `sh_1_0_add-child-video-1` | PUT | `/services/v4/series/{series_id}/child_videos/{video_id}` | Add Child Video to Series |
| `sh_1_0_remove-child-video-1` | DELETE | `/services/v4/series/{series_id}/child_videos/{video_id}` | Remove Child Video from Series |

---

### Yield Optimization API V4 (Bid Modifier) (5 tools)

Manage yield optimization bid modifier rules.

| Tool Name | Method | Path | Summary |
|-----------|--------|------|---------|
| `sh_1_0_yieldoptimizationservice_searchyieldoptimizationbidmodifi` | GET | `/services/v4/yield_optimization/bid_modifiers` | List Yield Optimization Bid Modifiers |
| `sh_1_0_yieldoptimizationservice_createyieldoptimizationbidmodifi` | POST | `/services/v4/yield_optimization/bid_modifiers` | Create Yield Optimization Bid Modifier |
| `sh_1_0_yieldoptimizationservice_getyieldoptimizationbidmodifier` | GET | `/services/v4/yield_optimization/bid_modifiers/{id}` | Get Yield Optimization Bid Modifiers |
| `sh_1_0_yieldoptimizationservice_patchyieldoptimizationbidmodifie` | PATCH | `/services/v4/yield_optimization/bid_modifiers/{id}` | Update Yield Optimization Bid Modifier |
| `sh_1_0_yieldoptimizationservice_updateyieldoptimizationbidmodifi` | PUT | `/services/v4/yield_optimization/bid_modifiers/{id}/{action}` | Update Yield Optimization Bid Modifier Status |

> **Note:** The "List Demands" and "List" tools share a truncated name due to the 64-character tool name limit. Use `search_tools` to discover the correct tool.

---

### Yield Optimization API V4 (Distribution) (5 tools)

Manage yield optimization distribution rules.

| Tool Name | Method | Path | Summary |
|-----------|--------|------|---------|
| `sh_1_0_yieldoptimizationservice_searchyieldoptimizationdistribut` | GET | `/services/v4/yield_optimization/distributions` | List Yield Optimization Distributions |
| `sh_1_0_yieldoptimizationservice_createyieldoptimizationdistribut` | POST | `/services/v4/yield_optimization/distributions` | Create Yield Optimization Distribution |
| `sh_1_0_yieldoptimizationservice_getyieldoptimizationdistribution` | GET | `/services/v4/yield_optimization/distributions/{id}` | Get Yield Optimization Distribution |
| `sh_1_0_yieldoptimizationservice_patchyieldoptimizationdistributi` | PATCH | `/services/v4/yield_optimization/distributions/{id}` | Update Yield Optimization Distribution |
| `sh_1_0_yieldoptimizationservice_updateyieldoptimizationdistribut` | PUT | `/services/v4/yield_optimization/distributions/{id}/{action}` | Update Yield Optimization Distribution Status |

> **Note:** The "List Demands" and "List" tools share a truncated name due to the 64-character tool name limit. Use `search_tools` to discover the correct tool.

---

### Yield Optimization API V4 (Margin) (6 tools)

Manage yield optimization margin rules.

| Tool Name | Method | Path | Summary |
|-----------|--------|------|---------|
| `sh_1_0_yieldoptimizationservice_searchyieldoptimizationmargin` | GET | `/services/v4/yield_optimization/margin` | List Yield Optimization Margin |
| `sh_1_0_yieldoptimizationservice_createyieldoptimizationmargin` | POST | `/services/v4/yield_optimization/margin` | Create Yield Optimization Margin |
| `sh_1_0_yieldoptimizationservice_getyieldoptimizationmargin` | GET | `/services/v4/yield_optimization/margin/{id}` | Get Yield Optimization Margin |
| `sh_1_0_yieldoptimizationservice_patchyieldoptimizationmargin` | PATCH | `/services/v4/yield_optimization/margin/{id}` | Update Yield Optimization Margin |
| `sh_1_0_yieldoptimizationservice_searchyieldoptimizationmargindem` | GET | `/services/v4/yield_optimization/margin/{id}/demands` | List Yield Optimization Margin Demands |
| `sh_1_0_yieldoptimizationservice_updateyieldoptimizationmarginsta` | PUT | `/services/v4/yield_optimization/margin/{id}/{action}` | Update Yield Optimization Margin Status |

---

### Yield Optimization API V4 (Prioritization) (6 tools)

Manage yield optimization prioritization rules, including nested inventory prioritizations.

| Tool Name | Method | Path | Summary |
|-----------|--------|------|---------|
| `sh_1_0_yieldoptimizationservice_searchyieldoptimizationprioritiz` | GET | `/services/v4/yield_optimization/prioritizations` | List Yield Optimization Prioritizations |
| `sh_1_0_yieldoptimizationservice_createyieldoptimizationprioritiz` | POST | `/services/v4/yield_optimization/prioritizations` | Create Yield Optimization Prioritization |
| `sh_1_0_yieldoptimizationservice_getyieldoptimizationprioritizati` | GET | `/services/v4/yield_optimization/prioritizations/{id}` | Get Yield Optimization Prioritization |
| `sh_1_0_yieldoptimizationservice_patchyieldoptimizationprioritiza` | PATCH | `/services/v4/yield_optimization/prioritizations/{id}` | Update Yield Optimization Prioritization |
| `sh_1_0_yieldoptimizationservice_updateyieldoptimizationprioritiz` | PUT | `/services/v4/yield_optimization/prioritizations/{id}/{action}` | Update Yield Optimization Prioritization Status |
| `sh_1_0_yieldoptimizationservice_listlinkedyieldoptimization` | GET | `/services/v4/yield_optimization/nested_inventory_prioritization/{nested_prioritization_id}/linked_yield_optimizations` | List Yield Optimizations linked to a Nested Inventory Prioritization |

---

### Yield Optimization API V4 (Volume Cap) (5 tools)

Manage yield optimization volume cap rules.

| Tool Name | Method | Path | Summary |
|-----------|--------|------|---------|
| `sh_1_0_yieldoptimizationservice_searchyieldoptimizationvolumecap` | GET | `/services/v4/yield_optimization/volume_caps` | List Yield Optimization Volume Caps |
| `sh_1_0_yieldoptimizationservice_createyieldoptimizationvolumecap` | POST | `/services/v4/yield_optimization/volume_caps` | Create Yield Optimization Volume Cap |
| `sh_1_0_yieldoptimizationservice_getyieldoptimizationvolumecap` | GET | `/services/v4/yield_optimization/volume_caps/{id}` | Get Yield Optimization Volume Cap |
| `sh_1_0_yieldoptimizationservice_patchyieldoptimizationvolumecap` | PATCH | `/services/v4/yield_optimization/volume_caps/{id}` | Update Yield Optimization Volume Cap |
| `sh_1_0_yieldoptimizationservice_updateyieldoptimizationvolumecap` | PUT | `/services/v4/yield_optimization/volume_caps/{id}/{action}` | Update Yield Optimization Volume Cap Status |

> **Note:** The "List Demands" and "List" tools share a truncated name due to the 64-character tool name limit. Use `search_tools` to discover the correct tool.

---

## Quick Reference: All 302 API Tools by Category

| Category | Count | Notes |
|----------|-------|-------|
| Ad Creative Scheduling API v4 | 2 | See Complete API Tool Reference |
| Ad Unit Node API V3 | 8 | See Complete API Tool Reference |
| Advertiser API V3 | 11 | See Complete API Tool Reference |
| Agency API V3 | 12 | See Complete API Tool Reference |
| Allocation Open API | 6 | See Complete API Tool Reference |
| Audience Item API V4 | 1 | See Complete API Tool Reference |
| Audience Manager | 12 | See Complete API Tool Reference |
| Brand API V3 | 5 | See Complete API Tool Reference |
| Campaign API V3 | 6 | See Complete API Tool Reference |
| Channel Group API V4 | 1 | See Complete API Tool Reference |
| Creative Instance API V4 | 7 | See Complete API Tool Reference |
| Creative Instance Metrics API V4 | 3 | See Complete API Tool Reference |
| Creative Management API V4 | 9 | See Complete API Tool Reference |
| Forecasting API V4 | 5 | See Complete API Tool Reference |
| HyLDA APIs | 2 | See Complete API Tool Reference |
| Insertion Order API V3 | 9 | See Complete API Tool Reference |
| Inventory Package API V4 | 6 | See Complete API Tool Reference |
| Marketplace Creative API V4 | 4 | See Complete API Tool Reference |
| Marketplace Inventory Split API V4 | 1 | See Complete API Tool Reference |
| Marketplace Inventory Split Orders API V4 | 1 | See Complete API Tool Reference |
| Marketplace Listing API V4 | 1 | See Complete API Tool Reference |
| Marketplace Purchased Inventory Orders API V4 | 2 | See Complete API Tool Reference |
| Marketplace Sold Inventory Orders API V4 | 2 | See Complete API Tool Reference |
| Marketplace Supply Source Package API V4 | 2 | See Complete API Tool Reference |
| Partner Tag Creative API V4 | 3 | See Complete API Tool Reference |
| Placement API V3 | 9 | See Complete API Tool Reference |
| Programmatic Client Creative API V4 | 6 | See Complete API Tool Reference |
| Programmatic Creatives | 6 | See Complete API Tool Reference |
| Programmatic Deal Open API | 14 | See Complete API Tool Reference |
| Proposed Ad API V4 | 4 | See Complete API Tool Reference |
| Proposed Insertion Order API V4 | 6 | See Complete API Tool Reference |
| Proposed Placement API V4 | 4 | See Complete API Tool Reference |
| RFP Open API | 4 | See Complete API Tool Reference |
| Reporting API | 3 | See Complete API Tool Reference |
| Restriction API V4 | 1 | See Complete API Tool Reference |
| Site API V4 | 37 | See Complete API Tool Reference |
| Standard Attributes API V4 | 11 | See Complete API Tool Reference |
| TV Network Groups | 1 | See Complete API Tool Reference |
| TV Network List | 1 | See Complete API Tool Reference |
| Vendor Contextual Segment API | 4 | See Complete API Tool Reference |
| Video API V4 | 43 | See Complete API Tool Reference |
| Yield Optimization API V4 | 27 | See Complete API Tool Reference |

---

## Key Differences: V3 vs V4 APIs

| Aspect | V3 APIs | V4 APIs |
|--------|---------|---------|
| **Request Body** | XML string (`body` as string) | JSON object (`body` as object) |
| **Name Search** | Case-sensitive prefix match on word boundaries | Varies by endpoint |
| **Date Filtering** | Range syntax with `..` separator | Varies; some use `updated_at` directly |
| **Response Format** | XML | JSON |
| **Resources** | Advertisers, Agencies, Brands, Campaigns, Insertion Orders, Placements, Ad Unit Nodes | Sites, Site Groups, Site Sections, Creative Instances, Inventory, Deals, Audience Items (V4), Audience Definitions, Segments, Forecasting, Standard Attributes, Videos, Video Groups, Series, Yield Optimization, Proposed IOs/Placements/Ads |

---

## Error Handling Notes

- **422 Error on Forecasting**: Indicates the forecast is still processing. Poll periodically.
- **Placement Activation Errors**: "PlacementID doesn't have a valid creative" can mean: (1) creative not linked to ad, (2) creative instance manually set to INACTIVE, (3) creative service validation found creative `InvalidForUse`.
- **Deep Page Querying**: Creative and Programmatic Creative list endpoints are not intended for queries returning >200,000 results (pages * per_page).
- **Timeouts**: Programmatic Transcode Package and Creative endpoints timeout after 30 seconds.
- **Case Sensitivity**: Marketplace API parameters and values are case-sensitive.
- **Tool Name Truncation**: Some Yield Optimization tools have names truncated to 64 characters, causing "List" and "List Demands" tools to share a name. Use `search_tools` to find the correct variant.
