Reddit User MCP Server - Access Reddit posts, comments, and interact with Reddit via MCP
Reddit User MCP has 9 tools with consistent naming (verb_noun pattern) and basic schemas. All tools have descriptions and input parameters with types. However, descriptions are generic (avg ~60 chars, well below the 194-char baseline), lack actionable context for LLM selection, and omit critical details like prerequisites, return structures, and error recovery guidance. Output schemas are not documented, responses are JSON-stringified without field definitions. Parameters lack constraints (e.g., no enum for post sorting, no regex for IDs). Error handling is minimal: catch-all try/catch blocks return generic error text without recovery hints. No tool annotations (readOnlyHint/destructiveHint) despite clear read/write distinction. Composition is reasonable (single responsibility per tool), but chaining is weak, tools return opaque IDs without context for downstream calls.
Fetch hot posts from a subreddit
Fetch new posts from a subreddit
Fetch comments for a specific Reddit post
Fetch rising posts from a subreddit
Fetch comments from a Reddit user
Fetch posts from a Reddit user
Report a Reddit comment as spam (also hides it from your view)
Output schemas not documented. Tools return JSON-stringified objects without field definitions. LLMs cannot infer what fields to expect or plan downstream calls.
Descriptions are generic and lack actionable context. E.g., 'Fetch posts from a Reddit user' (45 chars) does not explain when to use this vs get_hot_posts, what fields are returned, or prerequisites. Baseline is 194 chars.
No tool annotations (readOnlyHint/destructiveHint). Tools like hide_comment, reply_to_comment, post_comment are write operations but lack destructiveHint=true. Agents cannot distinguish safe from risky calls.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 46 | 2026-07-28+ | v2 |
Post a comment directly on a Reddit post
Reply to a Reddit comment
Error handling is minimal. Catch-all try/catch blocks return generic error text (e.g., 'Error fetching user posts: [object Object]'). No recovery guidance, no categorization (retryable vs fatal), no invalid-value feedback.
Parameters lack constraints and format guidance. E.g., postId and commentId are bare strings with no regex, length, or format hint. username accepts optional but no guidance on format (with/without /u/). limit has min/max but no guidance on performance impact.