Home>Connect>ChatGPT Ads to Claude Code

Connect ChatGPT Ads to Claude Code in One Command

By Ahmed Ashraf|Updated October 24, 2026
ChatGPT Ads Claude Code

Run claude mcp add --transport http paidsync https://mcp.paidsync.ai/mcp, type /mcp, and sign in with your PaidSync login. Claude Code then reaches your ChatGPT Ads accounts through 28 tools: reports on campaigns, ad groups and ads, plus creating campaigns, ad groups and chat card ads, and pausing, enabling, updating and archiving what runs. Claude Code asks before it runs each tool.

Build tier. Claude Code can create ChatGPT Ads campaigns, ad groups and ads, and new ad groups start paused until you enable them.

The command

Claude Code talks to remote MCP servers over Streamable HTTP. PaidSync is one of them. Add it once and the same terminal that edits your code can report on and manage your ChatGPT Ads campaigns.

claude mcp add --transport http paidsync https://mcp.paidsync.ai/mcp

By default that registers the server for the current project only. Add --scope user to make it available in every project on your machine. Run claude mcp list to confirm it is there, then start a session and type /mcp to sign in.

5-Step Setup

1

Sign up at paidsync.ai/signup

Takes 10 seconds. Google or email sign-in. The free plan is 15 tasks a month at $0, no card.

2

Connect ChatGPT Ads in the PaidSync dashboard

Click Connect on ChatGPT Ads. Sign in with the OpenAI account that can open your ad account in ChatGPT Ads Manager, then paste your OpenAI Ads API key. Create the key in the Settings of your ad account in ChatGPT Ads Manager at ads.openai.com. Each key connects exactly one ad account, and keys from platform.openai.com are refused. PaidSync encrypts the key at rest.

Already inside Claude Code? Ask it to run connect_openai_ads. The tool returns a link to your PaidSync dashboard, where you paste the key.

3

Pick the ad account Claude Code should work on

Inside a session, list_openai_accounts shows your connected ChatGPT Ads accounts, and set_active_openai_account picks the one Claude Code works on.

4

Add PaidSync to Claude Code

In your terminal, run:

claude mcp add --transport http paidsync https://mcp.paidsync.ai/mcp

Start a session, type /mcp, pick paidsync, and sign in with your PaidSync login in the browser window that opens. Claude Code stores the OAuth token for you. No key is pasted anywhere.

Setting this up for a team? Commit a .mcp.json at the repo root so every engineer gets the same connector:

{ "mcpServers": { "paidsync": { "type": "http", "url": "https://mcp.paidsync.ai/mcp" } } }

Prefer an API key, for example for headless runs? Send it in a header, never in the URL, where it would end up in logs:

claude mcp add --transport http paidsync https://mcp.paidsync.ai/mcp --header "Authorization: Bearer $PAIDSYNC_API_KEY"

In a committed .mcp.json, add "headers": { "Authorization": "Bearer ${PAIDSYNC_API_KEY}" } so the key stays in each engineer's environment and never enters git. Applying a change to Google Ads still requires the OAuth sign-in. On other platforms a key can apply changes too, so treat it like a password and prefer OAuth.

5

Test the connection

In a Claude Code session ask: “Show me my ChatGPT Ads campaigns for the last 7 days with spend, clicks and impressions”

Claude Code returns spend, clicks and impressions for each campaign. The connection is live.

Free plan includes 15 tasks a month. Pro from $99 a month, Team from $249.

Start Free See a Demo

ChatGPT Ads prompts to try in Claude Code

Each prompt below maps to tools in the PaidSync ChatGPT Ads group. Claude Code picks the tool. The last column says whether the call can change anything in the ad account.

AskTools it callsChanges your account?
“List my ChatGPT Ads accounts and make Acme the active one”list_openai_accounts, set_active_openai_accountNo
“Show campaigns for the last 7 days with spend, clicks and impressions”list_openai_campaigns, get_openai_performanceNo
“List every ad group in the Spring Sale campaign with its status”list_openai_adgroupsNo
“Which ads are live right now”list_openai_adsNo
“Pause the Retargeting ad group”pause_openai_adgroupYes, after you confirm
“Create a campaign called Spring Launch with a daily budget”create_openai_campaignYes, after you confirm
“Archive the old Winter campaign”archive_openai_campaignYes, after you confirm

Run it headless with claude -p

The -p flag runs Claude Code without the interactive session. Sign in once through /mcp and the stored OAuth token carries over. A report that lands in a file looks like this:

claude -p "Pull last 7 days ChatGPT Ads performance by campaign and list the campaigns with spend and no clicks." \ --allowedTools "mcp__paidsync" \ --output-format json > reports/chatgpt-ads-$(date +%F).json

Reads run straight through, and so do writes. --allowedTools "mcp__paidsync" allows every PaidSync tool, writes included, with no prompt. For an unattended job, allow only the read tools it needs, each by name as mcp__paidsync__tool_name.

What reads and what writes

PaidSync has 28 ChatGPT Ads tools that read, build and manage. Reads cover accounts, campaigns, ad groups, ads, performance and geo targets. Writes cover creating campaigns, ad groups and chat card ads, uploading creative images, and pausing, enabling, updating and archiving campaigns, ad groups and ads. Creates and updates preview by default with dry_run, and pauses, enables and archives need an explicit confirm.

Over MCP, the approval step is Claude Code’s own prompt. It asks before it runs a tool unless you allowed it with --allowedTools or in your settings. PaidSync adds checks on its side. Deletes, pauses and budget changes need confirm_destructive, and a pre-write rule check blocks unsafe arguments. The approval card, and Undo on an applied card whose change has a safe inverse, apply only in the PaidSync workspace.

What Claude Code cannot do on ChatGPT Ads

  • Video creative is not exposed as a tool. Image creative uploads with upload_openai_creative_image.
  • There are no audience management tools. Audience setup stays in ChatGPT Ads Manager.
  • There are no billing or payment changes. Budgets yes, payment methods never.
  • Archiving is permanent, so Claude Code says so before it runs.
  • Building a campaign with three ad groups is four separate tasks, one object per task.

Frequently Asked Questions

How do I connect ChatGPT Ads to Claude Code?

Sign up at paidsync.ai, connect ChatGPT Ads in the dashboard, then run claude mcp add --transport http paidsync https://mcp.paidsync.ai/mcp in your terminal. Type /mcp inside a session, pick paidsync, and sign in with your PaidSync login.

Can Claude Code create ChatGPT Ads campaigns?

Yes. ChatGPT Ads is a build tier platform in PaidSync. Claude Code can create a campaign, its ad groups and chat card ads, and upload creative images. The creates preview as a dry run first.

Where do I get the OpenAI Ads API key?

Create it in the Settings of your ad account in ChatGPT Ads Manager at ads.openai.com. Each key connects exactly one ad account, so connect one key per account. Keys from platform.openai.com are refused for ads.

Does it work in headless mode with claude -p?

Yes. Once you have signed in through /mcp, claude -p reuses the stored OAuth token. Reads run straight through. Writes need care. No one is there to answer the Claude Code prompt, so any write tool you allowed with --allowedTools runs straight through. For an unattended job, allow only the read tools it needs.

Is it free?

Yes. The free plan is $0 for 15 tasks a month with no card. Pro starts at $99 a month and Team at $249 a month.

ChatGPT Ads reports and campaign builds. One command in Claude Code.