qhrisk-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@qhrisk-mcpsimplify this plan and tell me which steps are unnecessary"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
青禾风控 · QingheRisk
奴,这个世界是有的,这便是青禾风控为什么诞生,为什么要自然青禾派,因为符合社会进步之理想。可以降低很多合规方面的无用功,减法在有些地方比加法更重要。
给一份计划,它告诉你哪些环节是必需的、哪些是从目标推不出来的无用功。
它做的是减法。
绝大多数流程工具在做加法:列出所有该做的事,逐条优化、逐条把控。加法做多了,流程本身就成了最大的成本 —— 而里面一半以上的环节,跟目标能不能达成没有一点关系。
青禾风控只问两个问题:
它服务于谁? 去掉它,结果会变吗?
答不上来的,就是无用功 —— 与它花多少钱无关。
CLI 叫 qhrisk,MCP 端点叫 qhrisk-mcp。零第三方依赖,Python 3.9+。
一、核心判据:追溯不到的,就是无用功
这是全部设计的支点,也是它跟"成本收益分析"分道扬镳的地方。
一件事该不该做,不看它划不划算,看它能不能从目标推导出来。
给标准品供应商做年度审核,花 5000,能避免 8000 的期望损失。
成本收益视角 → 净值 +3000 → 做
必要性视角 → 这家供应商提供标准品、随时可换、单价极低,
这个审核防不住任何真会发生的事 → 追溯不到真实需要 → 不做即使它很便宜,也不做。 因为它是无用功,不是一笔便宜的投资。
做法是必要性追溯:每个环节都必须回答两件事
问题 | 答案 |
它服务于谁? |
|
去掉它会怎样? | 没有差别 / 会让目标延后 N 天 / 会多花钱 / 会降低质量 / 可能出事 |
然后是一个不动点迭代:从目标出发,反复标记「有真实目的」的环节。 迭代结束还没被标记的,就是无用功。
Related MCP server: brain-trust
二、它自动抓到三件人力审不出来的事
这才是这个算法真正的价值。下面三种断法,逐条人工审永远审不出来 —— 因为每一环单独看都很合理。
1. 传递性
A 为 B 服务,B 为 C 服务,而 C 连不到目标 —— A、B、C 全是无用功。
周会纪要的格式规范 → 服务于「周会纪要」 → 服务于「每周项目周会」 → 服务于谁?
↑ 每一环单独看都说得通,只有把整条链拉直才看得出来2. 环
A 存在的理由是 B,B 存在的理由是 A。彼此成为对方存在的理由。
「每周项目周会」 ↔ 「周会纪要的编写与归档」
一个说:开会是为了产出纪要
另一个说:写纪要,是为了给周会留痕两边单独看都成立。放在一起看,它们是彼此的理由,谁也没有连着目标。迭代到不动点,两个都永远不会被标记为「有目的」。
3. 断链
服务于一个根本不存在的东西:早就取消的流程、已经解散的委员会、某个离职同事当年定的规矩。
「按旧版产品线口径填报月度预测表」
→ 服务于「产品委员会月度评审」
→ 那个委员会 2025 年 11 月就撤销了,表格还在按月填三、五类结论
结论 | 含义 |
必需 | 连得到目标、去掉确实有差别、没有更轻的做法 —— 这是最短的链条 |
判为无用功 | 追溯不到目标(并说明是哪一种断法),或去掉确实没差别 |
可简化 | 它是必需的,但有更轻的做法 —— 不是不做,是换个做法 |
待厘清 | 说不清它服务于谁 —— 先搞清它当初为谁存在,再判 |
— | 自检未通过则不出结论,先把计划修好 |
「待厘清」单独成一类很重要:说不出服务于谁,不等于它没用, 只说明当年那个需求已经没人记得了。
四、一段真实输出
qhrisk simplify examples/01_product_launch/plan.json# 精简方案:把新一代 BMS 模组推向首个付费客户
## 精简账
| 项 | 数值 |
| --- | --- |
| 环节总数 | 12 |
| 必需 | 5 |
| **可以停下来** | **5** |
| 其中追溯不到目标的 | 4 |
| 可简化 | 1 |
| 待厘清 | 1 |
| 最长链条 | 3 环 |
| 无用功占用的时间 | 2.5 人天 |
## 可以停下来(5 项)
### 1. 按旧版产品线口径填报月度预测表 `I-13`
- 它说它服务于:一个不存在的环节 `I-99`
- 为什么是无用功:**它服务的那件事根本不存在**
- 去掉它:没有差别 —— 产品委员会已于 2025 年 11 月撤销,但表格仍在按原流程逐月填报
### 2. 每周项目周会(8 人) `I-10`
- 它说它服务于:周会纪要的编写与归档
- 为什么是无用功:**彼此成为对方存在的理由**
- 去掉它:没有差别 —— 逐条核对了过去 8 周的周会记录:没有改变过任何一个决定
### 5. 维护周会纪要的格式规范 `I-12`
- 它说它服务于:周会纪要的编写与归档
- 为什么是无用功:**它服务的那件事本身是无用功**
- 去掉它:没有差别 —— 「格式统一」这件事从未被任何读者提起过,因为没有人读
## 可简化(1 项)—— 不是不做,是换个更轻的做法
### 1. 每日项目进度日报(8 人逐日填写) `I-15`
- 更轻的做法:**改成只在偏离计划时更新一次,常规情况不动**(省 6 天)
## 必需(5 项)—— 这是最短的链条
1. **完成可演示样机** `I-01` 第 1 环 —— 去掉会让目标延后 60 天
2. **通过目标客户的现场测试** `I-02` 第 1 环 —— 可能出事
3. **与客户签署采购合同** `I-03` 第 1 环 —— 可能出事
4. **整理现场测试所需的工况数据包** `I-04` 第 2 环 —— 去掉会让目标延后 10 天
5. **取得客户现场的环境参数** `I-05` 第 3 环 —— 去掉会让目标延后 5 天
## 最长的一条链
目标 → 通过目标客户的现场测试 `I-02` → 整理现场测试所需的工况数据包 `I-04` → 取得客户现场的环境参数 `I-05`
> 链越长,中间长出无用功的机会越多 —— 因为**每一环单独看都说得通**。注意「必需」那 5 项:它们当中没有一项是审批、汇报、会议。 最短的链条上通常只有真正产出结果的动作。
五、成本不是判据
这一点值得单独说,因为它是这个工具和"降本增效"之间的分界线。
"cost": { "days": 0.2, "people": 1 }cost 字段只用来排序 —— 它决定「可以停下来」那张清单里谁排前面,
以及最后算一笔"这些无用功一共占了 2.5 人天"。
它不参与判定。所以:
一个只花 5 分钟的盖章审批,只要追溯不到目标,照样判无用功;
一个要花 200 人天的必需环节,只要真的连得到目标,照样保留。
qhrisk 的判定里没有任何"阈值"、"划算度"、"ROI"。因为它判的不是值不值,是必不必需。
六、让系统会学习的那一环
判定完了只算一半。真正让它越用越准的是事后验证:
qhrisk review I-10 --outcome stood --note "周会停了,没有任何人提意见" --ledger decisions.json
qhrisk mistakes --ledger decisions.json两种错法,代价完全不同:
## 虚删(1 项)—— 删错了,它其实有用
> 这是危险的错。省下的那点时间,可能换来一次事故。
- **出差申请单的纸质双签** `I-14`:停掉后,财务在季度审计时被问起经手凭证,答不上来
## 虚留(1 项)—— 留下了,但一次没用上
> 这是**沉默的**错。没有任何机制会提醒你「你保留的这件事,一年里一次都没起过作用」
—— 因为它什么都没做错,只是没用。
- **完成可演示样机** `I-01` 白占 20 天 × 3 人「虚留」是这套东西里最不容易被替代的部分。 因为组织里所有报警机制都在报"少了什么",没有一条会报"多了什么"。 被删掉的环节会有人喊疼,被保留的废环节永远安静。
七、改一处,判定就会翻转
链条上任何一个环节的 serves 变了,下游的判定都可能跟着变:
qhrisk recheck changed-plan.json --ledger decisions.json**判定已翻转(1 条)**:
[P-05] 总经理审批(金额 1 万元以下) —— 判为无用功 → 必需这正是人工审查追不上的地方:改一个"它服务于谁",可能让三个环节从必需变成无用功。
recheck 不改变任何东西,它只是让"计划已经和台账对不上了"这件事没法继续不被看见。
八、模式库:一个可以当场问出口的问题
追溯能算出"它连不到目标",但算不出"它为什么会长成这样"。模式库补这一块:
qhrisk patterns show patterns/common.json## 为审批而审批的节点 `W-APPROVAL`
- 为什么通常是无用功:审批的价值在于「有人真的会不同意」。
如果这个节点历史上从未驳回过任何一次,它承担的角色就退化成了盖章。
- **可以问一句:这个审批节点上次驳回是什么时候?如果从来没有,它挡住的到底是什么?**
- 更轻的做法:改成事后抽查;或把阈值提到真正需要人判断的量级自带的 10 条覆盖:没有决策权的评审会、只做同步的例会、为留痕而留痕的文档、 为审批而审批的节点、不触发动作的检查、层层转发的汇报、重复录入、 没人看的看板、与目标无关的培训、从不检索的归档。
那些"可以问一句"才是重点 —— 它们不需要任何数据,任何一个参与者当场就能回答。 也是这东西最容易被用起来的地方:不用先部署一套系统,在会上念一句就行。
模式命中不改变判定。 命中了也可能确实是必需的(比如一次真有决策权的评审会), 它只提供一个追问的角度。
九、三十秒上手
git clone https://github.com/zheng-qinghe/qinghe-risk.git
cd qinghe-risk && pip install -e .
qhrisk check examples/01_product_launch/plan.json # 计划能不能判
qhrisk simplify examples/01_product_launch/plan.json # 跑必要性追溯
bash examples/demo.sh # 完整闭环一份计划长这样:
{
"id": "P-2026-09-19-01",
"title": "把新一代 BMS 模组推向首个付费客户",
"success_criteria": "签下一份金额不低于 30 万元、且预付款到账的首份采购合同",
"horizon_days": 90,
"items": [
{"id": "I-01", "title": "完成可演示样机", "kind": "步骤",
"serves": "@goal", // 它服务于谁
"purpose": "没有样机就无法进入客户的现场测试环节",
"if_removed": {"effect": "delay_days", "value": 60, // 去掉会怎样
"detail": "无法进入现场测试,整个目标往后推两个月"},
"cost": {"days": 20, "people": 3}}, // 只用来排序
]
}if_removed.effect 只有五种取值:none(没有差别)、delay_days、cost、
quality、incident。回答 none 就是在承认它是无用功 —— 但那也比不回答好:
很多冗余环节之所以一直在做,就是因为从来没有人问过"去掉会怎样"。
十、雇进任何项目
MCP 工具(跨宿主)
pip install -e . && qhrisk-mcp工具 | 干什么 |
| 计划能不能判 |
| 核心:跑必要性追溯,出精简方案 |
| 模式库(含那些可当场问出口的问题) |
| 判定台账 |
| 对账:每条判定是否都有依据 |
| 回看:删对了没 / 起过作用没 |
| 两种错法:虚删与虚留 |
| 重算,看判定有没有翻转 |
岗位说明书
bash install/hire.sh /path/to/your-project # 投递角色卡 + 登记 MCP
bash install/hire.sh --undo /path/to/your-project # 撤回十一、它不做什么
不算性价比。 判定里没有阈值、没有 ROI、没有"划算度"。 它判的是必不必需 —— 一件无用功再便宜也不做,一件必需的事再贵也做。
不替你定目标。
success_criteria必须由你来写。它决定了什么算"连得到目标", 这是价值观问题,不是技术问题。不自动执行删除。 它出判定,删不删由人决定。
不列"待优化清单"。 那只是把加法换个说法。它给的是明确的五选一。
不给"流程健康度评分"。 一个 0–100 的分看起来精确,实际无法追问。
不用 LLM 判定。 追溯链是图上的可达性问题,可以被精确计算 —— 交给一个不可复现的东西去做,等于放弃了"可追问"。
十二、血缘
每一条设计都来自一个具体的失效:
失效 | 对应设计 |
「这件事一直都这么做」 | 从目标做追溯,连不上的就是无用功 |
「周会要开,因为要出纪要;纪要要写,因为要留痕」 | 环检测 —— 互为理由的两个环节自动出局 |
「产品委员会要的表,先填着吧」 | 断链检测 —— 服务于不存在的东西 |
「这个审批流程很规范」 | 判据不是"听起来有没有道理",是"它真的改变过结果吗" |
「这个表才花五分钟,留着吧」 | 成本不是判据,只用来排序 |
「删了万一是错的呢」 | 虚删清单 —— 把删错的代价摊开看 |
「多留一道总是好的」 | 虚留清单 —— 最沉默的那种错 |
「流程更新了,但没人回头看」 |
|
配套材料:docs/design.md(设计说明)· prompts/(分阶段指令)·
patterns/common.json(无用功模式库)· examples/(两份真实计划,四种断法各演示一遍)。
十三、许可
Apache-2.0。拿去改,换成你自己的目标与环节 —— 但请保留两样:
每个环节的 serves,和它 if_removed 的答案。
追不到目标的事,和没问过"去掉会怎样"的事,都不该继续存在。
Available Tools
8 toolsqhrisk_ledger_checkC
台账对账:每条判定是否记着「它解决什么问题」和「去掉会怎样」。
| Name | Required | Description | Default |
|---|---|---|---|
| ledger | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of explaining behavior. It describes what the tool checks but does not disclose whether it is read-only, whether it has side effects, what its output format is, or how it handles invalid ledger input. Some behavior is implied by '对账', but not explicitly stated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one concise sentence and front-loads the key concept '台账对账'. There is no verbosity or wasted content, though the brevity contributes to missing contextual details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations, no output schema, and low schema coverage, the description needs to provide substantially more context. It omits input format, expected output/return values, usage guidance, and behavioral side effects, making it only minimally usable for selecting and invoking the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not explain the 'ledger' parameter beyond implying it contains judgments. It gives no format, structure, or expected content details, leaving the agent to guess what the ledger string should look like.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('对账' / reconcile) and resource ('台账' / ledger), and gives concrete check criteria: whether each judgment records what problem it solves and what happens if removed. It distinguishes itself from qhrisk_ledger_show by being a check/validation action rather than a display action, though it does not explicitly name the sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use this tool: when you need to audit ledger judgments against the stated criteria. However, it provides no explicit guidance about when not to use it, no alternative suggestions, and no context comparing it with qhrisk_review or qhrisk_recheck.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
qhrisk_ledger_showC
查看判定台账:每个环节被留下、删掉还是简化了,以及回看情况。
| Name | Required | Description | Default |
|---|---|---|---|
| md | No | ||
| ledger | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It implies a read-only 'view' operation, but it does not explicitly state whether the tool has side effects, requires special permissions, or how the ledger content is returned. For a tool with no annotation safety net, this is thin behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one short, front-loaded sentence with no filler; it states the resource and key content efficiently. It is appropriately concise, but it sacrifices necessary parameter and usage details, so it is slightly under-specified rather than optimally informative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter tool with no output schema and no annotations, the description is too sparse to be complete. An agent cannot determine valid `ledger` values, what `md` toggles, or how this view differs from qhrisk_ledger_check. The core purpose is clear, but invocation-critical context is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not explain either parameter. The required string `ledger` is only inferable as the ledger to view, while the optional boolean `md` is completely opaque. The description fails to compensate for the schema's lack of parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a concrete verb, 查看 ('view'), with a specific resource, 判定台账 ('judgment ledger'), and enumerates what the ledger shows: whether each step was kept, deleted, or simplified, and its review status. This makes the tool's function clear and differentiates it from action-oriented siblings like qhrisk_simplify, though it does not explicitly contrast itself with the similarly named qhrisk_ledger_check.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to use this tool versus qhrisk_ledger_check, qhrisk_review, or qhrisk_patterns_show. The description does not state prerequisites, exclusions, or conditions that would route an agent to this tool over a sibling. The only usage signal is the implicit 'view' verb.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
qhrisk_mistakesD
两种错法:虚删(判无用功删掉、后来发现它其实有用)与虚留(判必需保留、后来一次没用上)。后者是最沉默的错误 —— 没有任何机制会提醒你「你保留的这件事从没起过作用」。
| Name | Required | Description | Default |
|---|---|---|---|
| ledger | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full responsibility for disclosing behavior. It only discusses the concept of silent mistakes and says nothing about side effects, return values, how the ledger is processed, or whether the operation is a read, analysis, or report.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The prose is short, front-loaded, and stylistically sharp, with no filler sentences. However, the compactness comes at the expense of operational information, so this is closer to under-specification than to effective tool-description concision.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations, no output schema, and a required `ledger` parameter, the description should explain the tool's role in the risk-review workflow and the expected ledger input. It does neither, so the agent has no complete basis for selecting or invoking this tool rather than siblings like qhrisk_review or qhrisk_ledger_check.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single required parameter `ledger` has zero schema description coverage, and the tool description never mentions it. An agent cannot determine what format or content is expected for `ledger` or how it relates to the two mistake types.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description defines '虚删' and '虚留' as mistake categories but never states an action or resource: it does not say that the tool checks, classifies, or reports mistakes in a ledger. It resembles a topical gloss on the name 'qhrisk_mistakes' rather than an operational definition, and it does not distinguish itself from siblings like qhrisk_ledger_check or qhrisk_review.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to call this tool or when to prefer alternatives. The text explains an error taxonomy but provides no invocation condition, workflow context, or criteria for choosing this tool over the sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
qhrisk_patterns_showC
展示无用功模式库:每类冗余环节长什么样、为什么它通常是无用功、以及一个可以当场问出口的自检问题。
| Name | Required | Description | Default |
|---|---|---|---|
| patterns | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the full behavioral burden. It describes what content is displayed but does not state whether this is read-only, whether it has side effects, what the output format is, or whether any authentication is required. '展示' implies a safe display operation, but that is not made explicit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one compact, front-loaded sentence that efficiently conveys the tool's purpose and the three content categories. The bolded self-check question feature is a useful, well-structured detail without wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite the simple interface, the required parameter is completely unspecified, making the tool effectively uncallable without guessing. No output schema exists to compensate, and no usage context is supplied. The description covers the tool's output content but omits the input contract entirely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single required parameter 'patterns' has 0% schema description coverage, and the description says nothing about what value should be passed or what format it expects. An agent has no way to know whether 'patterns' is a category name, a filter, a list, or a free-text query. This is a critical gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies a specific verb and resource: '展示无用功模式库' (display the useless-work pattern library), and breaks down the content shown. It is distinct enough from siblings like qhrisk_simplify or qhrisk_review, although it does not explicitly differentiate itself by name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus any of its seven siblings. No exclusions, prerequisites, or context are provided, so an agent must infer when this display tool is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
qhrisk_plan_checkB
计划自检:目标判据是否写清、每个环节是否都回答了「它服务于谁」和「去掉它会怎样」。没通过自检的计划,判出来的结论不可信。
| Name | Required | Description | Default |
|---|---|---|---|
| plan | Yes | 计划 JSON 的路径 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It conveys the check's purpose and a warning about unreliable conclusions, but it does not disclose whether the tool is read-only, what it returns, or whether it modifies the input plan. Key operational traits are missing, leaving the agent to guess about side effects and output behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, readable sentence. The main action and resource are front-loaded ('计划自检'), followed by the specific criteria and a consequence. Every clause carries meaning, and there is no redundant or filler wording.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With one parameter, no output schema, and no annotations, the description must explain both invocation and interpretation. It explains the check criteria and warns about consequences, but it never states what the tool returns (e.g., pass/fail, issue list) or whether the plan file is altered. For an agent to correctly call and use the tool, this missing return-value and side-effect information is a significant gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema fully documents the single parameter 'plan' as '计划 JSON 的路径' (path of plan JSON), so schema coverage is 100%. The description adds no extra parameter-level details, which aligns with the baseline score of 3 when the schema already handles parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('自检' / self-check) and resource ('计划' / plan), and enumerates concrete check criteria: whether target criteria are clearly written, and whether each step answers 'who it serves' and 'what would happen without it'. This distinguishes it from sibling tools like qhrisk_review or qhrisk_mistakes, which appear to serve different review or error-analysis purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this tool should be used before relying on a plan, by warning that plans failing the self-check yield untrustworthy conclusions. However, it does not explicitly state when to use this tool versus siblings such as qhrisk_review, nor does it provide when-not-to-use guidance. The usage context is present but left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
qhrisk_recheckB
复核:拿当前计划重算一遍,点名哪些判定翻转了 —— 改一个「它服务于谁」,可能让下游三个环节从必需变成无用功。
| Name | Required | Description | Default |
|---|---|---|---|
| plan | Yes | ||
| today | No | ||
| ledger | Yes | ||
| patterns | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral disclosure burden. It does disclose the core behavior—recompute the current plan and point out flipped determinations—which is genuinely informative. However, it does not explain how the required ledger is used, whether anything is mutated, or what kind of output the agent should expect.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loads the main action ('复核:拿当前计划重算一遍'). The second clause adds a useful impact example rather than filler. It is slightly cryptic, but every part earns its place in a short space.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given four parameters, two required, no annotations, and no output schema, this description is not sufficient for reliable invocation. It leaves the role of the ledger, optional inputs, output format, and relationship to sibling tools unexplained, so an agent cannot fully determine correct usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, but it only loosely maps to 'plan' via '当前计划'. The required 'ledger' parameter is completely unexplained, and optional parameters 'today' and 'patterns' receive no semantic clarification whatsoever.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action: re-run the current plan and identify which judgments flipped. This is a clear verb-and-resource statement, not a tautology. However, it does not distinguish itself from sibling tools such as qhrisk_plan_check, qhrisk_review, or qhrisk_ledger_check, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The example about changing '它服务于谁' implies a usage context: after modifying the served party, use recheck to see downstream determinations flip. But there is no explicit when-to-use or when-not-to-use guidance, and no alternative tools are named, so the agent must infer the trigger scenario.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
qhrisk_reviewC
回看一个环节:删掉/简化的填 stood(站住了)或 broke(出问题了);保留的填 used(起过作用)或 unused(一次没用上)。
| Name | Required | Description | Default |
|---|---|---|---|
| by | No | ||
| note | No | ||
| ledger | Yes | ||
| item_id | Yes | ||
| outcome | Yes | ||
| plan_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are absent, so the description carries the full burden of behavioral disclosure. It does add useful semantics by defining what each outcome value means (stood=held up, broke=had problems, used=served a purpose, unused=never used). However, it never discloses what the call actually does — whether it writes to the ledger, mutates the plan, requires prior state, or what happens on success/failure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact sentence that front-loads the resource ('回看一个环节') and then efficiently maps the two situational cases to their outcome values. Every clause earns its place and there is no filler. It is slightly instruction-like rather than declarative, but the density is good.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 6-parameter tool with no annotations, no output schema, and 0% parameter coverage, the description is under-equipped. It explains only the outcome vocabulary and leaves critical context missing: what ledger/item_id reference, whether the call persists data, how this step fits the overall review workflow, and what the response looks like.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for all 6 parameters. It enriches only the 'outcome' parameter by defining its four allowed values and their meanings — valuable, since the schema has no enums. But ledger, item_id, plan_id, by, and note are entirely unexplained in both schema and description, leaving most of the input surface undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('回看一个环节' — review a step) and defines the exact outcome vocabulary (stood/broke/used/unused) that makes this tool's function concrete. It is distinct from the sibling tools, which check plans, simplify, show patterns/ledgers, or recheck — recording a review outcome for a single step is a different operation. It loses a point because it never explicitly names what the tool does beyond 'review' (e.g., record into the ledger).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or when-not-to-use guidance is given, and no sibling alternatives are mentioned. The description only implies a workflow context: after a step was deleted/simplified vs kept, you fill in its outcome. An agent must infer that this tool is used during a post-simplification review pass; there is no routing information relative to qhrisk_simplify, qhrisk_ledger_check, or qhrisk_recheck.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
qhrisk_simplifyC
核心工具:追溯每个环节的必要性,产出精简方案 —— 哪些环节追溯不到目标(无用功)、哪些去掉确实没差别、哪些可以换成更轻的做法、哪些是真正必需的最短链条。判据只有一条:它连不连得到目标。成本只用来排序。
| Name | Required | Description | Default |
|---|---|---|---|
| by | No | ||
| plan | Yes | ||
| today | No | ||
| ledger | No | 可选:把判定记进这份台账 | |
| patterns | No | 无用功模式库路径;省略则不做模式匹配 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
没有 annotations,描述承担了全部行为披露责任。它说明了分析逻辑和产出类别,但没有披露是否有副作用、是否写入 ledger、返回什么、是否只读。ledger 参数的存在暗示可能记录判定结果,但描述本身没有提及这一行为。
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
描述通过破折号列出四类结果,并用一句话给出判据,结构清晰且没有空话。整体长度适中,信息密度高,但开头的'核心工具'标注更多是定位而非功能信息,略可精简。
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
在无输出 schema、无 annotations、5 个参数且仅有 40% 覆盖率的条件下,描述没有足够支撑安全调用。缺少返回值说明、plan 的输入结构、ledger 写入副作用以及 pattern 匹配的触发条件,导致调用者仍需外部知识才能正确使用。
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
schema 描述覆盖率只有 40%,而描述没有按参数名解释含义。它引入了'目标'和'成本'等概念,但并未映射到 plan、by、today 等参数;唯一的必填参数 plan 的内容和格式完全没有被解释。
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
描述明确了核心动作:追溯每个环节的必要性并产出精简方案,并列出了四类具体输出(无用功、去掉无差别、换更轻做法、必需最短链)。它不是同义反复,且能被一个具体动词和资源所界定;不过它没有明确对比兄弟工具,因此不是满分。
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
描述隐含了使用时机:当需要精简方案时,用'是否连得到目标'作为唯一判据,成本只用于排序。但它没有显式说明何时不该用、也没有点名替代工具(如 qhrisk_plan_check 或 qhrisk_recheck),使用边界靠推断。
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
8 tool updates
v3.0.0- First observed
qhrisk_ledger_check - First observed
qhrisk_ledger_show - First observed
qhrisk_mistakes - First observed
qhrisk_patterns_show - First observed
qhrisk_plan_check - First observed
qhrisk_recheck - First observed
qhrisk_review - First observed
qhrisk_simplify
TDQS
Scored across 8 tools
Each tool maps to a distinct step: plan self-check, simplification, pattern reference, ledger viewing/validation, outcome review, error taxonomy, and recheck. The only mild ambiguity is between qhrisk_plan_check and qhrisk_simplify, and between qhrisk_patterns_show and qhrisk_mistakes, but their descriptions are enough to separate them.
The qhrisk_ prefix and lowercase snake_case are consistent, but the verb/noun ordering is not: plan_check, patterns_show, and ledger_* follow object_verb, while simplify, review, and recheck are bare verbs and mistakes is a bare noun. This is readable but not a uniform pattern.
Eight tools is well-scoped for the stated workflow of plan simplification, ledger reconciliation, and outcome review. Each tool appears to serve a real stage in the process rather than padding the surface.
The set covers the core loop: check the plan, simplify it, inspect and validate the ledger, review outcomes, and recompute flipped judgments. Minor gaps exist around explicit plan/ledger editing, but the main workflow has no hard dead ends.
Maintenance
Related MCP Connectors
Goal and task planning MCP for Codex and AI agents, with evidence-backed completion.
Durable, user-controlled goals and governed plans for AI agents.
Turns vague automation requests into tool stacks, prompts, QA checks, and human boundaries.
Deterministic operations reconciliation for AI agents: COMPLETE, INCOMPLETE, or NEEDS_REVIEW.
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables structured, step-by-step problem-solving with dynamic revision and branching capabilities. Supports breaking down complex problems into manageable steps while allowing course corrections and alternative reasoning paths.1122,457 npm1-
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to ask questions and review planning documents by connecting to OpenAI's GPT-4. Provides context-aware question answering and multi-level plan analysis with structured feedback including strengths, weaknesses, and suggestions.1,680 npm3MIT
- AlicenseBqualityCmaintenanceEnables AI agents to verify technical claims against supplied evidence, identify unsupported assumptions and contradictions, and recommend the smallest next check before acting.5MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to decompose high-level goals into structured task plan DAGs with dependencies, acceptance criteria, and quality gates, and to validate or export those plans in multiple formats.MIT