Skip to main content
Glama
$ prospector profiles
Available profiles:
  - hospital-tech
  - saas-pain

$ prospector sweep hospital-tech        # two-stage scrape → scored SQLite store
$ prospector report hospital-tech       # evidence-bound Markdown report

prospector pulls Reddit content through the public .json endpoints, scores every post and comment against a per-topic "pain" lexicon, stores the lot in SQLite, and renders a report of recurring unmet needs — each one backed by real permalinks and verbatim quotes. Point it at any niche by dropping in a YAML profile; the flagship profile hunts for a piece of tech missing from hospitals that frontline staff wish existed. The same engine runs as an MCP server, turning Claude into a Reddit research specialist that collects once and reasons over the store many times.

The engine is deterministic plumbing — no LLM is required to scrape, score, or store. Insight is the client's job: Claude via MCP, or an optional built-in --analyze report.

✨ Features

  • Reddit .json client — listings, in-sub search, and comment trees; descriptive User-Agent, 429 Retry-After backoff, on-disk response cache. Optional free OAuth (env vars) lifts the rate limit ~10×.

  • Two-stage scrape — a broad, cheap post sweep, then comment trees fetched only for threads that clear the pain threshold or run hot. Spends the rate-limit budget where the signal is.

  • Deterministic pain scorer — a per-profile weighted-regex lexicon gives every item a transparent pain_score plus the exact patterns that fired. No model, fully reproducible.

  • Evidence-bound reports — a "gap" is structurally dropped unless it clears the profile's thresholds (≥N distinct items, across ≥M subreddits, from ≥K authors), each with a stored permalink + quote. The renderer cannot emit an unbacked claim.

  • Plug-and-play profiles — a topic is one YAML file (subreddits, search_terms, pain_lexicon, thresholds). Swap the niche with zero code changes.

  • MCP server (FastMCP) — 9 tools (reddit_sweep, reddit_search, reddit_fetch_thread, reddit_query, reddit_get_evidence, reddit_stats, reddit_export, reddit_profiles, reddit_profile_get) so Claude can drive the whole loop.

  • Optional standalone analysisreport --analyze adds a one-paragraph thesis per gap via any OpenAI-compatible endpoint, constrained to the fetched evidence. Degrades to stats-only if no key is set.

Related MCP server: slopweaver

🛠 Stack

Python · httpx · Typer · SQLite · PyYAML · FastMCP · (optional) any OpenAI-compatible LLM

🚀 Run

pipx install prospector-reddit          # or: uvx prospector-reddit ...
# from source:
pip install -e ".[dev,analyze]"

prospector profiles                     # list topic profiles
prospector sweep hospital-tech          # collect + score + store
prospector query hospital-tech --min-pain 4 --sort pain
prospector report hospital-tech --out reports/hospital.md
prospector report hospital-tech --analyze   # + LLM thesis (needs an LLM endpoint)

Higher throughput (optional, free): create a Reddit "script" app and export REDDIT_CLIENT_ID / REDDIT_CLIENT_SECRET before sweeping — the client switches to OAuth (100 req/min). LLM analysis reads FREELLMAPI_BASE_URL+FREELLMAPI_KEY (or the OPENAI_* equivalents).

Use it from Claude (MCP)

Register the server in your MCP client (.mcp.json):

{ "mcpServers": { "prospector": { "command": "prospector", "args": ["mcp"] } } }

Then Claude can reddit_sweep a profile, reddit_query the store, drill hot threads with reddit_fetch_thread, and resolve citations with reddit_get_evidence — collect once, reason many.

🧠 How it works

 profiles/*.yaml ─┐
                  ▼
   RedditClient ──► two-stage scrape ──► lexicon scorer ──► SQLite store
   (.json/OAuth)      posts→comments        pain_score          │
                                                                ▼
                              evidence-bound renderer ◄── Claude (MCP)  or  --analyze
                              (drops under-evidenced gaps)

The core engine never invents anything — it only surfaces what it actually fetched, and the report renderer enforces the evidence contract, so every claimed gap is traceable to real Reddit permalinks and quotes.

🗺 Roadmap

Code complete and verified locally — 97/97 unit tests pass, all modules import, the CLI and the full two-stage sweep run end to end, and all 9 MCP tools register. Built with a frozen interface contract (INTERFACES.md) so the modules integrate cleanly.

  • Known limitation — Reddit blocks datacenter/VPN IPs. Unauthenticated .json (and even OAuth) returns 403 from VPN/hosting-provider IP ranges. Run from a normal residential connection, or use OAuth, for live access. The engine handles the block gracefully (logs and continues) rather than crashing.

  • Known limitation — results are hypotheses to validate, not validated needs. Reddit is not ground truth and venting is not a market; the medical profile makes no clinical claim.

  • Generate a real flagship hospital-tech report (pending a live sweep from a clean IP).

  • Optional semantic/embedding rerank to catch paraphrased complaints the lexicon misses.

  • Trend deltas — surface gaps that are rising over time.

📄 License

MIT — see LICENSE. Read-only and non-commercial by design; respects Reddit's terms, no bulk-data redistribution.

Available Tools

9 tools
reddit_exportB

Export stored items as a serialized string in json, csv or md.

Applies the same profile / min_pain filters as reddit_query and returns the rendered payload as text (highest pain first). Useful for handing a dataset back to the user.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
formatNojson
profileNo
min_painNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so description carries full burden. It discloses return format and sorting (highest pain first) but omits behavioral traits like read-only status, rate limits, or auth requirements.

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?

Two concise sentences, front-loaded with core purpose. No wasted words, though could benefit from structured parameter notes.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 4 parameters and a sibling set, the description covers purpose and output format adequately but lacks parameter explanations and output schema details. An output schema exists but isn't used in the description.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema has 0% description coverage, and the description only mentions profile and min_pain filters by reference to reddit_query, without explaining their semantics or syntax. Limits and format are left implicit.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool exports stored items as json/csv/md and applies filters like reddit_query. It distinguishes from siblings by focusing on export rather than live querying.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It mentions usefulness for handing data to users and applies same filters as reddit_query, but doesn't explicitly state when to use vs. alternatives or when not to use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

reddit_fetch_threadB

Fetch a post's comment tree live and store the comments.

post_id may be a bare id (abc123) or a fullname (t3_abc123). Returns {"post": <post dict or None>, "comments": [<comment dicts>], "comments_collected": N}. The post object is included when it is already in the store (e.g. from a prior sweep/search). Comments are stored so you can cite them as evidence afterwards.

ParametersJSON Schema
NameRequiredDescriptionDefault
post_idYes
min_scoreNo
max_commentsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It discloses that the tool fetches live data, stores comments for later evidence, and includes the post object only if already stored. However, it lacks details on side effects like overwriting behavior, rate limits, or permission requirements, leaving some transparency gaps.

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?

The description is well-structured, starting with the main action, then parameter detail, return format, and an important note about post inclusion. It is concise enough without unnecessary fluff, though the parameter explanation could be moved to the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the main function, parameter info for post_id, return format, and the side effect of storing comments. However, it does not explain error handling, interaction with stored data (e.g., overwrite vs append), or authentication, leaving some gaps for a tool with no annotations or enriched schema.

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 coverage is 0%, so description must compensate. It adds meaning for post_id by specifying allowed formats (bare id or fullname) with examples. However, min_score and max_comments are not explained beyond their defaults, leaving their semantics unclear. Thus partial added value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states that the tool fetches a post's comment tree live and stores the comments, which identifies a specific verb and resource. While it does not explicitly compare to siblings, the function is distinct from other reddit tools like reddit_search or reddit_export, so purpose is clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for fetching comments from a specific post, but it provides no explicit guidance on when to use this tool versus alternatives (e.g., reddit_search for broader retrieval or reddit_sweep for stored data). There is no mention of prerequisites or when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

reddit_get_evidenceA

Resolve stored items into citable evidence for the given ids.

Returns one EvidenceItem dict per known id (in the order requested) with the permalink and a trimmed verbatim quote — use this to ground any claim in a real Reddit link instead of paraphrasing. Unknown ids are skipped.

ParametersJSON Schema
NameRequiredDescriptionDefault
idsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses important behavioral details: returns one dict per known id in order requested, includes permalink and trimmed quote, skips unknown ids. This conveys read-only behavior even without annotations, though no explicit safety or rate-limit info.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences: first for action, second for return structure, third for usage guidance. No unnecessary words, nicely front-loaded with the core purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Adequately covers the tool's behavior and return format, especially given the presence of an output schema for structural details. Lacks mention of error cases or prerequisites but is sufficient for a retrieval tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, but the description only says 'for the given ids' without explaining the format, origin, or constraints of the ids. Adds minimal value beyond the schema's type definition.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states it resolves stored items into evidence. Specifies return type (EvidenceItem), content (permalink, verbatim quote), and that it helps ground claims. However, 'stored items' is vague without context of other tools, and it doesn't explicitly differentiate from siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly advises using the tool to ground claims with real Reddit links instead of paraphrasing, providing clear when-to-use context. However, it does not mention when not to use or suggest alternatives among sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

reddit_profile_getA

Return one profile's full configuration as a dict.

Includes its subreddits, search_terms, pain_lexicon (weighted regex rules), pain_threshold and the evidence thresholds that gate reported gaps.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description is the sole source of behavioral disclosure. It indicates a read operation ('Return') and lists returned fields, but does not explicitly state it is read-only, nor does it mention authentication, rate limits, or side effects. The behavior is mostly inferred, not fully transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences that front-load the purpose and immediately enumerate the returned fields. No unnecessary words or repetition; every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given a single parameter, no annotations, and an existing output schema, the description covers the key aspects: it specifies the return type (dict) and lists the main fields. It is nearly complete, though it could note that the output schema provides further structure.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 0% description coverage for the only parameter 'name'. The description does not specify what 'name' refers to (e.g., Reddit username, profile ID). It only says 'one profile', which is insufficient to guide the agent on valid input values.

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?

The description clearly states the tool returns a profile's full configuration as a dict, specifying the exact resources it retrieves (subreddits, search_terms, etc.). This verb-resource pairing distinguishes it from sibling tools like reddit_profiles (listing profiles) and reddit_get_evidence (specific evidence).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when needing the full configuration of a specific profile, but it does not provide explicit guidance on when to use this over alternatives like reddit_profiles for listing or reddit_get_evidence for partial data. No when-not conditions are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

reddit_profilesA

List the available topic profiles by name (e.g. hospital-tech).

A profile defines which subreddits to mine, the search terms, and the pain lexicon. Use this first to discover what can be swept or queried.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden. It indicates this is a read-only listing operation, but does not explicitly state non-destructiveness, authentication needs, or rate limits. The explanation of what a profile defines adds context, but behavioral specifics are minimal.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise: two sentences that front-load the purpose and provide actionable usage guidance. Every sentence contributes essential information with no redundancy.

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?

Given the low complexity (no parameters, simple listing) and that an output schema is available, the description covers everything needed: purpose, example, and usage context. It is fully adequate for this tool's scope.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With zero parameters, the schema coverage is 100%. The description adds value by explaining that profiles are available by name and giving an example, which clarifies the output. Baseline for zero-param tools is 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'List' and the resource 'available topic profiles', including an example name. While it doesn't explicitly distinguish from siblings like 'reddit_profile_get', the context of listing all profiles vs. getting a specific one is implied.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says 'Use this first to discover what can be swept or queried', providing clear guidance on when to use this tool relative to siblings like reddit_sweep and reddit_query. It does not mention exclusions, but the context is sufficient.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

reddit_queryA

Query already-stored items (no network).

Filters: profile (which sweep collected it), subreddit, min_pain (lower bound on the deterministic pain score), contains (case-insensitive substring over title+body). sort is one of pain|score|new|comments. Returns hydrated item dicts including their matched lexicon patterns.

ParametersJSON Schema
NameRequiredDescriptionDefault
sortNopain
limitNo
profileNo
containsNo
min_painNo
subredditNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Describes return format ('hydrated item dicts including matched lexicon patterns') and behavior (querying stored items). No annotations exist, so description carries full burden; it covers read-only behavior and data retrieval.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Highly concise: one sentence for purpose, one for filters/sort, one for return type. Uses backticks for parameters, making it scannable. No unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers input parameters and return type adequately. Output schema exists to detail return values. Lacks error handling or performance notes, but reasonable for a query tool given sibling context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% (no descriptions in schema), but the description explains each parameter (profile, subreddit, min_pain, contains, sort) with specific meanings and allowed values. Only limit lacks description, but default of 50 is implied.

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?

Clearly states it queries already-stored items with no network involvement, lists specific filters and sort options. Distinguishes itself from sibling tools like reddit_fetch_thread and reddit_search that involve network calls.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly notes 'no network' to indicate local queries. Lists available filters and sort parameters, guiding usage. Lacks explicit comparison to alternatives or when not to use, but context from siblings helps.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

reddit_statsA

Summary stats for the store (optionally scoped to one profile).

Returns totals, the post/comment split, a per-subreddit breakdown, the most frequent matched patterns, and the (min, max) created-utc date range.

ParametersJSON Schema
NameRequiredDescriptionDefault
profileNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description fully carries the burden. It describes the return values in detail, indicating a read-only operation. However, it lacks mention of performance or rate limits, which would be beneficial for an agent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no wasted words. The purpose is stated first, followed by a list of outputs. Efficient and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a stats retrieval tool with one optional parameter and an output schema, the description provides sufficient detail on what is returned and the scope. Missing minor details like authentication or profile existence checks, but acceptable.

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 covers 0% of parameter meaning. The description adds value by stating the profile parameter optionally scopes the stats, but does not explain its format or behavior beyond that.

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?

The description clearly states the tool returns summary stats for the store, optionally scoped to a profile. It lists specific outputs (totals, split, breakdown, patterns, date range), distinguishing it from sibling tools that focus on querying or exporting data.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description mentions optional scoping to a profile, implying when to use the parameter, but does not explicitly state when to use this tool versus siblings like reddit_query or reddit_search.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

reddit_sweepA

Run a full two-stage sweep for a profile and persist the results.

Stage 1 pulls + scores posts across the profile's subreddits and search terms; stage 2 deep-fetches comments on the highest-pain threads. This makes live Reddit calls and may take a while. time (hour|day|week|month|year|all), limit (posts per sub) and max_threads override the profile defaults when non-empty/non-zero. Returns a SweepResult summary (counts, per-subreddit tallies, top matched patterns).

ParametersJSON Schema
NameRequiredDescriptionDefault
timeNo
limitNo
profileYes
max_threadsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses that the tool makes live Reddit calls and may take a while, and explains the two stages. With no annotations, the description carries full burden; it provides good behavioral context beyond the tool name, though does not detail auth or error handling.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two efficient paragraphs: first explains the process stages, second covers parameter overrides and return type. Front-loads purpose, no unnecessary words, every sentence adds value.

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?

Given the tool's complexity (multi-stage, four parameters, output schema exists), the description fully covers the process, parameter overrides, and return summary. Mentions potential slowness, making it complete for an agent to decide and invoke.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description adds meaning for all four parameters: explains time values (hour|day|week|month|year|all), limit as posts per sub, max_threads as override, and profile is self-explanatory. Compensates well for the lack of schema descriptions.

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?

Description clearly states 'two-stage sweep' for a profile with specific actions: pulling/scoring posts and deep-fetching comments. Uses specific verbs like Run, pulls, scores, deep-fetches. Differentiates from sibling tools by describing a comprehensive sweep.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implies usage for comprehensive profile analysis, noting live Reddit calls and potential slowness. Does not explicitly state when to use this tool vs siblings like reddit_search or reddit_fetch_thread, leaving the agent to infer based on the sweep description.

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. 9 tool updatesv0.1.0
    • First observedreddit_export
    • First observedreddit_fetch_thread
    • First observedreddit_get_evidence
    • First observedreddit_profile_get
    • First observedreddit_profiles
    • First observedreddit_query
    • First observedreddit_search
    • First observedreddit_stats
    • First observedreddit_sweep

TDQS

A3.8/5.0

Scored across 9 tools

Disambiguation5/5

Each tool serves a distinct function: export, live thread fetch, evidence retrieval, profile configuration, listing profiles, querying stored items, live search, statistics, and full sweep. No two tools have overlapping purposes, ensuring clear selection for an agent.

Naming Consistency4/5

All tools share the 'reddit_' prefix and use lowercase with underscores. However, the verb/noun order varies: 'reddit_get_evidence' (verb_noun) contrasts with 'reddit_profile_get' (noun_verb), and 'reddit_profiles' and 'reddit_stats' are noun-only. This minor inconsistency prevents a perfect score.

Tool Count5/5

With 9 tools, the server covers the full workflow of discovering profiles, collecting data (search, sweep, fetch_thread), querying stored items, evidence extraction, export, and statistics. The count feels well-scoped for a Reddit mining server.

Completeness4/5

The tool set covers core operations from configuration to export. Missing are delete/update operations for stored data or profiles, but these may be intentionally omitted given the read-only mining focus. Minor gap.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers