Skip to main content
Glama
msaeedsakib

threadr-mcp

by msaeedsakib

threadr-mcp

A Model Context Protocol (MCP) server that gives AI agents full access to Reddit search, browse, read, post, comment, vote, edit, and delete. Works with Claude Code, Claude Desktop, VS Code, Cursor, and any MCP-compatible client.

License: MIT

Quick Start

No Reddit API keys required. Anonymous access works out of the box with basic rate limits.

Claude Code

claude mcp add threadr-mcp -- npx -y threadr-mcp

Claude Desktop

Add to ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "threadr-mcp": {
      "command": "npx",
      "args": ["-y", "threadr-mcp"]
    }
  }
}

VS Code / Cursor

Add to your MCP settings:

{
  "threadr-mcp": {
    "command": "npx",
    "args": ["-y", "threadr-mcp"]
  }
}

Related MCP server: Reddit MCP

Authentication

Threadr supports three tiers of access. Higher tiers unlock more features and higher rate limits.

Tier 1: Anonymous (default)

No configuration needed. All read tools work immediately. Rate limited to ~10 requests/minute.

Tier 2: App-Only

Higher rate limits (~60 req/min), access to NSFW content. Read-only.

  1. Go to reddit.com/prefs/apps

  2. Create a new app (select script type)

  3. Note the client ID (under the app name) and client secret

{
  "mcpServers": {
    "threadr-mcp": {
      "command": "npx",
      "args": ["-y", "threadr-mcp"],
      "env": {
        "REDDIT_CLIENT_ID": "your_client_id",
        "REDDIT_CLIENT_SECRET": "your_client_secret"
      }
    }
  }
}

Tier 3: User Auth

Full access including write operations (post, comment, vote, edit, delete).

{
  "mcpServers": {
    "threadr-mcp": {
      "command": "npx",
      "args": ["-y", "threadr-mcp"],
      "env": {
        "REDDIT_CLIENT_ID": "your_client_id",
        "REDDIT_CLIENT_SECRET": "your_client_secret",
        "REDDIT_USERNAME": "your_username",
        "REDDIT_PASSWORD": "your_password"
      }
    }
  }
}

Environment Variables

Variable

Required

Tier

Description

REDDIT_CLIENT_ID

Tier 2+

2, 3

Reddit app client ID

REDDIT_CLIENT_SECRET

Tier 2+

2, 3

Reddit app client secret

REDDIT_USERNAME

Tier 3

3

Reddit account username

REDDIT_PASSWORD

Tier 3

3

Reddit account password

Tools

Read Tools (all tiers)

Tool

Description

Key Parameters

search_posts

Full-text search across Reddit or within a subreddit

query, subreddit?, sort, time_filter, limit, after

get_subreddit_info

Subreddit metadata: subscribers, rules, description, flair

subreddit

get_subreddit_posts

Posts from a subreddit with sort options

subreddit, sort (hot/new/top/rising/controversial), limit, after

get_post_detail

Full post with comment tree, configurable depth

post_id, comment_limit, comment_depth, comment_sort

get_user_profile

User profile: karma, account age, badges

username

get_user_posts

User's submission history

username, sort, time_filter, limit, after

get_user_comments

User's comment history

username, sort, time_filter, limit, after

get_trending_subreddits

Currently popular subreddits

limit

get_comment_thread

Single comment with parent chain and replies

comment_id, depth, context

get_my_profile

Authenticated user's own profile (Tier 3)

Write Tools (Tier 3 only)

Tool

Description

Key Parameters

create_post

Create a text or link post

subreddit, title, content, is_self?, flair_id?, nsfw?, spoiler?

reply_to_post

Add a top-level comment to a post

post_id, content

reply_to_comment

Reply to a comment

comment_id, content

vote

Upvote, downvote, or unvote

target_id, direction (up/down/unvote)

edit_post

Edit your own post

post_id, content

edit_comment

Edit your own comment

comment_id, content

delete_post

Delete your own post

post_id

delete_comment

Delete your own comment

comment_id

Pagination

Listing tools support cursor-based pagination. Responses include next_cursor when more results are available. Pass it as the after parameter to get the next page.

Rate Limiting

Threadr includes a built-in rate limiter that respects Reddit's API limits:

  • Tier 1 (anonymous): 10 requests/minute

  • Tier 2/3 (authenticated): 60 requests/minute

Requests are queued when the limit is reached, not rejected.

Development

git clone https://github.com/msaeedsakib/threadr-mcp.git
cd threadr-mcp
bun install
bun run build
bun test

License

MIT

Available Tools

18 tools
create_postA

Create a text or link post in a subreddit (requires user auth)

ParametersJSON Schema
NameRequiredDescriptionDefault
nsfwNo
titleYes
contentYes
is_selfNo
spoilerNo
flair_idNo
subredditYes

TDQS

A3.6/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 full burden. It discloses that user auth is required, which is valuable behavioral context, but omits other important traits for a write tool: whether the post is immediately public, moderation/rate-limit behavior, or what happens on failure. Partial coverage only.

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 is appropriately sized with zero waste. All information is packed efficiently without redundancy.

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 7-parameter mutation tool with no annotations and no output schema, the description is minimal. It covers the core purpose and auth requirement but leaves most parameter semantics and behavioral implications unaddressed, so it is adequate but with clear gaps.

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% for 7 parameters, so the description must compensate but only mentions 'text or link' and the subreddit implicitly. It does not explain is_self, flair_id, nsfw, spoiler, or the title/content length constraints, leaving most parameters undocumented in both places.

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

Purpose5/5

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

States a specific verb (create), resource (post), and scope (in a subreddit), distinguishing it from read siblings like search_posts and mutation siblings like edit_post. An agent can immediately tell this is the write operation for new posts.

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 through the auth requirement but does not state when to use this versus edit_post or reply_to_post, nor any prerequisites like required scopes. The differentiation from sibling mutation tools is left to inference.

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

delete_commentB

Delete your own comment (requires user auth)

ParametersJSON Schema
NameRequiredDescriptionDefault
comment_idYes

TDQS

B3/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 that user auth is required and that only the caller's own comments can be deleted, which is meaningful behavioral context. It omits irreversibility, behavior when the comment isn't yours, and cascade effects on replies.

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?

A single short sentence with the core action front-loaded and the auth caveat in parentheses. Efficient, though the parenthetical could be tightened or better integrated.

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 single-parameter delete tool with no output schema, the description covers purpose, ownership, and auth, which is close to sufficient. However it leaves the parameter undocumented and doesn't clarify destructive/loss semantics, which matters most for a delete operation.

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?

One parameter with 0% schema description coverage, and the description says nothing about comment_id's format or where to obtain it. Since the schema provides no documentation and the description does not compensate, this is a clear gap.

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?

States a specific verb+resource ('Delete ... comment') and adds an ownership scope ('your own'), which distinguishes it from delete_post at a glance. It does not explicitly name siblings, but the resource noun is unambiguous.

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

Usage Guidelines2/5

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

No indication of when to use this versus edit_comment or delete_post, and no prerequisites or failure conditions are described. Only the implicit 'your own' constraint hints at usage boundaries.

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

delete_postA

Delete your own post (requires user auth)

ParametersJSON Schema
NameRequiredDescriptionDefault
post_idYes

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 must carry the full behavioral burden. It does disclose two real traits: an auth requirement and an ownership restriction ('your own'). However, for a destructive operation it omits whether the deletion is permanent, what happens to attached comments, and the response shape.

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 compact sentence with the scope qualifier and the auth prerequisite front-loaded. Nothing is padded and there is no wasted clause.

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 one-parameter mutation with no annotations and no output schema, the description covers auth and ownership but leaves the destructive nature and downstream effects (comments, permanence) unaddressed, which is the main thing an agent needs to call it safely.

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 0%, so the schema documents nothing about post_id. The description implies the target is the caller's post, making post_id self-evident from its name, but it adds no format, ID source, or constraint detail beyond that inference.

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?

States a specific verb (Delete) plus resource (post) and narrows scope with 'your own', which separates it from delete_comment and from edit_post in the sibling list. It is clear without naming an alternative explicitly, so it falls just short of the 5-tier benchmark.

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 parenthetical '(requires user auth)' is the only routing condition, giving a bare prerequisite. There is no guidance on when to delete vs edit_post, or any caveat about irreversibly removing a post; usage is only implied.

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

edit_commentB

Edit your own comment (requires user auth)

ParametersJSON Schema
NameRequiredDescriptionDefault
contentYes
comment_idYes

TDQS

B3.1/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 behavioral burden. It usefully discloses that only your own comments can be edited and that authentication is required, but says nothing about whether edits are destructive/replace content, whether they are reversible, or any rate or permission limits.

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?

A single compact sentence with the verb-resource pair front-loaded and the auth caveat appended; nothing is wasted. It is efficient, though its brevity borders on under-specification rather than tightness.

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?

This is a destructive-shaped mutation with no annotations, no output schema, and 0% parameter coverage, yet the description supplies only two facts. Critical details for calling it correctly — whether the edit is full replacement, error behavior on foreign comments, and what the response returns — are absent.

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 mentions neither parameter. The agent gets no explanation of what 'content' replaces, whether comment_id accepts a bare ID or a prefixed identifier, or the 10000-char limit semantics beyond the schema constraint.

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?

Names a specific verb ('Edit') and resource ('comment') and adds the ownership scope ('your own'), which distinguishes it from edit_post and delete_comment. It does not explicitly name or route to a sibling, so it falls short of a 5.

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 parenthetical '(requires user auth)' signals a precondition, which is useful context for selecting this tool over read-only siblings. However, there is no guidance on when this is the right call versus edit_post, delete_comment, or reply_to_comment, so usage is only implied.

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

edit_postB

Edit your own post (requires user auth)

ParametersJSON Schema
NameRequiredDescriptionDefault
contentYes
post_idYes

TDQS

B3.1/5.0
Behavior3/5

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

With no annotations at all, the description carries the full behavioral burden. It does disclose two meaningful traits: the operation is owner-scoped ('your own post') and requires authentication, which is more than nothing. But it omits whether this is a full replacement or partial update, whether the edit is reversible, and what the response contains.

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?

A single short sentence with the core action front-loaded and no wasted words. It is efficient, though the extreme brevity here reflects under-specification as much as good editing.

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?

A mutation tool with no annotations, no output schema, and 0% parameter documentation needs considerably more than one clause. Auth and ownership are covered, but return behavior, update semantics, and parameter formats are all absent.

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% for both parameters, so the description must compensate and does not. It only loosely implies a post identifier and new content; there is no guidance on post_id format or whether content replaces or appends to existing text.

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 gives a specific verb and resource ('Edit ... post') and adds an ownership scope ('your own') that separates it from generic post tools. It is clear, but it never names a sibling such as edit_comment or create_post to disambiguate further.

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 parenthetical '(requires user auth)' is a real precondition and implies the caller must be authenticated as the post owner. However, there is no when-not guidance, no mention of alternatives like delete_post or create_post, and no statement about which posts qualify for editing.

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

get_comment_threadC

Get a single comment with parent chain and replies

ParametersJSON Schema
NameRequiredDescriptionDefault
depthNo
contextNo
comment_idYes

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations and no output schema, the description carries the full behavioral burden. It does disclose that the result includes the parent chain and replies, which is useful, but says nothing about pagination, ordering, depth/context effects, error behavior for missing or deleted comments, 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.

Conciseness5/5

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

A single short, front-loaded sentence with no filler. Nothing is wasted, though the brevity is partly the cause of the gaps elsewhere.

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 three parameters, two of which are non-obvious traversal controls, no annotations, and no output schema, the description is too thin. An agent cannot determine what depth/context do or how large the response will be.

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% for all three parameters, so the description must compensate and does not: 'depth' and 'context' are never mentioned, and their bounds/defaults are only visible as raw numbers in the schema. The phrase 'parent chain and replies' hints loosely at the two traversal parameters but never maps them to meaning.

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 uses a specific verb and resource ('Get a single comment') and adds scope detail ('with parent chain and replies'), which distinguishes it from list tools like get_user_comments. It does not, however, name or differentiate itself from sibling single-item tools such as get_post_detail.

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 explicit when-to-use guidance, no prerequisites, and no named alternatives among the sibling tools. The only cue is the implied 'fetch one comment by id' usage, which the agent must infer from the name and required comment_id.

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

get_my_profileA

Get the authenticated user's own profile (requires user auth)

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/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, and it does disclose the authentication requirement, which is genuine behavioral context. It stops there: no word on failure behavior when unauthenticated or on what the profile payload contains, so it only partially covers a read tool with zero annotation support.

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?

A single tight sentence with the purpose front-loaded and the precondition trailing in parentheses. No filler or redundancy, though it is so terse that it leaves known gaps unaddressed.

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, no-output-schema read of the caller's own profile, the description covers what the tool returns conceptually and the auth requirement. No output schema exists, so return-format detail is not owed; remaining gaps (unauthenticated failure mode) are minor.

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 takes zero parameters and the schema is closed (additionalProperties: false), so there is nothing for the description to disambiguate. Baseline 4 applies for a no-arg operation.

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?

States a specific verb ('Get') and resource ('the authenticated user's own profile'), and the word 'own' implicitly separates it from the sibling get_user_profile, which fetches an arbitrary user. Clear without opening either schema, though it never names the sibling explicitly.

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 parenthetical '(requires user auth)' gives the key precondition for use, which is real guidance. However, it does not state when an agent should prefer this over get_user_profile (e.g. 'use when you need the caller's identity, not a named user'), leaving the sibling choice to inference.

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

get_post_detailC

Get full post with comment tree, configurable depth and sorting

ParametersJSON Schema
NameRequiredDescriptionDefault
post_idYes
comment_sortNobest
comment_depthNo
comment_limitNo

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It says it gets a full post with a comment tree, but does not state that this is a read-only operation, mention pagination, rate limits, authentication needs, or how missing posts are handled.

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, and the key information (full post, comment tree, depth, sorting) appears immediately.

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 four parameters, no annotations, and no output schema, the description is too thin. It omits parameter details, usage alternatives, and behavioral traits, leaving the agent without enough context to invoke it confidently.

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%, so the description must explain the four parameters. It vaguely references 'configurable depth and sorting', covering comment_depth and comment_sort in name only, but does not explain enum values, ranges, defaults, or mention post_id and comment_limit at all.

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 uses a specific verb 'Get' and resource 'full post with comment tree', clearly stating what the tool returns. It does not explicitly differentiate from sibling tools such as get_comment_thread or search_posts, so it stops short of a 5.

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 gives no guidance on when to use this tool versus alternatives like get_comment_thread or search_posts. Usage is only implied by the verb 'Get' and the mention of depth and sorting.

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

get_subreddit_infoC

Get subreddit metadata: subscribers, rules, description, flair

ParametersJSON Schema
NameRequiredDescriptionDefault
subredditYes

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 carries the full burden. It implies a read-only fetch but never states it, nor does it mention authentication requirements, rate limits, or whether the subreddit parameter accepts names without the r/ prefix. For a tool with zero annotation coverage, this 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?

A single compact sentence that front-loads the verb and resource and lists the return fields efficiently. Every word earns its place with no filler.

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 annotations, no output schema, and 0% parameter description coverage, the description is too thin. It should at least clarify the subreddit parameter format and confirm the read-only nature. The listed metadata fields help but do not cover what an agent needs to call 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 0%, so the description must compensate. It says nothing about the single 'subreddit' parameter—not its format (name vs. full path), not whether it is case-sensitive, and not whether a missing subreddit errors. The schema documents only type and minLength, leaving the description to fill a gap it does not fill.

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?

States a specific verb (Get) and resource (subreddit metadata) and enumerates what metadata is returned (subscribers, rules, description, flair). Clearly distinguishable from siblings like get_subreddit_posts or get_comment_thread, though it doesn't explicitly name what it is not.

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 when-to-use guidance, no exclusions, and no mention of alternatives. An agent must infer that this is for subreddit-level metadata versus post-level data. The sibling list is rich but the description offers no routing help.

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

get_subreddit_postsC

Get posts from a subreddit with sort options (hot, new, top, rising, controversial)

ParametersJSON Schema
NameRequiredDescriptionDefault
sortNohot
afterNo
limitNo
subredditYes
time_filterNoday

TDQS

C2.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 carries the full behavioral burden. It does not disclose auth requirements, rate limits, pagination behavior via 'after', return shape, or whether this is strictly read-only beyond the weak implication from 'Get'.

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 front-loaded sentence with no filler. It is appropriately concise, though its brevity contributes to the missing parameter and behavioral context elsewhere.

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 listing tool with five parameters, pagination, a time filter, no output schema, and no annotations, the description is too incomplete. It gives only the sort options and omits how to page, limit, or use time_filter.

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 five parameters are present. The description only repeats the sort enum values already listed in the schema; it adds no meaning for subreddit, after, limit, or time_filter, including when time_filter applies.

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 and resource: get posts from a subreddit. It also names the available sort options, so the core action is clear. However, it does not explicitly distinguish this tool from siblings like search_posts or get_user_posts.

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 search_posts or get_user_posts. It also does not state when not to use it or any prerequisites/context for selecting a subreddit feed.

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

get_user_commentsC

Get a user's comment history

ParametersJSON Schema
NameRequiredDescriptionDefault
sortNonew
afterNo
limitNo
usernameYes
time_filterNoall

TDQS

C2.3/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 full behavioral burden. It only implies a read operation through 'Get' but says nothing about pagination, sorting behavior, time-filtering, authentication requirements, rate limits, or return format.

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

Conciseness2/5

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

The single sentence is front-loaded and free of filler, but for a five-parameter tool it is under-specified rather than appropriately concise. It lacks the structural detail needed to select and invoke the tool correctly.

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 no annotations, no output schema, and five undocumented parameters, the description is wholly inadequate. It states only the basic purpose and omits all operational details an agent would need to call the tool correctly.

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?

The schema has five parameters and 0% description coverage. The description does not explain the meaning or effects of username, sort, after, limit, or time_filter, leaving the agent with no semantic guidance beyond the schema names.

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 and resource: 'Get a user's comment history.' It distinguishes the tool from siblings like get_user_posts and get_comment_thread by specifying comments belonging to a user. However, it does not explicitly name alternatives or clarify whether it includes only top-level comments or replies.

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 get_user_posts, get_comment_thread, or search_posts. The implied usage is simply to retrieve a user's comment history, but no conditions, prerequisites, or exclusions are provided.

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

get_user_postsC

Get a user's submission history

ParametersJSON Schema
NameRequiredDescriptionDefault
sortNonew
afterNo
limitNo
usernameYes
time_filterNoall

TDQS

C2.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 behavioral burden, and it discloses almost nothing: no read-only confirmation, no pagination behavior (the 'after' cursor), no note that limit caps at 100, and no output/return shape. Only the implicit read nature of 'submission history' hints at behavior.

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

Conciseness3/5

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

A single short sentence with no waste, and the core purpose is front-loaded. But at this brevity it crosses into under-specification for a 5-parameter, paginated, sorted query tool.

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 5 parameters, no annotations, no output schema, and 17 siblings including near-duplicates, the definition supplies only the bare purpose. It omits pagination, sorting semantics, default behavior, and sibling routing that an agent needs to call 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 0% across 5 parameters, so the description must compensate and it does not mention a single parameter. Names like sort and time_filter are largely self-explanatory via their enums, but 'after' is genuinely ambiguous (pagination cursor vs. time bound) and goes unclarified in both places.

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?

States a specific verb ('Get') and resource ('a user's submission history'), so an agent knows this returns posts authored by a given user. However, it does not distinguish itself from close siblings such as get_user_comments, get_user_profile, or search_posts, which an agent could easily confuse it with.

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 when-to-use guidance, no prerequisites, and no mention of alternatives. The name implies 'use this for a user's posts, not their comments', but the description never says so, and nothing addresses when to prefer search_posts or get_user_comments.

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

get_user_profileB

Get a Reddit user's public profile: karma, account age, badges

ParametersJSON Schema
NameRequiredDescriptionDefault
usernameYes

TDQS

B3.1/5.0
Behavior3/5

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

No annotations exist, so the description carries the burden; 'public profile' implies read-only, side-effect-free behavior, which is useful but only implicit. It says nothing about rate limits, handling of suspended/deleted/private accounts, or what happens with an unknown username.

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 tight sentence, front-loaded with the verb and resource, with the returned fields as a compact trailing clause. Nothing is wasted.

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?

With no output schema, the description partially covers the return shape (karma, account age, badges) but does not claim to be exhaustive. Missing edge-case behavior and username format leave modest gaps for a one-parameter read 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?

The single required parameter has 0% schema description coverage and the description never mentions it. Format questions an agent would ask — whether to pass 'u/name' or bare 'name', and case sensitivity — are left entirely unanswered.

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?

Specific verb+resource ('Get a Reddit user's public profile') with a preview of the payload (karma, account age, badges). It does not distinguish itself from the sibling get_my_profile, so an agent gets no help choosing between the two beyond the word 'user'.

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 indication of when to use this versus get_my_profile, get_user_posts, or get_user_comments. There is no prerequisite or exclusion stated, so the agent must infer routing from the name alone.

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

reply_to_commentC

Reply to a comment (requires user auth)

ParametersJSON Schema
NameRequiredDescriptionDefault
contentYes
comment_idYes

TDQS

C2.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 carries full behavioral burden, yet it only discloses that user auth is required. It does not state that it creates a new comment, whether the reply is nested, whether it is reversible, or any rate/idempotency behavior.

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?

A single front-loaded sentence with no filler; the auth note is compactly placed in parentheses. Brevity is good, but it is brevity at the cost of substance rather than earned concision.

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 annotations, no output schema, and 0% schema description coverage, the description is too thin for a state-changing tool. It omits what the parameters mean, what happens on success or failure, and when this is preferable to reply_to_post.

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% for two required parameters. The description implies comment_id is the target and content is the body, but adds no format, length, or ID-source guidance beyond the bare schema types.

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?

States a clear verb+resource ('Reply to a comment'), which distinguishes it from the sibling reply_to_post. It does not, however, say anything about the reply target's context or threading behavior.

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 only guidance is a parenthetical auth prerequisite; there is no when-to-use framing or mention of alternatives such as reply_to_post. An agent gets no help choosing among the many write siblings (edit_comment, delete_comment, vote, reply_to_post).

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

reply_to_postC

Add a top-level comment to a post (requires user auth)

ParametersJSON Schema
NameRequiredDescriptionDefault
contentYes
post_idYes

TDQS

C2.9/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 discloses that user auth is required, which is useful, but does not describe whether the comment is immediately visible, whether it can be deleted, or other behavioral traits. For a mutation tool with no annotations, this is a notable gap.

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?

One efficient sentence with the core action and constraint front-loaded. No wasted words.

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?

No output schema, no annotations, and 0% schema description coverage. The description is minimal and doesn't cover important details like return value, visibility, or editing/deletion implications. For a mutation tool, more context is expected.

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 0%, so the schema provides no semantic info for the two parameters (post_id, content). The description does not explain these parameters beyond their names, but with only two required parameters and low complexity, a baseline 3 is appropriate.

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?

States a specific verb (add) and resource (top-level comment to a post), clearly distinguishing it from reply_to_comment (which adds replies to comments). The parenthetical notes it's top-level, which differentiates from nested replies.

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 on when to use this vs reply_to_comment or create_post. The auth requirement is noted, but there's no explicit when/when-not or alternatives mentioned.

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

search_postsC

Full-text search across Reddit or within a specific subreddit

ParametersJSON Schema
NameRequiredDescriptionDefault
sortNorelevance
afterNo
limitNo
queryYes
subredditNo
time_filterNoall

TDQS

C2.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 carries the full burden. It doesn't mention that this is a read-only operation, that it returns a list, anything about pagination behavior, rate limits, or sorting defaults beyond what's in the schema. The description is minimal for a search tool.

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, front-loaded sentence with no waste. It is effectively concise for what it does, but being too short contributes to the other gaps.

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 six-parameter search tool with no output schema and no annotations, the description is far too sparse. It fails to cover authentication needs, response format, or any parameter semantics.

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%, so the description must compensate. It only vaguely implies a query and an optional subreddit scope, but does not explain sort, after, limit, or time_filter parameters at all. This leaves six parameters essentially undocumented.

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?

States a specific verb (search) and resource (posts) with scope (full-text, across Reddit or within a subreddit). This is clear, but it doesn't distinguish itself from sibling tools like get_subreddit_posts, which also retrieve posts.

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 only offers the scope ('or within a specific subreddit') with no when-to-use guidance or alternatives. It doesn't say when to use search_posts versus get_subreddit_posts or get_post_detail.

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

voteC

Upvote, downvote, or unvote on a post or comment (requires user auth)

ParametersJSON Schema
NameRequiredDescriptionDefault
directionYes
target_idYes

TDQS

C2.8/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 behavioral burden. It usefully discloses the auth requirement, but says nothing about whether revoting overwrites a prior vote, whether voting is idempotent, or what happens on an invalid target — all material for a mutation tool.

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?

A single compact sentence with the action list front-loaded and the auth caveat in parentheses. No wasted words, though it is arguably too terse given the unresolved target-type question.

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 two-parameter, no-output-schema tool the description covers the core action adequately, and the auth note is a useful addition. It remains incomplete on the key ambiguity of how target_id maps to a post vs. comment and on re-vote/idempotency behavior.

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 coverage is 0% and the description adds no parameter meaning. The direction enum is self-evident from the schema, but target_id is an opaque string and the description never explains whether it is a post ID, comment ID, or how the tool knows which. That ambiguity is left entirely to the caller.

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?

Specific verb set (upvote, downvote, unvote) and clear resource (post or comment), which distinguishes it from every sibling tool. It stops short of 5 only because it doesn't clarify how a single target_id resolves to either a post or a comment.

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 when-to-use guidance, no prerequisites beyond 'requires user auth', and no mention of alternatives. An agent knows what it does but not the context in which to reach for it over, say, editing content.

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. 18 tool updatesv1.0.1
    • First observedcreate_post
    • First observeddelete_comment
    • First observeddelete_post
    • First observededit_comment
    • First observededit_post
    • First observedget_comment_thread
    • First observedget_my_profile
    • First observedget_post_detail
    • First observedget_subreddit_info
    • First observedget_subreddit_posts
    • First observedget_trending_subreddits
    • First observedget_user_comments
    • First observedget_user_posts
    • First observedget_user_profile
    • First observedreply_to_comment
    • First observedreply_to_post
    • First observedsearch_posts
    • First observedvote

TDQS

B3.1/5.0

Scored across 18 tools

Disambiguation4/5

Most tools target distinct resource+action pairs (search vs. subreddit listing vs. post detail vs. comment thread), and the read/write split is clear. Some boundary overlap exists between search_posts and get_subreddit_posts, and between get_post_detail and get_comment_thread, but descriptions adequately differentiate them.

Naming Consistency4/5

Nearly all tools follow a predictable verb_noun or verb_to_noun pattern (get_subreddit_info, create_post, reply_to_comment, delete_comment). The lone bare verb 'vote' is a minor deviation but doesn't break readability.

Tool Count4/5

18 tools is slightly on the heavy side but well justified by the mix of read operations, user-scoped queries, and authenticated write actions. Each tool maps to a distinct Reddit capability rather than padding the surface.

Completeness4/5

Core lifecycle is well covered: search, discovery, post/comment read and full CRUD, replies, voting, and self-profile. Gaps remain for common Reddit actions like save/unsave, subscribe, inbox/messages, and moderation, but the agent can accomplish most core workflows.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    F
    maintenance
    An MCP server that enables AI assistants to access and interact with Reddit content through features like user analysis, post retrieval, subreddit statistics, and authenticated posting capabilities.
    15
    301
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    An MCP server that enables authenticated Reddit account actions like posting, commenting, voting, and messaging via the Reddit API.
    12
    18 npm
    MIT