> ## 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.

# Manage provider accounts on an advertiser

> Link, unlink, and configure provider accounts for an advertiser via the v3 MCP surface

The v3 `save_advertiser` tool exposes account-mapping operations that connect provider accounts (Meta, Google Ads, TikTok, and others) to an advertiser. Use these operations when configuring a campaign so that media buys route to the right provider account.

## Link a provider account

Supply `assignAccount` with `advertiserId` to create a new link. `accountId` is the provider account ID returned by account discovery — it is an arbitrary string (e.g. `"act_123456789"` or `"acc_acme_pinnacle"`). `credentialId` is optional and, when supplied, must be the numeric-string credential ID from account discovery — it is required only when the same seller storefront exposes more than one credential:

```json theme={null}
{
  "name": "save_advertiser",
  "arguments": {
    "advertiserId": "8847",
    "assignAccount": {
      "partnerId": "1731",
      "accountId": "act_123456789"
    }
  }
}
```

The response includes the stable `linkId` needed to modify or remove the link.

## Remove a provider account link

Supply `unassignAccount` with the `linkId` returned by a prior assignment or by `get(kind:"advertiser", include:["accounts"])`:

```json theme={null}
{
  "name": "save_advertiser",
  "arguments": {
    "advertiserId": "8847",
    "unassignAccount": { "linkId": "55" }
  }
}
```

## Set or clear a reporting bucket

`updateReportingBucket` configures a customer-owned object-storage bucket to receive offline delivery reports, or clears one already set:

```json theme={null}
{
  "name": "save_advertiser",
  "arguments": {
    "advertiserId": "8847",
    "updateReportingBucket": {
      "linkId": "55",
      "bucket": {
        "protocol": "s3",
        "bucket": "my-org.adcp.reports",
        "region": "us-east-1",
        "format": "jsonl",
        "compression": "gzip",
        "file_retention_days": 30
      }
    }
  }
}
```

Set `bucket: null` to clear a previously configured bucket.

## Read linked accounts inline

Include `"accounts"` in the `include` array when reading an advertiser to receive linked accounts in the same response:

```json theme={null}
{
  "name": "get",
  "arguments": {
    "kind": "advertiser",
    "id": "8847",
    "include": ["accounts"]
  }
}
```

The response includes an `accounts` array with `linkId` and `advertiserId`, plus `accountsTotal` for the untruncated count. Provider-supplied fields are excluded from the response.

## Preview a brand domain

Use `resolveBrand` to check what domain a brand resolves to before linking it to a new advertiser. Supply the domain alone with no other fields:

```json theme={null}
{
  "name": "save_advertiser",
  "arguments": {
    "resolveBrand": "nike.com"
  }
}
```

The response `structuredContent` has the shape `{action: "brand_resolved", brand: {domain, resolved}}`. No advertiser is created or modified. This operation is also available to seller workspaces with `own_supply_campaigns` capability.

## Constraints

* Each call may supply at most one account-mapping operation (`assignAccount`, `unassignAccount`, or `updateReportingBucket`).
* Account-mapping operations require `advertiserId` and a buyer account (or seller with `own_supply_campaigns` for `resolveBrand`).
* These operations cannot be combined with advertiser field updates (`name`, `brand`, `primaryCurrency`, etc.) in a single call.
