Skip to main content
Glama

IELTS Review Lab · 雅思复盘与刻意练习

做完题之后的私教。 把“看答案”变成“知道为什么错、下次怎么不错”。

这里不出新题,也不内置任何真题。你在纸质剑桥书、刷题网站或 App 上做完一篇阅读或一个 Part 听力,把原文(或文稿)、题目、答案册和自己的答案交进来:

  1. 确定性判题:字数要求、单复数、拼写、判断题标签体系,全部由规则判定,可测试、有出处。

  2. 只依据原文的讲解:定位句、同义替换对照、为什么答案册对、你为什么错。模型给的引用必须逐字出现在你的原文里,否则标“讲解不可靠”。

  3. 归因:固定错因表,规则能定的规则定,其余你点、模型补。

  4. 刻意练习:错题按 1/3/7/14/30 天回来;看“同类错误复发率”是否在下降。

写作和口语是分步训练系统:小步骤反复练,反馈少而准,不代写。

所有内置示例均为原创,非真题。只使用你有权使用的材料;你的数据只存在你自己的电脑上。

两种用法,同一个引擎

网页版

本地 MCP 引擎

模型从哪来

你自己的 API key(DeepSeek 默认,兼容 OpenAI 格式的都行);没 key 也能判题、记错题,讲解用醒目标注的模拟反馈

你已经订阅的 AI(Claude 桌面版、Claude Code、Codex 等),不额外花钱

录入

粘贴 + 自动拆题;题集库 + 一行答案速记

直接把书页照片、App 截图拖进对话,宿主模型识别后交给引擎校验

数据

浏览器本地,可导出 / 恢复

本机文件夹(默认 ~/.ielts-review-lab),纯 JSON,可放进 git

两条路的判题、计词、换算、引用校验、错因表、复习排期是同一份代码(src/features/ielts/core/),任何外壳都绕不过去。

Related MCP server: maimemo

网页版

npm install
npm run dev

打开 http://localhost:5173/ielts。

  • 配置模型:设置页填服务商、API key、模型名。key 只存在你的浏览器里,不进仓库、不进构建产物;每次发送前会弹窗显示将发送的全部内容。服务商不允许浏览器直连时,可以部署到 Vercel,用 /api/ielts/llm 同源中转(只转发、不记录,只接受注册过的模板)。

  • 录入只有三个框:原文(可选)、题目(可选)、答案。答案册和你自己的答案写在一个框里,对着答案册批改时怎么写就怎么贴:

    1 FALSE NG
    2 two weeks | two week
    3 B ✓
    4 C ✗ A

    题目框整段贴,Write TRUE, FALSE or NOT GIVEN、NO MORE THAN TWO WORDS 这些说明行会自动带给后面的题。同一篇存进题集库后,重做时载入,只补这次的答案。

  • 从你做题时的处境讲起:每道错题先点一下当时的情况(没找到定位词、首次经过答案句没认出、FALSE/NG 犹豫……),讲解按“题干在问什么 → 原文在哪、怎么找过去 → 句子拆开看 → 你为什么会这样答”展开,证据不够会直说“不确定”,然后可以接着追问。

  • 复盘报告:错题表、同义替换表(带替换机制和证据强度)、难词短语表,一键复制或下载 .md / .csv。

  • 做题方法:内置平行阅读法,可以改,也可以写自己的方法。开始复盘前先看到它;复盘时记方法的执行指标(首次经过答案句却没认出、无效回读),分析页看最早几篇和最近几篇比有没有变好。

  • 拼写听写:听力里因拼写、单复数、数字丢分的词集中重写,用浏览器自带的英文语音朗读(英音/澳音/美音、可调语速),同一套规则判。

  • 导入笔记 / 话题清单:写作知识卡片支持导入 Markdown 或 JSON 笔记;口语支持导入本季话题清单(纯文本或 JSON)。

  • 备份:设置页“导出全部学习数据”(不含 key),换电脑或清缓存后用“从导出文件恢复”。

本地 MCP 引擎(订阅路线)

不需要安装任何依赖,Node 20+ 即可:

node mcp/server.js

Claude 桌面版:在 claude_desktop_config.json 的 mcpServers 里加一项(路径换成你的克隆位置):

{
  "mcpServers": {
    "ielts-review-lab": {
      "command": "node",
      "args": ["/absolute/path/to/ielts-review-lab/mcp/server.js"],
      "env": { "IELTS_LAB_DATA": "/absolute/path/to/your/ielts-data" }
    }
  }
}

Claude Code:

claude mcp add ielts-review-lab -- node /absolute/path/to/ielts-review-lab/mcp/server.js

再把 skills/ielts-review/SKILL.md 放进宿主的技能目录(Claude Code 是 ~/.claude/skills/ielts-review/),模型就知道怎么带你复盘。

工具:

工具

作用

list_sets

已录过的题集,重做时复用

ingest_passage

录入原文、题目、答案册、你的答案(或一行速记)、听力反思;检查题号连续、标签合法、答案对得上,不合格退回

judge_set

唯一判对错的地方

submit_explanation

提交讲解;引用不在原文里、错因不在表里都会被退回

set_cause

你确认或改错因;之后模型讲解不会覆盖

weakness

错因分布 + 复发率

today / mark_reviewed

今天到期的错题(先不给答案)和重做结果

report

错题表、同义替换表、难词短语表(Markdown)

method

你的做题方法:查看、切换、保存自己改过的版本

用户没给原文或答案时,宿主模型可以按来源联网找,引擎会把它们标成“来自网络”,判题结果里提醒你核对答案册。

开发

npm run check

依次跑 lint、内核类型检查、单测(含 MCP 流程测试)、构建、插件导出一致性检查。端到端测试(无 key 跑通阅读、听力、写作路径):

npm run test:e2e

文档:

版权边界

仓库和任何服务端都不内置雅思官方或剑桥的真题、音频、文稿。你粘贴或拍照的材料只保存在你自己的设备上,原文默认不长期保存(错题库只留定位片段),可以一键删除。不做任何分享原文的功能。

许可

MIT。网页版的雅思模块最初写在 cshub 学习站里,这里拆出来独立维护。

Available Tools

10 tools
ingest_passageA

录入一篇阅读或一个听力 Part。最省事的给法:source + answer_sheet(答案册和用户答案写在一起,如 "1 FALSE NG 2 two weeks | two week 3 B ✓"),可再加 questions_text(整段题目)和 passage。用户没给原文/答案时,你可以按来源联网找,并把 passage_origin / key_origin 设为 web。也可以给结构化的 questions。可以只给 set_id 复用录过的同一篇。引擎检查题号连续、标签合法、答案对得上,有问题会退回。不判题。

NameRequiredDescriptionDefault
moduleYes
set_idNo复用已录题集(list_sets 返回的 id)。给了它就不用再传 passage/questions。
sourceNo来源标签,例如“剑 19 Test 2 Passage 1”。同一来源会作为题集复用。
passageNo英文原文或听力文稿,逐字。可以为空(讲解会标为无法校验)。
questionsNo
key_originNo答案册来自用户(默认)还是你联网找到的;web 的会在判题结果里标“未核对答案册”
answer_lineNo用户答案速记,例如 "1 TRUE 2 NG 3 museum"。和 user_answers 二选一。
reflectionsNo题号 → 用户做这题时的处境或反思(可中文),例如“首次经过答案句没认出”
answer_sheetNo答案册 + 用户答案,一行一题:题号 答案册 [用户答案]。支持 "|"、✓、✗、"(我: x)"、两个判断标签连写。
user_answersNo题号 → 用户答案,例如 {"1":"TRUE"}
passage_originNo原文来自用户(默认)还是你联网找到的
questions_textNo整段题目原文,说明行里的题型和字数要求会自动带给后面的题。
elapsed_minutesNo

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden, and it delivers meaningful behavior: the engine validates number continuity, legal tags, and answer-key consistency, and rejects bad input ("有问题会退回"). It also discloses that web-sourced keys get flagged as "未核对答案册" in results. It stops short of describing idempotency (what happens when the same source is ingested twice) or the shape of rejection feedback.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The simplest call shape is front-loaded, then progressively richer alternatives follow, which matches how an agent should decide. Sentences are dense but each carries a distinct fact; the middle clause about web lookup and *_origin flags is the only slightly tangled segment.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 13-parameter, nested, mutation-style ingestion tool with no annotations and no output schema, the description covers what an agent needs before calling: which combinations of inputs are valid, the validation-and-rejection contract, the provenance labeling, and the no-grading boundary. Minor parameters like reflections and elapsed_minutes are self-described in the schema and don't block correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is already 77%, so the baseline is high, yet the description still adds value: it shows the literal answer_sheet format with a worked example ("1 FALSE NG / 2 two weeks | two week / 3 B ✓") that the schema does not spell out, and it explains that questions_text propagates instruction/word-limit lines to subsequent questions. The remaining parameters (reflections, elapsed_minutes, answer_line vs user_answers) are left to the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening sentence gives a specific verb and resource ("录入一篇阅读或一个听力 Part" — ingest a reading passage or listening Part). The closing "不判题" (does not grade) implicitly separates it from judge_set, but no sibling is named outright, so the differentiation is by implication rather than explicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It enumerates the input pathways and the condition that selects each: source + answer_sheet is called the easiest path, questions_text and passage are optional add-ons, structured questions are an alternative, and set_id is the reuse path when the set already exists. It also specifies the condition for the web fallback ("用户没给原文/答案时"), so an agent can choose a route without guessing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

judge_setB

按确定性规则判一整篇(字数、单复数、拼写、判断题标签体系)。对错只能由这里判,不要自己判。返回每题结果和规则能确定的错因。

NameRequiredDescriptionDefault
review_idYes

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description carries the full burden. It usefully discloses that judging is deterministic and rule-bounded and that only rule-attributable error causes are returned, but says nothing about whether the result is persisted, whether the call is idempotent, or what happens if the passage was not ingested.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with the purpose and followed by the routing instruction and the return summary. No filler, though '一整篇' and the parenthetical rule list are a little compressed.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Without annotations or an output schema, the description does sketch the return (per-question results plus rule-determinable causes), but it leaves the sole input undocumented and the mutation semantics unclear, which is thin for a scoring/judging tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is one required parameter, review_id, with 0% schema description coverage, and the description never mentions it or explains where the id comes from. With schema coverage this low the description needed to compensate and does not.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (judge) and scope (an entire passage/set) plus the rule categories applied: word count, singular/plural, spelling, and true/false label conventions. The line '对错只能由这里判' implicitly distinguishes it from siblings like submit_explanation or set_cause, though no sibling is named.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly tells the agent to use this tool rather than judging correctness itself ('不要自己判'), which is a real routing directive. It does not state prerequisites such as whether the review must be ingested first or whether re-judging is allowed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_setsB

列出已录过的题集(同一本书同一篇只录一次),重做时把 set_id 传给 ingest_passage,只填这次的答案。

NameRequiredDescriptionDefault
moduleNo

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description still discloses useful behavior: deduplication by book/passage, the role of set_id in redoing a set, and the instruction to submit only current answers. It does not cover read-only safety, permissions, return format, or filtering behavior, leaving meaningful gaps for a tool with no annotation support.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single compact sentence with the main purpose front-loaded and no obvious filler. It is slightly dense because it mixes listing scope with downstream ingest_passage workflow, but it remains efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a low-complexity listing tool with no output schema and no annotations, the description covers the core purpose and redo flow adequately. It omits any explanation of the module parameter and does not describe the shape of the returned list beyond implying that set_id is available.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 0% description coverage and defines a single optional module enum, but the description never mentions module or explains whether it filters the listed sets. The enum values reading/listening are somewhat self-explanatory, but the description does not compensate for the missing schema documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: listing already-recorded question sets, with the uniqueness rule that the same book and passage are recorded only once. It also relates the output to ingest_passage for redoing a set, which helps distinguish the workflow, though it does not explicitly contrast list_sets with any sibling listing tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives a clear redo workflow: pass set_id to ingest_passage and fill in only this attempt's answers. However, it does not explicitly say when to use list_sets versus alternatives, nor does it state exclusions or prerequisites for calling it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mark_reviewedA

记录一道到期错题的重做结果:again(又错了)/ hard / good / easy,引擎据此排下一次复习日期。

NameRequiredDescriptionDefault
keyYestoday 返回的 key
gradeYes

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full disclosure burden, and it does deliver the key behavioral fact: the call mutates scheduling state, and the engine uses the grade to compute the next review date. It does not say whether regrading overwrites a prior result, whether the item must still be due, or what the response contains.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One tight sentence: action and target first, grade vocabulary in a compact inline list, consequence last. Nothing is redundant and nothing is padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter grading tool, the description covers the whole loop: due item from `today` → grade → rescheduling by the engine. The main gap is return behavior — with no output schema, an agent is not told whether the next review date comes back in the response.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 50%: `key` is documented in the schema as 'the key returned by today', and `grade` is an enum with no per-value description. The description partly compensates by glossing `again` as '又错了' and stating that the grade drives the next review date, but `hard`/`good`/`easy` remain unglossed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource: records the redo grade of a *due* wrong-answer item, and names the four accepted grades. The 'due' qualifier plus the schema note tying `key` to `today`'s output makes the relationship with the `today` sibling inferable, though it is not stated outright.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: it should be called after redoing an item that `today` surfaced. There is no explicit when-not guidance (e.g. what happens if the key is not due, or whether it can be re-called to overwrite a grade), and no sibling is named as an alternative.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

methodB

用户的做题方法(例如平行阅读法)。复盘前先读一遍,讲题时按他的方法说“下次在哪一步怎么做”。可以查看、设为当前、或保存用户改过的版本。

NameRequiredDescriptionDefault
actionNo
methodNosave 时传:{ id, module, title, summary, steps:[{title, points[]}], fixes:[{before, after}], principles[], metrics:[{id, label, hint}] }
moduleNo
method_idNo

TDQS

B3.4/5.0
Behavior2/5

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 mutation ('保存用户改过的版本', '设为当前') but never says whether save overwrites an existing method, whether 'use' persists as a durable current setting, or what is returned. For a read/write tool with zero annotation coverage, this is a significant gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short clauses, front-loaded with what the resource is, then when to read it, then what actions exist. Every sentence carries information. Slightly dense and mixes workflow advice with capability listing, but no waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description should indicate what get/list/use return, and it does not. It also leaves the module/method_id parameters and save semantics underspecified. Adequate for a small 4-parameter tool, but noticeable gaps remain.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 25%, so the description needs to compensate. It loosely maps to the action enum (查看≈get/list, 设为当前≈use, 保存≈save), and the nested method object is described in the schema. However, 'module' (reading/listening) and 'method_id' are unexplained in both places, leaving real ambiguity.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific resource (the user's 做题方法, e.g. 平行阅读法) and enumerates the supported operations: 查看、设为当前、保存用户改过的版本. That is enough to tell it apart from siblings like weakness or report, which concern different resources. The name 'method' alone is ambiguous, but the description resolves it.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives concrete usage context: read it before 复盘 and follow the user's method when explaining questions ('下次在哪一步怎么做'). That is a clear when-to-use signal. It does not state when to prefer one action over another (get vs list vs use) or any exclusions, so it falls short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

reportB

一篇阅读复盘的三张表(错题表、同义替换表、难词短语表),Markdown 格式,用户可以直接复制。讲解提交得越完整,表越全。

NameRequiredDescriptionDefault
review_idYes

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description does useful work by disclosing the output format (Markdown, directly copyable) and the fact that result quality depends on how complete the submitted explanations are. It does not mention read-only nature, failure modes for a missing review, or what happens when no explanation has been submitted.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two compact sentences with the deliverable front-loaded and the quality caveat second; no wasted text. Slight compression cost: the verb and input are omitted entirely.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Since there is no output schema, it is good that the description explains the return shape (three named tables in Markdown). However, the required input is unexplained and no preconditions (e.g., explanations must have been submitted) are stated explicitly, leaving gaps for a one-parameter generation tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the single required parameter review_id is never mentioned in the description. The agent must infer from the schema alone that a review identifier is required and where to obtain it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states concretely what the tool produces: three Markdown tables (error table, synonym-substitution table, difficult word/phrase table) that the user can copy. The generating action and use of review_id are only implied, and it does not explicitly distinguish itself from siblings like submit_explanation or weakness, but the resource is clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The sentence '讲解提交得越完整,表越全' implies a dependency on prior submit_explanation calls and that this tool should be used after explanations exist, but it never states explicitly when to call this versus alternatives such as weakness or method.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_causeB

用户确认或修改一道错题的错因。用户的选择优先于模型建议,以后的模型讲解不会覆盖它。

NameRequiredDescriptionDefault
causeYes
numberYes
review_idYes
reflectionNo

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It does disclose a genuinely useful behavioral trait: the user-set cause takes precedence over model suggestions and future model explanations will not override it, which signals persistence. It omits whether an existing cause is overwritten, who is permitted to set it, and what is returned.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with no filler, and the precedence rule is stated up front. It is appropriately sized for what it covers, though the lack of any parameter or scope statement means the brevity borders on under-specification.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

A mutation tool with no annotations, no output schema, and 0% schema description coverage needs more than this. The description never covers input meanings, overwrite behavior, or error conditions, so an agent cannot fully predict the effect of a call.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and four parameters exist, so the description must compensate. It only conveys the concept of 'cause' and never explains review_id, number, or the optional reflection field, leaving half the inputs semantically opaque.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: confirm or modify the cause of an error for a wrong question (错题的错因), tied to a review item. It is clear enough to act on, but it doesn't differentiate itself from siblings like judge_set or mark_reviewed, which an agent would have to inspect separately.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: the tool is for when a user confirms or corrects a cause. There is no statement of when to call this versus judge_set or submit_explanation, and no prerequisites (e.g., must the review exist, must a model suggestion already be present). 'User's choice takes priority' hints at a conflict-resolution context but isn't a routing rule.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

submit_explanationA

提交一道题的讲解。站在用户做题时的视角:题干在问什么 → 原文在哪、怎么从定位词找过去 → 原文句子怎么拆 → 用户为什么会那样答。引擎逐字校验定位句和同义替换的原文一侧,不在原文里就退回;同义替换要标替换机制和证据强度,证据不够时必须写 uncertainty,不许硬圆。讲解不能推翻答案册;错因必须从固定错因表里选。规则判定和用户确认的错因不会被覆盖。

NameRequiredDescriptionDefault
causeYes从 judge_set 返回的 causes 里选一个
vocabNo
adviceNo一两句下次可执行的建议
numberYes
review_idYes
confidenceYes
method_tipNo按用户的做题方法(method 工具),下次在哪一步怎么做
uncertaintyNo证据不足 / 不确定的地方;有“证据不完整”的替换时必填
locate_routeNo从哪个定位词出发、在原文哪一段、怎么找过去
stem_readingNo题干在问什么、有哪些限定
synonym_pairsNo
from_your_viewNo结合用户说的处境:他当时为什么会这样答、卡在哪
location_quoteNo原文里逐字的定位句;没有原文时留空
why_user_wrongNo
why_key_correctYes
sentence_breakdownNo

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden and does substantial work: the engine verbatim-verifies the locating sentence and the passage side of synonym pairs and rejects (退回) non-verbatim content, uncertainty is mandatory when evidence is '证据不完整', explanations cannot contradict the answer book, and rule-determined/user-confirmed causes will not be overwritten. What is missing is what a successful call returns or how rejection feedback is surfaced, but the mutation/validation profile itself is well disclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One dense but front-loaded block: purpose first, then the pedagogical sequence, then engine validation rules. Every sentence carries information; no filler. Density is high enough that the workflow and the hard constraints are somewhat fused together, which slightly hurts scannability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 16-param, no-output-schema tool, the description conveys the required content model, the validation rules that will reject a submission, and the precedence rules over existing causes. Gaps remain around review_id/number semantics and the result of a rejected submission, but an agent can construct a valid call from this description alone.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 50% across 16 params. The description adds real meaning for a few: cause selection is restricted to judge_set's causes, uncertainty becomes mandatory when any synonym has '证据不完整' evidence, and the step narrative implicitly maps to stem_reading, locate_route, sentence_breakdown, and from_your_view. Many remaining params (review_id, number, confidence, vocab, advice, method_tip, why_user_wrong) are only covered by short schema descriptions or not at all, so it does not fully compensate for the coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb+resource ('提交一道题的讲解'), then enumerates the four-part pedagogical structure the explanation must follow (题干 → 定位 → 拆句 → 用户错因). An agent knows exactly what artifact this tool submits. It does not explicitly contrast with siblings like judge_set or set_cause, though it implicitly references them ("judge_set 返回的 causes", "method 工具").

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use it (after diagnosing a question, when producing a per-question explanation) and encodes constraints (cause must come from the fixed table, cannot overturn the answer book), but never states when NOT to use it or names alternatives. Usage is inferable rather than specified.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

todayB

今天最值得复练什么:按 1/3/7/14/30 天间隔到期的错题(重做时先只给题目和定位范围,不给答案),以及复发率最高的错因对应的专项练法。

NameRequiredDescriptionDefault
limitNo

TDQS

B3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the behavioral burden, and it does disclose a meaningful trait: returned items deliberately withhold answers and supply only question plus location scope, ordered by due date and recurrence. It does not say whether the tool mutates review state (a separate 'mark_reviewed' sibling exists) or what the response looks like.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One dense sentence with the core purpose front-loaded, followed by the two content categories. The parenthetical instruction is operational and earns its place; nothing is padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only recommendation tool with no output schema and no annotations, the description conveys the conceptual shape of the result (due wrong items + targeted practice for top error causes) but leaves the response structure and the one parameter undocumented. Adequate but with clear gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single 'limit' parameter has 0% schema description coverage, and the description never mentions it — an agent cannot tell whether it caps number of due items, error causes, or days. The schema's min/max gives bounds but no meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The vague name 'today' is rescued by the description: it returns what is most worth re-practicing today, drawn from spaced-repetition due items (1/3/7/14/30-day intervals) plus the error causes with the highest recurrence. That is a specific resource and selection rule. It does not, however, distinguish itself from siblings like 'weakness' or 'method', which sound related.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit when-to-use or when-not-to-use guidance, and no sibling is named as an alternative (e.g., versus 'weakness' or 'list_sets'). The parenthetical 'give only the question and location scope, not the answer' is presentation guidance for the consumer, not a condition for choosing this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

weaknessC

弱点画像:各错因数量、最常错题型,以及北极星指标“同类错误复发率”(某个错因第一次出现后,之后的复盘里再出现的比例)。按数据说话。

NameRequiredDescriptionDefault
moduleNo

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full disclosure burden, yet it never states that this is a read-only/derived calculation, whether it queries across all modules or requires prior data, or what the response looks like. It does helpfully define the non-obvious north-star metric ('同类错误复发率'), which is real added context, but the operational profile is unstated.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two front-loaded sentences: the profile contents first, the metric definition second. The parenthetical definition is somewhat long but earns its place because the recurrence-rate metric is not self-evident.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and no annotations, the description adequately conveys the analytical content returned but leaves the module-parameter behavior and the response shape (e.g., per-cause breakdown format) undocumented. It is viable but incomplete for an agent needing to call it confidently.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single `module` parameter (enum reading|listening, optional) is never mentioned in the description, and schema coverage is 0%, so an agent cannot tell what happens if `module` is omitted (aggregate across both? default?). For a one-param tool the schema is trivial, but the description squanders the chance to explain scope selection.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies this as a weakness-profile analytic output, naming the specific contents: error-cause counts, most-frequent wrong question type, and a recurrence-rate metric. It is distinguishable from operational siblings like ingest_passage or set_cause, though it does not explicitly separate itself from the similarly analytical `report` and `today`.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to call this versus `report` or `today`, nor any mention of prerequisites such as whether data must exist first. The agent must infer usage purely from the noun '弱点画像'.

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.

  1. 10 tool updatesv0.3.0
    • First observedingest_passage
    • First observedjudge_set
    • First observedlist_sets
    • First observedmark_reviewed
    • First observedmethod
    • First observedreport
    • First observedset_cause
    • First observedsubmit_explanation
    • First observedtoday
    • First observedweakness

TDQS

B3.4/5.0

Scored across 10 tools

Disambiguation4/5

Each tool targets a distinct stage of the ingest→judge→review→report workflow, so an agent can generally pick the right one. The closest pair is set_cause (confirming a wrong-answer cause) versus submit_explanation (writing an explanation), and weakness versus today (analytics vs. daily plan), which could occasionally be confused but descriptions clarify.

Naming Consistency3/5

Most tools follow a verb_noun pattern (ingest_passage, judge_set, submit_explanation, mark_reviewed, list_sets), but several are bare nouns (weakness, today, report, method). The split between action verbs and noun-styled tools is readable but not uniform.

Tool Count5/5

Ten tools is well within the ideal range and each maps to a real step in the study/review lifecycle. No obviously redundant or filler tools are present.

Completeness4/5

The surface covers ingestion, deterministic grading, cause tagging, explanation authoring, analytics, review scheduling, reporting, and method management—a near-complete lifecycle. Minor gaps exist, such as no delete/edit-set operation or a way to fetch a single set's full detail beyond list_sets, but these are workaroundable.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI-assisted learning through structured courses with Socratic guidance, evaluating user answers against rubrics and managing learning progress locally.
    Apache 2.0
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables read-only mirroring of your vocabulary learning data into a local SQLite database and provides daily multiple-choice quiz sessions with explanations, mistake tracking, and generated daily reports.
    MIT
  • A
    license
    B
    quality
    B
    maintenance
    Enables MCP-compatible AI clients to act as a personal exam-prep tutor for Chinese postgraduate entrance exams, with a local knowledge base, spaced-repetition review scheduling, worksheet generation and delivery (print/PDF/HTML/text), and learning analytics—all with zero third-party dependencies and data staying local.
    14
    2
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables automated agents and writers to check Norwegian and English prose before sending, returning concrete style findings, revision hints, and verdicts instead of authorship claims, with a no-judgment band, positive quality checks, a private local mode, and phrase-bank memory.
    MIT