mcp-openai-ads
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| OPENAI_ADS_API_KEY | Yes | Advertiser API key | |
| OPENAI_ADS_BASE_URL | No | Override the API base URL | https://api.ads.openai.com/v1 |
| OPENAI_ADS_MAX_ROWS | No | Maximum report rows returned per call | 200 |
| OPENAI_ADS_ALLOW_WRITES | No | Set to true to enable the write tools | false |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| prompts | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_ad_accountA | Get the ad account tied to the API key: name, URL, status, currency, timezone and brand/integrity review status. Money values in other tools are in this account's currency. |
| get_spend_limitsA | Get the ad account's daily spend limit and dated spend-limit windows, with amounts spent and remaining. |
| list_campaignsB | List campaigns with status, budget (account currency), targeting countries and serving issues. |
| get_campaignB | Get full details of one campaign, including targeting and serving issues. |
| list_ad_groupsB | List ad groups, optionally for one campaign, with bid strategy, max bid and context hints. |
| get_ad_groupC | Get full details of one ad group. |
| list_adsC | List ads, optionally for one ad group, with creative text, review status and serving issues. |
| get_adB | Get full details of one ad, including creative, review and appeal status. |
| preview_adB | Render a preview of how an ad will look in ChatGPT. Does not change the ad. |
| list_product_feedsB | List product feeds with countries, currencies, product and campaign counts. |
| list_conversion_setupB | List conversion pixels/sources and conversion event settings (event type, attribution window, linked campaigns). |
| list_recent_conversion_eventsA | List recent raw conversion events received for a pixel/source. Useful to verify a pixel or Conversions API integration is firing. |
| geo_lookupB | Search locations (cities, regions, countries) to get ids for campaign location targeting. |
| get_insightsA | Performance report (impressions, clicks, spend, CTR, CPC, CPM) for the ad account, broken down by campaign, ad group or ad. Date range: pass since/until (YYYY-MM-DD, inclusive, account timezone; until defaults to yesterday) or last_n_days (default 7, ending yesterday). Scope to one entity with campaign_id / ad_group_id / ad_id. Optional one-dimension segment: product, country, device, platform. Spend values are in account currency units (not micros). Today's attribution metrics are preliminary. Advanced: pass canonical fields like "campaign.roas", "ad.cpa", "country.name", filters and sort. |
| account_summaryA | One-shot snapshot: account status, active campaigns with budgets and serving issues, and per-campaign performance for the last N days (default 7). |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| weekly_performance_review | Review the last 7 days of ChatGPT Ads performance and suggest actions. |
| find_underperformers | Find ads with low CTR or high CPC relative to the account average. |
| diagnose_not_serving | Check account review, spend limits, campaigns, ad groups and ads for serving issues. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 15 tools
The list_/get_ pairs map cleanly to distinct resources (campaigns, ad groups, ads, feeds), and geo_lookup/preview_ad are clearly unique. The main overlap is account_summary, which bundles account status, campaigns, and performance and thus partially duplicates get_ad_account, list_campaigns, and get_insights. One or two tools could be confused, but overall boundaries are clear.
Strong, predictable get_/list_ verb_noun pattern dominates (get_ad, list_campaigns, get_ad_group, list_conversion_setup). Deviations are minor: geo_lookup reverses to noun_verb and account_summary uses a noun_noun snapshot name, both still readable and recognizable.
15 tools is well within the sensible range and each one earns its place, covering account, campaigns, ad groups, ads, feeds, conversions, targeting, and reporting. No redundant or trivial tools inflate the set.
The surface is heavily read-oriented: rich list/get/preview and diagnostic coverage, but no create, update, pause, or budget-mutation operations for campaigns, ad groups, or ads, leaving write-side lifecycle workflows as dead ends. A user can inspect everything but cannot manage or change anything.