Developers · MCP server
Give your agent an ad account.
The Admux MCP server lets an agent in Claude, Cursor or Codex buy ads in ChatGPT, Google Search (including AI placements) and Gravity from your prepaid balance. It exposes 28 tools over Streamable HTTP, and your API key decides which ones the agent sees.
Connect your agent
Create an API key in the Admux web app, export it as ADMUX_API_KEY, then add the server. Keep the key out of prompts and shared files.
Claude Code
claude mcp add --transport http admux https://api.admux.ai/mcp \
--header "Authorization: Bearer $ADMUX_API_KEY"
{
"mcpServers": {
"admux": {
"type": "http",
"url": "https://api.admux.ai/mcp",
"headers": { "Authorization": "Bearer ${ADMUX_API_KEY}" }
}
}
}
Cursor
{
"mcpServers": {
"admux": {
"url": "https://api.admux.ai/mcp",
"headers": { "Authorization": "Bearer ${env:ADMUX_API_KEY}" }
}
}
}
Codex
[mcp_servers.admux]
url = "https://api.admux.ai/mcp"
bearer_token_env_var = "ADMUX_API_KEY"
Then ask your agent something like “read /agents.txt, then draft a ChatGPT ads campaign for our launch with a $500 budget”. It will draft, validate and quote; submitting reserves budget only if the key allows it.
Tools
Each tool needs one scope. Tools the key lacks scopes for aren’t listed to the agent at all.
| Tool | What it does | Scope |
|---|---|---|
channels_list | Channel capabilities, creative rules, targeting support, current markup and pacing disclosure | campaigns:read |
assets_list | List supplied creative assets | creatives:read |
asset_upload_image | Upload a supplied image (base64 PNG/JPEG/WebP) | creatives:write |
campaign_create_draft | Create an unfunded draft (see channels_list for required fields) | campaigns:draft |
campaign_update_draft | Update draft fields (version-checked) | campaigns:draft |
campaign_validate | Validate a draft without money or delivery | campaigns:validate |
asset_save_copy | Save advertiser-supplied copy to the library | creatives:write |
campaign_duplicate | Duplicate into a new unfunded draft (fresh dates, quote and review required) | campaigns:draft |
campaign_update_metadata | Rename or retag (internal only; never triggers review) | campaigns:draft |
campaign_archive | Archive or unarchive a finished, cancelled or draft campaign | campaigns:draft |
readiness_get | Per-channel provider readiness (stubbed in local build) | campaigns:read |
| Tool | What it does | Scope |
|---|---|---|
offer_create | Issue a 15-minute price offer for the draft (reserves nothing) | campaigns:read |
campaign_submit | Reserve the full budget and submit for review. launchMode "auto" (Launch as approved) also requires campaigns:launch. Returns an operation to poll. | campaigns:reserve |
offer_get | Read an offer (server-enforced expiry) | campaigns:read |
balance_get | Operational available/reserved funds (USD cents) | balance:read |
| Tool | What it does | Scope |
|---|---|---|
campaign_launch | Launch approved legs | campaigns:launch |
campaign_pause | Pause legs (a request; poll for confirmation) | campaigns:pause |
campaign_resume | Resume paused legs | campaigns:resume |
campaign_remove_legs | Remove legs (allocation stays reserved to the campaign) | campaigns:cancel |
campaign_cancel | Cancel: stop delivery, settle, release unused funds after evidence | campaigns:cancel |
change_preview | Diff of pending draft edits against running revisions | campaigns:read |
change_offer | Quote pending changes (reprices all remaining delivery) | campaigns:read |
change_apply | Apply pending changes under an accepted change offer (increases also need campaigns:reserve) | campaigns:modify_live |
campaign_review_note | Send an explanation or evidence note to the policy reviewer of an open case | campaigns:draft |
operation_get | Operation status with per-leg steps | operations:read |
| Tool | What it does | Scope |
|---|---|---|
campaigns_list | List campaigns | campaigns:read |
campaign_get | Campaign with per-leg review, delivery, funding and settlement state | campaigns:read |
report_get | Performance report (UTC, delivery-dated) | reports:read |
What stays with you
- Launch. Approved campaigns wait for an explicit launch unless the key has
campaigns:launch. - Money. The key’s daily, weekly, monthly and lifetime limits cap new budget it can reserve. Payments, refunds and billing stay in the web app.
- Creative. Admux never writes ad copy: the agent supplies it, and Admux screens it against each channel’s rules.
- Retries. Tools that move money or change delivery take an idempotency key, so a retried call can’t double-spend.
Questions
Is there an MCP server for ChatGPT ads?
OpenAI doesn’t document an ads MCP server; it offers a REST Advertiser API and a ChatGPT Ads Manager plugin. The Admux MCP server buys ChatGPT ads, Google Search ads (including AI placements) and Gravity ads with one key.
Which MCP clients work?
Any client that supports Streamable HTTP with a Bearer header. This page shows Claude Code, Cursor and Codex.
Can the agent see my billing details?
No. balance_get returns available and reserved funds only; payment methods, invoices and refunds aren’t exposed to keys.