mcpField
R
Rattlewatch

Rattlewatch

远程服务
github.com法律与政务05 周前更新

关于 Rattlewatch

Rattlewatch 为 Agent 提供召回和要求查询,使用带引文的 CPSC 与 FDA 记录,并在无匹配时明确不作推测。适用于需要官方来源和验证日期的产品安全查询。

主要功能

  1. 01搜索带引文的召回记录
  2. 02查询带引文的合规要求
  3. 03列出召回和规则变更
  4. 04明确返回无记录结果
  5. 05支持 stdio 和 HTTP 的 MCP

适用场景

  1. 01检查产品是否被召回
  2. 02查找召回的机构来源
  3. 03查看指定日期以来的变更
  4. 04根据存储记录核验声明

MCP 相关

Rattlewatch 向 MCP 客户端提供召回搜索、要求查询、变更动态和核验工具。支持本地 stdio,以及 `/mcp` 上的 Streamable HTTP。

配置

远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。

服务地址https://rattlewatch.rattled.ca/mcp
一键复制安装命令
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。

工具

4
参数类型必填说明
limitinteger否
querystring是
marketstring否

详细介绍

Rattlewatch — 为 AI Agent 提供带引用的美国产品召回查询

为 AI Agent 提供美国产品召回查询 —— 涵盖 CPSC 消费品以及 FDA 食品、 药品和器械执法信息,每条结果都附有官方来源。

重点不在于它能搜索,而在于它不会在没有引用的情况下作答。如果询问它没有记录的信息,它会如实说明,而不是编造一个看似可信的答案。

在线 API: https://rattlewatch.rattled.ca MCP 端点: https://rattlewatch.rattled.ca/mcp 交互式文档: https://rattlewatch.rattled.ca/docs

面向 Agent 而非浏览器的机器可读发现信息:

文档URL
llms.txt/llms.txt
MCP 服务卡片/.well-known/mcp/server.json

一个容器同时提供两个接口——REST API 和通过可流式传输 HTTP 在 /mcp 上提供的 MCP。这对注册表发现很重要:目录会检查镜像的默认命令,因此它必须是一个可正常运行的 MCP 服务。

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

Rattlewatch 解答 Agent 无法安全自行解答的问题:

  • 这款产品、品牌或型号是否受到召回?
  • 哪个机构发布了该召回,来源在哪里?
  • 自某个日期以来,发布了哪些召回或规则变更?

每条答案都附有官方来源 URL和最后验证日期。Rattlewatch 绝不生成答案——它会返回存储中已有的记录,否则就会说明*“没有经过验证的记录”*。没有记录是诚实的否定,而不是猜测。


信任保障

没有引用的答案不会发布。

  • 有引用——每项事实和召回都指向官方来源(CPSC、EUR-Lex、 ECHA、欧盟委员会、OEHHA)。
  • 有版本记录——事实仅追加写入。答案变更时会创建新版本和变更事件,绝不会就地编辑。
  • 保持最新——系统会按计划对照上游来源重新验证存储内容; verified_at 会准确告知验证时间。
  • 不生成内容——verify() 只返回匹配的记录。如果没有匹配项, 则会返回 found: false 并明确说明原因。它不会编造记录。

工具(MCP)

工具返回内容
search_recalls与产品名称、品牌、型号或 UPC 匹配的带引用召回记录
get_requirement主题 + 市场的带引用合规要求
list_changes变更动态:自某个时间戳以来新增的召回和规则变更
verify与声明/查询匹配的带引用记录,或明确说明 no verified record

数据覆盖范围

  • 召回——完整的美国 CPSC 结构化数据流(消费品),以及 openFDA 食品、药品和器械执法报告。每条记录都附有可访问的来源 URL:官方 CPSC 页面或针对单条记录的 openFDA 查询。
  • 要求——少量经过整理并附有引用的市场准入事实,共七项:CPSIA/儿童产品证书、CPSC eFiling、欧盟 GPSR、CE 标志、REACH SVHC、RoHS 和加州 Prop 65——每项均附逐字引用。这是召回数据的补充,而非监管数据库。
python -m rattlewatch build --max-recalls 5000 --fda-limit 3000   # default in the image
python -m rattlewatch build --fda-limit 0                          # CPSC only (used by CI)

该引擎与具体领域无关:随着更多带引用的事实和数据流得到整理,无需更改代码即可添加新市场(英国、加拿大、澳大利亚、日本及其他地区)和新的规则集。


快速开始

python -m venv .venv && .venv/Scripts/activate   # or: source .venv/bin/activate
pip 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 HTTP
python -m rattlewatch serve --host 0.0.0.0 --port 8000
连接客户端
{
  "mcpServers": {
    "rattlewatch": {
      "command": "python",
      "args": ["-m", "rattlewatch", "mcp"],
      "cwd": "/path/to/rattlewatch"
    }
  }
}

REST API

端点层级
GET /v1/recalls/search?q=...免费(有速率限制)
GET /v1/requirements?subject=...&market=...免费
GET /v1/changes?since=...免费
POST /v1/verify免费
GET /v1/premium/export按量计费——返回带有 x402 付款要求的 HTTP 402

交互式文档:/docs。

定价

免费发现和查询,按量付费的高级调用。高级端点实现了 x402 支付流程:服务端返回 402 Payment Required 和结构化支付要求,付款 Agent 再附上付款凭证重试。这是一个端点所体现的变现理念——Agent 发现,Agent 付费。支付渠道(x402/USDC 或 Stripe 按量计费)在部署时接入。


仓库

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

为什么这很重要

AI 可以免费生成无限量看似可信的文本,因此内容一文不值。但 AI 会产生幻觉——尤其是在最新规则、具体数字以及上周发生的变化方面。Rattlewatch 与生成式模型截然相反:它是一个精简、朴实、有引文依据的事实层,在出错代价高昂时,Agent 及其驱动的软件可以依赖它。

安全

完整的威胁模型、已实施的控制措施,以及明确列出的未受保护内容,请参阅 SECURITY.md。其中的每项声明都由 tests/test_api.py 中的测试支持。

重点:在两个独立层面限制查询输入;按客户端进行速率限制;以恒定时间比较 API 密钥,且默认拒绝;默认拒绝 CORS;强化响应标头;不泄漏堆栈跟踪;容器以非特权用户(UID 10001)运行。

测试

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

覆盖范围图和明确列出的未测试内容,请参阅 TESTING.md。测试全绿不等于“已验证安全”。

许可证

MIT —— 详见 LICENSE。

代码是开源的;托管服务才是产品。护城河并不在源代码中:真正具有防御力的资产是经过策划、每日刷新的、有引文依据的语料库,以及维护该语料库时效性的新鲜度流水线。

开放源代码也意味着引文机制可供审计——对于一个以答案可信为全部主张的产品来说,这一点至关重要。

你可以自行托管:

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

也可以使用托管端点:https://rattlewatch.rattled.ca

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。