teacher-mcp
Click on "Install 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., "@teacher-mcpingest items from the following text"
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.
teacher-mcp(重建版)· 老师系统操作全权代理 MCP
定位:老师在系统里能做的操作,agent 经本 MCP 都能替他做;老师只负责线上视觉验收(每个写工具返回
view_url验收入口)。 血统:PRD-O-005(正本=codeplace-O/prd/PRD-O-005/),以旧ai-bkb/teacher-mcp(探针版,PRD-C-1000→C-208→C-213)为参考重建。 端口/拓扑权威 =ai-bkb/workspaces.json(本文不复述端口表)。
架构
[CLI agent (Claude Code 等)] ← 智能/编排:读题拆题、选知识点、挑章节、判难度("算"在这)
│ stdio(MCP)
[teacher-mcp] ← 确定性代理:登录注入身份 + 双底座 HTTP + 转换/查表;零 LLM
│ ├─ backends/ruoyi.py → book-server :9090(envelope+clientid,401 自动重登一次)
│ ├─ backends/toolkit.py → toolkit :9093(FastAPI,举一反三引擎,ruoyi_token 注入)
│ └─ backends/db.py → MySQL :3307(pymysql 收口,挂账:对外开放前 HTTP 化)
[平台] ← 业务事实库 + book-ui 展示(老师视觉验收)三线三角色(tag 视图):
data(录题+录卷+录讲义)/prep(备课)/variant(举一反三);旧 ROLE 值ingest/lecture保留为兼容别名。all(缺省)=全量。加能力 = 加文件:新工具函数进对应
tools/*.py打 tag;新角色 =server.pyROLE_TAGS 加一行;新底座 =backends/加一个 client。角色说明书 =
src/teacher_mcp/manuals/{data,prep,variant}.md(get_role_manual工具/resource 读文件,fresh agent 先调它)。
Related MCP server: Moodle MCP Server
跑 / 自检
# 依赖(独立 venv)
uv venv; uv pip install --python .venv\Scripts\python.exe -e . --group dev
copy .env.example .env # 填 RUOYI_USERNAME/PASSWORD(不入 git)
# 测试(gate 全套;G3/G4/G6 基线/G7 需 BE:9090 在跑,G4 另需 toolkit:9093)
.venv\Scripts\python.exe -m pytest tests -q
# 变式链冒烟(不落库,到 compose-figure)
.venv\Scripts\python.exe scripts\smoke_variant.py.mcp.json 条目(同一入口按 ROLE 分视图;MCP 不热加载,改后重启 session):
{
"mcpServers": {
"prep-assistant": { "command": "<本仓>\\.venv\\Scripts\\python.exe", "args": ["-m", "teacher_mcp.server"],
"env": { "PYTHONPATH": "<本仓>\\src", "TEACHER_MCP_ROLE": "prep", "RUOYI_USERNAME": "…", "RUOYI_PASSWORD": "…" } },
"qbank-assistant": { "同上,TEACHER_MCP_ROLE": "data(或旧值 ingest)" },
"lecture-assistant": { "同上,TEACHER_MCP_ROLE": "data(或旧值 lecture)" },
"variant-assistant": { "同上,TEACHER_MCP_ROLE": "variant" }
}
}工具面(42 = 旧 34 全兼容 + health_check + 7 变式)
组 | 工具 |
shared(全角色) | login / list_kg_tree / resolve_kg / search_questions / get_question / get_role_manual / health_check(新) |
data·录题 | convert_doc / convert_pdf / parse_paper_text / format_question / upload_image / ingest_question / ingest_items(统一入库口) / verify_ingest / label_question |
data·讲义 | convert_lecture_docx / save_lecture_frag / remove_lecture_frag / list_lecture_docs / get_lecture_content |
prep | schedule 11 工具 + compose_paper / create_paper / update_paper |
variant(新) | make_variants(无图题走 D8 渲图旁路:题干→PNG→OSS,返回 rendered_stem) / confirm_variant_chapter / generate_variants / verify_variant / edit_variant / compose_variant_figure / persist_variants —— 编排流程见 |
纪律与已知边界
🔴 代码空间只放代码:题图/暂存/dump 一律不入库(.gitignore 建仓即闸,G8 gate 断言)。
🔴 D8 方案 A(渲图旁路):举一反三入口图驱动,但纯文本题不再软拒绝——MCP 内确定性渲图(
domains/stemrender.py,matplotlib mathtext,零 LLM)→ 传 OSS → 喂引擎,返回rendered_stem:true;渲染/上传失败才软拒绝。🔴 /teacher/** 在 BE 端完全无鉴权(2026-07-07 实测,不登录也可调)——本仓不修(权限收窄另立卡),MCP 仍走真实登录(落库归属/审计)。
pymysql 旁路(backends/db.py)挂账:对外开放(stdio→HTTP)前须 HTTP 化。
转换器(domains/)与旧仓字节级等价(G5 gate 守护),改它先想想 \xa0。
Available Tools
71 toolsadd_book_itemA
给节点加一个内容项。kind=question 题引用(传 question_id)/ explain 讲解块(传 explain_*)。
🔴 question_id 一律 str(雪花号 JSON number 会截尾)。讲解块内容书自持(D2,不引用 KG 讲义层)。 返回 {ok, item_id(str)}。
| Name | Required | Description | Default |
|---|---|---|---|
| seq | No | ||
| kind | No | question | |
| node_id | Yes | ||
| question_id | No | ||
| explain_text | No | ||
| explain_title | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must cover behavioral traits. It mentions the Snowflake ID truncation issue and that explain content is self-contained (D2). However, it does not disclose whether the tool is destructive, idempotent, or requires specific permissions. Score 3.
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?
Two concise sentences plus a note. No wasted words, front-loaded with purpose. Efficient and clear. Score 5.
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 6 parameters, 0% schema coverage, and no annotations, the description covers the main modes and return format but omits seq and node_id semantics. It is adequate but not fully complete. Score 3.
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 description should compensate. It explains the kind parameter and associated parameters (question_id, explain_text, explain_title). However, it does not explain seq or node_id, leaving gaps. Score 3.
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 states '给节点加一个内容项' (add a content item to a node), and distinguishes between question and explain kinds. It differentiates from sibling 'add_book_node' which adds a node itself. Score 4 because it is specific but could be more explicit about the overall action.
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 explains when to use each kind (question vs explain) and warns about question_id formatting. It does not explicitly state when not to use or alternatives, but provides sufficient context for the two modes. Score 4.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_book_nodeA
给书加一个目录节点。node_type 自由值(chapter章/lecture讲/qtype_group题型组/tier难度档/sec区块…)。
parent_id 省 = 根层节点;kp_id 可选(KG 锚,仅标签,与树结构解耦 D8)。 节点名 name 卷面可见——🔴 禁内部词(层/★/素材/薄弱),只写干净知识点名。 返回 {ok, node_id(str)}。
| Name | Required | Description | Default |
|---|---|---|---|
| seq | No | ||
| name | Yes | ||
| kp_id | No | ||
| book_id | Yes | ||
| node_type | No | sec | |
| parent_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, description discloses node addition behavior, parent_id handling, kp_id's knowledge graph role, name visibility on exam paper and forbidden words, and return type. Missing error conditions or side effects, but covers key behaviors well.
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?
Three dense sentences with front-loaded action, examples, constraints, and return value. No filler, each sentence adds unique value despite informal notation.
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?
Covers purpose, key parameters, constraints, and return type. Lacks explanation of seq and error handling, but overall sufficient for a moderately complex tool given output schema exists.
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 coverage is 0%, so description compensates partially. Explains node_type (examples), parent_id (default root), kp_id (optional KG anchor), and name (constraints). Does not explain book_id (required) or seq (default 0), leaving gaps.
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?
Description clearly states '给书加一个目录节点' (add a TOC node to a book), specifies node_type examples, and distinguishes from siblings like add_book_item and get_book_structure via context of adding nodes to the book hierarchy.
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?
Provides practical usage tips (parent_id for root, kp_id optional, name constraints) but lacks explicit when-to-use or when-not-to-use compared to siblings. No mention of prerequisites or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
archive_targetA
归档 / 取消归档教学对象(学生·班级的「软删除」)→ :9090。 返回 {ok, id, archived, cancelled_sessions?}。
🔴 归档 = 本系统的「删学生」:对象移出排课选择器、历史保留(非硬删)。 归档会联动取消该对象未来未上的场次,cancelled_sessions 返回联动取消的场次数。 取消归档(archived=False)只解归档标记、不恢复已取消场次(复课需重新排课)。 参数: target_id : 对象 id(字符串雪花号) archived : True=归档(软删,默认)| False=取消归档(复用)
| Name | Required | Description | Default |
|---|---|---|---|
| archived | No | ||
| target_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses behavioral traits: archiving is a soft delete that removes from scheduling picker but retains history, archives cancel future sessions, and unarchiving does not restore cancelled sessions. The return format is also given.
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 well-structured with bullet points and bold text, but it is slightly verbose. It effectively communicates key points without 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?
Given the output schema exists and the description covers all main aspects (soft delete, cancellation side effect, unarchive limitations), it is complete for a simple two-parameter 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?
Though schema coverage is 0%, the description explains target_id as a snowflake string ID and archived boolean with default True and meanings for True/False, adding value beyond the schema.
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 states the tool archives/unarchives teaching targets (students/classes) as a soft delete, with a distinct purpose from siblings like create_teach_target or list_teach_targets.
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?
It explains when to archive (to soft delete) and the side effects (cancels future sessions, unarchiving does not restore). However, it doesn't explicitly contrast with alternative tools like hard delete or other target management operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bind_book_node_to_lessonA
把书籍章节(书架书目录节点)绑到课次材料位,或解绑,或查本课已绑书章节。
备课态口径(2026-07-15 扩展):「有专项或有书章节=已备好」——绑上任一书章节, 课次即显已备好(与 bind_special_to_lesson 同为材料位,两者并集推导)。
🔴 只 UPDATE biz_course_plan_lesson.book_node_ids 单列——绝不整行 upsert(历史事故: 整行重写把 paper_slots 已绑 paper_id 抹掉)。BE 端 partial updateById 只写 book_node_ids。
参数: lesson_id: 课次 id(字符串)。 node_id: 书章节节点 id(biz_shelf_node.id,字符串;action=materials 时忽略)。 action: 'bind'(默认)/ 'unbind' / 'materials'(查本课已绑书章节概要)。 返回: bind/unbind → {ok, lesson_id, book_node_ids:[...]}; materials → {ok, lesson_id, book_node_ids:[...], materials:[{nodeId,nodeTitle,bookId,bookTitle,questionCount}]}。
| Name | Required | Description | Default |
|---|---|---|---|
| action | No | bind | |
| node_id | No | ||
| lesson_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Despite no annotations, the description discloses critical behavioral traits: it only updates a single column (book_node_ids) using partial updateById, explicitly warns about a historical bug where full row upsert erased paper_slots, and details the return format for each action. This exceeds minimal expectations.
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 well-structured with a clear purpose, context, warning, parameter list, and return format. It is front-loaded but slightly verbose due to the historical warning; still every sentence adds value.
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 the complexity and presence of an output schema, the description covers main use cases and return types. It does not mention error handling or invalid inputs, but is sufficient for an AI agent to invoke the tool correctly.
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?
With 0% schema description coverage, the description fully compensates by detailing each parameter: lesson_id (string), node_id (string, ignored for action=materials), action (default 'bind', values explained). It adds meaning beyond the bare schema structure.
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 states the tool's purpose: binding, unbinding, or querying book chapter nodes to lesson material positions. It distinguishes from the sibling tool bind_special_to_lesson by noting that both are material slots and their union determines lesson readiness.
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 explains the three actions (bind, unbind, materials) and their effects. It implicitly guides usage by noting the relationship with bind_special_to_lesson, but does not explicitly state when to choose this tool over alternatives or provide exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bind_paper_slotA
🔴 PRD-B-101 备课卷位绑定管理(绑既有卷 / 解绑 / 标记已备好)→ 备课线。返回 {ok, paper_slots, prep_state}。
备课主路 = 组卷时直接带 lesson_id+slot_seq 建卷即自动绑(create_paper/compose_paper); 本工具是事后管理:把已有卷挂到卷位(D7 兜底)、解绑、或手动标记整课次已备好。 🔴 备课卷私有,本工具不含任何公开化能力(绝不 set-public)。 参数: lesson_id : 课次 id(字符串雪花号)——必填。 slot_seq : 卷位序号(≥1)——action=bind/unbind 必填;action=manual_ready 忽略(课次级)。 action : 动作枚举—— 'bind' 绑既有卷到卷位(传 paper_id,必须真实存在且归我;BE 自动置该卷 paper_kind='2') 'unbind' 解绑卷位(卷留库不删;🔴 解绑会自动清该课次 manual_ready=false) 'manual_ready' 手动标记整课次备课态(传 ready;0 卷位课次 → BE 400) paper_id : action=bind 时必填(要挂的既有卷 id,字符串雪花号)。 ready : action=manual_ready 时的目标态(True=已备好,默认 True)。 返回: {ok, paper_slots:[...], prep_state:'0未备/1备课中/2已备好'};异常 → {ok:false, error}。
| Name | Required | Description | Default |
|---|---|---|---|
| ready | No | ||
| action | No | bind | |
| paper_id | No | ||
| slot_seq | No | ||
| lesson_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description fully carries the burden. It details behaviors: return structure, side effects of unbind (resets manual_ready), parameter constraints, and the fact that it never makes items public. All important traits are disclosed.
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?
Well-structured with sections and bullet points, but slightly verbose with emojis and repeated emphasis. However, for the complexity (3 actions, conditional params), the length is justified and information is front-loaded.
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 the tool complexity, output schema existence, and lack of annotations, the description covers input, output, behavior, and context. It contrasts with relevant siblings and states constraints (no public). Complete and sufficient for agent 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 coverage is 0%, meaning no descriptions in schema. The description compensates fully by explaining each parameter: lesson_id required, slot_seq conditionally required, action enum with three values and their conditions, paper_id for bind, and ready for manual_ready with default. Adds critical context beyond schema structure.
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 states the tool's purpose: managing post-creation binding, unbinding, and marking ready for lesson paper slots. It distinguishes from the main path (create_paper/compose_paper) which handles automatic binding during creation.
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?
Explicitly describes when to use this tool (after creation) and when to use other tools (during creation). Also warns about no public ability, providing clear boundaries.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bind_special_to_lessonA
把专项绑到课次材料位(D4 持久绑定),或解绑,或查本课已绑材料。
🔴 只 UPDATE biz_course_plan_lesson.special_ids 单列——绝不整行 upsert(历史事故: 整行重写把 paper_slots 已绑 paper_id 抹掉)。BE 端 partial updateById 只写 special_ids。
参数: lesson_id: 课次 id(字符串)。 special_id: 专项 id(action=materials 时忽略)。 action: 'bind'(默认)/ 'unbind' / 'materials'(查本课已绑专项概要)。 返回: bind/unbind → {ok, lesson_id, special_ids:[...]}; materials → {ok, lesson_id, special_ids:[...], specials:[{id,title,itemCount}]}。
| Name | Required | Description | Default |
|---|---|---|---|
| action | No | bind | |
| lesson_id | Yes | ||
| special_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fully discloses critical behavioral traits: it only updates a single column (special_ids) via partial update, never performs full-row upsert, and references a historical bug. This clearly informs the agent of the mutation's scope and safety.
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 concise yet comprehensive, structured with a main purpose statement, a historical note, a parameter list, and return shapes. Every sentence adds value without 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?
Given the tool's moderate complexity (3 parameters, multiple actions, output schema exists), the description covers all necessary aspects: actions, parameters, return values, and crucial behavioral constraints. It is complete and leaves no ambiguity.
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 has 0% parameter descriptions, so the description entirely compensates. It explains each parameter (lesson_id, special_id, action) and notes that special_id is ignored for action=materials. It also details the return format for each action, adding significant meaning beyond the schema.
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 states the tool's purpose: to bind, unbind, or check bound specials to a lesson material slot. It specifies the resource (lesson material slot) and distinguishes between three distinct actions, making the purpose very specific and unambiguous.
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 explains when to use each action (bind, unbind, materials) and provides a historical caution against full-row upsert. However, it does not explicitly compare with sibling tools like bind_book_node_to_lesson, so the agent must infer from the tool name and context which tool is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
build_prep_packA
🔴 DEPRECATED(PRD-B-101 已退役):备课不再走「装备课包」,改为按卷位组卷。
备课材料模型已从「一包 N 段」升维为「一课次 N 张专项卷位」:逐卷位
compose_paper/create_paper(lesson_id, slot_seq) 建卷(自动落【备课卷】+ 绑卷位)+
bind_paper_slot 管理绑定,PDF 由平台前端导出(MCP 不再出 PDF)。
本工具仅保留返回退役指引,不再执行任何操作。见 get_role_manual(role='prep')。
| Name | Required | Description | Default |
|---|---|---|---|
| segs | No | ||
| lesson_id | No | ||
| session_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description fully discloses behavior: the tool no longer performs any operation and only returns a retirement guide. It also mentions PDF export is handled externally.
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 well-structured with a prominent deprecation warning, but includes detailed workflow explanation that could be shortened. Still, it is relatively concise and 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?
Essential deprecation and alternatives are covered, but parameter semantics are missing, and output (retirement guide) is not described. For a deprecated tool this may be sufficient, but gaps remain.
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?
Input schema has 3 parameters with 0% description coverage, and the description does not explain their purpose or usage. Since the tool is deprecated, parameters may be irrelevant, but no semantics are provided.
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 states the tool is deprecated and only returns a retirement guide, which is a specific verb and resource. It also distinguishes from siblings by directing to new workflow (compose_paper, create_paper, bind_paper_slot).
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?
Explicitly states the tool should not be used for its original purpose, provides detailed alternative workflow using compose_paper, create_paper, bind_paper_slot, and references get_role_manual for guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compose_paperA
按大纲从真题库确定性组卷并真落库 biz_paper,归属当前登录 teacher。
参数: outline: [{subjectId, subjectName?, questionType, difficult, count}, ...] subjectId 取自 list_kg_tree 的叶子 id;编排层负责选点,本工具不二次解析意图。 title: 卷名(可选,默认"MCP组卷")。 lesson_id / slot_seq: 🔴 PRD-B-101 备课卷位绑定(可选,二者必须同现)——给了则本卷落 【备课卷】(paper_kind='2') 并绑到该课次卷位;只给一个 → 本地报错不发请求; 都省 = 普通卷(一切照旧)。🔴 备课卷私有,绝不 set-public。 返回: {ok, paper_id, item_count, paper, notes};底座不在/无匹配题 → {ok:false, reason}(不假成功)。
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | ||
| outline | Yes | ||
| slot_seq | No | ||
| lesson_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses behavioral traits: it creates a real paper (真落库), assigns ownership, and avoids false success by returning {ok:false, reason} on failure. It also notes that lesson preparation papers are private and never set public.
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 concise yet comprehensive, using clear sections and symbols (🔴) to highlight important constraints. Every sentence adds value without 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?
Given the tool's complexity and the presence of an output schema, the description covers all necessary aspects: input semantics, optional parameters, behavior, return format, and error handling. It is complete for an agent to use correctly.
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 description adds significant meaning beyond the schema, explaining the outline structure, the role of subjectId, the optional lesson_id/slot_seq pair binding, and error scenarios. This compensates for the schema's lack of description coverage.
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 states the tool's purpose: composing a paper deterministically from the real question bank according to an outline and storing it. It specifies the resource (biz_paper) and ownership (current teacher). This distinguishes it from siblings like create_paper or compose_special.
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 provides context on when to use the tool (e.g., outline-based composition, optional binding to lesson slots) and notes that subjectId must come from list_kg_tree. However, it does not explicitly exclude alternatives or state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compose_specialA
跨多本书选料,一单建成一个"专项"(book_type='special')并批量挑题入区块。
专项 = word/教辅式文档(非试卷):结构 = 区块(sec) → 难度档(tier) → 题。挑题必在 区块框架下(secHint 指定落点,缺则新建)。跨书 = picks 里的题可来自不同源书, 专项只引用题库题 id,不动源书与题库(源书 item 数、题库 stem 全程不变)。
参数: title: 专项名(卷面可见,🔴 只写干净知识点名,绝不含内部词 层/素材/薄弱/★)。 picks: [{questionId?|nodeId?, secHint?, overrideJson?}, ...],逐条挑题。 grade / subject_id: 可选元信息。 返回: {ok, special_id, picked, secs:[{secId,name}], skipped};未登录/空 picks → {ok:false, reason}。
| Name | Required | Description | Default |
|---|---|---|---|
| grade | No | ||
| picks | Yes | ||
| title | Yes | ||
| subject_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that source books and the question bank are not modified, explains the effect of missing secHint (creates new section), and specifies error conditions for empty picks or not logged in. It does not cover authentication requirements or rate limits, but these are typical and somewhat assumed.
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 well-structured: a one-sentence summary, then detailed explanation of the special's structure, parameter descriptions, and return values. It is slightly verbose but each sentence adds value. Could be tightened slightly, but overall efficient.
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 the complexity (4 parameters, picks as array of objects) and presence of output schema (described in text), the description covers key aspects: creation process, parameter details, return values including skipped items. It lacks mention of prerequisites like login status beyond the error case, but is otherwise comprehensive.
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 description adds significant meaning beyond the input schema, which has 0% coverage. It explains the special naming constraint (clean knowledge name, no internal terms), details the picks structure with subfields (questionId/nodeId, secHint, overrideJson), and notes optional grade/subject_id. This compensates fully for the lack of schema descriptions.
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 defines the tool's purpose: building a 'special' document by selecting materials across multiple books and batch-picking questions into blocks. It specifies the structure (block → tier → question) and explicitly distinguishes from papers, which is a key sibling differentiator.
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 explains that the tool is used for creating specials (non-papers) with cross-book selection, and notes that picking occurs within a block framework. It does not explicitly list when not to use it, but the context (e.g., 'non-paper') and sibling tools (like compose_paper) provide implicit guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compose_variant_figureA
为某道变式造图(~12s)→ 中性 JSXGraph DSL(bbox+objects),客户端 GeoEngine 渲活图。
参数: thread_id;item_id(= seq,字符串); dsl: 传入=覆盖重绘(把该 DSL 作修正依据令引擎照此重画;不传=从题面/figure_spec 现推)。 返回: {ok, item_id, needs_figure, figure_spec}(figure_spec=JSXGraph DSL:{bbox, objects[]}); 造图降级 → {ok:false, needs_figure:true, reason}。
| Name | Required | Description | Default |
|---|---|---|---|
| dsl | No | ||
| item_id | Yes | ||
| thread_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses a ~12s execution time, explains the override/inference behavior, and describes the return structure including a fallback case. This provides good transparency about the tool's 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 moderately concise, front-loading the purpose and using a list for parameters. It packs essential information without excessive verbosity, though the mixed Chinese/English may slightly reduce readability.
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?
The description covers input parameters, output structure, performance, and fallback behavior. It is complete for a tool that generates figure specs, though it could mention prerequisites or side effects.
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 coverage is 0%, so the description must compensate. It explains 'item_id' as a sequence string and 'dsl' as an optional override for redrawing. This adds significant meaning beyond the bare schema.
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 states it composes a figure for a variant question, producing a JSXGraph DSL. It specifies the output and mentions the client-side rendering. However, it does not explicitly differentiate from sibling tools like 'render_shuzimi_figure', which may have overlapping functionality.
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 explains the behavior of the 'dsl' parameter and general workflow but does not provide explicit guidance on when to use this tool versus alternatives or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
confirm_variant_chapterA
确认母题所属章节(need_confirm 分支续跑)→ 回填锚点重锚(~3s)。
参数: thread_id(make_variants 返回);chapter_id(从 kg_candidates 挑的真实章节 id,字符串)。 返回: {ok, thread_id, status:"ready", mother_card}。之后调 generate_variants。
| Name | Required | Description | Default |
|---|---|---|---|
| thread_id | Yes | ||
| chapter_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. Description mentions execution time (~3s) and return values (ok, thread_id, status:'ready', mother_card). It does not disclose mutability, permissions, or potential side effects, but the described action (confirming and backfilling) implies mutation.
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?
Two concise sentences followed by parameter and return info. Purpose is front-loaded, no extraneous words, and the structure aids quick scanning.
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 the presence of an output schema and the straightforward workflow, the description covers the essential flow. It lacks details on error handling or type constraints, but the context is sufficient for an AI agent to use the tool correctly.
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?
Input schema lacks parameter descriptions (0% coverage). Description compensates by explaining both parameters: thread_id comes from make_variants, chapter_id is selected from kg_candidates. This provides essential context beyond the raw schema.
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?
Description clearly states the tool's purpose: confirm the chapter belonging to a motif, as part of a workflow after make_variants. It distinguishes from siblings by specifying its role in the 'need_confirm' branch and linking to subsequent generate_variants call.
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?
Describes when to use: after make_variants returns a 'need_confirm' branch. It also provides the next step (call generate_variants). No explicit when-not-to-use or alternatives, but the workflow context is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
convert_docA
Word(.docx / docx伪装的.doc)→ 结构化文本 + 题图清单。确定性 XML 解析(OMML→$LaTeX$),非 OCR。
产出文本里:数学公式=$LaTeX$;图=〖图:rId〗占位(与 images 的 rid 对应)。 下一步:文本喂 parse_paper_text 确定性拆题;images[].local_path 喂 upload_image 传 OSS。 参数: doc_path 卷子绝对路径;batch 批次名(图文件名前缀+文本落盘名,空=文件名主干)。 返回: {ok, text, paras, text_path, images:[{rid, local_path}]};真 OLE .doc → {ok:false, reason:"另存为 docx"}。
| Name | Required | Description | Default |
|---|---|---|---|
| batch | No | ||
| doc_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses behavior: deterministic XML parsing, no OCR, output structure (text, paras, text_path, images with rid and local_path), and error handling for true .doc files. It explains the output format and next steps thoroughly.
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 well-structured and informative, starting with purpose, then output, next steps, parameters, and return value. However, it is somewhat lengthy; a minor trimming could improve conciseness without losing clarity.
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 the presence of an output schema (as indicated in context signals), the description still provides a comprehensive overview of input, output, edge cases, and workflow. It covers all necessary information for an agent to use the tool correctly.
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 description compensates for 0% schema coverage by explaining doc_path as the absolute path to the file and batch as a prefix for image filenames and text file name, defaulting to the document filename stem. This adds significant meaning beyond the input schema.
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 states it converts Word documents (.docx or disguised .doc) to structured text and an image list, specifying the method (XML parsing, not OCR). It mentions math formulas to LaTeX and image placeholders, effectively distinguishing it from siblings like convert_pdf and convert_lecture_docx.
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 provides clear guidance on next steps: feed text to parse_paper_text and images to upload_image. It also handles the true .doc case with an error message. However, it does not explicitly state when not to use this tool or compare it to alternatives, though the context implies the specific use case for Word documents.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
convert_lecture_docxA
讲义 docx → 忠实 Tiptap 内容 + KG 知识点靶子 + 图清单(确定性,零 login,零落库)。理解式映射的原料台。
🔴 崔崔版式实测=模块(H3)>分组(H3)>知识点(H4),纯确定性 H3 切片对不上 KG 知识点 → 默认 mode='assist': 工具只做忠实转换 + 按顶层 H3 分段 + 给出该课时 KG 知识点靶子,切成知识点由 agent 理解式映射 (读 raw_path 全文,按 kg_targets 重组讲解成片段 IR,习题模块的题走 ingest_items 拿 qid 后挂 kgExample)。 mode='auto':仅当来源 H3 已== KG 知识点名(已清洗源)才用——跑确定性 split_frags + 对齐闸,直接产 IR。 🔴 图不在此上传:content 里 image.src=〖图:rId〗占位 + rid;images[].local_path 喂 upload_image 拿 ossUrl, save_lecture_frag(image_map={rid:ossUrl}) 回填。忠实转换细节:heading/paragraph 留 bold/italic/color、 表 w:shd→背景色、单元格内图、图 EMU→px 内容区 clamp、EMF/WMF 矢量图无 local_path(浏览器不支持)。 参数: docx_path : 讲义 docx 绝对路径 course_subject_id : 课时 L4 subject_id(如 901001002001)——KG 知识点靶子来源 book_id : 教辅套 id(崔崔=CC7S) batch : 产物落盘名前缀(空=docx 文件名主干) mode : 'assist'(默认,理解式原料) | 'auto'(确定性 H3 切片,仅清洗源可用) | 'cuicui'(崔崔适配器) 返回(assist): {ok, mode, course, kg_targets:[{id,name}], sections:[{h3,node_count,preview,start,end}], images:[{rid,local_path}], raw_path, stats, deterministic_hint:{toc,unmatched_h3,frags}} ← 后者是 H3 切片试探,崔崔版必 FAIL 仅供参考。 返回(auto): {ok, mode, course, frag_count, frags, toc, unmatched_h3, images, ir_path, stats}
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | assist | |
| batch | No | ||
| book_id | No | CC7S | |
| docx_path | Yes | ||
| course_subject_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and delivers comprehensive behavioral transparency. It explains the deterministic nature, no login, no storage, faithful conversion details (formatting retention, table backgrounds, image handling, EMU to px conversion, EMF/WMF limitation). It also outlines the return structures for each mode, including the deterministic_hint for assist mode.
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 about 600 characters and contains all necessary information, but it is somewhat verbose and uses a mixed format of bullet points and paragraphs. The main purpose is front-loaded, but the detailed explanation could be more organized. Still, it is efficient relative to the complexity of the tool.
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 the tool's complexity (multiple modes, multiple output structures, dependencies on other tools like upload_image and save_lecture_frag), the description is remarkably complete. It covers both return types, explains the deterministic_hint, and mentions integration points. The output schema exists, so return values are documented elsewhere, but the description adds necessary context for agent decision-making.
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 coverage is 0%, so the description must add meaning for all 5 parameters, and it does. It explains docx_path as absolute path, course_subject_id as source for KG targets, book_id with default 'CC7S', batch as output prefix defaulting to filename stem, and mode with three options and their contexts. This far exceeds the bare schema.
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 states the tool converts a lecture docx into Tiptap content, KG knowledge points, and image list. It specifies deterministic, zero-login, zero-storage behavior. The multiple modes (assist, auto, cuicui) are explained with their intended use cases, making the purpose unambiguous.
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 explicitly states when to use each mode: default assist for understanding-based mapping, auto only when H3 headings match KG knowledge points (cleaned source). It also provides alternatives for image handling (use upload_image and save_lecture_frag) and clarifies that the tool itself does not upload images. This gives clear guidance on when to use this tool versus others.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
convert_pdfA
PDF → 文字层检测 + 按页转图(多模态拆题的原料)。确定性 pymupdf,非 OCR。
🔴 拆题一律以页图多模态直读为准(H1a:文字层公式不可信);text_layer 仅辅助(题号定位/纯文字题)。 参数: pdf_path 绝对路径;batch 页图文件名前缀(空=文件名主干);dpi 渲染精度(170 实测够);max_pages 限页(0=全部)。 返回: {ok, page_count, has_text_layer, pages:[页图路径...], text_layer_path?}。
| Name | Required | Description | Default |
|---|---|---|---|
| dpi | No | ||
| batch | No | ||
| pdf_path | Yes | ||
| max_pages | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully carries the burden. It discloses non-OCR deterministic behavior, warns about text layer unreliability, and briefly describes return format. No mention of auth or side effects, but unlikely needed for a conversion tool.
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 extremely concise: two short paragraphs, first states purpose and key caveat, second lists parameters and return format. Every sentence is informative, with no fluff.
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 the presence of an output schema (not shown), the description need not detail returns but still gives format. It covers parameters, behavioral nuance (text layer unreliable), and use case context. Complete for a well-defined conversion 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%, but the description explains every parameter: pdf_path (absolute path), batch (prefix for filenames), dpi (rendering resolution, 170 recommended), max_pages (limit, 0=all). This adds essential meaning beyond defaults and 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 clearly states the tool converts PDF to per-page images and detects text layer, using deterministic pymupdf (not OCR). It is distinguished from sibling convert_doc by specifying it's for multi-modal problem solving (拆题).
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 provides explicit guidance: for problem solving, use page images directly (text layer unreliable); text layer is only auxiliary for locating problem numbers or pure text questions. It could explicitly mention alternatives like convert_doc, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_bookA
新建一本空书(起步)。book_type 开放注册制(BE 不校验,任意 snake_case slug 可传): 已注册值 = lecture讲义 / workbook练习册 / textbook电子课本 / special备课挑题专项(不进书架列表) / variant_special举一反三专项(SOP-2 立项即建) / daily_punch每日打卡。 新资料形态(口算集训、错题重练…)自定新 slug 即可,🔴 但须先到 认知/服务与能力总目录.md「书类型注册表」挂号 + book-ui BOOK_TYPE_LABEL 补中文名,否则前端显示裸 slug。
返回 {ok, book_id(str)};随后用 add_book_node + add_book_item 建目录树与内容, 或整树一次建书走 import(B 线录入直出书交接面,本工具面不含 import)。
| Name | Required | Description | Default |
|---|---|---|---|
| grade | No | ||
| title | Yes | ||
| edition | No | ||
| book_type | No | workbook | |
| subject_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully details behavioral traits: book_type is not validated, registered values listed, registration process for new types, return format, special type excluded from bookshelf, and exclusion of import. No contradictions.
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?
Purpose is front-loaded, but the description is a single dense paragraph. It contains necessary details but could benefit from bullet points or clearer separation of return info and next steps.
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 output schema exists (return {ok, book_id(str)}), the description covers purpose, key parameter behavior, and post-usage guidance. Missing explanations for grade, edition, and subject_id, but overall sufficient for a creation tool with subsequent steps.
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 coverage is 0% and description only adds meaning for book_type (enumerated values, registration). Other parameters (grade, title, edition, subject_id) lack any explanation. Baseline 3 is appropriate as description partially compensates.
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 states it creates a new empty book (新建一本空书) and distinguishes from siblings by noting that subsequent steps require add_book_node/add_book_item or import. The verb 'create' and resource 'book' are specific.
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 explains what to do after using this tool (use add_book_node/add_book_item or import) and warns about registering new book types. However, it does not explicitly state when NOT to use this tool versus alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_paperA
按指定题目 id 列表(顺序即试卷内题号顺序)组装成一套试卷入卷库,归属当前登录 teacher。
用于整卷录入:题目已 ingest_question 入库后,把它们按原卷题号顺序串成 biz_paper(建 section + biz_paper_question 关联)。 参数: name: 试卷名(如原卷标题),1-200 字符。 question_ids: 题目 id 列表,顺序 = 试卷内题号顺序,至少 1 题。 paper_category_id: 试卷分类 id(可选,卷库目录树;空=根级)。 lesson_id / slot_seq: 🔴 PRD-B-101 备课卷位绑定(可选,二者必须同现)——给了则本卷落 【备课卷】(paper_kind='2') 并绑到该课次卷位;只给一个 → 本地报错不发请求; 都省 = 普通卷。🔴 备课卷私有,绝不 set-public。 返回: {ok, paper_id, ...};异常 → {ok:false, reason}。
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| slot_seq | No | ||
| lesson_id | No | ||
| question_ids | Yes | ||
| paper_category_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries full burden. It discloses that the paper belongs to the current teacher, creates sections and associations, and optionally binds to a lesson slot with constraints (both lesson_id and slot_seq required). It also mentions that bound papers are private and never set-public, and returns success/error.
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 well-structured with a clear main purpose sentence, followed by usage context and parameter details. It uses bold for emphasis and lists parameters. It is slightly lengthy but efficient, with every sentence providing value.
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 the tool's complexity (5 parameters, 2 required, optional binding), the description covers the full workflow: prerequisite (questions ingested), parameter constraints, behavioral side effects (private paper), and return format. It addresses all necessary context for 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?
Despite 0% schema description coverage, the description explains each parameter meaningfully: name (1-200 chars), question_ids (order-sensitive, at least 1), paper_category_id (optional), lesson_id/slot_seq (must coexist, binding semantics). It adds constraints and usage beyond the schema's basic 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 clearly states the tool's action: assembling a paper from question IDs, maintaining order, and associating it with the current teacher. It specifies the resource and verb distinctly, differentiating from siblings like 'compose_paper' or 'update_paper'.
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 explains when to use: after questions are ingested, for full paper entry. It also details optional lesson slot binding, clarifying when it becomes a preparation paper. It does not explicitly state when not to use, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_teach_targetA
建教学对象档案(学生或班级)→ :9090。返回 {ok, id}(id 为字符串雪花号)。
对象即「教谁」:一个学生或一个班课,后续排课/备课/回收全挂在它身上。 🔴 R1a 建模口径:年级/教材不再传文本,改传 gradeNo+gradeYear+字典码。 暑期录「升四」= grade_no:4, grade_year:2026(gradeYear=该年级生效学年的起始年, 当前年级由服务端按 9/1 学年进位推导)。 参数: target_type : 'student'(学生一对一)| 'class'(班课)——必填 name : 对象名(学生姓名 / 班级名) grade_no : 年级 1-12(字典 biz_edu_grade;1-6 小学 / 7-9 初中 / 10-12 高中) grade_year : grade_no 生效学年起始年(如 2026 = 2026-09-01 起学年) textbook_edition : 教材版本字典码(biz_edu_edition:'1'浙教/'2'人教/'3'北师大/'4'苏教) subject : 学科字典码(biz_edu_subject:'1'数学/'2'科学/'3'语文/'4'英语) (edition/subject 服务端兼容中文标签归一化,但请按码传) parent_phone : 家长手机号 profile : 肖像 dict(学生画像)——UI 四格 = traits/level.desc/level.target_layer/error_signals, 结构见契约 profile_json:{traits:[str], level:{desc,target_layer}, env:str, history:[{topic,status:'吃透|讲过未吃透',src}], error_signals:[{tag,evidence,session_id,ts,by:'system|teacher',status:'pending|confirmed'}]} color : 色板色(空则服务端从色板轮转分配)
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| color | No | ||
| profile | No | ||
| subject | No | ||
| grade_no | No | ||
| grade_year | No | ||
| target_type | Yes | ||
| parent_phone | No | ||
| textbook_edition | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries the full burden. It details the return format ({ok, id}), explains grade_year derivation logic, and mentions server-side normalization of subject/edition. However, it omits error conditions, idempotency, and authentication requirements, which are important but not covered.
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 long and detailed, mixing Chinese and English, which may reduce clarity. While it is front-loaded with purpose, the level of detail could be streamlined. The bullet points help structure, but some redundancy exists.
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 9 parameters (2 required) and no annotations, the description covers most aspects: all parameters explained, behavior documented, and nested object defined. Missing elements include potential errors, side effects, and confirmation of output schema details, but overall adequate.
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?
With 0% schema coverage, the description fully compensates by explaining each parameter's meaning, valid values (e.g., grade_no range, textbook_edition codes), and for profile, providing the complete JSON structure. This adds significant value beyond the raw schema.
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 states the tool's purpose: creating a teaching target (student or class) with a specific verb ('create') and resource ('teach_target'). It distinguishes from siblings like update_teach_target and archive_target by focusing on creation.
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 usage for creating targets that will be referenced later in scheduling and lesson planning, but it does not explicitly state when to use this tool versus alternatives (e.g., update or archive). No exclusions or prerequisites are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_questionsA
🔴 安全删题(只能删散题)。confirm=False(默认)=dry_run 预览:返回 deletable/blocked 清单不动库; confirm=True 才真删——删前自动备份主行+正文 JSON(返回 backup_path),随删全部附属表行并写审计。
阻删闸(命中即拒删该 id):试卷/导入卷/书架书/教辅书/解题模型母题/活血缘母题/讲义引用。 单次上限 500;id 一律字符串传(雪花号截尾)。删除不可逆——真删前先 dry_run 给用户过目。
| Name | Required | Description | Default |
|---|---|---|---|
| reason | No | ||
| confirm | No | ||
| backup_dir | No | ||
| question_ids | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses behavior: dry_run returns a list without modifying data, confirm triggers backup and deletion of all related rows, logs audit, lists blocking conditions, and requires string IDs. It also states the deletion is irreversible.
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 dense with information but uses symbols and Chinese punctuation. It is front-loaded with key points but could be more structured. Still, every sentence adds value.
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 the complexity (4 parameters, output schema present), the description covers deletion behavior, conditions, limits, irreversibility, backup, and audit. It is sufficiently complete for correct tool 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. It explains confirm (default false), mentions backup_path, and implies question_ids as targets. However, reason and backup_dir parameters are not explicitly explained, leaving some ambiguity.
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 '安全删题(只能删散题)' meaning safe deletion of standalone questions, clearly identifying the verb and resource. It distinguishes from sibling tools by specifying the scope (only standalone questions) and no other deletion tool exists among siblings.
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?
Provides explicit when-to-use (deleting standalone questions) and when-not-to-use (blocked by various conditions). Explains dry_run mode for preview vs confirm for actual deletion, and mentions single limit of 500. Also notes that deletion is irreversible and recommends dry_run first.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
edit_variantA
手动编辑某道变式(零 LLM,只 patch 传入字段)→ 标手动编辑态。
参数: thread_id;item_id(= seq,字符串); patch: {stem?, answer?, analyze?}(analyze 映射 toolkit 的 solution 字段;None 键不改)。 返回: {ok, item_id, item}(编辑后该题快照)。改后建议重跑 verify_variant。
| Name | Required | Description | Default |
|---|---|---|---|
| patch | No | ||
| item_id | Yes | ||
| thread_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, description carries full burden. It reveals key behaviors: zero LLM involvement, only patches passed fields, marks manual edit state, returns a snapshot. Missing details on overwrite vs merge and permissions, but sufficient for safe invocation in most contexts.
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?
Description is brief with one-line purpose, bulleted parameters, return spec, and follow-up advice. No wasted words, information is front-loaded and scannable.
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 3 parameters and no output schema provided in input, description covers all necessary aspects: behavior, parameter details, return structure, and post-edit action. Adequate for an agent to use correctly.
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 coverage is 0%, so description must compensate. It explains thread_id, item_id as string, and patch with fields stem?, answer?, analyze? (mapping analyze to solution field). Clarifies that None keys are unchanged. Adds meaning beyond bare schema.
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?
Description states '手动编辑某道变式(零 LLM,只 patch 传入字段)→ 标手动编辑态。' which clearly identifies the verb (manually edit), resource (variant), and specific scope (no LLM, only patch fields, marks manual state). This distinguishes it from siblings like generate_variants or verify_variant.
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?
Description includes '改后建议重跑 verify_variant' providing a post-edit recommendation. While it doesn't explicitly contrast with alternative tools, the context implies use for manual tweaks after generation. No exclusion criteria, but the guidance is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_feedback_batch_pngA
批次全量导出(PRD-010,🔴 发家长用这个不用单张):该学生一个批次 1~N 节全部 反馈单按课次拼一张长图 → {ok, batch_key, sheet_count, local_path, file_marker}。
batch_key 缺省 = 该生最新批次(新建课次后直接调它即可拿到含最新一节的全量图)。 🔴 导出后把 file_marker([[FILE:/tmp/fb_batch_*.png]])原样写进回复, 机器人据此把长图内联发回会话。
| Name | Required | Description | Default |
|---|---|---|---|
| batch_key | No | ||
| target_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It explains the batch combination and file marker usage, but does not disclose side effects, authorization needs, or error handling.
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 concise and front-loads the purpose with a clear label. However, it uses unstructured symbols and could be more formally structured.
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 tool with an output schema implied by the description, it covers input, output, and usage context. Missing details on error cases or preconditions, but adequate for its complexity.
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 coverage is 0%, so no parameter descriptions in schema. The description explains batch_key's default behavior, but target_id is not described beyond being required.
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 states it exports a batch of feedback sheets for a student as one long image, and explicitly distinguishes from the single-sheet export ('不用单张'). The return fields are listed.
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?
It specifies the tool is for sending to parents ('发家长用'), and notes that omitting batch_key fetches the latest batch. However, it does not explicitly state when not to use or list alternative tools from siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_feedback_pngA
把单张反馈单导成家长版 PNG 并下载到本机 → {ok, local_path, file_marker, ...}。
🔴 发家长的常规场景请用 export_feedback_batch_png(批次全量长图,用户实发形态); 本工具只在明确要"单独看某一节"时用。 🔴 导出后必须把返回的 file_marker(形如 [[FILE:/tmp/fb_export_123.png]])原样写进 给用户的回复里(方括号内一字不改),飞书机器人据此把这张图内联发回会话。 参数 sheet_id 字符串传。
| Name | Required | Description | Default |
|---|---|---|---|
| sheet_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
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 discloses that the tool exports a PNG to local machine and returns a file_marker that must be copied exactly. While it doesn't explicitly state it's read-only, the export nature implies no destructive side effects. However, it could be more explicit about permissions or error conditions.
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 fairly concise but includes necessary details. It uses emojis and bullet points for structure, making it scannable. However, it could be slightly shorter; the file_marker instruction could be integrated more cleanly.
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 the tool has only one parameter and an output schema exists (though not shown), the description covers the essential usage context and post-export steps. It mentions the output fields but not all. The missing details about parameter meaning and potential error cases prevent a higher score.
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 schema has 0% coverage for descriptions (no description in schema). The only parameter is sheet_id, and the description merely says '参数 sheet_id 字符串传' (pass as string). It does not explain what sheet_id represents (e.g., which feedback sheet ID) or how to obtain it. This is minimal value added beyond the schema type.
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 states the tool exports a single feedback sheet as a parent-version PNG and downloads it locally. It specifies the output structure {ok, local_path, file_marker, ...}. It also distinguishes itself from the sibling tool export_feedback_batch_png by emphasizing it's for single sheets only.
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 explicitly states when to use this tool (for viewing a single section) and when not to (regular parent scenarios should use export_feedback_batch_png). It also provides post-export instructions about the file_marker, guiding the agent on how to include it in the response.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_specialA
把专项导出成题目卷 / 答案卷双 PDF(苏俊宇卷版式,HTML→无头 Chrome→PDF)。
导出即对专项内每道 item used_count+1(认证计数=拿去上课的信号,不可逆软计数)。 🔴 卷面纪律:★ 仅 with_stars=True 显示(默认隐藏);【解析】仅 with_analysis=True 附带; 卷面绝不出现内部词(层/素材/薄弱)。
参数: special_id: 专项 id(字符串)。 papers: ['question','answer'] 任子集,缺省两卷都出。 with_analysis: 答案卷是否含解析(默认 True)。 with_stars: 是否显示难度星标(默认 False=隐藏)。 返回: {ok, special_id, question_url?, answer_url?, marked_count};空专项(无题) → {ok:false, reason}。
| Name | Required | Description | Default |
|---|---|---|---|
| papers | No | ||
| special_id | Yes | ||
| with_stars | No | ||
| with_analysis | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses key behavioral traits: side effect of incrementing an 'used_count' counter on each item (irreversible), and specifics about page content (stars, analysis, no internal terms). This goes beyond what annotations would provide, and since no annotations exist, the description fully bears the burden.
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 well-structured with sections, bullet points, and clear explanations. It is somewhat long but every sentence adds value. Minor redundancy could be trimmed, but overall it is efficient.
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 the tool's complexity (4 parameters, side effects, output schema), the description is complete. It covers purpose, parameters, side effects, return format, and edge cases (empty special). No gaps identified.
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 has 0% description coverage, so the description fully compensates by explaining each parameter in detail (special_id, papers, with_analysis, with_stars) including defaults and behavior. This adds significant meaning beyond the raw schema.
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 states the tool's purpose: export a special (a set of questions) into question and answer PDFs. It uses a specific verb ('导出') and resource ('专项'), distinguishing it from sibling tools like 'compose_special' or 'bind_special_to_lesson'.
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 explains what the tool does but does not explicitly state when to use it versus alternatives. There is no guidance on prerequisites or when not to use it. Usage is implied by the tool's purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
format_questionA
把自然 markdown 题干 + 选项数组确定性转成 blockJson(三端统一渲染格式)。底座永不抛、识别不了降级 markdown 块。
Claude 只产最小内容:markdown 题干(可含小问(1)(2)、图标记 、$LaTeX$、表格)+ 选项内容数组(label 自动 A/B/C…)。
参数: question_type 见字典 biz_question_type(1选择/2判断/3应用/4填空/5解答/6作图/7计算/8证明);options 仅选择题非空。
返回: {ok, block_json, degraded?}。把 block_json 喂给 ingest_question。
| Name | Required | Description | Default |
|---|---|---|---|
| stem | Yes | ||
| options | No | ||
| question_type | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Although no annotations are present, the description discloses that the tool never throws exceptions and degrades to markdown block on failure, and mentions the return structure. This is adequate for a formatting tool but could be more explicit about idempotency or side effects.
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 concise (5 sentences) and front-loaded with the core purpose. Every sentence adds value without fluff, though it could be slightly more organized for readability.
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 the tool's complexity, the description covers purpose, input rules, parameter semantics, return format, and integration with ingest_question. It does not include examples or edge cases, but is mostly complete for a formatting tool with an output schema.
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?
With 0% schema description coverage, the description fully compensates by explaining the meaning of question_type (with a dictionary reference), the condition for options (non-empty only for multiple choice), and the expected markdown content for stem, adding significant value beyond the schema.
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 states the tool converts natural markdown stem and options array into blockJson for unified rendering across clients, with specific details on input content rules. It distinguishes itself from sibling ingest_question by explaining the output is to be fed to that tool.
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 provides clear context on when to use (formatting questions before ingestion) and guides the AI on minimal content to produce (markdown with sub-questions, images, LaTeX, etc.). It does not explicitly mention alternatives or when not to use, but the context is sufficient for a specialized formatting tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_calc_itemsA
只出计算题数据、不渲染 PDF —— 拿 {q,a} 塞进自有版面(每日一练等)。
与 generate_calc_paper 同一套生成器(确定性、跨组去重、难度档、seed 复现), 区别 = 不出 PDF、直接返回题面与答案,排版归 agent。 🔴 题目由程序生成,答案由生成器同步算出——不需要再人工/LLM 验算。 参数: groups: [{type, count, label?, level?}],type 从 list_calc_types 查(严禁编造); level=basic/advanced 出基础版/提高版(同考点不同难度,两版一次做完)。 seed: 随机种子(任意字符串,同串复现同一批题;空=随机)。 fill_rows: 🔴 缺省 False = 要几题给几题(自排版场景不该被静默改数量); True 才向上凑整到栏数倍数。 返回: {ok, total, seed, groups:[{label, cols, mode, items:[{q,a}]}]}。
| Name | Required | Description | Default |
|---|---|---|---|
| seed | No | ||
| groups | Yes | ||
| fill_rows | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses key behavioral traits: deterministic generation via seed, cross-group deduplication, difficulty levels, and that fill_rows flag affects output count. No annotations provided, so description carries full burden and meets it well.
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?
Well-structured: starts with clear purpose, differentiates from sibling, notes important safety info, then details parameters. Every sentence adds value without redundancy. Efficient use of 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 3 parameters and no annotations, description covers all necessary context: return structure, parameter constraints, and special cases like level applicability. Output schema not provided but return object is described.
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?
Explains each parameter beyond schema: e.g., type must come from list_calc_types, level is basic/advanced with specific applicability, label is internal only, and fill_rows default False behavior. Adds context not in schema descriptions.
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?
Description clearly states the tool outputs calculation data without rendering PDF, contrasting with sibling generate_calc_paper. It specifies the output format {q,a} for custom layout, making its purpose distinct and unambiguous.
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?
Explicitly states when to use this tool vs generate_calc_paper: '不出 PDF、直接返回题面与答案,排版归 agent'. Also warns against manual verification due to automatic answer computation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_calc_paperA
一键生成计算题卷(确定性程序生成非 LLM)→ 题目卷 PDF(口算主场景不出答案卷)。
按 groups 逐组生成(每组一个类型一个多栏区块),约束内置:进退位可控、除法整除/ 有余数分型、分数自动约分/假分数化带分数、全卷跨组去重;题目卷带「姓名/用时/做对」栏。 参数: groups: [{type, count, label?, level?}],type 从 list_calc_types 查(严禁编造)。 title: 卷名(卷面可见,如"口算训练③(10分钟)")。 seed: 随机种子(任意字符串,同串复现同一份卷;空=随机)。 with_group_label: False 时不印组标(整卷混排风格)。🔴 组标卷面只印「一、二」 序号标识、绝不印练习内容名(学生自明,规范 2026-07-19)。 with_answer: True 才附带教师答案卷(🔴 口算卷默认不出,高年级分数/方程需核对时才开)。 fill_rows: 缺省 True = 每组题数向上凑整到栏数倍数(网格每行凑满,故实际题数可能 多于 count);要「填几题出几题」传 False。 返回: {ok, question_url, answer_url?, total, seed};未登录/未知类型 → {ok:false, reason}。
| Name | Required | Description | Default |
|---|---|---|---|
| seed | No | ||
| title | No | 口算训练 | |
| groups | Yes | ||
| fill_rows | No | ||
| with_answer | No | ||
| with_group_label | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description adequately covers behavioral details: deterministic seeding, constraint handling (carrying, division, fractions), fill_rows behavior, answer sheet toggle, and group labeling restrictions. It lacks explicit permission or side-effect information, but the generation nature implies safe operation.
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 verbose but structured with bullet points and emojis for readability. It front-loads the core purpose and then details parameters. Some repetition and informal formatting slightly reduce conciseness, but it remains efficient for the complexity.
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 the absence of annotations and output schema details, the description covers all necessary aspects: input parameters, return format, constraints, and behavioral expectations. It provides sufficient context for correct invocation, even including a note for a 2026-07-19 specification.
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 description provides extensive parameter explanations beyond the schema, including defaults, valid values (e.g., type must be from list_calc_types), and nuanced behaviors (e.g., fill_rows rounding, with_answer default false for oral arithmetic). This fully compensates for the 0% schema description coverage.
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 states the tool generates a calculation paper PDF ('一键生成计算题卷') and specifies it's a deterministic program (not LLM), and distinguishes the default behavior for oral arithmetic (no answer sheet). It includes the output format and usage constraints, making the purpose unambiguous.
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 includes some usage guidance, such as referencing list_calc_types for valid types and noting default behaviors. However, it does not explicitly differentiate from sibling tools like generate_calc_items or compose_paper, nor does it state prerequisites or when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_variantsA
触发变式生成(start_variants 续跑,LLM 轮 ~70s)→ 取题组。
参数: thread_id : make_variants/confirm 后的会话 id。 auto_verify: True=生成后每题自动 sympy 验算;False(默认,产品口径)=每题 tier=pending, 按需 verify_variant。透传 agent_config.auto_verify。 返回: {ok, thread_id, count, variants:[{item_id, seq, stem, answer, solution, qtype, difficulty, tier, verify_status, figure_spec, dna, question_id}]}。 🔴 生成偶发首轮空题组(opus 对压轴母题首轮不收尾)——本工具按 AC4「重试≤2」自动再触发一次 start_variants(实测第二次即出题);两次仍空 → ok:false + 引擎回文,交驱动 agent 处置。
| Name | Required | Description | Default |
|---|---|---|---|
| thread_id | Yes | ||
| auto_verify | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses key behaviors: occasional empty first attempt due to opus, automatic retry up to 2 times, and fallback to ok:false with engine response. Since no annotations are provided, the description carries full burden and does it well.
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 front-loaded and each sentence adds value, though the warning about empty generation could be slightly more integrated. Overall well-structured but not maximally concise.
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 the presence of an output schema, the description's detailed return list is redundant but not harmful. It covers parameters, behavior, and return adequately for the tool's complexity.
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 fully compensates. It explains thread_id as the session id after make_variants/confirm, and auto_verify in detail including its effect and default behavior. Adds significant meaning beyond the raw schema.
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 states it triggers variant generation and retrieves question sets. It distinguishes from siblings like make_variants, verify_variant, etc., by specifying it is a continuation of start_variants.
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 usage after make_variants/confirm via thread_id, but does not explicitly state when to use this tool versus siblings or provide when-not conditions. Guidelines are implied but not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_book_structureC
书结构整树(目录树 + 各节点内容项,一次返回可渲染)。
返回 {ok, book, tree:[{id,name,nodeType,kpId?,items:[{id,kind,questionId?,override?,explain?}],children:[...]}]}。 override 优先于题库原题面渲染;kind=explain 走 explain.title/text。
| Name | Required | Description | Default |
|---|---|---|---|
| book_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It partially discloses behavior by detailing the return structure and special handling of override and kind=explain, but it does not explicitly state that this is a read-only operation or mention authorization needs.
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 concise and front-loaded with the purpose, followed by a structured representation of the return type. Every sentence adds value, and there is no extraneous information.
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 the complexity of the tool (returning a nested tree), the description provides a fairly complete output schema, but it lacks explanation of the input parameter and behavioral context like error handling. Since an output schema exists, the burden is reduced, but gaps remain.
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 clarify the book_id parameter beyond its name. There is no explanation of its format, how to obtain it, or constraints, leaving the agent with no additional meaning.
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 states that the tool returns the full book structure tree including the table of contents and content items for rendering. This distinguishes it from sibling tools like list_books or add_book_node, which have different 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?
There is no explicit guidance on when to use this tool versus alternatives, nor are there any exclusions or prerequisites mentioned. The description only focuses on what the tool does, not on usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_feedback_sheetC
读一张反馈单详情(含五列 rows)→ {ok, sheet}。参数 sheet_id 字符串传。
| Name | Required | Description | Default |
|---|---|---|---|
| sheet_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description should cover behavioral traits, but it only mentions the return structure and parameter type, omitting authentication, error handling, or side effects.
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 short and front-loaded, but lacking structure and detail makes it only adequate.
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 the presence of an output schema, the description should still clarify the 'five columns' and sheet content; it does not, leaving gaps for an agent.
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 coverage is 0%; the description only restates that sheet_id is a string without explaining its role or format, adding minimal value.
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 states it reads feedback sheet details with structure {ok, sheet}, distinguishing it from sibling tools like list_feedback_sheets and upsert_feedback_sheet.
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 provided on when to use this tool versus alternatives, nor are any conditions or exclusions mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_lecture_contentA
读某知识点/课次的讲义正文(🔴 据讲义出题的原料入口)→ :9090 GET /teacher/kg/lecture?subjectId=。返回 {ok, subject_id, text, example_qids, ...}。
🔴 text = docJson(Tiptap)递归抽出的纯讲解正文;例题只是 kgExample(qid) 引用——正文里以 【例题 qid=...】 占位、真题面不在讲义片段里。要看例题题面 → 用返回的 example_qids 调 get_question(qids)。据 text 理解知识点讲法后,agent 自己出同源题。 参数: subject_id : 知识点/课次的 biz_subject id(get_plan_detail.kgNodeIds / resolve_kg 来)。 🔴 讲义按前缀树序汇聚:传课时节点会拿到其下片段拼成的整篇。 book_id : 教材/书 id(空=默认书)。 owner : 指定讲义作者 owner(字符串 userId);空=默认视图(我的>本部门管理员>官方兜底)。 返回: {ok, subject_id, node, book_id, owner, has_content, text, example_qids:[qid str]}。 🔴 has_content=False / text="" = 该知识点无讲义资产(空态,agent 应降级为凭 KG + 题库出题)。
| Name | Required | Description | Default |
|---|---|---|---|
| owner | No | ||
| book_id | No | ||
| subject_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses behavior: text extraction method, placeholder format for examples, aggregation of fragments for lesson nodes, empty state handling, and owner view priority. No contradictions.
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 well-structured with bullet points, warnings highlighted, and key information front-loaded. Every sentence serves a purpose; no fluff.
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 the complexity, the description is complete: covers purpose, parameter usage, return fields, edge cases (empty content), and follow-up actions. Implicit output schema in text is sufficient.
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?
Despite 0% schema description coverage, the tool description provides extensive semantics for all three parameters: subject_id source and aggregation, book_id default, owner fallback logic, and expected values. Adds significant value beyond the bare schema.
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 states the tool retrieves lecture content for a knowledge point/lesson, explicitly positioning it as the raw material for generating questions. It distinguishes from sibling tools like save_lecture_frag by focusing on reading, and references get_question for follow-up.
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?
Provides guidance on how to obtain subject_id via other tools, explains the behavior for different parameter values (e.g., empty book_id, owner fallback), and instructs the agent to degrade to KG + question bank when has_content is false. Lacks explicit contrast with all siblings but covers essential usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_plan_detailA
读某课程计划的全部课次明细(🔴 备课前读「这节课的编排蓝本」)→ :9090 GET /teacher/schedule/plan/{id}。返回 {ok, plan, lessons}。
当前链条最硬的读缺口:现有 upsert_course_plan 只写、list_schedule 只给场次概览,读不到 某课次的分段蓝本 / 课内锚点 → 圈题无依据。本工具补上。 参数: plan_id : 课程计划 id(字符串雪花号;list_schedule 的场次里带 plan_lesson_id 可回溯到 plan)。 返回: plan : {id, name, targetType, targetId, termTag, year, materialNote, defaultPaperSlots(计划默认专项卷位模板), status, createTime, updateTime, lessonCount} lessons : [{id, planId, lessonSeq, title, lessonType('0'教学/'1'测试), tag, sourceRef, thinkingAction, layerTarget(层数目标如 '2→3'), parentCopy(家长版文案,🔴 家长可见、 无内部词), kgNodeIds:[str](🔴 课内锚点,直接喂 search_questions(subject_id=)), paperSlots:[{slot_seq,name,style,rules,note,paper_id,manual_ready}](🔴 PRD-B-101 专项卷位蓝本: 每卷位对应一张专项卷;空卷位=待组,逐卷位走 compose_paper/create_paper(lesson_id,slot_seq)), paperSlotsInherited(true=继承自计划 default_paper_slots), prepState(备课态,服务端按 paper_slots 推导:'0'未备/'1'备课中/'2'已备好)}]
| Name | Required | Description | Default |
|---|---|---|---|
| plan_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, description discloses it's a read operation returning {ok, plan, lessons}. It details return fields and their usage, but lacks explicit read-only assertion.
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?
Description is structured with bullet points and emojis for clarity, front-loaded with purpose. Slightly lengthy but well-organized.
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?
Output schema exists and is fully described inline. Every field is explained with usage hints and cross-references to other tools, making it self-contained.
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 has 0% description coverage, but description details plan_id as '课程计划 id(字符串雪花号)' and explains how to obtain it from list_schedule, adding meaning beyond schema.
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?
Description states verb '读' (read), resource '课程计划' (course plan), and result '全部课次明细' (all lesson details). It distinguishes from sibling tools like list_schedule by explicitly pointing out that it fills the gap of reading full lesson details.
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?
Description advises using before lesson prep: '备课前读「这节课的编排蓝本」'. It explains it fills a gap in the current chain but does not explicitly state when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_punch_dayA
读回「第 N 天」完整内容 → {ok, goals, modules, review}(展示页/生成器回读共用)。
modules 结构与 upsert_punch_day 入参同构:计算模块带 items:[{q,a}]; 🔴 返回与 upsert 入参同构(round-trip 语义):轮换位返 {type:'rotating',title,qids}—— 不含题面(改字回读→upsert 直接可用);要渲染态题面走 BE /teacher/punch/preview (blocks 由 BE 现取 block_json 组装,agent 无需自行拉题)。 review = {status, issues:[{module,seq,kind,note,resolved}]}。 🔴 局部改一天内容 = 先 get 拿全量 → 改 → 整天 upsert_punch_day 回灌(覆盖语义)。 参数: book_id 字符串;day 第几天(1 起)。
| Name | Required | Description | Default |
|---|---|---|---|
| day | Yes | ||
| book_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description fully covers behavioral traits: round-trip semantics, rotating items returned without question text, review status structure, and that blocks are assembled by the backend. This is comprehensive.
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 concise but information-dense, using bullet points and icons to convey key points. It is front-loaded with purpose and every sentence adds value.
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 the presence of an output schema, the description provides enough context on the return structure and round-trip semantics. It covers the main components and how to use the tool in conjunction with upsert_punch_day.
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 coverage is 0%, so the description must explain parameters. It does: book_id as string, day as integer (1-indexed). However, it doesn't elaborate on constraints like format or range, but it's sufficient for basic usage.
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 states the tool reads back the full content for a given day, listing the fields (ok, goals, modules, review). It distinguishes from siblings like list_punch_days and upsert_punch_day by specifying its role in the round-trip workflow.
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 explicitly explains when to use this tool: before modifying a day's content (get full data, then modify and upsert). It also notes that for rendering previews, a different endpoint should be used.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_questionA
按 id 批量拉题目详情(🔴 装段前人工核对题面/答案/解析,避免盲装误人子弟)→ GET /teacher/question/list?ids=。返回 {ok, items}。
参数: ids : 题 id 列表(字符串雪花号,单次 ≤100);软删题 BE 自动过滤,返回按入参保序。 返回: {ok, items:[{id, stem_text, answer, analyze, question_type, difficult, subject_id, block_json/answer_block_json/analyze_block_json(三端结构化渲染源), stem_img, free_tags, patterns, question_knowledges(U 轨 kp), status, label_status}]}。 🔴 选项内容在 block_json 里(选择题),无独立 options 字段。
| Name | Required | Description | Default |
|---|---|---|---|
| ids | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It discloses multiple behavioral traits: auto-filtering of soft-deleted questions, ordering by input order, structure of options (in block_json), and maximum batch size. No contradictions with annotations (none exist).
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 concise yet comprehensive, structured with bullet points for parameters and return fields. Every sentence adds value: purpose, API endpoint, parameter details, return format, and special notes about options. No redundant information.
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 the tool's simplicity (one parameter, output schema described), the description covers all necessary aspects: input constraints, output fields, ordering, filtering, and behavior for question types. It is complete for an AI agent to invoke correctly.
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 has zero description coverage for the 'ids' parameter. The description adds significant meaning: the type (strings, snowflake numbers), constraints (single call ≤100), and behavior (order preserved). This fully compensates for the schema 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 states the action ('按id批量拉题目详情') which is retrieving question details by IDs. It distinguishes from sibling tools like search_questions (for searching) and delete_questions (for deletion) by specifying batch retrieval by ID list.
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 includes a warning ('装段前人工核对') indicating when to exercise caution, and mentions constraints like max 100 IDs. However, it does not explicitly contrast with alternatives or state when not to use the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_role_manualA
取角色说明书全文(协议内自带;另有 MCP resource teacher://manual/)。
role 分角色返回(缺省跟随本连接的 TEACHER_MCP_ROLE):
role="data"/"ingest"/"lecture"(录入线)= 录入角色说明书(七类来源路由 + IngestItem 契约 + 讲义录入)。
role="prep" = 备课角色说明书(备课线路编排 + 私有池铁律 + 变式补题路径)。
role="variant" = 举一反三角色说明书(批 3 落笔)。
role="all" = 总手册(开场三步 + 四线工具地图 + 四条编排流程 + 铁律盒子 + 自救表)——fresh agent 首选。 🔴 首次以某身份使用本 server 的 agent 先调对应 role:说明书告诉你这条线怎么一步步走、每步调什么工具。 返回: {ok, role, manual}(markdown 全文);文件缺失 → {ok:False, hint}。
| Name | Required | Description | Default |
|---|---|---|---|
| role | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so description carries full burden. Discloses return format {ok, role, manual} and error case {ok:False, hint}. Since it's a read-only retrieval, no major behavioral traits missing.
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?
Description is detailed but well-structured with bullet points and sections. Every sentence adds value; could be slightly trimmed but overall efficient for the information density.
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 one optional parameter and existence of output schema, description fully covers tool behavior, input meaning, output format, and error handling. No gaps.
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?
Input schema has one param 'role' with default but no description. Description fully compensates by explaining each possible value ('data','ingest','lecture','prep','variant','all') and their corresponding manual content, providing complete semantic coverage.
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?
Clearly states it retrieves the full role manual, distinguishes from sibling tools like get_feedback_sheet, and specifies each role's content. Mentions alternative MCP resource for specificity.
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?
Provides explicit guidance on when to use, e.g., first-time agents should call with corresponding role; suggests role='all' for fresh agents. No explicit when-not, but context suffices. Also references a resource alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_student_profileA
取对象详情 + 肖像(含 error_signals 易错库)→ :9090。返回 {ok, target, profile}。
备课前读画像、看回收后新增的 pending 易错信号都走它。 参数: target_id : 对象 id(字符串) target_type : 'student'(默认)| 'class'
| Name | Required | Description | Default |
|---|---|---|---|
| target_id | Yes | ||
| target_type | No | student |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It reveals the return structure and mentions the endpoint ':9090', but does not disclose potential side effects, authorization requirements, or error handling behavior (e.g., what happens if target_id is invalid). The addition of 'error_signals' adds useful context, but more behavioral clarity is needed for a complete picture.
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 concise, with only two sentences and a parameter list. It front-loads the core purpose and return format. Every piece of information is relevant, and there is no redundancy. The structure is efficient and easy to parse.
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 the tool has 2 parameters and an output schema (not shown but referenced by return format description), the description covers the essential: purpose, parameters, and return structure. It does not provide error handling or edge cases, but it is sufficient for typical use. The context of preparing lessons is included, which adds situational completeness.
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 description provides explicit parameter descriptions beyond the schema: 'target_id: 对象 id(字符串)' and 'target_type: 'student'(默认)| 'class''. Since schema coverage is 0%, this compensation is valuable. The description adds default value and allowed values, making it easy for an agent to understand usage.
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 states the tool fetches object details and portrait including error signals ('取对象详情 + 肖像(含 error_signals 易错库)'), and specifies the return format '{ok, target, profile}'. This distinguishes it from other tools like get_feedback_sheet or search_questions, as it is specifically for student profiles with error signal data.
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 explicitly mentions when to use this tool: before lesson preparation ('备课前读画像') and to view pending error signals after recycling ('看回收后新增的 pending 易错信号都走它'). While it does not list exclusions or alternatives, the context is clear and practical for an AI agent deciding on tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
health_checkA
探活三依赖(ruoyi BE / toolkit / MySQL),任何异常算 down 不抛。返回 {ruoyi, toolkit, db}。
ruoyi: GET /actuator/health(401 也算 up,健康端点要鉴权属正常)
toolkit: GET /info
db: pymysql SELECT 1 全程 trust_env=False、超时 5s。返回 {ruoyi:{up,url}, toolkit:{up,url}, db:{up}}。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description discloses key behaviors: trust_env=False, timeout 5s, specific endpoints per service, and that 401 for ruoyi is considered up (auth needed). It also states that any exception results in 'down' and no exceptions are thrown. With no annotations, this level of detail is commendable.
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?
Description is concise, well-structured with bullet points for each service. Every sentence adds value. No redundant or missing information.
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 zero-parameter health check with an output schema, the description covers return structure, behavior, edge cases, and nuances (e.g., 401 handling). It is complete and actionable.
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?
Input schema has zero parameters and schema description coverage is 100%. Description does not need to add parameter info. Baseline score of 4 applies as no parameters exist.
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?
Description clearly states it checks three dependencies (ruoyi BE, toolkit, MySQL) and returns status objects. It uses specific verbs ('探活') and resources, and distinguishes from sibling tools which are all action-oriented (e.g., login, search, delete).
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-use or when-not-use guidance. However, the tool's purpose as a health check implies it should be used for verifying service status. No alternatives are mentioned, but no sibling tool serves this purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ingest_itemsA
🔴 统一入库口(七类来源殊途同归):一次调用完成 题+图+知识点关系+打标字段+可选成卷,无需事后手补。
每题依次:图代传 OSS(local_path→ossUrl 并替换题面占位)→ blockJson 格式化 → 录题落库 (kp_id 走 knowledgeIds → 底座自动写 biz_question_knowledge + dim1_kp_id)→ 打标字段 (err/scenario/free_tags → biz_question_ai;why → difficulty_reason;models/new_models → 模型链,批尾串行)。 参数: items: IngestItem[](契约见 get_role_manual;未知字段拒绝,缺 stem 单条 fail 不中断批) subject_root: KG 教材根(数学七上="100";科学="901".."906")——无 kp_id 的题 subject_id 落此根 paper: 可选建卷 {name, category_id, total_score, suggest_time};null=散题不成卷 前置信息原样落库不被覆盖(AC3);同题干重复录入自动去重复用(AC4)。 🔴 双管道来源标记(PRD-O-005 溯源增强):本调用自动生成一个批次号,每题打 import_source="mcp-<角色>"(MCP 机录)+ import_batch_id=该批次号。录完记住返回的 batch_id, 日后 search_questions(batch_id=…) 或 my_recent_uploads() 一键找回。 不带 "mcp-" 前缀的 import_source(main/手工导入/'举一反三'引擎…)= 其他/手工管道。 返回: {ok, batch_id, results:[{num, question_id, created, reason?, warnings?}], paper_id?, stats:{ok,reused,fail,img}, view_url?}。
| Name | Required | Description | Default |
|---|---|---|---|
| items | Yes | ||
| paper | No | ||
| subject_root | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully carries the burden. It details every step: image upload to OSS, blockJson formatting, question recording, knowledge mapping, labeling, paper creation, unknown field rejection, duplicate detection, and serial execution for new_models. The return values and batch_id usage are fully explained.
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 fairly concise given the complexity, front-loading the main purpose. It uses bullet points and structured sections. However, it could be slightly more succinct without losing information.
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 the tool's complexity, the absence of annotations, and presence of an output schema, the description covers all behavioral, return, and usage aspects. It references AC3, AC4, and PRD-O-005, and connects to sibling tools like 'search_questions' and 'my_recent_uploads'. No gaps remain.
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?
Although the input schema itself provides rich descriptions for each parameter, the tool description adds value by explaining the workflow context (e.g., image handling order, serial model proposal) and high-level relationships. The 0% schema coverage in context is inconsistent with the provided schema, but the description compensates adequately.
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 states it is a unified ingestion endpoint ('统一入库口') that handles questions, images, knowledge points, labeling, and optional paper creation in one call. It distinguishes from sibling tools like 'ingest_question' (singular) and 'compose_paper' by emphasizing batch and combined functionality.
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 provides explicit context on when to use (for unified ingestion from seven sources) and references 'get_role_manual' for contract details. It mentions duplicate handling and dual pipeline marking, but does not explicitly exclude alternative tools or state when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ingest_questionA
录一道题入库(事务多表),归属当前登录 teacher。返回 {ok, question_id, created, import_source, batch_id}。
free_tags: 自由标签 → biz_free_tag 字典 + biz_question_free_tag 关联(三件套之一,检索锚)。
参数(NOT NULL=必填): subject_id : 科目锚 level1(年级根,如 数学七上 的根 id),NOT NULL question_type: 字典 biz_question_type 1选择/2判断/3应用/4填空/5解答/6作图/7计算/8证明,NOT NULL difficult : 1基础/2提升/3压轴,NOT NULL stem_text : 纯文本题干(全文检索 + 去重 hash),NOT NULL block_json : 来自 format_question 的 blockJson(三端渲染);空则只存 stem_text answer_text / analyze_text: 答案 / 解析文本 knowledge_ids: 锚知识点叶子 [{kpId, isPrimary, source, confidence}](KG 关联,供组卷/举一反三召回) images : 题图 [{ossUrl, assetId, role, ...}](来自 upload_image) external_key: 幂等键(book+节+课时+题号),去重;空则按 stem_text hash 去重 status : '0'草稿 / '1'发布(默认发布) import_source: 双管道来源标记;空则自动打 "mcp-<角色>"(MCP 机录,与手工/其他管道可区分) import_batch_id: 录入批次号;空则自动生成 mcp-YYYYMMDD-HHMMSS-4位随机 🔴 双管道语义:不带 "mcp-" 前缀的 import_source(main/手工导入/'举一反三'引擎…)= 其他/手工管道。 异常: 底座报错 → {ok:false, reason}(不假成功)。
| Name | Required | Description | Default |
|---|---|---|---|
| images | No | ||
| status | No | 1 | |
| difficult | Yes | ||
| exam_year | No | ||
| free_tags | No | ||
| stem_text | Yes | ||
| block_json | No | ||
| source_raw | No | ||
| subject_id | Yes | ||
| answer_text | No | ||
| region_code | No | ||
| source_type | No | ||
| analyze_text | No | ||
| external_key | No | ||
| import_source | No | ||
| knowledge_ids | No | ||
| question_type | Yes | ||
| import_batch_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fully discloses behavior: it returns a structured response with fields like ok, question_id, created, import_source, batch_id; explains the dual-pipeline semantics for import_source; and specifies error behavior ('底座报错 → {ok:false, reason}'). This covers safety and side effects adequately.
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 well-structured with bullet points and clear headings. It front-loads the return type and uses a concise table-like format for parameters. Every sentence earns its place without 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?
Given the complexity (18 parameters, 4 required, no annotations, output schema present), the description is complete. It explains the output return structure, all parameters thoroughly, and interactions with other tools (e.g., upload_image, format_question). No gaps are left.
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, and it does. It explains each parameter's meaning, constraints, defaults, and relationships (e.g., free_tags linked to biz_free_tag, knowledge_ids linked to list_kg_tree). This adds significant value beyond the bare schema.
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 states the tool's action: '录一道题入库(事务多表)' (ingest a question into database with multi-table transaction) and associates it with the current teacher. It distinguishes from siblings like search_questions and delete_questions by specifying it is a creation operation.
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 does not explicitly state when to use this tool versus alternatives. While it is implied for adding a single question, there is no guidance on prerequisites or when not to use it. Sibling tools like 'ingest_items' potentially serve a similar batch purpose, but no comparison is made.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
label_questionA
给一道已入库的题写 DNA 打标(难度 + 知识点锚 + 解法骨架 + 变式底料),归当前登录 teacher。
前置:题已 ingest_question 入库(有题干/答案/解析/配图)。Claude 先读题(多模态)+本章 KG 上下文判好,再调本工具落库。 参数(必填 = question_id, difficult;其余按题打满 / 基础题留空): question_id : biz_question.id difficult : ★难度 1基础/2中等/3较难/4压轴(按「难度评级」rubric 判档,非 LLM 自评) dim1_kp_id : 知识点锚叶子 id(同版本精确锚,如浙教七上根 100 下的叶子;不跨版本近似,对不上就留空+need_anchor_review=1) anchor_confidence: 锚定置信 0-1 need_anchor_review: 锚存疑待人审 1/0 dim5_structure: 图形/情境结构指纹 solution_skeleton: 解法骨架(步骤序列,【】标最难步)—— 撑变式①数值②结构算子 assessment_type: 考察类型 hard_points : 难点[](受控词表 biz_anno_ERROR:概念混淆/计算失误/审题偏差/隐含遗漏/分类不全/表达不规范/思路缺失) breakthrough_points: 突破点[](★1/★2 送分/常规题可空) tags : 检索标签 3-6(召回用) scenario : 场景(仅应用题;受控词表 biz_anno_SCENE:纯数学/现实生活/科学跨学科/数学文化) dna_type : DNA 类型 parametric_slots / modeling_frame / conditions / variation_profile: 变式底料(母题打满,普通题可简,应用题才有 modeling_frame) 返回: {ok, question_id, ai_id, difficult, dim1_kp_id};异常 → {ok:false, reason}。
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | ||
| dna_type | No | ||
| scenario | No | ||
| difficult | Yes | ||
| conditions | No | ||
| dim1_kp_id | No | ||
| hard_points | No | ||
| question_id | Yes | ||
| dim5_structure | No | ||
| modeling_frame | No | ||
| assessment_type | No | ||
| parametric_slots | No | ||
| anchor_confidence | No | ||
| solution_skeleton | No | ||
| variation_profile | No | ||
| need_anchor_review | No | ||
| breakthrough_points | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It describes that the tool updates the question's DNA labeling, lists parameters with constraints, and specifies the return format including error handling. It does not explicitly mention side effects or permissions, but overall provides good behavioral detail.
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 lengthy but well-structured with clear sections: purpose, prerequisite, parameter list, and return values. It front-loads the main purpose and uses a bullet-like format for parameters. Some information could be consolidated, but it remains clear and scannable.
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 the complexity (17 parameters, 2 required) and no annotations, the description covers all necessary aspects: prerequisites, detailed parameter meanings, return values, and error handling. It is fully sufficient for an agent to select and invoke the tool correctly.
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. It does so thoroughly, explaining each parameter's role, constraints (e.g., difficult rubric, controlled vocabularies for hard_points and scenario), and how to fill them. This adds significant value beyond the schema.
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 states the tool's purpose: to write DNA labeling (difficulty, knowledge anchor, solution skeleton, variant base material) for an already ingested question. It uses specific verbs and resources, and distinguishes itself from siblings like ingest_question by explicitly requiring prior ingestion.
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 explicitly states the prerequisite (question must be ingested via ingest_question) and suggests that Claude should read the question and KG context before calling the tool. It does not explicitly name alternatives or when not to use, but the context provides sufficient guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_booksA
我的书列表(owner 归属自动过滤 + type/subject/status 可选筛选)。
返回 {ok, books:[{id,bookType,title,subjectId,grade,nodeCount,questionCount,itemCount,...}]}。 统计字段(nodeCount/questionCount/itemCount)供书架卡片 'N 节 · M 题' 展示。
| Name | Required | Description | Default |
|---|---|---|---|
| status | No | ||
| book_type | No | ||
| subject_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries full burden. It discloses return structure and statistical fields, and implies read-only behavior with owner filtering.
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?
Extremely concise, with no wasted text. Front-loaded purpose, immediate filtering info, and explicit return format.
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?
Describes return shape and purpose of statistical fields, but omits pagination, ordering, and error handling, which are minor given the tool's simplicity.
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 coverage is 0%, and description mentions optional filtering by status, book_type, subject_id, but lacks details on valid values or formats.
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 states it lists books with automatic owner filtering and optional filtering by type, subject, and status, distinguishing it from sibling tools like create_book and get_book_structure.
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?
Provides clear context for use (listing books with filters) but does not explicitly state when not to use or mention alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_calc_typesA
计算题出题器·类型全表(覆盖人教版小学 1-6 年级计算谱系,46 类)。
每类一条 {code, name, grade(1-6), term(1上/2下)}:一年级 5以内加减/10以内/20以内进退位/ 两位数±一位数…,二年级 100以内/表内乘除/有余数除法…,三年级 三位数/乘除一位数/同分母分数/ 一位小数…,四年级 三位数乘两位数/四则混合/简算/小数加减…,五年级 小数乘除/解方程/异分母 分数/公因数公倍数/约分…,六年级 分数乘除混合/百分数互化/化简比/解比例。 返回: {ok, types:[{code,name,grade,term}]}。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries full burden. It is a read-only operation returning a list, but it does not explicitly state it has no side effects or requires no authentication. The return format is clear, but behavioral traits beyond the data are not disclosed.
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 front-loaded with purpose, then provides a detailed but somewhat long list of grade-specific categories. Every sentence contributes information, but it could be more concise by grouping categories without enumerating every single entry.
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 parameters and an output schema existing, the description fully covers the return format and enumerates all 46 categories, leaving no ambiguity about what the tool provides.
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?
There are zero parameters, so baseline is 4. The description adds value by detailing the structure of each item (code, name, grade, term) and the overall return schema, which is not present in the input schema since there are no parameters.
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 explicitly states the tool returns a 'full table of calculation types' covering 46 categories for grades 1-6, with specific grade and term breakdowns. The verb 'list' and detailed contents clearly distinguish it from sibling tools like generate_calc_paper.
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 does not provide any guidance on when to use this tool versus alternatives. It only describes what data it returns, with no context on prerequisites, scenarios, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_feedback_sheetsA
列出当前老师名下的课后反馈单(owner 硬隔离)→ {ok, rows, total}。
rows=[{id,targetId,targetName,batchKey,lessonSeq,title,lessonDate,...}](新→旧)。 🔴 改单前先用它找回目标单的 id,别新建重复单;🔴 接力新课次前先用它看该生 最新批次已到第几节(batchKey+lessonSeq),新单 lesson_seq = 最大值 + 1。 参数: target_id(可选)/ keyword(标题模糊)/ batch_key(只看某批次,PRD-010)。
| Name | Required | Description | Default |
|---|---|---|---|
| keyword | No | ||
| batch_key | No | ||
| target_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description bears full burden. It reveals the output format, ordering (newest first), owner isolation, and three filtering parameters. It does not explicitly state it is read-only, but the context implies it. Overall, good 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 concise yet informative, with a clear structure: purpose, output fields, usage guidelines, parameter list. The use of emoji and breaks aids readability, though it could be slightly shorter without losing clarity.
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 the tool has three optional parameters, no required ones, and an output schema (which is not detailed but the description lists key fields), the description covers use cases, output structure, and filtering options adequately. It leaves little ambiguity for an AI agent.
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 schema has zero description coverage, but the description adds meaning for all three parameters: target_id (optional), keyword (fuzzy title match), batch_key (filter to specific batch PRD-010). This compensates well for the schema's lack of 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 clearly states the tool lists feedback sheets under the current teacher with owner isolation, returning {ok, rows, total}. It distinguishes itself from siblings like get_feedback_sheet (likely single fetch) and upsert_feedback_sheet (create/update) by focusing on listing and retrieval.
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 provides explicit usage guidance with red markers: use this to find a target ID before editing to avoid duplicates, and check the latest batch and lesson sequence before continuing to the next lesson to set the correct lesson_seq. This clarity on when and why to use the tool is exemplary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_kg_treeA
查平台知识点树(组卷的知识点白名单源)。返回顶层节点 + children 嵌套。
编排层(Claude Code)据此选要考查的知识点叶子 id,喂给 compose_paper 的 outline.subjectId。 返回: {ok, nodes:[{id,name,children?}, ...]};空树 → {ok:true, nodes:[]} 不报错。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully bears the burden and delivers: it explains the return format, nesting structure, and empty tree handling. This enables the agent to predict behavior accurately.
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 concise, front-loading the main action. It includes usage context and return format in three sentences, which is efficient and well-structured.
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 zero parameters and an output schema that is partially described, the description is complete. It covers the return type, structure, and edge case (empty tree), and explains how the output is used.
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 tool has zero parameters, so the description does not need parameter details. Baseline is 4 as per guidelines, and the description adds no unnecessary param info.
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 states the tool queries the knowledge point tree for composing papers. It specifies the return structure (top-level nodes with children) and its role in feeding IDs to compose_paper, distinguishing it from sibling 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?
The description implies usage before compose_paper to obtain subject IDs, providing clear context. However, it lacks explicit when-not-to-use or alternative tools, which is acceptable given the specific role.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_lecture_docsA
查讲义目录(哪些课时/知识点有讲义片段,定位「据讲义出题」的锚点)→ :9090 GET /teacher/kg/lecture-catalog。返回 {ok, volume_id, lessons}。
参数: book_id : 教材/书 id(空=服务端默认书 DEFAULT_BOOK)。 返回: {ok, volume_id, lessons:[...]}(lessons 为课时×来源聚合,含各课时 subjectId/标题/ 有无片段/owner 等;结构随 BE getCatalog 演进)。库里无讲义资产时 lessons=[](空态非报错)。
| Name | Required | Description | Default |
|---|---|---|---|
| book_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, but description fully discloses the GET request, return structure, empty state behavior, and evolution of backend structure. Lacks details on authentication or side effects, but as a read list, it's sufficient.
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?
Description includes implementation details (port, endpoint) that are not essential for an agent, but is still relatively short. Could be more streamlined.
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?
Covers purpose, parameter, return structure with example fields, and edge case (empty catalog). Missing error handling details, but output schema likely fills that 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?
Input schema has 0% coverage, but description explains the single parameter book_id with default behavior (empty = server default), adding value beyond the schema.
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 states the tool lists the lecture catalog, specifying which class hours/knowledge points have fragments, and distinguishes from siblings like get_lecture_content by focusing on the index/catalog.
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?
Usage is implied (to find lectures with fragments for question generation), but no explicit when-to-use or when-not-to-use as compared to other lecture tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_punch_daysA
列一本打卡书的全部天(目录 + 审核态)→ {ok, days:[{day,node_id,item_count,review}]}。
review = {status:"pending|passed|issue", issueCount}(审核页目录角标 ○/✓/⚠N 的数据源)。 🔴 重灌某天前先用它看该天是否已存在、审核到哪一步(已 passed 的天重灌会把审核态打回)。 参数 book_id 字符串传。
| Name | Required | Description | Default |
|---|---|---|---|
| book_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses important behavioral traits: the destructive effect on review status when reimporting a passed day, and explains the review substructure. No annotations exist, so the description carries full burden and does so effectively.
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?
Concise and well-structured: first line states purpose and return format, then explains review substructure, followed by a critical usage warning, and ends with parameter note. No unnecessary words; every sentence adds value.
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?
Complete for a simple list tool: covers purpose, return format, review substructure, behavioral warning, and parameter. Given that an output schema exists, the description adequately explains what the tool does without over-specifying.
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?
Only one parameter (book_id) with no schema description (0% coverage). The description mentions the parameter as a string but adds no additional meaning beyond the schema. With low coverage, the description should compensate, but the parameter is simple and the explanation minimal.
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?
Description clearly states the tool lists all punch days of a book along with review status, specifying the return structure. It distinguishes from sibling tools like get_punch_day (singular) and upsert_punch_day.
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?
Provides explicit guidance: use before reimporting a day to check existence and review status. Warns that reimporting a passed day resets review. No explicit alternatives are given, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_scheduleA
查某时间窗的月历场次(对象名/色、时间、课次标题、类型、备课态)→ :9090。返回 {ok, sessions}。
参数: start : 起始日期 'YYYY-MM-DD'(含) end : 结束日期 'YYYY-MM-DD'(含) target_id : 只看某对象的场次(省略=我名下全部)
| Name | Required | Description | Default |
|---|---|---|---|
| end | Yes | ||
| start | Yes | ||
| target_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description mentions it returns {ok, sessions} and lists output fields, but does not disclose behavioral traits such as permissions required, side effects, rate limits, or the significance of the ':9090' port. Since no annotations are provided, the description should reveal more about safe usage.
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 relatively concise and front-loaded with the purpose, then the return format and parameters. However, the mention of ':9090' seems like an internal detail that may not be necessary for the AI agent and adds slight noise.
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 that the output schema exists (mentioned as 'has output schema: true'), the description covers the return structure. Parameters are fully explained. Missing details like pagination, error handling, or default sorting are minor for a simple listing 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?
The description thoroughly explains all three parameters: start and end date formats (YYYY-MM-DD, inclusive) and target_id (filter by object, omit for all of user's own). This adds essential meaning beyond the bare schema, which has no property descriptions.
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 states the tool's purpose: listing calendar sessions for a given time window, and specifies the returned fields (object name/color, time, lesson title, type, preparation status). It distinguishes from siblings like 'schedule_sessions' and 'update_session' by being a read-only listing tool.
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 guidance on when to use this tool versus alternatives, nor any prerequisites or exclusions. Usage is implied by the parameter explanations and the fact that it lists sessions, but no when-to-use or when-not-to-use instructions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_teach_targetsA
查我名下的教学对象卡片墙(含实时聚合:排课数/绑定计划进度/下一课/班课学员数)→ :9090。
建对象前查重、选排课对象都走它。返回 {ok, items}。 参数: target_type : 'student' | 'class',省略=两类都查 keyword : 名称模糊过滤 include_archived: True 才含已归档对象(默认只看在用的)
| Name | Required | Description | Default |
|---|---|---|---|
| keyword | No | ||
| target_type | No | ||
| include_archived | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries burden. Clearly indicates it's a query operation ('查') returning {ok, items} with real-time aggregation. Could be more explicit about being read-only and safe, but sufficient given no destructive traits.
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?
Compact and front-loaded: first line states purpose and features, then usage guidance, then return format, then parameter details. Every sentence adds value with no 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?
Covers purpose, usage, parameters, and return format. Mentions aggregation fields but doesn't detail them. Output schema exists but not shown; description is complete enough for agent to use correctly.
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 coverage 0% but description fully explains all three parameters: target_type ('student'|'class', omit for both), keyword (fuzzy name filter), include_archived (True includes archived, default False). Adds meaning beyond schema.
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 states it lists teaching target cards with real-time aggregation, using specific verbs ('查' - query) and resources. It distinguishes itself from sibling CRUD tools like create/update/archive targets.
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?
Explicitly instructs to use for duplicate checking before creating targets and for selecting scheduling targets ('建对象前查重、选排课对象都走它'), providing clear when-to-use and contextual alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
loginA
以真实 teacher 账号登录平台,拿双头 token 注入本会话身份(后续所有工具隐式带该身份、落 RuoYi 权限审计)。
参数: username/password: teacher 账号。留空则用 .env 兜底(RUOYI_USERNAME/RUOYI_PASSWORD)。 返回: {ok, teacher_id, username} —— token 仅驻留 server 侧会话态,不回吐明文给调用方。
| Name | Required | Description | Default |
|---|---|---|---|
| password | No | ||
| username | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses token stays server-side, permission audit, and .env fallback. Sufficiently transparent for a login tool.
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?
Description is concise, front-loaded with the action, and each sentence adds necessary detail without waste.
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 having an output schema (not shown), description explicitly states return shape {ok, teacher_id, username} and token behavior, making it complete for a simple login 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 coverage is 0%, but description explains username/password as teacher accounts and that blank values default to .env variables. Adds meaning beyond the schema.
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?
Description clearly states that the tool logs in to the platform with a real teacher account and injects a session token. It doesn't explicitly differentiate from the sibling 'login_as', but the action is well-defined.
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 on when to use this tool versus alternatives like 'login_as'. The description implies it's for initial login but lacks explicit usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
login_asA
飞书机器人免密切身份(PRD-007):凭服务密钥用 open_id 换该 teacher 的 token,替换本会话身份。
用途:bot 后端按飞书消息发送者的 open_id 逐消息切身份,让写操作(录题/组卷等)归属各自 teacher。 鉴权:服务密钥走 env BOT_SECRET(只在机器人后端持有、不入 git);调用方不需密码。 401 自动重签:切身份后,后续工具遇 token 失效会按当前 open_id 自动重调 botLogin 重签(不走密码重登)。 参数: openid: 飞书 open_id(如 ou_xxx)。 返回: 成功 → {ok:true, user_id, openid}。 失败 → {ok:false, hint}:openid 未绑定 teacher → hint 含「未绑定」(bot 按此路由拒绝话术); BOT_SECRET 未配置 / 密钥错 / 账号停用等各有对应提示。
| Name | Required | Description | Default |
|---|---|---|---|
| openid | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description takes on the full burden of behavioral disclosure. It explains the authentication mechanism (BOT_SECRET, not requiring caller password), the side effect of replacing the session identity, and the automatic 401 retry behavior. The return structure also details success/error cases. It does not mention rate limits or idempotency, but overall it is sufficiently transparent.
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 well-structured with labeled sections (用途, 鉴权, 401自动重签, 参数, 返回). Every sentence contributes necessary context—purpose, authentication, retry behavior, parameters, and return values—without redundancy. It is front-loaded with the core purpose, making it easy for an AI agent to quickly grasp the tool's role.
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 the tool has a single parameter, an output schema effectively documented in the description, and behavioral details, the description is comprehensive. It covers all essential aspects: what the tool does, how authentication works, side effects, and what results to expect in success and failure cases. No significant gaps remain.
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 has 0% description coverage, but the description adds a clear definition for the sole parameter 'openid': it provides the type ('飞书 open_id') and an example ('ou_xxx'). This meaningfully supplements the schema, which only declares the parameter as a string without further explanation.
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 states the tool is for identity switching in a Feishu bot using a service secret to exchange open_id for a teacher's token. It explicitly says it replaces the current session identity, and the '用途' section explains the per-message identity switching scenario. This distinguishes it from siblings like 'login' (presumably for initial authentication).
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 '用途' section specifies that this tool is used on a per-message basis to make write operations belong to respective teachers. It also mentions that after switching, subsequent tools automatically handle token re‑issuance on 401. However, it does not explicitly state when NOT to use it or provide a direct comparison with 'login', leaving some ambiguity for the AI agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
make_variantsA
举一反三·母题轮:读图解题打标 → 出母题卡(LLM 轮 ~60s)。图驱动 + D8 渲图旁路。
入参三选一(image_url > stem_text > question_id 优先级):
image_url : 公网可达图片 URL(.png/.jpg/.jpeg/.webp)——直接喂入口。
stem_text : 纯文本题干(可含 $LaTeX$/markdown)→ MCP 确定性渲图→传 OSS→喂引擎(rendered_stem:true)。
question_id: 题库题 id(字符串)→ 先查 biz_question_image 的 oss_url; 无图则走渲图旁路(取该题 stemText 渲图→传 OSS),返回 rendered_stem:true。
hint : 追加指令(如「侧重折叠」),默认「帮我把这道题举一反三」。
count : 变式数(进 message 文案,实际生成在 generate_variants)。
thread_id : 续跑同一母题会话用;缺省自动生成(uuid4)。返回值里带回,后续工具必传它。 返回: {ok, thread_id, status:"ready"|"need_confirm", mother_card, kg_candidates?, reply, rendered_stem?}。
rendered_stem=true ⇒ 母题图由渲图旁路生成(题干确定性渲染,opus 读图 OCR)。
status=need_confirm(低置信/骨架空分支)→ 读 kg_candidates 挑章 → confirm_variant_chapter。
status=ready → 直接 generate_variants。
mother_card=None(入口回催图/催登录)→ ok:false,hint=引擎回文(reply)。
| Name | Required | Description | Default |
|---|---|---|---|
| hint | No | ||
| count | No | ||
| image_url | No | ||
| stem_text | No | ||
| thread_id | No | ||
| question_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries full burden. It explains the creation workflow, timing (~60s), rendering bypass, error states (mother_card=None), and next steps. It lacks explicit mention of destructive behavior but implies creation only. Could clarify authorization needs.
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 well-structured with bullet points and clear sections. It is somewhat lengthy but each sentence adds value given the tool's complexity. Could be slightly more concise, but not excessively verbose.
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 the tool's complexity, the output schema exists, and the description thoroughly covers return fields (status, mother_card, kg_candidates, etc.) and their meanings. It also explains the rendering bypass and thread_id persistence. Complete for agent use.
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 coverage is 0%, but the description compensates fully. It explains each parameter's purpose, format, default, and behavior (e.g., priority, auto-generation of thread_id, hint default). This is essential for correct invocation.
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 states the tool's purpose: generating variant questions (mother card) from an image, text, or question ID. It uses specific verbs like '出母题卡' and distinguishes from siblings like generate_variants and confirm_variant_chapter.
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 provides explicit guidance on when to use each input method with priority order, how to proceed based on status (need_confirm vs ready), and the role of thread_id for continuation. It also references sibling tools for follow-up actions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
my_recent_uploadsA
一键找回当前登录老师在最近时间窗内录的东西(题 / 卷 / 讲义片段)——DB 只读,不依赖 stem 关键词。
用途:老师刚用 MCP 录完一批题/组完卷/存完讲义,想快速核对「我刚才录进去了啥」。 参数: hours 时间窗(默认 24 小时;<1 视为 1)。 返回: {ok, hours, questions: {total, batches:[{batch_id, import_source, count, items:[{id, stem_head(30字/占位), import_source, batch_id, create_time}]}]} # 按录入批次分组,倒序 papers: [{id, name, question_count, create_time}] # biz_paper 同窗口本人建的卷 lecture_frags: [{id, title, create_time}] # biz_kg_lecture_frag 同窗口本人 owner 的片段 view_url} # 题库页深链,供浏览器核对 🔴 双管道语义:import_source 带 "mcp-" 前缀 = MCP 机录;'举一反三'=引擎落库;其余=手工/其他管道。
| Name | Required | Description | Default |
|---|---|---|---|
| hours | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses that the tool is read-only, defines the parameter behavior (hours, default 24, <1 treated as 1), explains the return structure grouping by import source, and notes the dual pipeline semantics. Missing details on pagination or limits for results.
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 well-structured with sections for purpose, usage, parameter, return format, and a note. It is front-loaded with the main verb and resource. While slightly lengthy, every sentence adds value and uses formatting (emojis, bold) for clarity.
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?
The description covers the parameter, return structure with three object types, grouping, and a view URL. It explains the import_source prefixes. However, it does not mention behavior when no results exist or if hours exceeds some maximum.
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 coverage is 0% (no parameter descriptions in schema), but the description explains the 'hours' parameter: it's a time window with default 24 hours and behavior for values less than 1. This adds meaning beyond the schema's type and default.
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 states the tool retrieves recent uploads (questions, papers, lecture fragments) for the logged-in teacher. It uses specific verbs like 'retrieve' and 'group by batch', and distinguishes from sibling tools like search_questions by noting it's DB read-only and doesn't rely on stem keywords.
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 provides a clear use case: after MCP recording the teacher wants to quickly check what was just uploaded. It specifies the hours parameter and default behavior. However, it does not explicitly exclude use cases or compare to similar tools like list_lecture_docs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
override_itemA
书内改一道题的题面(D3 override 副本):只影响本书,题库原子题不动。
override.stem/options 写入 item.override_json;question_id 溯源保留(血缘不断)。 还原原题 = 传空 override({})即清。含数学 <> 不会被 XSS 剥。 返回 {ok}。
| Name | Required | Description | Default |
|---|---|---|---|
| item_id | Yes | ||
| override | Yes | 书内改题副本(D3):只影响本书,题库原子题不动。 |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description effectively discloses behavioral traits: it writes to 'item.override_json', preserves the question_id trace ('血缘不断'), and notes that mathematical symbols like '<>' are not stripped by XSS. It also specifies the return format as '{ok}', giving full transparency for a safe mutation operation.
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 concise, consisting of four short sentences that are front-loaded with the main purpose. Each sentence adds unique value, covering scope, behavior, revert mechanism, and safety features, with no 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?
Given the tool's complexity (two parameters, nested objects, and an output schema), the description covers the core functionality well. It explains the effect, reversion, and safety, but could be enhanced by mentioning error cases or required permissions. Still, it is adequate for correct invocation.
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 schema has 50% coverage (only 'override' has a description). The tool description adds value by explaining the effect of 'stem' and 'options' being written to 'override_json' and clarifies that passing an empty override ('{}') resets to original. However, 'item_id' remains undocumented, though its purpose is inferable from context.
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 states the tool modifies a question's stem/options within a book without affecting the original item in the question bank ('只影响本书,题库原子题**不动**'). The verb ('改') and resource ('一道题的题面') are specific, and the scope is well-defined, distinguishing it from global edits.
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 provides clear context for when to use this tool (for per-book overrides) and how to revert ('还原原题 = 传空 override({})即清'). However, it does not explicitly mention when not to use it or suggest alternatives, though the context implies differentiation from sibling tools like 'edit_variant'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
parse_paper_textA
规整卷面文本 → 题列表 JSON(确定性规则拆题,零 LLM)。适合 convert_doc 产物 / 规整粘贴文本。
拆题规则:题号「N、/N./N.」+ 章节头判题型 + 【来源】/【答案】/【解析】+ 多小问状态机 + 卷尾参考答案回填。 产出每题含 〖图:rId〗 占位(如有)。🔴 agent 拿到后须核对题数/补漏,再构造 IngestItem[] 喂 ingest_items; 位置序号(数组下标+1)= 入库 sort,别用 num(原卷题号遇杂散「N.」会错位——七上教训)。 参数: text 卷面文本(与 text_path 二选一,text 优先)。 返回: {ok, count, questions:[{num,type,stem,options,answer,analyze,has_fig,source,score}], digest}。
| Name | Required | Description | Default |
|---|---|---|---|
| text | No | ||
| text_path | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It details the rule-based splitting process, state machine for sub-questions, answer backfilling, and figure placeholder handling. It also warns about potential num misalignment. However, it does not explicitly state if the tool is read-only or modifies data.
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 somewhat lengthy but each sentence adds value. It is well-structured with purpose, rules, usage notes, parameter info, and return format. The front-loading of the main function is good, though some sentences could be merged for brevity.
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 the existence of an output schema, the description still explains the return fields (ok, count, questions with subfields) comprehensively. It provides all necessary context for an agent to use the tool and process results correctly.
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 coverage is 0%, so description must compensate. It explains that 'text' is the paper text, mutually exclusive with 'text_path', and that 'text' takes priority. It adds useful semantic info beyond the schema, though 'text_path' could be more clearly described.
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 states the tool converts standardized exam paper text to a JSON list of questions using deterministic rules. It mentions suitability for convert_doc output, providing context, but does not explicitly differentiate from all sibling tools beyond that.
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 provides explicit when-to-use guidance (suitable for convert_doc output or pasted text), explains how to use the output (verify count, construct IngestItem[]), and warns against using 'num' for sorting. It also clarifies parameter selection (text preferred over text_path).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
persist_variantsA
把变式落库拿真实 qid(owner=登录老师)。🔴 落库前须逐题 verify_variant(说明书铁律)。
参数: thread_id;item_ids: 只落指定几题(item_id/seq 字符串列表);缺省=全部入库。 返回: {ok, results:[{item_id, question_id:str}], view_url}(题库页深链,老师视觉验收入口)。
| Name | Required | Description | Default |
|---|---|---|---|
| item_ids | No | ||
| thread_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description partially covers behavior: it indicates the tool is a write operation (storing), mentions ownership by logged-in teacher, and outlines return values. However, it does not disclose mutability, idempotency, or full authorization requirements.
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 concise, with a clear structure: action, prerequisite, parameters, return value. Each sentence contributes meaning, though it could be slightly more streamlined.
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?
The description covers the tool's purpose, parameters (mostly), and output format. However, the required thread_id parameter is not defined, and the 'manual' reference is vague. For a tool with two parameters, this is adequate but not fully complete.
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?
Given 0% schema description coverage, the description compensates well by explaining item_ids (optional list, default stores all) and the return structure, but does not explain the required thread_id parameter beyond its name.
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 states the action: store variants into database to get real question IDs. It distinguishes itself from siblings by mentioning the prerequisite verify_variant, though not explicitly comparing with other 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?
The description specifies a prerequisite (verify each variant before storing) and explains default behavior for the item_ids parameter, but lacks explicit guidance on when not to use this tool or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_lecture_fragA
删除某 owner 在某 subjectId 前缀下的讲义片段(覆盖录入的「先删」步;打 :9090)。需先 login。
🔴 前缀 LIKE 删除:subject_prefix='901001002001'(课时L4) 会删该课时自身 + 全部子知识点片段——
连课时级思维导图(kgMindmap)一并删,想保留导图就别用课时前缀,改删到知识点段(或逐个知识点前缀)。
BE 强制 subjectPrefix≥9 位(节级)防误删整册。owner 省略=登录者(admin=uid1 官方库)。
参数:
subject_prefix : subjectId 前缀(≥9 位);删该前缀下该 owner 的所有片段
book_id : 教辅套 id
owner : 归属 uid;省略=登录者
返回: BE {ok, removed}(removed=删除行数)。
| Name | Required | Description | Default |
|---|---|---|---|
| owner | No | ||
| book_id | No | CC7S | |
| subject_prefix | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses destructive behavior: deletes fragments and may delete attached mindmap. Includes constraints, return format {ok, removed}, and workflow context (override step). No contradictions.
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?
Description is dense with useful info but well-structured: purpose sentence, warning block, parameter list. Slightly verbose but front-loaded and organized. Could be trimmed but effective.
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?
Covers all aspects: purpose, destructive behavior, constraints, parameter defaults, return format, prerequisite (login). Comprehensive for an agent to use correctly given the complexity and lack of annotations.
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 coverage is 0%, so description compensates fully: explains subject_prefix (LIKE delete), book_id (default), owner (omitted=logged in), and return value. Adds meaning beyond schema fields.
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 states the tool deletes lecture fragments under a subjectId prefix for an owner. It explains the LIKE delete behavior, effects on kgMindmap, and prefix length constraints, distinguishing it from other tools like save_lecture_frag and delete_questions.
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?
Provides explicit when-to-use and when-not-to-use guidance: warns against using a lesson-level prefix to retain the mindmap, notes BE forces prefix length >=9, and explains owner default. Does not name alternative tools but gives clear usage constraints.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
render_prep_packA
🔴 DEPRECATED(PRD-B-101 已退役):MCP 不再出 PDF。
备课卷 PDF 一律走组卷前端链路(平台「我的卷库·备课卷」导出),服务端简化渲染(纯 Java PDF)退役。
备课改为逐卷位 compose_paper/create_paper(lesson_id, slot_seq) + bind_paper_slot。
本工具仅保留返回退役指引,不再执行任何操作。见 get_role_manual(role='prep')。
| Name | Required | Description | Default |
|---|---|---|---|
| pack_id | No | ||
| mark_ready | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses behavior: it does nothing except return a retirement guidance message. It explains the deprecation reason and confirms no operations are performed, which is complete transparency.
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 well-structured with a clear deprecation header, explanation, and replacement steps. It is somewhat lengthy but all information earns its place; however, it could be slightly more concise.
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 the tool's deprecated status, the description covers the essential behavioral change and replacement. However, it omits details about output schema (which exists) and actual response format, leaving some gap in completeness for a tool with a defined output.
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 description does not mention the two parameters (pack_id, mark_ready) or state that they are ignored. Since schema description coverage is 0%, the description should compensate but fails to provide any parameter semantics, leaving the agent confused about their relevance.
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 explicitly states that the tool is deprecated and only returns deprecation guidance, no longer performing any operation. This is a specific verb-resource pair that clearly distinguishes it from active sibling tools like compose_paper and bind_paper_slot.
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 provides clear when-not-to-use instructions and directs users to the replacement workflow (compose_paper/create_paper + bind_paper_slot) and to get_role_manual for further guidance. This explicitly differentiates from alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
render_shuzimi_figureA
数字谜竖式图生成器:按结构化 puzzles 确定性画竖式 PNG('?'=待填□方框),可直传 OSS。
🔴 结构规范:puzzles=1~4 个竖式横向并排,每个 {label?, rows:[{op,cells}...]}; cells 一字符一格(数字/汉字均可),'?'=□;op=+ - × ÷ 或空;op="HR"=横线行。 例(6□37+3□□=7183):rows=[{"op":"","cells":"6?37"},{"op":"+","cells":"3??"}, {"op":"HR"},{"op":"","cells":"7183"}]。 参数: upload=True 则直传 OSS(需先 login),False 只落本地;out_name 自定义文件名(可空)。 返回: {ok, local_path, width, height, oss_url?, asset_id?}。 产物用法: oss_url 塞 blockJson 图块(biz_question_block)或 ingest_question.images; 答案版把 '?' 换成实际字符再调一次。
| Name | Required | Description | Default |
|---|---|---|---|
| upload | No | ||
| puzzles | Yes | ||
| out_name | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full responsibility. It discloses deterministic generation, OSS upload behavior with login requirement, and return format. However, it does not cover error handling or rate limits, leaving some behavioral gaps.
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 well-structured with clear sections (purpose, structure spec, example, parameters, return, usage). Every sentence adds value, and the most critical information is front-loaded. No unnecessary content.
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 the complexity of the tool, the description covers input structure (puzzles with rows, op, cells), parameters, output fields, and usage context (blockJson, ingest). It also includes edge cases like 'HR' for horizontal lines and answer version handling. No output schema is provided, but the description compensates.
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% for top-level parameters, but the description thoroughly explains each parameter, including upload's OSS dependency and out_name's custom filename, and provides a complete example for puzzles. This compensates fully for the lack of schema descriptions.
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 states the tool generates PNG figures for 'shuzimi' puzzles with specific structural rules. It uses a specific verb ('render') and resource ('shuzimi figure'), but does not explicitly differentiate from sibling tools like compose_variant_figure or render_prep_pack.
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 usage by mentioning how to use the output (e.g., oss_url for blockJson) and that the answer version requires replacing '?' and calling again. However, it does not explicitly state when to use this tool versus alternatives or provide exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resolve_kgA
KG 锚定查表(确定性只读,数学+科学一套通吃):按名称/节号/父节点在某教材根下查节点,供选锚定叶子。
🔴 叶子=无子节点(is_leaf),别按 level 判——科学 901 树 5 层、902-906 树 4 层,叶深不一(H2 实测)。 用法:先 query 模糊(如「乘方」)看候选 → 挑 is_leaf=true 的最贴切者作 ingest_items 的 kp_id; 同步练习类卷名带节号可 section_num 精确命中(如 "2.5" → 「2.5 有理数的乘方」节点)。 参数: subject_root: 教材根 id(数学七上="100";科学="901".."906")——锚定范围的唯一开关 query : 名称模糊词(LIKE %query%) section_num : 节号精确匹配(如 "2.5",命中名称以「2.5 」开头的节点) parent_id : 只列某节点的直接子节点(浏览下钻用;给了它则忽略 subject_root 前缀过滤) leaves_only : 只返回叶子 返回: {ok, count, nodes:[{id,name,level,parent_id,is_leaf}]};无命中 → count=0 不报错。
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | No | ||
| parent_id | No | ||
| leaves_only | No | ||
| section_num | No | ||
| subject_root | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral disclosure. It explicitly states the tool is '确定性只读' (deterministic read-only). It explains the leaf detection nuance (use is_leaf not level) and return format. It does not mention rate limits or auth requirements, but for a read-only tool, the transparency is good.
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 detailed but well-structured with sections and bullet points. It is not overly verbose; each part adds value. However, it could be slightly more concise, e.g., by reducing the redundancy of the leaf depth explanation. Overall, it balances detail with readability.
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 the tool's complexity (6 params, one required) and no formal output schema, the description covers all necessary aspects: purpose, parameter usage, behavioral notes, return format, and edge cases (no matches return count=0 without error). It also provides a workflow context for downstream tools (ingest_items). This is comprehensive.
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?
Despite 0% schema description coverage, the description adds substantial meaning to all 6 parameters. It provides example values for subject_root (e.g., '100' for Math Grade 7), explains the effect of parent_id overriding subject_root, and clarifies the use of leaves_only. This goes well beyond the schema's basic types and defaults.
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 states the tool's purpose: 'KG 锚定查表(确定性只读,数学+科学一套通吃)' indicating it is a read-only lookup in a knowledge graph for math and science. It specifies the actions: query by name, section number, or parent node under a textbook root. While it does not explicitly differentiate from sibling 'list_kg_tree', the description implies this tool is for targeted anchored lookup, not tree exploration.
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 provides a clear workflow: first use query fuzzy to find candidates, then pick a leaf node (is_leaf=true) as kp_id for ingest_items. It also covers exact match by section_num for exercise papers. However, it lacks explicit 'when not to use' or comparison to alternatives like list_kg_tree, slightly reducing the score from 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_lecture_fragA
片段 IR → :9090 upsert 入库(唯一入库口,UK=subjectId+bookId+owner 幂等覆盖)。需先 login。
图回填:image_map={rid:ossUrl} 把 content 里 〖图:rId〗占位换成 OSS 地址;无 ossUrl 的 image 节点会被剔除 并在 unresolved_images 里报告(不静默丢)。对齐闸:任何 UNMATCHED 片段默认拒绝入库(除非 allow_toc_fail)。 参数: ir_path : convert_lecture_docx 产出的 IR 文件路径(与 frags 二选一,优先) frags : 片段 IR 列表 [{subjectId,title,contentJson,status?}](与 ir_path 二选一) book_id : 教辅套 id(ir_path 里带则以其为准) image_map : {rId: ossUrl}(upload_image 的产物) owner : 归属 uid;省略=登录者(admin 登录省略即官方库覆盖) allow_toc_fail : True 才允许含未匹配 KG 的片段入库(BE 仍会因 subjectId 不存在而单条失败) 返回: BE saveFrags 响应 {ok, owner, results:[{subjectId,action}], stats} + {unresolved_images, view_url?}。
| Name | Required | Description | Default |
|---|---|---|---|
| frags | No | ||
| owner | No | ||
| book_id | No | CC7S | |
| ir_path | No | ||
| image_map | No | ||
| allow_toc_fail | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses behavior: upsert semantics, image_map processing (replacement and removal with reporting), alignment guard, authentication requirement, and owner defaulting. The return format is also detailed.
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 concise yet comprehensive, front-loading the core purpose and then systematically covering details in a structured paragraph with bullet points. No unnecessary information.
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 the tool's complexity (6 parameters, nested objects, side effects), the description covers prerequisites, inputs, behavior, and return values. The output format is described in detail, compensating for the absent output schema.
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?
Despite 0% schema description coverage, the description explains all 6 parameters in depth, including their purpose, mutual exclusivity, default values, and nested structure for frags items. This compensates fully.
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 states that the tool is the sole entry point for upserting lecture fragments into the database, with a unique key for idempotency. It distinguishes itself from sibling tools like convert_lecture_docx (which produces the input) and remove_lecture_frag (which deletes).
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 provides usage context: login prerequisite, mutual exclusivity of ir_path and frags, precedence of book_id from ir_path, and the allow_toc_fail flag. It does not explicitly compare to other tools for when-not-to-use, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
schedule_sessionsA
批量排课(给某对象铺一串场次)→ :9090。返回 {ok, created, conflicts}。
auto_bind=True 时按 lesson_seq 顺序把未排课次自动绑到这批场次上(items 里也可显式 plan_lesson_id)。 🔴 冲突处理(契约 D6):命中冲突且 force=False → 一条不落、只回 conflicts 明细; 前端弹警告后可 force=True 强存(重发同一批)。冲突口径:老师撞场(create_by 同人时间重叠)/学生撞场。 参数: target_type : 'student' | 'class' target_id : 对象 id(字符串) items : [{date:'YYYY-MM-DD', start:'HH:MM', end:'HH:MM', plan_lesson_id?:str, session_type?:'1正课|2测试|3外部占位', external_title?:str(外部占位标题), note?:str}] plan_id : 绑定的计划 id(auto_bind 用它取课次顺序) auto_bind : 按 lesson_seq 顺序自动绑未排课次(默认 True) force : True = 无视冲突强存(默认 False,先探冲突)
| Name | Required | Description | Default |
|---|---|---|---|
| force | No | ||
| items | Yes | ||
| plan_id | No | ||
| auto_bind | No | ||
| target_id | Yes | ||
| target_type | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses relevant behaviors: return object with ok/created/conflicts, conflict handling logic with force, auto_bind functionality, and the endpoint. It does not mention authentication or permissions, but covers main behavioral aspects well.
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 well-structured with a brief purpose statement followed by key behavioral notes and a bulleted parameter list. However, it includes some unnecessary details (e.g., ':9090' endpoint, '🔴 冲突处理(契约 D6)') that may distract. Overall, it is fairly efficient for the complexity involved.
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 the tool's complexity (6 parameters, no annotations, no schema descriptions), the description covers inputs, behavioral nuances, and output format thoroughly. It lacks explicit prerequisites (e.g., target must exist) but is otherwise complete for agent decision-making.
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 has 0% description coverage, so the description must fully explain all parameters. It does so exhaustively: target_type with enum values, target_id, items with nested fields (date, start, end, plan_lesson_id, session_type, external_title, note), plan_id, auto_bind, and force. Each parameter is clearly defined, adding significant value beyond the schema.
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 states it performs batch scheduling for a target (student or class), with a specific verb ('批量排课') and resource. It distinguishes from siblings like update_session, but does not explicitly differentiate from other scheduling 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?
The description provides some usage context: it explains when to use auto_bind and force for conflict handling, and mentions the return format. However, it does not explicitly compare to alternative tools (e.g., when to use this vs. update_session), making usage guidance implicit rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_questionsA
从题库分页检索题目(备课圈题核心)→ POST /teacher/question/page。返回 {ok, total, items}。
🔴 快速找回路径(PRD-O-005 溯源增强):给 batch_id 或 since 任一 → 改走 backends/db 只读检索 (按 import_batch_id / create_time / create_user 查,不依赖 stem LIKE,故不漏 stem_text=NULL 的变式题),可与 mine/subject_id/question_type/difficult 组合。返回 items 附 import_source/batch_id/create_time。
batch_id: 精确批次号(ingest_items/ingest_question 返回的 batch_id,如 mcp-20260708-...)
since : 时间窗,'24h'/'7d' 或 ISO 日期('2026-07-08');mine=True 限本人。
🔴 subject_id 语义 = 前缀子树匹配:传章节/课时的 biz_subject 节点 id → 召回该节点下 整棵子树所有知识点的题(likeRight 前缀);传叶子 id → 只该叶子的题。非数字 id → BE 静默返空集。 🔴 私有 vs 公共两套口径:
默认(mine=False)= 公共池(status='1' AND is_public=1,仅超管审核过的题);
mine=True = 本人已发布题(create_user=登录老师,status='1',含 is_public=0 私有题、 含举一反三变式/据讲义自造题)。🔴 圈自己造的题必须 mine=True。
🔴 两种口径都只返 status='1'(已发布)——草稿 status='0' 永不进列表。 参数: subject_id : 知识点/章节/课次的 biz_subject id(resolve_kg / get_plan_detail.kgNodeIds 来);空=不过滤 question_type: 题型码 1选择/2判断/3应用/4填空/5解答/6作图/7计算/8证明;None=不限 difficult : 难度 1-4 星(按段分层规则挑档);None=不限 keyword : 题干 LIKE %kw% mine : True=只看本人已发布题(含私有池);False=公共池 exam_paper_id: 按出处卷 id 筛(字符串数字);None=不限 label_status : 打标态 0未标/1AI已标/2已审核;None=不限 pattern_id : 题型 id(biz_question_pattern)收窄;None=不限 page_index : 页码(🔴 从 1 起,非 0) page_size : 每页条数(默认 20) 返回: {ok, total, items:[{id(str 雪花), question_type, difficult, subject_id, stem_brief, stem_img, status, label_status, free_tags, patterns, ...}]}。id 直接透给 build_prep_pack。
| Name | Required | Description | Default |
|---|---|---|---|
| mine | No | ||
| since | No | ||
| keyword | No | ||
| batch_id | No | ||
| difficult | No | ||
| page_size | No | ||
| page_index | No | ||
| pattern_id | No | ||
| subject_id | No | ||
| label_status | No | ||
| exam_paper_id | No | ||
| question_type | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden and excels: it discloses that only status='1' (published) questions are returned, drafts (status='0') never appear, non-numeric subject_id silently returns empty set, and the two different retrieval paths. It also explains the public vs private pool semantics and the subtree matching of subject_id. All behavioral traits are 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 well-structured with headers (🔴 sections for fast path, subject_id, public vs private) and a bulleted parameter list. It is front-loaded with the main purpose and endpoint. While it contains some verbose internal references (PRD-O-005) and emoji clutter, every sentence adds value and the organization aids readability. It is concise for the amount of detail provided.
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 the complexity (12 parameters, no annotations, output schema present), the description is remarkably complete. It covers tool purpose, all parameter semantics, two retrieval modes, public/private pool differences, return value format, error behavior (silent empty set), and filtering conditions. The output schema is described inline. An agent can correctly invoke the tool with this information alone.
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 fully. It does: every parameter is explained with semantic meaning, including enumerations (e.g., question_type codes, difficult range 1-4, label_status values), usage context (e.g., page_index starts from 1, page_size default 20), and special behaviors (e.g., subject_id prefix subtree matching, batch_id/since for fast path). This is comprehensive.
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 states the tool's purpose: paginated search of questions from the question bank, core for lesson preparation. It specifies the endpoint (POST /teacher/question/page) and return type ({ok, total, items}). It also distinguishes itself by describing two retrieval paths (fast recover with batch_id/since vs normal search), which differentiates it from siblings like get_question (single question retrieval) and my_recent_uploads (specialized recent uploads).
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 provides explicit guidance on when to use alternative modes: it explains the fast recover path when batch_id or since is provided, and distinguishes between public pool (mine=False) and own questions (mine=True) with the note that '圈自己造的题必须 mine=True' (for self-created questions must use mine=True). It also explains the subject_id subtree matching behavior. However, it does not explicitly compare with all sibling tools, but the context is sufficient for most cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
submit_punch_reviewA
提交「第 N 天」人眼审核结论(审核流主闭环)→ {ok, review}。
action 三态: pass 本天通过(🔴 全书每一天都 pass 后,BE 自动置书级审定标记——书由此可挂 SKU 上架) issue 本天记问题(必带 issues;天角标转 ⚠N,进全书问题清单) reopen 销账后重开审核(问题已修复重灌 → 打回 pending 再审一遍)
参数: book_id: 打卡书 id(字符串) day : 第几天(1 起) action : "pass" | "issue" | "reopen"(其余值直接拒,不猜) issues : action=issue 时必带 —— [{module, seq, kind, note}] module = 模块 type(oral/vertical/stepwise/rotating) seq = 模块内题号(1 起) kind = "难度不符" | "题面有误" | "排版" | "其他" note = 问题描述(一句话说清改什么,供重产/重灌时对账) 🔴 大改(换题/调难度)= 记问题 → 重产 → upsert_punch_day 重灌 → reopen 重审; 打卡页对题库题只读,改题库题走题目详情页修改态(D10/D11),不在本工具面内。
| Name | Required | Description | Default |
|---|---|---|---|
| day | Yes | ||
| action | Yes | ||
| issues | No | ||
| book_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses behavioral traits: side effects (auto book marking on pass, issue tracking, status resets on reopen), action constraints (only three values allowed), and interaction with other tools (upsert_punch_day for re-upload). It does not mention authorization or rate limits but covers critical behaviour well.
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 well-structured with bullet points for actions and parameters, front-loaded with the main purpose. Every sentence adds value, and the length is appropriate given the complexity. There is no redundancy or filler.
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 the complexity, lack of schema descriptions, and no annotations, the description is remarkably complete. It covers purpose, all parameters with semantics, side effects, workflow context (e.g., major changes require other tools), and even hints at the return value ({ok, review}). The presence of an output schema does not detract from the description's completeness.
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 schema has 0% description coverage, so the description compensates fully. It explains each parameter: book_id (string), day (integer starting at 1), action (enum with three values), and issues (array required for issue action, with subfields module, seq, kind, note). It also clarifies the meaning and constraints of each action value.
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 states the tool's purpose: submitting human eye review conclusions for a specific day, with three distinct actions (pass, issue, reopen) and their consequences. It distinguishes the tool from siblings by focusing on the punch day review closure, and references related tools (upsert_punch_day) for different workflow steps.
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 provides explicit context for each action (e.g., what happens on pass, issue, reopen) and notes that major changes should not be handled with this tool but via other processes. However, it does not explicitly compare to sibling tools like submit_review, leaving some ambiguity about when to use this versus related tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
submit_reviewA
课后回收(录逐题对错)→ 生成家长反馈 + 肖像增量 → :9090。返回 {ok, parent_msg, portrait_delta}。
提交即标该场次「已上」。parent_msg 服务端模板拼装「家长您好!…思维题:/同步:/拓展奥数:」—— 🔴 R1b S5:parent_msg 即时生成不落库(提交/查详情时都按当时上下文现算,override 也过内部词防线); 🔴 内部词(层/★/素材/挑题/薄弱)一律不进家长文案。portrait_delta = 错/卡题按 cause 聚合出的 error_signals(by=system,status=pending,带 session_id 溯源),自动 append 进对象肖像。重复提交=覆盖+上一版进 prev_json。 参数: session_id : 场次 id item_results : 逐题结果 [{question_id?:str, seg:'段名', seq:int, result:'对|错|卡', cause:'计算|概念辨析|策略|其他'}] teacher_note : 老师备注(可选) parent_msg_override: 传入则用它替换模板文案(LLM 润色位,可选)
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | Yes | ||
| item_results | Yes | ||
| teacher_note | No | ||
| parent_msg_override | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fully carries the burden of behavioral disclosure. It details side effects (marks session as done), computational behavior (parent_msg generated on-demand, not stored), filtering (internal words filtered out), how portrait_delta is computed and appended, and idempotency (repeated submission overwrites with previous in prev_json).
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 well-organized with a summary first line, then bullet points for key behaviors, and a parameter list. It uses emojis for emphasis. Slightly verbose in places but generally efficient and front-loaded.
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 the tool's complexity (4 parameters, 2 required, no schema descriptions, no annotations, but output schema exists), the description covers purpose, parameters, behavioral details, return structure, and side effects. It is appropriately complete for an AI agent to use correctly.
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 has 0% coverage (no descriptions), but the description compensates thoroughly. It explains session_id as 场次 id, item_results as an array with nested structure including fields like question_id, seg, seq, result (with allowed values: 对|错|卡), and cause (枚举: 计算|概念辨析|策略|其他). teacher_note and parent_msg_override are also explained with context.
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 states the tool's purpose: '课后回收' (after-class review) to record per-question correctness, generate parent feedback, and update student portrait. It specifies the return structure and distinguishes itself from siblings like 'submit_punch_review' by focusing on session review rather than punch cards.
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 does not explicitly state when to use this tool versus alternatives. It mentions that submission marks the session as done, but provides no guidance on when to use submit_review vs. other feedback-related tools like upsert_feedback_sheet or get_feedback_sheet.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_paperA
给试卷按**年级标准分(通值)**算每题分值 + 设建议时长,走 /update 落库。
分值规则(不抠原卷,按常规给):选择/判断=3分、填空=3分,大题类(应用/解答/作图/计算/证明)把剩余分铺满到 total_score(余数加在靠后的难题)。 参数: paper_id;total_score 总分(初中数学期末常规 120);suggest_time 建议时长(分钟,常规 120)。 返回: {ok, paper_id, total, per_question:[...]};异常 → {ok:false, reason}。
| Name | Required | Description | Default |
|---|---|---|---|
| paper_id | Yes | ||
| total_score | No | ||
| suggest_time | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It describes the scoring rules for different question types, the persistence via /update, and the return format including error handling. It does not mention any destructive actions or side effects beyond updating the paper.
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 somewhat long but well-structured: first explaining the core action, then scoring rules, then parameter list with defaults, and finally return format. Each sentence adds value, though it could be slightly more concise.
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?
The description covers all necessary aspects: purpose, input parameters (with defaults), behavior (scoring rules and persistence), and output format. Since an output schema exists, the description's inclusion of return details is helpful but not required.
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?
With 0% schema description coverage, the description compensates fully by explaining each parameter: paper_id identifies the paper, total_score is total score (default 120), suggest_time is suggested minutes (default 120). It also clarifies default values and the role of parameters.
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 states the tool's purpose: to calculate per-question scores based on grade-standard scores and set suggested time, then persist via /update. It specifies the verb '给试卷按年级标准分(通值)算每题分值 + 设建议时长' and distinguishes from sibling tools like compose_paper or create_paper by focusing on updating an existing paper's scoring and time.
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: after a paper is created, to set scoring and suggested time. It does not explicitly state when not to use it or mention alternatives, but the context from sibling names (e.g., create_paper) makes it clear this is an update operation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_sessionA
改单场次(改期/请假/取消/标已上/锁内容/改绑课次/改备注)→ :9090。返回 {ok, deferred?, overflow?}。
参数: session_id : 场次 id(字符串) action : 动作枚举—— 'reschedule' 改期(传 date/start/end;🔴 改期=只改时间不改状态、不触发顺延) 'leave' 请假 → 🔴 触发顺延:该对象该计划、日期在其后的「已排」场次,绑定课次整体前移补位; lesson_locked='1' 的场次保持原课次被跳过;末位课次悬空 → overflow 提示需补排 'cancel' 取消 → 软取消:置 status='3',行留库(同样触发顺延,口径同 leave) 'delete' 🔴 移除课程 → 物理删除整行、不可恢复(区别于 cancel 软取消);仅本人场次可删 'mark_done' 标记已上(session_status→已上) 'lock' 锁定本场绑定的课次内容(顺延时被跳过、不改绑) 'unlock' 解锁 'rebind' 改绑课次(传 plan_lesson_id;只改本场,不动别的场次) 'note' 改备注(传 note) date/start/end : reschedule 用;plan_lesson_id : rebind 用;note : note 用 返回:leave/cancel 会带 deferred(顺延明细 [{sessionId,newLessonId}])+ overflow(悬空课次提示)。
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | ||
| date | No | ||
| note | No | ||
| start | No | ||
| action | Yes | ||
| session_id | Yes | ||
| plan_lesson_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses all behavioral traits: side effects like triggering postponement for leave/cancel, distinction between soft and hard delete, and return values including deferred and overflow. No annotations provided, so description carries full burden and does so thoroughly.
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?
Well-structured with bullet points and headers, but slightly verbose. Could be more concise while retaining clarity.
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?
Covers all aspects: actions, parameters, side effects, return values (deferred, overflow). Given 7 parameters and no annotations, the description is complete.
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?
Adds significant meaning beyond the schema: explains which parameters are used for which actions (e.g., date/start/end for reschedule, plan_lesson_id for rebind, note for note). Since schema coverage is 0%, description fully compensates.
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 states it modifies a single session with specific actions (reschedule, leave, cancel, etc.), distinguishing it from siblings like schedule_sessions or list_schedule.
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?
Detailed guidelines for each action, including conditions, side effects, and when to use each, e.g., 'delete' is physical and irreversible, while 'cancel' is soft. Explicitly contrasts actions and their impacts.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_teach_targetA
改教学对象档案(学生/班级信息修改)→ :9090。返回 {ok, id, updated:['basic'/'profile']}。
create_teach_target 只能建、建完改不了——本工具补上「改」:改名/年级/教材/学科/家长手机/色,或整体覆写肖像。 🔴 只改传入的字段:不传的保持原值(BE updateById NOT_NULL 跳空);基本维不动肖像,肖像走独立整覆写。 🔴 target_type 必传(BE 靠它选学生表/班级表);改肖像务必先 get_student_profile 取全量再整体回传(传 {} 会清空)。 参数: target_id : 对象 id(字符串雪花号)——必填 target_type : 'student' | 'class'——必填(决定改哪张表) name : 新对象名(不传=不改) grade_no : 年级 1-12(字典 biz_edu_grade) grade_year : grade_no 生效学年起始年(如 2026) textbook_edition : 教材版本码(biz_edu_edition:1浙教/2人教/3北师大/4苏教,兼容中文标签) subject : 学科码(biz_edu_subject:1数学/2科学/3语文/4英语,兼容中文标签) parent_phone : 家长手机号(仅学生) color : 日历着色 profile : 肖像 dict(整体覆写,非增量!结构见 create_teach_target 的 profile 说明)—— 改肖像典型流程 = get_student_profile 读回 → 本地改 → 整体传回
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| color | No | ||
| profile | No | ||
| subject | No | ||
| grade_no | No | ||
| target_id | Yes | ||
| grade_year | No | ||
| target_type | Yes | ||
| parent_phone | No | ||
| textbook_edition | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Details that only passed fields are updated, profile is overwritten entirely, and warns about clearing profile. No annotations, so description carries full burden; it does so comprehensively.
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?
Well-structured with purpose upfront, key warnings highlighted, and parameter list. Slightly long but justified by complexity.
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 no annotations and output schema present in context, description covers return value, input constraints, and edge cases thoroughly.
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 has 0% description coverage but description provides detailed semantics for all parameters including required fields, data types, and special behaviors.
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?
Clearly states it updates teaching target records (student/class info) and explicitly distinguishes from sibling create_teach_target which only creates.
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?
Explicitly says when to use this tool vs create_teach_target and advises prerequisite step for profile updates.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upload_imageA
把本地磁盘图片直传 OSS + 去重,返回可塞进 blockJson 图块 / ingest_question.images 的 ossUrl。
参数: local_path 本地绝对路径;asset_kind 资产类型(figure 等)。 返回: {ok, asset_id, oss_url, dedup}。
| Name | Required | Description | Default |
|---|---|---|---|
| asset_kind | No | figure | |
| local_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries full responsibility. It discloses the upload action, deduplication behavior, and return fields (ok, asset_id, oss_url, dedup). This provides good transparency, though it could mention permissions or error cases.
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?
Two sentences efficiently cover purpose, parameters, and return format. It is front-loaded and to the point, but could benefit from slightly more structured breakdown.
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 the tool's simplicity and presence of an output schema, the description covers purpose, parameters, and return values adequately. It explains the integration points (blockJson, ingest_question.images), but lacks details on error handling or prerequisites.
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. It explains local_path as local absolute path and asset_kind as asset type with example 'figure'. While it adds meaning beyond the schema, it could provide more detail on the asset_kind options or path format.
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 states it uploads a local image to OSS with deduplication, returning an ossUrl usable in blockJson or ingest_question.images. It distinguishes from siblings by specifying the exact use case and output integration.
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 the tool should be used for uploading local images for use in blocks or ingest_question, but does not explicitly state when not to use it or provide alternatives. The context is implied but not fully directed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upsert_course_planA
建/改课程计划 + 批量 upsert 课次(一步到位)→ :9090。返回 {ok, plan_id, lesson_ids, view_url}。
计划 = 一段周期(如一个暑假)的课次编排蓝本;排课时按 lesson_seq 顺序自动绑到场次上。 🔴 R1a·S1:计划有归属——新建必传 target_type + target_id(BE 强校验对象存在且归我,缺传 400)。 🔴 PRD-B-101 契约平移:课次内容模型 = 专项卷位 paper_slots(替代旧 seg_template『段模板』)。 一课次 = N 张专项卷,每卷位可绑一张卷。旧字段 seg_template / default_seg_template 收到即报错拒绝 (不静默兼容,防两套字段并存漂移)。 参数: plan : {id?, name, target_type:'student|class', target_id:str(归属对象 id,🔴 新建必传), term_tag:'暑假|上学期|寒假|下学期', year:int, material_note?:str(素材说明,如「学而思 36 周书·挑题制」), default_paper_slots?:list(默认专项卷位模板,lesson 空则继承), status?:'0草稿|1启用|2归档'} —— 带 id = 改计划基本维,空 id = 新建。🔴 无 total_lessons(=课次数实时聚合)。 lessons : 课次列表,每个 dict:{id?(空=新增), lesson_seq:int, title, lesson_type:'0教学|1测试', tag?(自由标签,吃透课走这), source_ref?(素材源,如「学而思第10+11周」), thinking_action?(思维动作), layer_target?(层数目标,如 '2→3'), parent_copy?(家长版口语文案), kg_node_ids?:[str](课内同步锚的 biz_subject id), paper_slots?:list(本课次专项卷位模板,覆盖计划默认): [{slot_seq:int, name:str(必填非空), style:str, rules:str, note:str}] (🔴 绑定字段 paper_id/manual_ready 由服务端管,agent 写入通常只给 slot_seq/name/style/rules/note)}
| Name | Required | Description | Default |
|---|---|---|---|
| plan | Yes | ||
| lessons | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses detailed behavioral traits: validation errors on missing fields, rejection of old fields, return format, and internal handling of binding fields. Since no annotations are provided, the description fully covers safety and mutability.
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 detailed and well-organized with bullet points and sections, but somewhat verbose. Each sentence adds value, but could be slightly more concise.
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?
Covers all aspects: purpose, parameters, return value, validation, constraints, and references to business rules. Given the complexity and lack of formal output schema, the description is complete.
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 coverage is 0% but the description provides exhaustive details for both 'plan' and 'lessons' parameters, including nested structures, required fields, types, and constraints. Adds significant meaning beyond the bare schema.
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 states the tool performs 'create/modify course plan + batch upsert lessons in one step'. It uses specific verbs and resource, distinguishing it from siblings like 'get_plan_detail' or 'update_session'.
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?
Provides explicit prerequisites (required target_type and target_id for new plans), warns about deprecated fields being rejected, and explains the concept of plans. Lacks explicit 'when not to use' alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upsert_feedback_sheetA
建/改课后反馈单(归属当前登录老师)→ {ok, sheet_id}。
🔴 PRD-010 批次模型(用户工作流=批次累积一次性全发):一个学生一段课程 = 一个批次 (batch_key 如「多多五上暑假数学」,独立概念不绑课程计划),批次内课次 lesson_seq 依次递增。接力建新课次单时必须带 batch_key + lesson_seq(先 list_feedback_sheets 看该生最新批次到第几节,新单 = 最大 lesson_seq + 1;title 缺省口径 「{batch_key}第{N}节课上课内容」)。老师说"新开批次/新学期"才换新 batch_key 从 1 重计。
参数: target_id : 学生对象 id(字符串;先用 list_teach_targets 映射,严禁编造) title : 标题(🔴 家长可见,禁内部词) lesson_date: 上课日期 yyyy-MM-dd(可选) rows : 五列行数组 [{seq,module,content,mastery,weakness,kp_id?}] sheet_id : 传了=改这张(PUT),不传=新建 batch_key : 批次键(接力单必带) lesson_seq : 批次内课次号(接力单必带,>0 生效) 🔴 掌握情况写「熟练/基本掌握/待巩固」等家长话术。
| Name | Required | Description | Default |
|---|---|---|---|
| rows | No | ||
| title | Yes | ||
| sheet_id | No | ||
| batch_key | No | ||
| target_id | Yes | ||
| lesson_seq | No | ||
| lesson_date | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, description carries full burden. It discloses upsert behavior (PUT vs create), target_id validity requirement, title visibility to parents, structured rows with required fields, and mastery phrasing constraints. Lacks info on rate limits or auth but these are less critical for this tool.
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?
Description is fairly long but well-structured: starts with a concise purpose, then explains batch context, followed by bulleted parameter list. Every sentence adds value; the length is justified by the tool's complexity.
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 7 parameters, batch logic, and output schema (defined as {ok, sheet_id}), the description is quite thorough. Covers workflow, constraints, and parameter details. Minor gaps: rows structure could specify that kp_id is optional, and no mention of error handling or limits.
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 description must compensate. It explains all 7 parameters: target_id (mapped from list_teach_targets), title (parent-visible), lesson_date (format), rows (required keys), sheet_id (update), batch_key and lesson_seq (continuation logic). Adds significant meaning beyond bare schema.
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?
Description clearly states '建/改课后反馈单' (create/update after-class feedback sheet) and specifies the output '{ok, sheet_id}'. Distinguishes from siblings like 'list_feedback_sheets' and 'export_feedback_png' by focusing on upsert operation with batch logic.
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?
Provides detailed usage guidelines: explains batch concept (PRD-010 workflow), how to determine next lesson_seq using list_feedback_sheets, when to start a new batch, and warns against fabricating target_id. Although no explicit 'when not to use', the rich guidance compensates.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upsert_punch_dayA
把「第 N 天」整天内容灌进打卡书(幂等:同 book+day 重调 = 覆盖,不重复建节点)。
天节点名由 BE 按 day 生成,goals 落节点 meta_json.goals(今日目标条,简短口径, 🔴 学生/家长可见 → 禁内部词:层/★/素材/薄弱/挑题)。modules 原样透传给 BE。
参数: book_id : 打卡书 id(🔴 字符串;list_books(book_type='daily_punch') 查,严禁编造) day : 第几天(1 起正整数;同一 day 重灌 = 整天覆盖,agent 侧批量修正走这条路) goals : 今日目标 ["乘法连续进位","小数退位减","年、月、日"](简短短语,非整句) modules : 模块数组,按卷面顺序排;两类结构 —— ① 计算模块(出题器现产,题目不在题库 → 内容随书存 content_json): {"type":"oral|vertical|stepwise", "title":"口算题", "items":[{"q":"357+276=","a":"633"}, ...]} type 三型 = oral 口算 / vertical 竖式 / stepwise 脱式;q 题面、a 答案成对给全 (答案缺失 = 解析卷开天窗)。题目由 generate_calc_items 产,无需再人工验算。 ② 轮换位(教辅真题,题在题库 → 引用不复制): {"type":"rotating", "title":"解决问题", "qids":["2077057695340310530", ...]} 🔴 qids = 题目 id 的字符串数组(雪花号,search_questions / 生成器给的原样字符串); 🔴 绝不传题面文本——题面由 BE 按 biz_question_block.block_json 渲染, 改题库即改打卡书,零漂移(D5/D11)。传文本 = 制造第二个半源,必被打回。
返回: {ok, node_id(str), item_ids:[str]};未登录/参数不合法/BE 报错 → {ok:false, reason}。
| Name | Required | Description | Default |
|---|---|---|---|
| day | Yes | ||
| goals | Yes | ||
| book_id | Yes | ||
| modules | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully covers behavioral aspects: idempotency, parameter constraints (day positive integer, goals privacy rules), module pass-through, return format and error conditions. This is comprehensive.
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 long but well-organized using bullet points and sections. It front-loads the core purpose and idempotency, then details parameters. While effective, it could be slightly more concise without losing clarity.
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 the tool's complexity (4 parameters, multiple module types, idempotency, privacy constraints), the description is thorough. It references relevant sibling tools, covers error handling, and specifies return values. No gaps identified.
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?
Despite 0% schema description coverage, the description explains each parameter in depth: book_id sourcing, day semantics, goals content constraints, and modules structure with two types and their required fields (items vs qids). It adds significant value beyond the bare schema.
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 states the tool's purpose: to upsert the full content of a specific day into a check-in book, with idempotency. It distinguishes itself from sibling tools like list_punch_days and get_punch_day by focusing on creating/overwriting a day's content.
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 provides explicit guidance on when to use the tool (for creating or updating a full day, including batch corrections), warns against fabricating book_id, and details the two module types with their respective handling. It implies alternatives for viewing or reviewing content.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
verify_ingestA
🔴 灌库后铁律验证:检查题干开头来源前缀残留(如「(真题·杭州滨江)」「(2025 浙江期末)」)。
ingest_items 已内置预防端自动剥前缀;本工具是验证端——每次灌完卷/批必须跑一次,residue_count 必须=0。 参数: paper_id(查整卷题)或 question_ids(查指定题),二选一。 返回: {ok, residue_count, residues:[{id, head}]};residue_count>0 = 清洗未过,逐题人工处置。
| Name | Required | Description | Default |
|---|---|---|---|
| paper_id | No | ||
| question_ids | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
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 discloses what the tool checks (residue prefixes), that ingest_items already prevents them, and describes the return value and its meaning. It does not mention side effects, but given the tool is likely read-only, this is adequate.
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 concise and front-loaded with an emoji and bold text. Every sentence is relevant. The structure could be more organized, but it effectively communicates key information without waste.
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 the tool's simple purpose (verification), the description covers all necessary aspects: purpose, parameters, usage, and return value. The tool has an output schema, and the description explains its shape adequately. It is complete for this level of complexity.
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 description fully explains the two parameters: paper_id for checking an entire paper, question_ids for specific questions, and that they are mutually exclusive. This adds significant value beyond the schema, which only provides types and defaults. Schema description coverage is 0%, so the description compensates completely.
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 states the tool's purpose: to verify that ingested test papers have no residue prefixes. It uses a specific verb ('verify') and resource ('ingest'), and distinguishes itself from sibling tools like ingest_question and ingest_items by being a post-ingest verification step.
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 provides explicit usage guidance: '每次灌完卷/批必须跑一次' (must run every time after ingesting a paper/batch) and that residue_count must be 0. It does not mention alternatives or when not to use, but the context is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
verify_variantA
对某道变式独立验算(无状态 sympy 重算,~17s)→ 判决。persist 前须逐题过(说明书铁律)。
参数: thread_id;item_id(generate_variants 返回的变式 id,= seq,字符串)。 返回: {ok, item_id, verdict:"pass"|"fail"|"degrade", reason, computed}。 pass=标答自洽 / fail=标答错(computed=真算值) / degrade=sympy 吃不下转人工(非判错)。
| Name | Required | Description | Default |
|---|---|---|---|
| item_id | Yes | ||
| thread_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully bears the burden. It discloses stateless recomputation, approximate timing (~17s), and defines each verdict type (pass/fail/degrade). Adds useful behavioral context without contradiction.
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?
Description is concise with three clear sections: purpose, parameters, return. However, the parameter explanation could be slightly more structured. Overall efficient and front-loaded.
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 the tool's complexity (verification with specific output), the description covers purpose, parameters, return format, and verdict semantics. The presence of an output schema reduces the need to describe return values, but the description still adds value. Complete for a verification 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 coverage is 0% (description not in schema), but the description explains item_id as the variant ID returned by generate_variants, equals seq, and is a string. This adds meaning beyond the schema's bare type definition.
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?
Description clearly states it independently verifies a variant via stateless Sympy recomputation and provides a verdict. Names specific verb 'verify' and resource 'variant', distinguishing it from siblings like 'generate_variants' and 'persist_variants'.
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?
Explicitly states it must be used before persist ('persist 前须逐题过'), providing usage context. Does not explicitly list alternatives, but the strong precondition effectively guides when to use.
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.
71 tool updates
v2.0.0- First observed
add_book_item - First observed
add_book_node - First observed
archive_target - First observed
bind_book_node_to_lesson - First observed
bind_paper_slot - First observed
bind_special_to_lesson - First observed
build_prep_pack - First observed
compose_paper - First observed
compose_special - First observed
compose_variant_figure - First observed
confirm_variant_chapter - First observed
convert_doc - First observed
convert_lecture_docx - First observed
convert_pdf - First observed
create_book - First observed
create_paper - First observed
create_teach_target - First observed
delete_questions - First observed
edit_variant - First observed
export_feedback_batch_png - First observed
export_feedback_png - First observed
export_special - First observed
format_question - First observed
generate_calc_items - First observed
generate_calc_paper - First observed
generate_variants - First observed
get_book_structure - First observed
get_feedback_sheet - First observed
get_lecture_content - First observed
get_plan_detail - First observed
get_punch_day - First observed
get_question - First observed
get_role_manual - First observed
get_student_profile - First observed
health_check - First observed
ingest_items - First observed
ingest_question - First observed
label_question - First observed
list_books - First observed
list_calc_types - First observed
list_feedback_sheets - First observed
list_kg_tree - First observed
list_lecture_docs - First observed
list_punch_days - First observed
list_schedule - First observed
list_teach_targets - First observed
login - First observed
login_as - First observed
make_variants - First observed
my_recent_uploads - First observed
override_item - First observed
parse_paper_text - First observed
persist_variants - First observed
remove_lecture_frag - First observed
render_prep_pack - First observed
render_shuzimi_figure - First observed
resolve_kg - First observed
save_lecture_frag - First observed
schedule_sessions - First observed
search_questions - First observed
submit_punch_review - First observed
submit_review - First observed
update_paper - First observed
update_session - First observed
update_teach_target - First observed
upload_image - First observed
upsert_course_plan - First observed
upsert_feedback_sheet - First observed
upsert_punch_day - First observed
verify_ingest - First observed
verify_variant
TDQS
Scored across 71 tools
Most tools have distinct purposes with detailed descriptions, but the sheer number (71) and subtle overlaps (e.g., login vs login_as, compose_paper vs create_paper) may cause occasional confusion. Overall clear, but not completely unambiguous.
All tools follow a consistent verb_noun pattern (e.g., list_kg_tree, search_questions, upload_image). Naming conventions are uniform across the entire set, making it predictable for both agents and developers.
With 71 tools, the surface is highly excessive. While the domain is broad, this many tools overwhelm the agent and violate the ideal scope of 3-15. Scores of 50+ are extreme mismatches per the rubric.
The tool set covers most major workflows (CRUD for questions, books, plans, feedback, variants), but lacks a dedicated update_question tool, which is a notable gap. Otherwise, lifecycle coverage is reasonably thorough.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Read-only MCP server for ClassQuill, a tutoring-business-management platform.
An MCP server for deep research or task groups
Related MCP Servers
- AlicenseBqualityDmaintenanceAn MCP server that enables LLMs to interact with Moodle platforms to manage courses, students, assignments, and quizzes through natural language commands.71143MIT
- AlicenseBqualityDmaintenanceAn MCP server that enables LLMs to interact with the Moodle platform to manage courses, students, assignments, and quizzes.711MIT
- AlicenseBqualityDmaintenanceAn MCP server for the Qingma Yizhan (青马易战) platform that provides automated quiz-answering capabilities. It enables users to retrieve course lists, fetch question details, and submit answers through a unified model context interface.32MIT
- AlicenseNot gradedqualityCmaintenanceMCP server for the QLDT HANU student management system, enabling AI assistants to authenticate and interact with the Hanoi University portal.1GPL 2.0