threadr-mcp
Provides full access to Reddit including search, browse, read, post, comment, vote, edit, and delete operations.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@threadr-mcpshow me the top posts from r/golang"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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.
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-mcpClaude 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.
Go to reddit.com/prefs/apps
Create a new app (select script type)
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 |
| Tier 2+ | 2, 3 | Reddit app client ID |
| Tier 2+ | 2, 3 | Reddit app client secret |
| Tier 3 | 3 | Reddit account username |
| Tier 3 | 3 | Reddit account password |
Tools
Read Tools (all tiers)
Tool | Description | Key Parameters |
| Full-text search across Reddit or within a subreddit |
|
| Subreddit metadata: subscribers, rules, description, flair |
|
| Posts from a subreddit with sort options |
|
| Full post with comment tree, configurable depth |
|
| User profile: karma, account age, badges |
|
| User's submission history |
|
| User's comment history |
|
| Currently popular subreddits |
|
| Single comment with parent chain and replies |
|
| Authenticated user's own profile (Tier 3) | — |
Write Tools (Tier 3 only)
Tool | Description | Key Parameters |
| Create a text or link post |
|
| Add a top-level comment to a post |
|
| Reply to a comment |
|
| Upvote, downvote, or unvote |
|
| Edit your own post |
|
| Edit your own comment |
|
| Delete your own post |
|
| Delete your own comment |
|
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 testLicense
MIT
Available Tools
18 toolscreate_postA
Create a text or link post in a subreddit (requires user auth)
| Name | Required | Description | Default |
|---|---|---|---|
| nsfw | No | ||
| title | Yes | ||
| content | Yes | ||
| is_self | No | ||
| spoiler | No | ||
| flair_id | No | ||
| subreddit | Yes |
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| comment_id | Yes |
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| post_id | Yes |
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| content | Yes | ||
| comment_id | Yes |
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| content | Yes | ||
| post_id | Yes |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| depth | No | ||
| context | No | ||
| comment_id | Yes |
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| post_id | Yes | ||
| comment_sort | No | best | |
| comment_depth | No | ||
| comment_limit | No |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| subreddit | Yes |
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | hot | |
| after | No | ||
| limit | No | ||
| subreddit | Yes | ||
| time_filter | No | day |
TDQS
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.
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.
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.
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.
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.
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_trending_subredditsC
Get currently popular subreddits
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description must carry the full behavioral burden. 'Get' implies a read-only operation, but the description does not disclose what 'popular' means (e.g., time window, ranking algorithm), return format, rate limits, or that it is safe/read-only. This is insufficient for a tool with zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short sentence with no wasted words, and the core purpose is front-loaded. However, it is arguably too terse for a tool that needs more context, but from a pure conciseness standpoint it is efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with one parameter, no output schema, and no annotations, the description provides minimal context. It omits parameter usage, return format, and any behavioral details, leaving the agent to infer too much.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the description does not mention the single 'limit' parameter at all. While the schema defines type, default, min, and max, the description adds no semantic meaning about what limit controls or how to use it. This fails to compensate for the lack of schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb 'Get' and resource 'currently popular subreddits', which is clear and distinct from sibling tools that focus on specific subreddits, posts, or users. However, it does not explicitly differentiate from any sibling by naming an alternative or scope boundary, so it falls short of the 5 criteria.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like get_subreddit_info or search_posts. It also does not state prerequisites or exclusions.
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
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | new | |
| after | No | ||
| limit | No | ||
| username | Yes | ||
| time_filter | No | all |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | new | |
| after | No | ||
| limit | No | ||
| username | Yes | ||
| time_filter | No | all |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| username | Yes |
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| content | Yes | ||
| comment_id | Yes |
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| content | Yes | ||
| post_id | Yes |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | relevance | |
| after | No | ||
| limit | No | ||
| query | Yes | ||
| subreddit | No | ||
| time_filter | No | all |
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| direction | Yes | ||
| target_id | Yes |
TDQS
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.
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.
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.
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.
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.
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.
18 tool updates
v1.0.1- First observed
create_post - First observed
delete_comment - First observed
delete_post - First observed
edit_comment - First observed
edit_post - First observed
get_comment_thread - First observed
get_my_profile - First observed
get_post_detail - First observed
get_subreddit_info - First observed
get_subreddit_posts - First observed
get_trending_subreddits - First observed
get_user_comments - First observed
get_user_posts - First observed
get_user_profile - First observed
reply_to_comment - First observed
reply_to_post - First observed
search_posts - First observed
vote
TDQS
Scored across 18 tools
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.
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.
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.
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
Related MCP Connectors
MCP server for building and testing AI agents with multi-model experimentation and insights.
Reddit & X data for AI agents over MCP. Semantic search, hosted, no Reddit API.
- UnifAPIOAuthcom.unifapi
Hosted MCP server for live public-data APIs and Skills for AI agents.
Driflyte MCP server which lets AI assistants query topic-specific knowledge from web and GitHub.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA specialized MCP server that enables AI agents to interact with Reddit, including reading posts, creating content, and managing subreddit configurations.18 npm10Apache 2.0
- AlicenseBqualityDmaintenanceA plug-and-play MCP server that enables AI assistants to browse, search, and read Reddit content through the PRAW library.618MIT
- AlicenseAqualityFmaintenanceAn 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.15301MIT
- AlicenseAqualityBmaintenanceAn MCP server that enables authenticated Reddit account actions like posting, commenting, voting, and messaging via the Reddit API.1218 npmMIT