Skip to main content
Glama
carteakey
by carteakey

rfd-mcp

rfd-mcp is a standalone local stdio MCP server for searching and monitoring RedFlagDeals topics.

It has no source or package dependency on the RFD frontend repository. It references RFD only through the cached JSON feed configured with RFD_TOPICS_URL or RFD_TOPICS_FILE. By default it reads the deployed rfd-fyi feed at:

https://github.com/carteakey/rfd

The default data endpoint is:

https://rfd-fyi.pages.dev/topics.json

For local development, set RFD_TOPICS_FILE to a JSON file or set RFD_TOPICS_URL to a local Pages/Wrangler endpoint.

Install and build

From this repository root:

npm ci
npm run build

The compiled server is dist/index.js.

Related MCP server: Shopping Deals MCP Server

Configure an MCP client

For Claude Code:

claude mcp add rfd -- node /absolute/path/to/rfd-mcp/dist/index.js

Or add an entry like this to an MCP client configuration. The environment variables are optional.

{
  "mcpServers": {
    "rfd": {
      "command": "node",
      "args": ["/absolute/path/to/rfd-mcp/dist/index.js"],
      "env": {
        "RFD_TOPICS_URL": "https://rfd-fyi.pages.dev/topics.json",
        "RFD_MCP_DATA_DIR": "/absolute/path/to/rfd-mcp-data"
      }
    }
  }
}

Tools

  • search_deals searches topic titles and retailer names. It supports additional filter chips, /regular expression/ filters, retailer filtering, score bounds, the same six sort keys as the frontend, and a result limit.

  • get_deal returns the complete cached topic record plus the forum and direct-offer links for a topic_id.

  • monitor_search saves a search and keeps the latest 500 seen topic IDs.

  • check_monitors checks one or all saved searches and returns only unseen deals.

  • list_monitors lists saved searches and their last-check state.

  • delete_monitor removes a saved search.

RFD's cached topic schema does not contain Marketplace-style location, price, or category fields. Those filters are intentionally not exposed; the server uses the fields the RFD scraper actually stores.

Configuration

Variable

Default

Purpose

RFD_TOPICS_URL

https://rfd-fyi.pages.dev/topics.json

Cached topics endpoint

RFD_TOPICS_FILE

unset

Read topics from a local JSON file instead of HTTP

RFD_FORUM_BASE_URL

https://forums.redflagdeals.com

Base URL for thread links

RFD_MCP_CACHE_TTL_MS

30000

In-memory topics cache lifetime

RFD_MCP_DATA_DIR

~/.rfd-mcp

Directory for monitor state

RFD_MCP_MONITORS_FILE

$RFD_MCP_DATA_DIR/monitors.json

Exact monitor state path

Tests

npm test
npm run build

The server uses MCP stdio transport, so stdout is reserved for protocol traffic. Diagnostics are returned as tool errors or written by dependencies to stderr.

Available Tools

6 tools
check_monitorsA

Check saved RFD searches and return only unseen deals

ParametersJSON Schema
NameRequiredDescriptionDefault
monitor_nameNoCheck one monitor by name, or omit to check all monitors

TDQS

A3.6/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It mentions the filtering to 'unseen deals' but does not disclose whether the tool modifies state, requires authentication, or has any side effects. This is ambiguous for a 'check' operation.

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

Conciseness5/5

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

The description is a single clear sentence, front-loading the purpose with no unnecessary words.

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

Completeness4/5

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

The tool is simple with one optional parameter, and the schema covers it. The description gives the core behavior but does not explain the return format or any error conditions, which would be helpful given the absence of an output schema. Still, it is fairly complete for its complexity.

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

Parameters3/5

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

The input schema provides 100% coverage for the single optional parameter 'monitor_name', including its behavior. The description adds no additional parameter information, so it meets the baseline.

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

Purpose5/5

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

The description uses a specific verb 'Check' and resource 'saved RFD searches', and clarifies the outcome 'return only unseen deals'. This distinguishes it from sibling tools like search_deals (which searches deals) and monitor_search (which likely creates monitors).

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

Usage Guidelines3/5

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

The description implies its use for checking saved monitors, but does not explicitly state when to use it over alternatives like search_deals or list_monitors. No exclusions or alternative tool references are provided.

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

delete_monitorB

Delete a saved RFD search monitor

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesName of the monitor to delete

TDQS

B3.4/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It does not state whether deletion is irreversible, what happens if the monitor does not exist, or confirm the outcome, leaving the agent without important context.

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

Conciseness5/5

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

Description is a single clear sentence that is appropriately concise and front-loaded, with no wasted words.

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

Completeness2/5

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

For a simple deletion tool with no annotations or output schema, the description is under-specified. It fails to mention irreversibility, error behavior, or what the tool returns, which an agent would need for safe invocation.

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

Parameters3/5

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

The input schema fully documents the single 'name' parameter with a clear description, so the tool description need not add more. Given 100% schema coverage, this meets the baseline of 3.

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

Purpose5/5

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

The description uses a specific verb 'delete' and identifies the resource as 'a saved RFD search monitor', clearly distinguishing it from sibling tools like search_deals and list_monitors.

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

Usage Guidelines3/5

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

The description implies the tool is used for deleting monitors, but provides no explicit guidance on when to use it versus other monitor-related tools, nor any prerequisites or exclusions.

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

get_dealA

Get the complete cached topic data for a RedFlagDeals deal

ParametersJSON Schema
NameRequiredDescriptionDefault
topic_idYesRedFlagDeals topic ID

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description carries the burden of behavioral disclosure. It does add the context that the data is 'cached', which signals potential staleness, but it does not disclose error behavior, authentication, or rate limits. This provides some transparency but leaves significant gaps.

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

Conciseness5/5

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

The description is a single, front-loaded sentence that communicates the tool's purpose without superfluous words. Every word earns its place.

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

Completeness4/5

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

For a simple getter with one well-documented parameter, the description adequately conveys the core function and the cached nature of the data. It doesn't describe the return structure, but the phrase 'complete cached topic data' provides reasonable expectation. Given the lack of an output schema, a 4 is warranted rather than a 5.

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

Parameters3/5

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

The schema already documents topic_id as a RedFlagDeals topic ID with 100% coverage, so the description adds no additional parameter semantics. Baseline 3 is appropriate given the schema handles parameter documentation.

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

Purpose5/5

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

The description uses the specific verb 'Get' and clearly identifies the resource as 'the complete cached topic data for a RedFlagDeals deal'. This distinguishes it from sibling tools like search_deals (searching) and monitor tools (monitoring).

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

Usage Guidelines4/5

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

The description implies usage for retrieving a specific deal's data by topic ID, which is distinct from searching or monitoring. However, it does not explicitly state when to use this tool versus alternatives or mention any exclusions, so it stops short of a 5.

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

list_monitorsB

List all saved RFD search monitors

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior2/5

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

With no annotations, the description carries the burden of behavioral disclosure. It only states the tool lists all saved monitors, but does not mention read-only behavior, output format, ordering, or any side effects. Minimal informational value.

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

Conciseness5/5

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

The description is a single, concise sentence that front-loads the action and resource. It contains no unnecessary words or repetition.

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

Completeness2/5

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

While the tool is simple with zero parameters, there is no output schema and the description does not explain what the returned list contains (e.g., monitor IDs, names, statuses). With sibling tools present, additional context about the response shape would be valuable.

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

Parameters4/5

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

The tool has zero parameters, so the baseline score is 4. There are no parameter semantics to add, and the description does not need to explain any.

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

Purpose5/5

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

The description 'List all saved RFD search monitors' uses a specific verb and resource, clearly distinguishing this from sibling tools like search_deals or delete_monitor. It states exactly what the tool does.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives like check_monitors or monitor_search. There is no mention of when not to use it or any context for selection.

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

search_dealsA

Search cached RedFlagDeals topics by text, retailer, score, and sort order

ParametersJSON Schema
NameRequiredDescriptionDefault
sortNoSort order: score, title, post_time, thread_start, replies, or viewsscore
limitNoMaximum number of results (default: 20)
queryNoText or /regular expression/ filter matched against deal titles and retailer names
dealerNoRetailer/dealer name filter
filtersNoAdditional filters; every filter must match, like the RFD frontend's filter chips
max_scoreNoMaximum community score
min_scoreNoMinimum community score

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description carries the burden. It discloses that the search is over cached data, implying a read-only operation on potentially stale content. However, it does not describe the return format, whether it contacts the live site, or any rate limits. 'Cached' adds some context, but more could be said.

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

Conciseness5/5

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

The description is a single sentence that is front-loaded with the action and resource. It is extremely concise with no filler or unnecessary words, while still capturing the essential purpose and key scoping dimensions.

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

Completeness3/5

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

With 7 parameters and no output schema, the description is relatively brief. It does not explain the return structure or mention default behaviors like the limit. However, the schema covers parameter semantics, and the description's clarity about the search domain provides enough context for a basic search tool.

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

Parameters3/5

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

Schema coverage is 100% with each parameter described, so the baseline is 3. The tool description adds a high-level summary of filters but no new details beyond the schema. It does not compensate for any gaps, but none are needed.

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

Purpose5/5

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

The description clearly identifies a specific action ('Search') on a specific resource ('cached RedFlagDeals topics') and lists the key dimensions (text, retailer, score, sort order). This distinguishes it from siblings like get_deal (single lookup) and monitor tools.

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

Usage Guidelines3/5

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

The description implies usage by stating what it searches, but it does not explicitly say when to use this vs. alternatives, nor does it mention exclusions or prerequisites. Sibling tools like monitor_search exist, but no guidance is given for when to search vs. monitor.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 6 tool updatesv1.0.0
    • First observedcheck_monitors
    • First observeddelete_monitor
    • First observedget_deal
    • First observedlist_monitors
    • First observedmonitor_search
    • First observedsearch_deals

TDQS

A3.9/5.0

Scored across 6 tools

Disambiguation5/5

Each tool has a clear, distinct purpose: searching deals, retrieving a specific deal, creating a monitor, checking monitors, deleting, and listing. No two tools overlap or create ambiguity.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern: search_deals, get_deal, monitor_search, check_monitors, delete_monitor, list_monitors. The convention is uniform and predictable.

Tool Count5/5

Six tools is a well-scoped set for the RedFlagDeals domain, covering search, retrieval, and monitor lifecycle without excess or deficiency.

Completeness4/5

The coverage is solid: search and get for deal access, plus full monitor CRUD (create, read, check, delete) and list. A monitor update operation is absent, but that is a minor gap not essential to core workflows.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    F
    maintenance
    A Model Context Protocol server that aggregates and compares deals from multiple sources including Slickdeals, RapidAPI marketplace, and web scraping, enabling users to search, filter, and compare deals through a chat interface.
    6
    6
    MIT
  • A
    license
    B
    quality
    B
    maintenance
    MCP server for finding, comparing, and ranking the cheapest real offers across eBay, Amazon, Craigslist, OfferUp, and Google Shopping, with tax estimation and exact-model filtering.
    6
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    MCP server for Groupon that enables searching and browsing local, goods, and travel deals via natural language. No API key required for reading deals.
    7
    287
    1
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    MCP server for pelando.com.br, the Brazilian community deal board. It enables searching and browsing deals, retrieving deal details and comments, and assessing crowd quality verdicts.
    BSD 2-Clause "Simplified"