Skip to main content
Glama
reddit-ads-mcp

reddit-ads-mcp

by filippofinke

📣 MCP server for the Reddit Ads API v3: let any MCP-compatible AI client create, update, delete and report on campaigns, ad groups, ads, audiences, catalogs and more.

⚠️ Not affiliated with Reddit, Inc. You need your own Reddit Ads developer app. Actions run against your real ad accounts and can spend real money.

🏠 Homepage

Features

  • 🧭 Full API coverage: all 108 operations of the Reddit Ads API v3 as 114 MCP tools, plus a raw request tool

  • 🔐 Browser OAuth login: only a client ID and secret needed; the server opens Reddit's consent page, catches the callback on localhost and stores a refresh token (0600) that is refreshed automatically

  • 📊 Campaign management: campaigns, ad groups, ads, bulk activate / pause / archive / delete

  • 🖼️ Creatives: structured post jobs, legacy posts, creative asset library, video poster generation

  • 🎯 Targeting: communities, interests, geolocations, devices, carriers, languages, third-party audiences, keyword suggestions

  • 👥 Audiences: custom audiences (hashed user upload), saved audiences, lead gen forms

  • 📈 Reporting and planning: performance reports with breakdowns, bid suggestions, audience and delivery estimates, reach curves

  • 🛒 Catalogs and conversions: product catalogs, feeds, sets, batch upserts, pixels, Conversions API, data deletion jobs

  • 📄 Pagination: automatic next_url following with merged results

  • 🔁 Resilient: token refresh on 401, backoff on 429, no retries of non-idempotent writes

Related MCP server: reddit-ads-mcp

Quick start

  1. Create a Reddit developer app: in Reddit Ads Manager open Business settings → Developer applications (business admins only), set the redirect URL to http://localhost:8765/callback and copy the Client ID and Client secret.

  2. Add the server to your MCP client (no clone or build needed, Node 20+):

claude mcp add -s user reddit-ads \
  -e REDDIT_ADS_CLIENT_ID=your_client_id \
  -e REDDIT_ADS_CLIENT_SECRET=your_client_secret \
  -- npx -y @filippofinke/reddit-ads-mcp@latest

or with one click:

Install in Cursor Install in VS Code Install in VS Code Insiders

  1. Ask your assistant "List my Reddit ad accounts" and approve the Reddit consent page that opens.

Setup

1. Create a Reddit developer app

In Reddit Ads Manager, open Business settings → Developer applications and create an app (business admins only). Set the redirect URL to:

http://localhost:8765/callback

Copy the Client ID and Client secret.

2. Connect your MCP client

It is a standard stdio MCP server published on npm, so it works with any client that supports MCP (Claude, Cursor, VS Code, Windsurf, Codex, Gemini CLI, Zed, Cline, Continue, …):

{
  "mcpServers": {
    "reddit-ads": {
      "command": "npx",
      "args": ["-y", "@filippofinke/reddit-ads-mcp@latest"],
      "env": {
        "REDDIT_ADS_CLIENT_ID": "your_client_id",
        "REDDIT_ADS_CLIENT_SECRET": "your_client_secret"
      }
    }
  }
}

Client

Where the config goes

Claude Desktop

claude_desktop_config.json

Claude Code

claude mcp add -s user reddit-ads -e REDDIT_ADS_CLIENT_ID=… -e REDDIT_ADS_CLIENT_SECRET=… -- npx -y @filippofinke/reddit-ads-mcp@latest

Cursor

~/.cursor/mcp.json or .cursor/mcp.json

Windsurf

~/.codeium/windsurf/mcp_config.json

Gemini CLI

~/.gemini/settings.json

Cline / Roo Code

MCP settings of the extension

VS Code (Copilot)

.vscode/mcp.json, using "servers" instead of "mcpServers" and "type": "stdio"

Codex CLI

~/.codex/config.toml (see below)

Codex CLI uses TOML:

[mcp_servers.reddit-ads]
command = "npx"
args = ["-y", "@filippofinke/reddit-ads-mcp@latest"]
env = { REDDIT_ADS_CLIENT_ID = "your_client_id", REDDIT_ADS_CLIENT_SECRET = "your_client_secret" }

To run from source instead, clone the repo, run npm install && npm run build and use "command": "node", "args": ["/absolute/path/to/reddit-ads-mcp/dist/index.js"].

3. Log in

Ask your assistant anything, e.g. "List my Reddit ad accounts". On the first call the server opens Reddit's consent page. After you approve, the refresh token is saved to ~/.config/reddit-ads-mcp/tokens.json and reused from then on.

reddit_ads_auth_status shows the current state and reddit_ads_logout revokes and deletes the token.

Configuration

Variable

Default

Purpose

REDDIT_ADS_CLIENT_ID

required

App client ID

REDDIT_ADS_CLIENT_SECRET

required

App client secret

REDDIT_ADS_ACCOUNT_ID

Default ad account for tools taking ad_account_id

REDDIT_ADS_REDIRECT_PORT

8765

Port of the local OAuth callback server

REDDIT_ADS_REDIRECT_URI

http://localhost:<port>/callback

Must exactly match the app's redirect URL

REDDIT_ADS_SCOPES

adsread adsedit adsconversions adsdatadeletion

OAuth scopes

REDDIT_ADS_TOKEN_PATH

~/.config/reddit-ads-mcp/tokens.json

Token storage

REDDIT_ADS_USER_AGENT

node:reddit-ads-mcp:1.0.0

Reddit asks for <platform>:<app id>:<version> (by /u/<username>)

Example prompts

  • "Show last week's spend, clicks and CTR per campaign"

  • "Create a paused traffic campaign targeting r/legaladvice and r/law in the US with a $20 daily budget"

  • "Pause every ad group with a CPC above $2"

  • "Suggest subreddits and keywords similar to r/startups"

  • "Archive the campaign named Summer Sale"

Caveats

  • 💵 Money values are micro-currency: 1000000 is one unit of the account currency.

  • 🗑️ Campaigns, ad groups and ads have no hard delete: set status DELETED. A campaign must be ARCHIVED first, and deletion is only allowed three hours after the last change.

  • 📌 New ad groups require a conversion_pixel_id, usually equal to the ad account ID (see reddit_ads_list_pixels).

  • 🔎 The custom audience name filter needs an operator prefix: = for exact, @ for substring.

Scripts

npm run dev         # run from source with tsx
npm run build       # compile to dist/
npm run typecheck   # tsc --noEmit
npm run lint        # Biome lint + format check
npm run format      # Biome lint + format (write)

Author

👤 Filippo Finke

🤝 Contributing

Contributions, issues and feature requests are welcome! Feel free to check the issues page. Commits and PR titles follow Conventional Commits; releases are automated with release-please: merged commits accumulate into a Release PR that, once merged, tags the version, creates a GitHub release and publishes to npm.

Show your support

Give a ⭐️ if this project helped you!

📝 License

Copyright © 2026 Filippo Finke. This project is MIT licensed.


Unofficial project, not affiliated with Reddit, Inc.

Available Tools

114 tools
reddit_ads_api_requestRaw Reddit Ads API requestA
Destructive

Call any Reddit Ads API v3 endpoint directly. Use for endpoints without a dedicated tool. Path is relative to https://ads-api.reddit.com/api/v3 (e.g. 'me' or 'ad_accounts/{id}/campaigns'). Bodies for POST/PATCH/PUT are usually wrapped as {"data": {...}}.

Inputs: path (required), method (required), body, query.

reddit_ads_auth_statusAuth statusA
Read-only

Show whether the server holds valid Reddit Ads credentials.

Inputs: no named parameters.

reddit_ads_create_adCreate adA

Create an ad in an ad group. Standard ads promote a post: first create one with reddit_ads_create_post_job (or reddit_ads_create_post) and pass its post_id (t3_...). Create it PAUSED unless the user asks otherwise.

Inputs: data (required), ad_account_id.

reddit_ads_create_ad_groupCreate ad groupA

Create an ad group inside a campaign. All money values are micro-currency (1 USD = 1000000). Create it PAUSED unless the user asks otherwise. Under campaign budget optimization the bid_strategy, bid_type, goal_type, optimization_goal and view_through_conversion_type must match the campaign and goal_value must be null.

Inputs: data (required), ad_account_id.

reddit_ads_create_campaignCreate campaignA

Create a campaign. All money values are micro-currency (1 USD = 1000000). Create it PAUSED unless the user asks otherwise.

Inputs: data (required), ad_account_id.

reddit_ads_create_catalogCreate product catalogC

Create a product catalog for dynamic product ads.

Inputs: data (required), business_id (required).

reddit_ads_create_custom_audienceCreate custom audienceA

Create a custom audience. For customer lists, add users afterwards with reddit_ads_update_custom_audience_users.

Inputs: data (required), ad_account_id.

reddit_ads_create_data_deletion_jobDelete user data (ad account)C

Request deletion of a person's data from an ad account (requires the adsdatadeletion scope).

Inputs: data (required), ad_account_id.

reddit_ads_create_lead_gen_formCreate lead gen formC

Create a lead generation form.

Inputs: data (required), ad_account_id.

reddit_ads_create_pixel_data_deletion_jobDelete user data (pixel)A

Request deletion of a person's data collected by a pixel (requires the adsdatadeletion scope and business admin).

Inputs: data (required), pixel_id (required).

reddit_ads_create_postCreate post (legacy)A

Create a post on a profile synchronously (legacy posts API). Prefer reddit_ads_create_post_job.

Inputs: data (required), profile_id (required).

reddit_ads_create_poster_jobGenerate video postersA

Generate poster (thumbnail) images from a public video URL. Poll reddit_ads_get_poster_job for the result.

Inputs: data (required).

reddit_ads_create_post_jobCreate post (structured)A

Create an ad post on a profile asynchronously. Poll reddit_ads_get_post_job until status is SUCCESS to get the post_id for reddit_ads_create_ad. Media is fetched by Reddit from public URLs.

Inputs: data (required), profile_id (required).

reddit_ads_create_product_feedCreate product feedA

Create a scheduled product feed (max 2 per catalog, of different modes).

Inputs: data (required), catalog_id (required).

reddit_ads_create_product_setCreate product setB

Create a filtered product set for catalog ad groups (product_set_id).

Inputs: data (required), catalog_id (required).

reddit_ads_create_saved_audienceCreate saved audienceB

Save a targeting configuration to reuse on ad groups via saved_audience_id.

Inputs: data (required), ad_account_id.

reddit_ads_delete_catalogDelete product catalogA
Destructive

Permanently delete a product catalog with its feeds, sets and products.

Inputs: catalog_id (required).

reddit_ads_delete_creative_assetDelete creative assetC
Destructive

Permanently delete a creative asset from the library.

Inputs: creative_asset_id (required).

reddit_ads_delete_custom_audienceDelete custom audienceC
Destructive

Permanently delete a custom audience.

Inputs: audience_id (required).

reddit_ads_delete_product_feedDelete product feedB
Destructive

Permanently delete a product feed.

Inputs: feed_id (required).

reddit_ads_delete_productsDelete productsA
Destructive

Delete up to 1000 products from a catalog by product ID.

Inputs: data (required), catalog_id (required).

reddit_ads_delete_product_setDelete product setB
Destructive

Permanently delete a product set.

Inputs: product_set_id (required).

reddit_ads_estimate_audienceEstimate audience and deliveryA
Read-only

Estimate audience size and delivery (impressions, clicks, conversions, reach) for a planned ad group. Limited to 10 requests per minute.

Inputs: data (required), ad_account_id.

reddit_ads_get_adGet adB
Read-only

Get an ad including effective_status, rejection_reason, post_url and preview_url.

Inputs: ad_id (required).

reddit_ads_get_ad_accountGet ad accountA
Read-only

Get an ad account: currency, time zone, attribution settings, approval status and account-level exclusions.

Inputs: ad_account_id.

reddit_ads_get_ad_account_historyGet ad account change historyB
Read-only

Get the change log of an ad account (who changed what and when).

Inputs: data, max_pages, page_size, page_token, +1 more.

reddit_ads_get_ad_groupGet ad groupB
Read-only

Get an ad group including targeting, bidding and status.

Inputs: ad_group_id (required).

reddit_ads_get_app_last_firedGet app events last firedC
Read-only

Get when each mobile conversion event last fired for an app.

Inputs: app_id (required).

reddit_ads_get_businessGet businessC
Read-only

Get a business by ID.

Inputs: business_id (required).

reddit_ads_get_campaignGet campaignB
Read-only

Get a campaign including effective_status and delivery_status.

Inputs: campaign_id (required).

reddit_ads_get_catalogGet product catalogD
Read-only

Get a product catalog.

Inputs: catalog_id (required).

reddit_ads_get_catalog_import_reportGet catalog import reportB
Read-only

Get a download URL for a feed import report.

Inputs: import_id (required).

reddit_ads_get_channel_reachGet channel planning reachB
Read-only

Get a Reddit-wide reach curve (impressions vs reach) for media planning.

Inputs: geolocation (required), duration_days (required), gender, max_age, +1 more.

reddit_ads_get_communitiesGet communitiesA
Read-only

Look up subreddits by exact name, with subscriber counts and categories.

Inputs: names (required), max_pages, page_size, page_token.

reddit_ads_get_creative_assetGet creative assetD
Read-only

Get a creative asset.

Inputs: creative_asset_id (required).

reddit_ads_get_creative_asset_uploadGet creative asset uploadB
Read-only

Get a creative asset upload: status (PROCESSING_MEDIA|ACTIVE|INVALID_MEDIA) and resulting asset.

Inputs: id (required).

reddit_ads_get_custom_audienceGet custom audienceB
Read-only

Get a custom audience including its status and size.

Inputs: audience_id (required).

reddit_ads_get_data_deletion_jobGet data deletion jobB
Read-only

Get the status of a data deletion job (QUEUED|COMPLETED|FAILED).

Inputs: job_id (required).

reddit_ads_get_lead_gen_formGet lead gen formC
Read-only

Get a lead generation form.

Inputs: lead_gen_form_id (required).

reddit_ads_get_meGet current userA
Read-only

Get the authenticated Reddit Ads member or system user.

Inputs: no named parameters.

reddit_ads_get_pixel_last_firedGet pixel last firedA
Read-only

Get when each conversion event last fired for a pixel, to check tracking health.

Inputs: pixel_id (required).

reddit_ads_get_postGet postB
Read-only

Get a post by ID (t3_...).

Inputs: post_id (required).

reddit_ads_get_poster_jobGet poster jobB
Read-only

Get the status and generated posters of a poster generation job.

Inputs: id (required).

reddit_ads_get_post_jobGet post creation jobA
Read-only

Get the status of a structured post creation job (QUEUED|PROCESSING|SUCCESS|CLIENT_ERROR|SERVER_ERROR) and the resulting post_id.

Inputs: post_creation_job_id (required).

reddit_ads_get_product_feedGet product feedC
Read-only

Get a product feed.

Inputs: feed_id (required).

reddit_ads_get_product_setGet product setC
Read-only

Get a product set.

Inputs: product_set_id (required).

reddit_ads_get_profileGet profileC
Read-only

Get a Reddit profile by ID.

Inputs: profile_id (required).

reddit_ads_get_reportGet performance reportA
Read-only

Get performance metrics for an ad account. Metric keys come back lowercase. spend, cpc, cpv, ecpm, conversion_*ecpa, app_installecpa, app_install_skan and app_install_*revenue are micro-currency (divide by 1000000); conversion*_total_value is in cents. Data can take up to 6 hours to settle.

Inputs: ends_at (required), starts_at (required), fields, filter, +8 more.

reddit_ads_get_saved_audienceGet saved audienceC
Read-only

Get a saved audience.

Inputs: saved_audience_id (required).

reddit_ads_get_skan_availabilityGet SKAdNetwork availabilityC
Read-only

Get SKAdNetwork campaign, ad group and ad quota for an iOS app.

Inputs: app_id (required), ad_group_id, campaign_id.

reddit_ads_get_structured_postGet structured postD
Read-only

Get a structured post.

Inputs: post_id (required).

reddit_ads_get_third_party_trackersGet third-party trackersB
Read-only

List approved click and impression tracker domains for ad event_trackers.

Inputs: no named parameters.

reddit_ads_list_account_profilesList ad account profilesA
Read-only

List Reddit profiles (t2_ user IDs) an ad account can post ads as. Profile IDs are needed for posts, creative assets and ads.

Inputs: max_pages, page_size, page_token, ad_account_id.

reddit_ads_list_ad_accountsList all ad accountsA
Read-only

List every ad account the authenticated user can access, grouped by business. Start here to find ad_account_id values.

Inputs: no named parameters.

reddit_ads_list_ad_groupsList ad groupsC
Read-only

List ad groups in an ad account.

Inputs: id, max_pages, page_size, page_token, +2 more.

reddit_ads_list_adsList adsA
Read-only

List ads in an ad account. Filters are OR within a parameter and AND across parameters.

Inputs: id, max_pages, page_size, page_token, +5 more.

reddit_ads_list_appsList appsB
Read-only

List mobile apps used in the ad account's past campaigns.

Inputs: max_pages, page_size, page_token, ad_account_id.

reddit_ads_list_business_ad_accountsList business ad accountsA
Read-only

List ad accounts owned by a business (not those shared into it).

Inputs: business_id (required), ids, max_pages, page_size, +1 more.

reddit_ads_list_businessesList my businessesB
Read-only

List businesses the authenticated user belongs to.

Inputs: role, max_pages, page_size, page_token, +1 more.

reddit_ads_list_business_pixelsList business pixelsC
Read-only

List Reddit pixels of a business.

Inputs: business_id (required), max_pages, page_size, page_token.

reddit_ads_list_business_profilesList business profilesB
Read-only

List Reddit profiles owned by a business.

Inputs: business_id (required), max_pages, page_size, page_token.

reddit_ads_list_campaignsList campaignsC
Read-only

List campaigns in an ad account.

Inputs: id, max_pages, page_size, page_token, +1 more.

reddit_ads_list_carriersList carriersB
Read-only

List mobile carriers for targeting.

Inputs: max_pages, page_size, page_token.

reddit_ads_list_catalog_import_issuesList catalog import issuesC
Read-only

List issues found while importing a feed.

Inputs: import_id (required), code, max_pages, page_size, +1 more.

reddit_ads_list_catalog_importsList catalog importsC
Read-only

List feed import runs of a catalog.

Inputs: catalog_id (required), feed_ids, statuses, max_pages, +2 more.

reddit_ads_list_catalog_productsList catalog productsC
Read-only

List products in a catalog.

Inputs: catalog_id (required), ids, search, max_pages, +3 more.

reddit_ads_list_catalogsList product catalogsC
Read-only

List product catalogs of a business.

Inputs: business_id (required).

reddit_ads_list_creative_assetsList creative assetsB
Read-only

List creative assets in a profile's library.

Inputs: profile_id (required), name, types, max_pages, +5 more.

reddit_ads_list_creative_asset_uploadsList creative asset uploadsB
Read-only

Get the status of several creative asset uploads.

Inputs: id (required), profile_id (required).

reddit_ads_list_custom_audiencesList custom audiencesB
Read-only

List custom audiences (customer lists, retargeting, lookalikes) in an ad account.

Inputs: name, max_pages, page_size, page_token, +1 more.

reddit_ads_list_devicesList devicesA
Read-only

List device makes and models for targeting.

Inputs: max_pages, page_size, page_token.

reddit_ads_list_funding_instrument_allocationsList funding instrument allocationsB
Read-only

List child funding instruments allocated from a funding instrument.

Inputs: funding_instrument_id (required), max_pages, page_size, page_token.

reddit_ads_list_funding_instrumentsList funding instrumentsC
Read-only

List the funding instruments (payment methods, credit lines) of an ad account.

Inputs: mode, types, search, end_time, +6 more.

reddit_ads_list_geolocationsList geolocationsA
Read-only

List geolocation targets. Without filters returns countries; filter by country for regions/metros, or search cities / postal codes.

Inputs: country, postal_code, cities_search.

reddit_ads_list_industriesList industriesB
Read-only

List valid business industries.

Inputs: no named parameters.

reddit_ads_list_interestsList interestsB
Read-only

List interest categories for targeting.

Inputs: no named parameters.

reddit_ads_list_languagesList languagesC
Read-only

List languages for targeting.

Inputs: max_pages, page_size, page_token.

reddit_ads_list_lead_gen_formsList lead gen formsC
Read-only

List lead generation forms in an ad account.

Inputs: max_pages, page_size, page_token, ad_account_id.

reddit_ads_list_pixelsList pixelsB
Read-only

List Reddit pixels of an ad account.

Inputs: max_pages, page_size, page_token, ad_account_id.

reddit_ads_list_postsList postsC
Read-only

List posts on a profile (legacy posts API).

Inputs: profile_id (required), type, source, max_pages, +2 more.

reddit_ads_list_product_feedsList product feedsC
Read-only

List feeds of a product catalog.

Inputs: catalog_id (required).

reddit_ads_list_product_set_productsList product set productsC
Read-only

List products in a product set.

Inputs: product_set_id (required), ids, search, max_pages, +4 more.

reddit_ads_list_product_setsList product setsC
Read-only

List product sets of a catalog.

Inputs: catalog_id (required), max_pages, page_size, page_token.

reddit_ads_list_saved_audiencesList saved audiencesB
Read-only

List saved (reusable) targeting audiences.

Inputs: max_pages, page_size, page_token, ad_account_id.

reddit_ads_list_structured_postsList structured postsC
Read-only

List structured posts on a profile.

Inputs: profile_id (required), id, type, source, +3 more.

reddit_ads_list_third_party_audiencesList third-party audiencesB
Read-only

List third-party data audiences (LiveRamp, Bombora) with sizes and costs.

Inputs: max_pages, page_size, page_token.

reddit_ads_list_time_zonesList time zonesC
Read-only

List supported time zones.

Inputs: max_pages, page_size, page_token.

reddit_ads_loginLog in to Reddit AdsA

Open the Reddit OAuth consent page in the browser and wait for the callback. Returns the authorization URL if the login is not completed in time.

Inputs: no named parameters.

reddit_ads_logoutLog out of Reddit AdsA
Destructive

Revoke the stored refresh token and delete it from disk.

Inputs: no named parameters.

reddit_ads_query_ad_accountsQuery ad accountsB
Read-only

Search the ad accounts a business can access, including shared ones, by name, ID, actor, role or asset.

Inputs: business_id (required), data, max_pages, page_size, +1 more.

reddit_ads_query_business_funding_instrumentsQuery business funding instrumentsC
Read-only

Query funding instruments available to a business.

Inputs: business_id (required), data, search, max_pages, +2 more.

reddit_ads_search_communitiesSearch communitiesA
Read-only

Search subreddits for targeting by name or topic.

Inputs: query (required), max_pages, page_size, page_token.

reddit_ads_send_conversion_eventsSend conversion eventsA

Send server-side conversion events through the Conversions API (requires the adsconversions scope). Use test_id to send test events visible in Events Manager.

Inputs: data (required), pixel_id (required).

reddit_ads_set_statusSet statusA
Destructive

Activate, pause, archive or delete several campaigns, ad groups or ads at once. Reddit has no hard delete for these entities; DELETED is the delete operation. Deleting follows Reddit's rules: a campaign must be ARCHIVED first, and campaigns and ad groups can only be DELETED three hours after their last change (archive now, delete later).

Inputs: ids (required), status (required), entity_type (required).

reddit_ads_suggest_bidSuggest bidA
Read-only

Get minimum and suggested bid values (micro-currency) for a planned ad group.

Inputs: data (required).

reddit_ads_suggest_communitiesSuggest communitiesC
Read-only

Suggest related subreddits from seed subreddits and/or a website URL.

Inputs: names, max_pages, page_size, page_token, +1 more.

reddit_ads_suggest_keywordsSuggest keywordsB
Read-only

Get keyword suggestions with monthly views from seed keywords.

Inputs: data (required).

reddit_ads_update_adUpdate adA

Update an ad. Pass only the fields to change. To delete set configured_status to DELETED. The ad group cannot be changed.

Inputs: data (required), ad_id (required).

reddit_ads_update_ad_accountUpdate ad accountC

Update ad account settings.

Inputs: data (required), ad_account_id.

reddit_ads_update_ad_groupUpdate ad groupA

Update an ad group. Pass only the fields to change. To delete set configured_status to DELETED. Deleting follows Reddit's rules: a campaign must be ARCHIVED first, and campaigns and ad groups can only be DELETED three hours after their last change (archive now, delete later). Targeting is replaced as a whole object. All money values are micro-currency (1 USD = 1000000).

Inputs: data (required), ad_group_id (required).

reddit_ads_update_businessUpdate businessC

Update a business.

Inputs: data (required), business_id (required).

reddit_ads_update_campaignUpdate campaignA

Update a campaign. Pass only the fields to change. To delete set configured_status to DELETED, to archive set ARCHIVED. Deleting follows Reddit's rules: a campaign must be ARCHIVED first, and campaigns and ad groups can only be DELETED three hours after their last change (archive now, delete later). All money values are micro-currency (1 USD = 1000000).

Inputs: data (required), campaign_id (required).

reddit_ads_update_catalogUpdate product catalogD

Update a product catalog.

Inputs: data (required), catalog_id (required).

reddit_ads_update_creative_assetRename creative assetC

Rename a creative asset.

Inputs: data (required), creative_asset_id (required).

reddit_ads_update_custom_audience_usersAdd or remove audience usersA

Add or remove users in a customer list audience. Values must be SHA-256 hashes of normalized (lowercased, trimmed) emails or mobile ad IDs. Max 2500 rows per call.

Inputs: data (required), audience_id (required).

reddit_ads_update_postUpdate postB

Update a post. Only allow_comments can be changed.

Inputs: data (required), post_id (required).

reddit_ads_update_product_feedUpdate product feedD

Update a product feed.

Inputs: data (required), feed_id (required).

reddit_ads_update_product_setUpdate product setC

Update a product set.

Inputs: data (required), product_set_id (required).

reddit_ads_update_saved_audienceUpdate saved audienceB

Update a saved audience. Set status to DELETED to delete it.

Inputs: data (required), saved_audience_id (required).

reddit_ads_update_structured_postUpdate structured postB

Update a structured post. Only allow_comments can be changed.

Inputs: data (required), post_id (required).

reddit_ads_upload_creative_assetsUpload creative assetsA

Add up to 50 assets to a profile's creative library (used by Reddit Max ads). Media is fetched by Reddit from public URLs. Poll reddit_ads_get_creative_asset_upload for the resulting asset.

Inputs: data (required), profile_id (required).

reddit_ads_upsert_productsUpsert productsB

Create or update up to 1000 products in a catalog.

Inputs: data (required), catalog_id (required).

reddit_ads_validate_geolocationsValidate geolocationsA
Read-only

Validate geolocation IDs or city names before using them in targeting.

Inputs: data (required).

reddit_ads_validate_keywordsValidate keywordsC
Read-only

Check whether keywords are brand safe.

Inputs: data (required).

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    C2.9/5.0

    Scored across 114 tools

    Disambiguation4/5

    Most tools map to a distinct resource and action, but there is notable overlap between legacy posts tools (list/get/update/create_post) and structured posts tools (list/get/update/create_post_job), and between set_status and the various update_* status changes. These overlaps are mostly clarified by descriptions, so an agent can usually choose correctly.

    Naming Consistency4/5

    Nearly all tools follow the reddit_ads_ prefix and snake_case with a verb_noun pattern (e.g., list_campaigns, create_ad). A few exceptions like auth_status, api_request, logout, and login break the verb_noun convention, but the overall naming is highly consistent.

    Tool Count1/5

    114 tools is far beyond the typical 3-15 range for an MCP server and exceeds the 50-tool threshold for extreme mismatch. While the Reddit Ads API is large, this volume is overwhelming for an agent and likely degrades tool selection.

    Completeness5/5

    The tool set covers an extensive surface: CRUD for campaigns, ad groups, ads, posts, creative assets, audiences, catalogs, feeds, product sets, pixels, conversions, lead gen, and targeting options. With reddit_ads_api_request as a fallback, the surface is effectively complete for the Reddit Ads API.

    Maintenance

    ActivityNo data
    ResponsivenessOutdated data

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      A
      quality
      B
      maintenance
      MCP server for Reddit Ads API v3 enabling campaign management, ad creation, performance reporting, and audience targeting through Claude.
      10
      105 npm
      3
      MIT
    • A
      license
      B
      quality
      D
      maintenance
      A self-hosted MCP server for the Reddit Ads API v3, enabling reading ad accounts, campaigns, ad groups, ads, and performance reports, with optional write support for pausing/activating, budgeting, patching, and creating entities.
      6
      MIT
    • A
      license
      A
      quality
      C
      maintenance
      Enables reading and writing Reddit Ads campaigns, ad groups, ads, and performance reports with tiered safety controls, using the Reddit Ads API v3.
      30
      114 npm
      1
      MIT
    • A
      license
      A
      quality
      A
      maintenance
      Tri-channel AdsAgent plugin (Meta, Google Ads, TikTok): hosted OAuth MCP at adsagent.md plus agent skills for insights, templates, and prepare/confirm writes. Install via adsagents/adsagent-ai-skills. Meta MCP: https://adsagent.md/mcp/v2. Registry: md.adsagent/meta-mcp.
      4
      3
      MIT