Skip to main content
Glama
Reddit MCP Server

Reddit MCP Server

Reddit MCP Server

一个用于与 Reddit 交互的 Model Context Protocol (MCP) 服务器——获取帖子、评论、用户信息,以及创建内容。

npm version npm downloads GitHub stars License: MIT

功能一览

功能

reddit-mcp-server

其他 Reddit MCP

创建帖子

:white_check_mark:

:x:

回复帖子/评论

:white_check_mark:

:x:

编辑帖子/评论

:white_check_mark:

:x:

删除帖子/评论

:white_check_mark:

:x:

垃圾信息防护(安全模式)

:white_check_mark:

:x:

机器人披露页脚

:white_check_mark:

:x:

内置政策合规

:white_check_mark:

:x:

浏览 Subreddit

:white_check_mark:

:white_check_mark:

搜索 Reddit

:white_check_mark:

:white_check_mark:

用户分析

:white_check_mark:

:white_check_mark:

帖子评论

:white_check_mark:

:white_check_mark:

零配置匿名模式

:white_check_mark:

:white_check_mark:

三级认证(10/60/100 rpm)

:white_check_mark:

:white_check_mark:

Related MCP server: Reddit MCP Server

快速开始

选项 1:Claude Desktop 扩展(最简单)

下载并打开扩展文件——Claude Desktop 将自动安装它:

下载 reddit-mcp-server.mcpb

选项 2:NPX(无需安装)

npx reddit-mcp-server

或者添加到你的 MCP 配置中(Claude Desktop、Cursor 等):

{
  "mcpServers": {
    "reddit": {
      "command": "npx",
      "args": ["reddit-mcp-server"]
    }
  }
}

选项 3:Claude Code

claude mcp add --transport stdio reddit -- npx reddit-mcp-server

功能

只读工具

工具

描述

get_reddit_post

获取特定 Reddit 帖子并附带互动分析

get_top_posts

从 subreddit 或首页信息流获取热门帖子

browse_subreddit

按排序方式(hot、new、top、rising、controversial)浏览 subreddit/首页信息流

get_user_info

获取 Reddit 用户的详细信息

get_user_posts

获取特定用户提交的帖子

get_user_comments

获取特定用户发表的评论

get_subreddit_info

获取 subreddit 详情和统计数据

get_trending_subreddits

获取当前热门的 subreddit

get_post_comments

获取特定帖子的评论并带线程结构

search_reddit

在 Reddit 上搜索帖子

写入工具(需要用户凭据)

工具

描述

create_post

在 subreddit 中创建新帖子

reply_to_post

回复现有帖子或评论

edit_post

编辑你自己的 Reddit 帖子(仅限文本内容)

edit_comment

编辑你自己的 Reddit 评论

delete_post

永久删除你自己的帖子

delete_comment

永久删除你自己的评论

配置

环境变量

变量

必填

默认值

描述

REDDIT_CLIENT_ID

否*

-

Reddit 应用客户端 ID

REDDIT_CLIENT_SECRET

否*

-

Reddit 应用客户端密钥

REDDIT_USERNAME

否

-

Reddit 用户名(用于写入操作)

REDDIT_PASSWORD

否

-

Reddit 密码(用于写入操作)

REDDIT_USER_AGENT

否

自动生成

自定义 User-Agent 字符串

REDDIT_AUTH_MODE

否

auto

认证模式:auto、authenticated、anonymous

REDDIT_SAFE_MODE

否

standard

写入保护:off、standard、strict

REDDIT_BOT_DISCLOSURE

否

off

机器人披露页脚:auto、off

REDDIT_BOT_FOOTER

否

内置

自定义机器人页脚文本(当披露设置为 auto 时)

REDDIT_CACHE

否

on

读取请求的内存缓存:on、off

REDDIT_CACHE_MAX_MB

否

50

缓存大小上限(MB)(超出后按 LRU 淘汰)

REDDIT_MAX_RETRIES

否

3

HTTP 429 时按 Retry-After 退避重试次数(设为 0 禁用)

*仅在使用 authenticated 模式时需要。

完整 MCP 配置示例

{
  "mcpServers": {
    "reddit": {
      "command": "npx",
      "args": ["reddit-mcp-server"],
      "env": {
        "REDDIT_CLIENT_ID": "your_client_id",
        "REDDIT_CLIENT_SECRET": "your_client_secret",
        "REDDIT_USERNAME": "your_username",
        "REDDIT_PASSWORD": "your_password",
        "REDDIT_SAFE_MODE": "standard"
      }
    }
  }
}

安全模式(垃圾信息防护)

通过内置保护措施,保护你的 Reddit 账户免受垃圾信息检测和封禁。默认启用(standard 模式),符合 Reddit 的 Responsible Builder Policy。

为什么使用安全模式?

Reddit 的垃圾信息检测可能会因以下行为标记账户:

  • 快速发帖或评论

  • 重复或相似内容

  • 在多个 subreddit 发布相同内容

  • 非标准 User-Agent 字符串

安全模式可自动帮助防止这些问题。

模式选项

模式

写入延迟

重复检测

适用场景

off

无

否

仅限明确选择退出

standard

2 秒

最近 10 项 + 跨 subreddit

默认,推荐

strict

5 秒

最近 20 项 + 跨 subreddit

适用于谨慎的自动化发帖

禁用安全模式

安全模式默认启用。要明确禁用:

export REDDIT_SAFE_MODE=off
npx reddit-mcp-server

安全模式的作用

  1. 速率限制:在写入操作之间强制执行最小延迟

  2. 重复检测:阻止相同内容被发布两次

  3. 跨 Subreddit 检测:防止将相同内容发布到多个 subreddit(依据 Reddit 政策)

  4. 智能 User-Agent:提供用户名时自动生成符合 Reddit 规范的 User-Agent 格式

机器人披露

Reddit 的 Responsible Builder Policy 要求机器人披露其自动化性质。在所有发布内容上启用自动机器人页脚:

export REDDIT_BOT_DISCLOSURE=auto
npx reddit-mcp-server

启用后,页脚将附加到所有帖子、回复和编辑中:

---
🤖 I am a bot | Built with reddit-mcp-server

使用 REDDIT_BOT_FOOTER 自定义页脚:

export REDDIT_BOT_DISCLOSURE=auto
export REDDIT_BOT_FOOTER=$'\n\n---\n^(🤖 Custom bot footer text)'

认证模式

模式对比

模式

速率限制

需要设置

最适合

anonymous

~10 次/分钟

无

快速测试、只读

auto(默认)

10-100 次/分钟

可选

灵活使用

authenticated

60-100 次/分钟

需要

生产环境使用

匿名模式(零配置)

{
  "env": {
    "REDDIT_AUTH_MODE": "anonymous"
  }
}

匿名模式并非在所有网络上都能工作。 Reddit 会阻止来自许多 IP 段的未认证请求——数据中心、云主机、VPN 以及其标记的地址——并以 HTTP 403 阻止页面作为响应。如果遇到这种情况,工具将失败并显示:

Reddit is blocking unauthenticated requests from this network (HTTP 403 with a
block page). Set REDDIT_CLIENT_ID and REDDIT_CLIENT_SECRET to authenticate with
OAuth, which also raises the rate limit from ~10 to 60+ requests/min.

解决办法是使用 OAuth 凭据——请参阅下一节。这是你的网络属性,而不是你的 Reddit 账户或所请求的 subreddit 的问题,因此它会同时影响所有工具。如果单个 subreddit 返回 403 而其他正常,则是另一回事:该 subreddit 是私有的或被隔离的。

认证模式(更高速率限制)

  1. 在 https://www.reddit.com/prefs/apps 创建一个 Reddit 应用(选择 "script" 类型)

  2. 复制客户端 ID 和密钥

  3. 配置:

{
  "env": {
    "REDDIT_AUTH_MODE": "authenticated",
    "REDDIT_CLIENT_ID": "your_client_id",
    "REDDIT_CLIENT_SECRET": "your_client_secret"
  }
}

写入操作

要创建帖子、回复、编辑或删除内容,你需要用户凭据:

{
  "env": {
    "REDDIT_USERNAME": "your_username",
    "REDDIT_PASSWORD": "your_password",
    "REDDIT_SAFE_MODE": "standard"
  }
}

开发

命令

pnpm install        # Install dependencies
pnpm build          # Build TypeScript
pnpm dev            # Build and run MCP inspector
pnpm test           # Run tests
pnpm lint           # Lint code
pnpm format         # Format code

CLI 选项

npx reddit-mcp-server --version         # Show version
npx reddit-mcp-server --help            # Show help
npx reddit-mcp-server --generate-token  # Generate OAuth token for HTTP mode

HTTP 服务器模式

对于 Docker 部署或基于 Web 的客户端,请使用 HTTP 传输:

TRANSPORT_TYPE=httpStream PORT=3000 node dist/index.js

使用 OAuth 保护

export OAUTH_ENABLED=true
export OAUTH_TOKEN=$(npx reddit-mcp-server --generate-token | tail -1)
TRANSPORT_TYPE=httpStream node dist/index.js

发起认证请求:

curl -H "Authorization: Bearer $OAUTH_TOKEN" \
     -H "Content-Type: application/json" \
     -d '{"method":"tools/list","params":{}}' \
     http://localhost:3000/mcp

Docker

快速开始

# Pull and run
docker pull ghcr.io/jordanburke/reddit-mcp-server:latest

docker run -d \
  --name reddit-mcp \
  -p 3000:3000 \
  -e REDDIT_CLIENT_ID=your_client_id \
  -e REDDIT_CLIENT_SECRET=your_client_secret \
  -e REDDIT_SAFE_MODE=standard \
  ghcr.io/jordanburke/reddit-mcp-server:latest

Docker Compose

services:
  reddit-mcp:
    image: ghcr.io/jordanburke/reddit-mcp-server:latest
    ports:
      - "3000:3000"
    environment:
      - REDDIT_CLIENT_ID=${REDDIT_CLIENT_ID}
      - REDDIT_CLIENT_SECRET=${REDDIT_CLIENT_SECRET}
      - REDDIT_USERNAME=${REDDIT_USERNAME}
      - REDDIT_PASSWORD=${REDDIT_PASSWORD}
      - REDDIT_SAFE_MODE=standard
      - OAUTH_ENABLED=${OAUTH_ENABLED:-false}
      - OAUTH_TOKEN=${OAUTH_TOKEN}
    restart: unless-stopped

本地构建

docker build -t reddit-mcp-server .
docker run -d --name reddit-mcp -p 3000:3000 --env-file .env reddit-mcp-server

Reddit Responsible Builder Policy

此服务器在设计时考虑了 Reddit 的 Responsible Builder Policy:

  • 默认开启安全模式 — 速率限制和重复检测防止垃圾信息

  • 跨 subreddit 重复检测 — 阻止跨 subreddit 的相同内容

  • 机器人披露支持 — 可选的自动页脚以实现透明性

  • 无投票/声望操纵 — 有意排除 upvote/downvote 工具

  • 无私信功能 — 有意排除 DM 工具

  • 政策感知的 AI 指令 — MCP 服务器指令提醒 AI 助手注意数据使用限制

致谢

Available Tools

23 tools
browse_subredditA
Read-only

Browse a subreddit — or the authenticated home feed when no subreddit is given — by sort order: hot, new, top, rising, or controversial. Read-only; works anonymously. time_filter applies only to the top and controversial sorts. Returns a page of posts (title, author, score, upvote ratio, comments, link) plus an after cursor. Use get_top_posts as a shortcut for the top sort, or search_reddit to find posts by keyword rather than by feed order.

NameRequiredDescriptionDefault
sortNoFeed ordering: 'hot' (default), 'new', 'rising', 'top', or 'controversial'. 'top'/'controversial' honor `time_filter`.hot
afterNoForward pagination cursor: the `after` value from a previous call. Omit for the first page.
limitNoHow many posts to return, 1–100 (default 10).
subredditNoSubreddit to browse, without the r/ prefix (e.g. 'news'). Omit to use the authenticated home feed (requires credentials).
time_filterNoTime window; only applies to sort='top' or 'controversial'. Ignored otherwise. Default 'week'.week

TDQS

A4.7/5.0
Behavior4/5

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

Adds value beyond readOnlyHint=true annotation by clarifying it 'works anonymously', explaining time_filter only applies to top/controversial, describing return shape, and noting the after cursor. Strong context beyond annotations.

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

Conciseness5/5

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

Three sentences, information-dense, purpose front-loaded, every clause earns its place. Covers tool purpose, behavioral notes, return shape, and alternatives without redundancy.

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

Completeness5/5

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

Given 5 optional params (0 required), full schema descriptions, and rich annotations, the description covers all essential context: default behavior, pagination, auth model, and edge cases. Nothing material is missing.

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

Parameters4/5

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

Schema coverage is 100% with good per-param descriptions, earning a baseline 3. Description adds cross-parameter semantics (omit subreddit → home feed, time_filter interaction with sort) and describes pagination behavior not in schema.

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?

Uses a specific verb (browse) plus resource (subreddit or home feed) with concrete sort orders. Explicitly differentiates from siblings by naming get_top_posts and search_reddit as alternatives with different purposes.

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

Usage Guidelines5/5

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

States when to use this tool ('by sort order', 'by feed order') and explicitly directs to get_top_posts as a shortcut and search_reddit for keyword-based lookup. Clear when/alternatives guidance.

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

create_postA

Create a new text or link post in a subreddit. Mutating and NOT idempotent — each call publishes a separate post. Requires REDDIT_USERNAME and REDDIT_PASSWORD; fails without them. Returns the new post's id and URL. Check get_subreddit_rules and get_post_flairs first, since many subreddits require a flair or reject certain content. WARNING: rapid posting or duplicate content may trigger Reddit's spam detection and account bans — enable REDDIT_SAFE_MODE=standard for rate limiting and duplicate detection.

NameRequiredDescriptionDefault
titleYesPost title (cannot be edited after creation).
contentYesFor a self post (is_self=true): the body text, Reddit markdown supported. For a link post (is_self=false): the destination URL.
is_selfNotrue = text/self post using `content` as the body (default); false = link post using `content` as the URL.
flair_idNoLink flair template id from get_post_flairs; many subreddits require one or the post is auto-removed.
subredditYesTarget subreddit, without the r/ prefix (e.g. 'test').
flair_textNoCustom flair text, allowed only for flairs whose template is text-editable.

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare non-idempotent and openWorld, but description adds critical context: requires REDDIT_USERNAME/PASSWORD, is mutating (confirmed by readOnlyHint=false), and returns id/URL. Warns of account bans without safe mode, which is valuable beyond annotations.

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?

Well-structured with clear sentences, but somewhat long. Front-loaded with action and key caveats. The warning about spam detection is useful but could be shortened without losing value.

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

Completeness5/5

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

For a mutating, non-idempotent tool with no output schema, the description covers prerequisites, return values, and risks. It compensates for missing output schema by stating the returned id and URL. Adequately complete for an agent to use correctly.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3. Description adds meaning by linking content to is_self, explaining flair requirements, and mentioning that title cannot be edited later. Does not repeat every parameter but reinforces key usage constraints.

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

Purpose5/5

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

Clearly states it creates a text or link post in a subreddit, with explicit verb and resource. Distinguishes from siblings like delete_post and edit_post by describing the publish action and the distinction between self/link posts.

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

Usage Guidelines5/5

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

Provides explicit when-to-use guidance: check get_subreddit_rules and get_post_flairs first for required flairs or content restrictions. Also warns against rapid posting due to spam detection, aligning with the openWorldHint and non-idempotent annotations.

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

delete_commentA
DestructiveIdempotent

Permanently delete one of your own comments. Mutating and destructive but idempotent — deleting an already-deleted comment is a no-op. Requires REDDIT_USERNAME and REDDIT_PASSWORD, and only works on comments authored by the authenticated account. Only affects the comment you name; use delete_post for posts. WARNING: this cannot be undone — the content is removed, though the comment id remains.

NameRequiredDescriptionDefault
thing_idYesThe comment to delete: a full thing id 't1_<id>' or just the base36 comment id '<id>' (the 't1_' prefix is added automatically). Must be a comment you authored.

TDQS

A4.7/5.0
Behavior5/5

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

The annotations already state destructive and idempotent, and the description reinforces that without requiring long original. It also adds critical beyond-annotation details: the required REDDIT_USERNAME and REDDIT_PASSWORD, the authorization/ownership limitation, and the subtle detail that the comment id persists after the content is removed. No contradiction with annotations.

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 four tight sentences with no wasted words. It front-loading the most important facts, following with limitations, and closes with the risk warning. Each sentence serves a clear purpose.

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

Completeness5/5

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

For a single-parameter, no-output-schema deletion tool, the description covers all necessary areas: purpose, scope, auth, idempotency, permanence, and alternative. The annotations and sibling context complete the picture sufficiently, so the description is fully complete.

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

Parameters3/5

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

The only parameter, thing id, is fully documented in the schema at 100% coverage, including the accepted format and automatic 't1_' prefix. The tool description adds no extra symbol-flavor meaning beyond that comprehensive schema, so baseline 3 is appropriate because the schema carries the load.

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

Purpose5/5

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

The description opens with 'Permanently delete one of your own comments,' using a strong verb-resource pair and the scope. It further differentiates from the sibling delete simple by explicitly saying 'use delete_post for posts,' making its purpose distinct.

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

Usage Guidelines5/5

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

The description gives clear when-to-use guidance for deleting a comment the authenticated account owns, when-not-to-use by excluding posts and comments authored by others, and names the alternative delete_post for posts. This covers the key decision boundary.

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

delete_postA
DestructiveIdempotent

Permanently delete one of your own posts. Mutating and destructive but idempotent — deleting an already-deleted post is a no-op. Requires REDDIT_USERNAME and REDDIT_PASSWORD, and only works on posts authored by the authenticated account. Only affects the post you name; use delete_comment for comments. WARNING: this cannot be undone — the content is removed, though the post id remains.

NameRequiredDescriptionDefault
thing_idYesThe post to delete: a full thing id 't3_<id>' or just the base36 post id '<id>' (the 't3_' prefix is added automatically). Must be a post you authored.

TDQS

A4.7/5.0
Behavior5/5

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

Adds detail beyond the annotations: irreversibility warning, idempotent no-op behavior, auth requirements, ownership restriction, and the fact that the post id remains. This enriches behavioral understanding and aligns with the annotations (destructiveHint=true, idempotentHint=true).

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?

Every sentence earns its place: main action, safety characteristics, prerequisites, scope, alternative, and warning. The description is dense but not redundant, and the core action is front-loaded.

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

Completeness5/5

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

For a one-parameter delete operation, the description covers purpose, safety, idempotency, auth, ownership, irreversibility, and differentiation from the comment-deletion sibling. Combined with strong annotations, no critical gap remains.

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

Parameters3/5

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

The schema already documents thing_id thoroughly, including accepted formats and the automated t3_ prefix. The description adds no parameter-specific semantics beyond referencing 'the post you name,' so baseline 3 applies due to high schema coverage.

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

Purpose5/5

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

States the exact action: 'Permanently delete one of your own posts.' It uses a specific verb+resource, and differentiates from sibling delete_comment by explicitly noting 'use delete_comment for comments.'

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

Usage Guidelines5/5

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

Provides clear when-to-use guidance: works only on self-authored posts, requires credentials, and excludes comments with an explicit alternative. This tells the agent both the prerequisites and the boundary of applicability.

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

edit_commentA
DestructiveIdempotent

Replace the text of one of your own comments. Mutating and idempotent (same text → same result); it overwrites the previous content. Requires REDDIT_USERNAME and REDDIT_PASSWORD, and works only on comments you authored. Adds an "edited" marker. Use reply_to_post to add a new comment, or edit_post for posts. WARNING: rapid edits may trigger spam detection; enable REDDIT_SAFE_MODE for protection.

NameRequiredDescriptionDefault
new_textYesReplacement comment text; fully overwrites the current content. Reddit markdown supported.
thing_idYesThe comment to edit: a full thing id 't1_<id>' or just the base36 comment id '<id>' (the 't1_' prefix is added automatically). Must be a comment you authored.

TDQS

A4.7/5.0
Behavior5/5

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

Annotations include destructiveHint=true and idempotentHint=true; the description reinforces and expands on these by stating 'Mutating and idempotent (same text → same result); it overwrites the previous content' and 'Adds an "edited" marker.' It also discloses potential spam detection risk, which is beyond the annotations. No contradiction.

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

Conciseness5/5

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

Three sentences, each earning its place: purpose, usage constraints/alternatives, and a warning. Front-loaded with the core action, no redundant phrasing.

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

Completeness5/5

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

For a simple 2-parameter mutating tool with annotations and no output schema, the description covers purpose, side effects (overwrite, edited marker), prerequisites, alternative tools, and risk mitigation. It is fully self-contained for an agent to select and invoke the tool correctly.

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

Parameters3/5

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

Schema description coverage is 100%, with both new_text and thing_id well described in the schema. The tool description adds no new parameter-level detail beyond what is already in the schema (e.g., it repeats 'overwrites' and 'comments you authored' but doesn't add syntax or format details). Baseline 3 is appropriate.

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

Purpose5/5

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

The description opens with 'Replace the text of one of your own comments,' which is a specific verb (replace) and resource (one of your own comments). It clearly distinguishes from sibling tools by explicitly mentioning reply_to_post for new comments and edit_post for posts.

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

Usage Guidelines5/5

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

Provides explicit guidance: 'Use reply_to_post to add a new comment, or edit_post for posts' names alternatives. It also states prerequisites ('works only on comments you authored', 'Requires REDDIT_USERNAME and REDDIT_PASSWORD') and a warning about rapid edits with a mitigation (REDDIT_SAFE_MODE).

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

edit_postA
DestructiveIdempotent

Replace the body text of one of your own self-text posts. Mutating and idempotent (same text → same result); it overwrites the previous body. Requires REDDIT_USERNAME and REDDIT_PASSWORD, and works only on self posts you authored — titles and link posts cannot be edited. Adds an "edited" marker. Use create_post to make a new post, or edit_comment for comments. WARNING: rapid edits may trigger spam detection; enable REDDIT_SAFE_MODE for protection.

NameRequiredDescriptionDefault
new_textYesReplacement body text; fully overwrites the current body. Reddit markdown supported.
thing_idYesThe post to edit: a full thing id 't3_<id>' or just the base36 post id '<id>' (the 't3_' prefix is added automatically). Must be a self-text post you authored.

TDQS

A4.7/5.0
Behavior5/5

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

Annotations provide idempotentHint, destructiveHint, and readOnlyHint=false. The description adds meaning beyond these: it states the overwrite behavior explicitly, mentions the 'edited' marker, requires REDDIT_USERNAME/PASSWORD credentials, and warns about spam detection. No contradiction with annotations; rather, it enriches them with operational context.

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 two sentences but packs: purpose, mutability, idempotency, credential requirements, scope, marker side-effect, alternative tools, and a safety warning. Every clause earns its place; no fluff. Information density is high while remaining readable.

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

Completeness5/5

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

For a mutating tool with no output schema, the description covers all essential operational aspects: what it does, prerequisites (credentials), constraints (self posts only), side effects (overwrite, marker), and risk (spam detection). The absence of output schema is acceptable since mutation result is straightforward. Complete guidance for an agent to invoke correctly.

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

Parameters3/5

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

Schema coverage is 100% with detailed descriptions for both parameters (new_text explains overwrite and markdown support; thing_id explains format and ownership constraint). The description adds little beyond the schema—it reiterates overwrite and self-post constraint but introduces no new per-parameter semantics. Baseline 3 is appropriate given the schema's thoroughness.

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

Purpose5/5

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

The description opens with a specific verb+resource: 'Replace the body text of one of your own self-text posts.' It clearly scopes to self-text posts, distinguishes from edit_comment and create_post, and clarifies that titles and link posts cannot be edited. This is fully differentiated from siblings.

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

Usage Guidelines5/5

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

Explicitly names alternatives: 'Use create_post to make a new post, or edit_comment for comments.' Also states conditions for use (self posts only, authored by you) and warns about rapid edits triggering spam detection, with a mitigation (REDDIT_SAFE_MODE). This gives clear when/when-not/alternatives guidance.

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

get_meA
Read-only

Get the authenticated user's own profile (karma, account age, status flags). Read-only, but requires user credentials (REDDIT_USERNAME/REDDIT_PASSWORD) and fails in anonymous mode. Use this instead of get_user_info when you need the current account rather than an arbitrary user. Do NOT use it to look up other users — it always returns the logged-in account.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.9/5.0
Behavior5/5

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

Beyond the readOnlyHint annotation, the description adds real behavioral context: it requires REDDIT_USERNAME/REDDIT_PASSWORD, fails in anonymous mode, and always returns the logged-in account regardless of any misleading expectations about arbitrary users. This meaningfully expands on the annotations.

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

Conciseness5/5

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

Three compact sentences: what the tool returns, its access requirements, and explicit guidance versus alternatives. Every sentence provides distinct value without redundancy or fluff.

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

Completeness5/5

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

For a zero-parameter, read-only profile retrieval tool, the description is complete: it covers purpose, content, prerequisites, failure mode, and scope limitations. No output schema exists, but the description names the main returned data (karma, account age, status flags), which is adequate.

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 input schema has zero parameters and is fully covered by the description's statement that the profile belongs to the authenticated account. With no params to document, the description naturally explains why no input is needed, meeting the baseline for parameter clarity.

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

Purpose5/5

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

The description clearly identifies the tool as returning the authenticated user's own profile and lists key contents (karma, account age, status flags), which distinguishes it from the sibling get_user_info. It also explicitly states what the tool does not do, making its scope unambiguous.

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

Usage Guidelines5/5

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

The description explicitly says to use this instead of get_user_info when the current account is needed, and warns against using it for other users. It also provides the critical usage condition: requires user credentials and fails in anonymous mode.

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

get_more_commentsA
Read-only

Expand truncated 'load more comments' stubs in a thread. Read-only; works anonymously. Pass the post's link id and the comment ids from a 'more' node (surfaced by get_post_comments) to fetch those hidden comments; returns the expanded comments (author, body excerpt, score, link). Call get_post_comments first to obtain the thread and its 'more' node ids — do NOT invent ids.

NameRequiredDescriptionDefault
link_idYesThe parent post's link id (base36, with or without the t3_ prefix) that the stub belongs to.
comment_idsYesBase36 comment ids to expand, taken from a 'more' node returned by get_post_comments (not arbitrary ids).

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and openWorldHint, and the description adds context beyond that by stating 'works anonymously' and by describing the returned shape: 'author, body excerpt, score, link.' This gives behavior insight without overstating side effects. It slightly misses possible failure modes or volume limits, but the combination with annotations is strong.

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

Conciseness5/5

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

Three sentences, each earning its place: the first says what it does, the second gives the data flow and return fields, and the third states the prerequisite and key constraint. It is front-loaded and free of redundant phrasing.

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

Completeness5/5

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

Despite having no output schema, the description discloses the return fields, identifies the dependency on get_post_comments, explains the 'more' node source, and asserts anonymity and read-only behavior. Given the small parameter count and rich annotations, the description satisfies all important context an agent needs.

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

Parameters3/5

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

Schema description coverage is 100% and both parameters already have clear descriptions, so the baseline is 3. The description reinforces that comment_ids must come from a 'more' node and says 'do NOT invent ids,' adding practical workflow context but no new parameter format or type details beyond the schema.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Expand truncated ‘load more comments’ stubs in a thread.' This clearly distinguishes the tool from get_post_comments, as this one fetches hidden comments from 'more' nodes while get_post_comments surfaces the thread and its stubs. The scope is fully defined.

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

Usage Guidelines5/5

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

The description gives explicit usage guidance: call get_post_comments first to obtain the thread and 'more' node ids, then pass those ids here. It also warns against inventing ids and notes that it works anonymously and read-only, which helps an agent decide when to invoke this tool.

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

get_my_overviewA
Read-only

Get the authenticated user's own recent activity — posts and comments interleaved, newest first. Read-only but requires user credentials (REDDIT_USERNAME/REDDIT_PASSWORD). Returns up to limit items plus an after cursor for the next page. Use get_my_saved for saved items, or get_user_posts / get_user_comments for another user. Do NOT use this to fetch a specific post's thread — use get_post_comments.

NameRequiredDescriptionDefault
afterNoForward pagination cursor: the `after` value returned by a previous call. Omit for the first page.
limitNoHow many activity items to return, 1–100 (default 25).

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=true, but the description adds meaningful behavioral context: credentials are required, the result is interleaved posts/comments in newest-first order, and pagination uses an `after` cursor. No contradiction with annotations exists.

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 short, front-loaded with the purpose, and every sentence contributes useful information — scope, credentials, return behavior, and explicit sibling alternatives. No redundant or vague wording.

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?

No output schema exists, but the description communicates the essential return semantics: up to `limit` items, posts and comments interleaved, newest first, with an `after` cursor. It could arguably describe item fields in more detail, but for this tool the provided context is reasonably complete.

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

Parameters3/5

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

Schema coverage is 100%, with both `limit` and `after` already well-described. The description reinforces their meaning by mentioning the pagination cursor and item limit, but it does not add substantive parameter semantics beyond what the schema already provides.

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

Purpose5/5

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

The description specifies a concrete action and scope: fetching the authenticated user's own recent activity, interleaving posts and comments, newest first. It also explicitly distinguishes this from get_my_saved, get_user_posts, get_user_comments, and get_post_comments.

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

Usage Guidelines5/5

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

The description provides clear when-to-use guidance: use get_my_saved for saved items, get_user_posts/get_user_comments when targeting another user, and do NOT use this tool for a specific post's thread — use get_post_comments instead.

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

get_my_savedA
Read-only

Get the authenticated user's saved posts and comments (private to the account). Read-only but requires user credentials (REDDIT_USERNAME/REDDIT_PASSWORD). Returns up to limit items plus an after pagination cursor. Use get_my_overview for your authored activity. Do NOT use this for another user — saved items are private and have no cross-user equivalent.

NameRequiredDescriptionDefault
afterNoForward pagination cursor: the `after` value returned by a previous call. Omit for the first page.
limitNoHow many saved items to return, 1–100 (default 25).

TDQS

A4.7/5.0
Behavior5/5

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

Annotations only mark readOnlyHint/openWorldHint; the description adds critical details: required user credentials (REDDIT_USERNAME/REDDIT_PASSWORD), pagination behavior ('Returns up to limit items plus an after cursor'), and privacy context ('saved items are private'). This goes far beyond the annotations and fully discloses the tool's behavior.

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?

Every sentence earns its place: purpose, credential requirement, pagination output, and a clear distinction from a sibling tool with an explicit cross-usage warning. No redundant phrasing or filler.

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

Completeness5/5

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

For a two-parameter read-only tool with no output schema, the description covers purpose, auth, pagination, alternative tools, and edge-case privacy constraints. It answers all likely agent questions and leaves nothing structurally ambiguous.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema fully documents each parameter. The description mentions `limit` and `after` in a pagination context, reinforcing their purpose, but doesn't add new syntax or formatting details beyond what the schema already provides—baseline 3 is appropriate.

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

Purpose5/5

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

Description explicitly states 'Get the authenticated user's saved posts and comments (private to the account)', naming the resource and scope. It distinguishes from siblings by pointing to 'get_my_overview' for authored activity and clearly stating the lack of cross-user access, eliminating ambiguity.

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

Usage Guidelines5/5

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

The description provides explicit when-to-use ('Get the authenticated user's saved posts/comments'), an alternative ('Use get_my_overview for your authored activity'), and when-not-to-use ('Do NOT use this for another user'). It even covers the auth prerequisite, offering complete guidance.

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

get_post_commentsA
Read-only

Get the comment thread for a post (by post id + subreddit), sorted best/top/new/controversial/old/qa. Read-only; works anonymously. Returns the post header plus threaded comments (author, OP/edited badges, score, body, nesting depth) up to limit. Long threads are truncated with 'load more' stubs — expand those with get_more_comments. Use get_reddit_post for just the post body, not the thread.

NameRequiredDescriptionDefault
sortNoComment ordering: 'best' (default), 'top', 'new', 'controversial', 'old', or 'qa' (Q&A).best
limitNoMaximum comments to return, 1–500 (default 100). Deeply nested replies may still be truncated as 'load more' stubs.
post_idYesBase36 post id — the segment after /comments/ in a permalink (e.g. '1abc23'). With or without a t3_ prefix.
subredditYesThe subreddit the post lives in, without the r/ prefix (e.g. 'movies').

TDQS

A4.9/5.0
Behavior5/5

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

Despite readOnlyHint and openWorldHint annotations, the description adds meaningful context: it is read-only (consistent) and 'works anonymously', and reveals that long threads are truncated with 'load more' stubs. This goes beyond annotations and desribes the tool's behavior clearly.

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 compact, front-loaded with the main purpose, and each sentence adds value: purpose, sort options, read-only, truncation behavior, and alternative tools. No redundant text.

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

Completeness5/5

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

Although no output schema is provided, the description summarizes what is returned (post header, threaded comments with author badges, score, body, nesting depth, limit) and explains truncation behavior. This is sufficient for an agent to understand the tool's capabilities and expected output.

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

Parameters4/5

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

Schema already covers all parameters with 100% coverage, so baseline is 3. The description adds extra value by clarifying that post_id can include a t3_ prefix, and that limit may still result in truncation due to threading. This goes above the schema's basic descriptions.

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

Purpose5/5

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

The description explicitly states 'Get the comment thread for a post (by post id + subreddit)' and enumerates sort options. It distinguishes from sibling get_reddit_post by noting that tool is for 'just the post body, not the thread', ensuring clear differentiation.

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

Usage Guidelines5/5

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

Provides explicit guidance on when to use this tool (to fetch a comment thread) and when not (use get_reddit_post for post body). Also mentions get_more_comments for expanding truncated threads, giving a clear alternative path for further data.

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

get_post_flairsA
Read-only

List a subreddit's selectable link flairs (flair text + flair_id) for use with create_post. Read-only, but requires user credentials; many subreddits expose flairs only to members, so this can 403 or return empty anonymously. Pass a returned flair_id (and flair_text for text-editable flairs) to create_post. For the subreddit's posting rules use get_subreddit_rules instead.

NameRequiredDescriptionDefault
subreddit_nameYesThe subreddit name, without the r/ prefix (e.g. 'gadgets').

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the readOnlyHint annotation, the description discloses that user credentials are required, that anonymous access may 403 or return empty, and that many subreddits expose flairs only to members. This adds meaningful behavioral context not present in the annotations.

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 concise and well-structured: it states the purpose, adds important auth/behavioral caveats, explains how to use the output, and points to the alternative tool. Every sentence earns its place with no fluff.

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

Completeness5/5

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

For a simple one-parameter list tool with no output schema, the description is complete: it explains what is returned, how to use it, when it may fail, and which sibling tool covers the related use case. The annotations and schema cover the remaining context.

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

Parameters3/5

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

The input schema already fully documents the single parameter subreddit_name, including the r/ prefix guidance. The description does not add additional parameter-level meaning, so the baseline score of 3 applies.

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

Purpose5/5

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

The description clearly states the tool lists a subreddit's selectable link flairs, including the exact returned fields (flair text + flair_id). It also distinguishes itself from the sibling get_subreddit_rules by explicitly directing users there for posting rules.

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

Usage Guidelines5/5

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

The description explicitly explains when to use this tool: to obtain flairs for create_post, and tells the user to pass the returned flair_id/flair_text to create_post. It also names get_subreddit_rules as the alternative for posting rules, providing clear usage context.

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

get_reddit_postA
Read-only

Get a single post by subreddit + post id: title, author, self-text or link content, score, upvote ratio, comment count, flair/flags, and an engagement analysis. Read-only; works anonymously. Returns the post only — use get_post_comments for its comment thread. Do NOT use this to list a subreddit's posts (use browse_subreddit / get_top_posts) or to find posts by keyword (use search_reddit).

NameRequiredDescriptionDefault
post_idYesBase36 post id — the segment after /comments/ in a permalink like reddit.com/r/<sub>/comments/<post_id>/... (e.g. '1abc23'). With or without a t3_ prefix.
subredditYesThe subreddit the post lives in, without the r/ prefix (e.g. 'programming').

TDQS

A4.5/5.0
Behavior4/5

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

The readOnlyHint annotation covers safety, but the description adds further useful behavior: 'works anonymously', 'Read-only', and 'Returns the post only' — a scope constraint that proactively avoids confusion with nested comments. It also discloses the kind of content included (title, score, engagement analysis). Nothing contradicts annotations; it clearly adds context beyond the structured metadata.

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 whole description is two sentences that pack in the resource, return fields, behavioral boundaries, and alternatives, with zero filler. Information is front-loaded ('Get a single post') and every clause adds either purpose or usage guidance.

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

Completeness5/5

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

With no output schema available, the description compensates by listing the return fields (title, author, content, score, upvote ratio, comment count, flairs/flags, engagement analysis). It provides input constraints, alternative routing, and clear exclusion details, making the tool self-contained for AI decision-making.

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

Parameters3/5

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

Schema coverage is 100% and both parameter descriptions already provide complete meaning (including 'Base36 post id', the t3_ prefix, and the r/ prefix rules). The description re-references 'subreddit + post id' but does not add extra semantics beyond what the schema already contains, so the baseline of 3 is appropriate.

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

Purpose5/5

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

The description uses the specific verb 'Get' and identifies the exact resource ('a single post by subreddit + post id'), then enumerates the returned content. It explicitly distinguishes from sibling tools by naming get_post_comments for comments and browse_subreddit/get_top_posts for listing, making its purpose unmistakable.

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

Usage Guidelines5/5

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

Provides explicit when-to-use guidance and clear directives against misuse: 'use get_post_comments for its comment thread', 'Do NOT use this to list a subreddit's posts (use browse_subreddit / get_top_posts)', and 'do not use to find posts by keyword (use search_reddit)'. This fully steers the agent toward correct alternatives.

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

get_subreddit_infoA
Read-only

Get a subreddit's profile: title, description, subscriber and active-user counts, creation date, flags, wiki/link URLs, plus a community analysis and posting tips. Read-only; works anonymously. Returns metadata about the community itself — use browse_subreddit / get_top_posts for its posts, or get_subreddit_rules for its posting rules. Do NOT use this to find subreddits by topic — use search_reddit with type='sr'.

NameRequiredDescriptionDefault
subreddit_nameYesThe subreddit name, without the r/ prefix (e.g. 'askscience').

TDQS

A4.5/5.0
Behavior4/5

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

The description adds meaningful context beyond the annotations: 'Read-only; works anonymously' and clarifies that it returns metadata about the community itself. It doesn't deeply cover edge cases or errors, but for a simple read-only metadata tool the behavioral expectations are well communicated.

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

Conciseness5/5

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

Three sentences deliver purpose, return content, usage boundaries, and alternatives with no filler. The description is front-loaded with the core action and richly informative without being bloated.

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

Completeness5/5

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

Despite having no output schema, the description enumerates the main return fields and clearly scopes the tool's behavior. It also gives enough contextual boundaries to prevent misuse with other sibling tools, making it complete for a single-parameter read-only tool.

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

Parameters3/5

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

The schema already fully describes the single parameter, including the r/ prefix convention and example. The description adds no additional parameter-level meaning, but with 100% schema coverage the baseline of 3 is appropriate.

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

Purpose5/5

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

The description uses a specific verb and resource: 'Get a subreddit's profile' followed by a detailed list of returned fields (title, description, subscriber counts, creation date, flags, URLs). It also distinguishes itself from siblings by stating it returns community metadata and not posts or rules.

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

Usage Guidelines5/5

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

The description explicitly tells when to use this tool vs alternatives: use browse_subreddit/get_top_posts for posts, get_subreddit_rules for rules, and search_reddit with type='sr' for finding subreddits by topic. This is clear, actionable guidance with named sibling tools.

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

get_subreddit_rulesA
Read-only

Get a subreddit's posting rules (each rule's name, what it applies to, and its description). Read-only; works anonymously. Returns the rules list, or a note when the subreddit lists none. Call this before create_post to check requirements and avoid auto-removal. For available post flairs use get_post_flairs instead.

NameRequiredDescriptionDefault
subreddit_nameYesThe subreddit name, without the r/ prefix (e.g. 'AskReddit').

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, and the description reinforces 'Read-only' while adding 'works anonymously'. It also discloses the return behavior (rules list or a note when none exist) and the practical consequence of avoiding auto-removal, which goes beyond what annotations provide.

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?

Four sentences, each earning its place: purpose, read-only/anonymous, return behavior, usage context, and alternative tool. It's front-loaded with the key action and free of filler.

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

Completeness5/5

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

For a simple one-parameter tool with no output schema, the description is complete: it explains what the tool returns, when to use it, that it's read-only and anonymous, and how it relates to create_post and get_post_flairs. No gaps remain.

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

Parameters3/5

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

The input schema fully describes the only parameter (subreddit_name, no r/ prefix, with example). Since schema coverage is 100%, the description doesn't need to add param-level detail; it stays at the tool-level purpose. Baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the verb 'Get' and the resource 'a subreddit's posting rules', and even breaks down what each rule includes (name, scope, description). It also distinguishes itself from sibling tools by explicitly pointing to get_post_flairs for flairs, making it unambiguous.

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

Usage Guidelines5/5

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

The description gives explicit when-to-use guidance: 'Call this before create_post to check requirements and avoid auto-removal.' It also names the alternative tool for flairs, providing a clear decision context versus siblings.

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

get_top_postsA
Read-only

Get the top-scoring posts from a subreddit — or from the authenticated home feed if no subreddit is given — within a time window (hour…all). Read-only; works anonymously. Returns a page of posts (title, author, score, upvote ratio, comments, link) plus an after cursor. This is a shortcut for the 'top' sort; use browse_subreddit for hot/new/rising/controversial, or search_reddit to find posts by keyword.

NameRequiredDescriptionDefault
afterNoForward pagination cursor: the `after` value from a previous call. Omit for the first page.
limitNoHow many posts to return, 1–100 (default 10).
subredditNoSubreddit to read, without the r/ prefix (e.g. 'science'). Omit to use the authenticated home feed (requires credentials).
time_filterNoTime window the 'top' ranking is computed over (e.g. 'day' = top today). Default 'week'.week

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the readOnlyHint annotation, the description adds meaningful behavior: it is read-only, works anonymously, returns a page of posts with specific fields, and provides an 'after' cursor for pagination. It also notes the credential requirement when no subreddit is provided. No contradiction with annotations.

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 compact and front-loaded with the core action and scope, then adds return-format and sibling differentiation in just three sentences. Every sentence contributes value with no repetition of schema details.

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

Completeness5/5

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

For a moderately simple tool with no output schema, the description provides enough context: it names the returned fields, explains pagination via 'after', notes authentication behavior, and covers alternative tools. Annotations and full schema coverage support this, leaving no major operational gap.

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

Parameters3/5

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

The input schema covers all 4 parameters with descriptions, so the baseline is 3. The tool description adds minimal extra parameter meaning beyond restating that time_filter is a window and that omitting subreddit switches to home feed; it does not materially enrich schema semantics.

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

Purpose5/5

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

The description states a specific verb and resource ('Get the top-scoring posts from a subreddit...'), defines the optional home-feed target, and distinguishes itself from browse_subreddit and search_reddit. It clearly scopes the tool to the 'top' sort and is not a tautology.

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

Usage Guidelines5/5

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

The description explicitly says this is a shortcut for the 'top' sort and directs users to browse_subreddit for other sorts and search_reddit for keyword search. It also clarifies that omitting subreddit uses the authenticated home feed, giving clear when-to-use and when-not-to-use context.

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

get_user_commentsA
Read-only

Get comments made by a specific user, with sort (new/hot/top) and time filter. Read-only; works anonymously. Returns a page of comments (subreddit, parent post title, body excerpt, score, permalink) plus an after cursor. Use get_user_posts for their submissions, or get_user_info for karma/profile stats. Do NOT use this to read one post's thread — use get_post_comments.

NameRequiredDescriptionDefault
sortNoOrdering: 'new' (most recent), 'hot' (currently active), or 'top' (highest score within `time_filter`). Default 'new'.new
afterNoForward pagination cursor: the `after` value from a previous call. Omit for the first page.
limitNoHow many comments to return, 1–100 (default 10).
usernameYesThe author's Reddit username, without the u/ prefix (e.g. 'spez').
time_filterNoTime window for scoring; only applies when sort='top'. Ignored for 'new'/'hot'. Default 'all'.all

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, and the description reinforces this with 'Read-only; works anonymously,' adding behavioral context beyond the structured annotations. It also discloses pagination behavior via the 'after' cursor and describes the returned fields, though it does not go deep into rate limits or edge cases.

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 three sentences with no filler. It front-loads the core purpose, then adds usage boundaries and return-value context, every sentence earning its place.

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

Completeness5/5

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

Despite lacking an output schema, the description lists the key returned fields and explains pagination with the 'after' cursor. It also covers usage context, safety, and operational details, making it complete enough for an agent to invoke the tool correctly without additional tools.

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

Parameters3/5

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

Schema description coverage is 100%, so the input schema fully documents all five parameters. The description adds a high-level mention of sort and time filtering but does not provide meaningful extra semantics beyond the schema's own detailed parameter descriptions.

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

Purpose5/5

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

The description clearly states it retrieves comments made by a specific user, names the supported sort and time options, and explicitly distinguishes itself from get_user_posts and get_post_comments. The verb, resource, and scope are all immediately identifiable.

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

Usage Guidelines5/5

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

Explicit guidance is given: use get_user_posts for submissions, get_user_info for karma/profile stats, and get_post_comments for reading a single post's thread. It also states a clear 'do NOT use' condition, which helps an agent select correctly among many similar sibling tools.

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

get_user_infoA
Read-only

Get a public profile for any Reddit user: comment/post/total karma, account age and status flags, plus a short activity analysis and engagement tips. Read-only; works in anonymous mode. Returns profile stats only — use get_user_posts / get_user_comments for their actual content. Use get_me instead for your own authenticated account; do NOT expect private fields here, as only public data is returned.

NameRequiredDescriptionDefault
usernameYesThe target user's Reddit username, without the u/ prefix (e.g. 'spez', not 'u/spez').

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true. The description adds context: 'Read-only; works in anonymous mode' and 'Returns profile stats only', which reinforces the read-only nature and clarifies scope. No contradiction. Slight deduction because it doesn't mention rate limits or potential errors, but the annotation coverage is good.

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 compact, front-loaded with the core purpose, and every sentence adds value: what it returns, read-only nature, sibling tool differentiation, and limitation. No fluff or repetition.

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

Completeness5/5

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

For a simple read-only tool with one parameter, the description is complete. It covers purpose, scope, limitations, and alternatives. No output schema exists, but the description lists the return contents (karma, account age, status flags, activity analysis) sufficiently. The tool is simple enough that this is fully adequate.

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

Parameters4/5

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

Schema description coverage is 100% and the single parameter 'username' is well-described with format example ('spez', not 'u/spez'). The description adds context about what the parameter represents (target user) and what it does not include (private fields). Baseline 3 for high coverage, +1 for the explicit format guidance.

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

Purpose5/5

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

The description clearly states the tool's purpose: 'Get a public profile for any Reddit user' with specific data points (karma, account age, status flags, activity analysis). It distinguishes from siblings by explicitly naming get_user_posts/get_user_comments for content and get_me for authenticated account.

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

Usage Guidelines5/5

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

Provides explicit when-to-use and when-not-to-use guidance: 'use get_user_posts / get_user_comments for their actual content' and 'Use get_me instead for your own authenticated account'. Also clarifies the limitation: 'do NOT expect private fields here'.

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

get_user_postsA
Read-only

Get posts submitted by a specific user, with sort (new/hot/top) and time filter. Read-only; works anonymously. Returns a page of posts (title, subreddit, score, upvote ratio, comment count, permalink) plus an after cursor for paging. Use get_user_comments for their comments, or get_user_info for karma/profile stats. Do NOT use this to search a subreddit — use search_reddit or browse_subreddit.

NameRequiredDescriptionDefault
sortNoOrdering: 'new' (most recent), 'hot' (currently active), or 'top' (highest score within `time_filter`). Default 'new'.new
afterNoForward pagination cursor: the `after` value from a previous call. Omit for the first page.
limitNoHow many posts to return, 1–100 (default 10).
usernameYesThe author's Reddit username, without the u/ prefix (e.g. 'spez').
time_filterNoTime window for scoring; only applies when sort='top'. Ignored for 'new'/'hot'. Default 'all'.all

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and openWorldHint, and the description reinforces this with 'Read-only' and 'works anonymously.' It also adds meaningful context by listing the returned post fields and describing the 'after' pagination cursor, which is not visible in annotations or the output schema.

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 compact, front-loaded with the core purpose, and every sentence earns its place by adding purpose, behavioral context, or usage alternatives. It avoids redundant restating of schema details and remains highly scannable.

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

Completeness5/5

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

For a tool with five parameters and no output schema, the description provides a complete operational picture: what it returns, how paging works, its authentication posture, and how it fits among sibling tools. This is sufficient for an agent to select and invoke the tool correctly without further ambiguity.

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

Parameters3/5

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

The schema description coverage is 100%, so every parameter is already documented in the schema itself. The tool description adds useful context around sort and pagination but does not need to compensate for missing schema detail; therefore, a baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool gets posts submitted by a specific user and identifies the resource and supported sort/time-filter capabilities. It also distinguishes itself from sibling tools like get_user_comments and get_user_info, making its purpose unambiguous.

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

Usage Guidelines5/5

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

The description provides explicit guidance on when to use this tool versus alternatives: use get_user_comments for comments, get_user_info for profile stats, and search_reddit or browse_subreddit for subreddit searching. This direct exclusionary guidance is strong and actionable.

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

reply_to_postA

Post a reply to an existing post or comment. Mutating and NOT idempotent — each call adds a new comment. Requires REDDIT_USERNAME and REDDIT_PASSWORD. The parent is identified by its thing id — t3_ for a post, t1_ for a comment — so this creates both top-level and nested replies. Returns the new comment's id. Use edit_comment to change a reply you already posted. WARNING: rapid or duplicate replies may trigger Reddit's spam detection; enable REDDIT_SAFE_MODE=standard for rate limiting and duplicate detection.

NameRequiredDescriptionDefault
contentYesReply body text; Reddit markdown supported.
post_idYesParent thing id to reply under: t3_<id> for a post (creates a top-level comment) or t1_<id> for a comment (creates a nested reply).

TDQS

A4.7/5.0
Behavior5/5

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

The description discloses mutation and non-idempotency, explicitly noting 'each call adds a new comment', which goes beyond the annotations. It also adds credential requirements, the thing-id format needed for parent identification, the return value, and a warning about spam detection—all valuable behavioral context beyond what annotations provide.

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 front-loaded with the core purpose and each subsequent sentence carries meaningful operational or safety information. Despite being longer than minimal, there is no filler; every sentence earns its place by covering credentials, reply mechanics, alternatives, and a spam-detection warning.

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

Completeness5/5

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

For a mutating tool with no output schema, the description is unusually complete: it states the return value, explains parent-id formats for both posts and comments, gives the authentication requirement, and warns about rate limiting. This gives the agent enough context to select, invoke, and interpret the result correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents post_id and content thoroughly. The description reinforces the t3_/t1_ prefix semantics and the nesting behavior, but it does not add substantial new parameter-level details beyond what the input schema already states.

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

Purpose5/5

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

The description opens with 'Post a reply to an existing post or comment', using a specific verb and resource that clearly defines the action. It also distinguishes itself from siblings like create_post and edit_comment by explicitly mentioning top-level and nested replies and referencing edit_comment as the alternative for changing an existing reply.

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

Usage Guidelines5/5

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

It explicitly says 'Use edit_comment to change a reply you already posted', giving a direct alternative. It also clarifies when to use this tool (for both top-level and nested replies) and warns about spam detection and REDDIT_SAFE_MODE, which helps the agent decide when and how to invoke it.

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

search_redditA
Read-only

Search Reddit for posts — or subreddits/users via type — optionally scoped to one subreddit, with sort and time filters. Read-only; works anonymously. Returns a page of results (title, subreddit, author, score, comments, link) plus an after cursor for paging. Use this to find content by keyword; use browse_subreddit / get_top_posts to list a known subreddit's feed instead.

NameRequiredDescriptionDefault
sortNoSort order. Prefer 'relevance' (default) for finding posts about a topic. Use 'top'/'hot' only for what's currently popular and 'new' for the latest — these rank by karma/recency and, especially combined with a narrow time_filter, can surface loosely-matching posts over the best topical results.relevance
typeNoWhat to search for: 'link' = posts (default), 'sr' = subreddits, 'user' = users.link
afterNoForward pagination cursor: the `after` value from a previous call. Omit for the first page.
limitNoHow many results to return, 1–100 (default 10).
queryYesSearch terms; supports Reddit operators (quotes for exact phrases, author:name, self:yes). Must be non-empty.
subredditNoRestrict results to this subreddit, without the r/ prefix (e.g. 'python'). Omit to search all of Reddit.
time_filterNoRestrict to results from this recent window (e.g. 'week'). Default 'all' (no time limit).all

TDQS

A4.7/5.0
Behavior4/5

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

The description states 'Read-only; works anonymously' which complements the readOnlyHint annotation by adding the anonymity detail — useful behavioral context, since the agent might otherwise assume auth is required to see different results. It also discloses the return shape ('page of results... plus an `after` cursor for paging') and the fact that results are paginated. The main deduction: the description doesn't explicitly call out rate limiting, but combined with annotations, this is a well-covered tool.

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

Conciseness5/5

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

At ~120 words, every sentence serves a purpose. The first sentence establishes the core function, the second states the read-only anonymous nature, the third summarizes the return shape plus pagination, and the final sentence provides explicit alternatives with a decision rule. No fluff, no redundancy — a model example of tight, informative prose.

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

Completeness5/5

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

For a search tool with 7 params, 3 enums, no output schema, and no nested objects, this description covers everything an agent needs: what it searches, how to paginate (after cursor), what the response shape is, the read-only anonymous nature, and the explicit distinction from sibling tools. The tool is self-contained — an agent could confidently select and call it correctly based on this description alone.

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

Parameters4/5

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

Schema description coverage is 100% (the only required param 'query' is described), and the sort parameter's description adds substantial semantic guidance: 'Prefer 'relevance'... for finding posts about a topic. Use 'top'/'hot' only for what's currently popular...' — this goes beyond enumerating values to explain which to prefer when. The description makes the best use of enums explicit. Slight deduction: while the description mentions 'optionally scoped to one subreddit', it doesn't force the agent to think about auth/rate-limit implications of anonymous access.

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

Purpose5/5

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

The description opens with 'Search Reddit for posts — or subreddits/users via `type`' — a specific verb+resource+scope pairing that immediately distinguishes it from sibling tools like browse_subreddit, get_top_posts, and list-only feed tools. It explicitly states what object types are searched (posts, subreddits, users), the optional subreddit scoping, and the sorting/filtering dimensions, all in the first sentence. This leaves no ambiguity about what action the tool performs.

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

Usage Guidelines5/5

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

The description explicitly states when to use this tool versus alternatives: 'Use this to find content by keyword; use browse_subreddit / get_top_posts to list a known subreddit's feed instead.' This directly names sibling alternatives and explains the decision boundary (keyword search vs. browsing a known feed). The sort parameter description further refines when to use 'top'/'hot' vs 'relevance', which serves as usage guidance embedded in the schema.

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

test_reddit_mcp_serverA
Read-only

Health check for the Reddit MCP server. Read-only and side-effect-free — inspects local configuration only and makes no Reddit API calls. Returns the server version, whether the Reddit client is initialized, whether OAuth credentials are present, and whether write access (REDDIT_USERNAME/REDDIT_PASSWORD) is configured. Use this first to diagnose setup/auth problems. Do NOT use it to check Reddit's own status or connectivity — it never contacts Reddit. A "✗ Write Access" result means the write tools (create_post, reply_to_post, edit_*, delete_*) will fail.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.8/5.0
Behavior5/5

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

Description reinforces annotations (readOnlyHint=true/openWorld=false) by stating it is read-only and side-effect-free. Adds value by disclosing no API calls are made, it returns server version and local client state, and that a failed write-access check predicts failures of listed sibling tools. No annotation contradiction found.

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?

Eminently functional, front-loaded description. It is a bit long but every sentence adds a key fact; no padding. Organized into what-it-returns, when-to-use, and exclusions.

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

Completeness5/5

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

No output schema, but the description states precisely the return values (server version, client init, OAuth presence, write configure). No sibling write tools to distinguish since it is a diagnostic. No nested input params. For a zero-param check tool, this is complete.

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?

No parameters exist, a baseline of 4 is given per rubric. Schema is empty but with 100% description coverage; no parameter documentation is needed.

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+resource: 'Health check for the Reddit MCP server.' Clear read-only diagnosis tool. Distinguishes from siblings by noting it inspects only local configuration and never contacts Reddit.

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

Usage Guidelines5/5

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

Gives explicit when-to-use: 'Use this first to diagnose setup/authorization issues.' Explicitly excludes checking Reddit status or connectivity, and notes write tools will fail if write access is absent.

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. 23 tool updatesv1.5.3
    • First observedbrowse_subreddit
    • First observedcreate_post
    • First observeddelete_comment
    • First observeddelete_post
    • First observededit_comment
    • First observededit_post
    • First observedget_me
    • First observedget_more_comments
    • First observedget_my_overview
    • First observedget_my_saved
    • First observedget_post_comments
    • First observedget_post_flairs
    • First observedget_reddit_post
    • First observedget_subreddit_info
    • First observedget_subreddit_rules
    • First observedget_top_posts
    • First observedget_trending_subreddits
    • First observedget_user_comments
    • First observedget_user_info
    • First observedget_user_posts
    • First observedreply_to_post
    • First observedsearch_reddit
    • First observedtest_reddit_mcp_server

TDQS

A4.4/5.0

Scored across 23 tools

Disambiguation3/5

Most tools are clearly scoped (e.g., get_user_posts vs get_user_comments), but several overlaps remain: get_me vs get_user_info vs get_my_overview can be confused, and get_top_posts vs browse_subreddit both list posts by sort. Descriptions contain useful cross-references, which helps, but the boundaries are not razor-sharp.

Naming Consistency4/5

Naming follows a fairly consistent get_/create_/edit_/delete_/reply_ + resource pattern (e.g., get_user_info, edit_post, delete_comment). Deviations exist: test_reddit_mcp_server breaks the verb_noun convention, and reply_to_post vs reply_to_comment would be more consistent, but overall the pattern is predictable.

Tool Count5/5

23 tools is on the higher end but appropriate for Reddit's breadth: user, subreddit, post, comment, search, and auth. The count is justified by the domain and each tool covers a distinct resource/action.

Completeness4/5

Covers read/write for posts and comments, user and subreddit profiles, search, and edge features (trending, flairs, rules). Missing pieces include voting, saving, and messaging, which would be expected for full Reddit coverage, but the core workflows are complete.

Maintenance

ActivityStale
ResponsivenessNo recent community 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
    302
    MIT
  • A
    license
    B
    quality
    D
    maintenance
    An MCP server that provides both read-only and authenticated access to Reddit content and interactions without requiring a developer API key. It enables users to browse posts, search subreddits, and perform write actions like commenting and voting by leveraging browser session cookies.
    8
    3
    -
  • A
    license
    B
    quality
    D
    maintenance
    An MCP server that provides AI agents with full Reddit API capabilities including search, browsing, reading, posting, commenting, voting, editing, and deleting.
    18
    8 npm
    MIT