关于 proofread.law
proofread.law 是用于核对美国和瑞士法律文稿中判例引文的 MCP 服务,依据公开判决登记库进行检查。它会从文本判断司法辖区,并提供引文核验、覆盖范围说明,以及可选的文稿保存和判例建议。
主要功能
- 01检查文本和文档中的引文
- 02解析单条或多条判例引文
- 03说明登记库覆盖范围与限制
- 04经选择后保存文稿并跟踪版本
- 05推荐相关的美国和瑞士判例
适用场景
- 01提交前核对法律文稿中的引文
- 02解析一组判例引文
- 03比较文稿版本间标记的引文
- 04根据瑞士法条或美国法律规则查找判例
MCP 相关
该服务向 MCP 客户端提供 14 个工具,用于引文检查与解析、覆盖范围查询、报告生成、判例建议和可选的文稿管理。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
npx -y proofread-mcpPROOFREAD_API_KEY密钥proofread.law API key (pl_...), from the sign_up tool or https://proofread.law/account. Optional: without it the free tier applies per IP.PROOFREAD_APIBase URL of the proofread.law API.本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
14收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| deep | boolean | 否 | 同时检查每条引用的判决是否支持其所引用的句子。速度较慢,需主动启用;免费层每月限 3 次。 |
| text | string | 是 | 要核查的原文(段落、脚注或整份诉状)。可以直接粘贴文本。 |
详细介绍
proofread-mcp
一个用于 proofread.law 的 MCP 服务。它让 Claude Desktop、Claude Code、Cursor 和 OpenAI Agents SDK 能够在提交草稿前检查案例引证:约 1,000 万份美国法院判决,以及 110 万份瑞士判决(BGE/ATF/DTF、联邦最高法院案号、联邦法院和全部 26 个州)。系统会根据草稿检测司法管辖区,并以草稿所用语言生成瑞士报告:德语、法语或意大利语。
proofread.law 会根据一个开放的判决登记库(CourtListener 批量数据)检查每条引证,库中约有 1,000 万份法院判决。每项结果都会说明检查了什么、发现了什么,以及登记库无法查到什么。
功能
共 14 个工具:
| 工具 | 输入 | 返回内容 |
|---|---|---|
check_citations | 文本、deep(可选) | 覆盖情况说明、各级别的数量、每条需要人工处理的记录各占一行(先列红色,再列橙色,然后列出需要复核的深度检查记录)、找到的引文数量、报告 ID |
check_document | .pdf、.docx、.txt 或 .md 文件的路径(最大 10 MB)、deep(可选) | 与上面相同,适用于磁盘上的文件 |
resolve_citation | 一条引文字符串 | 登记库对该引文的答复:已找到(案件、法院、日期、平行引文、链接)、存在歧义(候选项)、登记库中没有、无法核实、已知引文或未识别到引文;该卷的覆盖范围;覆盖情况说明 |
resolve_citations | 最多 500 条引文字符串组成的列表 | 按状态统计的数量、按输入顺序逐条列出的引文、覆盖情况说明 |
coverage | jurisdiction(可选:us 或 ch) | 覆盖情况说明和存储声明;ch 会返回瑞士登记库及其收录的法院,以及各法院在当前索引中的占比 |
render_report | 之前检查生成的报告 ID,或完整的报告 JSON | 包含所有记录的 Markdown 尽职调查报告 |
suggest_cases | 瑞士联邦法规条文或引用该条文的段落,或一条美国法律句子;court、jurisdiction、domain、lang、k(均可选) | 瑞士:按排名列出引用该条文、值得阅读的主要联邦最高法院判例(BGE),并为每条判例标注法律领域、提供引用段落、任何后续判例实践变更、判决链接以及核查引文的链接;使用查询所用的语言。美国(测试版):最多列出 3 条判例,其判决文本本身包含该句子,并提供模型匹配的段落、前后段落、该判例对所指定法院的约束力、判决意见链接以及核查引文的链接 |
save_brief | 文本、title(可选) | 将简报保存到用户账户(主动选择加入,采用加密存储)并进行检查:先返回简报 ID,再返回与 check_citations 相同的简要结果 |
list_briefs | 无 | 已保存的简报:ID、标题、保存时间和上次检查时间、各级别的数量、版本数 |
get_brief | ID、include_text(默认为 true)、version(可选) | 已保存的文本、最新报告和保留的版本;指定 version 时返回该早期版本的文本 |
update_brief | ID、text、title、recheck(均可选,至少指定一项) | 将编辑后的文本另存为新版本并重新检查:自上一版本以来已解决的标记、新标记(均附标题)、未变更数量,然后列出所有仍需处理的记录。recheck: true 会重新检查已保存的文本,但不编辑文本,例如登记库更新后可用此选项。仅指定标题时只会重命名,不会进行检查 |
delete_brief | ID | 永久删除简报及其所有版本 |
sign_up | 账户所有者的电子邮件、Agent 的名称 | 创建 proofread.law 账户并生成 API 密钥(仅显示一次);服务器会在本次会话的其余时间使用该密钥 |
billing_link | payg、solo 或 firm | 账户所有者的 Stripe Checkout 链接;需要 API 密钥 |
检查结果的简要输出上限约为 12,000 个字符;如果长篇简报中需要标记的记录超过输出限制,文本会说明省略了多少条,render_report 则会列出全部记录。
已保存的简报(自愿选择)
除非调用 save_brief 或 update_brief,否则不会保存任何内容;check_citations 和 check_document 永远不会保存任何内容。已保存的简报会加密存储在用户的 proofread.law 账户中,直到 delete_brief 将其删除,因此简报工具需要 API 密钥(任何 PROOFREAD_API_KEY,或通过 sign_up 获取的密钥);没有密钥时,工具会返回一条消息,不会发送任何内容。关闭存储的服务会返回 storage_off,工具也会说明这一点。
修正标记引用的流程:调用一次 save_brief,在文本中修正一行标记内容(引用、案例名称、引文,或删除该引用),然后使用 ID 和完整的编辑后文本调用 update_brief,并查看变更:哪些标记已解决(之前有标记,现在没有)、哪些是新增的,以及仍需处理的行。系统会保留最近 20 个版本;get_brief 会列出这些版本,并读取较早的版本。API 中的 ID 是整数,工具中的 ID 是字符串。
check_citations 和 check_document 会读取文本内容:它们将案例名称和引文与登记库进行比较。resolve_citation 和 resolve_citations 会在登记库中查找引用字符串(/v1/resolve API),并告知对应的案例;它们不会将其与您填写的名称进行比较。
工具使用的等级说明:
| 等级 | 词语 | 含义 |
|---|---|---|
| red | 请核查 | 登记库中有具体内容与之不符:该引用对应的是另一个案例、卷号或页码不匹配、引文中的文字未出现在判决意见中 |
| orange | 无法验证 | 没有可供比对的内容:Westlaw 或 Lexis 标识符、卷号比登记库中的更新,或登记库只收录了部分内容的法律报告。既不能据此证明,也不能据此否定 |
| green | 已找到 | 该引用对应的案例,其标题与所填内容一致 |
| white | 深度核查 | 仅当 deep: true 时:判决意见是否支持引用它的句子。这是待审核队列,不是结论 |
它无法做到的事:解析 Westlaw(WL)或 Lexis 标识符、核查法规或二手资料,或判断某个案例目前是否仍是有效法律。每个工具的说明和每项结果附带的覆盖范围声明中都会列出这些限制。
案例推荐(瑞士)
suggest_cases 接受一条瑞士联邦法规条文(Art. 41 OR、art. 41 CO、Art. 8 ZGB、art. 9 Cst.;也能识别小写且不带句点的形式,例如 art 41 or)或一段引用了条文的文本,并列出联邦最高法院引用该条文的主要案例(BGE)。仅涵盖联邦法案;不涵盖州法。它不支持自由文本搜索:不含条文的查询会返回一条消息,说明未识别出任何条文。答案是按测算顺序排列的单一列表,每个案例都标注其法律领域;domain 筛选器会保留该领域内的顺序,因此筛选后的行仍保留其总排名(Rang 7、Rang 9……),并会附注说明显示的是哪个领域。每行都包含引证、日期、领域、判决语言、排名、引文段落(裁判摘要或判决理由)、之后是否改变司法实践(改变过的判例会附上标记,绝不会被删除)、法院网站上的判决,以及一个可打开 proofread.law 核验页面的链接。所有字符串都会以查询使用的语言返回(德语、法语或意大利语;英语使用 lang: "en"),工具会原样输出。推荐的案例供阅读参考:它尚未针对你的句子进行核验,而且没有标记的行并不代表其司法实践仍然有效。要核验引证,请使用 check_citations。
参数:query(必需,最多 20,000 个字符;超过 1,500 个字符时会通过 POST 发送)、domain(all、civil、criminal、public 或 social;默认值为 all)、lang(de、fr、it 或 en;默认采用查询的语言)、k(行数,1 到 50;默认值为 10)。当 k 较大时,文本超过约 20,000 个字符后的行仍会保留标题行和任何司法实践标记,但会省略段落和链接;这些内容仍会保留在结构化结果中(以及各领域的计数中)。试用阶段需要付费套餐或试用 API 密钥;否则 API 会返回 plan_required,工具会说明如何升级。
调用示例:使用 {"query": "Art. 41 OR, Art. 97 OR", "k": 3} 调用 suggest_cases(开发实例,2026-09-26;第 2 行和第 3 行已截断):
Gelesen als: Art. 41 OR, Art. 97 OR
1. BGE 146 IV 76, 13.11.2019, Strafrecht, FR, Rang 1
Das Bundesgericht zitiert diesen Entscheid zusammen mit Art. 41 OR; der Entscheid selbst nennt den Artikel nicht. Aus der Regeste: «a) Art. 110 Abs. 1 StGB; Art. 118, 121 Abs. 1 und 382 Abs. 1 StPO; ...»
Entscheid öffnen: https://search.bger.ch/ext/eurospider/live/de/php/clir/http/index.php?highlight_docid=atf%3A%2F%2F146-IV-76%3Ade&lang=de&type=show_document
Zitat prüfen: https://proofread.law/?cite=Art.%2041%20OR%3B%20BGE%20146%20IV%2076#check
...
Die Vorschläge sind publizierte Leitentscheide (BGE). Sie sind danach gereiht, wie oft das Bundesgericht sie zusammen mit dem Artikel zitiert, [...] Ein Vorschlag ist ein Entscheid zum Lesen: Ob er Ihre Aussage stützt, prüft diese Liste nicht, und ein Entscheid ohne Hinweis ist kein Beleg dafür, dass seine Praxis weiter gilt.
使用 "domain": "civil" 时,列表会以筛选说明开头,并保留总排名:
Gelesen als: Art. 41 OR
Filter: Zivilrecht. Die Reihenfolge ist dieselbe wie in der ganzen Liste.
1. BGE 132 III 122, 13.09.2005, Zivilrecht, FR, Rang 7
Regeste: «Rechtmässigkeit von im Arbeitskampf eingesetzten Mitteln (Art. 28 BV; Art. 41 und 357a OR). ...»
...
如果筛选后没有行,工具会返回一条说明情况的消息。之后改变司法实践的情况会显示在相关行的正下方,例如 Praxisänderung durch BGE 145 III 1, möglicherweise nur teilweise: <link>,后接标明该变化的裁判摘要句子。
案例建议(美国,测试版)
suggest_cases 还接受美国法律文书草稿中陈述法律规则的一句话(或不超过 1,500 个字符的短段落),并列出最多 3 个自身文本中陈述了该规则的案例。模型会阅读排名前 10 的候选案例中的法院意见,只有当模型在其中找到陈述该句内容的段落时,才会显示该案例。每行包含引文、法院、年份、该案例相对于你指定法院的效力(在此具有约束力、同一巡回区、具有说服力)、引证服务找到的后续历史(部分撤销、被法规取代)、模型匹配的段落及其前后段落(每段均截取至约 600 个字符)、CourtListener 上的意见链接,以及打开 proofread.law 上检查页面的链接。后来被法院推翻或撤销的案例不会列出,并会在备注中说明。
这是测试版。每个回答开头都会有一行说明,并附上测得的数据:在该网站自有索引中,对 50 份已提交法律文书中的句子展示的 94 个案例里,73 个(78%)支持相应句子,4 个不支持;这些结论由两位非执业律师的模型读者在盲测中得出(详情)。引用案例前,请先阅读相关段落。建议只是供阅读的案例;要检查引文,请使用 check_citations。
参数:court(可选,最多 200 个字符)是提交法律文书的法院:联邦上诉法院(9th Cir.、Ninth Circuit、ca9)、地区法院(N.D. Cal.、S.D.N.Y.、cand),或州或领地名称或邮政编码(California、CA),用于指定该地区的联邦法院。对该法院有约束力的案例会排在前面;未指定法院时,最高法院的案例会排在前面。目前尚不阅读州法院的案例;API 不支持阅读的法院会返回错误,并说明支持阅读的法院。jurisdiction 默认为 auto:瑞士法规条文,或德语、法语或意大利语文本,会被识别为瑞士内容;其他内容则视为美国句子;us 或 ch 可用于指定地区。domain、lang 和 k 仅适用于瑞士回答,美国回答使用英语。
若输入内容未陈述法律规则(例如问题、引文或案例名称、标题、关于案卷记录或当事方论点的陈述,或超过 1,500 个字符),则不会返回列表。回答会说明应改为粘贴什么内容,并提供例句,且不收费。触发模型的美国回答计为一次深度检查的引文,而非一次解析。当天的模型调用额度用尽后,美国案例建议会在次日(UTC)恢复。
调用示例:suggest_cases,输入一条关于合理性诉辩标准的句子,并设置 "court": "N.D. Cal."(开发实例,2026-09-26;段落及其前后段落已缩短,第 2、3 行已截断):
Beta: Each case is shown with the passage we matched; read it before you cite the case. Measured on the site's own index: 78% of shown cases support the sentence, and 4 of 94 did not (details on https://proofread.law/measurements#suggestions).
Ordered for N.D. Cal. (Ninth Circuit): binding cases first.
1. Bell Atlantic Corp. v. Twombly, 550 U.S. 544 (2007), Supreme Court, 2007, Binding here (Supreme Court)
The passage we matched: "Here, in contrast, we do not require heightened fact pleading of specifics, but only enough facts to state a claim to relief that is plausible on its face. Because the plaintiffs here have not nudged ..."
Before: "Plaintiffs say that our analysis runs counter to Swierkiewicz, 534 U. S., at 508 , which held that “a complaint in an employment discrimination lawsuit [need] n..."
After: "The judgment of the Court of Appeals for the Second Circuit is reversed, and the case is remanded for further proceedings consistent with this opinion...."
Read the opinion: https://www.courtlistener.com/opinion/145730/bell-atlantic-corp-v-twombly/
Check this citation: https://proofread.law/?cite=Bell%20Atlantic%20Corp.%20v.%20Twombly%2C%20550%20U.S.%20544%20%282007%29#check
2. Ashcroft v. Iqbal, 556 U.S. 662 (2009), Supreme Court, 2009, Binding here (Supreme Court)
...
3. Greg Landers v. Quality Communications, Inc., 771 F.3d 638 (9th Cir. 2014), Court of Appeals for the Ninth Circuit, 2014, Binding here
...
How we build this list: we search the sentences in which federal appellate courts and the Supreme Court cite a case, and the cases' own text. [...] We leave out cases that a later court overruled or reversed.
对于问题,回答会先显示测试版说明,然后给出 API 的消息和一个示例:
This reads as a question. Paste the rule itself, as a sentence, and we will look for cases that state it.
For example: "A complaint must contain sufficient factual matter, accepted as true, to state a claim to relief that is plausible on its face."
安装
需要 Node 20 或更高版本。无需安装;npx 会从 npm 获取 proofread-mcp。
Claude Desktop(扩展包)
从最新的 GitHub 版本发布页下载 proofread-mcp-<version>.mcpb,并用 Claude Desktop 打开(双击,或依次选择 Settings、Extensions、Install Extension)。该扩展包包含服务及其依赖项,并使用 Claude Desktop 自带的 Node 运行时,因此无需安装其他内容。唯一的设置项是可选 API 密钥;Claude Desktop 会将其作为敏感值存储,并通过 PROOFREAD_API_KEY 传递给服务。
要自行构建扩展包:运行 scripts/build-mcpb.sh(需要 npx @anthropic-ai/mcpb),根据 manifest.json、icon.png 和 npm 包内容生成 build/proofread-mcp-<version>.mcpb。
Claude Desktop(配置文件)
编辑 claude_desktop_config.json(Settings、Developer、Edit Config):
{
"mcpServers": {
"proofread": {
"command": "npx",
"args": ["-y", "proofread-mcp"],
"env": {
"PROOFREAD_API_KEY": "pl_..."
}
}
}
}
省略 env 即可使用免费套餐。
Claude Code
claude mcp add proofread -- npx -y proofread-mcp
# with an API key:
claude mcp add proofread -e PROOFREAD_API_KEY=pl_... -- npx -y proofread-mcp
Cursor
进入 Settings、MCP、Add new global MCP server,或在项目中编写 .cursor/mcp.json:
{
"mcpServers": {
"proofread": {
"command": "npx",
"args": ["-y", "proofread-mcp"],
"env": { "PROOFREAD_API_KEY": "pl_..." }
}
}
}
OpenAI Agents SDK(通过 HTTP)
使用 HTTP 传输启动服务:
PROOFREAD_API_KEY=pl_... npx proofread-mcp --http --port 3333
# MCP endpoint: http://127.0.0.1:3333/mcp health: http://127.0.0.1:3333/health
然后从 Agents SDK 连接:
from agents import Agent, Runner
from agents.mcp import MCPServerStreamableHttp
# The SDK's default read timeout is 5 s. A check of a long brief takes up to 6 s and a deep check 1 to 2 s per citation,
# so give the session up to 15 minutes (the API's own deep-check limit).
async with MCPServerStreamableHttp(params={"url": "http://127.0.0.1:3333/mcp"}, client_session_timeout_seconds=900) as proofread:
agent = Agent(name="Drafting assistant", instructions="Check every case citation before you rely on it.", mcp_servers=[proofread])
result = await Runner.run(agent, "Check the citations in this paragraph: ...")
import { Agent, run, MCPServerStreamableHttp } from "@openai/agents";
const proofread = new MCPServerStreamableHttp({ url: "http://127.0.0.1:3333/mcp", name: "proofread" });
await proofread.connect();
try {
const agent = new Agent({ name: "Drafting assistant", mcpServers: [proofread] });
const result = await run(agent, "Check the citations in this paragraph: ...");
} finally {
await proofread.close();
}
HTTP 服务默认绑定到 127.0.0.1,并且在设计上采用单租户模式:它本身不提供身份验证,报告 ID 会在各会话之间共享,而通过 sign_up 获取的密钥会由整个进程使用。闲置 30 分钟的会话会关闭。如需在网络上公开该服务,请使用 --host 0.0.0.0,并将其置于可添加身份验证的组件之后。
任意 MCP 客户端
stdio:运行 proofread-mcp。Streamable HTTP:运行 proofread-mcp --http --port 3333,并将客户端指向 /mcp。
环境变量
| 变量 | 默认值 | 含义 |
|---|---|---|
PROOFREAD_API_KEY | 未设置 | API 密钥(pl_...),仅作为 Authorization: Bearer 发送到 PROOFREAD_API。每个套餐都提供密钥(免费套餐 1 个、按量付费 3 个、solo 3 个、firm 5 个);付费套餐的密钥可解除免费层级的限制。不提供此密钥时,免费层级按 IP 地址适用 |
PROOFREAD_API | https://proofread.law | 自托管或测试实例的基础 URL |
账户和密钥
Agent 可以自行开设账户:sign_up 会将所有者的真实邮箱和姓名发送到 POST /agent/signup,并获取一个密钥,该密钥只会显示一次。服务会在该会话的其余时间内使用此密钥;请将其放入 PROOFREAD_API_KEY 以便保留。所有者会收到一封确认邮件。额度用完时(工具回复“需要……套餐”或“月度额度已用完”),billing_link 会返回一个 Stripe Checkout 链接供所有者使用;付费前不会扣款。套餐和价格:proofread.law/pricing。API 为 Agent 发布的入门说明位于 proofread.law/agent/onboarding.md。
免费层级
每月额度:无密钥时按 IP 地址计算;使用免费层级密钥时按账户计算:
| 工具 | 额度 |
|---|---|
check_citations、check_document | 20 次检查,其中最多 3 次可为深度检查 |
save_brief、使用新文本的 update_brief 或 recheck | 每次都会运行一次默认检查,并计为上述检查次数之一;仅提供标题不计入。每个套餐对可保存的 brief 数量都有上限 |
resolve_citation、resolve_citations | 1,000 次解析(列表中的每条引用各计一次) |
suggest_cases | 仅限付费套餐及处于试用期内的试用账户;瑞士答复计为一次解析(不含条文的查询不收费);运行了模型的美国答复计为一次深度检查引用(未陈述法律规则的输入不收费) |
coverage、render_report、sign_up、billing_link | 免费,不计入额度 |
此外,每个 IP 地址每小时最多可发出 20 次请求(付费套餐的上限更高)。达到限制时,工具会返回一条普通消息,说明重试时间或升级链接;协议层不会抛出错误。
上传 .docx 和无限次检查需要付费套餐。请参阅 proofread.law/pricing。
隐私政策
完整政策请见 proofread.law/privacy。以下内容适用于此服务:
- 收集哪些信息。 你检查的文本或文件会离开你的设备,通过 HTTPS 在检查请求中发送到 proofread.law 自有的服务(
PROOFREAD_API,默认为https://proofread.law)。save_brief和update_brief会以相同方式发送简报的文本和标题;suggest_cases会发送查询内容(文章、句子或你提供的段落)以及你指定的法院。sign_up会发送账户所有者的电子邮件地址和你提供的 Agent 名称。不会发送其他内容:没有对话历史记录、其他文件或遥测数据。 - proofread.law 如何使用和存储信息。 检查的输入会在内存中处理,并在返回报告后丢弃;不会将副本写入磁盘。例外情况是用户主动选择保存:通过
save_brief或update_brief保存的简报会加密存储在用户账户中,连同其报告和历史版本一起保留,直到用户通过delete_brief将其永久删除。其他工具都不会保存任何内容。每个请求的日志行会记录输入类型、大小、引文数量、各层级的计数和耗时,但绝不记录引文、当事人姓名或任何文本。对于账户,proofread.law 会保留电子邮件地址、方案、每月检查次数以及每个 API 密钥的哈希值。 - 第三方。 如果登记库无法解析某条引文,可能会通过 CourtListener 的引文 API 查询(仅发送引文,不发送正文)。深度检查(
deep: true)需主动启用:每条引文前的条款(最多 700 个字符)以及被引用的判决意见会发送给模型裁判。美国版suggest_cases查询(测试版)也会发送给同一模型裁判,并附上候选案件的判决意见。这两种情况是你发送的文字会离开 proofread.law 的唯一情形。登录链接通过 Resend 发送;付款通过 Stripe 处理,Stripe 会看到银行卡信息,而 proofread.law 不会。请求传输时会经过 Cloudflare 边缘网络。 - 保留期限。 输入和报告:不保留,但已保存的简报除外;这些简报会一直保留到用户将其删除。账户记录:保留至所有者通过 [email protected] 请求删除。
- 此服务。 它不会在磁盘上存储任何内容,包括已保存的简报(这些内容存放在 proofread.law 账户中,而非此处)。它会在内存中保留最近 50 份报告,以便通过短 ID 调用
render_report;进程退出后,这些报告就会消失。API 密钥存储在你的 MCP 客户端配置中(Claude Desktop 会将扩展程序的密钥作为敏感设置保存);sign_up返回的密钥会在会话期间保存在内存中,并且只向你显示一次,供你保存。该密钥只会作为Authorization: Bearer标头发送到PROOFREAD_API。如果深度检查流在所有引文判定完成前中断,工具会返回错误,说明已检查多少条;绝不会将未完成的深度检查显示为已完成。 - 联系方式。 Data Alchemy Labs,[email protected]。
覆盖范围说明
每个结果都会以覆盖范围声明开头,例如:
已针对 1,010 万个案件检查(CourtListener 批量数据,2026-06-30;上次刷新时间为 2026-09-19);联邦上诉法院 2019 至 2023 年的数据缺失 10% 至 15%;无法解析 Westlaw/Lexis 标识符;不检查法规、条例和二手资料。
请仔细阅读。某条引文不在登记库中,只能说明登记库的事实受覆盖范围限制,并不能证明该案件不存在。红色行表示“请检查此项”;这些工具会说明检查了什么以及发现了什么,但绝不会声称某个案件是编造的。
示例
输入:
《民权法案》第七章禁止基于性取向的歧视。Bostock v. Clayton County, 509 U.S. 644 (2020)。
check_citations 返回(真实输出、审查实例,2026-09-20):
Coverage: Checked against 10.1 M cases (CourtListener bulk data 2026-06-30, last refreshed 2026-09-19); federal appellate 2019 to 2023 is 10 to 15% incomplete; Westlaw/Lexis identifiers are not resolvable; statutes, regulations and secondary sources are not checked.
Summary: 1 citation, 1 row. Check this (red): 1. Cannot verify (orange): 0. Found (green): 0.
Flagged rows:
- CHECK THIS: 509 U.S. 644 (Bostock v. Clayton County). Register has Bostock v. Clayton County at 590 U.S. 644. Check the volume. In the register, 509 U.S. 644 is Shaw v. Reno. The case named in the document exists; this citation does not point to it. Register: https://www.courtlistener.com/opinion/4760997/bostock-v-clayton-county/
Found: 0 rows resolved to a case in the register.
Report id: r_1ff74051 (give it to render_report for a markdown report). Elapsed: 0.03 s.
Storage: Nothing you submit is stored. The document is processed in memory and discarded when this report is returned; only counts (citations, tiers, timing) are logged, never text.
开发
npm install
npm run build # tsc -> dist/
npm test # vitest, mocked fetch, no network
LIVE=1 npm test -- test/live.test.ts # three live calls against proofread.law (counts against the free tier)
node scripts/smoke-stdio.mjs # spawn the stdio server, initialize, tools/list, four live tool calls
node scripts/smoke-stdio.mjs --offline # the same without network
布局:src/client.ts 是类型化 HTTP 客户端(/verify、/render、/api/coverage、/v1/resolve 单条和批量、/v1/briefs、/v1/suggest),src/format.ts 是用于检查的紧凑格式化器,src/resolve_format.ts 是用于注册表回答的格式化器,src/briefs_format.ts 是用于已保存简报(/v1/briefs)的格式化器,src/suggest_format.ts 是用于案例建议(/v1/suggest)的格式化器,src/tools/<name>.ts 是每个工具对应的文件,src/server.ts 负责注册这些工具,src/cli.ts 负责选择传输方式。其余注册表路由(/v1/extract、/v1/case/{id}、按报告方划分的 /v1/coverage)也采用相同方式接入:在客户端中添加一个方法,并在 src/tools/ 下添加一个文件。
发布
请参阅 RELEASE.md:npm、MCP 注册表(server.json 位于仓库中)、Claude Desktop 扩展包(manifest.json、scripts/build-mcpb.sh,附在每个 GitHub 版本发布中)以及 Anthropic 的连接器目录。
许可证
MIT,Data Alchemy Labs。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。