API + MCP · Beta

把裁判文书接进你的法律 AI

两种接入方式 —— REST API 或 MCP server。curl 一行能验证,Claude / Cursor 一分钟接通。劳动争议样本库每条带 source_url 回链中国裁判文书网;1.6 亿全量库当前不返回原文链接, 以案号 + 法院 + 裁判日期溯源(详见下方 FAQ)。

01 / curl

先用 curl 验证

拿到 key 后 30 秒能跑通。Beta 阶段返回 sample 字段名与 GA 一致,代码不用改。

提示:/api/v1/cases/search q 按空白切词后要求逐词命中,词越多结果越少;若全部同时命中为 0 条,会自动降级为「任一关键词命中」并按命中词数排序(响应 _meta.note 会说明,similarity = 命中词数 / 总词数)。要更精确请用 1-2 个短词 + province / term_reason 等结构化条件。

GET /api/v1/health
curl https://tob.wenshucha.com/api/v1/health
POST /api/v1/cases/search
curl -X POST https://tob.wenshucha.com/api/v1/cases/search \
  -H "X-API-Key: wsc_trial_xxxxxxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "q": "经济性裁员",
    "province": "北京市",
    "term_reason": "layoff"
  }'
GET /api/v1/fulltext(全库判决全文检索,1.6 亿+)
curl -H "X-API-Key: wsc_trial_xxxxxxxxxxxxxxxx" \
  "https://tob.wenshucha.com/api/v1/fulltext?q=不可抗力&province=北京市&pageSize=20"
POST /api/v1/fulltext(同一端点,JSON body 等价)
curl -X POST https://tob.wenshucha.com/api/v1/fulltext \
  -H "X-API-Key: wsc_trial_xxxxxxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "q": "不可抗力",
    "province": "北京市",
    "pageSize": 20
  }'

fulltext 翻页口径:pageSize 上限 50(超出按 50 处理并在 _meta.param_note 说明),page × pageSize ≤ 10000(pageSize=20 时最多到第 500 页); 越过窗口返回 window_exceeded: true + max_page,不是该条件下没有文书,请加 province / cause / court / 年份缩小范围后重新翻。 两个参数须为 ≥1 的整数,写错会返回 400 bad_param 而非空结果。 判断是否还有下一页请用 raw_count(去重前条数),不要用 count

fulltext 检索口径(读数前必看):四条口径响应里都有对应说明字段,程序对接请直接读它们,不要按字面假设。

  • total 是封顶值,不是真实命中数:命中过多时 total 恒为 10000 并置 total_is_capped: true(见 _meta.total_note),应读作「10000+」;要精确计数请加 province / cause / court / 年份缩小范围。
  • q 是分词 OR 匹配,按人名检索会串味:中文姓名 / 机构名被切分后 OR 匹配,q=祖国宏 会命中「尚祖国、陈宏哲」这类拆字组合, 多数结果并不含该姓名(见 _meta.match_note)。需精确到人请加 party=<姓名>——但它只在本页结果内做精确子串过滤,total 仍是上游未过滤口径,本页余 0 条不代表全库无此人
  • 排序口径随「有没有 q」而变:带 q 时按相关度打分排序,不带 q 的纯条件过滤则按裁判日期倒序。 本次实际口径见顶层 sort 字段(relevance / judgement_date_desc)与 _meta.sort_note,别写死假设。
  • 结果已去重:同一文书跨 dataset 分片存有多份,cases 已按案号 + 标题归一(见 _meta.dedup),故 count(去重后)常小于 raw_count(去重前)。
  • 部分文书正文为空,且缺失率随关键词剧烈波动:ES 侧一部分文书未入正文。 2026-07-21 用 5 个关键词各取一页共 230 条实测,整体缺失约 12%,但分布极不均匀——q=利息 一页 37 条里 27 条空正文(73%),而 劳动争议 / 离婚 / 工伤 / 交通事故 各 50 条则一条不缺。别按一个全局比例做预算,请按每次响应实测。每条附 body_text_len(正文去首尾空白后的字符数)与 has_full_text,顶层 full_text_missing 为本页空正文条数(另见 _meta.full_text_note)——需要「必须带全文」的样本请据此过滤。 注意正文短不等于缺失(调解书 / 裁定书本就短),故仅空正文才判 has_full_text=false,长度阈值由你自定。
GET /api/v1/fulltext(按人精确检索:q 拉候选 + party 页内过滤)
curl -H "X-API-Key: wsc_trial_xxxxxxxxxxxxxxxx" \
  "https://tob.wenshucha.com/api/v1/fulltext?q=祖国宏&party=祖国宏&pageSize=50"
# 响应含 party_filtered_out(本页滤掉几条)与 _meta.party_note

cases/search 翻页口径:同样支持 page + pageSize(上限 50,默认 20),响应回带 count / page / pageSize / max_page;越过 max_page 返回 page_exceeded: true,非法值返回 400 bad_param。注意本端点单次最多取按裁判日期倒序的 最近 2000 条作为统计与翻页样本:命中过多时 stats.n_cases 恒为 2000 并置 n_cases_is_capped: true,该值应读作「2000+」而不是真实命中数, 想要更有代表性的统计请用 province / reason / term_reason / 年份缩小范围。

GET /api/v1/stats?dimension=term_reason
curl -H "X-API-Key: wsc_trial_xxxxxxxxxxxxxxxx" \
  "https://tob.wenshucha.com/api/v1/stats?dimension=term_reason"
02 / MCP

接进 Claude Desktop / Cursor / Claude Code

MCP server 走 stdio,把检索能力变成 AI 助手的工具。 安装一次,模型自动看到 search_cases /get_case /case_stats 三个 tool。

安装(trial 阶段:git clone)
git clone https://github.com/wenshucha/wenshucha-mcp ~/wenshucha-mcp
cd ~/wenshucha-mcp && npm install
Claude Desktop · ~/Library/Application Support/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "wenshucha": {
      "command": "node",
      "args": ["/Users/<you>/wenshucha-mcp/bin/wenshucha-mcp.mjs"],
      "env": { "WENSHUCHA_API_KEY": "wsc_trial_xxxxxxxxxxxxxxxx" }
    }
  }
}
Cursor · ~/.cursor/mcp.json
{
  "mcpServers": {
    "wenshucha": {
      "command": "node",
      "args": ["/Users/<you>/wenshucha-mcp/bin/wenshucha-mcp.mjs"],
      "env": { "WENSHUCHA_API_KEY": "wsc_trial_xxxxxxxxxxxxxxxx" }
    }
  }
}
Claude Code · 一行加入
claude mcp add wenshucha \
  --env WENSHUCHA_API_KEY=wsc_trial_xxxxxxxxxxxxxxxx \
  -- node /Users/<you>/wenshucha-mcp/bin/wenshucha-mcp.mjs
03 / 端点

完整端点

REST,JSON in / out。所有写操作均无,只读。

MethodPathAuth说明
GET/api/v1/health(无)服务健康检查。
POST/api/v1/cases/searchX-API-Key混合检索:案情文本 + 结构化字段 → Top 20 类案 + 金额分位 + 胜诉率 + 关键裁判因素。
GET / POST/api/v1/fulltextX-API-Key全库判决全文检索(1.6 亿+ 裁判文书):关键词全文检索,命中判决书正文并高亮,可叠加 province / cause / court / yearFrom / yearTo,返回含 body_text 判决全文。GET 走 query string,POST 走同名字段的 JSON body。
GET/api/v1/cases/{doc_id}X-API-Key依 doc_id 取单条判决详情。两种 doc_id 都认:cases/search 返回的样本库 id(32 位十六进制),以及 fulltext 返回的全量库 id(形如 2025:13fdca…,带分片前缀)。全量库条目当前 source_url 为 null,用 case_no + court + judgement_date 回裁判文书网自行核对。
GET/api/v1/stats?dimension=provinceX-API-Key按维度切片聚合(省份 / 解雇原因 / 工龄分桶)。

只统计、不生成

每个数字都来自真实判决统计,不是模型推测。每条结果挂中国裁判文书网原文链接。

结构化字段已抽好

工龄、月薪、解雇原因、判付金额、胜负 —— 规则引擎抽取,直接可查询,不用自己再清洗。

常见问题

数据集多大?
Beta 阶段开放 110 万+ 结构化劳动争议判决(覆盖 1985 至今,持续同步更新)。正式 GA 开放 1.5 亿+ 全量裁判文书 + 法规,数据有渠道实时跟进,客户需求即可对齐到最新。
返回的数据怎么验证?
分两条线,口径不同,请按端点看:cases/search(劳动争议样本库)每条都带 source_url,是逐案唯一的中国裁判文书网原文链接,可直接回链验证、引用至代理意见;fulltext / cases/{doc_id}(1.6 亿全量库)当前 source_url 返回 null——原文链接尚未随全量库入库,我们不做拼接伪造,请用 case_no + court + judgement_date 三字段回裁判文书网自行核对。补齐原文链接是全量库在做的事项。
限流?
默认 60 次 / 分钟 per key。超出回 429 + Retry-After header。正式合作可调高。
key 多久有效?
试用 key 90 天。正式合作签约后换长期 key。
数据合规?
全部来自中国裁判文书网公开判决书,无个人隐私字段(姓名已做脱敏处理)。

申请试用 key

发邮件告诉我们团队名称、用途、预计调用量。一个工作日内回复 key + 接入支持。

发邮件申请
或拨商务电话 131-6872-7779 · 文书查 · 深圳星谱网络科技有限公司