Reddit Ads MCP server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| REDDIT_ADS_CLIENT_ID | No | Client ID of your Reddit app, needed with the refresh token. | |
| REDDIT_ADS_USER_AGENT | No | Optional. Reddit asks clients to identify themselves, for example node:my-ads-app:v1.0.0 (by /u/your_username). | |
| REDDIT_ADS_ACCOUNT_IDS | Yes | Required comma-separated ad account IDs, such as a2_abc123. Every other account is refused, for reads too. | |
| REDDIT_ADS_ACCESS_TOKEN | No | OAuth access token with adsread, and adsedit if you enable writes. Optional when the refresh token and client credentials are set. | |
| REDDIT_ADS_CLIENT_SECRET | No | Secret of your Reddit app, needed with the refresh token. | |
| REDDIT_ADS_ENABLE_WRITES | No | Defaults to false. Only the exact value true exposes the 22 write tools. | false |
| REDDIT_ADS_REFRESH_TOKEN | No | Permanent refresh token. With REDDIT_ADS_CLIENT_ID and REDDIT_ADS_CLIENT_SECRET, the server renews access tokens in memory. |
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 | {
"subscribe": false,
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| reddit_get_setup_guideA | Reddit connector coverage, prerequisites, units, renaming and known limits. Read it before planning writes or answering what this server cannot do. |
| reddit_get_write_schemaA | Exact pinned native schemas for Reddit creation and edits, including targeting and all implemented campaign/ad formats. Provider acceptance is separate from local schema validation. |
| reddit_get_reporting_schemaA | Reddit metric and dimension inventory; configured targeting is read with reddit_get_targeting, not inferred from reporting. |
| reddit_health_checkA | Read the allowed Reddit ad account, its business, currency and timezone. API access is not proof of delivery or full objective eligibility. |
| reddit_get_campaignsA | Read Reddit campaigns, including native configuration and configured/effective status. Pagination returns an opaque cursor; every further page needs an explicit call. |
| reddit_get_campaignA | Read one Reddit campaign and verify that it belongs to the ad account. |
| reddit_get_ad_groupsA | Read Reddit ad groups, including native configuration and configured/effective status. Pagination returns an opaque cursor; every further page needs an explicit call. |
| reddit_get_ad_groupA | Read one Reddit ad group and verify that it belongs to the ad account. |
| reddit_get_adsA | Read Reddit ads, including native configuration and configured/effective status. Pagination returns an opaque cursor; every further page needs an explicit call. |
| reddit_get_adA | Read one Reddit ad and verify that it belongs to the ad account. |
| reddit_get_saved_audiencesA | Read Reddit saved audiences, including native configuration and configured/effective status. Pagination returns an opaque cursor; every further page needs an explicit call. |
| reddit_get_saved_audienceA | Read one Reddit saved audience and verify that it belongs to the ad account. |
| reddit_get_custom_audiencesA | Read Reddit custom audiences, including native configuration and configured/effective status. Pagination returns an opaque cursor; every further page needs an explicit call. |
| reddit_get_custom_audienceA | Read one Reddit custom audience and verify that it belongs to the ad account. |
| reddit_get_lead_gen_formsA | Read Reddit lead gen forms, including native configuration and configured/effective status. Form configuration only; lead submissions are never returned. Pagination returns an opaque cursor; every further page needs an explicit call. |
| reddit_get_lead_formA | Read one Reddit lead form and verify that it belongs to the ad account. Form configuration only; lead submissions are never returned. |
| reddit_get_targetingA | Read actual ad-group targeting: inclusions, exclusions, geo, age/gender, languages, interests, communities, keywords, devices and audience IDs. This is configuration, not delivery demographics. |
| reddit_get_targeting_optionsA | Discover valid native targeting values. Communities can be searched; large lists are paginated or explicitly marked partial. |
| reddit_get_profilesB | List profiles accessible to the allowed Reddit ad account. |
| reddit_get_pixelsB | List pixels accessible to the allowed Reddit ad account. |
| reddit_get_insightsA | Native Reddit reporting with metrics and entity/audience breakdowns, explicit UTC dates and pagination. Empty results validate transport only. Reported audience demographics differ from configured targeting. |
| reddit_get_creative_assetsB | List the asset library of a profile attached to the ad account; unused files are not necessarily ads. |
| reddit_get_postsB | List advertising structured posts for a profile attached to this account. Returns native image/video/carousel/text configuration. |
| reddit_get_postA | Read an ad structured post after profile ownership verification. |
| reddit_get_asset_uploadsA | Poll processing of creative imports through the profile; ACTIVE is media-ready, not advertising delivery. |
| reddit_get_post_jobA | Poll a previously created structured post using its signed job receipt. Does not accept arbitrary job IDs from another account. |
| reddit_list_ad_creativesA | Resolve ad-linked image/video/carousel assets with explicit coverage. A video cover does not establish its motion/audio; use full media when available. Media URLs are returned, never downloaded. |
| reddit_get_catalogsB | Read product catalogs of the business owning the ad account. |
| reddit_get_productsA | Read products from a catalog owned by the ad account's business. |
| reddit_get_product_setsB | Read product sets from a catalog owned by the ad account's business. |
| reddit_get_catalog_importsB | Read catalog imports from a catalog owned by the ad account's business. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| Reddit Ads guide | Coverage, prerequisites, units, renaming and known limits of this server. Same content as reddit_get_setup_guide. |
| Reddit Ads reporting catalog | Every reporting metric with its category and unit note, and every dimension with whether Reddit accepts it as a breakdown. |
TDQS
Scored across 31 tools
Most tools target a clear resource+action pair (list vs get for campaigns, ad groups, ads, audiences, etc.). The creative cluster (get_creative_assets, list_ad_creatives, get_posts, get_post, get_asset_uploads, get_post_job) has some overlap that could confuse an agent, but descriptions clarify roles reasonably.
All tools share the reddit_ prefix and overwhelmingly use get_ for reads. The lone list_ prefix on reddit_list_ad_creatives is a minor deviation, and health_check/list follow the same pattern.
31 tools is heavy for the stated scope; many are necessary list/get pairs across numerous resources (campaigns, audiences, lead forms, creatives, catalogs, etc.), but some could be consolidated or made optional. This is on the high side of acceptable.
The surface is exclusively read-only, yet the server advertises write schemas and references creation/edits (e.g. get_write_schema, get_post_job). There are no create/update/delete tools for campaigns, ad groups, ads, audiences, or posts, which is a significant gap for a server framed as supporting writes.