关于 Verity
Verity(服务名为 Rattlewatch)为 AI Agent 提供美国消费品、食品、药品和器械召回查询,以及少量市场准入合规要求。它只返回带官方来源和核验日期的现存记录;没有匹配记录时会明确说明。
主要功能
- 01搜索 CPSC 与 FDA 召回记录
- 02查询带引用的合规要求
- 03查看召回与规则变更
- 04验证查询并明确报告无记录
- 05记录附官方来源与核验日期
适用场景
- 01核查产品或型号是否被召回
- 02追溯召回发布机构及来源
- 03查看指定日期后的规则变更
MCP 相关
提供 MCP 工具 search_recalls、get_requirement、list_changes 和 verify,供客户端查询带引用的记录。支持 stdio 与 streamable HTTP。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://verity-mcp-243195959173.us-central1.run.app/mcpclaude mcp add --transport http veritylabsai-verity https://verity-mcp-243195959173.us-central1.run.app/mcp{"mcpServers":{"veritylabsai-verity":{"type":"http","url":"https://verity-mcp-243195959173.us-central1.run.app/mcp"}}}在 Cursor 中打开{"servers":{"veritylabsai-verity":{"type":"http","url":"https://verity-mcp-243195959173.us-central1.run.app/mcp"}}}在 VS Code 中打开{"mcpServers":{"veritylabsai-verity":{"type":"http","url":"https://verity-mcp-243195959173.us-central1.run.app/mcp"}}}{"mcpServers":{"veritylabsai-verity":{"serverUrl":"https://verity-mcp-243195959173.us-central1.run.app/mcp"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
工具
4| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| limit | integer | 否 | |
| query | string | 是 | |
| market | string | 否 |
详细介绍
为 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
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。