redreplier
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| REDREPLIER_API_TOKEN | Yes | Your RedReplier API token. Create an account at redreplier.com, then generate a token at Settings → API Tokens. |
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 |
|---|---|
| list_websitesA | List every website this account monitors, each with its keywords (id, value, status: PENDING, ACTIVE, DISABLED, SUSPENDED). Call this first: most other tools need a websiteId or keywordId from it. Reading also promotes any PENDING keyword that fits the plan's free headroom to ACTIVE, without ever charging. Use get_website instead when you already hold a websiteId and want one record. Only ACTIVE keywords match new mentions, so a long PENDING list explains a quiet inbox. Scope is the account behind the API token. |
| get_websiteA | Get one monitored website by ID with its full keyword list and statuses (PENDING, ACTIVE, DISABLED, SUSPENDED). Use it to re-check keyword statuses after add_keywords, enable_keyword, or activate_pending_keywords; use list_websites instead when you do not have the ID yet or want every site. websiteId comes from list_websites or create_website. Returns 404 when the website does not exist or belongs to another account, and 400 when websiteId is not a UUID. |
| create_websiteA | Add a website to monitor across Reddit, Hacker News, X, and Bluesky. The domain must be new to this account: a duplicate returns 400, and re-adding a domain removed with delete_website revives that record. description is the context every mention is scored against. Omit it and the server scrapes the URL to write one, spending one AI generation from the plan quota; if that scrape fails or the quota is exhausted the site is created with description null and its mentions go unscored (reason "Scoring skipped: website description missing"), so check the response and set one with update_website or analyze_website. Pass your own description to skip the scrape. Initial keywords are stored PENDING: list_websites or add_keywords promotes those that fit the plan for free, and activate_pending_keywords covers the rest, possibly for a charge. AI-suggested keywords are added in the background and show up on the website later. Returns 400 when the plan has no website slots left. |
| update_websiteA | Update a monitored website's display name and/or description. Only the fields you pass change: omitted fields keep their value, and an empty description clears it. The description is the context the AI scores every new mention against, so keep it an accurate summary of the product; mentions already scored are not rescored. Use analyze_website to draft a description from the live site before saving it here. URL and keywords cannot change through this tool: use add_keywords, edit_keyword, or disable_keyword for keywords. Returns the updated website with its keyword list. |
| delete_websiteA | Stop monitoring a website (soft delete). The site and its keywords leave list_websites immediately and stop matching new mentions; there is no restore tool, but create_website with the same URL revives the record. Use this only when the whole site should go: use disable_keyword to pause one keyword and keep the site, and delete_keyword for a PENDING keyword you never want. Confirm with the user first and name the domain, not just the ID. Returns { deleted: true }; 404 if the ID is unknown to this account. |
| analyze_websiteA | Scrape a URL and return an AI-written business description as { description }, without creating or changing any website. Use it to draft or preview the text before create_website or update_website, then pass the result as their description. Consumes one AI generation from the monthly quota unless a precomputed description already exists for that domain, and refunds it if generation fails. Returns 400 when the quota is exhausted or url is not a valid URL, and an error when the page has too little readable text. |
| add_keywordsA | Add keywords to a monitored website. Values are trimmed, lowercased, and de-duplicated; ones already ACTIVE on that site are skipped, and re-adding a DISABLED one resets it to PENDING (prefer enable_keyword). Each new keyword starts PENDING, then as many as fit the plan's free headroom flip to ACTIVE at once, with no charge. The rest stay PENDING and match nothing until activate_pending_keywords, which may charge an upgrade; run preview_activate_pending first. Adding is unlimited. Use edit_keyword to reword an existing keyword. Returns the whole website with its updated keyword list, not only the new keywords. |
| edit_keywordA | Change a keyword's text in place, keeping its ID and any paid slot. Edits are unlimited on every plan (keyword_change_usage reports limit -1). The new value is re-graded for noise; an ACTIVE keyword stays ACTIVE, while a PENDING, DISABLED, or SUSPENDED one goes ACTIVE if the plan has a free slot and PENDING otherwise. Use this to fix a SUSPENDED keyword the grader rejected, or to reword instead of adding a variant with add_keywords. A case-only change is a no-op; a value already on the website returns 400. |
| disable_keywordA | Stop monitoring one keyword: sets it DISABLED and it stops matching new mentions immediately. Unlimited and reversible with enable_keyword. Billing does not drop right away: the keyword keeps its paid slot until the end of the current billing cycle, so re-enabling it in the same cycle is free but a new keyword cannot reuse that slot for free; any price reduction is scheduled for the cycle boundary. Use delete_keyword instead for a PENDING keyword you never want. Calling it on an already DISABLED keyword returns it unchanged. |
| enable_keywordA | Re-activate one DISABLED keyword. It goes ACTIVE at once when it fits the plan or was disabled earlier in this billing cycle (it still holds its slot). Otherwise it is set PENDING and the required plan upgrade is charged immediately; it flips ACTIVE once the payment settles, so re-check with get_website. Use activate_pending_keywords instead to bring every PENDING keyword live in one call, and add_keywords for a keyword that does not exist yet. Preview cost with preview_keyword_billing first. Returns 400 without an active subscription; an ACTIVE keyword is returned unchanged. |
| delete_keywordA | Permanently delete one keyword. Only PENDING keywords qualify (never billed, never live), so there is no billing effect and no undo. Any other status returns 400 "Only pending keywords can be removed": use disable_keyword for an ACTIVE keyword, edit_keyword to fix a SUSPENDED one, and delete_website to drop a whole site. Prefer this over leaving unwanted PENDING keywords in place, because activate_pending_keywords would otherwise try to pay for them. Returns { deleted: true }. |
| activate_pending_keywordsA | Activate every PENDING keyword across the account in two steps: promote as many as the current plan covers for free, then charge an immediate prorated upgrade to cover the remainder (keywords disabled this cycle still hold slots and count). Keywords covered by the upgrade stay PENDING in the response and flip ACTIVE once the payment settles; re-check with list_websites. Always call preview_activate_pending first, show the user immediateCharge and targetPlanName, and get explicit consent; never call this in a loop. Use enable_keyword for a single DISABLED keyword. Fails with 400 when there is no active subscription or the charge fails, leaving keywords PENDING. Returns the updated websites. |
| preview_activate_pendingA | Preview the billing impact of activate_pending_keywords without changing anything. Takes no input: it prices the plan needed for the keywords committed this cycle (ACTIVE plus disabled this cycle) plus every PENDING keyword. Returns currentPlanName, currentMonthlyPrice, targetPlanName, targetMonthlyPrice, targetKeywords, immediateCharge (prorated amount charged now), isUpgrade, isDowngrade, requiresImmediatePayment; immediateCharge 0 with isUpgrade false means activation is free. Use this right before activate_pending_keywords. Use preview_keyword_billing instead to price an arbitrary keyword count, for example before add_keywords or enable_keyword. |
| preview_keyword_billingA | Preview the plan and price needed for a chosen total of active keywords, without changing anything. desiredKeywordCount is the absolute number of keywords you want live across the account, not the number being added: count the ACTIVE keywords from list_websites and add the new ones. Returns the same shape as preview_activate_pending (currentPlanName, targetPlanName, targetMonthlyPrice, immediateCharge, isUpgrade, isDowngrade, requiresImmediatePayment). Use this for what-if pricing before add_keywords or enable_keyword; use preview_activate_pending instead for the exact cost of activating the keywords already PENDING, which it counts for you. |
| keyword_change_usageA | Get the monthly keyword-edit allowance for the account as { limit, used, remaining, unlimited }, where limit -1 means unlimited. Only edit_keyword ever counted toward it; add_keywords, disable_keyword, and enable_keyword never did. Every current plan reports unlimited, so there is no need to check it before edit_keyword; it remains for clients that budget edits. Not a capacity or billing preview: use preview_keyword_billing or preview_activate_pending for plan pricing, and list_websites to count ACTIVE keywords. |
| list_mentionsA | List mentions matched for this account across Reddit, Hacker News, X, and Bluesky, each AI-scored 0-100 with its source, matched keyword, status, content, and any generated relevanceReason and aiReplySuggestion. Two defaults hide rows: REJECTED mentions are excluded unless statuses names them, and mentions below the website's minimum score (30 by default) are hidden unless includeLowRelevance is true, even when scoreBuckets asks for LOW or VERY_LOW. Returns { mentions, total, limit, offset }; page with offset while offset < total. Sort RELEVANCE for the best leads, RECENT for what is new; from/to filter on ingestion time, not publish time. Use count_mentions for the number alone, explain_mention for one mention's reasoning, and update_mention_status to triage. |
| count_mentionsA | Count mentions matching the same filters as list_mentions, returning { total } and no rows. The same defaults apply: REJECTED excluded unless statuses includes it, and scores below the website's minimum (30 by default) hidden unless includeLowRelevance is true. Use it for dashboards, to size a triage batch, or to decide whether paging list_mentions is worthwhile; list_mentions already returns total with its rows, so skip this when you fetch rows anyway. Takes no sort, limit, or offset. |
| update_mention_statusA | Set one mention's triage status. APPROVED marks it a real lead; REJECTED marks it noise and drops it from default list_mentions and count_mentions results (pass statuses to see it again); NEW returns it to the inbox. Fully reversible: any status can move to any other; reviewedAt is stamped when leaving NEW and cleared on NEW. Judge on the content and relevanceScore, calling explain_mention first when the score looks off; never approve a mention you have not read. mentionId comes from list_mentions. Returns the updated mention. |
| explain_mentionA | Get the AI relevance reasoning (relevanceReason), tags, and a drafted reply (aiReplySuggestion) for one mention, generating whatever is missing on first call and storing it, so later calls are instant reads. The website must have a description; without one the mention comes back unchanged. Use it when a score looks wrong or before update_mention_status on a borderline lead, not across every row of list_mentions, since generation is slow. Returns the full mention object, or null (not a 404) when the ID is unknown to this account. |
| get_alert_settingsA | Get the account's email-alert settings: enabled, cadenceMinutes (the digest interval in effect), minIntervalMinutes (the fastest cadence the plan allows), and availableCadences (the subset of 15, 30, 60, 120, 180, 240, 720, 1440 at or above that floor). cadenceMinutes is never reported below the floor, even if a faster value was saved before a plan downgrade. Call it before update_alert_settings to pick a value from availableCadences, and after it to confirm what applied. Read-only; the digests themselves are sent by the platform on that cadence. |
| update_alert_settingsA | Turn mention email alerts on or off and set how often the digest is sent. enabled is required on every call. cadenceMinutes must be one of 15, 30, 60, 120, 180, 240, 720, 1440, otherwise 400 "Invalid alert frequency for your plan"; a value faster than the plan floor is silently raised to the floor. Both settings are replaced on every call: omitting cadenceMinutes resets it to the fastest cadence the plan allows, so pass the current value when only toggling enabled. Use get_alert_settings for availableCadences before, and to confirm the applied cadence after. Returns the resolved settings. |
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 21 tools
Each tool targets a distinct resource and action: website CRUD, keyword lifecycle, mention triage, alert settings, and billing previews are all cleanly separated. Overlapping actions like enable_keyword versus activate_pending_keywords are carefully disambiguated by scope and use case.
The overwhelming majority follow a consistent verb_noun pattern (list_websites, create_website, update_mention_status). Minor deviations like keyword_change_usage and preview_activate_pending break the pattern slightly but remain readable and predictable.
At 21 tools, the set is slightly heavy but each tool serves a real purpose in the website monitoring workflow. The billing and preview helpers add surface area but support the core keyword activation flow without being redundant.
The tool surface covers website lifecycle management, keyword CRUD and activation, mention retrieval and triage, alert configuration, and billing previews. There are no obvious dead ends: every state transition for websites, keywords, and mentions is supported by an appropriate tool.