# Connect Claude Duet to Apogee's MCP server: setup, checks, limits and errors

https://www.apogee.ad/developers/mcp/claude-duet/ (Markdown: https://www.apogee.ad/developers/mcp/claude-duet.md). Updated 2026-11-03.

Claude Duet (the Duet app [iPhone, Android] and claude.ai) connects to Apogee's MCP server at `https://app.apogee.ad/mcp` with Apogee's sign-in (OAuth). It then works on your Meta, TikTok and Snapchat ad accounts through Apogee's 80 tools: it reads freely, and launches or changes ads only after your explicit yes to a recap.

## At a glance

- Server URL: `https://app.apogee.ad/mcp`
- Transport: Streamable HTTP, stateless: every request is a `POST` answered with JSON.
- Sign-in: Apogee's sign-in (OAuth 2.1 with PKCE): the assistant opens Apogee's page, you log in and click **Authorize**.
- Scopes: **Read** (`read`), **Launch** (`launch`), **Actions** (`actions`): ticked on Apogee's page when Claude Duet signs in; untick what it should not do ([scopes](https://www.apogee.ad/developers/authentication/#scopes)).
- Apogee plan: [Pro, Growth or Scale](https://www.apogee.ad/en/pricing/) (not Starter)
- Server instructions: On connection, Apogee tells Claude Duet how to launch: the interview, the recap, your yes ([read them](https://www.apogee.ad/developers/mcp/#instructions)).

## Set it up

1. Add Apogee to Claude first: **Customize → Connectors**, **+ Add → Add custom connector**, name it Apogee, paste `https://app.apogee.ad/mcp` and click **Continue**.
2. Authentication **Sign in now**, OAuth client **Use Claude's published identity (Recommended)**, then **Add**. Log in to Apogee on the page that opens and click **Authorize**.
3. Open Claude Duet with the same Claude account: it works with the connectors already added in Claude.
4. Give it a recurring task in plain words (the agent prompts below), follow it in **Tasks**, and answer its requests with **Approve** or **Not now**.

Notes:

- Duet asks before it sends, pays, signs or deletes, and Apogee waits for your yes on every recap: a launch or a change needs both. A request you leave unanswered waits in Tasks.
- Outside the United States: in Claude, **Scheduled → New task** runs the same prompt on a schedule (hourly, daily, weekdays, weekly) with the connectors you added.
- Anthropic does not say in so many words that Duet uses a custom connector: if Apogee is missing in Duet, check that it is connected in Customize → Connectors.

Written from: [Claude Help Center: get started with Claude Duet](https://support.claude.com/en/articles/17631495-get-started-with-claude-duet), [Claude Help Center: custom connectors](https://support.claude.com/en/articles/11175166-get-started-with-custom-connectors-using-remote-mcp), [Claude Help Center: scheduled tasks](https://support.claude.com/en/articles/13854387-schedule-recurring-tasks-in-claude-cowork).

## Plans

- **On Claude Duet's side:** Pro, Max and Ultra, in the United States, from the waitlist (preview). Elsewhere, Claude's scheduled tasks run the same recurring prompts.
- **On Apogee's side:** the Pro, Growth or Scale plan includes the MCP server, with credits every month (10,000 on Pro, 30,000 on Growth, 100,000 on Scale); Starter does not. A 7-day trial for €1 includes a quarter of the plan's credits ([plans](https://www.apogee.ad/en/pricing/), [credits](https://www.apogee.ad/developers/credits/)).
- **Your ad accounts** connected in the Apogee app (Meta, TikTok or Snapchat): Claude Duet sees exactly what your Apogee account sees.

## Check the connection

Ask Claude Duet, in your own words:

1. "Which Apogee account are you connected to, and with which scopes?" Claude Duet calls [`whoami`](https://www.apogee.ad/developers/mcp/whoami/): the Apogee account this connection acts as, the credential used (an assistant's connection or an API key) and its scopes.
2. "List my Meta ad accounts on Apogee, then my TikTok and Snapchat ones." Claude Duet calls [`list_ad_accounts`](https://www.apogee.ad/developers/mcp/list-ad-accounts/), with `platform` set to `tiktok` or `snapchat` for the others. An empty list means no ad account of that platform is connected in the Apogee app.

Both are reads: free within the daily free reads, nothing changes. If Claude Duet does not find Apogee's tools, check that Apogee is turned on where the last step above says.

From a terminal: Without a credential the server answers `401` with a `WWW-Authenticate` header pointing to `https://app.apogee.ad/.well-known/oauth-protected-resource/mcp`: that is where OAuth discovery starts.

```bash
curl -i -X POST https://app.apogee.ad/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
```

## What it can do

Claude Duet gets Apogee's 80 tools, filtered by the scopes of its connection: a tool outside them is not even listed.

- **Read** (`read`, 54 tools): Read ad accounts, campaigns, ad sets, ads and their numbers on Meta, TikTok and Snapchat, the comments of your ads and the Bridge's stats; follow imports, launches and transfers (nothing is sent). For example: [`whoami`](https://www.apogee.ad/developers/mcp/whoami/), [`list_ad_accounts`](https://www.apogee.ad/developers/mcp/list-ad-accounts/), [`get_account_overview`](https://www.apogee.ad/developers/mcp/get-account-overview/), [`get_top_performers`](https://www.apogee.ad/developers/mcp/get-top-performers/), [`get_platform_overview`](https://www.apogee.ad/developers/mcp/get-platform-overview/), [`get_launch_questions`](https://www.apogee.ad/developers/mcp/get-launch-questions/).
- **Launch** (`launch`, 9 tools): Import and upload creatives, prepare and launch ads, run Bridge transfers, create a campaign. For example: [`import_link`](https://www.apogee.ad/developers/mcp/import-link/), [`prepare_launch`](https://www.apogee.ad/developers/mcp/prepare-launch/), [`launch`](https://www.apogee.ad/developers/mcp/launch/), [`prepare_bridge_transfer`](https://www.apogee.ad/developers/mcp/prepare-bridge-transfer/), [`execute_action`](https://www.apogee.ad/developers/mcp/execute-action/).
- **Actions** (`actions`, 18 tools): Pause, activate, change budgets and targeting, duplicate, create ad sets and ads from existing posts. For example: [`pause_ad`](https://www.apogee.ad/developers/mcp/pause-ad/), [`update_budget`](https://www.apogee.ad/developers/mcp/update-budget/), [`execute_action`](https://www.apogee.ad/developers/mcp/execute-action/).

By effect: 54 only read; 19 prepare a plan or an action; 4 write in Apogee only and 3 change the ad account, after your yes. Every tool, its parameters and its cost: [all the tools](https://www.apogee.ad/developers/mcp/#tools).

## Prompts to start with

Replace the [brackets] with your own names. Each prompt ends with Apogee's safety reminder: "Create everything paused, and show me the full recap before you create anything." or "Show me each change and wait for my yes before you make it."

### Every morning, yesterday on every platform with a CPA alert (personal agent)

Yesterday on Meta, TikTok and Snapchat, each platform on its own, in a few lines on your phone, and an alert when a platform's CPA drifts. Read only.

```text
Every morning at [time], send me yesterday on Meta ([Meta ad account]), TikTok ([TikTok ad account]) and Snapchat ([Snapchat ad account]), each platform on its own: spend, CPA, ROAS, and the 3 best and 3 worst ads. Alert me when a platform's CPA is more than [threshold]% above its 7-day average, and say which ads moved it. Never add the platforms together. If something should change, propose it: Show me each change and wait for my yes before you make it.
```

What it asks you: Your targets once, when Apogee does not know them yet (it can remember them in your business profile).

Note: As a recurring task: Claude Duet, Dots, Grok Bot. It only reads: nothing to approve.

### Every evening, the ads that burn budget paused after your OK (personal agent)

Your own rule applied every evening on Meta and TikTok: the agent finds the ads that match it, prepares their pause and asks you. Nothing is paused without your yes.

```text
Every evening at [time], find the ads of [ad account] that spent more than [multiple]× my target CPA without a purchase over the last [days] days, on Meta and TikTok. Prepare their pause and send me the list (name, platform, spend, why). Show me each change and wait for my yes before you make it.
```

What it asks you: Your target CPA once, when Apogee does not know it yet. The list of ads to pause, with what will change, and your yes (all of them, or the ones you name).

Note: As a recurring task: Claude Duet, Dots, Grok Bot. Nothing is paused before you approve the list.

### Every morning, your new creatives launched (personal agent)

A personal agent checks your "to launch" folder every morning, prepares the launch with your naming convention, and asks you before anything is created. You answer from your phone.

```text
Every weekday at [time], check my Google Drive folder [folder link]. If there are creatives that are not launched yet, prepare a launch in my [campaign] campaign of [ad account], one ad set per concept, with my naming convention and the settings of the latest ad set launched there. Send me the full recap and wait for my yes before you launch. If there is nothing new, say nothing. Create everything paused, and show me the full recap before you create anything.
```

What it asks you: The first time: the launch interview's open questions, one topic at a time. Afterwards it reuses your answers. Each morning with something new: the whole recap (ads ← files, ad sets, texts, budget, status) and your yes.

Note: As a recurring task: a personal agent that runs on its own and asks before acting (Claude Duet, Dots, Grok Bot). In a chat, ask it once.

## Guardrails and limits

The server enforces them, whatever Claude Duet is told:

- **Your yes before anything changes.** A launch is [`prepare_launch`](https://www.apogee.ad/developers/mcp/prepare-launch/), the recap, then [`launch`](https://www.apogee.ad/developers/mcp/launch/); a change is an action tool, then [`execute_action`](https://www.apogee.ad/developers/mcp/execute-action/); a Bridge transfer is [`prepare_bridge_transfer`](https://www.apogee.ad/developers/mcp/prepare-bridge-transfer/), then [`bridge_transfer`](https://www.apogee.ad/developers/mcp/bridge-transfer/). Nothing is created, changed or transferred before your explicit yes to the whole recap.
- **Ads are created paused** unless you ask otherwise.
- **A prepared plan or action is valid 24 hours** and runs once.
- **Daily budget cap:** a daily budget above 500 in the ad account's currency is refused ([`budget_above_cap`](https://www.apogee.ad/developers/errors/#budget_above_cap)).
- **25 launches and Bridge transfers** per ad account in 24 hours through the MCP and the API.
- **2,000 units** per assistant connection or API key in 24 hours: a read 1, a change 2, Apogee's AI 5, a launch or a transfer 10.
- **MCP requests:** 600 on Pro, 1,200 on Growth and Scale per 15 minutes ([rate limits](https://www.apogee.ad/developers/rate-limits/)).
- **Credits:** reads are free up to 5,000 on Pro, 10,000 on Growth and Scale a day; a change on an ad platform, an ad created and Apogee's AI cost credits, only when they succeed ([credits](https://www.apogee.ad/developers/credits/)).
- **Each platform on its own:** Meta, TikTok and Snapchat keep their own currency and attribution; Apogee never adds them up.

## Errors and fixes

A refused tool call comes back to Claude Duet as a result with `isError: true` and the reason in words, so it can tell you what to do. The common ones:

- [`401`](https://www.apogee.ad/developers/errors/#invalid_api_key): Apogee needs authentication, or every call fails
  The sign-in was disconnected in Apogee, or its refresh token (valid 60 days) expired: connect again from the authorization step. An access token lasts 1 hour and Claude Duet renews it on its own.
- Claude Duet sees Apogee but says it cannot launch or change anything
  The connection lacks a [scope](https://www.apogee.ad/developers/authentication/#scopes), so those tools are not listed. Connect again and keep **Launch** and **Actions** ticked on Apogee's page.
- [`403 upgrade_required`](https://www.apogee.ad/developers/errors/#upgrade_required)
  The Apogee account is not on a plan with the MCP. It works again as soon as the account is on Pro, Growth or Scale.
- [`402 credits_exhausted`](https://www.apogee.ad/developers/errors/#credits_exhausted)
  This month's credits and the credit packs are used: buy a pack ([credits](https://app.apogee.ad/settings/credits)) or wait for the 1st of the month (UTC). Reads go on.
- [`429`](https://www.apogee.ad/developers/errors/#rate_limited) `rate_limited`, `quota_exceeded`, `daily_read_cap`
  A limit of the list above is reached: wait the seconds the answer gives ([rate limits](https://www.apogee.ad/developers/rate-limits/)).
- [`412 meta_not_connected`](https://www.apogee.ad/developers/errors/#meta_not_connected), `platform_not_connected`
  Apogee's own Facebook, TikTok or Snapchat connection expired, not Claude Duet's: log in to the Apogee app again, or reconnect the platform there.
- [`410 plan_expired`](https://www.apogee.ad/developers/errors/#plan_expired), `409 plan_already_launched`
  The recap was prepared more than 24 hours earlier, or already ran: ask Claude Duet to prepare it again.
- [`409 same_error_again`](https://www.apogee.ad/developers/errors/#same_error_again)
  The last launches on this ad account failed with the same error: fix its cause (the platform's message says what), then tell Claude Duet it is fixed.

Every code: [errors](https://www.apogee.ad/developers/errors/).

## Disconnect

- **In Apogee:** Settings → Personal agents → **Connected agents**, then **Disconnect** next to Claude Duet. It loses access at once; ads already launched are not touched, and you can connect it again at any time.
- **In Claude Duet:** remove Apogee where you added it.

## Guides and related pages

- [Claude Duet for Meta Ads: your AI media buyer on TikTok and Snap too](https://www.apogee.ad/en/blog/claude-duet-meta-ads/) (English) · [Claude Duet et Meta Ads : votre media buyer IA, TikTok et Snap inclus](https://www.apogee.ad/blog/claude-duet-meta-ads/) (Français) · [Claude Duet y Meta Ads: su media buyer con IA, TikTok y Snap incluidos](https://www.apogee.ad/es/blog/claude-duet-meta-ads/) (Español)
- [Meta Ads MCP: run your ads from Claude, ChatGPT or Cursor](https://www.apogee.ad/en/blog/meta-ads-mcp/): the options for a Meta Ads MCP, compared
- Same vendor: [Claude](https://www.apogee.ad/developers/mcp/claude/), [Claude Code](https://www.apogee.ad/developers/mcp/claude-code/)
- [The MCP server](https://www.apogee.ad/developers/mcp/): how a launch works, every tool, prompt templates
- [Authentication](https://www.apogee.ad/developers/authentication/): API keys, OAuth, scopes
- [Every assistant, for AI agents](https://www.apogee.ad/developers/llms.txt)