ChatGPT Ads MCP · Updated September 5, 2026
ChatGPT Ads MCP Server: run your OpenAI Ads Manager campaigns from Claude or ChatGPT
Paste one link into Claude or ChatGPT, connect your OpenAI Ads Manager account, and your AI can read and manage ads in ChatGPT — campaigns, ad groups, context hints, creatives, spend and clicks. Nothing to install, about a minute of setup. Everything below the link is the full reference for you and your AI agent.
https://connector.get-ryze.ai/mcp- 01Copy your MCP link:
https://connector.get-ryze.ai/mcp - 02In Claude go to Settings → Connectors → Add custom connector. Name it Ryze AI, paste the link, click Add. In ChatGPT it is Settings → Apps → Create app.
- 03Click Connect, sign in with Ryze AI, pick your workspace. Open a new chat and ask: “Show spend, clicks and CTR by ChatGPT Ads campaign this month.”
01 — Overview
What this ChatGPT Ads MCP server does
The short version
- One URL,
https://connector.get-ryze.ai/mcp, works in Claude, ChatGPT, Claude Code, Cursor and any MCP client. - Connect OpenAI Ads Manager once with OAuth. No API keys to rotate, no SDK, no Python, no server to run.
- 5 OpenAI Ads tools: 2 read (any resource, aggregated insights) and 3 write, each approval-gated — create and update, archive, and image upload.
- Same endpoint carries Google Ads, Meta Ads, TikTok, GA4, Search Console and Shopify — 150+ tools in total.
- Free to connect. Paid Ads Autopilot is $89/mo flat if you want Ryze AI to run the optimizations for you.
- Server name
- Ryze AI (ChatGPT Ads MCP)
- Endpoint
- https://connector.get-ryze.ai/mcp
- Transport
- Remote MCP over Streamable HTTP
- Auth
- OAuth 2.0 (Ryze sign-in; OpenAI Ads connected once per workspace)
- Hosting
- Hosted by Ryze AI — nothing to install or run
- OpenAI Ads tools
- 5 (2 read · 3 write, approval-gated)
- Also on this endpoint
- Google Ads, Meta Ads, TikTok, GA4, Search Console, Shopify — 150+ tools
- API key
- Not required
- Price
- Free to connect · Paid Ads Autopilot $89/mo flat
- Updated
- September 5, 2026
MCP (Model Context Protocol) is the open standard AI assistants use to call external tools. A ChatGPT Ads MCP server turns your OpenAI Ads Manager account — the platform that serves ads below relevant ChatGPT conversations — into a set of those tools, so an assistant can pull spend by campaign, tune context hints or draft and pause an ad from a chat instead of ads.openai.com. There is no self-hosted community server for OpenAI Ads yet; the choice is this hosted connector, the raw Ads API in your own code, or the Ads Manager UI. The comparison further down covers each.
/01
Managed OAuth
Connect OpenAI Ads Manager once in Ryze; tokens are stored and refreshed server-side. No API keys in config files, nothing to rotate.
/02
Read any resource
read fetches the ad account, campaigns, ad groups, ads and conversion events with cursor paging — the same objects you see in Ads Manager.
/03
Aggregated insights
insights returns impressions, clicks, spend, CTR, CPC and CPM at account, campaign, ad-group or ad level, daily or totalled, with filters and sorting.
/04
Approval-gated writes
write creates and updates campaigns, ad groups and ads, and activates or pauses them, through per-tool approval. Archiving is a separate, explicit tool.
/05
Context hints and bids
Set the conversation topics an ad group should appear against and its max CPC or CPM bid in micros — the two levers that decide where ads in ChatGPT show.
/06
Creative upload
uploadFromUrl turns a public image URL into a reusable file_id for an ad's creative, so the assistant can ship a new ad end to end.
/07
Reversible by default
Pause and resume live under write; the irreversible archive state lives under delete and only runs on an explicit approved list.
/08
Seven platforms, one URL
The same endpoint carries Google Ads, Meta Ads, TikTok, GA4, Search Console and Shopify toolsets — one login instead of seven servers.
02 — Tool reference
The 5 ChatGPT Ads tools
The tools mirror the OpenAI Ads API: read and insights take a resource path, write takes a path and a body. Money is in micros — a $1,500 lifetime budget is 1500000000 — and budgets are lifetime caps (lifetime_spend_limit_micros), not daily. Write tools are approval-gated.
| Tool | Access | What it does | Key parameters |
|---|---|---|---|
read | read | GET any OpenAI Ads resource: /ad_account, /campaigns, /campaigns/{id}, /ad_groups?campaign_id=…, /ads?ad_group_id=…, conversion events. Cursor paging with after/before. | path · params { limit (1–500), after, before, order, campaign_id, ad_group_id } |
insights | read | Aggregated metrics — impressions, clicks, spend, ctr, cpc, cpm — for the account, a campaign, an ad group or an ad, daily or totalled. | path (/ad_account/insights | /campaigns/{id}/insights | …) · params { time_granularity, aggregation_level, fields[], filters[], sort[], time_ranges[], limit (≤ 2,000) } |
write | write | POST to create campaigns, ad groups and ads, update fields on an existing object, or activate / pause it. Updates are POST to the object path, not PATCH. | path (/campaigns | /campaigns/{id} | /campaigns/{id}/pause | …) · body |
delete | write | Archive a campaign, ad group or ad — the terminal state; there is no unarchive. Runs only on an explicit, item-by-item approved list. | path (/campaigns/{id}/archive | /ad_groups/{id}/archive | /ads/{id}/archive) |
uploadFromUrl | write | Upload a public image URL to OpenAI Ads and get back the file_id an ad creative needs. | imageUrl |
The same endpoint exposes the Google Ads, Meta Ads, TikTok, GA4, Search Console and Shopify toolsets. The cross-platform list lives in the advertising API & MCP tools reference; Google Ads and Meta have their own pages at Google Ads MCP and Meta Ads MCP.
03 — Prerequisites
What you need before you start
You need
- An OpenAI Ads Manager account at ads.openai.com with a billing profile and business verification started, connected to Ryze under Workspace Settings → Integrations.
- A free Ryze AI account — created during the OAuth step if you don’t have one.
- An MCP client: Claude Pro, Team or Max (custom connectors are not on the free plan), ChatGPT Plus, Pro or Business with Developer mode, or Claude Code, Cursor, Windsurf, VS Code on any plan.
You don’t need
- An OpenAI Ads API key in your config — the connector holds the OAuth grant and refreshes it for you.
- A separate tool per campaign object: one read tool and one write tool cover campaigns, ad groups, ads and conversion events by path.
- Python, Node, a virtual environment, a
.envfile or a process to keep running.
04 — Setup
Install in every MCP client
All routes end in the same OAuth screen: sign in with Ryze AI, choose your workspace, click Allow. Connect OpenAI Ads once under Workspace Settings → Integrations in Ryze; the tools appear in the next chat. One connection maps to one workspace, so agencies with several client workspaces reconnect per workspace. Screenshots for the Claude route are in how to connect Claude to the Ryze AI MCP.
Claude (web and desktop)
- 01On claude.ai, click your avatar (bottom-left) → Settings.
- 02Open the Connectors tab and click Customize, then the + next to Connectors.
- 03Name: Ryze AI. Remote MCP server URL:
https://connector.get-ryze.ai/mcp. Click Add. - 04Click Connect on the new connector, sign in, pick your workspace and click Allow Claude to connect.
- 05A green confirmation lists the available tools. Start a new chat and ask your first question.
Requires Claude Pro, Team or Max. The Claude desktop app uses the same Settings → Connectors flow; if you prefer the config file, use the mcp-remote entry under “Claude Desktop config file” below.
ChatGPT
- 01Settings → Apps. Under Advanced settings, turn on Developer mode.
- 02Click Create app. Name: Ryze AI. MCP server URL:
https://connector.get-ryze.ai/mcp— choose Server URL, not Tunnel. - 03Authentication: OAuth. Tick the acknowledgment and click Create.
- 04On the authorization page choose Sign in with Ryze AI, pick your workspace and click Allow.
- 05Start a new chat: “List my ChatGPT Ads campaigns with status, lifetime budget and spend to date.”
Requires a ChatGPT plan that supports apps and connectors (Plus, Pro or Business).
Claude Code
claude mcp add --transport http ryze https://connector.get-ryze.ai/mcpThen run /mcp inside Claude Code to complete the OAuth sign-in. Add --scope user to make it available in every project.
Cursor, Windsurf and any mcp.json client
{
"mcpServers": {
"ryze": {
"url": "https://connector.get-ryze.ai/mcp"
}
}
}Save, then approve the OAuth prompt the client opens. Windsurf uses the key serverUrl instead of url.
VS Code (GitHub Copilot agent mode)
{
"servers": {
"ryze": {
"type": "http",
"url": "https://connector.get-ryze.ai/mcp"
}
}
}Claude Desktop config file (optional)
{
"mcpServers": {
"ryze": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://connector.get-ryze.ai/mcp"]
}
}
}macOS: ~/Library/Application Support/Claude/claude_desktop_config.json · Windows: %APPDATA%\Claude\claude_desktop_config.json. Restart Claude Desktop; the first call opens the browser for OAuth. Most people won’t need this — Settings → Connectors does the same without Node.
05 — Usage
What to ask once connected
Reporting
- >“Show spend, impressions, clicks and CTR for every ChatGPT Ads campaign this month.”
- >“Which ad groups have the highest CPC, and what context hints are they using?”
- >“Give me daily spend for the last 14 days across the account.”
Structure & context hints
- >“List every ad group with its context hints, max bid and status.”
- >“Which ads are still in review, and which are serving?”
- >“Suggest five new context hints for the 'AI ad management' ad group based on what's converting.”
Launch (approval-gated)
- >“Create a paused Clicks campaign with a $1,500 lifetime budget, one ad group at $4 max CPC, and this headline and copy — show the plan first.”
- >“Upload this image and attach it as the creative on the new ad.”
- >“Activate the 'Q4 promo' campaign once I approve.”
Changes (approval-gated)
- >“Pause every ad group with CTR under 0.5% and spend over $100 this month.”
- >“Lower the max CPC on the 'Shopify SEO' ad group to $3.50.”
- >“Archive the two campaigns that ended in August — list them first.”
Ready-made workflows: how ads in ChatGPT work and how Ryze launches them, the ChatGPT Ads API for developers and agencies, ChatGPT Ads creative best practices and how to start a ChatGPT Ads agency.
06 — Request examples
Requests you can describe in the chat
You rarely need to write these — the assistant builds them. When you want exact control, describe the request and the server runs it through insights, read or write. Three that come up daily:
Insights: campaign performance, last 30 days
{
"path": "/ad_account/insights",
"params": {
"aggregation_level": "campaign",
"time_granularity": "none",
"time_ranges": [{ "start": "2026-08-06", "end": "2026-09-04" }],
"fields": ["impressions", "clicks", "spend", "ctr", "cpc"],
"sort": [{ "field": "spend", "direction": "desc" }],
"limit": 100
}
}Spend comes back in micros. time_granularity 'none' totals the range; 'daily' returns one row per day. Limit runs to 2,000 rows.
Read ad groups for one campaign
{
"path": "/ad_groups",
"params": { "campaign_id": "cmpn_…", "limit": 100, "order": "desc" }
}Every list is cursor-paged: pass the last id as after until the response has no next cursor. Get-by-id right after a create can lag; keep the create's response body.
Create a paused campaign, then an ad group with context hints
// write
{ "path": "/campaigns",
"body": { "name": "Q4 promo", "objective": "clicks", "status": "paused",
"lifetime_spend_limit_micros": 1500000000 } }
// write
{ "path": "/ad_groups",
"body": { "campaign_id": "cmpn_…", "name": "AI ad management",
"context_hints": ["automate google ads", "ai media buyer"],
"max_bid_micros": 4000000, "status": "paused" } }Budgets are lifetime caps in micros ($1,500 = 1500000000); bids are max_bid_micros ($4 = 4000000). Updates POST to the object path; activation is /activate.
07 — Compare
Hosted MCP vs the raw Ads API vs Ads Manager
| What you operate | Ryze AI hosted server | OpenAI Ads API in your own code | Ads Manager UI only |
|---|---|---|---|
| Runtime | None — remote HTTP | Your own service and scheduler | None — a browser |
| Credentials you manage | One OAuth grant in Ryze | API keys you issue, store and rotate | Your OpenAI login |
| Where you work | Claude, ChatGPT, Cursor, Claude Code | Your codebase | ads.openai.com |
| Reporting | insights tool, cross-platform in one chat | Build the calls yourself | Dashboard exports |
| Platforms | ChatGPT Ads + Google, Meta, TikTok, GA4, Search Console, Shopify | ChatGPT Ads only | ChatGPT Ads only |
| Write approval controls | Per-tool, on by default | Whatever your code allows | Manual |
Build on the raw API when ChatGPT Ads is one feed inside a product you already ship. For everything else — reporting, launching, pausing, moving budget between ChatGPT Ads and your Google or Meta campaigns — the hosted server puts it all in one chat. Background reading: ads in ChatGPT explained and the ChatGPT Ads API guide. For the other ad platforms, see Google Ads MCP and Meta Ads MCP.
08 — Security & permissions
Safe by default
OAuth only
OpenAI Ads is connected through OAuth in Ryze. No API key sits in a config file, and nothing on this endpoint stores your OpenAI password.
One workspace per connection
Each connection is authorized against a single Ryze workspace, chosen on the consent screen. Switching workspaces means reconnecting and starting a new chat.
Approval-gated writes
read and insights are automatic. In Claude, open Settings → Connectors → Ryze AI and keep write, delete and uploadFromUrl on 'Needs approval' — the recommended default for live accounts.
Archive is separate and explicit
Archiving in OpenAI Ads cannot be undone, so the delete tool only runs on an item-by-item approved list. Pausing through write is the reversible path.
Revoke any time
Disconnect OpenAI Ads under Workspace Settings → Integrations in Ryze, or remove Ryze from your OpenAI account's authorized apps.
Policies
Read the MCP privacy policy, MCP terms, security policy and MCP permissions best practices.
09 — Quotas & limits
What to know before a heavy session
| Money fields | Everything is micros: lifetime_spend_limit_micros, max_bid_micros and spend in insights. Divide by 1,000,000 for currency. |
| Budgets are lifetime | OpenAI Ads campaigns carry a lifetime spend cap, not a daily budget. To run '$50 a day for 30 days' the assistant sets a $1,500 cap and the campaign dates. |
| Insights | Metrics: impressions, clicks, spend, ctr, cpc, cpm. Up to 2,000 rows per call; daily or totalled granularity; account, campaign, ad-group or ad level. |
| List paging | read returns 1–500 items per call with after/before cursors. Objects you just created can lag in list and get-by-id calls — the create response is the reliable handle. |
| Updates | POST to the object path with only the changed fields. PATCH is not part of the API; activate, pause and archive are their own sub-paths. |
| Review | New and edited ads go through OpenAI review before serving. Status changes from the API do not skip it. |
| Where ads show | Ads appear below relevant chats for eligible ChatGPT users; not to Plus, Pro or Business subscribers or under-18 users. Landing pages must not block OAI-AdsBot. |
| Client plans | Claude custom connectors: Pro, Team or Max. ChatGPT connectors: Plus, Pro or Business with Developer mode. |
10 — Troubleshooting
Common errors and the fix
| Symptom | Cause | Fix |
|---|---|---|
| Tools don't show up in the chat | The chat was opened before the connector existed. | Start a new chat — Claude and ChatGPT bind connectors when a conversation starts. |
| No 'custom connector' option in Claude | Free Claude plan. | Custom connectors need Claude Pro, Team or Max. ChatGPT needs Plus, Pro or Business with Developer mode on. |
| No OpenAI Ads tools, only Google and Meta | OpenAI Ads is not connected to this workspace. | Connect it under Workspace Settings → Integrations in Ryze, then start a new chat. |
| Budget or bid a million times too big | Micros. | Divide lifetime_spend_limit_micros, max_bid_micros and spend by 1,000,000. |
| Newly created object missing from the list | Eventual consistency right after a create. | Use the id from the create response; retry the read after a moment. Do not re-create. |
| Update returns 405 or 'method not allowed' | PATCH is not supported. | POST to /campaigns/{id} (or the ad group / ad path) with the changed fields. |
| Archive 'did nothing' or was refused | Archive is on the delete tool and needs approval. | Approve the tool call, or use write → /pause if you only want it stopped. |
| Campaign active but no impressions | Ad still in review, no billing profile, or context hints too narrow. | Check ad status in Ads Manager, confirm billing and verification, then broaden context hints. |
| Data from the wrong client account | The connection is authorized to another workspace. | Each connection is one Ryze workspace. Reconnect, pick the right workspace, and start a new chat. |
Still stuck? Email support@get-ryze.ai. Agencies juggling many accounts: MCP config for multiple ad accounts.
11 — FAQ
ChatGPT Ads MCP server questions
What is the ChatGPT Ads MCP server?
It is an MCP (Model Context Protocol) server that exposes an OpenAI Ads Manager account — the platform that serves ads inside ChatGPT — as tools an AI assistant can call. Ryze AI's server is hosted and remote: you add one URL to Claude, ChatGPT, Cursor or Claude Code, connect OpenAI Ads once, and the assistant can read campaigns, pull insights and, with approval, create, update, pause and archive them.
What is the ChatGPT Ads MCP server URL?
The server URL is https://connector.get-ryze.ai/mcp. It is a remote MCP server over Streamable HTTP with OAuth 2.0. The same endpoint serves the Google Ads, Meta Ads, TikTok, GA4, Search Console and Shopify toolsets, so one connector covers the whole ad stack. Each connection is authorized against one Ryze workspace.
Does OpenAI have an official Ads MCP server?
OpenAI publishes an Ads API for Ads Manager, and Ryze AI's connector is built on it. You can call that API from your own code with API keys, or use the hosted MCP server here, which holds the OAuth grant for you and puts ChatGPT Ads in the same chat as your other platforms.
Which tools does the ChatGPT Ads MCP server expose?
Five: read (GET any resource — ad account, campaigns, ad groups, ads, conversion events), insights (aggregated impressions, clicks, spend, CTR, CPC, CPM), write (create, update, activate, pause), delete (archive, irreversible) and uploadFromUrl (image to file_id). The three write tools are approval-gated.
Can the MCP server launch ads in ChatGPT, or only read data?
Both. With approval, the assistant can create a campaign with a lifetime budget, add an ad group with context hints and a max CPC or CPM bid, upload an image, create the ad and activate it. New ads still go through OpenAI's review before they serve, and the assistant cannot skip that.
What are context hints?
Context hints are the conversation topics and keywords an ad group is eligible to appear against in ChatGPT. They are not exact-match keywords; they describe intent. They are set per ad group alongside the max bid, and the assistant can read, suggest and, with approval, update them.
How are budgets and bids expressed?
In micros. A $1,500 lifetime budget is lifetime_spend_limit_micros 1500000000 and a $4 max CPC is max_bid_micros 4000000. OpenAI Ads budgets are lifetime caps rather than daily budgets, so a '$50 per day' brief becomes a cap sized to the campaign dates.
Who sees ads in ChatGPT?
Ads show below relevant conversations for eligible ChatGPT users. They are not shown to Plus, Pro or Business subscribers or to users under 18. Ad units carry the advertiser name, logo, title, copy, image and landing page, and UTM parameters survive the click.
Can I report ChatGPT Ads next to Google and Meta in one chat?
Yes. The endpoint also serves Google Ads, Meta Ads and TikTok tools, so one prompt can pull spend, clicks and CPC from all of them and put them in one table. GA4 and Search Console tools sit on the same URL for the downstream traffic.
What does the ChatGPT Ads MCP server cost?
Connecting is free — a Ryze AI account costs nothing to create and the connector has no per-call fee. Paid Ads Autopilot is $89/month flat with a 7-day free trial if you want Ryze AI to run the optimizations for you. On the client side you need a Claude plan that allows custom connectors (Pro, Team or Max) or a ChatGPT plan with connectors (Plus, Pro or Business).
Is the ChatGPT Ads MCP server secure?
OpenAI Ads is connected through OAuth in Ryze, so no API key lives in a config file and your OpenAI password never touches Ryze. Each connection is scoped to one Ryze workspace, write and archive tools are approval-gated by default, and you can disconnect at any time under Workspace Settings → Integrations. The MCP privacy policy, MCP terms and security policy are linked on this page.
Why doesn't Claude see the ChatGPT Ads tools after I connected?
Two common reasons. First, start a new chat — Claude and ChatGPT bind connectors when a conversation starts. Second, OpenAI Ads must be connected to the workspace under Workspace Settings → Integrations in Ryze; a workspace with only Google connected shows only Google tools.
Can I use it with several OpenAI Ads accounts or clients?
One connection maps to one Ryze workspace and its connected OpenAI Ads account. Agencies keep each client in its own workspace, reconnect per workspace and start a new chat when they switch.
12 — Compatibility
Works in every MCP client
13 — Related
Keep reading
- Ads in ChatGPT: how they work and how Ryze launches them
- ChatGPT Ads API for developers and agencies
- ChatGPT Ads creative best practices
- How to start a ChatGPT Ads agency
- Google Ads MCP server
- Meta Ads MCP server
- Control your ad accounts with Claude or ChatGPT
- Connect Claude to the Ryze AI MCP (screenshots)
One OAuth login · 5 ChatGPT Ads tools · Live in ~60 seconds
Add ChatGPT Ads to your AI today.
Free to connect. Upgrade to Paid Ads Autopilot ($89/mo flat, 7-day free trial) when you want Ryze AI to run the optimizations for you, 24/7.
2,000+ clients · 700+ agencies · $500M+ managed · No dev token · No server to run

