MCP

ChatGPT Ads MCP server: manage the OpenAI Ads API from Claude, Codex or Cursor

TL;DR

ChatGPT Ads has no MCP server published by OpenAI that we could find at the time of writing (November 2026); community-built servers wrap the same API with your own key. This guide covers a hosted setup: connect the ad account once on Integrations, then any MCP client reaches it with an Agent Planners key, with creates always paused and spend decisions held for a person.

What already exists for this platform

ChatGPT Ads is managed through the OpenAI Ads API (api.ads.openai.com/v1), authenticated with an Ads API key created in ChatGPT Ads Manager. At the time of writing we found no MCP server published by OpenAI itself; open-source servers built by third parties wrap the API and run with your key on your own machine.

  • One key, one ad account. Each request names its ad account; a key reaches only the account it was made for (our live check: another account's id answered 403).
  • Spend is real from the first call that turns something on. The API's own defaults are not a safety layer — what a wrapper sends is what runs.

What a hosted layer adds

A direct API wrapperAgent Planners MCP
ChatGPT Ads toolsWhatever the wrapper exposes21 reads, 16 writes
Where the key livesIn your client's configEncrypted on our server; your MCP key never carries it
Account bindingYour own disciplineEvery request carries the selected ad account
CreatesAs sentCampaigns, ad groups and ads always created paused
Turning spend on, archiving, audience members, spend limitsApplied when calledHeld for a person on every key mode
MoneyWhatever unit you sendWhole account currency in and out; a raw micro value is refused
Other platforms in the same sessionNoEvery other platform the workspace connected, on one endpoint
Counted from the tool registry. A key only sees the writes if it carries tools:write; a key that lists tools on demand reaches them through search_tools and call_tool.

How to configure it

  1. 1In ChatGPT Ads Manager, open Settings → API keys and create a key for the ad account.
  2. 2On Integrations, press Connect with an API key on the ChatGPT Ads card, paste the key and press Check and save. It is checked with OpenAI first and stored encrypted.
  3. 3Create a key in API & MCP: tools:read for reporting, add tools:write for changes.
  4. 4Add the server to Claude Code, Claude Desktop, Codex or Cursor with the snippet below, run describe_permissions, then chatgpt_ads__list_ad_accounts and scope each call with that account.
bash
claude mcp add --transport http agent-planners https://www.agentplanners.com/api/mcp \
  --header "Authorization: Bearer ap_live_…"
Every client's setup, including OAuth sign-in without a key: MCP setup guide.

What waits for a person, whatever the key allows

A tools:write key's ordinary writes — budgets, bids, targeting, ad copy, a paused build — either run inside the workspace's guardrails or queue for an admin, depending on how the key was minted. These never run on the key's say-so: they are held in the approval queue and an admin or editor is emailed.

  • Turning a campaign, ad group or ad on — that is when spend starts.
  • Archiving, which the API cannot undo.
  • Adding or removing audience members (hashed on our server before they are sent).
  • Spend-limit changes through the generic gateway.
Deletes, API-key management and lead webhooks are refused outright. The Ads API has no delete; pause is the stop.

What we measured on a live account

  • The minimum daily budget was $25 on the account we connected; a lower value is refused by the API.
  • Insights report spend as decimals, and ad rows do not carry their ad group id — read ads per ad group when you need the pairing.
  • A new audience is not ready for members at once; adding members right after creating it can fail for a while.

Frequently asked questions

Is there an official ChatGPT Ads MCP server?
We could not find one published by OpenAI at the time of writing (November 2026). Community-built servers wrap the OpenAI Ads API with your own key; a hosted server like this one stores the key encrypted and holds spend decisions for a person.
How do I connect Claude to ChatGPT Ads?
Connect the ad account with an Ads API key on Integrations, create an Agent Planners API key, add the MCP endpoint to Claude Code or Claude Desktop, and call chatgpt_ads__list_ad_accounts to get the account to scope each call with.
Can an MCP client turn on spend in ChatGPT Ads?
Not on its own. Everything is created paused, and turning a campaign, ad group or ad on is held for a person on every key mode.
Put a human-approved agent on your ad ops

Start free — 2,500 credits a month, no credit card. Reads run at once; by default every write waits for your approval.

Related reading