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 分