用途
corroborate-mcp 被称为“面向 AI 智能体的诚实佐证层”。把一个声明交给它,它会告诉你这条声明实际上被多独立地报道,并展示其判断依据。它的核心区分是:一篇 AP 报道被 40 家媒体转载,是一个来源,而不是 40 条引用。其他核查工具统计的是引用数量,而 Corroborate 统计的是独立来源数量,并通过识别内容聚合来实现这一点,然后公开自己的错误率和覆盖缺口。
这不是网页搜索引擎(搜索应使用 Exa/Tavily/Brave),也不是人工事实核查网络,而是介于两者之间的一个狭窄、诚实的原语:这条声明被多独立地报道。
主要能力
- 声明佐证评估(corroborate_claim):输入声明,返回裁决、置信度、证据与注意事项。参数为
{ claim, window_days?=7, max_sources?=8 }。 - 原始来源查找(find_sources):输入查询,返回去重后的多引擎来源列表(媒体、域名、URL、日期),但不给出裁决。参数为
{ query, window_days?=7, max_sources?=10 }。这是更廉价的原始能力,适合你自己做判断时获取覆盖情况。 - 聚合感知的独立来源计数:将跨域名的近似相同标题(Jaccard ≥ 0.55)合并为一个来源,并标记通讯社域名。
- 置信度评分:独立来源越多、跨引擎一致度越高,置信度越高;单一来源被广泛转载则置信度下降。
- 公开错误率:针对一个公开的 40 条标注声明基准测试(benchmark/ 中声明、标签、类别定义和测试框架均公开,可用
npm run benchmark自行运行)公布实测准确率,且时效性声明会从当前新闻刷新。 - 诚实披露局限:每条答案都附带证据、置信度和自身注意事项;当某个引擎不可用时,将覆盖状态标记为
coverage:"degraded",避免把“证据缺失”悄悄当作“不存在”的证据。
使用方式
要求 Node ≥ 18,无需密钥、无需配置。可在 Claude Desktop、Cursor 或任何 MCP 客户端中使用(配置文件如 claude_desktop_config.json、.cursor/mcp.json 等)。也可以在没有 MCP 客户端的情况下试用。
判断流程:
- 并行搜索 Google News RSS、GDELT、Hacker News(从声明中提取关键词,保留引号短语)。
- 相关性门控——只有当标题真正涉及该声明时才计入(命中 ≥2 个核心词且覆盖 ≥35% 的核心词);松散的主题回响会被丢弃,并报告丢弃数量。
- 聚合聚类——跨域名的近似相同标题合并为一个来源,并标记通讯社域名。
- 裁决——独立来源即不同聚类数;置信度随来源和跨引擎一致度上升,随单一来源广泛转载下降;所有已知弱点写入 notes。
适用场景
- 在依赖当前事件或新闻类声明之前,判断它是否被独立报道,还是单一来源被到处转载。
- 按真正的独立性对来源进行排序或过滤,并附带置信度分数。
- 当你需要一个可辩护的结论时——每个答案都附带证据、置信度和自身注意事项。
限制
- 不做立场检测:在最新一次运行中,全部 6 条扭曲声明都返回 CONFIRMED(6/6),因为每条都扭曲了一个当前被报道的事件,而本工具只检查声明主题和实体周围是否存在独立报道,不检测立场。因此“三星取消了 Galaxy Z Fold8”(实际是发布)或“OpenAI 发布了 GPT-6”这类声明会基于真实故事的实际报道而被确认。应把 CONFIRMED 理解为“该主题有独立报道——现在请对照返回来源核实具体事实”,绝不要理解为“这条确切声明为真”。立场检测是 v1.1 路线图事项。周期性事件(如锦标赛、选举)也可能匹配当前周期的报道。
- 仅限英语、标题层面;不抓取付费墙后的正文。
- 有时效窗口(默认 7 天,最大 90 天)。旧声明会显示 UNCORROBORATED——这是窗口陈述,不是虚假判定。
- 对同一通讯社报道的独立改写偶尔可能漏过聚类;同一来源的不同措辞偶尔可能被计为两个来源。
- 所有引擎都不可用时会报错,绝不伪造 UNCORROBORATED。
- 它衡量的是报道佐证,不是真相。每家用同一通讯社稿件转载的声明会返回 SINGLE_SOURCE;无人报道的声明会返回 UNCORROBORATED,即使它是真的。裁决会明确说明衡量了什么,在 notes 中标记弱点。