Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

RedditAPIs

NPM · REDDITAPIS-MCP · 2 COMPONENTS

Reddit API as MCP tools: search, subreddits, posts, comments, users, monitors, webhooks, feedback.

+1 this week 84 Trust /100

Last scanned (22 hours ago)

Scores higher than 81% of npm servers

Category News and Social

Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →

Supply Chain Security98
  • No malware found by supply-chain analysis.Pass
  • No known CVEs affecting this package version or its production dependencies.Pass
  • No install/post-install scripts declared.Pass
  • 30 of 92 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency45
Schema Quality & AI Usability76
  • 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 20342 tokens (~328/item across 62 items; 59 tools + 3 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management100
  • No destabilizing schema changes in the last 30 days.Pass
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 100% of tool parameters carry a description.Pass
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • All 6 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
  • An AI judge read all 61 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 4 Nov 26 0
    • Security disclosure: unverified → fail ▼ functional
  • 3 Nov 26 0
    • Security disclosure: fail → unverified ▼ functional
  • 30 Oct 26 0
    • Stability: 0.97 → pass security
    • Security disclosure: unverified → fail ▼ functional
  • 29 Oct 26 +1
    • Security disclosure: fail → unverified ▼ functional
  • 27 Oct 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 87 to 90. That category is still filling its 30-day observation window: 26 days of observed history at the previous scan, 27 at this one. The score rises as the window fills, whether or not the server changes.

  • 25 Oct 26 +1
    • Stability: 0.80 → unverified ▼ security
    • Tool safety: pass → unverified ▼ security
    • Schema quality: 18114 → 20342 ▼ functional
    • Capabilities: pass → unverified ▼ functional
    • Tool coverage: 100 → unverified ▼ functional
    • Schema quality: 100 → unverified ▼ functional
    • Package version: 0.12.0 → 0.15.0 functional
    • Package version: 0.12.0 → 0.14.1 functional
  • 23 Oct 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 73 to 77. That category is still filling its 30-day observation window: 22 days of observed history at the previous scan, 23 at this one. The score rises as the window fills, whether or not the server changes.

  • 21 Oct 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 67 to 70. That category is still filling its 30-day observation window: 20 days of observed history at the previous scan, 21 at this one. The score rises as the window fills, whether or not the server changes.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 4 Nov 2026 · Analysed npm/redditapis-mcp@0.15.0

Provenance No attestation

The registry publishes no build provenance for this version, so there is nothing to verify.

Result No attestation
Ecosystem npm

Background: How many MCP packages publish verified provenance →

Dependencies 92 packages
Packages resolved 92
Stale 30
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 59 exposed · ~19,763 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
reddit_account_me ~58

Returns the remaining credit balance and usage totals of the account behind this API key. Free: not metered, and costs no credit. A 402 from a metered call means the balance is exhausted; that response carries a top-up URL.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

reddit_account_payments ~54

Returns the payment history of the account behind this API key: each top-up's amount, the credits it added, its status and when it happened, newest first. Free: not metered, and costs no credit.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

reddit_by_id ~199

Bulk-fetches posts by their t3_ fullnames in ONE call (up to 100), in place of a request per post. Takes a comma-separated list of fullnames from a search or listing. Returns posts with title, author, score, comment count, and permalink, the same post shape as the listing endpoints. The result is not necessarily one-to-one with the request, and `meta` reports which: `listing_status` is `complete` only when every fullname came back, `truncated` is a boolean, and `missing_fullnames` names exactly which ids did not come back. Example: fullnames='t3_abc123,t3_def456'.

NameTypeReqDescription
fullnamesstringyesComma-separated post fullnames, each a t3_ prefix followed by the base-36 id (e.g. 't3_abc123,t3_def456'). Up to 100. Required (path parameter).

No output schema declared.

No examples provided.

reddit_comment ~93

Posts a comment on a Reddit post as the connected account. A public action on Reddit under the customer's name, marked as a write so a client can ask before it runs. The text is posted as Reddit markdown. Billed at the write rate. With no connected session it answers 400 asking for cookies.

NameTypeReqDescription
post_urlstringyesAny reddit.com post URL.
textstringyesThe comment text.

No output schema declared.

No examples provided.

reddit_connect ~187

Stores the customer's own Reddit session once, so the comment, submit, vote and DM tools in this server act as that account without cookies in later calls. The session is kept server-side, encrypted (AES-256-GCM, key held only by the API), against this API key's account, after a check with Reddit: a logged-out session is refused with SESSION_LOGGED_OUT. Takes Reddit's session and loid cookies (from the REST login endpoint or the customer's own browser), plus the CSRF cookie for voting and messaging. Connecting again replaces the stored session. Free.

NameTypeReqDescription
csrf_tokenstring–The CSRF cookie. Needed for voting and messaging.
loidstringyesThe loid cookie.
reddit_sessionstringyesReddit's session cookie.
token_v2string–The token_v2 cookie, when the session has one.

No output schema declared.

No examples provided.

reddit_deep_comment_search ~962

Comment search that returns the ACTUAL comments whose body matches the keyword, sorted by score (highest first), with body, score, author, a comment-deep permalink, and the parent post. It fetches each matching post's comment tree and filters the comment bodies, so the results are first-hand opinions and answers rather than parent posts. Premium call (it fans out into several reads): `limit` sets how many parent POSTS to expand, 1-25 (default 5), not how many comments come back. The response's `after` cursor expands the NEXT batch of parent posts. `max_comments` optionally caps how many comments come back (the top-scored are kept). Matching is on the visible comment text at word boundaries (link URLs are ignored), so every result mentions the query where a reader can see it. Best-effort: a deleted or deeply-nested comment may be missed (meta.truncated flags when a tree was too deep). Each parent post is its own comment-tree read and one can fail while the others succeed: meta.partial is true with meta.trees_failed and meta.trees_fetched when that happened, so the result covers fewer parent posts than it scanned; the call fails only when every tree failed and at least one was refused upstream. group_by='author' switches to a research mode that returns WHO is talking about the query (distinct people ranked by matching-comment count) in place of a flat comment list, capped by max_authors. Example: q='best mechanical keyboard' sort='relevance' t='year'.

NameTypeReqDescription
afterstring–Opaque pagination cursor: the previous response's `after` value, exactly as it was returned. The format is not stable, and a hand-written Reddit fullname loses the paging depth the cursor carries. Ab…
group_bystring–'author' selects the RESEARCH mode: the distinct PEOPLE who mentioned the query, ranked by how many of their comments matched (then total score), in place of a flat comment list. Each author has comm…
limitinteger–Number of parent POSTS to expand into their comment trees (1-25, default 5). Each is one upstream read, so higher = deeper coverage but slower and more expensive. Beyond 25, the `after` cursor pages…
max_authorsinteger–Applies only with group_by='author'. Optional cap on how many people are returned (the most prolific first). Absent, every author is returned. meta.authors_capped is true when this trimmed the list.
max_commentsinteger–Optional cap on how many comments are returned; the highest-scored are kept. Absent, every match is returned. meta.capped is true when this trimmed the result.
nsfwstring–'true' includes over-18 / NSFW results; 'false' or omitted excludes them (default).
qstringyesSearch query text. Supports Reddit search syntax (e.g. `subreddit:webdev`, `author:spez`, `"exact phrase"`, `title:...`).
sortstring–Sort order for search. 'relevance' = best match (default), 'top' = highest score in the `t` window, 'new' = most recent, 'hot' = trending, 'comments' = most-discussed. Only 'relevance' weights how we…
tstring–Time window that bounds which posts the search returns, e.g. 'week' = only posts from the past week. Unlike a subreddit listing, search applies this to the 'relevance' and 'top' sorts too. When omitt…

No output schema declared.

No examples provided.

reddit_disconnect ~52

Deletes the stored Reddit session for this account. After this, the write tools answer with a request for cookies until a session is connected again. Idempotent: `deleted` is false when nothing was stored. Free.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

reddit_dm ~112

Sends a private Reddit chat message as the connected account. A direct message to a real person under the customer's name, marked as a write so a client can ask before it runs. Messaging needs the CSRF cookie in the stored session. Billed at the DM rate.

NameTypeReqDescription
messagestringyesPlain-text message body.
to_user_t2string–Recipient t2_ id directly, instead of to_username.
to_usernamestring–Recipient username. Provide this or to_user_t2.

No output schema declared.

No examples provided.

reddit_explain ~253

Returns the provenance of the rows this server has already fetched in this session: per completed call, the tool that made it, the endpoint it reached, the timestamp the response arrived, how many seconds old that copy now is, the upstream request id and the response size. Provenance is recorded per call, so every row in one response shares it. The redditapis.com read path holds no response cache for customer reads, so each call is served live at the moment it runs and the age reported here is the age of this session's copy of the rows rather than the age of a stored row; `response_cache` says so in the result. The ledger holds the 20 most recent completed calls, lives in memory, starts empty, is scoped to this server and carries no other caller's calls. How long each category of data is kept is published at https://www.redditapis.com/privacy-and-data-handling.

NameTypeReqDescription
limitinteger–Optional count of calls returned, 1 to 20, newest first. Default 5.
toolstring–Optional tool name that restricts the result to calls made by that tool. Absent, the most recent calls by any tool are returned.

No output schema declared.

No examples provided.

reddit_feedback_get ~103

Returns the status of a feedback report this account sent earlier, by its server id: 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.

NameTypeReqDescription
idstringyesThe server id of a sent report (a UUID), as returned when the report was sent. Not a local draft id.

No output schema declared.

No examples provided.

reddit_feedback_list ~296

Lists the feedback reports this account has sent, newest first, with each one's current status. The server id is returned only once, when a report is sent, so this listing is how a report whose id was not kept is found again; it also shows whether a report landed and whether the team has acted on it. Optional filters by status or type; paging uses the cursor from a previous response. Free per call, not metered. Returns {feedback: [...], count, limit, next_cursor}; pages continue while next_cursor is non-null, and an account that has filed nothing gets an empty list and a 200, not an error. It lists SENT reports on the server, which differ from the unsent local drafts on this machine.

NameTypeReqDescription
cursorstring–Optional. The next_cursor from a previous response, for the page after it. Keyset paging on (created_at, id), so a report filed during paging cannot make a row repeat or be skipped. A cursor this end…
limitinteger–Optional. How many are returned, 1 to 100 (default 25). Newest first.
statusstring–Optional. Restricts the list to reports in this state; absent, every state.
typestring–Optional. Restricts the list to reports of this kind; absent, every kind.

No output schema declared.

No examples provided.

reddit_feedback_send ~518

Reports a product problem or gap in redditapis.com to its team, through a local draft queue. action "draft" (the default) writes a report to a queue on this machine and sends nothing; it makes no network call. action "list" returns the pending drafts with their ids. action "send" posts the named draft ids to POST /feedback (free, not metered) and returns a server id per report. action "discard" drops the named drafts. The queue holds at most 10 drafts; a draft past that is refused. A draft takes `type`, a one-line `title` (at most 120 characters), `details` (at most 8000 characters) and optional `area` and `evidence`; evidence keys left out (tool, endpoint, HTTP status, request id) are filled from the last failing call in this session, and the MCP version and client name are attached to every report.

NameTypeReqDescription
actionstring–"draft" (default) queues a new report locally and sends nothing. "list" returns the pending drafts with their ids. "send" posts the drafts named in `ids` to redditapis.com. "discard" drops the drafts…
areastring–Optional. The endpoint or feature the report is about, e.g. "posts/comments" or "monitoring". At most 80 characters.
detailsstring–Required for a draft. At most 8000 characters: three labelled bullets, What happened, Repro, Evidence, optionally preceded by a one-line summary of the goal. No quotes of the conversation.
evidenceobject–Optional identifiers, {tool, endpoint, status, request_id}, at most 4096 bytes serialized. Keys left out are filled from the last failing call in this session; mcp_version and client are attached to…
idsarray–For action "send" or "discard": the draft ids to act on, as returned by action "list".
titlestring–Required for a draft. One line, at most 120 characters, naming the tool or endpoint and the defect, e.g. "GET /api/reddit/comments returns 502 when the post is deleted".
typestring–Required for a draft. "bug": a tool or endpoint misbehaved. "idea": a change that would have made the task easier. "missing_capability": a needed capability that no tool provides.

No output schema declared.

No examples provided.

reddit_home_feed ~521

Reads the caller's own Reddit home feed, the front page their subscriptions produce. The other read tools are served from a shared pool of accounts and so cannot return a personal feed; this one sends the caller's session. Requires the caller's Reddit session cookies (session and loid) from POST /api/reddit/login on the REST API, which is not an MCP tool. Without them it returns 400, because Reddit's logged-out front page is a different feed belonging to nobody rather than a thinner version of the caller's. Same post shape and `after` cursor as the subreddit listing. Example: sort='best' limit=25.

NameTypeReqDescription
afterstring–Opaque pagination cursor: the previous response's `after` value, exactly as it was returned. The format is not stable, and a hand-written Reddit fullname loses the paging depth the cursor carries. Ab…
limitinteger–Maximum items returned, 1 to 100. The API clamps out-of-range values; the endpoint default applies when omitted.
loidstringyesThe caller's Reddit loid cookie, from the same login response. Required, together with the session cookie.
proxystring–Optional proxy this read egresses through, so the request reaches Reddit from the IP this account normally acts from. http://user:pass@host:port or host:port. Pinned across retries.
reddit_sessionstringyesThe caller's Reddit session cookie, from POST /api/reddit/login on the REST API (a REST call, not an MCP tool). Sent as a request header, not in the URL. Required.
sortstring–Feed sort. 'best' (default) is Reddit's own logged-in home sort. 'top'/'controversial' also take `t`.
tstring–Time window, only applied when sort is 'top' or 'controversial'. E.g. 'week' = top of the past week. Ignored for other sorts.
token_v2string–The caller's Reddit token_v2 cookie, from the same login response. Optional.

No output schema declared.

No examples provided.

reddit_monitor_add ~1,778

Creates a Reddit monitor: watches one or more subreddits, or ALL of Reddit, for new posts (or comments, via `kind`) matching a filter, and delivers every match to the account's registered webhooks. With `subreddit` absent and `q` set, it is a sitewide keyword monitor covering every subreddit at once (posts only). By default matches go to EVERY active webhook on the account; `webhook_ids` routes this monitor's matches to specific webhooks. Every redditapis.com account holds a free entitlement of ONE all-of-Reddit post watch at a 60s cadence (up to 10,000 deliveries a day), so that monitor needs no subscription. Naming a `subreddit`, matching comments, a faster cadence and any additional watch require a paid plan. Needs at least one free monitor slot (the `slots` object in the monitor list). Forward-looking only, from the moment of creation or from `baseline_item_id` if given; posts that already existed are not backfilled. Returns the created monitor (with its `id`) on success, or `subscription_required` (402) if the account holds no recognised entitlement at all, `subreddit_scope_requires_paid_plan` (402) if a free account named a `subreddit`, `monitor_slots_exhausted` (402) if the plan's slot limit is reached, `sitewide_slots_exhausted` (402) if the plan's separate sitewide cap is reached, `distinct_subreddit_limit_reached` (402) if the account already watches as many DIFFERENT subreddits as the plan covers (the limit counts distinct subreddits across all the account's monitors, not monitors, and the same subreddit in two monitors counts once; `slots.distinct_subreddits_total` in the monitor list), `sitewide_comment_monitoring_not_available` (501) if a sitewide monitor asks for comments, `subreddit_reserved` (400) if `subreddit` names 'all', `subreddit_not_found` (400) if a named subreddit does not exist, or `webhook_not_found` (400) if a `webhook_ids` entry is not on this account.

NameTypeReqDescription
authorstring–Matches only posts by this Reddit username (without u/).
baseline_item_idstring–A Reddit post fullname (e.g. 't3_abc123') used as the starting point in place of 'now': matching starts strictly after this item. Absent, matching starts from the moment of creation.
cadence_sinteger–Requested poll interval in seconds. A value at or above the plan tier's floor is honoured; a lower value is silently clamped up to the tier's minimum. Absent, the tier's default applies.
domainarray–Outbound link domains to watch for (e.g. ['example.com']). Matches the post's link URL, any URL inside a self-post/comment body, and a crosspost's original link, including one that only appeared in t…
exclude_subredditsarray–Subreddits to SUPPRESS, without the r/ prefix (e.g. ['politics', 'AskReddit']). SITEWIDE MONITORS ONLY: accepted when `subreddit` is absent and `q` anchors the monitor; sent together with `subreddit`…
exclude_termsarray–Posts containing any of these terms are suppressed even when they otherwise match, e.g. 'giveaway' excluded from a brand-mention monitor.
groupstring–Optional label that bundles multiple matches into one delivery in place of one webhook call per match. Absent, each matching item is its own delivery.
include_allarray–A post qualifies only when EVERY one of these terms appears (AND match), on top of any `q`.
include_anyarray–A post qualifies when at least ONE of these terms appears (OR match), on top of any `q`.
kindstring–What to watch in the named subreddits: 'post' (default when omitted), 'comment', or 'both'. Comment monitoring requires a Growth, Pro or Scale plan; on a lower tier this returns `comment_monitoring_r…
min_relevanceinteger–AI relevance floor, 0-100. 0 (the default) is off. Above 0, every match is scored by a language model against this monitor's own keywords and anything below the floor is NOT delivered: it is recorded…
min_scoreinteger–Matches only posts with at least this many upvotes.
nsfwboolean–false EXCLUDES NSFW/over-18 posts. Omitted or true both let NSFW through; there is no exclude-by-default, and only an explicit false filters it. POSTS ONLY: nsfw=false is REJECTED with a field-level…
qstring–Free-text keyword or phrase to match, against the fields in `search_in` (default title+body+url). Absent, every new post in the watched subreddits matches.
search_inarray–Which fields keyword/term matching is scoped to. Default ['title', 'body', 'url']. A narrower scope avoids false positives, e.g. a term that only appears in a URL slug matching a post that does not m…
subredditarray–Subreddits to watch, without the r/ prefix (e.g. ['SaaS', 'startups']). 1 to 50. Absent, with `q` set, the monitor watches ALL of Reddit for that keyword. A monitor is anchored by a subreddit list, a…
webhook_idsarray–Webhook ids that restrict this monitor's delivery to those webhooks. Omitted or an empty array means the default: delivery to every active webhook on the account. An id that is not a webhook on this…

No output schema declared.

No examples provided.

reddit_monitor_deliveries ~427

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). It records what was sent, not only how many (the counts are in monitor health). Every delivered item also carries `payload.items[].enrichment`: a `relevance.score` (0-1, how much of THIS monitor's own keyword criteria the item matched; not a model's confidence), a `sentiment` (`polarity` -1 to 1 plus a positive/negative/mixed/neutral `label`), and an `intent.tag` (question, recommendation_request, complaint, promotion, praise, or discussion). All three are deterministic keyword, lexicon and rule heuristics computed at no extra cost; each carries its own `method` field and none of them is a machine-learning or LLM call. Without `id`, the history aggregates across every monitor on the account.

NameTypeReqDescription
beforestring–ISO 8601 timestamp cursor for pagination: the `created_at` of the oldest row from the previous page returns older deliveries.
idstring–Narrows to one monitor's history. Absent, the history aggregates across every monitor on the account.
limitinteger–Maximum rows returned, 1 to 200. Default 50.
statusstring–Filters to one delivery status. 'dead' = retries exhausted, gave up. 'suppressed' = matched but deliberately not sent, and `payload.suppressed.reason` says which of the two reasons applied: 'delivery…

No output schema declared.

No examples provided.

reddit_monitor_health ~1,236

Per-monitor health: active state, poll cadence, when it last matched something, and delivery counts for the last 24h (`delivered_24h`, `failed_24h`, `suppressed_24h`), plus whether its delivery ceiling has been hit (`ceiling_reached`) and what that ceiling is (`daily_delivery_ceiling`). `suppressed_24h` COUNTS TWO DIFFERENT THINGS AND `suppressed_breakdown` SPLITS THEM: `ceiling` (the monitor's daily cap was reached) and `stale` (the item was already older than the freshness window when first seen, so it was withheld rather than delivered as if it were new). A stale withhold is the usual reason a monitor's delivered count sits far below its matched count with no error anywhere; it is the freshness gate working as intended, not a failure or a plan limit, and retrying cannot recover the items. `ceiling_reached` is the field that indicates the daily cap was hit, and a stale withhold does not set it. When `suppressed_breakdown.resolved` is false the split does not add up to the total and `unresolved_reason` says why; `ceiling_reached` stays conservative in that case rather than being cleared. THOSE COUNTS COVER ONLY POSTS THAT WERE FETCHED. A post that was not fetched was not matched and leaves no row behind, so it is absent from all three counters; zeros there mean no matches were recorded, not that nothing was missed. `coverage_24h` is the separate field that speaks to fetching. Its `status` is `complete` (every poll reached the point where the previous poll finished), `degraded` (at least one poll was truncated and posts were lost unrecoverably; detail in `gaps[]`, `posts_in_window_at_least` and the estimated `posts_missed_estimate`), `partial` (nothing found, but not every kind of loss was checked; detail in `unobserved_events`), or `unknown` (the check could not be run at all; detail in `reason`). `unknown`, `partial` and a null count each mean the question went unanswered. `coverage_24h` is fed by the poll log and covers BOTH ways a poll loses posts unrecoverably…

NameTypeReqDescription
idstringyesThe monitor's id, as returned when the monitor was created or listed.

No output schema declared.

No examples provided.

reddit_monitor_list ~147

Lists every monitor on the caller's account, with each one's filter, active state, and cadence, plus a `slots` object ({used, total, tier}) showing how many monitor slots are purchased vs in use. Reading the list requires no active plan (a lapsed subscription shows an empty or paused list, not an error). A null `webhook_ids` is the default and means matches go to EVERY active webhook on the account, the normal healthy state, not a monitor without a destination; a non-empty array narrows delivery to those webhook ids. Where a monitor's matches actually went is recorded per delivery, as the resolved `webhook_id` on each delivery row.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

reddit_monitor_remove ~114

Deletes a monitor. There is no undo endpoint: it stops matching immediately, its slot is freed for a new monitor, and it disappears from the monitor list. Its past deliveries are NOT erased; they remain queryable in the delivery history (both by monitor id and in the aggregate, no-id view) indefinitely. Returns 404 `monitor_not_found` if the id does not exist or is not on this account.

NameTypeReqDescription
idstringyesThe monitor's id, as returned when the monitor was created or listed.

No output schema declared.

No examples provided.

reddit_monitor_update ~1,530

Updates an existing monitor: pauses or resumes it (`active`), changes its poll interval (`cadence_s`), switches between posts and comments (`kind`), replaces its filter entirely, or re-targets which webhooks it delivers to (`webhook_ids`). Any filter field (subreddit, q, kind, domain, etc.) REPLACES the whole filter: it does not merge with the existing one, so a field absent from the request is cleared, and a request without `kind` reverts the monitor to posts-only. `webhook_ids` likewise REPLACES the monitor's targeting outright (an empty array clears back to every active webhook); a request without it leaves the existing targeting untouched. A request with only `active` and/or `cadence_s` changes only those. Returns 404 `monitor_not_found` if the id does not exist or is not on this account, or 400 `webhook_not_found` if a `webhook_ids` entry is not on this account.

NameTypeReqDescription
activeboolean–false pauses the monitor (stops matching and delivering); true resumes it.
authorstring–Matches only posts by this Reddit username (without u/).
cadence_sinteger–New poll interval in seconds, clamped to the tier floor the same way as at creation.
domainarray–Outbound link domains to watch for (e.g. ['example.com']). Matches the post's link URL, any URL inside a self-post/comment body, and a crosspost's original link, including one that only appeared in t…
exclude_subredditsarray–Subreddits to SUPPRESS, without the r/ prefix (e.g. ['politics', 'AskReddit']). SITEWIDE MONITORS ONLY: accepted when `subreddit` is absent and `q` anchors the monitor; sent together with `subreddit`…
exclude_termsarray–Posts containing any of these terms are suppressed even when they otherwise match, e.g. 'giveaway' excluded from a brand-mention monitor.
groupstring–Optional label that bundles multiple matches into one delivery in place of one webhook call per match. Absent, each matching item is its own delivery.
idstringyesThe monitor's id, as returned when the monitor was created or listed.
include_allarray–A post qualifies only when EVERY one of these terms appears (AND match), on top of any `q`.
include_anyarray–A post qualifies when at least ONE of these terms appears (OR match), on top of any `q`.
kindstring–What to watch in the named subreddits: 'post' (default when omitted), 'comment', or 'both'. Comment monitoring requires a Growth, Pro or Scale plan; on a lower tier this returns `comment_monitoring_r…
min_relevanceinteger–AI relevance floor, 0-100. 0 (the default) is off. Above 0, every match is scored by a language model against this monitor's own keywords and anything below the floor is NOT delivered: it is recorded…
min_scoreinteger–Matches only posts with at least this many upvotes.
nsfwboolean–false EXCLUDES NSFW/over-18 posts. Omitted or true both let NSFW through; there is no exclude-by-default, and only an explicit false filters it. POSTS ONLY: nsfw=false is REJECTED with a field-level…
qstring–Free-text keyword or phrase to match, against the fields in `search_in` (default title+body+url). Absent, every new post in the watched subreddits matches.
search_inarray–Which fields keyword/term matching is scoped to. Default ['title', 'body', 'url']. A narrower scope avoids false positives, e.g. a term that only appears in a URL slug matching a post that does not m…
subredditarray–Subreddits to watch, without the r/ prefix (e.g. ['SaaS', 'startups']). 1 to 50. Absent, with `q` set, the monitor watches ALL of Reddit for that keyword. A monitor is anchored by a subreddit list, a…
webhook_idsarray–Webhook ids that restrict this monitor's delivery to those webhooks. Omitted or an empty array means the default: delivery to every active webhook on the account. An id that is not a webhook on this…

No output schema declared.

No examples provided.

reddit_monitor_webhook_create ~297

Registers a delivery target for monitors to send matches to. Requires an active monitoring plan (a webhook with no plan could not receive anything). Returns the webhook with its signing `secret` SHOWN ONCE: the webhook list does not return it again. HTTPS only; the URL is re-validated (including a fresh DNS check) at every delivery, not just at creation.

NameTypeReqDescription
kindstring–Payload shape. Absent, the kind is inferred from the host for a hooks.slack.com or discord.com/api/webhooks URL, and the response reports the inference in `kind_inferred_from`. 'slack'/'discord' form…
urlstringyesHTTPS URL that receives matches. Accepted: a publicly reachable HTTPS URL with no embedded credentials and no loopback, private or link-local address.

No output schema declared.

No examples provided.

reddit_monitor_webhook_delete ~95

Permanently deletes a webhook. A monitor still pointing at it fails to deliver until it is repointed at a different webhook: deletion does NOT cascade-delete or pause the monitors using it. Cannot be undone. Returns 404 `webhook_not_found` if the id does not exist or is not on this account.

NameTypeReqDescription
idstringyesThe webhook's id, as returned when the webhook was created or listed.

No output schema declared.

No examples provided.

reddit_monitor_webhook_list ~36

Lists every webhook registered on the caller's account. The signing secret is not included; it is shown once, at creation.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

reddit_monitor_webhook_test ~224

Sends a one-off test delivery to a registered webhook (rate-limited to 10/min), confirming it is wired up correctly before a real match arrives. The test payload is formatted by the webhook's `kind`, the same way a real delivery would be. On failure the response carries `reason` and `status`, plus `hint`, a sentence naming the fix (most often that the target's `kind` does not match its host, which no test can succeed through), and `detail`, a bounded, sanitised copy of what the destination itself replied. `hint` carries the remedy; a bare `reason` such as `http_error` with a 400 names no field, no value and no remedy. Returns 404 `webhook_not_found` if the id does not exist or is not on this account, or `webhook_url_rejected` if the URL fails re-validation (e.g. now resolves to a private address).

NameTypeReqDescription
idstringyesThe webhook's id, as returned when the webhook was created or listed.

No output schema declared.

No examples provided.

reddit_post ~93

Fetches a single Reddit post by its id. Returns the full post object (title, author, score, text, permalink, subreddit, url). Example: id='abc123' (the base-36 id, no t3_ prefix).

NameTypeReqDescription
idstringyesThe post's base-36 id (e.g. 'abc123'), without the 't3_' fullname prefix. Required (path parameter).

No output schema declared.

No examples provided.

reddit_post_comments ~321

Fetches a single post and its comment tree by permalink. Returns the post plus threaded comments (author, body, score, replies) and an `after` cursor. The `permalink` is the one carried by any post result. Size a big thread with the three knobs: `limit` caps top-level comments (1-500, default 100), `depth` caps reply depth (1-10; `depth=1` is top-level only; absent is the full tree) and `sort` orders them (confidence = Reddit's best, top, new, controversial, old, qa). `limit=20, depth=1, sort='top'` reads the twenty best top-level comments and nothing below them, which keeps a 2,700-comment thread readable. `meta` echoes limit_used, depth_used and sort_used.

NameTypeReqDescription
depthinteger–Maximum reply depth, 1-10. depth=1 returns top-level comments only. Absent, Reddit's full tree is returned.
limitinteger–Maximum top-level comments, 1-500 (default 100). A small value with depth=1 gives a readable summary of a large thread.
permalinkstringyesThe post permalink path from a prior post result, e.g. '/r/programming/comments/abc123/some_title/'. Required.
sortstring–Comment ordering: confidence (Reddit's best), top, new, controversial, old or qa. Absent, Reddit's default for the thread.

No output schema declared.

No examples provided.

reddit_post_duplicates ~211

Every other Reddit post that shares this post's link: the list Reddit shows on a post's "other discussions" tab, across all subreddits, so every conversation about one article, video or product page can be read, not only the first thread found. Returns the original `post`, `duplicates` (up to 100 in one read, not paged, `after` is null) and `available` (how many Reddit returned). A made-up or removed post id is a 404 NOT_FOUND. A text post usually has none.

NameTypeReqDescription
crossposts_onlyboolean–true returns only crossposts and leaves out independent submissions of the same URL.
idstringyesReddit post id, e.g. '1sgjld3'. A t3_ prefix is optional.
limitinteger–How many duplicates to return, 1-100 (default 100).
sortstring–num_comments (default, most discussed first) or new.

No output schema declared.

No examples provided.

reddit_post_visibility ~235

Is a post still publicly visible, or did it quietly stop being so? A removed Reddit post still returns when fetched by id, so the post alone 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. By design it does not say 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. When the post resolves but the author listing read fails, the answer is still returned as undecidable with checked.author_listing false and checked.listing_error naming why (upstream_unavailable or upstream_timeout: our read was refused, not billed; listing_unavailable: Reddit answered the listing with 403 or 404, billed). Two upstream calls, billed as one $0.004 dual read.

NameTypeReqDescription
idstringyesReddit post id, base36, with or without the t3_ prefix

No output schema declared.

No examples provided.

reddit_scheduled_cancel ~125

Cancels a scheduled post or comment by its id, while it has not run yet. Returns `cancelled`, the `action` and a `message`. An action that was still scheduled comes back with cancelled true: it will not run and is not charged. An action that already ran, or is running, comes back with cancelled false and its current status, and nothing changes. 404 NOT_FOUND when the id is not a scheduled action on this account. Free.

NameTypeReqDescription
idstringyesThe action id, as returned when the action was scheduled or listed.

No output schema declared.

No examples provided.

reddit_scheduled_create ~436

Schedules a Reddit post or comment to be made later as the connected account, at `run_at` (60 seconds to 30 days ahead). At that time the stored request runs through the same path a live post submission or comment takes, as the Reddit session connected when it runs, so a session logged out in between makes the run fail without a charge. A public action on Reddit under the customer's name, marked as a write so a client can ask before it runs; a subreddit's rules decide whether a post stays up. Due actions are picked up every 30 seconds and run one at a time, normally within about a minute of `run_at`. A failed run is not retried: it is recorded as failed with Reddit's reason. Up to 100 actions can wait per account (409 SCHEDULE_LIMIT_REACHED past that). Scheduling is free; a run that succeeds is billed at the write rate to this API key, and a failed or cancelled one is not charged. With no connected session it answers 400 SESSION_NOT_CONNECTED. Returns 201 with `action`: `id`, `type`, `status` (scheduled), `run_at`, the stored `request`, `created_at`, `finished_at`, `result`, `error` and `billed`.

NameTypeReqDescription
requestobjectyesThe body the live route takes, without cookies or a proxy. A post takes subreddit, kind and title, plus text or url and the optional flair and flag fields; a comment takes post_url and text. A field…
run_at–yesWhen it runs: an ISO 8601 timestamp with a time zone (e.g. '2026-10-21T15:00:00Z' or '2026-10-21T17:00:00+02:00') or Unix seconds. 60 seconds to 30 days ahead. A timestamp without a zone is refused.
typestringyespost = a new post in a subreddit, comment = a comment on a post.

No output schema declared.

No examples provided.

reddit_scheduled_list ~205

Lists this account's scheduled posts and comments, newest first. Returns `actions` and `count`. Each action carries `id`, `type`, `status` (scheduled, running, succeeded, failed or cancelled), `run_at`, the stored `request`, `created_at`, `finished_at`, `result` (what the post or comment returned, when the run succeeded), `error` (`code`, `message` and `http_status`, when the run failed) and `billed`: true for a run that succeeded, false for one that failed with an answer or was cancelled, null when the outcome was not confirmed (error EXECUTION_UNCONFIRMED or EXECUTION_INTERRUPTED, where the post or comment may still have been made and charged). Free.

NameTypeReqDescription
limitinteger–Maximum actions returned, 1 to 100. Default 50.
statusstring–Only actions in this status. Absent, every status is listed.

No output schema declared.

No examples provided.

reddit_search ~1,036

Searches Reddit posts across all of Reddit or within one subreddit. Returns matching posts with author, score, comments, permalink, and an `after` cursor. `subreddit` scopes the search to one community. Optional advanced filters narrow the results by minimum/maximum score, comment count, media type, and post flags, with an optional re-sort of the page. Filters apply to the returned page, so a filtered response carries a `meta` object with page-completeness counts, and the next page comes from `after`. SORT BEHAVIOUR, measured 2026-09-11: `top`, `new` and `comments` order the MATCHING set by score, date or comment count alone, and Reddit matches loosely (image OCR, comments, and the word 'reddit' is in almost every big post), so a generic multi-word query with sort='top' and no subreddit returns the site-wide viral listing, not the topic. Even a distinctive term is ranked by score alone (q='pgvector' sort='top': 1 of 5 results was about pgvector, the rest were large posts that mention it once). Best match then highest score comes from sort='relevance' with a large `limit`, where sort_type='score' re-orders that returned page (it does not reach past the page); a quoted phrase (q='"rust vs go"') or a `subreddit` scope also narrows the matching set. Example: q='rust vs go' sort='relevance' t='year' limit=100 sort_type='score'.

NameTypeReqDescription
afterstring–Opaque pagination cursor: the previous response's `after` value, exactly as it was returned. The format is not stable, and a hand-written Reddit fullname loses the paging depth the cursor carries. Ab…
contest_modeboolean–Filters by the contest_mode flag.
is_selfboolean–true = only self/text posts, false = only link posts.
is_videoboolean–true = only video posts, false = only non-video.
limitinteger–Maximum items returned, 1 to 100. The API clamps out-of-range values; the endpoint default applies when omitted.
lockedboolean–Filters by the locked flag.
max_commentsinteger–Keeps only posts with comment count <= this.
max_scoreinteger–Keeps only posts with score <= this.
min_commentsinteger–Keeps only posts with comment count >= this.
min_scoreinteger–Keeps only posts with score >= this (applied to the returned page).
nsfwstring–'true' includes over-18 / NSFW results; 'false' or omitted excludes them (default).
over_18boolean–Filters the page by NSFW flag (distinct from nsfw, which controls inclusion in the search).
qstringyesSearch query text. Supports Reddit search syntax (e.g. `subreddit:webdev`, `author:spez`, `"exact phrase"`, `title:...`).
sortstring–Sort order for search. 'relevance' = best match (default), 'top' = highest score in the `t` window, 'new' = most recent, 'hot' = trending, 'comments' = most-discussed. Only 'relevance' weights how we…
sort_typestring–Re-sorts the filtered page (descending) by this field. Page-local: it re-orders only the posts this call returned, not the whole result set, so its reach is bounded by `limit`.
spoilerboolean–Filters by the spoiler flag.
stickiedboolean–Filters by the stickied flag.
subredditstring–Optional subreddit name (without r/) that restricts the search to one community. Absent, the search covers all of Reddit.
tstring–Time window that bounds which posts the search returns, e.g. 'week' = only posts from the past week. Unlike a subreddit listing, search applies this to the 'relevance' and 'top' sorts too. When omitt…

No output schema declared.

No examples provided.

reddit_search_comments ~561

Searches Reddit by COMMENT text. Reddit's comment search matches the keyword against comment bodies but returns the PARENT POSTS, not the individual comments, so each result is a post whose discussion mentions the query, carrying that post's title, selftext, score, and comment count. It surfaces threads where a topic comes up in the replies, which a post-title search misses. Reddit does not expose which specific comment matched or its text, so the results are posts, not comment bodies. Example: q='best mechanical keyboard' sort='relevance' t='year'.

NameTypeReqDescription
afterstring–Opaque pagination cursor: the previous response's `after` value, exactly as it was returned. The format is not stable, and a hand-written Reddit fullname loses the paging depth the cursor carries. Ab…
limitinteger–Maximum items returned, 1 to 100. The API clamps out-of-range values; the endpoint default applies when omitted.
nsfwstring–'true' includes over-18 / NSFW results; 'false' or omitted excludes them (default).
qstringyesSearch query text. Supports Reddit search syntax (e.g. `subreddit:webdev`, `author:spez`, `"exact phrase"`, `title:...`).
sortstring–Sort order for search. 'relevance' = best match (default), 'top' = highest score in the `t` window, 'new' = most recent, 'hot' = trending, 'comments' = most-discussed. Only 'relevance' weights how we…
tstring–Time window that bounds which posts the search returns, e.g. 'week' = only posts from the past week. Unlike a subreddit listing, search applies this to the 'relevance' and 'top' sorts too. When omitt…

No output schema declared.

No examples provided.

reddit_search_communities ~272

Searches for subreddits (communities) by name or topic. Returns matching subreddits with title, subscriber count, description, and NSFW flag. Example: q='machine learning'.

NameTypeReqDescription
afterstring–Opaque pagination cursor: the previous response's `after` value, exactly as it was returned. The format is not stable, and a hand-written Reddit fullname loses the paging depth the cursor carries. Ab…
limitinteger–Maximum items returned, 1 to 100. The API clamps out-of-range values; the endpoint default applies when omitted.
nsfwstring–'true' includes over-18 / NSFW results; 'false' or omitted excludes them (default).
qstringyesSearch query text. Supports Reddit search syntax (e.g. `subreddit:webdev`, `author:spez`, `"exact phrase"`, `title:...`).

No output schema declared.

No examples provided.

reddit_search_media ~540

Searches Reddit posts filtered to media (images, video, gifs). Returns media posts with the media URL/type, author, score, and the post url. `kind` narrows the results to one media type. Example: q='aurora borealis' kind='image'.

NameTypeReqDescription
afterstring–Opaque pagination cursor: the previous response's `after` value, exactly as it was returned. The format is not stable, and a hand-written Reddit fullname loses the paging depth the cursor carries. Ab…
kindstring–Media type filter. 'image', 'video', 'gif', or 'all' (default). Filters the raw Reddit results to that media kind.
limitinteger–Maximum items returned, 1 to 100. The API clamps out-of-range values; the endpoint default applies when omitted.
nsfwstring–'true' includes over-18 / NSFW results; 'false' or omitted excludes them (default).
qstringyesSearch query text. Supports Reddit search syntax (e.g. `subreddit:webdev`, `author:spez`, `"exact phrase"`, `title:...`).
sortstring–Sort order for search. 'relevance' = best match (default), 'top' = highest score in the `t` window, 'new' = most recent, 'hot' = trending, 'comments' = most-discussed. Only 'relevance' weights how we…
tstring–Time window that bounds which posts the search returns, e.g. 'week' = only posts from the past week. Unlike a subreddit listing, search applies this to the 'relevance' and 'top' sorts too. When omitt…

No output schema declared.

No examples provided.

reddit_search_users ~263

Searches for Reddit users (redditors) by name or keyword. Returns matching accounts with username, karma, and account age. Example: q='spez'.

NameTypeReqDescription
afterstring–Opaque pagination cursor: the previous response's `after` value, exactly as it was returned. The format is not stable, and a hand-written Reddit fullname loses the paging depth the cursor carries. Ab…
limitinteger–Maximum items returned, 1 to 100. The API clamps out-of-range values; the endpoint default applies when omitted.
nsfwstring–'true' includes over-18 / NSFW results; 'false' or omitted excludes them (default).
qstringyesSearch query text. Supports Reddit search syntax (e.g. `subreddit:webdev`, `author:spez`, `"exact phrase"`, `title:...`).

No output schema declared.

No examples provided.

reddit_session_status ~60

Whether a Reddit session is connected for this account: `connected`, the Reddit username, `status` (active, or dead after Reddit rejected it), and when it was first stored, last updated and last used. The cookies are not returned. Free.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

reddit_set_watch ~469

Creates a Reddit watch from a plain-words description in one call: the description is compiled into a monitor filter, the account's own plan capabilities are read, the monitor is created, and an HTTPS delivery target given in `deliver_to` is registered, pointed at this monitor and test-fired. The compiler reads subreddit names written as r/Name, quoted phrases as keyword terms (two or more become an any-of set), 'comments' or 'posts and comments' as the match kind, terms after 'except' or 'ignoring' as exclusions, and 'at least N upvotes' as a score floor; everything it derived comes back in `understood` and `compiled_filter`. A description naming neither a subreddit nor a keyword is refused before any request is sent, because a monitor is anchored by one or the other. On an account whose plan carries no subreddit-scoped watches, a description that names subreddits and also carries a keyword is built over every subreddit instead, and the swap is reported in `notes`. Monitor and webhook calls are not metered. The result carries the created monitor, the delivery target and its test outcome, and the account's current slot and capability figures.

NameTypeReqDescription
cadence_sinteger–Optional poll interval in seconds. A value below the plan tier's floor is clamped up to that floor. Absent, the tier default applies.
deliver_tostring–Optional HTTPS URL that receives matches. A hooks.slack.com or discord.com/api/webhooks URL has its payload shape inferred from the host; any other HTTPS URL receives the generic signed JSON envelope…
test_deliveryboolean–false skips the one-off test delivery that otherwise follows a successful `deliver_to` registration. Default true. Ignored when no `deliver_to` is given.
watchstringyesThe watch, in plain words, e.g. 'watch r/SaaS and r/startups for "pricing page" except giveaways' or 'every comment mentioning "cold email" with at least 5 upvotes'. Subreddits are written as r/Name,…

No output schema declared.

No examples provided.

reddit_submit ~207

Submits a new post to a subreddit as the connected account: a text post (kind self) or a link post (kind link). A public action on Reddit under the customer's name, marked as a write so a client can ask before it runs; a subreddit's rules decide whether the post stays up. Billed at the write rate.

NameTypeReqDescription
flair_idstring–Post flair template id, for subreddits that require flair.
flair_textstring–Post flair text, when the flair template allows editing it.
kindstringyesself = text post, link = URL post.
nsfwboolean–Mark the post NSFW.
spoilerboolean–Mark the post as a spoiler.
subredditstringyesSubreddit name, without r/.
textstring–Body text, for kind self.
titlestringyesPost title.
urlstring–Target URL, for kind link.

No output schema declared.

No examples provided.

reddit_subreddit_about ~91

Fetches a subreddit's public metadata by name (Reddit's /r/<name>/about data). Returns the subreddit's title, public description, subscriber count, active-user count, creation timestamp, type, and NSFW flag. Example: name='python'.

NameTypeReqDescription
namestringyesSubreddit name WITHOUT the r/ prefix (e.g. 'python'). Required (path parameter).

No output schema declared.

No examples provided.

reddit_subreddit_comments ~262

Streams the NEWEST comments across an entire subreddit (Reddit's /r/<name>/comments feed), not one post's thread. Returns comments with body, author, score, subreddit, the parent post link, and timestamp, plus an `after` cursor. Repeated calls surface new comments in a community as they are posted. Example: name='python'.

NameTypeReqDescription
afterstring–Opaque pagination cursor: the previous response's `after` value, exactly as it was returned. The format is not stable, and a hand-written Reddit fullname loses the paging depth the cursor carries. Ab…
limitinteger–Maximum items returned, 1 to 100. The API clamps out-of-range values; the endpoint default applies when omitted.
namestringyesSubreddit name WITHOUT the r/ prefix (e.g. 'python'). Required (path parameter).

No output schema declared.

No examples provided.

reddit_subreddit_flairs ~288

Lists a subreddit's post (link) flair templates by name: the flairs a new post in that community can carry. Returns `subreddit`, `count` and `flairs`, each with `id` (the value a post submission takes as flair_id), `text`, `editable` (true when a custom flair_text is accepted with that id), `type` (text or richtext), `background_color`, `text_color`, `css_class`, `mod_only`, `max_emojis`, `allowable_content` and `richtext`. Many subreddits remove a post that has no flair. Reddit lists flairs only to signed-in accounts, so the read runs as the Reddit session connected for this API key; with none connected it answers 503 SESSION_REQUIRED before Reddit is asked, and that answer is not charged. A moderator's session sees every template, mod-only ones included; any other account sees the templates it can post with, listed with mod_only false. A subreddit with no post flairs returns an empty list. Billed at the read rate, including a 403 or 404 from Reddit. Example: name='SaaS'.

NameTypeReqDescription
namestringyesSubreddit name WITHOUT the r/ prefix (e.g. 'SaaS'), 1 to 21 letters, digits or underscores. Required (path parameter).

No output schema declared.

No examples provided.

reddit_subreddit_moderators ~106

Fetches a subreddit's moderator team by name (Reddit's /r/<name>/about/moderators data). Returns a `moderators` list, each with `name`, `id`, `mod_permissions`, `flair_text`, and `added` (when they joined the mod team). Example: name='python'.

NameTypeReqDescription
namestringyesSubreddit name WITHOUT the r/ prefix (e.g. 'python'). Required (path parameter).

No output schema declared.

No examples provided.

reddit_subreddit_posts ~440

Lists posts from a subreddit by sort order: newest, hot, top of a time window, rising, controversial or best. Returns post title, author, score, comment count, and permalink, plus an `after` cursor for paging. When `after` comes back null the response carries `listing_status`: `complete` means no older posts and is only claimed when the whole run came back in under one page, `truncated` means Reddit's cap cut the listing off, and `unknown` means completeness could not be established. A busy feed that Reddit stops serving reports `unknown`, not `complete`. Example: subreddit='programming' sort='top' t='week'.

NameTypeReqDescription
afterstring–Opaque pagination cursor: the previous response's `after` value, exactly as it was returned. The format is not stable, and a hand-written Reddit fullname loses the paging depth the cursor carries. Ab…
limitinteger–Maximum items returned, 1 to 100. The API clamps out-of-range values; the endpoint default applies when omitted.
sortstring–Sort order for a subreddit listing. 'hot' = trending now, 'new' = most recent (default), 'top' = highest score in the `t` window, 'rising' = gaining fast, 'controversial' = polarizing, 'best' = Reddi…
subredditstringyesSubreddit name WITHOUT the r/ prefix (e.g. 'programming', 'AskReddit'). Required.
tstring–Time window, only applied when sort is 'top' or 'controversial'. E.g. 'week' = top of the past week. Ignored for other sorts.

No output schema declared.

No examples provided.

reddit_subreddit_rules ~114

Fetches a subreddit's posting rules by name (Reddit's /r/<name>/about/rules data). Returns a `rules` list, each with name, description, what it applies to (posts, comments, or all), violation reason, priority, and creation date, plus a `site_rules` list of Reddit's site-wide rules. Example: name='python'.

NameTypeReqDescription
namestringyesSubreddit name WITHOUT the r/ prefix (e.g. 'python'). Required (path parameter).

No output schema declared.

No examples provided.

reddit_subreddit_top ~280

Gets the TOP posts of a subreddit for a time window, the highest-scoring posts of a community. Returns posts with score, author, comments, and permalink plus an `after` cursor. Example: name='science' t='month'.

NameTypeReqDescription
afterstring–Opaque pagination cursor: the previous response's `after` value, exactly as it was returned. The format is not stable, and a hand-written Reddit fullname loses the paging depth the cursor carries. Ab…
limitinteger–Maximum items returned, 1 to 100. The API clamps out-of-range values; the endpoint default applies when omitted.
namestringyesSubreddit name WITHOUT the r/ prefix (e.g. 'science'). Required (path parameter).
tstring–Time window, only applied when sort is 'top' or 'controversial'. E.g. 'week' = top of the past week. Ignored for other sorts.

No output schema declared.

No examples provided.

reddit_subreddit_wiki ~176

Fetches a subreddit's wiki page by name and page (Reddit's /r/<name>/wiki/<page> data). Returns a single object with `content_md` and `content_html`, a `may_revise` flag, and the last revision (`revision_id`, `revision_date`, `revised_by`, `reason`). A wiki commonly holds a community's rules or FAQ. The page may be multi-segment, for example index, rules, or config/sidebar. Example: name='python', page='index'.

NameTypeReqDescription
namestringyesSubreddit name WITHOUT the r/ prefix (e.g. 'python'). Required (path parameter).
pagestringyesWiki page name (e.g. 'index'). Required (path parameter). May be multi-segment like 'config/sidebar'.

No output schema declared.

No examples provided.

reddit_subreddits_default ~217

Browses Reddit's default front-page set of subreddits, with no keyword. Returns a `subreddits` list (each with name, title, subscriber count, description, type, and NSFW flag) plus an `after` cursor for paging.

NameTypeReqDescription
afterstring–Opaque pagination cursor: the previous response's `after` value, exactly as it was returned. The format is not stable, and a hand-written Reddit fullname loses the paging depth the cursor carries. Ab…
limitinteger–Maximum items returned, 1 to 100. The API clamps out-of-range values; the endpoint default applies when omitted.

No output schema declared.

No examples provided.

reddit_subreddits_new ~218

Browses the newest subreddits, the communities most recently created, with no keyword. Returns a `subreddits` list (each with name, title, subscriber count, description, type, and NSFW flag) plus an `after` cursor for paging.

NameTypeReqDescription
afterstring–Opaque pagination cursor: the previous response's `after` value, exactly as it was returned. The format is not stable, and a hand-written Reddit fullname loses the paging depth the cursor carries. Ab…
limitinteger–Maximum items returned, 1 to 100. The API clamps out-of-range values; the endpoint default applies when omitted.

No output schema declared.

No examples provided.

reddit_subreddits_popular ~220

Browses the most-subscribed, trending subreddits right now, with no keyword. Returns a `subreddits` list (each with name, title, subscriber count, description, type, and NSFW flag) plus an `after` cursor for paging.

NameTypeReqDescription
afterstring–Opaque pagination cursor: the previous response's `after` value, exactly as it was returned. The format is not stable, and a hand-written Reddit fullname loses the paging depth the cursor carries. Ab…
limitinteger–Maximum items returned, 1 to 100. The API clamps out-of-range values; the endpoint default applies when omitted.

No output schema declared.

No examples provided.

reddit_user_achievements ~121

Lists a Reddit user's public achievements, the trophies shown on their reddit.com/user/<name>/achievements page. Returns each achievement's name, description, granted timestamp and icons, plus a count. An account with none returns an empty list rather than an error, so a zero count is a real answer. Achievements such as One-Year Club and Verified Email reflect account age and standing. Example: name='spez'.

NameTypeReqDescription
namestringyesReddit username WITHOUT the u/ prefix (e.g. 'spez'). Required (path parameter).

No output schema declared.

No examples provided.

Install

How do I install the RedditAPIs MCP server?

RedditAPIs runs locally as an npm package, launched with npx -y redditapis-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

npm · redditapis-mcp

# add to Claude Code
claude mcp add redditapis-redditapis-mcp -- npx -y redditapis-mcp
Common questions

What is the RedditAPIs MCP server?

RedditAPIs is an MCP server listed in the public MCP registry as io.github.redditapis/redditapis-mcp. Reddit API as MCP tools: search, subreddits, posts, comments, users, monitors, webhooks, feedback. This page covers its npm package (redditapis-mcp).

Is the RedditAPIs MCP server safe to use?

RedditAPIs scores 84 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 4 November 2026. It declares no install or post-install scripts. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the RedditAPIs MCP server expose?

RedditAPIs exposes 59 tools: reddit_subreddit_posts, reddit_verify_comments, reddit_home_feed, reddit_search, reddit_post_visibility, and 54 more. Their descriptions and schemas cost roughly 19,763 tokens of context every time the server is loaded.

Is the RedditAPIs MCP server still maintained?

RedditAPIs is still listed as active in the MCP registry. We last reached this channel on 4 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

What licence is the RedditAPIs MCP server under?

RedditAPIs declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.