Reddit Ads
Reddit Ads MCP server: 31 read tools, 22 opt-in preview-first writes.
Installation
Ajoutez ceci à la configuration MCP de votre client (Claude Desktop : claude_desktop_config.json ; Cursor : .cursor/mcp.json ; VS Code et les autres utilisent la même forme « mcpServers »).
@getmcpads/reddit-ads-mcp-serverclaude mcp add reddit-ads -e 'REDDIT_ADS_ACCESS_TOKEN=<your reddit_ads_access_token>' -e 'REDDIT_ADS_REFRESH_TOKEN=<your reddit_ads_refresh_token>' -e 'REDDIT_ADS_CLIENT_ID=<REDDIT_ADS_CLIENT_ID>' -e 'REDDIT_ADS_CLIENT_SECRET=<your reddit_ads_client_secret>' -e 'REDDIT_ADS_ACCOUNT_IDS=<REDDIT_ADS_ACCOUNT_IDS>' -e 'REDDIT_ADS_ENABLE_WRITES=<REDDIT_ADS_ENABLE_WRITES>' -e 'REDDIT_ADS_USER_AGENT=<REDDIT_ADS_USER_AGENT>' -- npx -y @getmcpads/reddit-ads-mcp-server@1.0.1
{
"mcpServers": {
"reddit-ads": {
"command": "npx",
"args": [
"-y",
"@getmcpads/reddit-ads-mcp-server@1.0.1"
],
"env": {
"REDDIT_ADS_ACCESS_TOKEN": "<your reddit_ads_access_token>",
"REDDIT_ADS_REFRESH_TOKEN": "<your reddit_ads_refresh_token>",
"REDDIT_ADS_CLIENT_ID": "<REDDIT_ADS_CLIENT_ID>",
"REDDIT_ADS_CLIENT_SECRET": "<your reddit_ads_client_secret>",
"REDDIT_ADS_ACCOUNT_IDS": "<REDDIT_ADS_ACCOUNT_IDS>",
"REDDIT_ADS_ENABLE_WRITES": "<REDDIT_ADS_ENABLE_WRITES>",
"REDDIT_ADS_USER_AGENT": "<REDDIT_ADS_USER_AGENT>"
}
}
}
}
Variables d'environnement
REDDIT_ADS_ACCESS_TOKENsecret Reddit OAuth access token with adsread. Optional when the refresh credentials are set.REDDIT_ADS_REFRESH_TOKENsecret Permanent refresh token. With the app credentials, the server renews tokens in memory.REDDIT_ADS_CLIENT_IDClient ID of your Reddit app, needed with the refresh token.REDDIT_ADS_CLIENT_SECRETsecret Secret of your Reddit app, needed with the refresh token.REDDIT_ADS_ACCOUNT_IDSobligatoire Comma-separated Reddit ad account IDs (a2_...) the server may reach. Required even for reads.REDDIT_ADS_ENABLE_WRITEStrue exposes 22 write tools, each previewing until confirm:true. Defaults to false.REDDIT_ADS_USER_AGENTUser-Agent sent to Reddit, ideally naming your app and Reddit username.
Documentation
Tirée du README du projet sur GitHub, actualisée chaque semaine. Les liens ouvrent GitHub.
Sommaire
Reddit Ads MCP server
Bring your Reddit Ads accounts into your MCP client.
Read campaigns and reporting, inspect targeting and prepare changes for explicitly allowed ad accounts.
Watch the film · What's new · Install · Tool reference · Try hosted getmcpads
The film shows hosted getmcpads with sample data. Its MCP Apps, from creative galleries and alerts to Google Sheets exports and bulk launches, belong to the hosted product. This repository provides the standalone native API tools.
31 read tools · 22 write tools, disabled by default.
Run locally with your own platform credentials and a client that supports stdio MCP, such as Claude Desktop, Claude Code or Cursor. Your requests go directly to the platform. For managed connections, including supported ChatGPT setups, use the hosted option.
What's new
v1.0.0: First standalone release · October 23, 2026
- Port the native Reddit Ads API v3 tools of getmcpads with their names, schemas and ownership checks: 31 read tools and 22 write tools, plus two resources.
- Validate write payloads locally against Reddit's own schemas, pinned on 2026-09-11.
- Require an explicit ad account allowlist, default to read-only and preview every write. Campaigns, ad groups and ads are created paused.
- Renew access tokens in memory from a refresh token, never on disk.
- Use fixed Reddit hosts, no redirects, timeouts, bounded responses and credential redaction, without automatic write retries.
- Require a Node.js release with the October 2026 security fixes and check Node 22, 24 and 26 in CI.
- No hosted creative UI, alerts, exports or MCP Apps integrations.
Source synchronization: SOURCE_SYNC.md.
Upgrade notes
Requires Node.js 22.23.4, 24.22.1, 26.12.1 or a newer release of those lines. CI covers Node 22, 24 and 26, and the server prints a warning to stderr on an older runtime. Writes remain optional and require explicit confirmation. Hosted creative integrations and MCP Apps UI are outside this release.
Install this release
This is a GitHub source release. npm and MCP Registry versions are published separately. The commands below select this exact version; unpinned npx examples later in this document select the version currently available on npm.
git clone --branch v1.0.0 --depth 1 https://github.com/get-mcp-ads/reddit-ads-mcp-server.git
cd reddit-ads-mcp-server
npm ci
npm run build
Configure your MCP client to run node with the absolute path to dist/cli.js and the platform credentials documented below. Once the package is on npm, the same server runs with npx -y @getmcpads/reddit-ads-mcp-server. A Claude Desktop entry looks like this:
{
"mcpServers": {
"reddit-ads": {
"command": "npx",
"args": ["-y", "@getmcpads/reddit-ads-mcp-server"],
"env": {
"REDDIT_ADS_REFRESH_TOKEN": "your-refresh-token",
"REDDIT_ADS_CLIENT_ID": "your-app-client-id",
"REDDIT_ADS_CLIENT_SECRET": "your-app-secret",
"REDDIT_ADS_ACCOUNT_IDS": "a2_abc123"
}
}
}
}
Managed connection. Use Reddit Ads with hosted getmcpads. Connect your account, select the data your assistant may access and use the hosted MCP connection. See the site for current features and plans.
Configuration
Provide these environment variables through the client's secret configuration:
| Variable | Purpose |
|---|---|
REDDIT_ADS_ACCESS_TOKEN | OAuth access token with adsread, and adsedit if you enable writes. Optional when the three refresh variables are set. |
REDDIT_ADS_REFRESH_TOKEN | Permanent refresh token. With the two variables below, the server renews access tokens in memory. |
REDDIT_ADS_CLIENT_ID | Client ID of your Reddit app, needed with the refresh token. |
REDDIT_ADS_CLIENT_SECRET | Secret of your Reddit app, needed with the refresh token. |
REDDIT_ADS_ACCOUNT_IDS | Required comma-separated ad account IDs, such as a2_abc123. Every other account is refused, for reads too. |
REDDIT_ADS_ENABLE_WRITES | Defaults to false. Only the exact value true exposes the 22 write tools. |
REDDIT_ADS_USER_AGENT | Optional. Reddit asks clients to identify themselves, for example node:my-ads-app:v1.0.0 (by /u/your_username). |
Register a developer application and request Ads API access as described in Reddit's Ads API documentation. Then run Reddit's OAuth authorization code flow with the scopes adsread, plus adsedit only if you plan to enable writes, and duration=permanent to receive a refresh token.
Reddit access tokens expire after about an hour. Give the refresh token and the app credentials for daily use; an access token alone works until it expires.
This package accepts tokens. It does not run an OAuth browser flow and never writes a renewed token to disk. Reddit ad account IDs start with a2_; the business ID is a different value.
npm run doctor reports which variables are set, without printing any value, and whether your Node.js release carries the October 2026 security fixes. Run reddit_health_check as the first call: it reads the account, its business, currency and timezone.
Safety and coverage
Writes preview by default. Review the exact account, target and payload before repeating the call with confirm: true.
Campaigns, ad groups and ads are created paused. Activation can spend advertising budget, and previews that set configured_status to ACTIVE say so with activationMaySpend.
Do not retry a write automatically when its result is uncertain. Read the account and reconcile it first. The server retries only after an HTTP 401, once, when it renewed the token, because Reddit rejected that request before acting on it.
The account allowlist applies before every request. Each entity read is checked against the ad account, directly or through its profile, business or catalog. Before a confirmed write, the campaigns, ad groups, posts, audiences, pixels, product sets, profiles and assets it references are checked the same way.
Write payloads are validated against Reddit's schemas pinned on 2026-09-11. Billing fields and computed statuses are refused. Passing local validation is not provider acceptance.
Budgets, bids and SPEND are microcurrency: one millionth of the account currency. Other reporting fields keep their native units. Pagination cursors are Reddit's own page tokens.
Requests go only to ads-api.reddit.com and, for token renewal, www.reddit.com. No request follows a redirect. Each one has a timeout and a response size limit. Credentials are redacted from every result and error.
Media URLs that Reddit returns are passed on as data. This server never downloads them.
Some Reddit capabilities are intentionally not exposed:
- Customer-list member uploads and conversion event injection.
- Lead submissions and any other download of personal records. Lead forms are readable as configuration only.
- Product feeds, billing and funding instruments.
- Destructive deletes. Status updates accept
PAUSEDandACTIVEonly, and saved audiences cannot be set toDELETED. - Onsite lead-form creation, which Reddit ended on September 21, 2026.
This server exposes a reviewed subset of the Reddit Ads API. It does not automatically expose new upstream endpoints. Hosted creative galleries, alerts, exports and MCP Apps UI are excluded.
Use tools/list or server-card.json for exact schemas, reddit_get_write_schema for the pinned write schemas and Reddit's API reference for provider details.
Hosted option
getmcpads for Reddit Ads manages the hosted connection and account selection. Hosted and source releases can differ. Contact: hello@getmcpads.com.
Development
npm run typecheck
npm run lint
npm run build
npm test
npm run catalog
All tests run offline with synthetic responses. No live account is changed.
Tools
Every tool is listed below. See server-card.json for complete parameter and output schemas.
31 read tools
| Tool | Purpose |
|---|---|
reddit_get_setup_guide | Coverage, prerequisites, units, renaming and known limits of this server |
reddit_get_write_schema | Pinned native schema for one write operation, including targeting and formats |
reddit_get_reporting_schema | Every reporting metric and breakdown name Reddit accepts |
reddit_health_check | Read the allowed ad account, its business, currency and timezone |
reddit_get_campaigns | List campaigns with native configuration and status |
reddit_get_campaign | Read one campaign after checking its account |
reddit_get_ad_groups | List ad groups with native configuration and status |
reddit_get_ad_group | Read one ad group after checking its account |
reddit_get_ads | List ads with native configuration and status |
reddit_get_ad | Read one ad after checking its account |
reddit_get_saved_audiences | List saved audiences |
reddit_get_saved_audience | Read one saved audience after checking its account |
reddit_get_custom_audiences | List custom audiences |
reddit_get_custom_audience | Read one custom audience after checking its account |
reddit_get_lead_gen_forms | List lead form configurations, never lead submissions |
reddit_get_lead_form | Read one lead form configuration after checking its account |
reddit_get_targeting | Read the configured targeting of an ad group |
reddit_get_targeting_options | Discover valid geolocations, languages, interests, devices, carriers and communities |
reddit_get_profiles | List profiles attached to the ad account |
reddit_get_pixels | List pixels available to the ad account |
reddit_get_insights | Run a native report with metrics, up to three breakdowns, UTC dates and pagination |
reddit_get_creative_assets | List the asset library of an attached profile |
reddit_get_posts | List structured posts of an attached profile |
reddit_get_post | Read one structured post after checking its profile |
reddit_get_asset_uploads | Poll the processing of creative asset imports |
reddit_get_post_job | Poll a structured post creation job with its signed receipt |
reddit_list_ad_creatives | Resolve the images and videos behind ads, with explicit coverage |
reddit_get_catalogs | List product catalogs of the business that owns the ad account |
reddit_get_products | List products of an owned catalog |
reddit_get_product_sets | List product sets of an owned catalog |
reddit_get_catalog_imports | List catalog imports of an owned catalog |
22 write tools
Disabled by default. Calls preview unless explicitly confirmed. Check the configuration and exact schema before use.
| Tool | Purpose |
|---|---|
reddit_create_campaign | Create a campaign, always paused |
reddit_update_campaign | Update campaign fields, including pause or reactivation |
reddit_create_ad_group | Create an ad group, always paused |
reddit_update_ad_group | Update ad group fields, including targeting, bids and status |
reddit_create_ad | Create an ad, always paused |
reddit_update_ad | Update ad fields, including pause or reactivation |
reddit_create_saved_audience | Create a saved audience |
reddit_update_saved_audience | Update a saved audience, without deletion |
reddit_create_custom_audience | Create a pixel, engagement or empty customer-list audience |
reddit_upload_creative_assets | Import images, videos or headlines into a profile's asset library |
reddit_create_post | Start a structured post creation job and return its receipt |
reddit_create_catalog | Create a product catalog for the owning business |
reddit_create_product_set | Create a product set in an owned catalog |
reddit_upsert_products | Create or update products in an owned catalog |
reddit_rename_campaign | Rename a campaign, nothing else |
reddit_rename_ad_group | Rename an ad group, nothing else |
reddit_rename_ad | Rename an ad, nothing else |
reddit_rename_ad_account | Rename the ad account, nothing else |
reddit_update_post | Change whether comments are allowed on a structured post |
reddit_update_asset | Rename a creative asset |
reddit_update_catalog | Update a catalog's name or event sources |
reddit_update_product_set | Update a product set's name or filter |
Resources
| Resource | Content |
|---|---|
reddit-ads://guide | The setup guide, also returned by reddit_get_setup_guide |
reddit-ads://reporting-catalog | Every metric with its category and unit note, and every dimension with whether it is a breakdown |
License
Apache License 2.0. See NOTICE.
More from getmcpads
Meta Ads · Google Ads · Google Analytics 4 · Google Search Console · TikTok Ads · Pinterest Ads · X Ads
Maintained by Emmanuel at getmcpads. Questions: hello@getmcpads.com.
Questions fréquentes
Qu'est-ce que Reddit Ads ?
Reddit Ads MCP server: 31 read tools, 22 opt-in preview-first writes.
Comment installer Reddit Ads ?
Il s'exécute sur votre machine. Dans Claude Code : claude mcp add reddit-ads -e 'REDDIT_ADS_ACCESS_TOKEN=<your reddit_ads_access_token>' -e 'REDDIT_ADS_REFRESH_TOKEN=<your reddit_ads_refresh_token>' -e 'REDDIT_ADS_CLIENT_ID=<REDDIT_ADS_CLIENT_ID>' -e 'REDDIT_ADS_CLIENT_SECRET=<your reddit_ads_client_secret>' -e 'REDDIT_ADS_ACCOUNT_IDS=<REDDIT_ADS_ACCOUNT_IDS>' -e 'REDDIT_ADS_ENABLE_WRITES=<REDDIT_ADS_ENABLE_WRITES>' -e 'REDDIT_ADS_USER_AGENT=<REDDIT_ADS_USER_AGENT>' -- npx -y @getmcpads/reddit-ads-mcp-server@1.0.1. Pour les autres clients, collez la configuration JSON de cette page dans leurs réglages MCP.
Faut-il une clé API pour Reddit Ads ?
Oui. Il attend REDDIT_ADS_ACCESS_TOKEN, REDDIT_ADS_REFRESH_TOKEN, REDDIT_ADS_CLIENT_SECRET, REDDIT_ADS_ACCOUNT_IDS, à renseigner dans sa configuration.
Reddit Ads est-il open source ?
Oui. Son code est sur GitHub sous licence Apache-2.0.
Qui maintient Reddit Ads ?
Il est publié par get-mcp-ads. AI.tn le référence sans le maintenir ni le recommander.
Issu du registre MCP officiel. Être listé n'est pas une recommandation : vérifiez le code et les permissions d'un serveur avant de lui donner accès à vos données.