Rattlewatch

io.github.veritylabsai由 GitHub 账号 veritylabsai 发布v0.2.1更新于 Oct 24, 2026

Cited US recall lookup for AI agents: CPSC and FDA data, nothing invented.

已验证Streamable HTTP可网页运行安全与监控商业与电商

概览

AI 生成的概览

一个远程 MCP 服务器,用于查询有出处的美国产品召回记录(CPSC 与 FDA)以及少量有引用的市场准入要求,只返回有来源的记录。

可以做什么
按产品名称、品牌、型号或 UPC 检索有出处的美国召回记录,覆盖 CPSC 消费品以及 FDA 食品、药品和器械执法信息,每条带来源链接和匹配分数,无匹配时返回空列表。按产品类别和市场获取有引用的市场准入要求,覆盖 CPC、CPSC eFiling、欧盟 GPSR、CE 标志、REACH SVHC、RoHS 和加州 Prop 65 等少量精选条目。按 ISO-8601 时间戳列出新增召回和规则变更,每条附来源链接。将某项说法或产品查询与库中记录核对,只返回匹配的有引用记录,或明确报告无已验证记录。
适用场景
适合助手需要回答召回或合规问题、且无出处或臆造的答案代价很高的场景,也适合需要明确说明库中无记录而非猜测的场合。还可用于跟踪某日期之后的新召回和规则变更。
运行要求
通过 streamable HTTP 连接的远程 MCP 端点;未声明认证、环境变量或请求头。README 另述可从 Python 源码本地运行,需要 Python、安装依赖并构建数据存储。
安装前请注意
准入要求数据仅为七条精选事实,并非完整法规数据库;查无记录只表示库中没有,并不构成否定结论。README 描述了一个按量计费的高级导出端点,采用 x402 支付流程,返回 HTTP 402 并要求付款凭证,付费调用可能产生费用。README 亦指出测试全部通过并不等于已验证安全。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Rattlewatch,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Web executable,通过 Streamable HTTP。 远程服务在工作区中配置后即可从网页运行时运行。

交给智能体安装

把这段提示词粘贴到 Claude Code、Codex、Cursor 等智能体,或 SourceWeft 对话中。智能体会读取该服务器的安装指南,先向你展示发布者、端点和登录方式,经你同意后再把它添加到你的客户端。密钥不会写进任何命令。

阅读 https://sourceweft.com/mcp/io.github.veritylabsai%2Frattlewatch/install.md,并按其中说明把这个 MCP 服务器接入我的客户端。修改任何配置之前,先告诉我它的发布者、端点和登录方式,等我确认。不要把 API 密钥写进命令或我会提交的文件;问我密钥应从哪里获取。

查看智能体所依据的安装指南

其他 MCP 客户端

把它添加到你客户端的 mcpServers 配置中。

{
  "mcpServers": {
    "rattlewatch": {
      "type": "http",
      "url": "https://rattlewatch.rattled.ca/mcp"
    }
  }
}

README

[Rattlewatch — cited US product recall lookup for AI agents]

US product recall lookup for AI agents — CPSC consumer products and FDA food, drug and device enforcement, with every result pinned to an official source.

The point is not that it searches; it is that it refuses to answer without a citation. Ask it something it has no record of and it says so, rather than inventing a plausible answer.

Live API: https://rattlewatch.rattled.ca MCP endpoint: https://rattlewatch.rattled.ca/mcp Interactive docs: https://rattlewatch.rattled.ca/docs

Machine-readable discovery, for agents rather than browsers:

DocumentURL
llms.txt/llms.txt
MCP server card/.well-known/mcp/server.json

One container serves both surfaces — the REST API and MCP over streamable HTTP at /mcp. That matters for registry discovery: directories introspect the image's default command, so it has to be a working MCP server.

bash
curl "https://rattlewatch.rattled.ca/v1/recalls/search?q=Bistro%20Pro%20Electric%20Grill"

Rattlewatch answers the questions an agent cannot safely answer itself:

  • Is this product, brand, or model number subject to a recall?
  • Which agency published that recall, and where is the source?
  • What recalls or rule changes appeared since a given date?

Every answer carries an official source URL and a last-verified date. Rattlewatch never generates an answer — it returns records that exist in its store, or it says "no verified record". Absence is an honest negative, not a guess.


The trust guarantee

An answer without a citation does not ship.

  • Cited — every fact and recall is pinned to an official source (CPSC, EUR-Lex, ECHA, the European Commission, OEHHA).
  • Versioned — facts are append-only. A changed answer creates a new version and a change event, never an in-place edit.
  • Current — the store is re-verified against its upstream sources on a schedule; verified_at tells you exactly when.
  • Non-generative — verify() returns only matching records. If nothing matches, it returns found: false with an explicit reason. It will not invent one.

Tools (MCP)

ToolWhat it returns
search_recallsCited recall records matching a product name, brand, model, or UPC
get_requirementCited compliance requirements for a subject + market
list_changesThe change feed: new recalls and rule changes since a timestamp
verifyCited records matching a claim/query, or an explicit no verified record

Data coverage

  • Recalls — the full structured U.S. CPSC feed (consumer products) plus openFDA enforcement reports for food, drug and device. Every record carries a resolvable source URL: the official CPSC page, or a per-record openFDA query.
  • Requirements — a small curated set of cited market-entry facts, seven in total: CPSIA/Children's Product Certificate, CPSC eFiling, EU GPSR, CE marking, REACH SVHCs, RoHS, and California Prop 65 — each with a verbatim citation. This is a companion to the recall data, not a regulatory database.
bash
python -m rattlewatch build --max-recalls 5000 --fda-limit 3000   # default in the imagepython -m rattlewatch build --fda-limit 0                          # CPSC only (used by CI)

The engine is domain-agnostic: new markets (UK, CA, AU, JP, and beyond) and new rule sets are added as more cited facts and feeds are compiled, without code change.


Quick start

bash
python -m venv .venv && .venv/Scripts/activate   # or: source .venv/bin/activatepip install -r requirements.txt
# build the store (facts + CPSC recalls)python -m rattlewatch build
# run as an MCP server over stdio (local agents)python -m rattlewatch mcp
# or serve the REST API + MCP over HTTPpython -m rattlewatch serve --host 0.0.0.0 --port 8000

Connect a client

json
{  "mcpServers": {    "rattlewatch": {      "command": "python",      "args": ["-m", "rattlewatch", "mcp"],      "cwd": "/path/to/rattlewatch"    }  }}

REST API

EndpointTier
GET /v1/recalls/search?q=...Free (rate-limited)
GET /v1/requirements?subject=...&market=...Free
GET /v1/changes?since=...Free
POST /v1/verifyFree
GET /v1/premium/exportMetered — returns HTTP 402 with an x402 payment requirement

Interactive docs: /docs.

Pricing

Free discovery and lookups, metered premium calls. The premium endpoint implements the x402 payment flow: the server returns 402 Payment Required with a structured payment requirement, and a paying agent retries with proof of payment. This is the monetization thesis in one endpoint — agents discover, agents pay. The payment rail (x402/USDC or Stripe metered billing) is wired at deploy time.


Repository

rattlewatch/  rattlewatch/    store.py      # ground-truth store (facts, recalls, events, sources)    compile.py    # ingest CPSC + cited rules    engine.py     # query logic (search, verify, change feed)    textutil.py   # normalization + matching primitives    mcp_server.py # MCP server (stdio + streamable HTTP)    api.py        # FastAPI REST + x402 stub    __main__.py   # CLI: build / stats / serve / mcp  data/rules/seed.yaml   # cited facts  tests/test_engine.py   # correctness + no-hallucination tests

Why this matters

AI generates infinite plausible text for free, so content is worth nothing. But AI hallucinates — especially on current rules, specific numbers, and what changed last week. Rattlewatch is the opposite of a generative model: a small, boring, cited layer of truth that agents and the software they power can depend on when being wrong is expensive.

Security

See SECURITY.md for the full threat model, the implemented controls, and — listed explicitly — what is not protected. Every claim there is backed by a test in tests/test_api.py.

Highlights: query input bounded at two independent layers; per-client rate limiting; API keys compared in constant time that fail closed; CORS denied by default; hardened response headers; no stack-trace leakage; container runs as an unprivileged user (UID 10001).

Testing

bash
export PYTHONPATH=.python tests/test_engine.py   # 13 checks — correctness + non-hallucinationpython tests/test_api.py      # 30 checks — security + abuse

See TESTING.md for the coverage map and an explicit list of what is not tested. A green run is not the same as "verified secure."

License

MIT — see LICENSE.

The code is open source; the hosted service is the product. Nothing about the moat lives in the source: the defensible asset is the curated, daily-refreshed, cited corpus and the freshness pipeline that maintains it. Open-sourcing the code also means the citation machinery is auditable — which matters for a product whose entire claim is that its answers can be trusted.

You can self-host it:

bash
docker build -t rattlewatch .docker run -p 8000:8000 rattlewatch

Or use the hosted endpoint: https://rattlewatch.rattled.ca

来源:README.md,提交 f1e5de4

工具

4

search_recalls

Search recalls

Search official US recall records by product name, brand, model, or UPC. Covers CPSC consumer products and FDA food, drug and device enforcement. Returns only cited records from the store, each with a source URL and a match score. If nothing matches, returns an empty list rather than guessing.

输入参数limitquery必填market

get_requirement

Get requirement

Get cited market-entry requirements for a product subject in a given market (e.g. subject='childrens_products', market='US'). This is a small curated set, not a full regulatory database: CPC, CPSC eFiling, EU GPSR, CE marking, REACH SVHC, RoHS and California Prop 65. Returns each fact with its official citation URL and last-verified date.

输入参数marketsubject必填

list_changes

List changes

List recall and requirement changes since an ISO-8601 timestamp (e.g. '2026-09-01T00:00:00+00:00'). Includes newly published recalls and rule changes, each with its source URL.

输入参数limitsince必填

verify

Verify a claim

Check a claim or product query against the store. Returns only cited records (recalls and requirements) that match. Explicitly reports 'no verified record' when nothing matches -- it never synthesizes an answer, so absence means 'not in the store', not a negative claim.

输入参数query必填

版本历史

2
  1. v0.2.1最新Sep 21, 2026
  2. v0.2.0Sep 21, 2026

评分

已满足适用检查项的 100%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通必需25 分
  • 已声明认证方式必需10 分
  • 已列出工具必需15 分
  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分