Codex CLI logo Meta Ads logo

Run Meta Ads from Codex

Autonomous Meta ad management from OpenAI's Codex CLI — 36 Meta tools, scheduled agents, daily creative-fatigue and pacing checks while you sleep.

  • 36 Meta Ads tools, all in Codex CLI

  • Paused-by-default. Cannot delete campaigns.

  • OAuth setup in ~2 minutes

See it in action

In Codex CLI

Pull my Meta Ads performance for the last 30 days. Show spend, conversions, CPA, and ROAS by campaign. Flag any campaigns with ROAS below 2.0.

Meta performance audit — A monthly audit that surfaces which campaigns to keep, kill, or scale.

Overview

Adspirer is the MCP server that connects OpenAI's Codex CLI to your Meta (Facebook + Instagram) ad accounts. Most AI clients are interactive — you ask, they answer. Codex is autonomous: define a Meta task once (e.g., "every morning, pull yesterday's spend, ROAS, and frequency by ad set, flag fatigue or pacing anomalies, send me a summary"), and the agent runs it on your schedule. Run the installer (`bash <(curl -fsSL ...codex/adspirer/install.sh)`), authenticate with `codex mcp login adspirer`, and Codex gets all 36 Meta tools — image / video / carousel / Reels / DCO campaign creation, creative-fatigue detection, audience research, placement optimization, lead-form pulls. Critically, even in autonomous mode Adspirer's safety rules hold: every new campaign creates paused, budget changes require explicit confirmation, and Adspirer cannot delete campaigns. Free tier (15 calls / month) is enough for ~3-7 daily check-ins.

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

36 tools, paused-by-default

tool calls

Meta Ads

Live data, paused for review

Step 01

Connect

Paste the MCP URL into Codex CLI, OAuth into Meta Ads.

Step 02

Manage

Ask in chat. Adspirer routes through 36 Meta Ads tools.

Step 03

Scale

Switch accounts in chat. Same audits across every client.

What you can do

36 tools across Meta Ads. The ones you'll use most:

  • Launch new campaigns — Build image, video, carousel, DCO, or Reels campaigns from a brief. Adspirer validates creative against Meta's requirements, plans the ad sets, and creates everything paused so you review before going live.

  • Pause underperformers — Pause individual ads, ad sets, or full campaigns by name from chat. Resume them later just as easily — Adspirer cannot delete existing campaigns (hard-coded safety).

  • Audit creative fatigue — Surface ads that have been running 14+ days with declining CTR — Adspirer recommends which creatives to refresh before they tank performance.

  • Find wasted spend — Flag campaigns running under your ROAS threshold so you can pause or reallocate budget. Works across active and paused campaigns.

  • Research audiences — Search Meta's targeting catalog by interest, demographic, or behavior. Browse existing custom audiences (lists, lookalikes, website, engagement) before building new ones.

  • Pull lead-form submissions — List configured lead forms and pull recent submissions, grouped by campaign — route them into your CRM workflow without leaving chat.

  • Optimize placements & budget — Compare CPA across Feed, Stories, Reels, Marketplace, and Audience Network. Reallocate budget toward winning ad sets — Adspirer never increases an existing budget without explicit confirmation.

  • Diagnose anomalies — When CPA spikes or CTR drops, ask why. Adspirer inspects audience changes, creative rotation, and platform-level events to explain the cause and recommend a fix.

Campaign types

Every Meta Ads format Adspirer supports — request one in chat.

Image campaigns

Single-image ads across Feed, Stories, and Marketplace. 1080×1080 minimum, validated before launch.

Video campaigns

Video ads up to 240s, 1:1 / 4:5 / 9:16 aspect ratios. MP4 or MOV, validated against Meta's spec.

Carousel campaigns

2–10 cards per ad, each with their own creative + headline + link. Great for product catalogs.

Reels campaigns

Vertical video for Instagram Reels and Facebook Reels. 9:16 aspect, optimized for mobile feeds.

Lead Gen Forms

On-platform forms that capture leads inside Facebook / Instagram — no landing page needed.

DCO (Dynamic Creative Optimization)

Provide multiple creative variants; Meta auto-mixes images, headlines, and descriptions to find winners.

More prompts to try

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

Creative fatigue check — Catch fatigued ads before they drag down ad-set performance.

Creative fatigue check
Check my Meta campaigns for creative fatigue. Find ads that have been running 14+ days with declining CTR. Recommend which creatives to refresh first.

Lead-form pull — Quick pull of lead-gen data without leaving chat.

Lead-form pull
List my Meta lead forms and pull the last 50 submissions from the highest-volume one. Group by campaign and show submission rate.

Diagnose a CPA spike — Anomaly diagnosis that explains *why*, not just *that*.

Diagnose a CPA spike
My CPA on the "Spring Sale 2026" Meta campaign jumped 40% in the last 5 days. Diagnose what changed — audience, creative, placement — and tell me what to fix.

Who this is for

Configure a Codex agent with default_prompt: "every 6 hours, scan all active Meta ad sets — flag any with frequency > 3, 7-day CTR decline > 25%, or CPA spike > 40% vs previous week. Post findings to #meta-alerts." The agent loops; humans approve fixes.

Effectively a 24/7 Meta SRE — fatigue and pacing problems get caught the same day they emerge, not at the next weekly QBR.

Compare & decide

Adspirer vs alternatives

For running Meta Ads from Codex CLI.

Adspirer DIY MCP server Legacy SaaS dashboard
Install One-line installer + `codex mcp login adspirer` Build MCP server, write Codex agent No CLI / agent support
Cost — entry tier Free (15 calls / mo) Hosting + maintenance $200-500 / mo minimum
Autonomous / scheduled runs Yes — Codex agents run on cron-like schedules Whatever you build Vendor-locked workflows
Multi-client agent configs Yes — one TOML per client Manual Yes — but each account billed
Brand-workspace pattern `$adspirer-setup` → AGENTS.md Manual No equivalent
Write capability Image / video / carousel / Reels / DCO, paused on create Whatever you build Mostly read-only
Autonomous safety Paused-on-create + budget-confirmation hard-coded Up to you Varies
Anomaly alerting Native (`detect_meta_creative_fatigue`, `explain_meta_anomaly`) Build it Sometimes

Pricing

Start free. Upgrade if you outgrow it.

Free Forever

$0

15 / mo

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

Start free →
Best for Codex CLI

Plus

$49 / mo

150 / mo

Performance analysis + standard campaigns.

Compare Plus →

Pro

$99 / mo

600 / mo

AI optimization, bulk ops, deeper diagnostics.

Compare Pro →

Max

$199 / mo

3,000 / mo

Priority support (24h SLA), custom integrations.

Compare Max →

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.

FAQ

Capabilities

How does Codex compare to Claude Code for Meta Ads?

Claude Code is interactive — you sit at the terminal, brief it, watch it run. Codex is autonomous — you write a default_prompt once, the agent runs on a schedule. Use Claude Code when you want to drive a one-off Meta launch hands-on; use Codex when you want a daily fatigue check, weekly wasted-spend audit, or anomaly monitor running unattended. Many teams use both — Claude Code for ad-hoc work, Codex for the recurring beat.

How many Adspirer tool calls does a Codex agent burn per day?

Typical autonomous Meta agents use 2-5 tool calls per run. A daily 6am performance check (1 call), a weekly Monday wasted-spend audit (3-4 calls), and a 6-hour anomaly monitor (4 runs/day × 1 call) costs roughly 200-300 calls / month — Plus tier ($49/mo, 150 calls) handles a single brand, Pro ($99/mo, 600 calls) covers multiple brands or higher cadence.

Can I run different Codex agents for different Meta accounts?

Yes. Create separate config files in ~/.codex/agents/ — one per client or brand — and each agent uses switch_primary_account to scope itself to a specific Meta ad account. A common agency pattern: one agent per client running weekly audits, output written to clients/{client}/meta-audit-{date}.md, all running on the same cron without colliding.

What ad formats does Adspirer support on Meta?

Image, video, and carousel campaigns are fully supported. Lifetime budgets, end dates, placement controls, and Dynamic Creative Optimization (DCO) are all available. Stories, Reels, and Audience Network placements are controlled at the ad-set level.

What's the minimum budget?

Meta requires $5/day per ad set. Adspirer recommends $20+/day for meaningful test data and $30/day split across 2-3 ad sets to find winners faster.

Workflows

Can a Codex agent actually launch Meta campaigns autonomously?

No — and that's the point. Even when a Codex agent runs unattended, Adspirer enforces hard-coded safety rules: every create_meta_image_campaign / create_meta_video_campaign / create_meta_carousel_campaign call ships paused, budget changes via update_meta_campaign require user confirmation, and there is no delete tool. The agent analyzes, recommends, and prepares — you approve final spending decisions manually.

Does Adspirer generate Meta creatives (images / videos)?

No. Adspirer does not generate creative assets. You provide a public URL to your image or video (Google Drive, Dropbox, S3, or any public link) and Adspirer validates that it meets Meta's requirements before launching the ad.

How does Adspirer handle the Meta campaign-creation workflow?

Meta requires a 6-step sequence: verify the connection → search targeting → choose campaign type (image/video/carousel) → discover existing assets → validate creatives → create campaign. Adspirer enforces this order — skipping a step would cause Meta's API to reject the campaign.

How are leads from Meta lead forms surfaced?

Use list_meta_lead_forms to see configured forms, then get_meta_lead_form_submissions to pull recent submissions. Adspirer doesn't push leads into your CRM directly — it returns the submission data so you can route it through Zapier, Make, or a custom integration.

Safety & control

Can Adspirer pause or delete my existing Meta campaigns?

Adspirer can pause campaigns when you explicitly ask it to, but it cannot delete existing campaigns or ad sets. New campaigns are always created paused so you can review before they go live.

Related integrations

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

Go deeper

Ready to connect Codex CLI to Meta Ads?

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

Try Adspirer free