Skip to main content
Glama
sadik004
by sadik004

๐Ÿ›ก๏ธ Reddit MCP: Human-Mimetic Model Context Protocol Server

Python 3.10+ Playwright Protocol Architecture License: MIT

A production-grade, standalone Model Context Protocol (MCP) server that equips AI assistants (Claude Desktop, Antigravity, Cursor, Cline) with 100% human-mimetic control over Reddit.

Powered by behavioral automation principles, this server mimics real human interactions using cubic Bรฉzier mouse curves, Weibull-distributed typing latency, single-browser multi-context pooling, and route-level asset abortion.


๐Ÿ“‘ Table of Contents


Related MCP server: Signal Found MCP

๐ŸŒŸ Key Capabilities

  1. Human-Mimetic Dynamics:

    • Cubic Bรฉzier Mouse Curves: Generates organic acceleration, decelerations, and sub-pixel micro-jitters.

    • Weibull Keystroke Delays: Replicates natural human typing variance with punctuation pauses and burst cadence.

    • Route-Level Asset Abortion: Automatically drops images, fonts, tracking beacons, and media to save bandwidth and maximize DOM performance.

    • Anti-Fingerprinting: Strips navigator.webdriver, spoofs Chrome runtime objects, and configures realistic viewport dimensions.

  2. Full Lifecycle Reddit Control:

    • Profile Branding: View and update display names, about bios, social links, and NSFW tags.

    • Content Creation: Post text/markdown and links to any subreddit (r/...) or personal profile (u/me).

    • Community Engagement: Reply to threads, post nested comments, cast upvotes/downvotes, and bookmark posts.

    • Deep Discussion Extraction: Recursively parses complete hierarchical comment trees to arbitrary depths.

    • Discovery & Search: Browse subreddits with custom sort orders and search Reddit with faceted filters.

    • Direct Outreach: Send direct private messages (PMs) and inspect inbox notifications.

    • Commercial Lead Engine: Discovers developers facing anti-bot/scraping blocks and generates authoritative technical pitches referencing open-source proof.


๐Ÿ—๏ธ Architecture Overview

graph TD
    A[AI Client: Claude / Antigravity / Cursor] -->|JSON-RPC 2.0 via Stdio| B[RedditMcpServer]
    B --> C[ToolRegistry]
    C --> D[RedditAutomationClient]
    
    subgraph "Behavioral Execution Layer"
        D --> E[BrowserPoolManager]
        D --> F[MouseController - Bรฉzier Curves]
        D --> G[KeyboardController - Weibull Latency]
        D --> H[RedditLocators - Semantic ARIA & Shreddit]
    end
    
    subgraph "Infrastructure & Reddit Target"
        E --> I[Playwright Browser Context Pool]
        I --> J[Route Abort: Images/Fonts/Trackers]
        I --> K[Residential Proxy / Session State]
        K --> L[Reddit.com]
    end

๐Ÿ› ๏ธ Tool Catalog

The server exposes 15 typed MCP tools defined via Pydantic v2 DTOs:

Category

Tool Name

Description

Authentication

reddit_auth_status

Audits current session validity, returning username, total karma, and notification count.

Profile

reddit_get_profile

Retrieves full profile details (display name, bio, karma breakdown, cake day, social links).

Profile

reddit_update_profile

Modifies profile display name, about bio, and NSFW toggles with human typing dynamics.

Publishing

reddit_submit_post

Publishes text/markdown or link posts to any subreddit or user profile (u/me).

Publishing

reddit_submit_comment

Submits top-level comments or nested replies to existing comments with human cadence.

Engagement

reddit_vote

Casts upvotes (+1), downvotes (-1), or clears votes (0) on posts/comments.

Engagement

reddit_save_post

Saves or unsaves posts and comments to account bookmarks.

Intelligence

reddit_read_thread

Extracts thread details and parses full recursive comment trees.

Discovery

reddit_browse_subreddit

Browses subreddit posts with sorting (hot, new, top, rising) and time filters.

Discovery

reddit_browse_user

Audits another user's submitted posts, comment history, and public metrics.

Discovery

reddit_search

Executes faceted searches across Reddit with subreddit, sort, and time horizon filters.

Messaging

reddit_send_message

Sends private direct messages (PMs) with subject and markdown content.

Messaging

reddit_check_inbox

Reads unread messages, mentions, and post/comment replies.

Lead Gen

reddit_hunt_leads

Scrapes target subreddits for actionable client problems and anti-bot hurdles.

Lead Gen

reddit_generate_pitch

Crafts authoritative technical solution pitches citing architectural proof.


๐Ÿš€ Installation & Quickstart

1. Clone & Set Up Virtual Environment

git clone https://github.com/sadik004/Reddit.mcp.git
cd Reddit.mcp

# Create virtual environment
python -m venv .venv

# Activate virtual environment
# Windows (PowerShell):
.venv\Scripts\Activate.ps1
# Linux/macOS:
source .venv/bin/activate

2. Install Dependencies

pip install -e .
playwright install chromium

๐Ÿ” Authentication & Session Setup

Reddit actively mitigates automated traffic on login endpoints. This MCP utilizes an interactive session exporter:

  1. Run the interactive exporter:

    python scripts/login.py
  2. A real Chromium browser window will launch navigating to reddit.com/login.

  3. Complete your login manually, solving any 2FA or CAPTCHA challenges.

  4. Once you reach the Reddit feed, press ENTER in your terminal.

  5. The session cookies and storage tokens are safely saved to storage_state.json.

Subsequent MCP server runs will automatically load storage_state.json and operate in headless mode.


โš™๏ธ MCP Client Configurations

1. Claude Desktop

Add this to your claude_desktop_config.json:

{
  "mcpServers": {
    "reddit": {
      "command": "python",
      "args": ["-m", "reddit_mcp"],
      "cwd": "C:/path/to/Reddit.mcp/src",
      "env": {
        "REDDIT_STORAGE_STATE": "C:/path/to/Reddit.mcp/storage_state.json",
        "REDDIT_HEADLESS": "true"
      }
    }
  }
}

2. Antigravity IDE / Cursor

Add to your .agents/mcp_config.json:

{
  "mcpServers": {
    "reddit-mcp": {
      "command": "python",
      "args": ["-m", "reddit_mcp"],
      "cwd": "${workspaceFolder}/Reddit.mcp/src",
      "env": {
        "REDDIT_STORAGE_STATE": "${workspaceFolder}/Reddit.mcp/storage_state.json",
        "REDDIT_HEADLESS": "true"
      }
    }
  }
}

๐Ÿ’ผ Client Acquisition Workflow

For freelance engineers and technical agencies seeking 2โ€“3 high-value web automation contracts per month:

  1. Find Urgent Technical Bottlenecks:

    {
      "name": "reddit_hunt_leads",
      "arguments": {
        "subreddits": ["webscraping", "Python", "freelance"],
        "keywords": ["cloudflare turnstile", "403 forbidden", "playwright block", "hire scraper"],
        "min_urgency": 7
      }
    }
  2. Generate Technical Solution Pitch: Feed the discovered lead DTO directly into reddit_generate_pitch:

    {
      "name": "reddit_generate_pitch",
      "arguments": {
        "post_id": "t3_abc123",
        "title": "Cloudflare Turnstile blocking Playwright in headless mode",
        "author": "founder_john",
        "subreddit": "webscraping",
        "url": "https://reddit.com/r/webscraping/comments/abc123",
        "urgency_score": 9,
        "budget_intent": "High"
      }
    }
  3. Engage with Authoritative Value: Publish the solution via reddit_submit_comment or send a direct message via reddit_send_message offering concrete open-source proof.


๐Ÿงช Testing & Quality Gates

Run the automated test suite with full coverage verification:

pytest tests/ -v

Run diagnostic stdio handshake:

python scripts/test_client.py

๐Ÿ“„ License

Distributed under the MIT License. See LICENSE for details.

Available Tools

15 tools
reddit_auth_statusA

Verify current Reddit session validity, extracting authenticated username, karma, and notification metrics.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It does disclose the behavior of verifying session validity and extracting specific metrics, which adds useful context. However, it does not mention side effects, authentication requirements, error behavior, or what happens when the session is invalid.

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 a single, front-loaded sentence with no filler. It states the action, the target, and the key outputs efficiently.

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 zero-parameter status-check tool, the description is mostly complete: it names the purpose and the returned metrics, and there is no output schema to supplement. It lacks usage context and behavioral caveats, but an agent can likely invoke it correctly with the information given.

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?

The tool has zero parameters, so the description does not need to explain parameter meaning. The baseline of 4 applies because there is nothing for the description to compensate for in this dimension.

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 a specific verb ('Verify') and resource ('current Reddit session validity'), and lists the extracted data (username, karma, notification metrics). It is clear on its own, but it does not explicitly contrast with siblings like reddit_get_profile or reddit_check_inbox, so it stops short of full differentiation.

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?

There is no guidance on when to use this tool versus alternatives such as reddit_get_profile or reddit_check_inbox. The description implies a session-check purpose, but it never states prerequisites, exclusions, or conditions that would route an agent here.

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

reddit_browse_subredditC

Browse posts in a subreddit with sorting (hot, new, top, rising) and time filters.

ParametersJSON Schema
NameRequiredDescriptionDefault
sortNohot
limitNo
subredditYesSubreddit name (e.g. 'webscraping', 'Python')
time_filterNo

TDQS

C2.8/5.0
Behavior2/5

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

No annotations are provided, so the description must carry the behavioral burden. It only says 'browse' and gives no information about authentication, read-only status, pagination, rate limits, or default behavior beyond the schema defaults.

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 one efficient, front-loaded sentence with no filler. It clearly communicates the core action and key options without wasting tokens.

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

Completeness2/5

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

With no output schema and no annotations, the description is too thin to fully guide correct invocation. It omits return format, limit semantics, authentication context, pagination, and any behavior beyond the basic browsing action.

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 only 25%, and the description adds little beyond the schema's enum values. It names sorting and time filters but does not explain the limit parameter, the interaction between filters, or the meaning of time_filter values in context.

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 states a specific verb ('Browse') and resource ('posts in a subreddit'), and adds distinguishing capabilities (sorting and time filters). It doesn't explicitly separate it from reddit_search or reddit_browse_user, but the subreddit scope makes the purpose 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?

There is no guidance on when to use this tool instead of siblings like reddit_search or reddit_browse_user, nor any mention of when not to use it. Usage is only implied by the description's basic action.

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

reddit_browse_userB

Audit another user's submitted posts, comment activity, and public profile metrics.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
usernameYesReddit username without 'u/'

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It states the scope of data audited but does not mention whether the operation is read-only, whether authentication is required, what rate limits apply, or what the response contains. The word 'audit' hints at investigation but leaves key behavioral traits undisclosed.

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 a single, front-loaded sentence with no filler. Every word contributes to defining the tool's scope, making it easy to parse quickly.

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

Completeness2/5

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

For a tool with no output schema and no annotations, the description is too sparse. It does not explain return values, pagination, sorting, or the meaning of 'public profile metrics.' An agent would need additional inference or trial-and-error to use it correctly.

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 only 50%: the username parameter is documented in the schema, but limit is not. The description adds no parameter-level meaning, failing to explain how limit behaves or clarify the username format beyond what the schema already states.

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 uses a specific verb ('Audit') and identifies the exact resource: another user's submitted posts, comment activity, and public profile metrics. This clearly distinguishes it from siblings like reddit_browse_subreddit (subreddit-level browsing) and reddit_get_profile (profile retrieval).

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?

No guidance is given on when to use this tool versus alternatives such as reddit_get_profile or reddit_search. The phrase 'another user's' implies it is for viewing other users rather than oneself, but there are no explicit conditions, exclusions, or alternative routing.

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

reddit_check_inboxB

Check recent inbox notifications, private messages, and post/comment replies.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo

TDQS

B3.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only names the resources being checked and does not disclose whether the operation is read-only, whether it requires authentication, whether items are marked as read, or any rate limits. This is a significant transparency gap for an unannotated tool.

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 a single, tightly scoped sentence with no filler or redundant phrasing. It front-loads the core purpose and covers the main resource types without unnecessary elaboration.

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?

For a simple tool with one optional parameter and no output schema or annotations, the description covers the basic purpose but leaves several practical details unaddressed, such as authentication requirements, return format, and whether checking the inbox mutates read state. It is minimally viable but not fully complete.

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%, and the description does not mention the 'limit' parameter at all. The parameter name and default value provide some intrinsic meaning, but the description adds no value to what the schema already shows, failing to compensate for the low coverage.

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 a specific action ('Check') and a distinct resource set ('recent inbox notifications, private messages, and post/comment replies'). This distinguishes it from siblings like reddit_send_message, reddit_browse_subreddit, and reddit_read_thread, leaving no doubt about what the tool does.

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 when to use the tool (when the agent needs to see recent inbox activity), but it does not explicitly state when to prefer this over alternatives or provide exclusions. It is adequate but relies on inference rather than direct guidance.

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

reddit_generate_pitchC

Generate an authoritative, non-salesy technical solution pitch with GitHub proof for a discovered lead.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes
titleYes
authorYes
post_idYes
subredditYes
pain_pointsNo
budget_intentYes
urgency_scoreYes
recommended_strategyNo

TDQS

C2.8/5.0
Behavior2/5

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

No annotations exist, so the description carries the full burden of behavioral disclosure. It does not state whether the tool mutates state, only returns a draft, makes external calls to GitHub, requires authentication, or has rate limits. The style adjectives and 'GitHub proof' hint at output characteristics, but important behavioral context is missing.

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 a single efficient sentence with no filler. It front-loads the action and includes relevant style and evidence qualifiers. It could earn a 5 only if it also conveyed a bit more operational detail without becoming verbose.

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

Completeness1/5

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

With 9 parameters, no parameter descriptions, no annotations, and no output schema, this description is far too thin. It does not explain what inputs are required, how they are used, what the generated pitch looks like, or what the tool returns. An agent has almost no guidance beyond the tool's name.

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

Parameters1/5

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

Schema description coverage is 0%, and the description adds no meaning to any of the 9 parameters. The agent cannot infer how fields like urgency_score, budget_intent, pain_points, or recommended_strategy influence the pitch. The description fails to compensate for the undocumented schema.

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 states a clear verb and resource: generate a technical solution pitch for a lead. It distinguishes itself from the sibling tools because none of them perform pitch generation. The qualifiers 'authoritative' and 'non-salesy' add clarity about the intended output style.

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 phrase 'for a discovered lead' gives useful context: this tool is meant to be used after a lead has been identified, likely following reddit_hunt_leads. It does not explicitly say when not to use it or name alternatives, but the context is clear enough for an agent to infer the intended workflow.

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

reddit_get_profileA

Retrieve detailed profile information (display name, bio, karma breakdown, cake day, social links) for a user or current profile ('me').

ParametersJSON Schema
NameRequiredDescriptionDefault
usernameNoReddit username to inspect, or 'me' / omitted for own authenticated profile

TDQS

A3.6/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It does not disclose that this is a read-only operation, nor does it mention authentication requirements (though 'me' implies it), error handling for invalid usernames, rate limits, or any side effects. The description only states the action and output, offering minimal behavioral insight.

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 a single, front-loaded sentence that begins with the verb 'Retrieve' and resource, then lists concrete examples of the returned data. It contains no fluff or redundancy, making it highly concise 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 simple tool with one optional parameter and no output schema, the description adequately conveys what the tool does and the special 'me' case. It does not mention error cases or explicit authentication requirements, but the schema already handles the 'me' semantics. Given its simplicity, the description is fairly complete, though it could benefit from noting read-only nature or potential errors.

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?

The schema description covers 100% of the parameter, including the special values 'me' and omitted for own profile. The tool description adds no additional parameter semantics beyond what the schema already provides. With high schema coverage, the baseline of 3 applies, and the description does not elevate it.

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 action (retrieve profile information) and the resource (user profile), listing specific fields like display name, bio, karma breakdown, cake day, and social links. It distinguishes the ability to target a user or 'me', but does not explicitly differentiate from sibling reddit_browse_user, which could also provide user information. Thus it is clear but lacks sibling differentiation.

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 provides clear context on when to use the tool: for a user or current profile ('me'). It does not mention alternatives or explicitly state when not to use it, but the context is sufficient for basic usage. It lacks explicit exclusions or comparisons to siblings.

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

reddit_hunt_leadsB

Discover actionable freelance web scraping and browser automation leads across tech subreddits.

ParametersJSON Schema
NameRequiredDescriptionDefault
keywordsNoSearch pain point terms
subredditsNoTarget subreddits
min_urgencyNo

TDQS

B3.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It says 'Discover', which suggests a non-mutating action, but it does not explain authentication needs, rate limits, how leads are scored or compiled, or whether this tool performs any write operations. The agent is left guessing about side effects and prerequisites.

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 a single, front-loaded sentence with zero filler. It states the core value proposition immediately and does not waste tokens on redundant details.

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

Completeness2/5

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

With no output schema, no annotations, and only a one-sentence description, the agent has no information about what a returned 'lead' looks like, whether authentication is required, or what urgency threshold means in practice. The description gives a strong purpose but not enough surrounding context for confident invocation.

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?

The schema already documents keywords and subreddits usefully, and the tool description adds context that these are lead-hunting terms. However, min_urgency is left undocumented in both the description and schema; there is no clarification of whether urgency refers to post recency, engagement level, or another signal. Schema coverage is 67%, so the gap is noticeable but not crippling.

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 uses a specific verb and resource: 'Discover actionable freelance web scraping and browser automation leads across tech subreddits.' It clearly distinguishes this from generic siblings like reddit_search or reddit_browse_subreddit by framing it as a specialized lead-hunting tool rather than general Reddit browsing.

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 wording implies when to use itโ€”when an agent needs freelance/automation leads from Redditโ€”but it does not explicitly contrast it with alternatives like reddit_search or reddit_browse_subreddit, nor state when not to use it. The use case is inferable but not directly routed.

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

reddit_read_threadA

Read a full Reddit thread and extract the complete hierarchical nested comment tree.

ParametersJSON Schema
NameRequiredDescriptionDefault
max_depthNoMaximum nesting depth to parse
thread_url_or_idYesPost URL or post ID (t3_...)

TDQS

A3.9/5.0
Behavior3/5

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

No annotations are provided, so the description must carry the behavioral disclosure burden. It implies a read-only operation through the verb 'Read' and the tool name, and it states the output is a nested comment tree. However, it does not disclose potential rate limits, authentication requirements, or whether the output includes the original post content in addition to comments. The core behavior is conveyed, but depth is lacking.

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?

A single, front-loaded sentence that states the action and the expected result with no redundancy. It is efficient and immediately understandable, with no wasted words.

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 tool is relatively simple with two parameters well covered in the schema. The description indicates the output (nested comment tree) but does not specify whether the original post body is included, how max_depth affects truncation, or any error conditions. With no output schema, more detail would be helpful, but the current description is minimally adequate.

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?

The input schema already provides 100% coverage for both parameters with clear descriptions (thread_url_or_id and max_depth). The tool description does not add any additional meaning or context beyond what the schema states, so the baseline score of 3 applies. No extra value is contributed.

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 verb (Read), the resource (a Reddit thread), and the specific outcome (extract the complete hierarchical nested comment tree). It distinguishes itself from sibling tools like reddit_browse_subreddit or reddit_browse_user, which focus on listing posts or user activity, by focusing on a single thread's full comment structure.

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 gives clear context: use this when you need the full nested comment tree of a specific thread. It does not explicitly state exclusions or name alternative tools, but the purpose is sufficiently distinct from all siblings that an agent can infer when to select it. Missing explicit when-not-to-use guidance, but the context is unambiguous.

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

reddit_save_postA

Save or unsave a post or comment to account bookmarks.

ParametersJSON Schema
NameRequiredDescriptionDefault
unsaveNoTrue to remove from saved
target_id_or_urlYesPost or comment ID or permalink URL

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 bears the full burden of behavioral disclosure. It does disclose the dual save/unsave behavior and that comments as well as posts are supported, which goes beyond the tool name. However, it does not mention whether authentication is needed, how repeated saves are handled, or what happens on failure.

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 a single concise sentence with no filler. It front-loads the operation, then specifies the resource and target. Every word earns its place.

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 tool is simple with only two parameters and no output schema, and the description adequately states what is acted on and the two possible operations. Still, the lack of any annotation means an agent has no explicit guidance about authentication prerequisites or result handling, leaving a modest but real gap.

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?

The input schema covers both parameters with clear descriptions, and the description's 'save or unsave' and 'post or comment' wording aligns with those parameters. It adds no extra format, constraint, or nuance beyond the schema, so baseline 3 is appropriate.

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 uses specific verbs ('save or unsave') and names the resource ('post or comment') and destination ('account bookmarks'). This clearly distinguishes the tool from sibling submission, voting, messaging, and browsing tools even without naming alternatives.

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 intended use is implied: an agent should call this when the user wants to bookmark or unbookmark a Reddit post or comment. However, it does not explicitly state when to prefer this tool over alternatives, mention authentication requirements, or specify any exclusions.

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

reddit_send_messageA

Send a private direct message (PM) to a Reddit user with human typing cadence.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesMarkdown message body
subjectYesMessage subject
recipientYesRecipient Reddit username

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It discloses the human-like typing cadence, which is a meaningful behavioral trait (likely to avoid detection or rate limits), but does not mention authentication requirements, error handling, or potential side effects. It provides some transparency but not comprehensive disclosure.

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 a single, efficient sentence that front-loads the primary action and includes the key behavioral nuance. There is no wasted wording, making it highly concise 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 simple three-parameter tool with no output schema, the description provides the core purpose and one important behavioral trait. The schema handles parameter documentation. Missing context like rate limits or failure modes is minor for this straightforward operation, so it is largely complete.

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?

The input schema covers 100% of parameters with clear descriptions for recipient, subject, and body. The tool description adds no additional parameter context, so it relies entirely on the schema. Per the rubric, this is a baseline 3 given high schema coverage.

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 explicitly states the action (send a private direct message), the resource (Reddit user), and even a distinguishing behavioral detail (human typing cadence). It clearly separates this tool from the sibling tools, none of which handle private messaging.

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?

No explicit guidance is given about when to use this tool versus alternatives. The purpose is implied by the name and description, but there is no mention of conditions, exclusions, or when to choose a different reddit tool. This is adequate but lacks proactive routing.

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

reddit_submit_commentA

Submit a top-level comment on a post or a nested reply to an existing comment with human typing cadence.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesMarkdown comment text
post_id_or_urlYesPost identifier (t3_...) or permalink URL
parent_comment_idNoParent comment ID (t1_...) to reply nestedly; omitted for top-level

TDQS

A4/5.0
Behavior3/5

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

No annotations are present, so the description carries the full burden. It adds a valuable non-obvious behavioral trait ('human typing cadence') and clarifies placement modes. However, it does not disclose authentication requirements, the public nature of the comment, or behavior on invalid IDs, leaving some behavioral context undisclosed.

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?

A single sentence that front-loads the action and resource, then qualifies with placement modes and cadence. There is no filler; every phrase earns its place.

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?

The tool is simple (3 params, 2 required) and the schema fully documents parameters. The description covers both invocation modes and one key execution detail. It is sufficient for selection and invocation, though the lack of an output schema means agents won't know what return value to expect.

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%, so the baseline is 3. The description's top-level/nested language mirrors the parent_comment_id schema text and adds no new meaning beyond what the schema already provides for post_id_or_url or body.

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 states a specific verb ('submit') and resource ('comment'), and explicitly covers two distinct usage modes: top-level comments and nested replies. This clearly separates it from sibling tools like reddit_submit_post and reddit_send_message without needing to open their schemas.

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 establishes clear context for when to use the tool: when a comment needs to be posted on a post or as a reply to an existing comment. It does not explicitly name alternatives or state when not to use it, but the resource type ('comment') makes exclusions against posting or messaging implicit.

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

reddit_submit_postA

Publish a post (text/markdown or link) to any subreddit or own profile ('u/me').

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoTarget destination URL (for link posts)
bodyNoPost markdown body (for text posts)
flairNoPost flair text
titleYesPost title
targetYesSubreddit name (e.g. 'webscraping', 'Python') or 'u/me' for own profile
is_nsfwNo
is_spoilerNo

TDQS

A3.7/5.0
Behavior2/5

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

No annotations are provided, so the description alone must disclose the behavior. It correctly implies a write/mutation operation, but it does not mention permanence, visibility, authentication requirements, rate limits, or side effects. For a creation tool this is a meaningful gap.

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 entire description is one lean, front-loaded sentence that conveys the core action, supported formats, and valid targets. There is no redundancy or filler.

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?

For a tool with no annotations, no output schema, and seven parameters, the description is somewhat thin. It covers the essential 'what' and 'where', but omits practical context such as authentication, post visibility, and response behavior, which an agent would benefit from knowing before invoking a mutating Reddit API call.

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 71%, so most parameters are already documented. The description adds minimal extra value by framing 'body' as markdown and 'url' as links, but it does not clarify exclusivity or parameter combinations beyond what the schema already implies.

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 uses a specific verb ('Publish') and resource ('post'), and clearly specifies the allowed destinations ('any subreddit or own profile') and post types ('text/markdown or link'). This unambiguously distinguishes it from sibling tools like reddit_submit_comment.

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 gives clear context for when to use this tool: whenever a new post needs to be published to a subreddit or personal profile. It does not explicitly name alternatives or exclusions, but the intended use case is obvious from the phrasing and the sibling tool names.

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

reddit_update_profileA

Update own profile settings (display name, about bio description, NSFW flag) with human-mimetic typing.

ParametersJSON Schema
NameRequiredDescriptionDefault
bioNoNew bio / about text (max 200 chars)
is_nsfwNoToggle profile 18+ NSFW tag
display_nameNoNew custom display name

TDQS

A3.5/5.0
Behavior2/5

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

With no annotations provided, the description bears full responsibility for behavioral disclosure. It mentions 'human-mimetic typing' which hints at stealthy behavior, but does not disclose authentication requirements, side effects on unlisted fields, rate limits, or what happens on success/failure. As a mutation tool, this lack of transparency is a significant gap.

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 a single, focused sentence that front-loads the purpose and lists affected fields, with the 'human-mimetic' detail added without bloat. Every word earns its place, and it is appropriately sized for the tool's simplicity.

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?

For a simple update tool with no output schema, the description covers the essential action and fields. However, it omits return value/error handling, authentication expectations, and whether all parameters are optional (though schema shows required: []). These gaps are notable given the absence of annotations, but the operation is simple enough that the description is minimally viable.

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%, so each parameter (bio, is_nsfw, display_name) is already documented. The tool description only repeats these field names without adding syntax, constraints, or behavioral nuances. This meets the baseline of 3 for high schema coverage.

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 action ('Update own profile settings') and enumerates the specific fields affected: display name, bio description, and NSFW flag. This distinguishes it from sibling tools like reddit_get_profile (read-only) and reddit_submit_post/comment (content creation), making the tool's purpose unambiguous.

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 for updating profile settings, but does not explicitly state when to use it over alternatives. There is no mention of exclusions or when not to use it (e.g., for reading profile data). The 'own' qualifier and the listed fields give context, but no explicit routing to siblings.

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

reddit_voteA

Cast or clear an upvote (+1) or downvote (-1) on a post or comment.

ParametersJSON Schema
NameRequiredDescriptionDefault
directionYes1 = upvote, -1 = downvote, 0 = clear
target_id_or_urlYesPost or comment ID (t3_... / t1_...) or permalink URL

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description carries the burden of behavioral disclosure. It clearly indicates the mutation (cast/clear vote) and the direction values, including the ability to clear a vote with 0. However, it omits details like authentication requirements, idempotency, rate limits, or what happens if the target is invalid, which would be useful but are not critical for a simple voting action.

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?

A single, front-loaded sentence with no filler. It conveys the action, the possible directions, and the target type efficiently. Every word earns its place.

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 simple two-parameter tool with full schema coverage and no output schema, the description is mostly complete: it specifies what the tool does, what the target is, and what the direction values mean. It lacks explicit auth or error-behavior context, but the simplicity of the operation makes this a minor gap rather than a critical omission.

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%, so the schema already fully documents both parameters. The description adds only a slight contextual reinforcement ('post or comment') but no additional syntax, format, or edge-case guidance beyond what the schema provides. Baseline 3 is appropriate.

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 states a specific verb ('Cast or clear') and resource ('upvote/downvote on a post or comment'), making the tool's function immediately clear. It also naturally distinguishes this from siblings like reddit_submit_post, reddit_save_post, or reddit_read_thread, since voting is a unique action in the sibling set.

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 gives clear context: use this tool when you want to set or remove a vote on a Reddit post or comment. It does not explicitly name alternatives or exclusions, but the purpose is specific enough that an agent can infer when to select it over the other reddit tools.

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. 15 tool updatesv0.1.0
    • First observedreddit_auth_status
    • First observedreddit_browse_subreddit
    • First observedreddit_browse_user
    • First observedreddit_check_inbox
    • First observedreddit_generate_pitch
    • First observedreddit_get_profile
    • First observedreddit_hunt_leads
    • First observedreddit_read_thread
    • First observedreddit_save_post
    • First observedreddit_search
    • First observedreddit_send_message
    • First observedreddit_submit_comment
    • First observedreddit_submit_post
    • First observedreddit_update_profile
    • First observedreddit_vote

TDQS

B3.4/5.0

Scored across 15 tools

Disambiguation4/5

Most tools target clearly distinct actions: submitting, voting, saving, reading, browsing, searching, messaging, and profile management. A few potential confusions exist between get_profile, auth_status, and browse_user, since all can surface user/profile information, but their descriptions help differentiate session validation from detailed profile retrieval.

Naming Consistency4/5

Tool names consistently use a reddit_ prefix with snake_case, and most follow a verb_noun pattern like reddit_submit_post, reddit_browse_subreddit, and reddit_update_profile. Minor deviations such as reddit_vote, reddit_search, and reddit_auth_status break the strict pattern but are still predictable and readable.

Tool Count4/5

Fifteen tools is at the upper edge of the ideal range and covers a broad Reddit interaction surface without feeling bloated. A couple of tools, such as auth_status and generate_pitch, are somewhat niche or redundant with core profile/search tools, but overall the count is reasonable for the server's purpose.

Completeness3/5

The toolkit covers posting, commenting, voting, saving, reading, browsing, searching, messaging, inbox checks, and profile management, so the main read/write workflows are present. Obvious gaps include no way to edit or delete a user's own posts/comments, which is a significant missing piece for a Reddit automation server.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    B
    maintenance
    Enables AI assistants to browse Reddit, search posts, analyze user activity, and fetch comments without requiring API keys. Features smart caching, clean data responses, and optional authentication for higher rate limits.
    5
    1,355 npm
    835
    MIT
  • A
    license
    B
    quality
    D
    maintenance
    Signal Found is a Reddit-native B2C/B2B outreach platform. You describe your product, we find people on Reddit already asking for it, and your AI agent handles the rest โ€” messaging prospects, tracking replies, and optimizing your funnel in real time.
    40
    3
    MIT
  • A
    license
    Not graded
    quality
    F
    maintenance
    Reddit automation for AI agents โ€” browse feeds, search posts, comment, vote, and publish using a Chrome extension bridge. Python CLI with JSON output, no API keys needed.
    15
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to browse Reddit, analyze stock buzz, and detect trending stocks with intelligent context analysis.
    MIT