Skip to main content
Glama

๐Ÿšฐ KitchenSink4Word Community Edition

Tests PyPI License: AGPL-3.0 Listed on mcpservers.org

Landing page ยท llms.txt (machine-readable capability manifest for agents and LLM crawlers)

Edit Word documents with your AI assistant: tracked changes, citations, templates and live edits in Word.

Edit real Word documents from Claude Code, Codex CLI, Copilot CLI or any other MCP client that runs local tools. KitchenSink4Word connects your assistant to .docx files on Windows, and can edit a document while it is open in Microsoft Word so you see the changes land. Files are processed on your computer; the only thing that leaves it is what your AI app sends to its own provider. The Community edition is free under the AGPL. The Business edition adds a Windows installer, a signed update channel, a license your company can approve and support.

Works on: Windows. File editing works without Microsoft Word; live editing and the Word-powered features need Word installed.

Install

Pick the route for your AI app. The commands go in PowerShell on Windows or a terminal on macOS and Linux, not into an AI chat. The package routes need Python 3.12 or newer.

Claude Desktop

Install uv, then quit and reopen Claude Desktop. Download the .mcpb file from KitchenSink4Word releases. In Claude Desktop open Settings, then Extensions, then Advanced settings, then Install extension, and choose the file. The bundle fetches the Python package the first time it starts, so the first launch needs a network connection. Restart your session and check that the tools show as connected.

Claude Code or Codex CLI

Install uv, then run the line for your app and restart your session:

claude mcp add word -s user -- uvx kitchensink4word
codex mcp add word -- uvx kitchensink4word

Any other local MCP client

Use uvx as the command and kitchensink4word as its argument, or install the package and use kitchensink4word as the server command:

pip install kitchensink4word

Then follow your client's guide for adding a local MCP server. Installing the package on its own does not connect it to an AI app.

Business edition

Compare the editions on the pricing page. Already purchased? Your Windows installer and download link are in your license portal.

Related MCP server: word-mcp-live

What it can do

110 document tools, plus the pack on/off controls.

  • Revise a report while it stays open in Word, with edits you can watch.

  • Read, accept and reject tracked changes, and work through reviewer comments.

  • Fill a template or assemble chapters into one manuscript.

  • Build and format tables, lists, headings and page layouts.

  • Insert citations, bibliographies, footnotes and cross-references.

  • Find formatting, accessibility and structure problems before handoff.

  • Compare documents, prepare mail merges and redact selected text.

  • Import or export PDF through Word when it is installed.

What is available depends on the packs you enable and the applications installed. The full tool reference is below.

Business edition

Need a license your company can approve and a setup someone supports? The Business edition pairs these tools with a Windows installer, a signed update channel and support under the Business terms. Update checks tell you when a covered release is available; nothing installs on its own. Compare the options on the pricing page. The Community edition stays free under the AGPL, including business use that meets its terms.

Privacy Policy

The tools run on your computer, and KitchenSink4AI receives no documents and no usage data from them. Your AI app may send prompts, file contents and tool results to its own provider under that app's settings and terms. Installing downloads packages, and the Community version check contacts PyPI unless you disable it; those requests carry connection details such as your network address and never your documents. Cloud folders and backups follow their own settings. The Privacy Policy covers the product, purchases and support records.

Not affiliated with, endorsed by, or sponsored by Microsoft Corporation. Microsoft and Word are trademarks of the Microsoft group of companies.

What the 222 operations cover

The everyday core covers text and formatting, tables (including merge-aware column insert/delete and one-call bulk cell edits), footnotes and endnotes (full lifecycle plus footnote and endnote conversion), TOC and caption lists, headers, footers, and sections, images, bulleted and numbered lists, content controls and fields, threaded comments, and tracked changes (read, accept and reject by author, and writing edits as tracked changes). Beyond that the surface spans equations (LaTeX to Word math), native charts, document assembly (chapter files into one manuscript), Zotero library citations, publication style conversion (8 styles, beta), review-cycle analytics, workflow suites (mail merge, batch operations, redaction, compliance and accessibility audits and fixes, submission prep, front matter, diagnostics), and Word-COM-backed document compare, field refresh, PDF export and import, and open-clean validation on Windows.

What makes it different

  • Merge-aware table column operations. modify_table_structure inserts and deletes columns correctly through horizontally and vertically merged cells (gridSpan shrinks, vMerge chains re-root). At the time of writing, no other public Word MCP has this.

  • Bulk-first API. Editing 20 cells is ONE set_cells call with a payload, not 20 round-trips.

  • Tracked-change writing. track=True, author="Jane" on edit tools produces real Word revisions the recipient can accept or reject, proven round-trip against the server's own revision engine.

  • Document compare. com_multi_document(action="compare") produces a Word-native redline between two versions of a document.

  • Never corrupts. Atomic saves (temp file, structural validation, replace), automatic slot backups before every mutation, byte-identical passthrough of anything not being edited (equations, textboxes, content controls survive untouched), and clean typed errors: a file open in Word is refused with a message, not a hang.

  • Fragmented-run safe. Find and replace works across Word's arbitrarily split runs while preserving per-character formatting, with a ReDoS timeout guard on user regex and an optional blast-radius limit.

Why this one (the capability comparison)

Every public Word MCP server was surveyed before building this. The honest comparison is about what each one can do, not how many names it has:

Capability

KitchenSink4Word

GongRzhe Office-Word (2.1kโ˜…, archived)

word-mcp-live (195โ˜…)

SecurityRonin docx-mcp (43โ˜…)

Tiered context loading (lite core, packs on demand)

โœ… from ~10.2k tokens

โŒ

โŒ

โŒ

Live editing while the doc is open in Word

โœ… cursor-safe, one Ctrl+Z per call

โŒ

โœ…

โŒ

Table column insert/delete

โœ… merge-aware

โŒ

โŒ

โŒ

Bulk cell edits (one call)

โœ…

โŒ

โŒ

โŒ

Cell merge/unmerge

โœ…

merge only

โŒ

โŒ

Footnotes AND endnotes CRUD

โœ… + conversion

add only

โŒ

โœ…

TOC insert + refresh

โœ…

โŒ

โŒ

โŒ

Native citations/bibliography

โœ… 12 styles

โŒ

โŒ

โŒ

Index generation

โœ…

โŒ

โŒ

โŒ

Tracked-change WRITING

โœ…

โŒ

โœ…

โœ…

Accept/reject by author

โœ…

โŒ

partial

โœ…

Document compare + combine

โœ… Word-native

โŒ

โŒ

buggy

Watermarks / protection / line numbers

โœ…

protect only

โŒ

โŒ

Section moving / template transfer

โœ…

โŒ

โŒ

โŒ

Atomic saves + auto-backup

โœ…

โŒ

โŒ

โŒ

Capability survey compiled from public repositories, documentation, and issue trackers. Corrections welcome: open an issue.

The packs

Numbers below come straight from scripts/measure_surface.py, never hand-counted, and every one counts the whole tools/list entry a client receives rather than the description and schema alone. The lite core loads at startup; the seven packs load on demand.

Pack

Tools

Approx tokens

What it carries

lite (startup)

29

~10.2k

Everyday reading and editing: text, paragraphs, tables, cells, lists, find and replace, outline, document view, backups, workflow guide, server info, pack toggles

references

8

~2.9k

Word-native citations and bibliography, Zotero search and cite, parity checks, style conversion and detection

review

9

~2.4k

Tracked changes (read, accept/reject, reports), threaded comments, structured diff, anonymize and deanonymize

academic

24

~7.6k

Footnotes and endnotes, TOC, index, captions, cross-references, front matter, chapter headers, sections, styles, list numbering, word counts, validation batteries, submission prep, accessibility

assembly

7

~2.1k

Insert and split documents, move sections, copy tables across files, apply and fill templates, mail merge

media-forms

16

~5.6k

Images, charts, equations, text boxes, hyperlinks, table structure and styling, form fields, content controls, field codes

com-live

13

~3.1k

Drives a local Microsoft Word: PDF import/export, compare and combine, proofing, readability, field refresh, live editing of open documents

protection-io

6

~1.6k

Document protection, watermarks, redaction with verification, table data import and export

Full surface

112

~35.5k

Everything (110 document tools plus enable_tools / disable_tools)

Quickstart: start lite, enable what you need

A session begins with the lite core. When a task needs more, the agent turns on the pack by name:

enable_tools(["references"])          # citations, bibliography, Zotero
enable_tools(["academic", "review"])  # notes, TOC, tracked changes, comments

Lite-tool refusals name the pack and the exact enable_tools call to run, and get_workflows recipes name the packs each workflow needs, so discovery is built in. To skip tiering entirely, start the server with KS4W_MODE=full and every tool is present from the first call.

Installed from the .mcpb bundle, the same two choices are checkboxes in the server's Claude Desktop settings: "Load every tool at startup" and "Lock the tool set at startup" (which fixes the surface so enable_tools refuses). They write KS4W_ALL_TOOLS and KS4W_LOCK_TOOLS. Both take true or false, treat empty as off, and refuse to start on anything else rather than guessing. KS4W_MODE beats the first and KS4W_PACK_POLICY beats the second whenever they are set, so a pinned pack list survives an install, and the server writes one line to stderr at startup naming what decided the surface.

One tip that removes most permission pop-ups: In Claude Desktop's Tool permissions for this server, set the Read-only tools group to Always Allow. Those tools cannot change anything, so approving them once is safe, and Claude stops asking about every read. Leave the acting tools on Ask, so anything that changes things still checks with you first.

One client-side caveat: some MCP clients drop a tool's schema when a pack is disabled and do not pick it back up on re-enable, even though the server sends tools/list_changed both ways (observed in Claude Code, 2026-09). If a re-enabled tool comes back as "no such tool", refresh the tool list on the client side (in Claude Code, a ToolSearch call for the tool reloads its schema).

Two numbers that matter

  • 222 document operations, 110 tools. The operation count went up and the tool count came down on purpose. v1 spread similar jobs across many competing names; v2 gives each concept exactly one name built from a small verb table (insert_, set_, manage_, list_elements, validate, delete_element), so an agent picks the right tool the first time and carries less schema to do it. Fewer tools, more reach. Measured with one yardstick on both trees, v1.6 performed 200 operations across its 189 tools and v2.0 performs 222 across 110: every v1.6 capability survived the consolidation (the migration map covers all 189, test-guarded) and v2 adds the anchored batch editor, the anchored document view, deletion parity, and wider dispatch on the multiplexers. Both figures come from scripts/count_operations.py; the v1.6 run is scripts/count_operations_v16.py, which measures a v1.6 checkout with the same definition.

  • Tiered loading: starts at about 10.2k tokens, scales to everything. A fresh session loads the 29-tool lite core (about 10,200 tokens) and turns on capability packs only when a task needs them, with one enable_tools call. Load every pack and the full surface measures about 35,500 tokens, so a session that never leaves lite carries roughly a quarter of the whole sink. (All figures are script-measured and count what the client actually receives; see Context cost below.)

Context cost (measured)

Almost no MCP server tells you what it costs to load. Here is the bill, from scripts/measure_surface.py:

  • Lite start: 29 tools, about 10,200 tokens, loaded when the session opens.

  • Full surface: 112 tools (110 document tools plus the two pack toggles), about 35,500 tokens with every pack enabled.

  • Clients that defer tool schemas until first use (for example Claude Code) pay close to zero until a tool is actually called.

Both figures count the entire tools/list entry the client receives: name, title, description, input and output schemas, annotations and metadata. The estimator used to sum description and input schema only, which published a number about a quarter below what crosses the wire, and a server whose pitch is that it tells you what it costs does not get to publish the flattering subset. The v1.6 comparison this section used to carry was taken on that older yardstick, so it is gone rather than restated: no v1.6 measurement exists on this one.

Safety model

  • Every mutating tool takes file_path and rotates the current content into stable backup slots before the change (backup=False to skip the rotation; the atomic validated save always applies). Backups live in a hidden .ks4w-backups/ folder next to the document, one subfolder per document, with exactly two slots: prev.docx (state before the most recent mutation) and anchor.docx (session start, rotating after 60+ minutes of idle). Storage stays bounded at roughly two copies per document no matter how many edits a session makes. manage_backups lists, restores (undoably: the pre-restore state rotates into prev first), and purges them, including leftover *.bak-* files from earlier schemes.

  • Exclude .ks4w-backups/ from cloud sync tools (OneDrive, Dropbox, Google Drive): the slots churn on every edit and sync clients can hold locks that slow saves down.

  • Mutations of the same file are serialized (in-process and across server processes via an advisory lockfile), so parallel calls cannot clobber each other and response metadata reflects settled document state.

  • COM/live mutations (documents open in Word) remain outside this backup system; Word's own AutoRecover covers the open document.

  • Saves are atomic and validated; a failed operation leaves the original byte-identical.

  • Deleting content that carries footnote references automatically removes the now-orphaned definitions; validate reports integrity in both directions.

  • Paragraph deletion refuses ranges that would cut a field (TOC, PAGEREF) in half or silently swallow a section break.

Update check (opt-out)

Variable

Effect

KS4W_UPDATE_CHECK

off turns the update check off completely: no network call, no cache file (the older KS4W_NO_UPDATE_CHECK=1 still works)

Update check. The server looks for a newer release on PyPI only when you call get_server_info, never at startup and never on a timer, at most one request every seven days, capped at two seconds. The check is a single plain HTTPS GET to pypi.org that sends nothing but the request itself. A failed check is reported with its reason rather than hidden. Set KS4W_UPDATE_CHECK=off to turn it off completely (the older KS4W_NO_UPDATE_CHECK=1 still works). The server never downloads or installs anything.

Sandboxing (opt-in)

Off by default: with nothing configured, the server behaves exactly as it always has. Set the KS4W_ALLOWED_ROOTS environment variable to a list of directories separated by the OS path separator (; on Windows, : elsewhere), for example %USERPROFILE%\Documents;D:\Work, and every path the server touches must resolve inside one of those directories. Reads are gated as well as writes, since a read outside the sandbox exfiltrates content just as surely as a write plants it. The containment check runs on canonicalized paths, so ..\ traversal, symlink and junction escapes, 8.3 short names, extended-length prefixes, case tricks, and lookalike sibling directories (Documents2 against an allowed Documents) are all caught, and UNC network paths are refused unless an allowed root is itself a UNC path that contains them. A blocked call refuses with a typed error naming the offending path and the allowed roots before any file is opened. Recommended whenever the server runs against untrusted or semi-trusted agent traffic.

Testing

2,189 tests (2,094 run everywhere; 95 live-marked tests drive a real Word instance on Windows): the suite was developed against a private corpus of real-world documents (book-length chapters, a document with 171 footnotes, a manuscript with 126 tracked changes and reviewer comments), and CI auto-generates structurally equivalent synthetic stand-ins (tests/make_corpus.py) so the full suite runs on any machine, including yours and every pull request. Local real documents, when present, take precedence. tests/word_validator.py opens outputs in invisible Word and fails on any repair prompt, the definitive corruption check.

Development history: prototyped with Claude Code in a day (2026-08-27), then hardened across release cycles through dedicated adversarial rounds (scale torture, pathological merge topologies, Unicode and schema fuzzing, ReDoS, Word-lock lifecycle, live-editing interaction hunts, COM leak checks) plus per-phase unit gates. Every finding fixed with a regression test, same session it was found. research/ documents the OOXML algorithms and pitfalls the implementation is built on, with attribution to the MIT-licensed reference implementations studied.

Maturity: what the version number does and does not claim

This project moves fast and is honest about what backs it. What the test record covers: every release passes the full suite plus dedicated adversarial rounds through the raw MCP transport, against a corpus of long, heavily formatted real-world documents with zero corruption across all of it. What it does not yet cover: other machines, Word builds older than current Microsoft 365, non-English Word installs (some tools reference styles by localized display name), RTL scripts, and the diversity of documents only real users bring. The safety net while the tool earns that mileage is structural: automatic slot backups before every mutation and atomic validated saves, so a bad outcome is a restore, not a loss. If something misbehaves on your documents, an issue with the symptom (never the document itself, unless it contains nothing private) is the most valuable thing you can send. Before filing: ask your AI to run get_server_info and paste the output here; it is designed to be safe to share.

Beta-labeled tools, heuristic by nature: review their flagged-items list rather than trusting silently: convert_citation_style, anonymize_for_review, validate(checks=["defined_terms"]), and the text-reference scan inside validate(checks=["cross_references"]). Each returns an explicit list of what it could not confidently handle.

Live-mode capability matrix

Which tools work on a document that is OPEN in Word. Dual-mode tools auto-route (live='auto'); everything else refuses with DOCUMENT_LOCKED until the file is closed. Word COM calls within one server process are serialized. Live calls and passwordless save or close also use a machine-local cross-process lock; a concurrent caller receives APP_BUSY before touching Word and nothing is queued. Live edits stay unsaved until com_save_document (the Option C model: see get_workflows(task='live-editing')).

Dual-mode tool (file + live)

Live-mode notes

apply_edits

one COM undo group; markdown lists/pipe tables in insert ops refuse up front with a close-the-file hint; replace verifies matched text in the live range; all other index-addressed ops run the snapshot staleness guard against the last saved state

delete_paragraphs

section-break/field-crossing ranges refuse; range={} location endpoints run the snapshot staleness guard

find_text

plain queries, 500-match cap; formatting mode and include_textboxes file-mode only

format_text

formatting mode routes live; case mode file-mode only (live='force' refuses); range={} locations run the snapshot staleness guard

get_comments

same shape

get_document_info

same key names; adds words/track_revisions, omits part list

get_outline

same flat-list shape

get_text

body shape identical; include_textboxes/textbox modes file-mode only

insert_paragraphs

heading_level maps to built-in Heading styles by numeric constant (outline-based docs get direct outline levels); inherit_format/copy_format_from file-mode only; text-selector locations run the snapshot staleness guard

search_and_replace

plain items route live (255-char finds handled); preview and find_formatting modes are file-mode only (find_formatting with live='force' refuses)

set_cells

plain text cells; vertical merges refuse live

set_paragraph_format

shading/borders/tab_stops keys refuse live (XML-level); raw indices keep the v1 index-trust contract

set_paragraph_text

expect guard honored; tracked-revision paragraphs refuse; text-selector locations run the snapshot staleness guard

word_count

Word's own statistics engine; exclusions mode file-mode only

Live-only tools (need the document open): live_insert_at_cursor, live_repair, live_scroll_to, live_set_track_changes.
COM tier (drive the Word application, open or closed): com_export_pdf, com_import_pdf, com_multi_document, com_proofing_errors, com_readability_statistics, com_refresh_fields, com_save_document, com_validate_opens_clean, com_word_status.
Open-document reader: get_document_view (reads the last SAVED state and says so).

The remaining 63 writers and 14 readers are file-only: they refuse while the document is open (close it, or com_save_document with close=true). The full per-tool table lives in docs/internal/live_parity_v2.md.

Known limits

  • Live regex replacements skip matches positioned after complex fields in a story (COM character offsets drift there); the skip count is reported and a literal find still works. Live set_cells refuses vertically merged tables (the file-based tool is merge-aware; close the doc for those).

  • Live tracked-change attribution is best-effort: Word signed into an Office account attributes revisions to that account; results report the effective author honestly.

  • TOC and caption-list page numbers require a field update: automatic on next Word open, or immediate via com_refresh_fields.

Upgrading from v1.x

Every v1.x tool name changed. The 189-tool v1.6 surface was rebuilt as a consolidated set of 110 tools that cover every prior capability under one grammar. If you are upgrading from v1.x, read the migration guide first: it maps every old tool name to its v2 home, and get_workflows("migrate-from-v1") returns the same map in-session. New installs need nothing extra.

License

KitchenSink4Word is dual-licensed:

AGPL-3.0 (open source). Free for anyone (individuals, academics, and businesses) for any use that complies with the AGPL's terms. Those terms include sharing source, including your modifications, when you distribute the software or make it available over a network.

Commercial license. For organizations that want to build KitchenSink4Word into their own products or services without the AGPL's source-sharing obligations. Contact licensing@kitchensink4.ai.

Copyright (c) 2026 Alvut Consulting, LLC. KitchenSink4AI is a product line of Alvut Consulting, LLC.

Not affiliated with, endorsed by, or sponsored by Microsoft Corporation. Microsoft and Word are trademarks of the Microsoft group of companies.


Not affiliated with or endorsed by Microsoft Corporation. Microsoft and Word are trademarks of Microsoft Corporation. "For Microsoft Word" describes file-format compatibility only.

Available Tools

29 tools
apply_editsApply EditsA
Destructive

Apply a batch of anchor-addressed edits in one call: one lock, backup, and validated save. Anchors come from get_document_view. Ops (each edit has "op"): replace {anchor, find, text, occurrence?} (omitted = every match); set_text {anchor, text}; insert {location, markdown} (headings, paragraphs, lists and pipe tables become real structures); delete {anchor or anchors}; move {anchor or anchors, location, allow_cross_section?} (verbatim relocation, file mode only; refuses a paragraph holding a section break, and a landing in another section unless allowed); set_style {anchor, style}; format {anchor, formatting, find?, occurrence?} (no find = whole paragraph, mark included); 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 the failed ops). changed carries per-op results plus fresh anchors for inserted paragraphs, so batches chain without re-viewing. Ops run in order; keep deletes last. Edits are applied directly, so under track changes they warn rather than record a revision. Auto-backup in file mode; atomic validated save. A document open in Word is edited live as ONE undo step, rolled back on mid-batch failure; markdown lists/tables and move are file-mode only there.

ParametersJSON Schema
NameRequiredDescriptionDefault
liveNoauto: file or live; force: live; off: refuseauto
editsYes
atomicNo
backupNo
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?

The description goes well beyond the annotations by disclosing validation-before-mutation, stale-anchor refusal, per-op results with fresh anchors, direct application under track changes, auto-backup, atomic save, and live-edit behavior with rollback on mid-batch failure. It also notes file-mode restrictions for markdown lists/tables and move. This is rich 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.

Conciseness4/5

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

The description is dense and front-loaded with the primary purpose before diving into operation definitions. There is slight redundancy (e.g., mentioning 'validated save' and later 'atomic validated save', and repeating backup/lock concepts), but given the tool's complexity, each section 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 tool with this many operation variants and behavioral caveats, the description is highly complete. It covers validation semantics, error behavior, ordering, live vs file modes, backup, and what 'changed' contains. Since an output schema exists, the description correctly focuses on behavior and constraints rather than return-value details.

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 only 20% schema description coverage, the description carries nearly the entire parameter burden. It fully specifies each operation object accepted in 'edits', including optional fields such as occurrence, location, allow_cross_section, and the 't:hex:rNcN' anchor format for set_cell. This thoroughly compensates for the sparse schema.

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', and then enumerates the full set of operations (replace, set_text, insert, delete, move, set_style, format, set_paragraph_format, set_cell). This clearly distinguishes it from single-purpose sibling edit tools by emphasizing batch, anchor-addressed, and atomic behavior.

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 usage context: anchors come from get_document_view, edits are batched into one call, and ordering guidance is provided ('Ops run in order; keep deletes last'). It does not explicitly name alternatives or say when not to use this tool, but the context is strong enough for an agent to infer the right scenario.

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

apply_styleApply StyleA
Destructive

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.5/5.0
Behavior4/5

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

Annotations already mark the tool as destructive (destructiveHint=true). The description adds valuable context beyond that: auto-backup with a skip switch, atomic validated save, and refusal of documents open in Word. This contextualizes the destructive nature and the safety mechanism, though it does not mention error behaviors for missing styles or invalid ranges.

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: it states the core action first, then differentiates modes, then gives alternatives and safety notes. Every sentence adds information; none is filler. It is slightly dense but not bloated.

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?

An output schema exists, so return details need not be explained. The description covers both invocation modes, sibling routes, backup behavior, file locking, and atomicity. The only notable gap is the precedence rule when both range and target are supplied, but the conditionals imply mutual exclusivity, making this a minor omission.

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 the semantic burden. It does explain range={start,end} with locations/bare indices, target={search:{text, occurrence?}}, and backup=False skips rotation. file_path and style are not elaborated, but style is effectively 'named style' and file_path is self-evident, so the core parameter meanings are conveyed.

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') and immediately distinguishes paragraph-style application via range from character-style application via target. It also names siblings (set_paragraph_format, apply_edits) to differentiate boundaries, so an agent can tell this tool apart without inspecting other schemas.

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 when-to-use guidance: use set_paragraph_format for outline levels without visual change, use apply_edits for batches, and use range vs target for paragraph vs character styles. This is direct, actionable routing with no ambiguity left to inference.

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

copy_documentCopy 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.9/5.0
Behavior5/5

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

Goes well beyond the annotations by disclosing the refusal behavior on existing dest_path, the overwrite gate, and the backup rotation into .ks4w-backups for undoability. These are non-obvious side effects an agent must know before calling the 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?

Every sentence delivers a distinct piece of information: core operation, typical use, alternative, overwrite behavior, backup consequence, and domain boundaries. The description is compact despite covering a surprising amount of nuanced behavior.

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?

With 3 simple parameters and an output schema, the description covers the key behavioral risks: destination collision, overwrite, and recoverability. It also routes to relevant siblings. Nothing critical for correct invocation 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?

Schema coverage is 0%, but the description explains dest_path's explicitness, overwrite semantics, and the backup behavior of overwritten destinations. It doesn't explicitly describe file_path, but that parameter is self-evident from the tool's name and description.

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 operation on a specific resource: 'Copy a document byte-for-byte'. It differentiates itself from manage_backups and assembly-pack tools by giving concrete examples and naming the sibling alternatives.

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 frames the tool for pre-edit backup ('before editing') and contrasts it with manage_backups action='snapshot', which auto-names copies. It also points out that split/merge and multi-document work live elsewhere, giving an agent clear selection criteria.

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

create_documentCreate 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.5/5.0
Behavior4/5

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

Beyond the annotations, the description discloses important behaviors: it refuses to overwrite existing files, auto-creates parent directories, and optionally sets the title core property. This adds meaningful side-effect information, though it does not describe error handling or permissions, which would have pushed it higher.

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 four tight sentences with the main action front-loaded, followed by a key safety behavior, an explicit alternative, and workflow context. Every sentence earns its place and there is no redundant restating of the title or schema.

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 two-parameter creation tool with an output schema and clear annotations, the description covers the essential call behavior, overwrite refusal, directory creation, and follow-up workflow. Nothing an agent needs to invoke it correctly is missing.

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 description coverage is 0%, so the description must compensate. It does explain the title parameter as an optional core property, but file_path is only inferred from its name and the tool's purpose; no format, extension, or path-resolution details are provided. This is adequate but leaves a gap.

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 verb ('Create'), a concrete resource ('a new blank .docx file'), and the optional title behavior. It also distinguishes itself from copy_document by explicitly stating it refuses overwrites, so an agent can clearly tell this tool apart from its 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?

The description gives explicit routing guidance: use copy_document with overwrite=True when overwriting is intended, use this tool for blank-file creation, and use assembly-pack tools for template-driven builds. It also names follow-up population tools, giving the agent a clear workflow context.

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

create_tableCreate 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; omit it to append at the end; position 'after' only. Shading, column widths and repeat-header on an EXISTING table: format_cells and set_table_properties (media-forms). From a CSV or JSON file: import_table (protection-io pack). Auto-backup: prev/anchor slots in .ks4w-backups (backup=False skips rotation only); atomic 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.8/5.0
Behavior5/5

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

Annotations only carry false hints that this is not read-only and not open-world, so the description shoulders the behavioral burden. It discloses auto-backup rotation slots (prev/anchor in .ks4w-backups), the exact meaning of backup=False (skips rotation only), atomic save behavior, and refusal to operate on Word-open documents.

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 delivers a distinct piece of information: core behavior, location semantics, sibling routing, backup behavior, and the Word-open constraint. It is dense yet well-structured and front-loaded with the primary purpose.

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 the decision-relevant distinctions, location semantics, and safety/backup behavior well for a 6-parameter tool with no schema-level param descriptions. The only notable gap is the unexplained width_pt parameter, but the parameter name and surrounding context make it inferable enough for a competent agent.

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 adds meaningful semantics for data, header_row, location, and backup. However, width_pt is never mentioned, and file_path is left to name inference, so the compensation is excellent but incomplete.

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' with explicit formatting defaults. It also distinguishes itself from format_cells, set_table_properties, and import_table by naming what each sibling is for, so an agent can tell it apart 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 Guidelines5/5

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

It explicitly routes to alternatives: format_cells/set_table_properties for existing tables and import_table for CSV/JSON files. It also states the location rule (only 'after', omit to append) and the Word-open refusal condition, giving clear when-to-use and when-not-to-use guidance.

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

delete_elementDelete ElementA
Destructive

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

A5/5.0
Behavior5/5

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

Beyond the destructiveHint annotation, the description discloses side effects (removal of media, chart, and embedded-workbook parts), backup rotation behavior, atomic validated save, refusal of locked controls and Word-open documents, and the unwrap/drop-relationship behavior for hyperlinks. This substantially 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.

Conciseness5/5

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

Though dense, the description earns its length: every clause maps to a decision an agent must make. The scope is front-loaded and the content is grouped per element type with consistent delimiter usage.

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 tool with 5 parameters, 0% schema coverage, and many element variants, the description covers addressing, side effects, refusals, backup behavior, and exclusions. Nothing essential is left unspecified.

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 does. It explains how id, location, type, and backup are used differently across element types, including index, read order, name, target URL, tag, and skip-rotation semantics.

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: delete one document element with no lifecycle tool of its own. It enumerates the exact element types covered and explicitly contrasts with sibling tools like delete_table and delete_paragraphs, so an agent can readily distinguish it.

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 says when to use this tool versus alternatives: 'Objects with lifecycle tools stay there' and names each sibling tool for notes, comments, sources, tables, and paragraphs. It also gives per-type addressing rules and refusal conditions, providing full usage routing.

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

delete_paragraphsDelete ParagraphsA
Destructive

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: file or live; force: live; off: refuseauto
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 already mark this as destructive (destructiveHint=true) and not read-only (readOnlyHint=false). The description adds substantial behavioral detail: '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,' and 'Auto-backup in file mode.' These go well beyond the annotations and describe edge cases and side effects, making behavior predictable.

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

Conciseness4/5

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

The description is a single dense paragraph but each sentence contributes information. It front-loads the primary usage (start/end/range), then constraints, then special parameters, then live behavior, and finally the batch alternative. It's not overly verbose, though it could be organized with bullet points for clarity. Still, it's efficient and well-structured.

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 tool has an output schema, so return values are documented there. Annotations cover the destructive nature. The description covers many behaviors: deletion modes, constraints, tracking, expected text checks, backup, and live editing. It doesn't explicitly state what happens on success or error, but given the output schema and the density of details, it is fairly complete for an agent to use correctly. Some edge cases like 'deleting every paragraph leaves one empty one behind' are noted, which is helpful.

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 only 10%, so the description must compensate. It does explain key parameters: start/end/range for the deletion range, track for tracking deletions, expect_start/expect_end for conditional deletion, and backup for auto-backup behavior. However, it doesn't describe 'author,' 'live,' or 'file_path' explicitly, though some are implied (e.g., 'Open documents edit live' implies the live parameter). Given the low schema coverage, it adds meaningful semantics for most parameters but leaves a few self-explanatory ones unaddressed.

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 function: 'Delete body paragraphs by 0-based inclusive index (start, end; end defaults to start) or by range={start, end} location objects.' It also differentiates from siblings by noting 'For batches, use apply_edits,' which explicitly names an alternative. The verb 'delete' and resource 'paragraphs' are specific and unambiguous.

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

Usage Guidelines4/5

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

It provides clear usage context: 'Open documents edit live (serialized), unsaved until saved' and 'Auto-backup in file mode (backup=False skips rotation).' It also gives an explicit exclusion: 'For batches, use apply_edits.' However, it doesn't elaborate on when to use delete_element or other deletion tools, so it's not fully comprehensive but adequate.

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

delete_tableDelete TableA
Destructive

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?

Even though destructiveHint=true already signals mutation, the description adds substantial behavioral context: nested tables are removed with the host table, auto-backup behavior is described, saves are atomic and validated, and documents open in Word are refused. There is no contradiction with the 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?

Three dense sentences with no filler. The core action is front-loaded, followed by index lookup guidance, the alternative, backup behavior, and a failure condition. Every sentence contributes useful information.

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 tool with annotations and an output schema, the description covers the key parameter semantics, alternative routing, backup behavior, and an important failure mode. Nothing essential for correct invocation 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?

Schema description coverage is 0%, so the description must compensate. It fully explains table_index semantics and gives backup-related behavior, but file_path is only implicit from its name and the backup=False behavior ('skips rotation only') is somewhat terse.

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 precise verb and resource: it deletes a whole table and its contents. It also scopes the target to body-level tables and explains nested-table behavior, making it clearly distinguishable from siblings like set_cells and delete_element.

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 not to use it ('To clear cell values while keeping the grid, use set_cells instead') and states a failure condition ('Refuses documents open in Word'). It also explains how to obtain table_index via list_elements or get_document_view, which is concrete, actionable guidance.

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

diagnose_documentDiagnose 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.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, so the description adds context beyond that by detailing the scope of the health report and the degradation behavior ('Never fails on a weird-but-openable document; every check degrades to a reported problem'). It also reveals the stale-data limitation and the design choice to avoid live mode, which is valuable context not conveyed by 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?

The description is dense but well-structured: front-loaded with the core purpose, then behavioral guarantees, usage conditions, and alternatives. While lengthy, every sentence adds value. It could be slightly trimmed, but it's not verbose.

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 (numerous checks) and that annotations provide read-only hint, the description is complete. It covers what the tool does, how it behaves on problematic documents, when to use alternatives, and the critical limitation (stale data). The output schema is present, so return format is already defined. Nothing critical is missing for an agent to invoke it correctly.

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

Parameters3/5

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

Schema coverage is 0%, meaning the description must compensate for the lack of parameter documentation. However, the only parameter is file_path, which is self-explanatory from the schema. The description doesn't explicitly state that file_path is required or what format it should be, but the name alone is sufficient. The description's enumeration of checks indirectly clarifies the expected behavior, but no additional syntax or constraints are given.

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: produce a structural health report for a document. It enumerates specific checks (content-type coverage, dangling relationships, orphan parts, etc.), making it distinct from siblings like get_document_info or validate. The phrase 'one-call structural health report' is a specific verb+resource, and the read-only nature is highlighted.

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 provides explicit guidance on when to use this tool: as a companion to validate(checks=['core']), and it specifies when NOT to use it (when the document has unsaved changes in Word). It also names alternatives: com_validate_opens_clean and get_document_info, with clear conditions. This is exemplary usage guidance.

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

disable_toolsDisable ToolsA
Idempotent

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.5/5.0
Behavior4/5

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

The description adds meaningful behavior beyond the annotations: it is session-scoped, reclaims context, reports the disabled packs, approximate tokens removed, and remaining surface, and notes the lite core always remains. The idempotentHint annotation is echoed in the description, but the extra session and output details provide transparency the annotation alone does not. There is 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?

The description is compact, with two sentences that front-load the core action and effect before parameter guidance. Every clause adds information: session scope, context reclaim, idempotence, result shape, and valid pack values. No filler or redundant restating of the title appears.

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 has a single parameter, an output schema, and annotations covering idempotence and non-destructiveness, the description supplies all necessary behavioral context. It explains the result contents, the special 'everything' option, and the always-on lite core. The only missing detail is the exact pack menu, but the description directs the agent to enable_tools, which is sufficient for a tool with this complexity.

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

Parameters4/5

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

Schema coverage is 0%, so the description carries the full burden for explaining 'packs'. It does so effectively by saying it accepts the same names as enable_tools or the special value ['everything'], which tells the agent both the format and the allowed conceptual values. It does not enumerate the pack names, but delegating to enable_tools is a reasonable and functional shortcut given the sibling tool exists.

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 and resource: it disables previously enabled tool packs for the current session, reclaiming context. It clearly differentiates this from enable_tools by describing the inverse operation, and the 'lite core always stays on' detail further scopes what the tool does. No ambiguity remains about the tool's primary function.

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 clearly states the context: disabling previously enabled session tool packs. It directly references enable_tools as the source for valid pack names, which gives the agent a path to understand what values to pass. It stops short of explicit when-not-to-use guidance, but the inverse relationship with enable_tools makes the usage intent clear.

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

enable_toolsEnable ToolsA
Idempotent

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.9k): citations and bibliography: Word-native sources, bibliography styles, Zotero search/cite, parity checks, style conversion

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

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

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

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

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

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

ParametersJSON Schema
NameRequiredDescriptionDefault
packsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior4/5

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

Annotations already declare idempotentHint=true, but the description adds that it reports tokens added and that disable_tools reverses the change. This gives useful state-change and cost context beyond the structured annotations. There is no contradiction between the description and 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?

The description is long but front-loads the core behavior, then provides a task map, then a structured pack list. Every section earns its place given the need to document seven different pack options, and the formatting makes scanning easy.

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?

With an output schema present, the description does not need to explain return values. It covers when to use the tool, valid pack names, what each pack does, token implications, idempotency, and the inverse operation. An agent has enough information to invoke this tool correctly.

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 provides no descriptions and no enums for the packs parameter, but the description fully compensates. It defines valid values as the names below or ['everything'], enumerates all seven pack names, and explains what each pack enables. This turns an opaque array-of-strings schema into a usable selection mechanism.

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 first sentence states a specific action and target: enable optional tool packs mid-session. It also distinguishes itself from disable_tools by noting that disable_tools reverses this operation. An agent can immediately tell what this tool does and how it relates to its 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?

The description gives clear when-to-use context: sessions start lite, so this tool is for adding optional packs mid-session. It names the inverse tool, disable_tools, and provides a task-to-pack mapping, enabling the agent to select the correct pack for common jobs.

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

find_textFind 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: file or live; force: live; off: refuseauto
queryNo
regexNo
scopeNobody
file_pathYes
formattingNo
context_charsNo
include_textboxesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.9/5.0
Behavior5/5

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

Beyond the readOnlyHint annotation, the description discloses the 500-match cap, the file-mode-only constraints, the effective-formatting resolution chain, query=None behavior, and the live vs file mode split. This is rich behavioral context that annotations alone do not 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 compact but information-dense: core purpose first, then mode-specific details, then routing. Every clause adds either a constraint, a behavior, or an alternative, with 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?

Given the output schema exists, return values do not need elaboration. The description covers the main behavioral branches, file/live modes, formatting resolution, caps, and the relevant sibling tool, making it complete for a tool with this complexity.

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 only 13% schema description coverage, the description carries most parameter meaning: formatting, include_textboxes, scope, regex constraints, live behavior, and query=None semantics. It does not explicitly explain context_chars, though the phrase 'returns locations plus context' plus the parameter name partially covers 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 states a specific action ('Find text in paragraphs and table cells'), names the returned artifact ('locations plus context'), and distinguishes itself from get_text by pointing to the known-range case. It also mentions formatting and textbox modes, making the tool's scope unmistakable among 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 explicitly routes to get_text when reading a known range, states that formatting and textbox searches are file-mode only, and clarifies when live documents are searched ('Plain queries search open documents live'). The read-only note and file/live distinctions provide concrete when-to-use guidance.

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

format_textFormat TextA
Destructive

Apply character formatting or change case. formatting: bold, italic, underline, strike, font, size_pt, color, highlight and more (a wrong key lists all). case: upper|lower|title|sentence. Target: range={start,end}, find or both; one of formatting or case per call. find formats just that SUBSTRING: the run splits at the matched offsets, each fragment keeping its other formatting. A range without find takes whole paragraphs, mark included. Auto-backup; atomic save. Formatting is live-capable; case is file mode only.

ParametersJSON Schema
NameRequiredDescriptionDefault
caseNo
findNo
liveNoauto: file or live; force: live; off: refuseauto
rangeNo
backupNo
file_pathYes
formattingNo
occurrenceNo

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?

Goes well beyond the destructiveHint=true annotation by disclosing auto-backup, atomic save, substring run splitting with preservation of other formatting, whole-paragraph behavior including marks, and the live/file-mode restriction. These are exactly the side-effect and mutation details an agent needs. 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?

Dense and front-loaded; every clause adds operational information and there is no filler or repetition. The telegraphic style is justified by the number of constraints the description must convey.

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 destructive, 8-parameter tool with an output schema, it covers targeting, side effects, and live mode well. The missing piece is occurrence semantics, and the live values auto/force/off are only implied by 'live-capable' rather than spelled out. Still, most essential call decisions are supported.

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 only 13% schema coverage, the description compensates substantially: it enumerates formatting fields, case values, range/find targeting, and backup/live semantics. The main gap is the occurrence parameter, which interacts with find but is not explained.

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: 'Apply character formatting or change case', then enumerates the exact formatting keys and case modes. This clearly distinguishes the tool from sibling paragraph/style tools like set_paragraph_format and apply_style, even though those are not named.

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?

Provides strong mode-selection constraints: one of formatting or case per call, range vs find targeting, and live vs file-mode capability. However, it never names sibling tools or states when to prefer this over set_paragraph_format, apply_style, or find_text; the agent has to infer the boundary from 'character formatting'.

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

get_document_infoGet 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 or live; force: live; off: refuseauto
file_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already include readOnlyHint=true, and the description reinforces 'Read-only'. It adds valuable context about the 'live' parameter, explaining behavior for documents open in Word (adds 'words' from ComputeStatistics, omits part list). This goes beyond annotations and is consistent, so no contradiction.

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

Conciseness4/5

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

Two sentences with no filler, front-loading the core purpose and then detailing the live behavior. The second sentence is dense but necessary for nuance. Well-structured and efficient.

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, return values are documented separately. The description covers the read-only nature, the live behavior, and what information is returned. For a read-only overview tool, this is complete enough; the only minor gap is explicit guidance on when to choose this over siblings.

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 covers 50% of parameters (only 'live' has a description). The description elaborates on the 'live' behavior, which directly explains the enum values, but does not add anything about 'file_path' (though that is self-explanatory). It partially compensates for the coverage gap but could be more explicit about parameter meanings.

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 a specific verb ('Read') and resource ('document overview'), enumerating the exact content (counts, sections, package parts) and distinguishing itself from siblings by positioning as a one-call overview. It is unambiguous and differentiates from other get_ tools like get_document_view or 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 Guidelines3/5

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

The description implies use for a high-level overview but does not explicitly state when to use it over alternatives or when not to use it. It mentions 'one-call' which hints at efficiency, but there is no explicit comparison to siblings like get_document_view or get_outline, leaving selection partly to inference.

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

get_document_viewGet 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?

Annotations say readOnlyHint=false, and the description reveals the single mutation path: '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.' It also discloses volatile anchors without paraIds, the effect of stamp_anchors, and that Word-open documents are read from last saved state โ€” substantial behavior beyond structured 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?

Despite being long, the prose is dense and logically ordered: purpose and output format first, then parameter semantics, then behavioral caveats, then sibling routing. Every clause adds signal and does not repeat schema or annotation 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 tool with 5 parameters, one mutating flag, anchor durability concerns, and multiple output details, the description covers all needed operational context: projection layout, anchor IDs, scope forms, detail levels, table addressing, revision/comment output, optional include behaviors, mutation semantics, and fallback alternatives. The existing output schema relieves it from explaining 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?

Input schema has 0% description coverage, so the description carries the full parameter load. It does: scope gives concrete JSON examples and end-exclusive semantics, detail enumerates the three levels with their markers, include gives example values, stamp_anchors is explained with durability implications, and file_path is the obvious required target. Nothing is left unexplained.

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 object ('Read the document as an anchored markdown projection') and immediately positions it against get_text ('low-token alternative ... for orientation and bulk editing'). It goes on to specify the output shape (blocks, [hex] anchors, headings, tables), so an agent can distinguish it from siblings without opening schemas.

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 the primary sibling alternative (get_text) with the exact tradeoff ('low-token alternative') and closes with explicit routing: 'To locate a string, use find_text; to enumerate collections, use list_elements.' This gives clear when-to-use context and points away from the tool for other jobs.

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

get_outlineGet 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, italic or centered; numbered captions excluded): CANDIDATES with an INFERRED level and a confidence. Detecting nothing returns a note plus flat structure counts. The indices feed the location object's paragraph and outline selectors. Read-only. TOC building: academic pack.

ParametersJSON Schema
NameRequiredDescriptionDefault
liveNoauto: file or live; force: live; off: refuseauto
file_pathYes
detect_formattedNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior5/5

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

With readOnlyHint=true already in annotations, the description still adds substantial behavioral context: dual detection mechanisms (Heading styles vs w:outlineLvl), the detect_formatted heuristic with INFERRED levels and confidence, the empty-result fallback (note plus flat counts), and how indices feed location selectors. 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?

The description is dense but every sentence earns its place โ€” core behavior, detection nuance, edge case, downstream use. The telegraphic caps style (CANDIDATES, INFERRED) adds slight noise but doesn't waste space; it is appropriately sized for a tool with three behavioral modes.

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 an existing output schema and annotations covering read-only safety, the description covers the remaining context: detection modes, heuristic behavior and confidence, empty-result fallback, and how the output feeds the location object's selectors. Nothing an agent needs to invoke the tool correctly 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?

Schema coverage is low (33%), and the description compensates for the most semantically loaded parameter: detect_formatted gains a full explanation of the heuristic scan and its output semantics. file_path is self-evident and live is already described in the schema enum, so the compensation is adequate where it matters.

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 'List every heading with its paragraph index and level' โ€” a specific verb, resource, and output shape. It further distinguishes itself from siblings like get_text and find_text by detailing detection of Heading styles and w:outlineLvl overrides, so an agent can separate it from get_document_view and get_table without opening schemas.

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 closing label 'TOC building: academic pack' provides a stated use case, so this is more than no guidance. However, it names no sibling alternatives and gives no when-not-to-use conditions, leaving the agent to infer when get_document_view or get_text would be a better fit.

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

get_server_infoGet 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?

Annotations already declare readOnlyHint=true, and the description goes well beyond that by stating that it opens no file, starts no Word, and is paste-safe with no path, document name, or user name. It also discloses exactly what state it reports, including lock status, Word availability, path sandboxing, and update-check state.

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 information-dense: it front-loads the purpose, enumerates the reported details, and closes with a practical reassurance about paste-safety. A few items, like 'opens no file' and 'starts no Word,' repeat the same idea, but the overall structure earns its length.

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 tool with an output schema, the description is complete: it tells the agent what information is returned, that no document context is needed, that it is read-only, and that the result is safe to share. 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.

Parameters4/5

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

There are zero parameters and 100% schema coverage, so the schema fully documents that no input is needed. The description adds useful confirmation by saying it needs no document or file, which clarifies that no implicit context is required either.

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 verb ('Report') and a distinct resource ('this server's build and environment'), then enumerates the exact content. It is clearly distinguishable from every sibling, which are all document-oriented operations like get_document_info and delete_table.

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 spells out that the tool needs no document, opens no file, and starts no Word, which tells an agent this is the universal server-level information tool rather than a document-scoped one. It does not explicitly name alternatives, but no sibling provides an equivalent server-info function, and the context makes the intended use obvious.

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

get_tableGet 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 nested table pass nested={row, cell, index} addressing the host cell (index picks among several, default 0). Write with set_cells; shade with format_cells; widths and repeat-header set_table_properties; reshape with modify_table_structure (media-forms pack). Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
nestedNo
file_pathYes
table_indexYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already assert readOnly/openWorld behavior; the description goes beyond by disclosing the two output modes selected by has_merges and the nested-table addressing convention. It also explicitly repeats 'Read-only,' reinforcing 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.

Conciseness5/5

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

Every sentence carries information: purpose, return variants, nested addressing, and sibling routing. It is front-loaded with the core capability and stays structured without 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?

For a read tool with an output schema and readOnly/openWorld annotations, the description supplies the missing contextual semantics: indexing rules, merge-mode behavior, nested-table invocation, and which sibling tools handle writes/shading/structure changes. Nothing needed for correct invocation is left undocumented.

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 coverage is 0%, so the description carries the full param-documentation burden. It explains table_index as 0-based among body-level tables in document order and fully specifies the nested object shape and defaults, which the bare schema does not convey.

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 precise verb-resource pair ('Read one table in full') and enumerates exactly what is returned (cell text, merge map, column widths), which distinguishes it from sibling read tools like get_text or get_document_view.

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

Usage Guidelines4/5

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

It gives concrete conditions: use has_merges for merged-cell data and nested for nested tables, and it routes mutations to sibling tools (set_cells, format_cells, set_table_properties, modify_table_structure). It lacks an explicit contrast with alternative read-only tools, but the table-specific scope is clear enough.

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

get_textGet 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: file or live; force: live; off: refuseauto
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?

Beyond the readOnlyHint annotation, the description discloses rich behavioral details: slicing semantics with 0-based end-exclusive indices, contains filtering, include_textboxes behavior, textbox-only mode with box_index expectations, file-mode restrictions, and live-document behavior. This substantially exceeds what annotations provide.

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 information-rich, with the primary return shape front-loaded. Some clauses are terse to the point of requiring careful parsing, but every sentence contributes meaningful guidance with 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?

Given the output schema exists and the complexity of the tool, the description covers the return shape, parameter semantics, mode differences, textbox special cases, and sibling routing. An agent has enough context to invoke the tool correctly in both file and live scenarios.

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 only 14%, so the description carries the parameter-documentation burden. It explains start/end indexing, end-exclusive slicing, contains filters, include_textboxes vs textbox modes, and live/file behavior. This compensates well for the sparse 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 and resource: 'Read body paragraphs as [{index, text, style, ...}] with effective styles.' It clearly distinguishes itself from siblings by noting that equations are handled by list_elements and orientation by get_document_view, so the tool's scope is unambiguous.

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 provides clear context for when to use this tool and routes alternatives: equations go through list_elements, and orientation goes through get_document_view. It also explains mode-specific behavior for live vs file documents, though it does not enumerate all sibling exclusions explicitly.

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

get_workflowsGet 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

A5/5.0
Behavior5/5

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

Beyond the readOnlyHint annotation, the description adds 'Pure guidance: reads nothing, changes nothing', making the safety profile explicit. It also discloses that calling without arguments lists tasks versus returning sequences, which is genuinely useful 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?

Every sentence earns its place: definition, usage modes, task list, and safety note. The task-name list is long but necessary since no enum is provided in the schema. The structure is clear and front-loaded with the tool's core purpose.

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?

The description is complete for a simple guidance tool: it explains what it returns in both invocation modes, lists all available tasks, and clarifies the read-only nature. With an output schema present, no further return-format details are needed.

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 fully explains the optional 'task' parameter: its default behavior, how to pass a task name, and the complete list of accepted values. This fully compensates for the schema's lack of parameter 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 states a specific verb ('get') and resource ('workflows' / recommended tool sequences) and explains exactly what the tool provides: step-by-step guidance with one-line reasons. It clearly distinguishes itself from the document-manipulation siblings by positioning itself as pure meta-guidance.

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 explains the two invocation modes: call with no task to list available tasks, or call with task='<name>' for a specific sequence. It also names all valid task values, leaving no ambiguity about how to use the tool.

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

insert_breakInsert 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.8/5.0
Behavior5/5

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

Annotations declare readOnlyHint=false, destructiveHint=false, and openWorldHint=false, so the safety profile is partially known. The description adds substantial behavioral context beyond that: auto-backup to prev/anchor slots in .ks4w-backups, backup=False only skips rotation, atomic validated save, and refusal to operate on documents open in Word. This is exactly the kind of mutating-tool behavior 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.

Conciseness5/5

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

Four dense sentences carry distinct, non-overlapping information: the core action, the type enumeration, the location semantics, and the safety/failure behavior. The definition is front-loaded with the verb+resource and contains no filler or repeated concepts.

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?

With 4 parameters, 0% schema coverage, and an output schema present, the description covers all critical aspects: purpose, type semantics, location, backup behavior, atomic validated save, and the Word-lock refusal. The only minor undefined term is 'located paragraph,' but the description handles this by providing a default behavior (document end), making the tool sufficiently complete for correct invocation.

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 itself must explain the parameters. It fully describes type (page vs section_* and their formatting implications), location (picks the paragraph, omitted for document end), and backup (backup=False only skips rotation; auto-backup is default). file_path is implied by the required field and the document context. No parameter is left unexplained.

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: 'Insert a break after the located paragraph,' which clearly states the operation. It then enumerates the type variants (page vs section_*) and introduces the location concept, making the tool unmistakably distinct from sibling insert_paragraphs or delete_paragraphs. The name and title align with the described behavior.

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 provides clear directional context: it explains the effect of each type option, states that location can be omitted to target the document end, and warns that documents open in Word are refused. It does not explicitly name an alternative tool for inserting normal paragraphs, so it lacks an explicit when-not statement, but the usage context is otherwise unambiguous.

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

insert_listInsert 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.7/5.0
Behavior5/5

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

Beyond the annotations, the description discloses important behaviors: each call creates its own list and restarts numbering, it auto-creates .ks4w-backups, saves are atomic and validated, and it refuses documents open in Word. This gives the agent what it needs to anticipate side effects and failure conditions.

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?

Although dense, every sentence earns its place: main action first, then parameter semantics, then behavioral caveats. No filler or repetition; the compact notation packs a lot of 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?

For a tool with 8 parameters and no schema descriptions, the description is nearly complete. It explains all nontrivial parameters and behaviors, and an output schema exists, so return values need not be described. The only small gaps are the exact shape of the location object and whether the backup parameter disables the auto-backup behavior.

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 zero schema description coverage, the description carries the full burden and succeeds. It explains the items shape ('strings or {text, level} dicts'), the kind enum, the levels array format with all per-level fields and allowed format values, and the continue_from/start_at/location semantics. Only file_path and backup rely on name/default inference, which is acceptable.

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 precise verb and resource: 'Insert a bulleted or numbered list with real bullet/number glyphs.' This clearly distinguishes it from sibling insertion tools like insert_paragraphs or create_table, and the supporting detail about numbering.xml reinforces the specific function.

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 usage context: it tells the agent when to use the tool (inserting bulleted/numbered lists), how to continue existing numbering via continue_from from list_elements, and how to set start_at and location. It stops short of explicitly naming alternatives or exclusion cases, but the context is unambiguous.

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

insert_paragraphsInsert ParagraphsA

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

ParametersJSON Schema
NameRequiredDescriptionDefault
liveNoauto: file or live; force: live; off: refuseauto
trackNo
authorNoClaude
backupNo
locationNo
file_pathYes
paragraphsYes
inherit_formatNo
copy_format_fromNo

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?

Annotations are minimal (only flags), so the description carries the behavioral burden. It discloses auto-backup, atomic save, live editing behavior, stale target refusal with remediation, and track/author recording. This goes well beyond annotations and gives an agent concrete expectations about side effects and failure modes.

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 efficient, using semicolons to pack multiple facts. It leads with the core action and item structure, then layers on constraints and behaviors. It's not overly verbose, though the density might require careful reading.

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 complex tool with 9 parameters and low schema coverage, the description covers most essential aspects: location, paragraph structure, heading behavior, formatting options, track/author, backup, live editing, and batch alternative. Minor ambiguities remain (e.g., exact meaning of 'stale text-selector target'), but overall it provides enough to call the tool correctly.

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 only 11%, so the description must compensate. It explains the structure of paragraphs items (text, style, formatting, heading_level, paragraph_format), semantics of heading_level (1-9, 1=outline 0), paragraph_format keys, inherit_format/copy_format_from behavior, track and author, and location default. Nearly all parameters are meaningfully described, far exceeding schema coverage.

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 states the tool inserts paragraphs, and describes the item structure and location parameter. It doesn't explicitly differentiate from sibling insert tools (e.g., insert_list, insert_break), but the purpose is unambiguous given the resource (paragraphs) and action (insert).

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 provides clear context: location omitted means document end, file-mode-only constraints for certain features, and it explicitly points to apply_edits for batch operations. It doesn't name sibling insert tools as alternatives, but the batch guidance and live-editing caveats give practical when-to-use information.

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

list_elementsList 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.6/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false, and the description aligns with them while adding substantial behavior: return shape {type, count, items}, handle semantics for later tools, per-type highlights, filter behavior including loud rejection, cached results, and refresh guidance. No contradiction 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 long but structured and front-loaded with purpose and return shape. Per-type details add real value rather than padding, though a few could be condensed. For a multi-collection tool with 15+ types, the length is justified.

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 and the absence of schema descriptions, the description covers purpose, accepted types, return value, parameter semantics, prerequisites, error behavior, and related tools. The output schema exists, and the description still clarifies the return envelope. 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?

Schema coverage is 0%, so the description carries the burden. It fully enumerates type values and documents the filter object's range and name substring shape. file_path is left implicit, but 'file mode' and the requirement to close Word documents provide enough context for a conventional file-path parameter.

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 precise action ('Enumerate any collection in one call') and identifies the resource with an exhaustive set of element types. It clearly distinguishes itself from sibling tools like find_text and get_table by framing list_elements as the read-only enumeration step before set_/delete_/manage_ actions.

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 strong context: read-only, file mode, close open documents first, and list-then-act workflow. It explicitly routes string search to find_text and points to enable_tools for element-specific packs, but it does not systematically enumerate when-not-to-use cases for every sibling tool.

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

manage_backupsManage BackupsA
Destructive

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

A4.8/5.0
Behavior5/5

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

Beyond the destructiveHint annotation, the description discloses that restore rotates current content into prev first, making restores undoable, and that purge deletes only when dry_run=False. It also explains snapshot permanence, collision behavior, atomic replacement, and Word-open refusal, which gives the agent a strong safety model.

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 necessary behavioral or parameter information. It front-loads the location and slot model, then organizes actions in a logical progression, making a complex multi-action tool easy to scan.

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 four distinct actions, 8 parameters, and destructive potential, the description covers the full decision space: what each action does, which parameters apply, safety guards, naming behavior, and what gets reported. The existence of an output schema means return-value details are not needed, and no critical 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?

With 0% schema description coverage, the description carries the full burden and succeeds: it explains action values, source choices, purge scopes, dry_run semantics, dest_dir, label, file_path, and directory. An agent can correctly choose values without opening any external documentation.

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 resource (hidden .ks4w-backups/ folders) and a clear set of actions (list, restore, purge, snapshot), so the agent knows exactly what the tool operates on. It is immediately distinguishable from the document-editing sibling tools and from backup operations that might mutate documents directly.

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?

Each action is given a concrete purpose: list reports, restore overwrites, purge deletes, snapshot preserves. It also notes the dry_run default and the refusal of documents open in Word, which helps avoid misuse. It doesn't explicitly name what not to use this tool for, but no sibling tool overlaps with backup management, so the lack of an explicit exclusion is minor.

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

search_and_replaceSearch and ReplaceA
Destructive

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: file or live; force: live; off: refuseauto
scopeNobody
trackNo
authorNoClaude
backupNo
previewNo
file_pathYes
replacementsYes
find_formattingNo
max_replacementsNo

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 state readOnlyHint=false and destructiveHint=true, but the description discloses substantial behavioral detail: preview mode performs a dry-run 'without touching the file'; max_replacements 'aborts, changing nothing'; tracked changes record by author; auto-backup and atomic save are described; 'Live edits appear immediately as one Ctrl+Z step, unsaved until the user saves.' It also notes that 'tracked replaces never re-match their own markup.' This far exceeds what annotations provide, making the tool's side effects and safety behavior fully transparent.

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 not bloated. It starts with purpose, then systematically covers item structure, scope, preview, formatting, max_replacements, tracking, sibling alternatives, live editing, and backup. Each sentence adds a distinct piece of essential information for a complex tool. While it is longer than typical tool descriptions, the complexity justifies the length; no sentence is filler. It is front-loaded with core purpose before diving into details, so a slight deduction for verbosity, but structure is logical and efficient.

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 (10 parameters, nested objects, output schema), the description covers all critical aspects: input semantics, safety workflow, error abort conditions, tracking, backup, live editing, and alternatives. It also explains the output behavior via preview counts and match contexts, which complements the existence of an output schema. No essential information for correct invocation is missing. The description is remarkably complete for a tool of this sophistication.

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 schema description coverage at only 10%, the description must carry the weight, and it does. It explains the replacements array structure ('{find, replace, regex?}; scope: body | footnotes | headers | all'), preview behavior and return values, max_replacements semantics ('aborts, changing nothing'), find_formatting restrictions and its mode compatibility, track and author usage, and backup=True default with 'backup=False skips rotation.' Even the live parameter is inferred through 'Live edits appear immediately as one Ctrl+Z step' and 'live:true' output references. The description effectively documents every parameter beyond what the sparse schema provides.

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 leads with 'Batch find/replace, safe across Word's fragmented runs,' a specific verb+resource pairing that immediately establishes the tool's core function. It then details the item structure and scope options, and explicitly distinguishes itself from the sibling set_paragraph_text by saying it rewrites whole paragraphs when a find string is unwieldy. This gives an agent a precise and unambiguous understanding of what the tool does and how it differs from related tools.

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 provides explicit alternatives and conditions: 'Sibling: set_paragraph_text rewrites one whole paragraph when a find string would be unwieldy' and 'For anchor-scoped edits, use apply_edits.' It also recommends a safe workflow: 'preview=true dry-runs... review, then rerun with max_replacements set to the previewed total.' This goes beyond vague context and tells the agent exactly when to use this tool versus alternatives, and how to use it responsibly.

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

set_cellsSet CellsA
DestructiveIdempotent

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 nested table in that host cell (edits mode only). track records changes by author. Cell TEXT only: shading, bold and alignment are format_cells, widths and repeat-header set_table_properties (media-forms). Live (plain edits only) refuses vertical merges; file mode is merge-aware. Auto-backup; atomic save. Batches: apply_edits.

ParametersJSON Schema
NameRequiredDescriptionDefault
liveNoauto: file or live; force: live; off: refuseauto
blockNo
editsNo
trackNo
authorNoClaude
backupNo
nestedNo
file_pathYes
table_indexYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false, destructiveHint=true, and idempotentHint=true. The description adds valuable context: 'Auto-backup; atomic save' reveals persistence guarantees, 'track records changes by author' indicates change-logging behavior, and 'Cell TEXT only' declares a hard constraint. It also explains live vs. file merge behavior. These insights go beyond the annotations and help the agent anticipate side effects. Not quite a 5 because it doesn't fully detail failure modes or what happens on validation errors, but it is strong.

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 compact. It packs multiple distinct facts into a few sentences using semicolons and parentheticals, front-loading the core purpose. There is minimal fluff and every sentence adds information. It is slightly overloaded with mode syntax inline (e.g., 'block={origin:{row, cell}, values:[[...]]}') but remains readable. A 4 because it could be broken into clearer bullets for extreme readability, yet it is far from verbose.

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 9 parameters and low schema coverage, the description covers the essential context: modes, required parameters implied by examples, alternatives, limitations, live/file semantics, backup and atomicity, and batching. An output schema exists, so return values need no explanation. The agent has virtually everything needed to call it correctly, including edge cases like vertical merge refusal. This is a model description for a complex tool.

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 only 11%, so the description must compensate. It does: it explains the structure of 'edits' as [{row, cell, text}], 'block' as {origin, values}, and 'nested' as {row, cell, index}. It also clarifies that 'track' records changes by author and that 'live' has mode semantics. This provides meaning beyond the bare type definitions, though it doesn't exhaustively document every field in the array/object parameters (some nuance remains in the schema).

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.' It clearly distinguishes this from sibling tools by explicitly stating what it does NOT do (formatting via format_cells, properties via set_table_properties) and naming the batch alternative (apply_edits). An agent immediately knows the scope and how it differs from other cell/table tools.

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 and when-not-to-use guidance: it names format_cells for shading/bold/alignment, set_table_properties for widths and repeat-header, and apply_edits for batches. It also clarifies mode-specific behavior (live refuses vertical merges; file mode is merge-aware), so the agent knows which mode to choose based on the need.

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

set_paragraph_formatSet Paragraph FormatA
DestructiveIdempotent

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: file or live; force: live; off: refuseauto
startNo
backupNo
indicesNo
file_pathYes
formattingNo

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 already carry idempotentHint and destructiveHint, so the description earns credit for adding context: auto-backup, atomic validated save, serialized live editing, and refused features in live mode. The outline_level 'never changes the look' note is a non-obvious behavioral disclosure that materially prevents mis-calls.

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?

Front-loaded with purpose and selection forms, then keys, then caveats, then routing. The keys list is long but necessary because the formatting schema is an open additionalProperties object. The live-mode sentence is slightly jumbled with parentheticals, but every sentence earns its place.

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?

Covers the main gotchas for a destructive mutation tool: backup, atomicity, live-mode restrictions, and the outline_level trap. Output schema exists, so return-value details need not be described. Minor gap: error/failure behavior beyond 'validated save' is not discussed, but the description is strong overall for a 7-parameter tool with minimal schema coverage.

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

Parameters4/5

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

Schema coverage is only 14% (only 'live' is described), so the description must compensate. It adds the mutually-exclusive indices/start-end selection semantics, the formatting object's key list, and critical value semantics for outline_level (0-8, null removes, off-by-one from heading_level). It does not detail value types for each key, but the key list plus the open formatting schema makes this solid.

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 ('Set paragraph formatting on a batch') and scopes the operation precisely with the selection forms (indices vs start/end) and the formatting keys. It also names apply_edits as the sibling it is not, making the differentiation explicit.

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?

Gives explicit routing guidance ('For batches, use apply_edits'), the 'exactly one form' constraint, and the live-mode conditions with what is refused ('shading/borders/tab_stops refused live'). It does not contrast with format_text or apply_style, but the core when/when-not guidance is present.

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

set_paragraph_textSet Paragraph TextA
DestructiveIdempotent

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: file or live; force: live; off: refuseauto
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 destructiveHint and idempotentHint annotations, the description discloses meaningful behavior: index shifting after edits, the expect guard to avoid wrong-paragraph hits, auto-backup behavior, atomic validated saves, and serialized live edits on open documents. No contradiction with annotations was found.

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: main operation, addressing strategy, safety guard, backup behavior, live-editing caveat, and batch alternative. It is front-loaded with the core action and avoids 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?

Given the tool's complexity, the description covers the essential operational concerns: how to locate the paragraph, how to avoid index-shift mistakes, what to verify, backup semantics, live behavior, and tracked-revision refusal. With an output schema present, return-value details need not be duplicated 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?

With schema description coverage at only 17%, the description compensates strongly: it defines the location object forms ({paragraph: N}, {search: ...}, {outline: ...}), explains expect as a safety substring, and clarifies backup=False skips rotation. This adds real meaning beyond the bare schema.

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." It further clarifies scope by noting that style and base formatting are preserved, which distinguishes it from formatting-focused siblings like set_paragraph_format and batch-oriented 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?

The description explicitly names the alternative for batches: "For batches, use apply_edits." It also gives practical usage context: how to address the paragraph via location objects and when live edits are refused on tracked-revision paragraphs.

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. 12 tool updatesv2.2.1
    • Changedapply_edits2 fields changed
      • addedInput schema / properties / live / description
        Added value: +"auto: file or live; force: live; off: refuse"
      • addedInput schema / properties / live / enum
        Added value: +[
        +  "auto",
        +  "force",
        +  "off"
        +]
    • Changeddelete_paragraphs2 fields changed
      • addedInput schema / properties / live / description
        Added value: +"auto: file or live; force: live; off: refuse"
      • addedInput schema / properties / live / enum
        Added value: +[
        +  "auto",
        +  "force",
        +  "off"
        +]
    • Changedfind_text2 fields changed
      • addedInput schema / properties / live / description
        Added value: +"auto: file or live; force: live; off: refuse"
      • addedInput schema / properties / live / enum
        Added value: +[
        +  "auto",
        +  "force",
        +  "off"
        +]
    • Changedformat_text2 fields changed
      • addedInput schema / properties / live / description
        Added value: +"auto: file or live; force: live; off: refuse"
      • addedInput schema / properties / live / enum
        Added value: +[
        +  "auto",
        +  "force",
        +  "off"
        +]
    • Changedget_document_info2 fields changed
      • addedInput schema / properties / live / description
        Added value: +"auto: file or live; force: live; off: refuse"
      • addedInput schema / properties / live / enum
        Added value: +[
        +  "auto",
        +  "force",
        +  "off"
        +]
    • Changedget_outline2 fields changed
      • addedInput schema / properties / live / description
        Added value: +"auto: file or live; force: live; off: refuse"
      • addedInput schema / properties / live / enum
        Added value: +[
        +  "auto",
        +  "force",
        +  "off"
        +]
    • Changedget_text2 fields changed
      • addedInput schema / properties / live / description
        Added value: +"auto: file or live; force: live; off: refuse"
      • addedInput schema / properties / live / enum
        Added value: +[
        +  "auto",
        +  "force",
        +  "off"
        +]
    • Changedinsert_paragraphs2 fields changed
      • addedInput schema / properties / live / description
        Added value: +"auto: file or live; force: live; off: refuse"
      • addedInput schema / properties / live / enum
        Added value: +[
        +  "auto",
        +  "force",
        +  "off"
        +]
    • Changedsearch_and_replace2 fields changed
      • addedInput schema / properties / live / description
        Added value: +"auto: file or live; force: live; off: refuse"
      • addedInput schema / properties / live / enum
        Added value: +[
        +  "auto",
        +  "force",
        +  "off"
        +]
    • Changedset_cells2 fields changed
      • addedInput schema / properties / live / description
        Added value: +"auto: file or live; force: live; off: refuse"
      • addedInput schema / properties / live / enum
        Added value: +[
        +  "auto",
        +  "force",
        +  "off"
        +]
    • Changedset_paragraph_format2 fields changed
      • addedInput schema / properties / live / description
        Added value: +"auto: file or live; force: live; off: refuse"
      • addedInput schema / properties / live / enum
        Added value: +[
        +  "auto",
        +  "force",
        +  "off"
        +]
    • Changedset_paragraph_text2 fields changed
      • addedInput schema / properties / live / description
        Added value: +"auto: file or live; force: live; off: refuse"
      • addedInput schema / properties / live / enum
        Added value: +[
        +  "auto",
        +  "force",
        +  "off"
        +]
  2. 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
        +}
  3. 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
        +}
  4. 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
  5. 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
  6. 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.4/5.0

Scored across 29 tools

Disambiguation4/5

Most tools target a distinct resource and action, and the descriptions cross-reference siblings (e.g., 'For batches, use apply_edits') to reduce ambiguity. However, apply_edits intentionally overlaps with set_paragraph_text, format_text, set_paragraph_format, and set_cells, and copy_document overlaps with manage_backups snapshot, so one or two choices could still be confused.

Naming Consistency5/5

All tool names follow a consistent snake_case verb_noun pattern (get_, set_, insert_, delete_, create_, list_, etc.), with only search_and_replace as a phrase rather than a simple verb_noun. The naming is predictable and uniform across the set.

Tool Count4/5

At 29 tools the surface is large, but the domain is broad and several tools consolidate many operations (list_elements covers 17 element types, apply_edits covers 8 ops, manage_backups covers 4 actions). The count is slightly heavy but reasonable for a comprehensive Word manipulation server, especially with optional packs handled by enable_tools.

Completeness4/5

Core document lifecycle is well covered: create/copy/read/edit/delete for documents, paragraphs, tables, and many elements, plus backups and diagnosis. Minor gaps exist (e.g., no document delete/rename, no core-property editing, and advanced features like images, comments, and citations are only reachable after enabling packs), but they are workable and explicitly routed through enable_tools.

Maintenance

ActivityMaintained
ResponsivenessWithin a week

Related MCP Connectors

Related MCP Servers