All posts
AdTech

How we brought ChatGPT Ads to Claude

Ionut CiobotaruJun 4, 20265 min read
How we brought ChatGPT Ads to Claude

How we built an MCP server to use ChatGPT Ads from inside Claude.

Claude can run ChatGPT ads.

Well, mostly read them, for now. But that's where this is heading.

A couple of weeks ago ChatGPT took their ads platform out of beta and opened it to the public. With it they opened up not just the ads manager but their advertiser API too.

We're somewhat of a Claude shop at HYPD, so we couldn't help but think: can we run them in Claude? The answer was: not directly. So we used Claude Code to build an MCP Server and bridge that gap. The model context protocol is open source and supported by both Anthropic and OpenAI. The repo is here in case anyone wants to jump ahead.

PS: I was having a bit of a deja-vu writing this — a couple of months ago I was joking about the Claude Ads Agent in Claude Code.. and now… here we are :)

A few notes on ChatGPT Ads

If you've used Google Ads (or almost any ad manager), the structure is familiar: campaign → ad group → ad hierarchy. The main difference is in the targeting. No demographics, no interests, no audiences; instead, "context hints" at the ad-group level: the conversations, topics and keywords where your product might be relevant. In theory they should guide where and when the ads show up. If you've worked with LLMs you'll have a rough intuition for the matching, close to broad match in Google Ads perhaps, though honestly still TBD..

The rest is early. Geo targeting is mainly the US plus a few English-speaking markets. Reporting is also rather high level; no search-term or context report, so you don't really get to see which conversations triggered your ads.

One thing I would highlight: there's a change-history log, basically a commit history for your ad account. Useful for humans but for an agent it's context: what changed, when, and connecting that with what happened after.

OpenAI Ads Manager — Ad View
OpenAI Ads Manager — Ad View

Early numbers are still settling: CPMs reportedly fell from ~$60 to ~$25 in a few months, CTRs are bouncing around 0.5–2%, and the old minimum is gone. The whole setup "feels" less like search and more like discovery — I believe Eric Seufert compared them with Meta Ads rather than Google which I think is directionally correct.

There are already a few programmatic pipes into the inventory: StackAdapt, Criteo and a few others, as OpenAI goes after Fortune 500s, SMBs and agencies, and plans to expand into apps as well (based on the greyed out conversion pixel options). They are targeting $2.4B ad-revenue for 2026 so let's see which segment will drive that spend.

Mobile app conversion sources
Mobile app conversion sources

A fun fact on these ads; It reminds me a lot of the early days mobile in-app native advertising at my previous company:

Native Ads in Tango
Native Ads in Tango

We ran native ads inside Skype; above the conversations list, icon and copy and description; We also worked with Pinger, TextNow and Tango. Messaging apps, back when the other end of the chat was still a human.

We had almost no conversation context to target on then; though we did have some demographics we mostly optimised on conversion pixels / postbacks and contextually matching publisher and advertiser apps affinities.

I assume — with no context or inside info — that in the case of ChatGPT we'll see state of the art models doing the optimization; similar to what Meta and Google are using.

So we built an MCP Server

Anyhow, that's the ads side. The MCP is the more interesting part. Why build it? Mostly because it didn't exist. Nothing on Google or GitHub, which surprised me given how easy OpenAI made the API.

Time to first working version: a couple of hours, give or take; A sign of the times, I guess.

I would like to create an MCP for the OpenAI ads API — `Make no mistake`

Last year building an MCP (AdCP for Google Ads) took me a couple of days and a couple of tries + a rewrite. Claude Code works mostly autonomously by now with a bit of steering pasted in docs, and some slight adjustments..

What was easy: OpenAI shipped a clean, straightforward API spec that covers most of what the Ads Manager does. It plays well with agents.

What was painful: Claude couldn't easily read OpenAI's own docs, so I ended up copy-pasting them in. (Yes, I could've used a different browser tool, but that's a bit besides the point.) Meaning I couldn't really one-shot it — maybe it could've with a better prompt — but then that's me doing the work upfront.

What works today; and what doesn't

The current MVP is read-only and covers the main tools: list and inspect accounts, campaigns, ad groups and ads, and pull performance insights at every level. So you can use Claude to ask how a campaign's pacing, which ad group is eating the budget, or for a summary of last week; and it answers off the live API.

Claude querying the OpenAI Ads API
Claude querying the OpenAI Ads API

What it doesn't do yet: write. No creating, editing or pausing campaigns from Claude. That's the roadmap and realistically a couple of prompts away.

(Note: I am still working through approval and billing to run live spend — one of the reasons I didn't build the "action" layer yet + I would rather build it within a deterministic tool call — more on that later.)

Next steps

A few things on our list and we'll prioritise them based on customer demand or personal preferences for a weekend hackathon:

  • Actions (being able to actually manipulate campaigns and)
  • Creating a hosted version (most probably as a connector in HYPD)
  • Bringing a version of this to AdCP (buyer Agent?)
  • Skills for best practices, pixel integration with GTM
  • Future feature updates (ios/android measurement data, email/offline data uploads, maybe different ad units from OpenAI? etc.)

Further roadmap in the repo: github.com/HYPD-AI/openai-ads-mcp

Let us know what you think and if you have any questions either on ChatGPT Ads or the MCP itself.

References:

Bring paid media into your AI, safely.