Codex CLI logo Google Display Ads logo

Run Google Display Ads from Codex CLI

Manage Google Display Ads campaigns inside OpenAI Codex CLI — 27 tools, OAuth setup in about 5 minutes, no dashboard switching.

  • 27 Google Display Ads tools, all in Codex CLI

  • Paused-by-default. Cannot delete campaigns.

  • OAuth setup in ~2 minutes

See it in action

In Codex CLI

Create a Google Display campaign: - Business: B2B project management SaaS - Landing page: https://example.com/signup - Business name: ProjectHub - Budget: $30/day - Locations: United States, Canada - Audiences: in-market "Business Software", affinity "Technophiles" - Topics: Business & Industrial, Computers & Electronics - Managed placements: techcrunch.com, theverge.com - Creative: landscape + square images, main color #2563eb, accent #f59e0b - 5 headlines and 3 descriptions Resolve locations and languages first, then build it paused.

Launch a Standard Display campaign — End-to-end Standard Display campaign with audience, topic, and placement targeting.

Overview

Adspirer is the MCP server that connects OpenAI Codex CLI to your Google Display Ads ad accounts, turning campaign management into a chat conversation. OpenAI's Codex CLI — script-friendly agent loop with MCP support. On the platform side, 27 tools cover responsive Display Ads across 2M+ sites, apps, and YouTube slots — standard and Smart Display, five targeting surfaces, and frequency caps. Adspirer reads and writes — pull performance reports, audit launch a display campaign from a brief, launch new campaigns, pause underperformers, and reallocate budget — all from chat. New campaigns are always created paused so you can review before they go live, Adspirer cannot delete existing campaigns by design, and the free tier (15 tool calls / month, no credit card) is enough to run a full audit before you pay. Setup takes about 5 minutes via a JSON config entry.

Safety guarantees

  • New campaigns always created paused for review

  • Adspirer cannot delete existing campaigns

  • Budget changes need explicit confirmation

  • OAuth 2.1 + PKCE — passwords never seen

How it works

How it works

Codex CLI

You ask in chat

prompt

Adspirer

27 tools, paused-by-default

tool calls

Google Display Ads

Live data, paused for review

Step 01

Connect

Paste the MCP URL into Codex CLI, OAuth into Google Display Ads.

Step 02

Manage

Ask in chat. Adspirer routes through 27 Google Display Ads tools.

Step 03

Scale

Switch accounts in chat. Same audits across every client.

What you can do

27 tools across Google Display Ads. The ones you'll use most:

  • Launch a Display campaign from a brief — `create_display_campaign` builds the campaign, a default ad group, and a Responsive Display Ad from your headlines, descriptions, and images — always created **paused** so you review before it serves.

  • Target across five surfaces — Layer audiences, topics, placements, contextual keywords, and demographics with `add_display_audiences`, `add_display_topics`, `add_display_placements`, and `add_display_keywords`. They intersect — narrower targeting means narrower reach.

  • Retarget website visitors — Point a campaign at your remarketing lists and Customer Match uploads — Adspirer runs `search_audiences` to find the real user-list IDs (never fabricated) before adding them via `add_display_audiences`.

  • Cap impressions per user — `get_display_frequency_caps` and `update_display_frequency_caps` view and set impression limits per user per day, week, or month — so you re-engage visitors without burning them out on the same creative.

  • Refresh creative on live ads — `update_display_ad_creative` swaps colors, CTA, images, videos, promo text, and `format_setting` on a running ad — no need to rebuild the campaign when creative fatigues.

  • Resolve geo & language first — `resolve_google_locations` turns "London" into an exact `geoTargetConstants/<id>` (surfacing candidates instead of silently defaulting to the US), and `list_google_languages` validates ISO codes — both required before launch.

  • Hunt wasted spend & reallocate budget — `analyze_wasted_spend`, `optimize_budget_allocation`, and `update_campaign_budget` surface low-return placements and shift budget toward what converts — you confirm before any spend change.

Campaign types

Every Google Display Ads format Adspirer supports — request one in chat.

Standard Display

Full manual control over all five targeting surfaces and any bidding strategy. Best when you have specific audiences, placements, or a retargeting list.

Smart Display

Google-managed — AI auto-targets, auto-bids (`TARGET_CPA` required), and auto-assembles creative. Needs conversion tracking plus 50+ Display conversions in the last 30 days.

Responsive Display Ads (RDA)

The default Display creative — Google mixes your headlines, descriptions, images, and logos into ads that auto-fit every slot across the network.

Remarketing / Retargeting

Re-engage past website visitors and cart abandoners with visual reminders, driven by your user lists and Customer Match uploads.

Audience, Topic & Placement targeting

Reach in-market and affinity segments, pages about chosen topics, or specific sites, apps, and YouTube channels — the most precise reach on Display.

Pick an intent

More prompts to try

Codex handles long-running agent loops; brief it like you would Claude Code.

Retargeting with a remarketing list — Re-engages past visitors using an existing user list with a frequency cap.

Retargeting with a remarketing list
Set up a Display retargeting campaign for my e-commerce store: - Remarketing list: "Website Visitors — Last 30 Days" - Budget: $20/day - Bidding: TARGET_CPA at $15 - Frequency cap: 3 impressions per user per day - Locations: United States - Creative: reuse existing landscape and square images from my account - Promo text: "Welcome back — 15% off" - CTA: SHOP_NOW

Smart Display campaign — Google-managed Smart Display for an account with enough conversion history.

Smart Display campaign
Create a Smart Display campaign: - Business: Online fitness coaching - Landing page: https://example.com/coaching - Budget: $40/day - Target CPA: $25 - Locations: United States - Creative: 5 headlines, 1 long headline, 5 descriptions, landscape + square images, 1 logo - This account has 200+ Display conversions in the last 30 days — let Google auto-target and auto-bid.

Set frequency caps — Caps impressions per user across a campaign after reviewing the current limits.

Set frequency caps
Set a frequency cap on my Display campaign [campaign_id]: - 5 impressions per user per day - 15 impressions per user per week Show me the current caps first, then apply the change.

Pick your audience

Who this is for

In-house growth marketer running Google Display Ads solo

Each Monday, ask Codex CLI to pull last week's Google Display Ads performance, surface campaigns running below your ROAS threshold, and recommend creative refreshes for fatigued ads.

Replaces a 60–90 minute manual review with a 5-minute chat, and surfaces problems before they tank ad-set performance.

Compare & decide

Compare

Adspirer vs alternatives

For running Google Display Ads from Codex CLI.

Adspirer DIY MCP server Legacy SaaS dashboard
Setup time ~5 minutes via a JSON config entry 2–4 hours building MCP server 30–60 min onboarding + sales call
Cost — entry tier Free (15 calls / mo) Hosting + maintenance $200–500 / mo minimum
Works inside Codex CLI Yes — a JSON config entry Yes (if you build it correctly) No — external dashboard only
Multi-account Yes — switch in chat Manual per-account auth Yes — but each account billed
Read + Write Full read + write (create / pause / update) Whatever you build Mostly read-only or seat-gated writes
Safety: cannot delete Hard-coded — no delete tool Up to you Varies
Pricing transparency Public — $0 / $49 / $99 / $199 Self-hosted Often quote-only

Cost

Pricing

If Adspirer wins for you, here's what it costs. Start free; upgrade if you outgrow it.

Free Forever

$0

15 tool calls / mo

All platforms. ChatGPT & Claude access. No credit card.

Start free →
Best for Codex CLI

Plus

$49 / mo

150 tool calls / mo

Performance analysis + standard campaigns.

Compare Plus →

Pro

$99 / mo

600 tool calls / mo

AI optimization, bulk ops, deeper diagnostics.

Compare Pro →

Max

$199 / mo

3,000 tool calls / mo

Priority support (24h SLA), custom integrations.

Compare Max →

Set up

Configure

Required: OpenAI API access. Most users finish in about two minutes.

Show setup steps for Codex CLI

Edit your Codex MCP config

Add an adspirer entry with URL https://mcp.adspirer.com/mcp and OAuth auth.

Authenticate via OAuth

Run any Codex command — the first invocation triggers the OAuth flow.

Common questions

FAQ

Setup

Do I need a developer to set this up?

You'll edit a small JSON config entry to register the Adspirer MCP server (https://mcp.adspirer.com/mcp, transport http, OAuth). If you can edit a settings file in a code editor, you can do this. Total time: about 5 minutes.

What creative assets do I need for a Responsive Display Ad?

At minimum: 1-5 short headlines (≤30 chars), 1 long headline (≤90), 1-5 descriptions (≤90), a business name (≤25), at least one landscape image (1.91:1, min 600×314) and one square image (1:1, min 300×300), plus an HTTPS final URL. Logos, YouTube videos, colors, a price prefix, and promo text are optional. Google assembles these into ads that auto-fit every slot — or reuse assets already in your account via existing_images.

Capabilities

Can I switch from Codex CLI to a different AI client later?

Yes. Your Adspirer account is independent of the AI client — sign up once, then connect the same MCP URL from ChatGPT, Claude, Cursor, Codex, Windsurf, or any supported client. Tool calls are pooled across clients on the same plan; switching costs you nothing.

How do frequency caps work on Display?

Use get_display_frequency_caps to see current limits and update_display_frequency_caps to set impression caps per user by day, week, or month. Caps stop the same person seeing your ad too often — essential for retargeting, where a tight list can otherwise over-serve the same creative.

How do I target my remarketing audiences?

Your remarketing lists and Customer Match uploads live as user lists under audiences. Adspirer runs search_audiences to find the real list IDs (it never fabricates them), then adds them with add_display_audiences. Layer topics, placements, or demographics on top to narrow further.

Standard Display or Smart Display — which should I run?

Standard Display gives full manual control: all five targeting surfaces, any bidding strategy, and fine-grained creative. Smart Display is Google-managed — it auto-targets, requires bidding_strategy=TARGET_CPA, and needs conversion tracking with 50+ Display conversions in the last 30 days. Passing any manual targeting with smart_display=true is rejected. Start Standard for control; switch to Smart once you have the conversion history.

Ad formats

What is the difference between placements, topics, and keywords?

Managed placements (add_display_placements) target specific URLs, apps, YouTube channels, or videos — the most precise option. Topics (add_display_topics) serve on pages in Google's content categories (e.g., Finance > Credit & Lending). Display keywords (add_display_keywords) are contextual — ads serve on pages *about* those terms (always BROAD match; pass negative=true to exclude).

Compare

What's the read vs. write boundary on Google Display Ads?

Adspirer is full read and write. It can pull reports, audit performance, and analyze data (read), and it can launch new campaigns, pause underperformers, update budgets, and adjust targeting (write). Two safety guardrails are hard-coded: new campaigns are always created paused so you review before they go live, and Adspirer cannot delete existing campaigns. You keep full control.

Safety & control

How do I keep my ads off low-quality placements (brand safety)?

Ad format controls where you serve: ALL_FORMATS (default) maximizes reach, NATIVE restricts to placements where ads blend with content (premium publishers, higher engagement), and NON_NATIVE limits to standard banners. Set it via update_display_ad_creative, exclude bad sites with remove_display_criteria, and run analyze_wasted_spend to find placements burning budget.

Related integrations

Same Codex CLI, different platform — or same Google Display Ads, different AI client.

Codex CLI × other platforms

Google Display Ads × other AI clients

Go deeper

Ready to connect Codex CLI to Google Display Ads?

Start free — 15 tool calls per month, no credit card. Setup takes about 2 minutes.

Try Adspirer free

Free skills for Google Display Ads

All skills →