RedditAPIs
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| REDDITAPIS_KEY | No | API key from redditapis.com. REDDIT_APIS_KEY is accepted as an alias. | |
| REDDIT_APIS_KEY | No | Alias for REDDITAPIS_KEY. | |
| REDDITAPIS_BASE_URL | No | Override the API host. Default is https://api.redditapis.com | https://api.redditapis.com |
| REDDITAPIS_TIMEOUT_MS | No | Per-request timeout in milliseconds. Default is 30000. | 30000 |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| reddit_subreddit_postsA | List posts from a subreddit by sort order. Use this to read a community's feed: newest, hot/trending, top-of-week, rising, etc. Returns post title, author, score, comment count, and permalink, plus an |
| reddit_verify_commentsA | Check whether specific Reddit comments still EXIST and are publicly visible, in one batch of up to 100 ids. A READ despite being a POST (ids travel in the body because a hundred of them do not fit in a URL); it costs the same as any other read and changes nothing on Reddit. Use it to tell 'deleted by the author' from 'removed by a moderator' from 'still there', which a normal comment fetch cannot distinguish, and to re-check a list of comments you posted or collected earlier. Accepts bare ids and t1_-prefixed fullnames interchangeably. Returns one row per id, in the order you sent them, each with a status. Example: ids=['n5abcde','t1_n5fghij']. |
| reddit_home_feedA | Read YOUR OWN Reddit home feed, the front page your subscriptions produce. Every other read tool here is served from a shared pool of accounts, so it cannot answer 'what is on my feed' -- this one sends your session instead. REQUIRES your own Reddit session: call POST /api/reddit/login on the REST API first (not an MCP tool) and pass the |
| reddit_searchA | Search Reddit posts across all of Reddit or within one subreddit. Returns matching posts with author, score, comments, permalink, and an |
| reddit_post_visibilityA | Is a post still publicly visible, or did it quietly stop being so? A removed Reddit post still returns when you fetch it by id, so asking the post does not answer this. This fetches the post and then one page of its author's submitted listing and compares them. Returns a verdict of live, not_visible or undecidable, a plain-language reason, and a confident flag. It deliberately never says WHY a post is not visible: a moderator removal, an admin removal, a spam filter and an author who has hidden their history are indistinguishable from outside. undecidable is a real answer, not a failure. Two upstream calls, billed as one $0.004 dual read. |
| reddit_post_commentsA | Fetch a single post and its comment tree by permalink. Returns the post plus threaded comments (author, body, score, replies) and an |
| reddit_search_communitiesA | Search for subreddits (communities) by name or topic. Returns matching subreddits with title, subscriber count, description, and NSFW flag. Use to discover where a topic is discussed before listing or searching its posts. Example: q='machine learning'. |
| reddit_search_commentsA | Search Reddit by COMMENT text. Reddit's comment search matches your keyword against comment bodies but returns the PARENT POSTS, not the individual comments, so each result is a post whose discussion mentions your query, carrying that post's title, selftext, score, and comment count. Use it to surface threads where a topic comes up in the replies that plain post-title search would miss. Reddit does not expose which specific comment matched or its text, so this returns posts, not comment bodies. For the actual comment bodies, use reddit_deep_comment_search. Example: q='best mechanical keyboard' sort='top'. |
| reddit_deep_comment_searchA | Genuine comment search: returns the ACTUAL comments whose body matches your keyword, sorted by score (highest first), with body, score, author, a comment-deep permalink, and the parent post. Unlike reddit_search_comments (which returns the parent posts, a Reddit limitation), this fetches each matching post's comment tree and filters the comment bodies for you, so you get first-hand opinions and answers directly. Premium call (it fans out into several reads): |
| reddit_search_mediaA | Search Reddit posts filtered to media (images, video, gifs). Returns media posts with the media URL/type, author, score, and the post url. Use |
| reddit_search_usersA | Search for Reddit users (redditors) by name or keyword. Returns matching accounts with username, karma, and account age. Use to find a person's handle before fetching their profile or comments. Example: q='spez'. |
| reddit_subreddit_topA | Get the TOP posts of a subreddit for a time window. Shorthand for the highest-scoring posts of a community. Returns posts with score, author, comments, and permalink plus an |
| reddit_postA | Fetch a single Reddit post by its id. Returns the full post object (title, author, score, text, permalink, subreddit, url). Use when you already have a post id and want its details. Example: id='abc123' (the base-36 id, no t3_ prefix). |
| reddit_user_profileA | Fetch a Reddit user's public profile by username. Returns account info: username, id, karma (post + comment), account age, verified/employee flags, and avatar. Use to vet or summarize a redditor. Example: name='spez'. |
| reddit_user_commentsA | List a Reddit user's recent comments. Returns comments with body, score, subreddit, parent link, and timestamp plus an |
| reddit_user_submittedA | List a Reddit user's submitted POSTS (their post history, the sibling of reddit_user_comments). Returns posts with title, author, score, comment count, and permalink, plus an |
| reddit_user_upvotedA | List the posts and comments a Reddit account has UPVOTED. PRIVATE data -- Reddit only serves it to the account that owns it, so you must be logged in as |
| reddit_user_savedA | List the posts and comments a Reddit account has SAVED. PRIVATE data -- Reddit only serves it to the account that owns it, so you must be logged in as |
| reddit_user_hiddenA | List the posts and comments a Reddit account has HIDDEN. PRIVATE data -- Reddit only serves it to the account that owns it, so you must be logged in as |
| reddit_user_gildedA | List the posts and comments a Reddit account has received an award (gold) on. PRIVATE data -- Reddit only serves it to the account that owns it, so you must be logged in as |
| reddit_subreddit_commentsA | Stream the NEWEST comments across an entire subreddit (Reddit's /r//comments feed), not one post's thread. Returns comments with body, author, score, subreddit, the parent post link, and timestamp, plus an |
| reddit_subreddit_aboutA | Fetch a subreddit's public metadata by name (Reddit's /r//about data). Returns the subreddit's title, public description, subscriber count, active-user count, creation timestamp, type, and NSFW flag. Use it to size or vet a community before listing or searching its posts. Example: name='python'. |
| reddit_subreddit_rulesA | Fetch a subreddit's posting rules by name (Reddit's /r//about/rules data). Returns a |
| reddit_subreddit_moderatorsA | Fetch a subreddit's moderator team by name (Reddit's /r//about/moderators data). Returns a |
| reddit_subreddit_wikiA | Fetch a subreddit's wiki page by name and page (Reddit's /r//wiki/ data). Returns a single object with |
| reddit_by_idA | Bulk-fetch posts by their t3_ fullnames in ONE call (up to 100), instead of a request per post. Pass a comma-separated list of fullnames you already have from a search or listing to hydrate them. Returns posts with title, author, score, comment count, and permalink, the same post shape as the listing endpoints. The result is NOT always one-to-one with your request, so read |
| reddit_subreddits_popularA | Browse the most-subscribed, trending subreddits right now, no keyword needed. Returns a |
| reddit_subreddits_newA | Browse the newest subreddits, the communities most recently created, no keyword needed. Returns a |
| reddit_subreddits_defaultA | Browse Reddit's default front-page set of subreddits, no keyword needed. Returns a |
| reddit_monitor_addA | Create a new Reddit monitor: watch one or more subreddits, or ALL of Reddit, for new posts (or comments, via |
| reddit_monitor_listA | List every monitor on the caller's account, with each one's filter, active state, and cadence, plus a |
| reddit_monitor_updateA | Update an existing monitor: pause/resume it ( |
| reddit_monitor_removeA | Delete a monitor. There is no undo endpoint -- it stops matching immediately, its slot is freed for a new monitor, and it disappears from reddit_monitor_list. Its past deliveries are NOT erased: they remain queryable via reddit_monitor_deliveries (both scoped by monitor_id and in the aggregate, no-id view) forever. Returns 404 |
| reddit_monitor_healthA | Per-monitor health: whether it's active, its poll cadence, when it last matched something, and delivery counts for the last 24h ( |
| reddit_monitor_deliveriesA | Delivery history: the actual Reddit posts a monitor's webhook has received (or attempted), newest first, including the real post content (title, subreddit, permalink, author). Answers 'what did I actually get sent', not just 'how many' (see reddit_monitor_health for counts). Every delivered item also carries |
| reddit_monitor_webhook_createA | Register a delivery target for monitors to send matches to. Requires an active monitoring plan (a webhook with no plan could never receive anything). Returns the webhook with its signing |
| reddit_monitor_webhook_listA | List every webhook registered on the caller's account. Never returns the signing secret (shown once, at creation, by reddit_monitor_webhook_create). |
| reddit_monitor_webhook_testA | Send a one-off test delivery to a registered webhook (rate-limited to 10/min) so you can confirm it's wired up correctly before waiting for a real match. Uses the webhook's |
| reddit_monitor_webhook_deleteA | Permanently delete a webhook. Any monitor still pointing at it will fail to deliver until repointed at a different webhook -- this does NOT cascade-delete or pause the monitors using it. Cannot be undone. Returns 404 |
| reddit_feedback_sendA | Report a product problem or gap in redditapis.com to its team from inside this session, the way Claude Code's own feedback tool works: a report is DRAFTED to a local queue first (action "draft", the default) and SENT only after the user reviews it. Drafting sends nothing, needs no confirmation, and should not be announced mid-task. WHEN TO DRAFT, only at high-signal moments: a redditapis tool call failed with an error that was not a missing key (401), credits (402) or a rate limit (429), and the user had to work around it; the user asked for something no redditapis tool covers; a documented field came back empty or wrong; the user was clearly frustrated with a result. One draft per distinct issue, never twice for the same one. FORMAT for details, four labelled bullets in this order: 'What happened:' observed vs expected, exact error text if short. 'What the user said:' quoted verbatim, or 'user did not comment'. 'Repro:' the minimal call that reproduces it. 'Evidence:' tool name, endpoint, HTTP status, request id (the last failing call is attached automatically where you leave a gap). Facts only: no guessing, no API keys or secrets, no personal names. REVIEW: when the user asks to see or send feedback, call action "list", then action "send" with ONLY the draft ids the user named in their own message, or action "discard". Sending posts each draft to POST /feedback (free, not metered) and returns a server id that reddit_feedback_get can check later. |
| reddit_feedback_listA | List the feedback reports this account has sent, newest first, with each one's current status. Use it to RECOVER A LOST ID: the server id is returned only once, when a report is sent, so this is the way back to a report whose id was not kept. Also the way to answer "did that report actually land" and "has the team looked at it yet". Optionally filter by status or type, and page with the cursor from a previous response. Free per call, never metered. Returns {feedback: [...], count, limit, next_cursor}; page by passing next_cursor back as cursor until it is null; an account that has filed nothing gets an empty list and a 200, not an error. Note this lists SENT reports on the server, which is different from reddit_feedback_send action="list", which shows unsent local drafts on this machine. |
| reddit_account_meA | How much credit this API key has left, before spending any. Returns the account's remaining credit balance and usage totals. FREE: this call is not metered and never costs a credit, so call it whenever you are about to run something expensive rather than guessing. Use it to decide whether a planned batch fits in the remaining balance, and to tell the user how much is left if a call returns 402. A 402 from any other tool means the balance is exhausted; its response carries a top-up URL to give the user. |
| reddit_feedback_getA | Check the status of a feedback report this account sent earlier (the server id returned by reddit_feedback_send action "send"): status new, triaged, shipped or declined, the team's response text if any, and updated_at, which moves only when the team acts on it. Free per call. 404 if the id is not on this account. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 43 tools
Most tools target a distinct resource+action, and descriptions explicitly disambiguate tricky pairs like reddit_search_comments (returns parent posts) vs reddit_deep_comment_search (returns actual comments), and reddit_search_communities vs the reddit_subreddits_* browsers. A few overlaps remain, notably reddit_subreddit_top (a shorthand for reddit_subreddit_posts sort='top') and reddit_post vs reddit_by_id, but these are clearly documented.
Uniform snake_case with a consistent reddit_ prefix and predictable domain_action naming (reddit_subreddit_about, reddit_user_comments, reddit_monitor_add, reddit_feedback_get). Minor noun-first outliers like reddit_by_id, reddit_home_feed and reddit_account_me still follow the same convention and remain readable.
43 tools is heavy for any single server and sits well above the 3-15 sweet spot, with several near-redundant pairs (subreddits_popular/new/default could be one parameterised tool; subreddit_posts vs subreddit_top). The breadth of the domain (search, subreddits, users, posts, monitoring, feedback) justifies a large surface, but consolidation is clearly possible.
Coverage is strong: full search/listing/read surface plus complete monitor lifecycle (add/update/remove/health/deliveries) with webhook create/list/test/delete, and a full feedback CRUD. Only minor gaps exist, such as no direct single-comment fetch by id (only batch verify) and no write-to-Reddit operations, which may be out of scope.