> ## Documentation Index
> Fetch the complete documentation index at: https://docs.interchange.io/llms.txt
> Use this file to discover all available pages before exploring further.

# v3 Tool Catalog

> The stable tool families exposed by the account-resolved v3 MCP endpoint.

<Note>
  `tools/list` is authoritative for the active account. Enrollment, account
  kind, permissions, feature rollout, and host support can narrow the catalog.
  This page explains the complete registered families and intended use.
</Note>

## Navigation and shared tools

| Tool                       | Accounts             | Purpose                                                                        |
| -------------------------- | -------------------- | ------------------------------------------------------------------------------ |
| `get_status`               | Every account        | Read active account, readiness, blockers, next actions, and reachable accounts |
| `switch_account`           | Every account        | Move to a reachable account or return home                                     |
| `save_ask`                 | Every account        | File or update support, product, supply, integration, or commercial asks       |
| `save_notification_config` | Shared, when enabled | Save typed notification thresholds and preferences                             |
| `search`                   | Buyer and Seller     | Search supported kinds, documentation, or the AdCP specification               |
| `get`                      | Buyer and Seller     | Read an object or singleton plus supported includes                            |
| `open_page`                | Buyer and Seller     | Open an account-appropriate MCP App Page                                       |

## Plan and billing

| Tool                            | Accounts         | Purpose                                     |
| ------------------------------- | ---------------- | ------------------------------------------- |
| `get_plan_billing_account`      | Buyer and Seller | Read plan, agreement, and billing readiness |
| `accept_plan_billing_tos`       | Buyer and Seller | Record authorized Terms acceptance          |
| `set_plan_billing_payout_payee` | Buyer and Seller | Launch the governed payout-payee flow       |

Legal acceptance and payout changes remain authorization-sensitive even though
they are exposed through the shared contract. Follow the tool response and Page
requirements; never pass bank details through free text.

## Buyer tools

| Tool                       | Purpose                                                                             |
| -------------------------- | ----------------------------------------------------------------------------------- |
| `save_advertiser`          | Create or patch an advertiser                                                       |
| `save_campaign`            | Create, patch, pause, archive, reactivate, or explicitly launch a campaign          |
| `save_creative`            | Create, update, or archive a creative                                               |
| `save_creative_collection` | Manage a non-executable creative grouping and membership                            |
| `request_proposals`        | Ask up to ten ready sellers for proposals or products against one campaign revision |
| `save_media_buy`           | Accept a proposal, stage returned products, or update a draft media buy             |

Buyer `search` and `get` kinds include the account's advertisers, campaigns,
creatives, creative collections, proposals, media buys, sellers, asks, and
other kinds advertised by the live schema. Follow the
[Buyer workflows](/v2/setup/v3/buyer-workflows) page for sequencing.

## Seller tools

| Tool                           | Purpose                                                                                     |
| ------------------------------ | ------------------------------------------------------------------------------------------- |
| `save_seller`                  | Patch Seller identity, setup intent, and declared capabilities                              |
| `save_inventory_source`        | Create or update an inventory source without model-visible credentials                      |
| `save_coverage`                | Add or remove declared publisher domains and property claims                                |
| `save_wholesale_product`       | Create or update a wholesale product                                                        |
| `save_media_kit`               | Deprecated compatibility write; new clients author the Discovery Card through `save_seller` |
| `save_playbook`                | Save selling guidance and house-discount declarations                                       |
| `save_business_rules`          | Save acceptance and operating rules                                                         |
| `save_advertiser_instructions` | Save instructions scoped to a buyer or advertiser relationship                              |
| `save_signal`                  | Create or update a seller signal                                                            |
| `save_work_item`               | Complete or update a typed item from the unified work queue                                 |
| `get_delivery`                 | Query seller-reported delivery or cumulative margin                                         |

Seller `search` and `get` kinds include the Seller singleton, inventory sources,
coverage, wholesale products, playbook, business rules, media buys, work items,
signals, asks, and other kinds advertised by the live schema. Follow the
[Seller workflows](/v2/setup/v3/seller-workflows) page for sequencing.

## MCP App and resource-bound tools

These tools support interactive Pages or resources. A compliant host may keep
some of them out of model context and invoke them only through the associated
app contract.

| Tool                                     | Account | Purpose                                          |
| ---------------------------------------- | ------- | ------------------------------------------------ |
| `create_feed_modular_inventory_source`   | Seller  | Open the modular-source creation Page            |
| `seller_approvals_page`                  | Seller  | Operate approval actions that remain interactive |
| `get_modular_inventory_source_readiness` | Seller  | Read resource-bound modular readiness            |
| `prepare_modular_source`                 | Seller  | Prepare a modular source from its Page flow      |
| `get_inventory_feed_context`             | Seller  | Read inventory-feed context                      |
| `preview_inventory_feed`                 | Seller  | Validate and preview an inventory feed           |
| `commit_inventory_feed`                  | Seller  | Commit a reviewed inventory feed                 |
| `seller_notification_page`               | Seller  | Open Seller notification settings                |
| `buyer_notification_page`                | Buyer   | Open Buyer notification settings                 |

## Core read examples

List objects:

```json theme={null}
{ "kind": "campaign", "query": "autumn", "limit": 25 }
```

Read one object with related detail:

```json theme={null}
{
  "kind": "campaign",
  "id": "CAMPAIGN_ID",
  "include": ["mediaBuys", "creatives"]
}
```

Campaign `proposals`, `recentActivity`, `deliverySummary`, and `sourceIdentity`
are accepted include names so the API can return a precise
`unavailableIncludes` explanation, but they are not populated in the preview.

Search documentation:

```json theme={null}
{
  "query": "how does publisher authorization work?",
  "sources": ["docs"]
}
```

Read a selected documentation result by its returned `document` path:

```json theme={null}
{
  "query": "how does publisher authorization work?",
  "document": "storefront/inventory-sources/publisher-properties-coverage",
  "sources": ["docs"]
}
```

Arbitrary web URLs and internal repository paths are not readable through the
documentation search contract.

## Read structured results

Every tool returns MCP `content` for a person or model to read. Integrations
should make decisions from `structuredContent`. `tools/list` is authoritative
for inputs and publishes an output schema where the current tool declares one;
the patterns below cover the remaining preview tools.

| Tool family         | Stable result pattern                                                                                                                              |
| ------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- |
| `search`            | A kind-specific object block with `results`, counts, `hasMore`, and an opaque `nextCursor` when another page exists                                |
| `get`               | `{ kind, object }`, plus requested related data and `unavailableIncludes` when an accepted include cannot be populated                             |
| `save_<noun>`       | `action` plus the saved noun or its ID; versioned nouns return the revision needed for the next guarded write                                      |
| `request_proposals` | `executionId`, `status`, `perSeller`, and a summary; each seller outcome carries Proposal IDs, a `productQueryId` and products, or a bounded error |
| `get_delivery`      | Report rows, coverage and finality metadata, warnings, and pagination state                                                                        |

Do not parse IDs, revisions, actions, or recovery guidance out of rendered
prose. A write may return `action: "unchanged"`; that is a successful
idempotent outcome. On partial work, preserve `partialWrite`, `warnings`,
`errors`, per-seller or per-source outcomes, and any returned current revision.
`request_proposals.status` can be `running` when another caller is already using
the same idempotency key; retry that same key until it becomes `complete`,
`partial`, or `failed`.

For example, a successful advertiser creation returns the new identity under
the noun rather than as an unlabelled string:

```json theme={null}
{
  "action": "created",
  "advertiser": {
    "advertiserId": "ADVERTISER_ID",
    "name": "Acme Europe",
    "primaryCurrency": "EUR"
  }
}
```

`request_proposals` returns enough state to continue each seller branch:

```json theme={null}
{
  "executionId": "EXECUTION_ID",
  "status": "partial",
  "perSeller": [
    {
      "sellerId": "10",
      "status": "quoted",
      "proposalIds": ["sfp1:QUALIFIED_PROPOSAL_ID"]
    },
    {
      "sellerId": "24",
      "status": "failed",
      "error": { "code": "UPSTREAM_ERROR", "message": "..." }
    }
  ],
  "summary": {
    "sellersRequested": 2,
    "sellersQuoted": 1,
    "sellersWithProducts": 0,
    "sellersResponded": 1,
    "sellersFailed": 1
  }
}
```

These examples show the continuation fields, not every property. Treat the
live output schema as authoritative as the preview evolves.

## Errors and result handling

Tool errors use bounded structured codes and explanatory text. Common classes
include validation errors, access denial, not found, revision conflict,
unsupported preview behavior, external failure, and partial results.

* Treat `isError: true` as a failed tool result even when the MCP transport
  itself returned successfully.
* Preserve structured IDs and recovery fields; do not parse prose to recover an
  identifier already present in `structuredContent`.
* A partial result is not an empty result. Read its warnings, coverage, and
  per-source or per-seller outcomes.
* Re-read after any response that reports a partial write.

For transport-wide behavior, see [Errors](/v2/reference/errors),
[Rate Limits](/v2/reference/rate-limits), and
[Preview limitations](/v2/setup/v3/limitations).
