Skip to main content
Glama
mambalabsdev

mcp-reddit-brand-presence-mapper

Reddit Brand Presence Mapper MCP Server

Smithery Glama score MCP Registry npm version npm downloads license mcpservers.org

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

  • 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 the r/ prefix, for example stripe. 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 for stripe matches 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 zero

  • Your 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

apify-actor-start

$0.00005

Charged when the Actor starts running. Number of events charged depends on Actor memory (one event per GB, minimum one event).

company-checked

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

profile-resolved

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

mention-sample-collected

$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 tool
map_reddit_brand_presenceMap Reddit Brand PresenceA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
handleNoOptional. The subreddit name with or without the r/ prefix, for example stripe. Supplying it skips discovery.
skipCacheNoWhen "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_nameNoOptional. Improves search accuracy and is what the identity gate checks a discovered profile against, so supplying it reduces wrong matches.
mentionQueryNoWhat 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_domainNoBare 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.
redditClientIdNoYOUR 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.
includeMentionsNoWhen "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.
redditClientSecretNoYOUR OWN Reddit app client secret, paired with the client id above. Used for your run only and never stored.
includeFollowerCountsNoWhen "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

A4.6/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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. 1 tool updatev1.1.1
    • Changedmap_reddit_brand_presence1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
  2. 1 tool updatev1.0.0
    • First observedmap_reddit_brand_presence

TDQS

A4.5/5.0

Scored across 1 tool

Disambiguation5/5

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.

Naming Consistency5/5

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.

Tool Count3/5

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.

Completeness4/5

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

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers