OpenAI Ads MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| PORT | No | HTTP port for HTTP mode. Default 8080. | 8080 |
| OPENAI_ADS_API_KEY | Yes | Required bearer key for https://api.ads.openai.com/v1. | |
| OPENAI_ADS_API_BASE_URL | No | Optional HTTPS override for tests or proxies. | |
| OPENAI_ADS_MCP_READONLY | No | Set to '1' or 'true' to register read tools only. | |
| OPENAI_ADS_MCP_HTTP_PATH | No | MCP path for HTTP mode. Default '/mcp'. | /mcp |
| OPENAI_ADS_MCP_HTTP_PORT | No | Alternative to PORT for HTTP port. Default 8080. | 8080 |
| OPENAI_ADS_MCP_HTTP_TOKEN | No | Optional bearer token required by hosted clients for HTTP mode. | |
| OPENAI_ADS_MCP_HEALTH_PATH | No | Health path for HTTP mode. Default '/healthz'. | /healthz |
| OPENAI_ADS_BUDGET_CEILING_USD | No | Optional budget guard. Default 100. | 100 |
| OPENAI_ADS_MCP_HTTP_CORS_ORIGIN | No | Optional CORS origin for HTTP mode. Default '*'. | * |
| OPENAI_ADS_MCP_HTTP_ALLOW_WRITES | No | Set to '1' to expose write tools over HTTP. |
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
} |
| resources | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_accountA | Get the authenticated OpenAI Ads account. Use this first to verify that OPENAI_ADS_API_KEY works and to read account id, name, timezone, currency, and settings. |
| list_campaignsA | List campaigns in the authenticated ad account with cursor pagination. |
| get_campaignB | Get one campaign by id. |
| list_ad_groupsB | List ad groups, optionally filtered to a campaign. |
| get_ad_groupB | Get one ad group by id. |
| list_adsC | List ads in an ad group. |
| get_adA | Get one ad by id, including review_status and creative metadata. |
| get_insightsA | Get performance insights for account, campaign, ad group, or ad scope. Supports fields, filters, sort, product/country/device segments, time ranges, and cursor pagination. |
| list_audiencesC | List custom audiences for the authenticated ad account. |
| get_audienceB | Get one custom audience by id. |
| search_geoA | Search geo targets for targeting.locations.include and return ids usable in campaign targeting. |
| draft_context_hintsC | Draft deterministic context_hints for an ad group from product, audience, intent, and keywords. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| Trakkr AI visibility briefing | A short paste-ready briefing on connecting ChatGPT ad placements with organic AI visibility tracking. |
TDQS
Scored across 12 tools
Each tool has a clearly distinct purpose: get_* and list_* target specific entities, draft_context_hints is a unique creation action, search_geo handles geo targeting, and get_insights covers analytics. No overlap or ambiguity.
All tool names follow a consistent verb_noun pattern with lowercase and underscores, e.g., get_account, list_campaigns, draft_context_hints, search_geo. The naming is predictable and uniform.
With 12 tools, the set is slightly on the higher side but still well-scoped for an ads platform's essential operations (read entities, insights, geo search, drafting). No unnecessary tools.
The tool surface is missing critical CRUD operations for campaigns, ad groups, ads, and audiences. Agents can only read and list, plus draft hints, which is a significant gap for managing ads campaigns.