Skip to main content
Glama
filippofinke

reddit-ads-mcp

by filippofinke

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
REDDIT_ADS_SCOPESNoOAuth scopesadsread adsedit adsconversions adsdatadeletion
REDDIT_ADS_CLIENT_IDYesApp client ID (required)
REDDIT_ADS_ACCOUNT_IDNoDefault ad account for tools taking ad_account_id
REDDIT_ADS_TOKEN_PATHNoToken storage path~/.config/reddit-ads-mcp/tokens.json
REDDIT_ADS_USER_AGENTNoReddit asks for <platform>:<app id>:<version> (by /u/<username>)node:reddit-ads-mcp:1.0.0
REDDIT_ADS_REDIRECT_URINoMust exactly match the app's redirect URLhttp://localhost:<port>/callback
REDDIT_ADS_CLIENT_SECRETYesApp client secret (required)
REDDIT_ADS_REDIRECT_PORTNoPort of the local OAuth callback server8765

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

CapabilityDetails
tools
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
reddit_ads_loginA

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.

reddit_ads_auth_statusA

Show whether the server holds valid Reddit Ads credentials.

reddit_ads_logoutA

Revoke the stored refresh token and delete it from disk.

reddit_ads_api_requestA

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": {...}}.

reddit_ads_list_ad_accountsA

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

reddit_ads_get_meA

Get the authenticated Reddit Ads member or system user.

reddit_ads_list_businessesB

List businesses the authenticated user belongs to.

reddit_ads_get_businessC

Get a business by ID.

reddit_ads_update_businessC

Update a business.

reddit_ads_list_industriesB

List valid business industries.

reddit_ads_list_business_ad_accountsA

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

reddit_ads_query_ad_accountsB

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

reddit_ads_get_ad_accountA

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

reddit_ads_update_ad_accountC

Update ad account settings.

reddit_ads_get_ad_account_historyB

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

reddit_ads_list_account_profilesA

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

reddit_ads_list_business_profilesB

List Reddit profiles owned by a business.

reddit_ads_get_profileC

Get a Reddit profile by ID.

reddit_ads_list_funding_instrumentsC

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

reddit_ads_query_business_funding_instrumentsC

Query funding instruments available to a business.

reddit_ads_list_funding_instrument_allocationsB

List child funding instruments allocated from a funding instrument.

reddit_ads_list_time_zonesC

List supported time zones.

reddit_ads_get_third_party_trackersB

List approved click and impression tracker domains for ad event_trackers.

reddit_ads_list_appsB

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

reddit_ads_get_app_last_firedC

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

reddit_ads_get_skan_availabilityC

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

reddit_ads_list_campaignsC

List campaigns in an ad account.

reddit_ads_get_campaignB

Get a campaign including effective_status and delivery_status.

reddit_ads_create_campaignA

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

reddit_ads_update_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).

reddit_ads_list_ad_groupsC

List ad groups in an ad account.

reddit_ads_get_ad_groupB

Get an ad group including targeting, bidding and status.

reddit_ads_create_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.

reddit_ads_update_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).

reddit_ads_list_adsA

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

reddit_ads_get_adB

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

reddit_ads_create_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.

reddit_ads_update_adA

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

reddit_ads_set_statusA

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).

reddit_ads_create_post_jobA

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.

reddit_ads_get_post_jobA

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

reddit_ads_list_structured_postsC

List structured posts on a profile.

reddit_ads_get_structured_postD

Get a structured post.

reddit_ads_update_structured_postB

Update a structured post. Only allow_comments can be changed.

reddit_ads_list_postsC

List posts on a profile (legacy posts API).

reddit_ads_create_postA

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

reddit_ads_get_postB

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

reddit_ads_update_postB

Update a post. Only allow_comments can be changed.

reddit_ads_upload_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.

reddit_ads_list_creative_asset_uploadsB

Get the status of several creative asset uploads.

reddit_ads_get_creative_asset_uploadB

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

reddit_ads_list_creative_assetsB

List creative assets in a profile's library.

reddit_ads_get_creative_assetD

Get a creative asset.

reddit_ads_update_creative_assetC

Rename a creative asset.

reddit_ads_delete_creative_assetC

Permanently delete a creative asset from the library.

reddit_ads_create_poster_jobA

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

reddit_ads_get_poster_jobB

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

reddit_ads_get_reportA

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.

reddit_ads_suggest_bidA

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

reddit_ads_estimate_audienceA

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

reddit_ads_get_channel_reachB

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

reddit_ads_search_communitiesA

Search subreddits for targeting by name or topic.

reddit_ads_get_communitiesA

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

reddit_ads_suggest_communitiesC

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

reddit_ads_list_interestsB

List interest categories for targeting.

reddit_ads_list_geolocationsA

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

reddit_ads_validate_geolocationsA

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

reddit_ads_list_devicesA

List device makes and models for targeting.

reddit_ads_list_carriersB

List mobile carriers for targeting.

reddit_ads_list_languagesC

List languages for targeting.

reddit_ads_list_third_party_audiencesB

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

reddit_ads_suggest_keywordsB

Get keyword suggestions with monthly views from seed keywords.

reddit_ads_validate_keywordsC

Check whether keywords are brand safe.

reddit_ads_list_custom_audiencesB

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

reddit_ads_get_custom_audienceB

Get a custom audience including its status and size.

reddit_ads_create_custom_audienceA

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

reddit_ads_update_custom_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.

reddit_ads_delete_custom_audienceC

Permanently delete a custom audience.

reddit_ads_list_saved_audiencesB

List saved (reusable) targeting audiences.

reddit_ads_get_saved_audienceC

Get a saved audience.

reddit_ads_create_saved_audienceB

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

reddit_ads_update_saved_audienceB

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

reddit_ads_list_lead_gen_formsC

List lead generation forms in an ad account.

reddit_ads_get_lead_gen_formC

Get a lead generation form.

reddit_ads_create_lead_gen_formC

Create a lead generation form.

reddit_ads_list_pixelsB

List Reddit pixels of an ad account.

reddit_ads_list_business_pixelsC

List Reddit pixels of a business.

reddit_ads_get_pixel_last_firedA

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

reddit_ads_send_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.

reddit_ads_create_data_deletion_jobC

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

reddit_ads_create_pixel_data_deletion_jobA

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

reddit_ads_get_data_deletion_jobB

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

reddit_ads_list_catalogsC

List product catalogs of a business.

reddit_ads_get_catalogD

Get a product catalog.

reddit_ads_create_catalogC

Create a product catalog for dynamic product ads.

reddit_ads_update_catalogD

Update a product catalog.

reddit_ads_delete_catalogA

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

reddit_ads_list_product_feedsC

List feeds of a product catalog.

reddit_ads_get_product_feedC

Get a product feed.

reddit_ads_create_product_feedA

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

reddit_ads_update_product_feedD

Update a product feed.

reddit_ads_delete_product_feedB

Permanently delete a product feed.

reddit_ads_list_catalog_importsC

List feed import runs of a catalog.

reddit_ads_list_catalog_import_issuesC

List issues found while importing a feed.

reddit_ads_get_catalog_import_reportB

Get a download URL for a feed import report.

reddit_ads_list_product_setsC

List product sets of a catalog.

reddit_ads_get_product_setC

Get a product set.

reddit_ads_create_product_setB

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

reddit_ads_update_product_setC

Update a product set.

reddit_ads_delete_product_setB

Permanently delete a product set.

reddit_ads_list_catalog_productsC

List products in a catalog.

reddit_ads_list_product_set_productsC

List products in a product set.

reddit_ads_upsert_productsB

Create or update up to 1000 products in a catalog.

reddit_ads_delete_productsA

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

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

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

ActivityMaintained
ResponsivenessNo issues