Skip to main content
Glama

️ Kitchensink4Word

![Tests](https://github.com/nometalalchemist/Kitchensink4Word/actions/workflows/tests.yml/badge.svg PyPI License: PolyForm NC

Всё, вплоть до кухонной раковины, для MicrosofWord. Самый полный MCP-сервер для Word (.docx) из сущестующих: 119 инсрументов, созданных так, чоб не повреждать документы, и проесрованных на длинных, сложно оформленных реальных докуменах.

Исория появления: одном у ИИ-агену однажды понадобилось пяднадцать мину, чобы оредакировать двадцать ячеек аблцы в докумене Word, потому чо ни один сущесвующий Word MCP не умел удаляь колонку аблцы, массово редакировать ячейки, управляь сносками И всваляь оглавление. Поэому вмесо уснаовки трёх посредсвенных серверов эо был создан за один день — и еперь у ваших агенов такой проблмы не буде.

Почему именно эо (чесное сравнение)

Перед созданием эого сервера были изчены все публичные Word MCP-серверы (авгус 2026):

Возможнос

Kitchensink4Word

GongRzhe Office-Word (2.1k★, archived)

word-mcp-live (195★)

SecuriyRonin docx-mcp (43★)

Всавка/удаление колонок аблцы

✅ с учёом объединения

Массовое редакирование ячеек (один вызо)

Объединение и разъединение ячеек

только объединение

Сноски и концевые сноски: полный CRUD

✅ + преобразование

только добавление

Вс авка оглавления + обновление

Всроенные циаы и библограия

✅ 12 сілей

Создание указаеля

ЗАПИСЪ отлеживаемых изменений

Приняие/оклонение по авору

часчно

Сравнение и объединение докуменов

✅ нативно для Word

с ошибками

Водяные знаки / защиа / нумерация срок

только защиа

Перемещение разделов / перенос шаблона

Аомарное сохранение + авомаическое резервирование

119 инсруменов оваываю: екс и фораирование, аблцы (включая вс авку/удаление колонок с учёом объединения и массовое редакирование ячеек одним вызом), сноски и концевые сноски (полный CRUD + преобразование сносок в концевые и обрано), оглавления и списки иллюсраций, верхние и нижние колон иулы/разделы, изображения, маркированные и нумерованные списки, вевящиеся комен арии, отлеживаемые изменения (ч ение, приняие/оклонение по авору, И запись изменений как отлеживаемых), а акже сравнение докуменов через Word-COM, обновление полей, экспор в PDF и проверку окрыия без ошибок в Windows.

Related MCP server: word-mcp-live

Чо нового в v1.2 (2026-08-28)

  • Всроенные в Word циаы и библ иография: срукурированное хранилище исочников, поля CITATION с переключаелями сраниц и подавления, поле BIBLIOGRAPHY, 12 выбираемых сілей (APA, Chicago, MLA, IEEE, ...) — проверено по полному циклу: Word оображае пóля в выбранном сіле.

  • Указаель (записи XE с вложенносю и ссылками «см.» + поле INDEX) и списки иллюсраций (список аблц/рисунков).

  • Набор инсруменов для длинных докуменов: римские формаы номеров сраниц, нумерация срок, водяные знаки (совмесимо с командой Word «Удалить водяной знак»), многоколончные разделы, поле «Ср. X из Y».

  • Защиа докумена с совмесмым с Word SHA-512 хешированием пароля (побайово проверено на выходе самго Word); режим trackedChanges зас авляе получаелей ос авляь изменения отлеживаемыми.

  • Операции со срукурой: move_section (заголовок вмесе со всем разделом, включая аблцы), перенос шаблона (переоформление под эалонный докумен с переназнанием сілей по именам), пользоваельские сіли, сіли знаков, свойсва докумена, альернаивный екс изображений.

  • Дополнения для аблц: сроки gridBefore/ridAfter, именованные сіли аблц, сор ировка, разбиение, поворение сроки заголовка, ч ение/запись вложенных аблц, направление екс а в ячейке.

  • Редкие возможнос і фора ирования: капіель (small caps), скрыый екс, межсимвольный инервал, кернинг, указание языка для CJK, позиции абуляции с заполни елями, границы и заливка абзацев, конроль висячих срок, смена регисра.

  • Анализ: подсчё слов по разделам, проверка соовес вия ци а с андар у APA, ошибки проверки правописания и с аис ика удобочи аемос и Word, объединение глав, объединение изменений рецензен ов, сохранение с шифрованием паролем.

Чо делае его особенным

  • Операции с колонками аблц с учёом объединения. delee_columns / inser_columns корректно рабо аю с горизон ально и вер икально объединёнными ячейками (gridSpan сжимаеся, цепочки vMerge переус анавливаюся). На момен написания ни один другой публичный Word MCP э им не обладае.

  • API массовых операций. Редакирование 20 ячеек — э о ОДИН вызо se_cells с полезной нагрузкой, а не 20 отдельных обращений.

  • Запись о слеживаемых изменений. Переда rack=True, auhor="Jane" в инсрумены replace/inser/delee/cell создаё нас оящие ревизии Word, о орые получа ель може приня ь или о клони ь, — проверено в цикле на собс венном механизме ревизий сервера.

  • Сравнение докумен ов. com_compare_documens создаё на ивное для Word сравнение (redline) между двумя версиями докумен а.

  • Никог да не пор и докумен ы. А омарное сохранение (временный файл → проверка срукуры → замена), ав ома ическое резервное копирование с ме кой времени перед каждым изменением, побай ов о иден ичный проход всего, ч о не редакируеся (уравнения, екс овые блоки, елемен ы управ ления содержимым ос аюся не ронуыми), и поня ные с рого ипизированные ошибки — файл, окры ый в Word, о кло няе ся сообщением, а не зависанием.

  • Ус ойчив к фрагмен ированным run. Поиск/замена рабо аю на произвольно разби ых run в Word, сохраняя посимвольное фор а ирование, с защи ой о ReDoS по аймау у для пользова ельских регулярных выражений и опциональным огранич нием радиуса поражения через max_replacemens.

Ребования

  • Windows (инсрумен ы COM ребую усановленного Microsof Word; все ос альные инсрумен ы — э о чис ая рабо а с файлами и рабо аю без Word)

  • Pyhon 3.12+ (разрабо ано на 3.14)

Ус ановка

git clone https://github.com/nometalalchemist/KitchenSink4Word
cd KitchenSink4Word
python -m venv .venv
.venv\Scripts\pip install -e .

Зареги срируй е в Claude Code:

claude mcp add word -s user -- <absolute-path-to>\word-mcp\.venv\Scripts\word-mcp.exe

Модель безопаснос и

  • Каждый изменяющий инсрумен принимае file_path и перед первым изменением создаё рядом с ним файл <name>.bak-<imesamp>.docx (backup=False — пропус и ь).

  • Сохранения а омарны и проверены; при неудачной операции оригинал ос аё ся побай ов о иден ичен.

  • Удаление содержимого, которое несё ссылки на сноски, ав ома ически удаляе еперь осиро евшие определния; validae_documen / validae_noes сообщаю о целос нос и в обоих направлниях.

  • Удаление абзацев не допускае диапазоны, о орые разрезали бы поле (TOC, PAGEREF) пополам или молча прогло или разрыв раздела.

Тес ирование

344 ес а, рабо ающие везде: набор ес ов разраба ывался на закры ом корпусе реальных докумен ов (главы длиной в книгу, докумен , содержащий 171 сноску, рукопись со 126 о слеживаемыми изменениями и комен ариями рецензен ов), а CI ав ома ически генерируе срукурно эквивален ные син е ические замени ели (es/make_corpus.py), к ак ч о весь набор ес ов выполняется на любой машине — включая вашу и каждый pull reques. Локальные реальные докумен ы, если они ес ь, имею приори е . es/word_validar.py окрывае результаты в невидимом Word и падае при любом предупреждении о восс ановлении — оконч а ельная пров ерка на поврежение.

Исория разрабо ки: создан с помощью Claude Code за один день (2026-08-27), про ес ирован в ри раунда — модульные кон рольные очки на каждом э апе, сеанс граничных случаев (89 выз ов), два раунда в «безумном режиме» через сырой ранспор MCP sdio (нагрузочные испы ания масш абируемос и, па ологические опологии объединений, фаззинг Unicode/схем, ReDoS, жизненный цикл блокировки Word, пров ерки у ечек COM), а акже отдельная охо а за багами межфункционального взаимодейс вия. Все находки исправлены регрессионными ес ами. В research/ описаны алгори мы OOXML и подводные камни, на о орых пос роена реализация, с указанием аворс ва изученных э алонных реализаций под лицензией MI.

Извесные ограничения

  • Не живо о редакирования докумен ов, о кры ых в Word (чис ый о каз; инсрумен ы COM рабо аю с сохранёнными файлами).

  • Номера с раниц в оглавлении/списках иллюсраций ребую обновления полей: ав ома ически при следующем о кры ии в Word (updae_on_open), или немедленно через com_refresh_fields.

Лицензия

PolyForm Noncommercial 1.0.0 — беспла на для личного, академического, исследова ельского и любого другого некоммерческого использования. Для коммерческого использования ребуе ся о дельная лицензия до начала использования — о крой е issue, ч обы договори ься.

Available Tools

29 tools
apply_editsA

Apply a batch of anchor-addressed edits in one call: one lock, backup, and validated save for the batch. Anchors come from get_document_view. Ops (each edit has "op"): replace {anchor, find, text, occurrence?} (omitted = every match); set_text {anchor, text} (whole paragraph); insert {location, markdown} (headings, plain paragraphs, lists, and pipe tables become real Word structures; location is the standard object); delete {anchor or anchors}; set_style {anchor, style}; format {anchor, formatting, find?, occurrence?}; set_paragraph_format {anchor, format}; set_cell {anchor: "t:hex:rNcN", text}. The whole batch validates BEFORE anything mutates, against BATCH-START text (never reference text an earlier op creates); one stale anchor refuses it all (STALE_ANCHOR lists failed ops: re-view, resend). The changed map carries per-op results, with fresh anchors for inserted paragraphs, so follow-up batches chain without re-viewing. Ops run in order; keep deletes last. Auto-backup in file mode (backup=False skips rotation); atomic validated save. A document open in Word is edited live as ONE undo step: serialized, validated before any write, rolled back on mid-batch failure. Markdown lists/tables are file-mode only there; stale targets refuse: com_save_document (com-live pack) first, re-view, resend. Use this when a change needs two or more edits; for one, use the standalone tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
liveNoauto
editsYes
atomicNo
backupNo
file_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A5/5.0
Behavior5/5

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

The description is exceptionally transparent about behavior: batch validation before any mutation, batch-start text consistency, stale anchors refusing the entire batch, ordered execution, keep deletes last, auto-backup behavior, atomic save, live editing as one undo step, and rollback on mid-batch failure. These details go far beyond the single readOnlyHint=false annotation which merely signals mutability.

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

Conciseness5/5

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

Though long, the description is dense with necessary information and every sentence earns its place. It is front-loaded with the core batch behavior, then covers edit operations, validation semantics, execution order, live-document behavior, and concludes with a direct usage guideline.

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

Completeness5/5

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

Given the tool's complexity, the description is remarkably complete. It covers all op types, anchor sources, validation semantics, failure handling, live/edit behavior, and the chaining workflow via fresh anchors. Since an output schema exists, the description correctly focuses on behavior and usage rather than return values.

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

Parameters5/5

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

Schema description coverage is 0%, so the description must carry full parameter meaning, and it does. It thoroughly explains the edits array structure, each op type with its fields, anchor formats, occurrence semantics, and special cases like set_cell anchors. It also clarifies backup=False behavior and the atomic save behavior.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Apply a batch of anchor-addressed edits in one call'. It clearly distinguishes this batched tool from standalone single-edit tools by stating 'Use this when a change needs two or more edits; for one, use the standalone tool.'

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

Usage Guidelines5/5

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

Explicitly states when to use this tool versus the standalone alternative: 'Use this when a change needs two or more edits; for one, use the standalone tool.' It also establishes the required workflow by specifying anchors come from get_document_view and instructs to re-view and resend on stale anchors.

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

apply_styleA

Apply a named style. range={start,end} (locations or bare indices) applies a paragraph style to those paragraphs, changing their full look (Heading1-9 auto-created); target={search:{text, occurrence?}} applies a character style to the matched text instead. For an outline level without visual change use set_paragraph_format. Auto-backup (backup=False skips rotation); atomic validated save. Refuses documents open in Word. For batches, use apply_edits. Defining new named styles lives in the academic pack.

ParametersJSON Schema
NameRequiredDescriptionDefault
rangeNo
styleYes
backupNo
targetNo
file_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.9/5.0
Behavior5/5

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

Beyond the readOnlyHint=false annotation, the description discloses important behaviors: auto-backup rotation, backup=False skip, atomic validated save, refusal of documents open in Word, and Heading1-9 auto-creation. This gives the agent critical side-effect information that annotations alone would not convey. No contradiction with annotations exists.

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

Conciseness4/5

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

The description is dense and packed with useful distinctions, alternatives, and behaviors, with no filler. It is slightly long, but every sentence adds operational value. The front-loaded purpose and mode split make it easy to parse despite the density.

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

Completeness5/5

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

Given this is a mutation tool with five parameters, zero schema description coverage, and only readOnlyHint=false as annotation context, the description is remarkably complete. It covers the two operation modes, the relevant parameter behavior, error-prone states (Word-open refusal), save safety, and batch workflow routing. The presence of an output schema means return-value details are not required here.

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

Parameters5/5

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 defines the range parameter shape ('{start,end} (locations or bare indices)'), the target parameter shape ('{search:{text, occurrence?}}'), and the backup parameter's effect ('backup=False skips rotation'). It even clarifies that style refers to a named style and that defining new named styles belongs to the academic pack.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Apply a named style.' It then distinguishes two distinct modes—paragraph style via range and character style via target—so an agent immediately knows what operation is being performed. It also separates itself from set_paragraph_format and apply_edits, making purpose unambiguous.

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

Usage Guidelines5/5

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

It explicitly says when to use an alternative: 'For an outline level without visual change use set_paragraph_format' and 'For batches, use apply_edits.' It also explains when to chose range versus target ('applies a paragraph style' vs. 'applies a character style to the matched text instead'), leaving little to inference.

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

copy_documentA

Copy a document byte-for-byte, e.g. to a new DTG-stamped filename before editing (manage_backups action='snapshot' names such a copy for you; this tool takes an explicit dest_path). Refuses an existing dest_path unless overwrite=True; an overwritten destination's previous content rotates into its .ks4w-backups prev slot first, so the overwrite is undoable via manage_backups restore. Split/merge and multi-document work live in the assembly pack.

ParametersJSON Schema
NameRequiredDescriptionDefault
dest_pathYes
file_pathYes
overwriteNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

The description goes well beyond the readOnlyHint=false annotation by detailing the refusal behavior when dest_path exists, the overwrite=True escape hatch, and the .ks4w-backups rotation that makes overwrite undoable via manage_backups restore. This gives an agent accurate expectations about destructive behavior and recovery.

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

Conciseness5/5

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

Three dense sentences carry the purpose, safety-critical overwrite behavior, and tool-boundary routing with no filler. Each sentence earns its place, and the core action is front-loaded.

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

Completeness5/5

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

For a copy tool, the description covers the operation, the main edge case (existing destination), the undo path, and exclusions like split/merge and multi-document work. Since an output schema exists for return values, omitting output details is acceptable and nothing critical is missing.

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

Parameters4/5

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

Even with 0% schema description coverage, the description adds meaningful semantics for dest_path (explicit path, contrasted with snapshot naming) and overwrite (default refusal, backup rotation, undoability). file_path is not described explicitly, but its role as the source document is reasonably inferable from 'Copy a document' and the required parameter names.

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

Purpose5/5

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

The description states a specific verb and resource ('Copy a document byte-for-byte') and immediately distinguishes itself from manage_backups action='snapshot' and the assembly pack for split/merge/multi-document work. An agent can clearly tell what this tool does and which siblings it is not.

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

Usage Guidelines4/5

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

It gives a concrete use case ('to a new DTG-stamped filename before editing') and contrasts with manage_backups snapshot (which names the copy for you) versus this tool's explicit dest_path. It also routes split/merge/multi-document work elsewhere, but it doesn't explicitly phrase a when-to-use/when-not-to-use rule.

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

create_documentA

Create a new blank .docx file, optionally setting the title core property. Refuses to overwrite an existing file (use copy_document with overwrite=True for that). Parent directories are created automatically. Populate the document afterward with insert_paragraphs, create_table, define_style (academic pack), and other tools. Template-driven builds live in the assembly pack.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleNo
file_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior4/5

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

Annotations only mark readOnlyHint false, so the description carries the burden of behavioral disclosure. It adds meaningful context: the tool refuses to overwrite, auto-creates parent directories, and produces a blank document. No contradiction with annotations.

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

Conciseness5/5

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

Every sentence earns its place: purpose, overwrite exception and alternative, parent-directory side effect, downstream workflow, and template alternative. The information is front-loaded and there is no filler.

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

Completeness5/5

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

For a 2-parameter creation tool, the description covers the key behaviors needed to call it correctly: no overwrite, automatic parent directory creation, and blank output. The output schema exists, so the absence of return-value detail is acceptable.

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

Parameters4/5

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

With 0% schema description coverage, the description compensates by explaining that file_path is the location of the new .docx file and title is an optional core property. It does not detail every validation rule, but for only two simple parameters the semantic roles are clear.

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

Purpose5/5

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

The description states a specific verb and resource: create a new blank .docx file with an optional title core property. It also distinguishes itself from copy_document by explicitly noting that it refuses to overwrite existing files.

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

Usage Guidelines5/5

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

It gives explicit routing guidance: use copy_document with overwrite=True when overwriting is needed, and go to the assembly pack for template-driven builds. It also lays out the intended next steps for populating the document, making it clear when this tool is the starting point.

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

create_tableA

Create a table from 2D string data with single-line borders and a bold repeating header row (header_row=False for none). location is the standard location object ({paragraph}, {after_heading}, {outline}, {search}, {anchor}); omit it to append at the document end; position 'after' only. To build a table from a CSV or JSON file use import_table (protection-io pack). Auto-backup: prev/anchor slots in .ks4w-backups (backup=False skips rotation only); atomic validated save. Refuses documents open in Word.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYes
backupNo
locationNo
width_ptNo
file_pathYes
header_rowNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.9/5.0
Behavior5/5

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

With only readOnlyHint=false in annotations, the description carries the behavioral burden and does so thoroughly. It discloses the backup rotation behavior, backup=False semantics, atomic validated save, bold header default, and the refusal to operate on documents open in Word.

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

Conciseness5/5

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

The description is dense but ordered: purpose first, then formatting, placement, file-import alternative, save/backup behavior, and failure condition. Every sentence adds new information and no filler is present.

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

Completeness5/5

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

Given the output schema exists and annotations are minimal, the description supplies the required context: input format, options, insertion behavior, safety/backup behavior, and error condition. An agent can reliably decide whether and how to call create_table from this text alone.

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

Parameters4/5

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

Schema description coverage is 0%, but the description compensates for most parameters: data as 2D strings, header_row toggle, location object forms/omission semantics, and backup flag behavior. The only parameter left unexplained is width_pt, whose effect on table layout is not described.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Create a table from 2D string data' and clarifies the exact formatting (single-line borders, bold repeating header). It also names import_table as the alternative for file-based input, distinguishing this tool from the CSV/JSON import path.

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

Usage Guidelines5/5

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

It explicitly tells the agent when to use this tool (2D string data) versus import_table (CSV/JSON files). It also specifies placement rules, the 'after' positioning constraint, and the Word-open refusal, so the agent knows when the call will fail.

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

delete_elementA

Delete one document element that has no lifecycle tool of its own. type: equation | image | chart | bookmark | hyperlink | caption | reference_list | content_control. Address equations, images, charts by their list_elements index; reference_list (TOC, List of Tables/Figures, index) by its read order; bookmarks by name (markers go, the text stays; Word-internal underscore names refused); hyperlinks by target url in id and/or a location search on the link text (the link is unwrapped, display text kept, the relationship dropped once unshared; several matches without occurrence refuse loudly listing every candidate); captions by location (Caption-styled paragraphs only); content controls by tag or index (the whole control including content; locked controls refused). Deleting an image or chart also removes its media, chart, and embedded-workbook parts once nothing else references them. Objects with lifecycle tools stay there: notes in manage_note (academic pack), comments in manage_comment (review pack), sources in manage_source (references pack), tables in delete_table, paragraphs in delete_paragraphs. Auto-backup: prev/anchor slots in .ks4w-backups (backup=False skips rotation only); atomic validated save. Refuses documents open in Word.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNo
typeYes
backupNo
locationNo
file_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

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

The description is rich in behavioral detail beyond the readOnlyHint=false annotation: it discloses side effects (image/chart media removal, hyperlink unwrapping, bookmark marker removal), refusal conditions (locked controls, Word-open documents, ambiguous hyperlink matches), and persistence behavior (atomic validated save, backup rotation semantics including backup=False). These are exactly the kind of non-obvious effects an agent needs to know.

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

Conciseness4/5

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

The description is long but densely packed; almost every clause introduces a constraint or behavior that is not available elsewhere. It is front-loaded with the core purpose and type list. A bulleted breakdown of per-type addressing would improve scanability, but there is no redundant or filler content.

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

Completeness5/5

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

For a complex deletion tool with five parameters and no schema descriptions, the description is unusually complete: it covers all supported types, addressing modes, side effects, refusals, backup behavior, and sibling routing. The presence of an output schema means return-value documentation is not required, and nothing critical appears missing.

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

Parameters4/5

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

Schema description coverage is 0%, so the description carries the full burden of explaining parameters. It does this well for most: the polymorphic id semantics are detailed per type, type is fully enumerated, location is explained as a search object, and backup behavior is specified. file_path is not explicitly described, but its meaning is conventional and implied by the tool's purpose.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Delete one document element that has no lifecycle tool of its own,' immediately scoping the tool. It enumerates the supported types (equation, image, chart, bookmark, hyperlink, caption, reference_list, content_control) and explicitly distinguishes it from sibling tools by listing what it does not delete.

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

Usage Guidelines5/5

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

The description gives clear when-to-use guidance: use it for elements without their own lifecycle tool, and lists specific alternatives for the other cases (notes in manage_note, comments in manage_comment, sources in manage_source, tables in delete_table, paragraphs in delete_paragraphs). It also explains how to address each supported type, so an agent can decide correctly before invoking.

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

delete_paragraphsA

Delete body paragraphs by 0-based inclusive index (start, end; end defaults to start) or by range={start, end} location objects. Refuses ranges cutting a field or a section break; deleting every paragraph leaves one empty one behind. track records tracked deletions. expect_start/expect_end delete nothing unless that index still holds the given text. Auto-backup in file mode (backup=False skips rotation). Open documents edit live (serialized), unsaved until saved. For batches, use apply_edits.

ParametersJSON Schema
NameRequiredDescriptionDefault
endNo
liveNoauto
rangeNo
startNo
trackNo
authorNoClaude
backupNo
file_pathYes
expect_endNo
expect_startNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior5/5

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

Annotations only indicate readOnlyHint=false, so the description carries the disclosure burden. It richly reveals mutation-related behaviors: refusal to cut fields/section breaks, empty-paragraph fallback, tracked deletion behavior, expect_start/expect_end no-op safeguards, auto-backup rotation semantics, and live serialized editing. No contradiction with annotations.

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

Conciseness4/5

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

Dense but efficient; every sentence adds a distinct behavioral rule or warning. The content is front-loaded with the core operation, and caveats follow logically. A bulleted list could improve scannability, but for the volume of caveats the length is justified.

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

Completeness4/5

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

For a 10-parameter destructive operation with no destructiveHint annotation, this description covers the critical edge cases: guarded ranges, empty result handling, backup behavior, live-editing semantics, and safe-deletion expectations. The existence of an output schema covers return values. Minor omissions (author semantics, live value options) keep it from a 5.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate. It clarifies start/end inclusive semantics, range objects, track, expect_start/expect_end conditions, backup behavior, and live editing. It does not explain the author parameter or enumerate live value options, but the essential parameters are well interpreted.

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

Purpose5/5

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

Description opens with a specific verb and resource: 'Delete body paragraphs' and specifies the exact addressing scheme (0-based inclusive index/range). This clearly distinguishes it from sibling tools like delete_table, delete_element, and apply_edits, and mentions apply_edits specifically for batch operations.

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

Usage Guidelines4/5

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

Explicitly redirects batch work to apply_edits ('For batches, use apply_edits') and describes when live editing applies. It does not enumerate conditions for choosing this over delete_element or delete_table, but the domain-specific semantics ('body paragraphs', refusal of field/section break cuts) give strong contextual signals.

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

delete_tableA

Delete a whole table and its contents. table_index is the 0-based position among body-level tables in document order, as reported by list_elements(type='tables') or get_document_view; nested tables are removed with their host table. To clear cell values while keeping the grid, use set_cells instead. Auto-backup: prev/anchor slots in .ks4w-backups (backup=False skips rotation only); atomic validated save. Refuses documents open in Word.

ParametersJSON Schema
NameRequiredDescriptionDefault
backupNo
file_pathYes
table_indexYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.9/5.0
Behavior5/5

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

Annotations only mark readOnlyHint=false, so the description carries the burden of explaining destructive behavior. It does this thoroughly: nested tables are removed with the host, backup slots rotate in .ks4w-backups, backup=False only skips rotation, the save is atomic and validated, and Word-open documents are refused.

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

Conciseness5/5

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

The main action is front-loaded in the first sentence, and each subsequent sentence adds necessary behavioral or usage detail without repetition. The text is dense but well organized and every clause earns its place.

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

Completeness5/5

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

For a destructive table tool with an output schema present, the description covers what is deleted, how to identify the target, side effects on nested tables, backup behavior, save semantics, and a failure condition. No critical operational detail is missing.

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

Parameters4/5

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

With 0% schema description coverage, the description compensates strongly: table_index is fully specified as 0-based among body-level tables in document order and sourced from list_elements/get_document_view, and backup behavior is defined. file_path is not explicitly described, though its meaning is clear from the tool context.

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

Purpose5/5

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

The opening sentence states a specific action and object: 'Delete a whole table and its contents.' It also clarifies the meaning of table_index and distinguishes the operation from set_cells, so the agent can identify this as the whole-table deletion tool among siblings like delete_paragraphs and set_cells.

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

Usage Guidelines5/5

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

The description explicitly gives an alternative for a different intent ('To clear cell values while keeping the grid, use set_cells instead') and tells the agent where to obtain a valid table_index via list_elements or get_document_view. It also warns that the tool refuses documents open in Word, which is a clear when-not condition.

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

diagnose_documentA
Read-only

Produce a one-call structural health report, read-only: content-type coverage, dangling relationships and orphan parts, field balance per story part, footnote/endnote integrity, references to undefined styles and numbering, content-control and bookmark sanity, duplicate revision ids, missing image targets, broken cross-references, and a per-part size profile. Never fails on a weird-but-openable document; every check degrades to a reported problem, and healthy=false only for problems that render broken or lose content in Word. The deep companion to validate(checks=['core']). No live mode BY DESIGN: this reads the saved package's XML, stale while Word holds unsaved changes. Close the document first, or use com_validate_opens_clean (com-live pack) / live get_document_info. The full validate check battery lives in the academic pack.

ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

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

Beyond the readOnlyHint annotation, the description discloses important behavior: it never fails on weird-but-openable documents, every check degrades to a reported problem, healthy=false is reserved for content-breaking issues, and results are stale while Word holds unsaved changes. This gives the agent a realistic model of the tool's failure behavior and freshness guarantees.

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

Conciseness4/5

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

The description is dense but purposeful; the long checklist is justified because it precisely defines the report's contents. It is front-loaded with the core purpose before getting into alternatives and caveats. Minor redundancy exists in saying both 'No live mode BY DESIGN' and 'this reads the saved package's XML,' but no filler sentences are present.

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

Completeness5/5

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

Given the tool's complexity—one parameter, read-only structural analysis, subtle staleness semantics, and sibling alternatives—the description covers all necessary context: what it checks, when it is stale, how to avoid staleness, and which alternatives to use. An output schema exists, so return-value details do not need to be in the description.

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

Parameters4/5

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

The schema has one parameter, file_path, with no description (0% schema description coverage). The description partially compensates by explaining that the tool reads 'the saved package's XML' and instructs the agent to 'close the document first', implying file_path must point to a saved, closed document. It doesn't specify supported file extensions, but the single well-named parameter makes this sufficient.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Produce a one-call structural health report, read-only', followed by a detailed list of checks. It clearly differentiates itself from siblings by labeling it 'The deep companion to validate(checks=['core'])' and contrasts it with live alternatives like com_validate_opens_clean and get_document_info.

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

Usage Guidelines5/5

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

It explicitly states when to use this tool over alternatives: 'No live mode BY DESIGN: this reads the saved package's XML, stale while Word holds unsaved changes. Close the document first, or use com_validate_opens_clean.../live get_document_info.' It also points to the academic pack for the full validate check battery, giving an agent clear routing guidance.

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

disable_toolsA

Disable previously enabled tool packs for this session and reclaim their context; the lite core always stays on. Idempotent. The result reports the packs just disabled, the approximate tokens removed, and the remaining surface. packs takes the same names as enable_tools (its description carries the menu) or ['everything'].

ParametersJSON Schema
NameRequiredDescriptionDefault
packsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the bare readOnlyHint=false annotation, it reveals important runtime behavior: disabled packs free context, the operation is idempotent, the lite core is never disabled, and the result includes disabled packs, tokens removed, and remaining surface. This is exactly the kind of side-effect disclosure an agent needs.

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

Conciseness5/5

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

Three sentences with no filler: the action and session scope are front-loaded, followed by idempotency and result details, and finally the parameter semantics. Every sentence earns its place.

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

Completeness5/5

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

For a one-parameter, session-scoped mutation with an output schema, the description covers purpose, side effects, valid values, and what to expect in the response. There are no significant missing pieces an agent would need to invoke it correctly.

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

Parameters4/5

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

With 0% schema coverage, the parameter would otherwise be opaque, but the description explains that 'packs' accepts enable_tools pack names or ['everything'], which is meaningful semantic guidance. It relies on a sibling definition for the full menu, which is acceptable since it points directly to it.

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

Purpose5/5

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

The description uses a specific verb ('Disable') on a concrete resource ('previously enabled tool packs') and scopes it to the current session, which clearly distinguishes it from enable_tools and other document-focused siblings.

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

Usage Guidelines4/5

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

It states the context (after packs have been enabled, for this session) and notes that 'packs' uses the same names as enable_tools, giving an agent a clear route to valid inputs. It does not explicitly spell out when not to use it, but the disable-vs-enable polarity is unambiguous.

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

enable_toolsA

Enable optional tool packs mid-session (sessions start lite). Idempotent; reports tokens added. packs = names below or ['everything']; disable_tools reverses it. Task map: cell merges, tables, images, forms -> media-forms; tracked changes, comments -> review; citations -> references; TOC, notes -> academic; document merge -> assembly; PDF, live Word -> com-live; redaction -> protection-io. Packs:

  • references (~2.4k): citations and bibliography: Word-native sources, bibliography styles, Zotero search/cite, parity checks, style conversion

  • review (~1.8k): tracked changes (read, accept/reject), comments (add, reply, resolve), reviewer reports, structured diff, anonymize

  • academic (~6.0k): notes, TOC, index, captions, cross-references, bookmarks, headers/footers, sections, styles, word counts, validation, submission prep, accessibility

  • assembly (~1.7k): multi-document work: insert/split documents, move sections, copy tables across files, templates, mail merge

  • media-forms (~4.6k): images, charts, equations, text boxes, hyperlinks, table structure (merge/split cells, rows, columns, sort), forms, content controls, field codes

  • com-live (~2.2k): drives the Word app: PDF import/export, compare/combine, proofing, readability, live editing of open documents

  • protection-io (~1.2k): protection, watermarks, redaction with verification, table CSV/JSON import/export

ParametersJSON Schema
NameRequiredDescriptionDefault
packsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A5/5.0
Behavior5/5

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

The annotation only provides readOnlyHint=false, which is minimal. The description adds substantial behavior disclosure: the operation is idempotent, reports tokens added, can accept the special value 'everything', and token counts per pack indicate a cost/effect. This goes well beyond the structured annotation.

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

Conciseness5/5

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

The description is long but well-structured: a lead sentence, a compact task map, then bulleted pack definitions. Each bullet conveys unique, necessary information (pack name, token count, feature list), so no sentence is wasted or redundant.

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

Completeness5/5

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

For a tool with a single array parameter and an output schema, the description covers all relevant context: valid values, side effects, token costs, the inverse sibling, and task-based pack selection. Since an output schema exists, not detailing return values is acceptable, and there are no obvious missing gaps.

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

Parameters5/5

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

The input schema gives 'packs' as an array of strings with 0% description coverage. The description fully compensates by enumerating all valid pack names, offering the special 'everything' option, and mapping tasks to pack names, so an agent knows exactly what strings to pass and what they will enable.

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

Purpose5/5

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

The description states a specific verb and resource: 'Enable optional tool packs mid-session' and clarifies that sessions start lite. It also distinguishes itself from the sibling 'disable_tools' by explicitly naming it as the reverse operation, so an agent can tell them apart.

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

Usage Guidelines5/5

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

It explicitly names 'disable_tools' as the tool that reverses this one, giving clear when-not-to-use context. The task-to-pack map provides concrete guidance for selecting the right pack based on the desired capability, and the 'sessions start lite' preface establishes why this tool would be needed at all.

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

find_textA
Read-only

Find text in paragraphs and table cells; returns locations plus context. include_textboxes=True also searches text-box content as labeled matches; file-mode only. Pass formatting={...} (bold, font, size_pt, color, ...) to search by EFFECTIVE formatting: resolved through run, style chain, and defaults; query=None returns every formatted stretch; scope 'body' or 'all'; file-mode, no regex. Plain queries search open documents live (same shape, 500-match cap). Read-only. To read a known range, use get_text.

ParametersJSON Schema
NameRequiredDescriptionDefault
liveNoauto
queryNo
regexNo
scopeNobody
file_pathYes
formattingNo
context_charsNo
include_textboxesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior5/5

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

Despite readOnlyHint already covering safety, the description discloses substantial behavioral detail: the 500-match cap for live plain queries, effective formatting resolution through run, style chain, and defaults, query=None returning every formatted stretch, and labeled text-box matches. These traits are not inferable from annotations or the schema.

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

Conciseness4/5

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

The description packs a lot into five dense sentences and front-loads the core purpose. It is efficient, though the run-on semicolon structure and repeated 'file-mode only' make it slightly harder to parse than necessary.

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

Completeness4/5

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

For an 8-parameter tool with no schema descriptions, the description covers the major modes, limitations, and output shape, and an output schema exists. It is not fully complete because live values, context_chars, and regex behavior for plain queries are not explicitly specified, but the essential calling context is present.

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

Parameters4/5

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

With 0% schema description coverage, the prose has to explain the parameters, and it does for formatting, scope, include_textboxes, query, and live mode. However, context_chars is left to inference, and the regex parameter's exact applicability is only implied by the phrase 'file-mode, no regex.'

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

Purpose5/5

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

The opening clause states a specific action and resource: 'Find text in paragraphs and table cells; returns locations plus context.' This clearly distinguishes the tool from siblings such as get_text, and the final sentence reinforces that distinction by routing known-range reads to get_text.

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

Usage Guidelines5/5

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

The description gives explicit mode guidance: text-box and formatting searches are file-mode only, while plain queries can run live on open documents. It also provides an explicit alternative: to read a known range, use get_text. This lets an agent choose correctly without inspecting sibling schemas.

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

format_textA

Apply character formatting or change case on a text range. formatting: bold, italic, underline, strike, font, size_pt, color, highlight, small_caps, char_spacing_pt, language, east_asian_language, and more. case: upper | lower | title | sentence. Target: range={start,end}, find, or both; one of formatting or case per call. Auto-backup in file mode (backup=False skips rotation); atomic validated save. Formatting goes live on open documents (serialized); case is file-mode only. For batches, use apply_edits.

ParametersJSON Schema
NameRequiredDescriptionDefault
caseNo
findNo
liveNoauto
rangeNo
backupNo
file_pathYes
formattingNo
occurrenceNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

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

The description discloses important side effects and behaviors: auto-backup behavior, atomic validated saves, live application to open documents, and file-mode-only casing. Since the only annotation is readOnlyHint=false, these extra details carry the behavioral transparency burden well, though it stops short of describing failure modes or permissions.

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

Conciseness5/5

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

The description is compact and information-dense, with no redundant wording. Every sentence adds useful guidance about targeting, constraints, side effects, or sibling-tool distinction.

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

Completeness3/5

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

The description covers the main invocation scenarios and important save/live behaviors, but it is incomplete for a tool with eight parameters and no schema-level descriptions. Missing occurrence semantics and exact accepted values for formatting/case leave gaps, though the presence of an output schema reduces the need to describe return values.

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

Parameters3/5

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

With 0% schema description coverage, the description must compensate for parameter meaning. It explains formatting, case, range, find, backup, and live mode, but it leaves occurrence completely unexplained and does not specify exact formatting keys or case value formats. The required file_path is also only implied, not described.

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

Purpose5/5

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

The description states a specific action ('Apply character formatting or change case') and a specific resource ('on a text range'), making the tool's purpose immediately clear. It also distinguishes itself from the sibling batch tool by noting 'For batches, use apply_edits.'

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

Usage Guidelines4/5

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

The description gives direct usage constraints: target can be range, find, or both; only one of formatting or case per call; and it explicitly redirects batch needs to apply_edits. It could say more about when to prefer format_text over other sibling formatting tools, but the core selection guidance is present.

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

get_document_infoA
Read-only

Read a one-call document overview: paragraph/table/footnote/comment/ revision counts, sections, and package parts. Documents open in Word are read live (same key names; live adds 'words' from Word's own ComputeStatistics counter plus track_revisions, and omits the part list). Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
liveNoauto
file_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior5/5

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

Beyond the readOnlyHint annotation, the description explicitly says 'Read-only' and discloses a behavioral conditional: documents open in Word are read live, with same key names, live adds Word's 'words' counter and track_revisions, and omits the part list. This is exactly the kind of non-obvious behavior an agent needs.

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

Conciseness5/5

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

Two sentences, front-loaded with the main purpose and a compact itemized list of returned counts. The second sentence earns its place by clarifying the live behavior rather than padding.

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

Completeness4/5

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

The output schema covers return values, so the description does not need to. It covers the two key behaviors (overview contents and live mode) and the read-only guarantee; however, it leaves the 'auto' default's exact decision rule unstated, so an agent may need to infer when live is applied.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must carry parameter meaning. It explains the live parameter's effect (adds 'words', track_revisions, omits part list) but does not specify accepted values beyond the schema's default, and file_path is left to inference. file_path is self-evident from the schema and name, so the partial compensation is enough.

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

Purpose5/5

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

Opens with the verb 'Read' and a specific resource ('one-call document overview'), then enumerates exact contents: paragraph/table/footnote/comment/revision counts, sections, and package parts. This clearly separates it from siblings like get_text, get_outline, or list_elements.

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

Usage Guidelines3/5

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

The phrase 'one-call document overview' implicitly tells an agent this is the summary tool, and the live-behavior note adds context, but it never states when to choose this over get_text/get_outline/list_elements or when not to use it. No explicit alternatives or exclusions are provided.

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

get_document_viewA

Read the document as an anchored markdown projection, the low-token alternative to get_text for orientation and bulk editing. One block per paragraph, prefixed [hex] with a stable anchor id (from w14:paraId, which survives edits elsewhere in the document); headings carry # prefixes, tables render as pipe tables under [t:hex] with cells addressed t:hex:rNcN (1-based). Anchors work in every location object ({"anchor": "hex"}) and in apply_edits ops. scope: {"outline": "3.2"} for one heading's section, or {"paragraphs": {"start": N, "end": M}} (end exclusive); omit for the whole document. detail: "structure" (headings and counts only), "text" (default), "full" (adds {++ins++}/{--del--} revision markers and [cN] comment refs with an author legend). include: {"tables": false} to skip tables, {"notes": "inline"} to append footnote/endnote text. Documents without paraIds get VOLATILE anchors (flagged in the header) that change with any edit; stamp_anchors=true writes real paraIds so anchors become durable. Stamping is the ONE mutation this tool can make and runs only when explicitly requested, with the normal backup and validated save; plain reads never modify the file. A document open in Word is read from its last saved state. To locate a string, use find_text; to enumerate collections, use list_elements.

ParametersJSON Schema
NameRequiredDescriptionDefault
scopeNo
detailNotext
includeNo
file_pathYes
stamp_anchorsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A5/5.0
Behavior5/5

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

Despite readOnlyHint=false in annotations, the description fully explains the sole mutation path: "Stamping is the ONE mutation this tool can make and runs only when explicitly requested." It also discloses volatile anchors, the Word open-document behavior, and that plain reads never modify the file, providing far more transparency than the annotations alone.

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

Conciseness5/5

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

The description is dense but every clause earns its place: it defines the output format, parameter values, mutation caveats, and sibling routing with no filler. It is front-loaded with the core purpose and structured so that usage, alternatives, and edge-case behavior follow logically.

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

Completeness5/5

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

For a tool with five parameters, no schema descriptions, and nuanced behaviors, the description covers everything: anchor stability, scope syntax, detail modes, include options, the stamp_anchors side effect, and open-document behavior. The presence of an output schema reduces the need to explain return values, so nothing necessary for correct invocation is missing.

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

Parameters5/5

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

With 0% schema description coverage, the description carries the entire burden, and it fully delivers: scope is defined with outline and paragraph ranges, detail is expanded with structure/text/full values, include is illustrated with tables and notes, and stamp_anchors is explained. This goes well beyond the schema's bare keys.

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

Purpose5/5

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

The opening sentence states a specific action and resource: "Read the document as an anchored markdown projection," and immediately positions it as "the low-token alternative to get_text," differentiating it from a clear sibling. It further specifies the output format (paragraphs, headings, tables, anchors), so the purpose is unmistakable.

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

Usage Guidelines5/5

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

The description explicitly names when to use this tool versus alternatives: it is for orientation and bulk editing, and it closes with "To locate a string, use find_text; to enumerate collections, use list_elements." It also explains when stamp_anchors should be used, giving clear decision guidance.

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

get_outlineA
Read-only

List every heading with its paragraph index and level. Detects Heading styles AND w:outlineLvl overrides (direct or style-inherited); detected_via names which. detect_formatted=True adds a heuristic scan for direct-formatted headings (short bold/centered paragraphs). When nothing is detected, returns a note plus flat structure counts, not an empty list. The indices feed the location object's paragraph and outline selectors. Open documents are read live. Read-only. TOC generation and heading surgery: academic pack.

ParametersJSON Schema
NameRequiredDescriptionDefault
liveNoauto
file_pathYes
detect_formattedNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior5/5

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

Beyond the readOnlyHint annotation, the description discloses several behavioral details: it detects both style-based and w:outlineLvl overrides, explains the detect_formatted heuristic, and explicitly states the empty-result behavior ('returns a note plus flat structure counts, not an empty list'). It also notes that open documents are read live. These details meaningfully extend what the annotation alone provides.

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

Conciseness4/5

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

The description is compact and front-loaded with the core purpose; the first sentence gives the essential function. A few phrases are cryptic, notably 'detected_via names which' and 'academic pack,' which slightly reduce clarity, but the overall length is appropriate and no redundant filler is present.

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

Completeness4/5

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

Given the output schema exists and readOnlyHint is present, the description covers detection variants, fallback behavior, and how indices are consumed. The main gap is the 'live' parameter's semantics, which remains ambiguous. Still, the description is sufficient for an agent to call the tool correctly in most cases.

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

Parameters3/5

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

Schema property descriptions are at 0% coverage, so the description must carry parameter meaning. It clearly explains detect_formatted ('adds a heuristic scan for direct-formatted headings') and makes file_path's role obvious, but it does not explain the 'live' parameter or its possible values beyond the statement 'Open documents are read live.' This leaves one parameter underspecified.

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

Purpose5/5

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

The description opens with a specific verb-resource pair: 'List every heading with its paragraph index and level.' It further clarifies what is detected (Heading styles and w:outlineLvl overrides) and names the mechanism ('detected_via'), making the tool's purpose distinct from text-fetching or element-listing siblings. The phrase 'TOC generation and heading surgery' additionally frames the intended use without ambiguity.

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

Usage Guidelines3/5

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

The description implies usage for outline-aware operations by mentioning 'TOC generation and heading surgery' and states that indices feed paragraph/outline selectors. However, it does not explicitly say when to choose this tool over alternatives such as get_text, list_elements, or get_document_view, nor does it state any exclusions or fallback conditions.

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

get_server_infoA
Read-only

Report this server's build and environment: version, the active tool surface (tool count, approximate token bill, per-pack state), the packs enable_tools can load, what decided the startup surface and whether it is locked, whether the Word application tier can run here, whether path sandboxing is on, the host OS and Python, and the update-check state. Needs no document, opens no file, starts no Word. Paste-safe: no path, document name, or user name, so a bug report can carry it as it stands.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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

Beyond the readOnlyHint annotation, the description discloses critical behavioral traits: it opens no document, starts no Word, contains no path/document/user name, and is safe to paste into a bug report. This goes well beyond the annotation and gives an agent confidence about side-effect-free execution.

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

Conciseness4/5

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

The description is dense but every clause adds information, starting with the core purpose and then detailing return contents and safety properties. It is slightly long, but the length is justified given the breadth of environment information reported.

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

Completeness5/5

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

For a zero-parameter read-only introspection tool, the description fully covers what the tool reports, its operational constraints, and its intended use. Since an output schema exists, return-values need no further description.

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

Parameters4/5

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

There are zero parameters and the schema coverage is 100%, so the description carries no parameter burden. The baseline of 4 applies because no parameter explanation is needed at all.

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

Purpose5/5

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

The description states a clear, specific verb ('Report') and resource ('this server's build and environment'), and enumerates exactly what is included: version, tool surface, packs, startup decision, Word tier, sandboxing, OS/Python, update-check. This unambiguously distinguishes it from the document-centric sibling tools such as get_document_info and diagnose_document.

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

Usage Guidelines4/5

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

The description gives clear context for when this tool is appropriate: it needs no document, opens no file, and is paste-safe for bug reports. It does not explicitly name alternative tools or exclusions, but the unique server-info scope makes the intended use easy to infer.

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

get_tableA
Read-only

Read one table in full: every cell's text, the merge map, and column widths. table_index is 0-based among body-level tables in document order. has_merges=false returns rows of strings; has_merges=true returns {text, grid_span, vmerge} cells. For a table nested inside a cell, pass nested={row, cell, index} addressing the host cell (index picks among several, default 0). Write with set_cells; reshape with modify_table_structure (media-forms pack). Read-only; reads the last-saved state of a document open in Word.

ParametersJSON Schema
NameRequiredDescriptionDefault
nestedNo
file_pathYes
table_indexYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

Goes beyond the readOnlyHint annotation by adding the important 'reads the last-saved state' caveat and explaining how the output shape varies when merges are present. Error behavior is not covered, but the read-only safety profile is already annotated.

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

Conciseness5/5

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

Five dense sentences with no filler; the core purpose is front-loaded and every sentence adds either parameter semantics, output behavior, or routing guidance.

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

Completeness5/5

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

For a complex table-reading tool, it covers purpose, parameter semantics, nested-table handling, output variants, sibling routing, and state semantics. With an output schema present and readOnlyHint annotated, little essential information is missing.

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

Parameters4/5

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

Despite 0% schema coverage, the description explains table_index's 0-based body-level indexing and nested's {row, cell, index} shape including default behavior. file_path is left implicit, but it is self-explanatory.

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

Purpose5/5

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

States a specific verb and resource: 'Read one table in full', and enumerates exactly what is returned (cell text, merge map, column widths). This clearly separates it from sibling read tools like get_text or get_outline.

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

Usage Guidelines4/5

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

Provides strong context: body-level table indexing and nested-table addressing explain when this tool applies. It also explicitly routes write and reshape operations to set_cells and modify_table_structure, though it does not contrast with other read tools.

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

get_textA
Read-only

Read body paragraphs as [{index, text, style, ...}] with effective styles. start/end slice by paragraph index (0-based, end EXCLUSIVE); contains filters. include_textboxes=True appends text-box content as labeled extras, body indices untouched; textbox=true (or {"index": n}) returns ONLY text-box content, with the box_index set_textbox_text (media-forms pack) takes; file-mode only. Open documents read live, same shape. Equations read via list_elements type='equations'. Read-only. Orientation: get_document_view.

ParametersJSON Schema
NameRequiredDescriptionDefault
endNo
liveNoauto
startNo
textboxNo
containsNo
file_pathYes
include_textboxesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already provide readOnlyHint=true, and the description reiterates 'Read-only' without contradicting it. It adds substantial behavioral detail: 0-based end-exclusive slicing, filter behavior, include_textboxes preserving body indices, textbox-only mode returning labeled box content with box_index, and live/open-document behavior.

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

Conciseness4/5

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

The description is front-loaded with the core purpose and dense with relevant behavioral rules; no filler. The telegraphic style, especially the textbox/media-forms clause, is terse to the point of awkwardness but still packs the necessary information.

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

Completeness4/5

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

With an output schema present and a read-only annotation, the remaining burden is call behavior, which the description mostly covers: slicing, filtering, textbox modes, file-mode restriction, live documents, and sibling routing. Small omissions like exact contains matching semantics and the acceptable values for live keep it from being fully complete.

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

Parameters4/5

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

Input schema has 0% description coverage, so this description is the only source of parameter meaning. It explains start/end semantics, contains, include_textboxes, and textbox; file_path is self-evident. The 'live' parameter is only indirectly touched by 'Open documents read live, same shape,' leaving a small gap, but the main parameters are meaningfully annotated.

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

Purpose5/5

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

Description states a clear verb+object: 'Read body paragraphs as [{index, text, style, ...}] with effective styles.' It further scopes by start/end/contains and textbox modes, and distinguishes itself from list_elements for equations and get_document_view for orientation, so it is not confused with siblings.

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

Usage Guidelines5/5

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

It names two explicit alternatives: equations should be read via list_elements type='equations' and orientation via get_document_view. It also specifies when textbox mode is relevant ('file-mode only') and that open documents are read live. This is enough for an agent to decide when to call this tool rather than a sibling.

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

get_workflowsA
Read-only

Recommended tool sequences for common multi-step tasks, with a one-line why per step. Call with no task to list the available tasks ('process-feedback', 'prepare-submission', 'format-citations', 'build-from-template', 'heavy-editing', 'live-editing', 'comment-partner', 'migrate-from-v1', 'bulk-edit'); call with task='' for that task's step-by-step sequence and notes. Pure guidance: reads nothing, changes nothing.

ParametersJSON Schema
NameRequiredDescriptionDefault
taskNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

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

The description goes well beyond the readOnlyHint annotation by stating 'Pure guidance: reads nothing, changes nothing.' It also reveals how the tool behaves for each invocation style and that each step includes a one-line rationale.

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

Conciseness5/5

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

The description is compact, front-loaded with the core purpose, and uses each sentence for a distinct role: what it provides, how to invoke it, and its safety profile. The list of task names is long but earns its place by compensating for the missing schema enum.

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

Completeness5/5

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

For a simple read-only guidance tool with one optional parameter, the description is complete: it covers invocation variants, valid tasks, behavior, and side-effect safety. The presence of an output schema means return-value details do not need to be described.

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

Parameters5/5

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

The schema has no description for the task parameter, but the description fully compensates by documenting both valid values and the behavior when omitted. It effectively provides an enum-like list of valid task names in prose.

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

Purpose5/5

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

The description clearly identifies this as a guidance tool that returns recommended tool sequences, not a document operation. It distinguishes itself from sibling tools like get_text or apply_edits by explicitly saying it is 'Pure guidance: reads nothing, changes nothing.'

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

Usage Guidelines4/5

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

The description gives explicit call patterns: call with no task to list available tasks, or call with task='<name>' for details. It does not name alternative tools, but no sibling tool overlaps with this guidance function, so the usage context is clear.

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

insert_breakA

Insert a break after the located paragraph. type: page starts a new page; section_next / section_continuous / section_even / section_odd start a new SECTION (own headers, margins, numbering; see set_section_properties, academic pack). location picks the paragraph (omit for document end). Auto-backup: prev/anchor slots in .ks4w-backups (backup=False skips rotation only); atomic validated save. Refuses documents open in Word.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNopage
backupNo
locationNo
file_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior5/5

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

readOnlyHint=false already flags mutation, but the description adds valuable non-obvious behaviors: auto-backup into prev/anchor slots, backup=False skipping rotation only, atomic validated save, and refusal to operate on documents open in Word. These side effects and constraints go well beyond the annotation.

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

Conciseness4/5

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

The description is dense but purposeful; it front-loads the core action and then packs relevant details into compact clauses. The heavy use of semicolons and technical shorthand reduces readability slightly, but every sentence contributes useful information.

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

Completeness4/5

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

Given an output schema exists, the description need not explain return values. It covers break types, placement, backup semantics, save behavior, and an error condition. The main gap is the precise structure expected for the location object, which remains vague despite being a parameter.

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

Parameters4/5

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

Schema description coverage is 0%, so the description carries the parameter-documentation burden. It explains type values, backup behavior, and location's role/default. However, the exact shape of the location object is not specified, and file_path is only implied by its name, keeping it from a perfect score.

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

Purpose5/5

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

The description opens with a clear verb and resource: 'Insert a break after the located paragraph.' It then enumerates all supported break types (page, section_next, section_continuous, section_even, section_odd), making the tool's purpose specific and distinguishable from paragraph/formatting siblings like insert_paragraphs or format_text.

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

Usage Guidelines4/5

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

The description gives concrete placement guidance: location picks the paragraph, omit for document end, and section types have distinct semantics. It references set_section_properties as a related tool for section settings. It does not explicitly contrast with insert_paragraphs or state when not to use this tool, so it falls just short of full guidance.

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

insert_listA

Insert a bulleted or numbered list with real bullet/number glyphs (numbering.xml as needed). items: strings or {text, level} dicts (level 0-8 nests); kind: bullet | number. A call makes its own list, so numbering restarts at 1; continue_from (a num_id from list_elements) carries on an existing one and start_at restarts the new one at N. levels sets per-level formats: [{level, format, text, start, suffix, align, indent_pt, hanging_pt, font}], format one of decimal | lowerLetter | upperLetter | lowerRoman | upperRoman | bullet | none, text a label like '%1.%2.'. location picks the insertion point (omit for document end). Auto-backup to .ks4w-backups; atomic validated save. Refuses documents open in Word.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindNobullet
itemsYes
backupNo
levelsNo
locationNo
start_atNo
file_pathYes
continue_fromNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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

Beyond the single readOnlyHint=false annotation, the description richly discloses important behaviors: a call creates its own list and resets numbering, continue_from carries on existing numbering, auto-backup to .ks4w-backups occurs, saves are atomic and validated, and documents open in Word are refused. This substantially exceeds what annotations alone provide.

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

Conciseness5/5

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

The description is dense but every sentence adds needed information for an 8-parameter tool with complex nested options. It front-loads the core action first, then systematically documents items, kind, numbering controls, levels, location, and safety behavior. The compact inline syntax for data structures is efficient and avoids redundancy.

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

Completeness5/5

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

Given the tool's complexity, the sparse schema, and the presence of an output schema, the description covers everything an agent needs: what the tool does, parameter shapes, list formatting options, insertion point behavior, numbering continuation/restart semantics, backup behavior, and a critical environmental constraint. No significant gap remains.

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

Parameters5/5

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

Schema description coverage is 0%, so the description carries the full parameter-documentation burden. It explains items formats and nesting depth, kind values, continue_from and start_at semantics, the full levels structure with format enums and label syntax, and location meaning. Only file_path and backup are left to self-evidence, and backup is partially covered by the auto-backup behavior statement.

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

Purpose5/5

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

The description opens with a specific action and resource: 'Insert a bulleted or numbered list', which clearly distinguishes it from siblings like insert_paragraphs, create_table, or insert_break. It also adds the meaningful qualifier 'with real bullet/number glyphs (numbering.xml as needed)', making the tool's purpose precise and concrete.

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

Usage Guidelines3/5

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

The description gives strong operational context—how numbering behaves, when to use continue_from versus start_at, where location points, and that it refuses Word-locked documents. However, it does not explicitly say when to use insert_list versus alternatives like insert_paragraphs or apply_style; that differentiation is implied rather than stated.

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

insert_paragraphsA

Insert paragraphs (items {text, style?, formatting?, heading_level?}) at a location object (omitted = document end). heading_level 1-9 makes the item a heading (level 1 = outline 0). inherit_format/copy_format_from clone neighbor formatting minus outline level (file mode only); track records insertions by author. Auto-backup in file mode; atomic validated save. Open documents edit live, serialized; a stale text-selector target refuses: save in Word, retry. For batches, use apply_edits.

ParametersJSON Schema
NameRequiredDescriptionDefault
liveNoauto
trackNo
authorNoClaude
backupNo
locationNo
file_pathYes
paragraphsYes
inherit_formatNo
copy_format_fromNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

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

Even though annotations only say readOnlyHint=false, the description discloses substantial behavior: insertion with heading handling, format cloning minus outline level, track changes by author, auto-backup, atomic validated save, serialized live editing, and refusal of stale targets. This goes well beyond the minimal annotation signal and accurately reflects a mutating tool.

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

Conciseness5/5

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

The description is dense but every clause adds operational value. It front-loads the core insertion semantics and then covers modes, safety, live-editing behavior, troubleshooting, and batch routing without wasted words.

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

Completeness4/5

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

For a 9-parameter tool with no schema descriptions, the description provides substantial operational grounding, and the output schema can cover return-value details. Minor gaps remain: the location object shape is not specified, copy_format_from's integer target is ambiguous, and the live parameter values are not enumerated. Still, the description is largely complete for successful invocation.

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

Parameters4/5

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

Schema description coverage is 0%, so the description carries the burden, and it covers most parameters well: paragraphs item fields, heading_level semantics, location default, inherit_format/copy_format_from, track, author, and backup. However, copy_format_from's expected integer meaning is not fully explained, and the exact accepted values for the live parameter are only implied.

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

Purpose5/5

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

The description names a specific operation and resource: inserting paragraph items, and goes beyond the tool name by specifying the item shape ({text, style?, formatting?, heading_level?}) and the location semantics. It also distinguishes itself from apply_edits by noting that batches should use that sibling.

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

Usage Guidelines5/5

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

It explicitly states when to prefer an alternative: 'For batches, use apply_edits.' It also provides mode-specific guidance, such as file mode limitations for format cloning, live editing behavior for open documents, and how to recover from a stale text-selector target. This gives an agent concrete selection and troubleshooting context.

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

list_elementsA
Read-only

Enumerate any collection in one call. type: tables | images | charts | equations | bookmarks | sources | sections | section_blocks | footnotes | endnotes | fields | reference_fields | form_fields | content_controls | template_placeholders | index_entries | lists | toc. Returns {type, count, items}; the ids or indices returned are the handles the matching set_/delete_/manage_ tools take (list then act). Highlights per type: tables reports dimensions and the table_index other table tools take; images reports display size and the media target; charts reports series; equations reads math content; bookmarks excludes internal TOC bookmarks; fields covers complex and simple fields with cached results; reference_fields inventories Zotero, EndNote, and Mendeley fields and flags broken pairs; form_fields and content_controls cover legacy fields and SDTs; template_placeholders lists {{name}} and MERGEFIELD keys for fill_template and mail_merge (assembly pack); lists groups list paragraphs by numbering instance; toc returns TOC-family fields with cached entries (refresh via com_refresh_fields, com-live pack, then re-read). filter={"range": {start, end}, "name": "substring"} applies where meaningful; inapplicable filters refuse loudly. Read-only, file mode; close documents open in Word first. Tools for these elements live in packs; enable_tools lists them. To locate a string, find_text.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeYes
filterNo
file_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

Even with readOnlyHint=true already provided, the description adds substantial behavior: it declares read-only file mode, warns to close Word documents first, specifies the {type, count, items} return shape, explains that returned handles feed mutating tools, and documents per-type nuances such as cached results and loud rejection of inapplicable filters. This exceeds what annotations alone convey.

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

Conciseness4/5

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

The description is long but structured and information-dense: core purpose, return contract, then per-type highlights, then filters and preconditions. It earns its length because no enum or parameter descriptions exist in the schema, though a slightly tighter organization would improve scannability.

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

Completeness5/5

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

For a high-variety enumeration tool with an output schema and readOnly annotation, the description is complete: it covers input selection, return semantics, downstream tool usage, refresh behavior for cached TOC fields, filter behavior, prerequisites, and routing to sibling tools. No critical calling information is left to inference.

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

Parameters5/5

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

With 0% schema description coverage, the description fully compensates: it lists all legal type values, defines the filter shape as {range: {start, end}, name: substring}, notes that filters apply only where meaningful and otherwise fail loudly, and implies file_path through the file-mode context. This gives an agent enough to construct correct invocations without schema descriptions.

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

Purpose5/5

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

The description opens with a specific verb–resource pair ('Enumerate any collection') and immediately enumerates the 19 supported element types, making scope precise. It also differentiates from close siblings by stating that the returned ids/indices are the handles consumed by set_/delete_/manage_ tools and by pointing string search to find_text.

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

Usage Guidelines4/5

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

It gives actionable usage context: list then act, use enable_tools to discover element packs, and use find_text when locating a string rather than enumerating collections. It does not explicitly enumerate exclusions versus get_text/get_outline, but the type list and 'enumerate any collection' make the intended use clear enough.

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

manage_backupsA

Manage the automatic backups under the hidden .ks4w-backups/ folder next to each mutated document: two stable slots per document, prev (state before the most recent mutation) and anchor (session start). action='list': slot files with sizes and mtimes, legacy .bak- files, and orphaned slot folders whose source document is gone; give file_path for one document or directory for a folder. action='restore': overwrite file_path with a backup; source is 'prev', 'anchor', or a legacy .bak- path. The current content rotates into prev FIRST, so a restore is itself undoable; the payload is validated before the atomic replace, and documents open in Word are refused. action='purge': delete backups; scope: 'legacy', 'orphans', or 'slots'. dry_run defaults to TRUE (report only); dry_run=False deletes. Exact paths and sizes are reported either way. action='snapshot': save a DTG-stamped permanent copy of file_path, YYYYMMDD_HHMM_.docx (an existing leading DTG is replaced, not stacked), optional short label suffix, optional dest_dir. Snapshots are permanent keepers: the slots rotate on every mutation, snapshots are never auto-pruned and no purge scope touches them. Never overwrites (collisions get a numeric suffix); the source document is not modified.

ParametersJSON Schema
NameRequiredDescriptionDefault
labelNo
scopeNo
actionYes
sourceNo
dry_runNo
dest_dirNo
directoryNo
file_pathNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A5/5.0
Behavior5/5

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

The description discloses substantial behavioral details beyond the readOnlyHint false annotation: restore rotates current content into prev so a restore is undoable, documents open in Word are refused, validation precedes atomic replace, purge only deletes when dry_run=False, snapshots are never auto-pruned and are untouched by purge scopes, and collisions get numeric suffixes. These traits are essential for safe invocation.

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

Conciseness5/5

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

The description is long but densely information-packed, with each sentence serving a distinct purpose. It is front-loaded with the core resource and then organized by action, making it easy to scan. Every sentence earns its place, including caveats about undoability, Word-locked files, and snapshot permanence.

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

Completeness5/5

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

For a multi-action tool with eight parameters and no schema-level descriptions, the description is remarkably complete. It covers all actions, all relevant parameter semantics, safety defaults, destructive behavior, naming rules, and operational edge cases. Since an output schema exists, the description does not need to detail return values, and it still notes that exact paths and sizes are reported.

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

Parameters5/5

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

Schema description coverage is 0%, so the description must carry all parameter meaning, and it does. Every parameter is effectively explained: action values, source options ('prev', 'anchor', legacy .bak-*), scope options ('legacy', 'orphans', 'slots'), dry_run default behavior, dest_dir optionality, label as short suffix, and file_path vs directory usage. It goes beyond the schema by explaining naming conventions and collision handling.

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

Purpose5/5

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 automatic backups under a hidden .ks4w-backups/ folder. It enumerates four specific actions (list, restore, purge, snapshot) and identifies the exact resource and behavior for each, making it readily distinguishable from sibling tools that operate on document content rather than backups.

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

Usage Guidelines5/5

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

Each action is given an explicit use case: list for inspecting slots and orphans, restore for overwriting a file from a backup, purge for deleting backups with scoped options, and snapshot for creating permanent copies. The description also states critical operational defaults such as dry_run defaulting to TRUE, and it clarifies when file_path vs directory should be used.

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

search_and_replaceA

Batch find/replace, safe across Word's fragmented runs. Each item: {find, replace, regex?}; scope: body | footnotes | headers | all. preview=true dry-runs the same engine without touching the file: per-item counts, each match with paragraph index and before/after context, the grand total, and the refusals a real run would hit; review, then rerun with max_replacements set to the previewed total so drift aborts instead of over-replacing. find_formatting={bold, italic, font, size_pt, color, highlight, style, ...} restricts replacement to text carrying that effective formatting (file mode only, no regex; an item without find replaces each entire matching stretch, and the replacement keeps the matched formatting). max_replacements aborts, changing nothing, when total matches would exceed it. track records each replacement as a tracked change by author. Sibling: set_paragraph_text rewrites one whole paragraph when a find string would be unwieldy. Live edits appear immediately as one Ctrl+Z step, unsaved until the user saves; the live result adds live:true and skip counters, and literal finds beyond Word's ~255-char limit are handled automatically. Auto-backup in file mode (backup=False skips rotation); atomic validated save. Documents open in Word edit live, serialized; tracked replaces never re-match their own markup. For anchor-scoped edits, use apply_edits.

ParametersJSON Schema
NameRequiredDescriptionDefault
liveNoauto
scopeNobody
trackNo
authorNoClaude
backupNo
previewNo
file_pathYes
replacementsYes
find_formattingNo
max_replacementsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

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

This is exceptionally transparent about side effects: preview dry-runs without touching the file, max_replacements aborts with no changes, live edits appear as one Ctrl+Z step and remain unsaved, file mode creates auto-backups and does an atomic validated save, and tracked replaces never re-match their own markup. These disclosures go far beyond the minimal readOnlyHint=false annotation and accurately describe mutation behavior.

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

Conciseness3/5

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

The description is information-dense but poorly structured: multiple distinct concerns (safety, preview, formatting, live editing, backup, siblings) are packed into one run-on wall of text with semicolons. It is front-loaded with purpose, and every sentence carries useful content, but the lack of grouping or paragraph breaks makes it harder for an agent to parse and retain, so it is not a model of conciseness.

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

Completeness5/5

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

For a complex mutation tool with 10 parameters, the description covers the core operation, scope, preview output fields, formatting restrictions, safety limits, tracking behavior, live-edit semantics, backup handling, and sibling routing. The output schema exists, and the description still adds useful detail about result fields like live:true and skip counters, so nothing critical appears missing.

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

Parameters5/5

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

Schema description coverage is 0%, so the description carries the full burden, and it delivers. It explains the replacements item shape {find, replace, regex?}, enumerates scope values, defines preview=true, max_replacements, track, author, backup, live, and find_formatting semantics. No parameter is left to pure guessing.

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

Purpose5/5

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

The opening line, 'Batch find/replace, safe across Word's fragmented runs,' names a specific verb and resource while immediately flagging the tool's distinguishing value. It also differentiates from siblings by explicitly pointing to set_paragraph_text and apply_edits for cases where this tool is not the right fit.

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

Usage Guidelines5/5

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

The description gives concrete when-to-use guidance: use set_paragraph_text when a find string would be unwieldy, and use apply_edits for anchor-scoped edits. It also prescribes a full preview-then-rerun workflow with max_replacements, making the correct invocation sequence explicit.

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

set_cellsA

Write many table cells in one call. Modes: edits=[{row, cell, text}] for scattered cells, or block={origin:{row, cell}, values:[[...]]} for a 2D block. nested={row, cell, index} targets a table nested in that host cell (edits mode only). track records tracked changes by author. Live mode (plain edits only) refuses vertical merges; file mode is merge-aware. Auto-backup in file mode (backup=False skips rotation); atomic validated save. Documents open in Word edit live, serialized. For batches, use apply_edits.

ParametersJSON Schema
NameRequiredDescriptionDefault
liveNoauto
blockNo
editsNo
trackNo
authorNoClaude
backupNo
nestedNo
file_pathYes
table_indexYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior5/5

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

Beyond the single readOnlyHint=false annotation, the description discloses substantial behavior: tracked changes by author, live mode restrictions, merge awareness, auto-backup behavior, atomic validated save, and serialization behavior in Word. This gives the agent a strong sense of side effects and constraints without needing to infer them.

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

Conciseness4/5

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

The description is dense but every sentence adds useful information. It could benefit from bullets or segmentation for readability, yet it remains appropriately sized and opens with the primary purpose. The mode distinctions and caveats are packed in without fluff.

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

Completeness4/5

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

Given the tool's complexity (9 parameters, multiple modes, backup behavior) and the presence of an output schema, the description covers most critical decision points. It explains mode restrictions, backup behavior, and alternative tool routing. Minor gaps remain around the live parameter semantics and author usage, but they are not critical.

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

Parameters4/5

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

With 0% schema description coverage, the description does heavy lifting by explaining the edits, block, and nested parameter shapes with concrete examples. It also clarifies backup=False semantics. Some parameters like author and live are only implicitly covered, but the core complex parameters are well described.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Write many table cells in one call,' which clearly defines the tool's scope. It further distinguishes itself by enumerating modes (edits, block, nested) that map to specific table-write scenarios. This effectively separates it from sibling tools like apply_edits.

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

Usage Guidelines4/5

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

The description gives explicit routing guidance with 'For batches, use apply_edits,' naming the sibling alternative. It also provides mode-specific usage context, such as live mode refusing vertical merges and file mode being merge-aware. However, it does not fully enumerate when not to use set_cells beyond the batch reference.

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

set_paragraph_formatA

Set paragraph formatting on a batch: indices (0-based list) OR start/end (inclusive range), exactly one form. Keys: alignment, space_before_pt, space_after_pt, line_spacing, indent_left_pt, indent_right_pt, first_line_indent_pt, keep_with_next, outline_level. outline_level (0-8; null removes) never changes the look; it is off by one from heading_level 1-9. Auto-backup; atomic validated save. Open documents edited live (serialized; shading/borders/tab_stops refused live). For batches, use apply_edits.

ParametersJSON Schema
NameRequiredDescriptionDefault
endNo
liveNoauto
startNo
backupNo
indicesNo
file_pathYes
formattingNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior5/5

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

The description goes well beyond the minimal readOnlyHint=false annotation by disclosing auto-backup, atomic validated saves, serialized live editing, refusal of shading/borders/tab_stops on live documents, and the non-visual nature of outline_level. These are important behavioral traits that cannot be inferred from the schema or annotations alone.

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

Conciseness4/5

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

The description is dense and front-loaded with the core action and selection contract, followed by formatting keys and behavioral caveats. Each clause adds useful information, though the final apply_edits sentence is slightly confusing and could be reworded for clarity.

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

Completeness4/5

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

The description covers selection semantics, formatting keys, live-editing constraints, backup behavior, and an alternative tool, which is sufficient for a safe first call. The presence of an output schema reduces the need to describe return values, but the live/backup parameter choices and the exact relationship to apply_edits remain somewhat underspecified.

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

Parameters4/5

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

With 0% schema description coverage, the description compensates well by defining the two exclusive selection forms, listing all formatting keys, and specifying outline_level's 0-8 range and null-removes behavior. It does not fully explain the live and backup parameter options, but the core invocation semantics are clearly established.

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

Purpose4/5

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

The description clearly identifies the action—setting paragraph formatting—and the target selection mechanism (indices or start/end range), and enumerates the supported formatting keys. However, the closing instruction 'For batches, use apply_edits' introduces ambiguity about whether this tool or its sibling is the correct choice for batch operations.

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

Usage Guidelines3/5

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

The description offers some routing guidance by naming apply_edits as a batch-oriented alternative and by describing live-editing restrictions. It does not explain when to prefer this tool over format_text or apply_style, and the word 'batch' is used inconsistently—first as this tool's scope, then as a reason to use apply_edits.

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

set_paragraph_textA

Replace one paragraph's full text, keeping style and base formatting; address it with a location object ({paragraph: N}, {search: ...}, {outline: ...}). Indices shift after edits, so pass expect (a substring the target must contain) to refuse instead of hitting the wrong paragraph; verify the returned replaced_text. Auto-backup in file mode (backup=False skips rotation); atomic validated save. Edits go live on open documents (serialized); tracked-revision paragraphs refuse live. For batches, use apply_edits.

ParametersJSON Schema
NameRequiredDescriptionDefault
liveNoauto
backupNo
expectNo
locationYes
new_textYes
file_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A5/5.0
Behavior5/5

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

Beyond the readOnlyHint=false annotation, the description discloses index-shifting risk, the refusal-on-mismatch behavior of expect, auto-backup behavior, atomic validated saving, live-edit/serialization semantics, and refusal for tracked-revision paragraphs. It aligns with the annotation (write operation) and adds substantial behavioral context.

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

Conciseness5/5

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

The description is dense but every sentence earns its place: purpose, addressing, safety, backup, live behavior, and batch routing. No filler or repetition of schema fields.

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

Completeness5/5

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

For a concise mutation tool it covers risk, failure modes, backup, transaction safety, live-document implications, and the batch alternative; it also references the returned replaced_text for verification. This is a complete operational picture, especially with an output schema available.

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

Parameters5/5

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

Although schema description coverage is 0%, the description compensates by explaining the location object variants, expect as a required substring guard, backup behavior, and live-edit semantics. new_text and file_path are self-evident, so the most ambiguous parameters are meaningfully documented.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Replace one paragraph's full text,' and adds the preserving condition 'keeping style and base formatting.' This clearly differentiates it from sibling formatting tools like set_paragraph_format and batch tools like apply_edits.

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

Usage Guidelines5/5

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

It gives direct usage instructions for locating the target ('address it with a location object'), explains the safety condition for using expect, and explicitly routes batch work to apply_edits. This tells an agent exactly when and how to use the tool versus alternatives.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 2 tool updatesv2.0.3
    • Addedget_server_info
    • Changedinsert_list3 fields changed
      • addedInput schema / properties / continue_from
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "integer"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • addedInput schema / properties / levels
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {},
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • addedInput schema / properties / start_at
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "integer"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
  2. 1 tool updatev2.0.1
    • Changeddelete_paragraphs2 fields changed
      • addedInput schema / properties / expect_end
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • addedInput schema / properties / expect_start
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
  3. 192 tool updatesv2.0.0
    • Removedaccept_revisions
    • Removedadd_bookmark
    • Removedadd_caption
    • Removedadd_chart
    • Removedadd_comment
    • Removedadd_cross_reference
    • Removedadd_endnote
    • Removedadd_equation
    • Removedadd_footnote
    • Removedadd_heading
    • Removedadd_hyperlink
    • Removedadd_image
    • Removedadd_list
    • Removedadd_page_break
    • Removedadd_page_numbers
    • Removedadd_section_break
    • Removedadd_source
    • Removedadd_watermark
    • Removedanonymize_for_review
    • Removedapply_character_style
    • Addedapply_edits
    • Removedapply_manuscript_format
    • Changedapply_style4 fields changed
      • removedInput schema / properties / indices
        Removed value: -{
        -  "items": {
        -    "type": "integer"
        -  },
        -  "type": "array"
        -}
      • addedInput schema / properties / range
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": true,
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • addedInput schema / properties / target
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": true,
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • changedInput schema / required
        Previous value: -[
        -  "file_path",
        -  "indices",
        -  "style"
        -]New value: +[
        +  "file_path",
        +  "style"
        +]
    • Removedapply_table_style
    • Removedapply_template
    • Removedassemble_front_matter
    • Removedaudit_accessibility
    • Removedbatch_apply
    • Removedchange_case
    • Removedchange_heading_level
    • Removedcheck_brand_compliance
    • Removedcheck_citation_parity
    • Removedcheck_defined_terms
    • Removedcheck_image_resolution
    • Removedcheck_reference_field_integrity
    • Removedcheck_template_compliance
    • Removedcleanup_orphan_notes
    • Removedcom_close_open_document
    • Removedcom_combine_documents
    • Removedcom_compare_documents
    • Removedcom_export_pdf
    • Removedcom_import_pdf
    • Removedcom_merge_documents
    • Removedcom_proofing_errors
    • Removedcom_readability_statistics
    • Removedcom_refresh_fields
    • Removedcom_save_open_document
    • Removedcom_save_with_password
    • Removedcom_validate_opens_clean
    • Removedcom_word_status
    • Removedcomment_report
    • Removedcomment_report_multi
    • Removedconvert_citation_style
    • Removedconvert_notes
    • Removedcopy_table
    • Removedcreate_snapshot
    • Changedcreate_table4 fields changed
      • removedInput schema / properties / after_anchor
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedInput schema / properties / after_index
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "integer"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedInput schema / properties / at_end
        Removed value: -{
        -  "default": false,
        -  "type": "boolean"
        -}
      • addedInput schema / properties / location
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": true,
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
    • Removeddeanonymize_document
    • Removeddefine_style
    • Removeddelete_columns
    • Removeddelete_comment
    • Addeddelete_element
    • Removeddelete_endnote
    • Removeddelete_equation
    • Removeddelete_footnote
    • Changeddelete_paragraphs5 fields changed
      • addedInput schema / properties / range
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": true,
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • addedInput schema / properties / start / anyOf
        Added value: +[
        +  {
        +    "type": "integer"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / start / default
        Added value: +null
      • removedInput schema / properties / start / type
        Removed value: -"integer"
      • changedInput schema / required
        Previous value: -[
        -  "file_path",
        -  "start"
        -]New value: +[
        +  "file_path"
        +]
    • Removeddelete_rows
    • Removeddelete_source
    • Removeddelete_toc
    • Removeddetect_citation_system
    • Addeddisable_tools
    • Removededit_endnote
    • Removededit_footnote
    • Addedenable_tools
    • Removedexport_table
    • Removedextract_images
    • Removedfill_form_fields
    • Removedfill_template
    • Removedfind_formatted
    • Changedfind_text6 fields changed
      • addedInput schema / properties / formatting
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": true,
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • addedInput schema / properties / query / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / query / default
        Added value: +null
      • removedInput schema / properties / query / type
        Removed value: -"string"
      • addedInput schema / properties / scope
        Added value: +{
        +  "default": "body",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "file_path",
        -  "query"
        -]New value: +[
        +  "file_path"
        +]
    • Removedfix_accessibility
    • Removedformat_cells
    • Changedformat_text11 fields changed
      • addedInput schema / properties / case
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • removedInput schema / properties / formatting / additionalProperties
        Removed value: -true
      • addedInput schema / properties / formatting / anyOf
        Added value: +[
        +  {
        +    "additionalProperties": true,
        +    "type": "object"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / formatting / default
        Added value: +null
      • removedInput schema / properties / formatting / type
        Removed value: -"object"
      • addedInput schema / properties / occurrence / anyOf
        Added value: +[
        +  {
        +    "type": "integer"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / occurrence / default
        Previous value: -1New value: +null
      • removedInput schema / properties / occurrence / type
        Removed value: -"integer"
      • removedInput schema / properties / paragraph_index
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "integer"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • addedInput schema / properties / range
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": true,
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • changedInput schema / required
        Previous value: -[
        -  "file_path",
        -  "formatting"
        -]New value: +[
        +  "file_path"
        +]
    • Removedget_comments
    • Addedget_document_view
    • Removedget_headers_footers
    • Removedget_lists
    • Removedget_nested_table
    • Changedget_outline1 field changed
      • addedInput schema / properties / detect_formatted
        Added value: +{
        +  "default": false,
        +  "type": "boolean"
        +}
    • Removedget_paragraph_format
    • Removedget_protection
    • Removedget_styles
    • Changedget_table1 field changed
      • addedInput schema / properties / nested
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": true,
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
    • Changedget_text1 field changed
      • addedInput schema / properties / textbox
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "boolean"
        +    },
        +    {
        +      "additionalProperties": true,
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
    • Removedget_textbox_text
    • Removedget_tracked_changes
    • Removedimport_table
    • Removedinsert_bibliography
    • Addedinsert_break
    • Removedinsert_caption_list
    • Removedinsert_citation
    • Removedinsert_columns
    • Removedinsert_content_control
    • Removedinsert_document
    • Removedinsert_field
    • Removedinsert_glossary
    • Removedinsert_index
    • Addedinsert_list
    • Changedinsert_paragraphs5 fields changed
      • removedInput schema / properties / after_anchor
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedInput schema / properties / after_index
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "integer"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedInput schema / properties / at_end
        Removed value: -{
        -  "default": false,
        -  "type": "boolean"
        -}
      • removedInput schema / properties / before_index
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "integer"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • addedInput schema / properties / location
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": true,
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
    • Removedinsert_rows
    • Removedinsert_toc
    • Removedinsert_zotero_citation
    • Removedlist_bookmarks
    • Removedlist_charts
    • Removedlist_content_controls
    • Addedlist_elements
    • Removedlist_endnotes
    • Removedlist_equations
    • Removedlist_fields
    • Removedlist_footnotes
    • Removedlist_form_fields
    • Removedlist_images
    • Removedlist_index_entries
    • Removedlist_reference_fields
    • Removedlist_section_blocks
    • Removedlist_sections
    • Removedlist_sources
    • Removedlist_tables
    • Removedlist_template_placeholders
    • Removedlive_insert_at_cursor
    • Removedlive_scroll_to
    • Removedlive_set_track_changes
    • Removedmail_merge
    • Changedmanage_backups2 fields changed
      • addedInput schema / properties / dest_dir
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • addedInput schema / properties / label
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
    • Removedmark_index_entry
    • Removedmerge_cells
    • Removedmove_section
    • Removedparse_references
    • Removedprepare_for_submission
    • Removedpreview_replace
    • Removedread_toc
    • Removedredact_text
    • Removedreject_revisions
    • Removedremove_document_protection
    • Removedremove_watermark
    • Removedreplace_formatted
    • Removedreplace_image
    • Removedreplace_paragraph_text
    • Removedreply_to_comment
    • Removedresize_image
    • Removedresolve_comment
    • Removedrevision_analytics
    • Removedrevision_summary
    • Changedsearch_and_replace2 fields changed
      • addedInput schema / properties / find_formatting
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": true,
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • addedInput schema / properties / preview
        Added value: +{
        +  "default": false,
        +  "type": "boolean"
        +}
    • Removedsearch_zotero_library
    • Removedset_bibliography_style
    • Changedset_cells7 fields changed
      • addedInput schema / properties / block
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": true,
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • addedInput schema / properties / edits / anyOf
        Added value: +[
        +  {
        +    "items": {
        +      "additionalProperties": true,
        +      "type": "object"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / edits / default
        Added value: +null
      • removedInput schema / properties / edits / items
        Removed value: -{
        -  "additionalProperties": true,
        -  "type": "object"
        -}
      • removedInput schema / properties / edits / type
        Removed value: -"array"
      • addedInput schema / properties / nested
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": true,
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • changedInput schema / required
        Previous value: -[
        -  "file_path",
        -  "table_index",
        -  "edits"
        -]New value: +[
        +  "file_path",
        +  "table_index"
        +]
    • Removedset_cells_block
    • Removedset_column_widths
    • Removedset_columns
    • Removedset_content_control_value
    • Removedset_document_properties
    • Removedset_document_protection
    • Removedset_footer
    • Removedset_header
    • Removedset_header_row_repeat
    • Removedset_image_alt_text
    • Removedset_line_numbering
    • Removedset_nested_cells
    • Removedset_page_number_format
    • Changedset_paragraph_format11 fields changed
      • addedInput schema / properties / end
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "integer"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • removedInput schema / properties / formatting / additionalProperties
        Removed value: -true
      • addedInput schema / properties / formatting / anyOf
        Added value: +[
        +  {
        +    "additionalProperties": true,
        +    "type": "object"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / formatting / default
        Added value: +null
      • removedInput schema / properties / formatting / type
        Removed value: -"object"
      • addedInput schema / properties / indices / anyOf
        Added value: +[
        +  {
        +    "items": {
        +      "type": "integer"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / indices / default
        Added value: +null
      • removedInput schema / properties / indices / items
        Removed value: -{
        -  "type": "integer"
        -}
      • removedInput schema / properties / indices / type
        Removed value: -"array"
      • addedInput schema / properties / start
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "integer"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • changedInput schema / required
        Previous value: -[
        -  "file_path",
        -  "indices",
        -  "formatting"
        -]New value: +[
        +  "file_path"
        +]
    • Addedset_paragraph_text
    • Removedset_section_properties
    • Removedset_textbox_text
    • Removedset_update_fields_flag
    • Removedsetup_chapter_headers
    • Removedsort_table
    • Removedsplit_document
    • Removedsplit_table
    • Removedstructured_diff
    • Removedunmerge_cells
    • Removedupdate_chart_data
    • Removedvalidate_captions
    • Removedvalidate_chapter_headers
    • Removedvalidate_cross_references
    • Removedvalidate_document
    • Removedvalidate_form_completeness
    • Removedvalidate_notes
    • Removedverify_redaction
    • Removedword_count
    • Removedword_count_with_exclusions
    • Removedword_live_repair
  4. 84 tool updatesv1.6.1
    • Addedadd_chart
    • Addedadd_equation
    • Addedanonymize_for_review
    • Addedapply_manuscript_format
    • Addedassemble_front_matter
    • Addedaudit_accessibility
    • Addedbatch_apply
    • Addedchange_heading_level
    • Addedcheck_brand_compliance
    • Addedcheck_defined_terms
    • Addedcheck_image_resolution
    • Addedcheck_reference_field_integrity
    • Addedcheck_template_compliance
    • Addedcom_import_pdf
    • Addedcomment_report
    • Addedcomment_report_multi
    • Addedconvert_citation_style
    • Changedcopy_document1 field changed
      • addedInput schema / properties / overwrite
        Added value: +{
        +  "default": false,
        +  "type": "boolean"
        +}
    • Addedcopy_table
    • Addedcreate_snapshot
    • Addeddeanonymize_document
    • Addeddelete_equation
    • Changeddelete_paragraphs1 field changed
      • addedInput schema / properties / live
        Added value: +{
        +  "default": "auto",
        +  "type": "string"
        +}
    • Addeddetect_citation_system
    • Addeddiagnose_document
    • Addedexport_table
    • Addedextract_images
    • Addedfill_form_fields
    • Addedfill_template
    • Addedfind_formatted
    • Changedfind_text5 fields changed
      • addedInput schema / properties / include_textboxes
        Added value: +{
        +  "default": false,
        +  "type": "boolean"
        +}
      • addedInput schema / properties / live
        Added value: +{
        +  "default": "auto",
        +  "type": "string"
        +}
      • addedOutput schema / properties / result / anyOf
        Added value: +[
        +  {
        +    "items": {},
        +    "type": "array"
        +  },
        +  {
        +    "additionalProperties": true,
        +    "type": "object"
        +  }
        +]
      • removedOutput schema / properties / result / items
        Removed value: -{}
      • removedOutput schema / properties / result / type
        Removed value: -"array"
    • Addedfix_accessibility
    • Changedformat_text1 field changed
      • addedInput schema / properties / live
        Added value: +{
        +  "default": "auto",
        +  "type": "string"
        +}
    • Changedget_comments1 field changed
      • addedInput schema / properties / live
        Added value: +{
        +  "default": "auto",
        +  "type": "string"
        +}
    • Changedget_document_info1 field changed
      • addedInput schema / properties / live
        Added value: +{
        +  "default": "auto",
        +  "type": "string"
        +}
    • Changedget_outline4 fields changed
      • addedInput schema / properties / live
        Added value: +{
        +  "default": "auto",
        +  "type": "string"
        +}
      • addedOutput schema / properties / result / anyOf
        Added value: +[
        +  {
        +    "items": {},
        +    "type": "array"
        +  },
        +  {
        +    "additionalProperties": true,
        +    "type": "object"
        +  }
        +]
      • removedOutput schema / properties / result / items
        Removed value: -{}
      • removedOutput schema / properties / result / type
        Removed value: -"array"
    • Addedget_paragraph_format
    • Changedget_text5 fields changed
      • addedInput schema / properties / include_textboxes
        Added value: +{
        +  "default": false,
        +  "type": "boolean"
        +}
      • addedInput schema / properties / live
        Added value: +{
        +  "default": "auto",
        +  "type": "string"
        +}
      • addedOutput schema / properties / result / anyOf
        Added value: +[
        +  {
        +    "items": {},
        +    "type": "array"
        +  },
        +  {
        +    "additionalProperties": true,
        +    "type": "object"
        +  }
        +]
      • removedOutput schema / properties / result / items
        Removed value: -{}
      • removedOutput schema / properties / result / type
        Removed value: -"array"
    • Addedget_textbox_text
    • Addedget_workflows
    • Addedimport_table
    • Addedinsert_content_control
    • Addedinsert_document
    • Addedinsert_field
    • Addedinsert_glossary
    • Changedinsert_paragraphs3 fields changed
      • addedInput schema / properties / copy_format_from
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "integer"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • addedInput schema / properties / inherit_format
        Added value: +{
        +  "default": false,
        +  "type": "boolean"
        +}
      • addedInput schema / properties / live
        Added value: +{
        +  "default": "auto",
        +  "type": "string"
        +}
    • Addedinsert_zotero_citation
    • Addedlist_charts
    • Addedlist_content_controls
    • Addedlist_equations
    • Addedlist_fields
    • Addedlist_form_fields
    • Addedlist_reference_fields
    • Addedlist_template_placeholders
    • Addedlive_insert_at_cursor
    • Addedlive_scroll_to
    • Addedlive_set_track_changes
    • Addedmail_merge
    • Addedmanage_backups
    • Addedparse_references
    • Addedprepare_for_submission
    • Addedpreview_replace
    • Addedredact_text
    • Addedreplace_formatted
    • Changedreplace_paragraph_text2 fields changed
      • addedInput schema / properties / expect
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • addedInput schema / properties / live
        Added value: +{
        +  "default": "auto",
        +  "type": "string"
        +}
    • Addedrevision_analytics
    • Changedsearch_and_replace1 field changed
      • addedInput schema / properties / live
        Added value: +{
        +  "default": "auto",
        +  "type": "string"
        +}
    • Addedsearch_zotero_library
    • Changedset_cells1 field changed
      • addedInput schema / properties / live
        Added value: +{
        +  "default": "auto",
        +  "type": "string"
        +}
    • Addedset_content_control_value
    • Changedset_paragraph_format1 field changed
      • addedInput schema / properties / live
        Added value: +{
        +  "default": "auto",
        +  "type": "string"
        +}
    • Addedset_textbox_text
    • Addedsetup_chapter_headers
    • Addedsplit_document
    • Addedstructured_diff
    • Addedupdate_chart_data
    • Addedvalidate_captions
    • Addedvalidate_chapter_headers
    • Addedvalidate_cross_references
    • Addedvalidate_form_completeness
    • Addedverify_redaction
    • Changedword_count1 field changed
      • addedInput schema / properties / live
        Added value: +{
        +  "default": "auto",
        +  "type": "string"
        +}
    • Addedword_count_with_exclusions
    • Addedword_live_repair
  5. 119 tool updatesv1.2.1
    • First observedaccept_revisions
    • First observedadd_bookmark
    • First observedadd_caption
    • First observedadd_comment
    • First observedadd_cross_reference
    • First observedadd_endnote
    • First observedadd_footnote
    • First observedadd_heading
    • First observedadd_hyperlink
    • First observedadd_image
    • First observedadd_list
    • First observedadd_page_break
    • First observedadd_page_numbers
    • First observedadd_section_break
    • First observedadd_source
    • First observedadd_watermark
    • First observedapply_character_style
    • First observedapply_style
    • First observedapply_table_style
    • First observedapply_template
    • First observedchange_case
    • First observedcheck_citation_parity
    • First observedcleanup_orphan_notes
    • First observedcom_close_open_document
    • First observedcom_combine_documents
    • First observedcom_compare_documents
    • First observedcom_export_pdf
    • First observedcom_merge_documents
    • First observedcom_proofing_errors
    • First observedcom_readability_statistics
    • First observedcom_refresh_fields
    • First observedcom_save_open_document
    • First observedcom_save_with_password
    • First observedcom_validate_opens_clean
    • First observedcom_word_status
    • First observedconvert_notes
    • First observedcopy_document
    • First observedcreate_document
    • First observedcreate_table
    • First observeddefine_style
    • First observeddelete_columns
    • First observeddelete_comment
    • First observeddelete_endnote
    • First observeddelete_footnote
    • First observeddelete_paragraphs
    • First observeddelete_rows
    • First observeddelete_source
    • First observeddelete_table
    • First observeddelete_toc
    • First observededit_endnote
    • First observededit_footnote
    • First observedfind_text
    • First observedformat_cells
    • First observedformat_text
    • First observedget_comments
    • First observedget_document_info
    • First observedget_headers_footers
    • First observedget_lists
    • First observedget_nested_table
    • First observedget_outline
    • First observedget_protection
    • First observedget_styles
    • First observedget_table
    • First observedget_text
    • First observedget_tracked_changes
    • First observedinsert_bibliography
    • First observedinsert_caption_list
    • First observedinsert_citation
    • First observedinsert_columns
    • First observedinsert_index
    • First observedinsert_paragraphs
    • First observedinsert_rows
    • First observedinsert_toc
    • First observedlist_bookmarks
    • First observedlist_endnotes
    • First observedlist_footnotes
    • First observedlist_images
    • First observedlist_index_entries
    • First observedlist_section_blocks
    • First observedlist_sections
    • First observedlist_sources
    • First observedlist_tables
    • First observedmark_index_entry
    • First observedmerge_cells
    • First observedmove_section
    • First observedread_toc
    • First observedreject_revisions
    • First observedremove_document_protection
    • First observedremove_watermark
    • First observedreplace_image
    • First observedreplace_paragraph_text
    • First observedreply_to_comment
    • First observedresize_image
    • First observedresolve_comment
    • First observedrevision_summary
    • First observedsearch_and_replace
    • First observedset_bibliography_style
    • First observedset_cells
    • First observedset_cells_block
    • First observedset_column_widths
    • First observedset_columns
    • First observedset_document_properties
    • First observedset_document_protection
    • First observedset_footer
    • First observedset_header
    • First observedset_header_row_repeat
    • First observedset_image_alt_text
    • First observedset_line_numbering
    • First observedset_nested_cells
    • First observedset_page_number_format
    • First observedset_paragraph_format
    • First observedset_section_properties
    • First observedset_update_fields_flag
    • First observedsort_table
    • First observedsplit_table
    • First observedunmerge_cells
    • First observedvalidate_document
    • First observedvalidate_notes
    • First observedword_count

TDQS

A4.3/5.0

Scored across 29 tools

Disambiguation5/5

Each tool targets a distinct resource/action: reads are split across info, view, text, table, outline, element enumeration, find, and diagnostics; writes are split across paragraph, table, format, style, and batch operations. Cross-references like apply_style vs set_paragraph_format and apply_edits vs standalone tools actively prevent misselection.

Naming Consistency5/5

All tool names follow a clear snake_case verb_noun pattern with consistent families: get_*, create_*, insert_*, set_*, delete_*, apply_*, enable_*, disable_*. Even phrase-like names such as search_and_replace and diagnose_document fit a predictable verb pattern, and there is no mixed casing.

Tool Count2/5

At 29 tools, the surface exceeds the 25+ threshold and is heavy for an agent to navigate, especially since this is described as the 'lite' core with additional packs available. The tools are all distinct, but the count itself is a coherence liability rather than a well-scoped set.

Completeness4/5

Core document lifecycle, paragraph/text editing, table read/write/delete, search/replace, backups, and diagnostics are well covered. Advanced Word features like images, comments, tracked changes, styles, and headers are gated behind enable_tools packs, so there are no hard dead ends, only a deliberate modular gap.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers