mcp-reddit-brand-presence-mapper
Resolves one company domain (or subreddit handle) into a single flat, Clay-ready row describing that brand's Reddit presence.
Discover a subreddit from a domain — pass
company_domain(e.g.shopify.com) to run the full discovery cascade; addcompany_nameto sharpen the identity gate and cut wrong matches.Skip discovery with a handle — pass
handle(stripeorr/stripe) to go straight to the fetch.Get subreddit vitality — subreddit URL, title, subscriber count, creation date, last post time, days since last post, recent post count and distinct recent authors, when Reddit serves them.
Sample brand mentions site-wide —
mentionQuery(defaults to your quoted domain) returns a mention sample, distinct subreddits, top subreddit and latest mention time.Tune the cost/depth —
includeMentions,includeFollowerCountsandskipCache(booleans sent as strings for Clay compatibility) control whether the mention feed, profile counts and the 7-day cache are used.Unlock subscriber counts — supply your own
redditClientIdandredditClientSecret, the only route to counts since Reddit 403s unauthenticated JSON routes; credentials are used for your run only and never stored.Trust the statuses — separate
subreddit_status,subreddit_subscribers_statusandmentions_statusfields report a refusal asblocked, never as zero or empty, so a blocked row is a retry candidate rather than a false negative.Know the scope — one company per call, read-only, no post text and no ongoing monitoring; requires an
APIFY_TOKENand consumes Apify credits per call.
Provides Reddit brand presence mapping by resolving a company domain to its subreddit and sampling public brand mentions across Reddit, including subreddit metadata, subscriber counts when credentials are provided, posting recency, cadence, and a sample of relevant mentions.
Reddit Brand Presence Mapper MCP Server
An MCP server that resolves a company domain to its subreddit and samples public mentions of the brand. It wraps the Mamba Labs Reddit Brand Presence and Mention Monitor actor on Apify and returns a Clay-ready flat JSON row to any MCP client.
What's Inside
Related MCP server: mcp-github-organization-signal-scanner
What it does
Give it a company domain and it returns that company's subreddit, how alive that subreddit is, and a sample of how much the brand is being talked about across Reddit as a whole. One flat row per company, covering the subreddit URL, subscriber count, posting cadence and a mention sample.
Read this limitation before you build on it. Reddit refuses a share of requests however they are routed. Measured on the platform 2026-08-23 across nine companies over residential connections, the subreddit feed was readable for four and refused for five, and the mention feed the same. The public .rss feeds are the only open route; Reddit returns 403 on every unauthenticated JSON route. A refusal is reported as blocked and never as a zero, so an absence is never mistaken for a finding, and a blocked row is worth retrying. Supplying your own Reddit app client id and secret is the only route to a subscriber count.
All of the lookup runs on Apify. This package is a thin client that calls the actor and hands back the result unchanged.
Quick start
You need Node.js 18 or newer and an Apify account with an API token.
Add this to your Claude Desktop config:
{
"mcpServers": {
"mamba-reddit-brand-presence-mapper": {
"command": "npx",
"args": ["-y", "@mambalabsdev/mcp-reddit-brand-presence-mapper"],
"env": {
"APIFY_TOKEN": "your-apify-token"
}
}
}
}Get your token at https://console.apify.com/account/integrations, paste it in, and restart Claude Desktop. The map_reddit_brand_presence tool will be available.
Prerequisites
Node.js 18 or newer
An Apify account with an API token
Optional: your own Reddit app client id and secret, free to create at reddit.com/prefs/apps, if you want the subscriber count
Example prompts
"Find the subreddit for monzo.com and tell me how active it is."
"Map the Reddit presence for stripe.com and search mentions for "stripe.com" rather than the brand name."
"Look up r/monzo and skip the site wide mention sample."
"Is there an official subreddit for figma.com?"
Inputs
company_domain(optional): bare company domain, for exampleshopify.com. Supply this or a handle. With a domain the actor runs full discovery; with a handle it skips straight to the fetch.company_name(optional): improves search accuracy and is what the identity gate checks a discovered profile against, so supplying it reduces wrong matches.handle(optional): the subreddit name with or without ther/prefix, for examplestripe. Supplying it skips discovery.mentionQuery(optional): what to search Reddit for when measuring brand mentions. Defaults to your domain in quotes, which is far more precise than the brand name. A bare search forstripematches the English word;"stripe.com"returns developer subreddits.includeMentions(optional): when true (the default) a site wide mention sample is pulled alongside the subreddit. Set false for the official subreddit only, which is one fetch instead of two.includeFollowerCounts(optional): when true (the default) the profile is fetched and the counts are extracted. Set false to resolve the profile URL only, which is cheaper and needs no proxy.skipCache(optional): when false (the default) a successful lookup is cached for seven days and reused. Set true to force a fresh fetch.redditClientId(optional): your own Reddit app client id, free to create at reddit.com/prefs/apps. This is the only route to a subscriber count, because Reddit returns 403 on every unauthenticated JSON route. Leave it empty and everything else still works.redditClientSecret(optional): your own Reddit app client secret, paired with the client id above. Used for your run only and never stored.max_charge_usd(optional): spending cap for this call, in USD. The actor stops before any charge that would take the run past this amount and keeps every row already charged.
Supply either company_domain or handle.
Output
The tool returns the actor's flat JSON row for the company, with 26 snake_case fields and no nested objects. subreddit_status, subreddit_subscribers_status and mentions_status are separate, so a blocked read is distinguishable from an empty one. See the Apify Store page for the full output schema.
Example output
{
"degraded": false,
"degradation_reason": null,
"company_domain": "monzo.com",
"company_name": "Monzo",
"subreddit": "monzo",
"subreddit_url": "https://www.reddit.com/r/monzo/",
"subreddit_title": "Monzo Bank",
"subreddit_subscribers": null,
"subreddit_subscribers_status": "not_extractable",
"last_post_at": "2026-08-22T14:54:12+00:00",
"days_since_last_post": 0.6,
"recent_post_count": 25,
"distinct_recent_authors": 22,
"subreddit_status": "ok",
"mention_query_used": "\"monzo.com\"",
"mention_sample_size": 25,
"distinct_subreddits": 7,
"top_subreddit": "UKfreeMoney",
"latest_mention_at": "2026-08-23T05:24:31+00:00",
"mentions_status": "ok",
"run_date": "2026-08-23T06:15:29.084Z"
}Features
Resolves an official or community subreddit starting from a company domain
Posting cadence and recency, when Reddit serves them
Site wide brand mention sample, when Reddit serves it
A refused request is reported as
blocked, never as a zeroYour own Reddit app credentials unlock the subscriber count
26 flat snake_case fields, one row per company
Pricing
You pay per event on Apify, billed to your own Apify account. Prices from the live pricing record, read 2026-10-16:
Event | Price per event (USD) | Fires when |
| $0.00005 | Charged when the Actor starts running. Number of events charged depends on Actor memory (one event per GB, minimum one event). |
| $0.0095 on the Free plan, down to $0.00665 on higher Apify plans | Once per company for which the discovery cascade completed and a non degraded row was produced, whether or not a subreddit was found. Does not fire on a degraded row. |
| $0.0065 on the Free plan, down to $0.00455 on higher Apify plans | Once per company whose candidate subreddit passed the identity gate and returned a readable public feed. Fires on the validation work, not on a populated subscriber cell. |
| $0.008 on the Free plan, down to $0.0056 on higher Apify plans | Once per company for which the site wide mention feed returned at least one mention. A search that Reddit rate limited, or that returned nothing, does not charge. Never fires when mentions are turned off. |
The actor's Apify page carries the current prices. Running this server consumes Apify credits.
Full actor documentation
This server is a thin client and holds no lookup logic. For the complete input and output reference, pricing, and run history, see the Apify Store page:
https://apify.com/mambalabs/reddit-brand-presence-mapper
Mamba Labs GTM Suite
This server is one of the Mamba Labs GTM Suite MCP servers. Every actor in the suite takes a domain or a company and returns one flat row, so they stack in the same Clay table without reshaping anything. The actor behind this server is the Reddit Brand Presence and Mention Monitor, immutable Apify actor ID pKQZmDaT70SEb54bZ.
Built by Mamba Labs | npm | Apify Store
License
MIT
Built by Mamba Labs. https://apify.com/mambalabs
Available Tools
1 toolmap_reddit_brand_presenceMap Reddit Brand PresenceARead-onlyIdempotent
Resolve a company domain to that company's official subreddit and, optionally, sample recent public mentions of the brand. Returns the subreddit URL, subscriber count, creation date and a mention sample, as one flat Clay ready row. IMPORTANT LIMITATION: Reddit refuses a share of requests however they are routed. Measured on the platform 2026-08-23 across nine companies over residential connections, the subreddit feed was readable for four and refused for five, and the mention feed the same. A refusal is reported as blocked, never as an empty result or a zero, and is worth retrying. Subscriber counts need the caller's own Reddit app credentials (redditClientId and redditClientSecret), because Reddit refuses every unauthenticated JSON route. Use it for one company at a time; it does not monitor Reddit over time or return post text. Read only; requires an APIFY_TOKEN and consumes Apify credits per call.
| Name | Required | Description | Default |
|---|---|---|---|
| handle | No | Optional. The subreddit name with or without the r/ prefix, for example stripe. Supplying it skips discovery. | |
| skipCache | No | When "false" (default) a successful lookup is cached for seven days and reused. Set "true" to force a fresh fetch. Sent as a string for Clay compatibility. | |
| company_name | No | Optional. Improves search accuracy and is what the identity gate checks a discovered profile against, so supplying it reduces wrong matches. | |
| mentionQuery | No | What to search Reddit for when measuring brand mentions. Defaults to your domain in quotes, which is measured far more precise than the brand name: a bare search for "stripe" returns r/Horses and r/MyHeroAcadamia because Reddit matches the English word, while "stripe.com" returns developer subreddits. | |
| company_domain | No | Bare company domain, for example shopify.com. Supply this or a handle. With a domain the actor runs full discovery; with a handle it skips straight to the fetch. | |
| redditClientId | No | YOUR OWN Reddit app client id. Free to create at reddit.com/prefs/apps. This is the only route to a subscriber count: Reddit returns 403 on every unauthenticated JSON route. Leave empty and everything else still works. | |
| includeMentions | No | When "true" (default) a site wide mention sample is pulled alongside the subreddit. Set "false" for the official subreddit only, which is one fetch instead of two. Sent as a string for Clay compatibility. | |
| redditClientSecret | No | YOUR OWN Reddit app client secret, paired with the client id above. Used for your run only and never stored. | |
| includeFollowerCounts | No | When "true" (default) the profile page is fetched and the counts are extracted. Set "false" to resolve the profile URL only, which is cheaper and needs no proxy. Sent as a string for Clay compatibility. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations (readOnly/openWorld/idempotent/non-destructive): it discloses that Reddit refuses a measurable share of requests, that refusals surface as 'blocked' rather than empty/zero, that retrying is worthwhile, and that subscriber counts require caller-supplied Reddit app credentials. This is exactly the operational context an agent needs and cannot get from structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads purpose, then the limitation and usage constraints, then prerequisites. Dense but well organized; the measured-refusal statistic is slightly verbose but earns its place by justifying the retry guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With nine optional parameters, no annotations for output and no output schema, the description compensates by describing the returned row, the credential requirement, the refusal semantics, and the per-call cost. An agent has everything needed to invoke and interpret results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and each parameter is already well documented, so the schema carries the burden. The description reinforces why credentials matter and that domain-based discovery differs from handle-based fetch, but it adds little parameter syntax beyond what the schema states. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: resolve a company domain to its official subreddit and optionally sample brand mentions. It also names the shape of the result (subreddit URL, subscriber count, creation date, mention sample) so the agent knows exactly what comes back. There are no siblings, but the scope is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly bounds usage: 'Use it for one company at a time; it does not monitor Reddit over time or return post text.' It also states the read-only nature, the APIFY_TOKEN prerequisite, and that each call consumes Apify credits. When-to-use, when-not-to-use, and cost are all covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
v1.1.1- Changed
map_reddit_brand_presence1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
1 tool update
v1.0.0- First observed
map_reddit_brand_presence
TDQS
Scored across 1 tool
With a single tool there is no possibility of misselection, and its purpose (domain → official subreddit plus optional mention sample) is stated unambiguously. No overlapping or competing tools exist.
The lone name map_reddit_brand_presence follows a clear verb_noun convention matching the server's stated purpose. There are no other names to conflict with it.
The server is deliberately narrow (one company at a time, one flat row), so one tool is defensible, but a 1-tool surface is thin for anything beyond a single narrow lookup. It leaves no room for retries or partial re-fetches that the description itself says are needed.
The stated scope—resolve a domain to a subreddit and optionally sample mentions—is fully covered by the one tool, including documented blocked/refusal handling. Gaps (no post text, no historical monitoring, no retry tool) are explicitly declared out of scope, so agents can work around them.
Maintenance
Related MCP Connectors
Reddit MCP server: search posts, subreddit feeds, comments & user profiles as JSON. No API key.
Find high-intent Reddit conversations and manage lead workflows from MCP-compatible AI agents.
Reddit API as MCP tools: search, subreddits, posts, comments, users, monitors, webhooks, feedback.
- MysocialOAuthio.mysocial
Social media MCP server: your Instagram, TikTok, YouTube, LinkedIn and Threads history for your AI.
Related MCP Servers
- AlicenseAqualityAmaintenanceMCP server for the Mamba Labs Bluesky Brand Presence Mapper actor on Apify. Resolve a company domain to its Bluesky account with exact follower, following and post counts.1108 npmMIT
- AlicenseAqualityAmaintenanceMCP server for the Mamba Labs GitHub Organization Signal Scanner actor on Apify. Resolve a company domain to its GitHub organization with repo, language and activity signals.194 npmMIT
- AlicenseAqualityAmaintenanceMCP server for the Mamba Labs Website Traffic Rank Estimator actor on Apify. Get a research grade Tranco popularity rank and trend for any company domain.1110 npmMIT
- AlicenseAqualityAmaintenanceMCP server for the Mamba Labs X Twitter Brand Presence Mapper actor on Apify. Resolve a company domain to its X handle, profile URL and follower metrics.1106 npmMIT