A meticulous DOCX toolkit and MCP server for AI agents. Provides document creation, manipulation, rendering, and template management capabilities for Word documents.
InkPaw provides 17 tools with mostly complete schemas and descriptions, but quality is inconsistent. Tool names follow verb_noun convention well (create_document, update_node, delete_nodes). Descriptions are present but often verbose and written in Chinese with technical jargon that may confuse LLMs unfamiliar with the domain. Parameter descriptions exist but lack clarity on constraints, formats, and valid ranges. Output schemas are not explicitly documented in the source. Error handling guidance is minimal. The server demonstrates solid foundational structure but falls short of production-grade clarity expected for A-tier tools.
收完整 def({meta?, contexts}),服务端补节点 id、跑校验后保存。issues 非空也会保存(草稿态),但 error 级不清零无法渲染。节点可带 caption(图题/表题);autoNumber 开启时 heading text 不要写编号,正文用 {{ref:节点id}} 引用编号;textOptions.link 支持超链接(http(s)/mailto 外链,"#节点id" 内链跳转到标题);textOptions.footnote:"内容" 出脚注(编号服务端排);{{pageRef:节点id}} 出页码引用(target:word 场景专用);纯文本表格 data 直接写二维数组(行需样式再用 {texts:[...]} 完整形)。
输入 Markdown 文本,服务端转成结构化 def 后建档(后续可用 get_outline/update_node 按节点修改)。支持标题、段落、有序/无序列表(原生编号)、任务列表 - [ ](原生复选框)、表格、代码块、引用、图片(相对路径按 baseDir/imagesDir 解析)、分隔线、[toc] 目录、超链接(http(s)/mailto)、脚注 [^1]、公式($...$ 行内、独占段 $$...$$ 转块级);行内加粗/斜体/行内代码。图片 alt 文本会成为图题。返回 { docId, issues }。
基于已注册模板创建填槽文档,返回 docId。slots 值两种形态:字符串=段内替换(保留模板原样式,\n 转软换行);def 节点数组=整段块级替换(支持 text/heading/table/image/math/newPage/blank,表格可用二维数组简写)。槽位可不填全(渲染时占位符原样留下并 warning)。这类文档没有节点结构:改内容用 update_template_slots,渲染用 render_document(同样支持 preview/pdf)。
按 id 删除一组节点。若留下的节点 ref 到被删节点,返回 delete-ref-broken warning 点名引用方;返回删除后的全文档校验结果 + 最新 outline。
删除已注册模板(登记记录 + 模板文件)。注意:由该模板创建的填槽文档将无法再渲染。
Descriptions are verbose, domain-specific, and written in Chinese with heavy technical jargon (e.g., 'meta', 'contexts', 'ref', 'caption'). LLMs unfamiliar with document structure terminology will struggle to understand when/why to call these tools. Descriptions should be 50-200 chars, action-oriented, and in English.
Output schemas are not documented in the source code. Tools like render_document, get_outline, and get_nodes return structured data, but the response format (fields, types, nesting) is not visible. LLMs cannot plan downstream calls without knowing what fields to expect.
Parameter constraints are missing or implicit. E.g., 'title' accepts '1-200 characters' but this is buried in description text, not in JSON Schema minLength/maxLength. 'preset' has no enum of valid values. 'section' format for get_outline is undocumented. LLMs cannot validate inputs without formal constraints.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 55 | 2026-07-28+ | v2 |
各类节点/字段的权威写法示例(示例进测试,与校验器永远同步)。拿不准写法、校验报 error、或上下文太长记不清规则时,先按主题取示例对着写。不带 topic 返回主题清单。
按 id 取完整节点 JSON,看细节用(改表格前先拉全量)。不存在的 id 返回 null。
返回节点骨架 [{id, type, sectionPath, brief}],修改前先看这个定位节点。section 参数(如 "1.1")只返回该节内。
在锚点节点前/后插入一组节点,服务端补 id 并返回 newIds。节点不必带 id;返回插入后的全文档校验结果 + 最新 outline。
列出内置 preset(名称+简介)。
列出全部已注册模板:templateId、名称、槽位清单、注册时间。
把一组节点移到锚点前/后(章节重排)。按 ids 给出的顺序落位(可顺便组内重排);anchorId 不能在 ids 里。返回移动后的全文档校验结果(heading 层级、ref 都会重查)+ 最新 outline。
登记公司固定版式的 .docx/.dotx 模板,返回 templateId 和自动提取的槽位清单。模板里用 {{槽名}} 写占位符(正文/页眉/页脚/表格单元格都行,Word 手工编辑拆散成多个 run 也能识别)。场景判断:合同、证明、固定版式公文才走模板填槽;自由结构的报告/月报用 create_document(def 流),排版交给 preset。
把文档渲染为 .docx 落盘并返回文件路径。存在 error 级 issue 时拒绝渲染并打回 issues。preview:true 额外生成每页 PNG(previewPages),用 Read 读图可直接检查排版。pdf:true 额外导出同名 PDF(pdfPath),交付不怕查看器差异。文档属性(作者/主题/关键词)走 meta.docProps,title 缺省用建档 title。模板填槽文档(create_document_from_template 建的)也走这里渲染,未填槽位会在 warnings 里点名。
整节点替换(id 不变,别的节点对它的 ref 不断)。支持类型改变(如 text 提级为 heading)。返回替换后的全文档校验结果 + 最新 outline(无需再调 get_outline)。
改模板填槽文档的槽位值(浅合并:只动传入的键;值传 null 恢复该槽未填状态)。返回当前已填槽位、模板槽位全集和校验 issues;改完 render_document 重渲染即可。
单独跑校验,返回 issues[](level: error|warn)。
Error handling and recovery guidance is absent. Tools like delete_nodes and delete_template are destructive but provide no confirmation step, dry-run option, or error recovery path. No guidance on what to do if a node ID is invalid or a template is in use.
Tool descriptions for discovery tools (list_presets, list_templates, get_examples) are too brief (35 chars) and do not explain when to call them or what structure they reveal. LLMs may not recognize these as prerequisite discovery steps before calling create_document or register_template.