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 221 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 ~9.9k 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

~9.9k

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.2k

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

  • 221 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 221 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 9.9k tokens, scales to everything. A fresh session loads the 29-tool lite core (about 9,900 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,200 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 9,900 tokens, loaded when the session opens.

  • Full surface: 112 tools (110 document tools plus the two pack toggles), about 35,200 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

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

ParametersJSON Schema
NameRequiredDescriptionDefault
liveNoauto
editsYes
atomicNo
backupNo
file_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.9/5.0
Behavior5/5

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

The description goes far beyond the `destructiveHint` annotation by disclosing batch validation before any mutation, all-or-nothing stale-anchor behavior, ordered execution, backup rotation control, atomic save, and live Word editing as one undo step with rollback. This is highly valuable behavioral context the annotations 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.

Conciseness4/5

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

Every sentence carries necessary operational information, and the content is front-loaded with purpose and anchor source. It is dense and somewhat long, but that is justified by the number of op types and behavioral caveats. The structure could be improved with more visual separation, but there is no filler.

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

Completeness5/5

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

Given a 5-parameter schema with 0% description coverage and no nested schema details, the description covers anchors, op shapes, batch semantics, failure modes, ordering, backup behavior, live mode, and the com-live retry path. With an output schema present, the return contract does not need to be spelled out further.

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 is the only real documentation for the parameters. It fully documents each op type and its fields, explains `backup=False`, clarifies atomic validated save, and describes live behavior. Without this, constructing valid `edits` entries would be impossible.

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 action: 'Apply a batch of anchor-addressed edits in one call'. It names the anchor source (`get_document_view`) and explicitly differentiates from single-edit usage by saying to use the standalone tool for one edit. This clearly distinguishes it from sibling tools.

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

Usage Guidelines5/5

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

Explicitly says to use this tool when a change needs two or more edits, and to use the standalone tool for a single edit. It also gives operational guidance for stale anchors, re-view/resend, and the `com_save_document` prerequisite in com-live mode. No inference is required.

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 ({paragraph}, {after_heading}, {outline}, {search}, {anchor}); omit it to append at the document end; position 'after' only. To build a table from a CSV or JSON file use import_table (protection-io pack). Auto-backup: prev/anchor slots in .ks4w-backups (backup=False skips rotation only); atomic validated save. Refuses documents open in Word.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYes
backupNo
locationNo
width_ptNo
file_pathYes
header_rowNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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

Goes well beyond the annotations: it discloses auto-backup rotation semantics, atomic validated save, and refusal of Word-open documents. No contradiction exists with readOnlyHint/destructiveHint.

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, all earning their place: core behavior, location semantics, alternative routing, backup behavior, and a safety warning. Front-loaded with the main action.

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

Completeness4/5

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

With an output schema present, return formatting is covered elsewhere. The description handles safety, location, and backup behavior well; the only notable omission is width_pt, so the definition is nearly complete but not fully.

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?

The description gives meaning for data, header_row, location, and backup, which compensates for the 0% schema coverage. However, width_pt is entirely undocumented, and file_path is only implicitly understood from context, leaving a minor but real 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/resource ('create a table from 2D string data') and distinguishes it from the CSV/JSON path via import_table. It also separates clearly from table-management siblings like delete_table, get_table, and set_cells.

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

Usage Guidelines5/5

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

Explicitly routes CSV/JSON imports to import_table, explains location behaviors and the 'after' positional constraint, and states the default append-at-end behavior. This is strong 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
rangeNo
startNo
trackNo
authorNoClaude
backupNo
file_pathYes
expect_endNo
expect_startNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior5/5

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

Annotations only state destructiveHint=true and readOnlyHint=false; the description adds substantial behavioral detail beyond that: refusal conditions, the one-empty-paragraph leftover, expect_start/expect_end no-op semantics, backup rotation behavior, and live-edit serialization with unsaved state. This is exactly the kind of context the annotations cannot 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 but efficiently front-loaded, opening with the core deletion mechanism before edge cases and guards. Every sentence conveys a distinct behavioral fact. It is slightly telegraphic, but for a 10-parameter destructive tool the compactness is justified.

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

Completeness4/5

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

For a destructive 10-parameter tool, the description covers the core semantics, edge cases, and safety behaviors well. An output schema exists, so return-value documentation is not needed. Minor gaps remain around the live parameter's effect and author's role, but nothing that would block correct invocation in the common case.

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

Parameters4/5

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

Schema description coverage is 0%, so the description carries the full burden โ€” and it compensates well for most parameters: start/end indexing, range object shape, track semantics, expect_start/expect_end guards, and backup behavior are all explained. However, live and author are never mentioned, leaving two of ten parameters effectively undocumented.

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

Purpose5/5

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

The description states a specific verb and resource ('Delete body paragraphs') with precise indexing semantics (0-based inclusive start/end, range objects). The qualifier 'body paragraphs' and the closing 'For batches, use apply_edits' distinguish it from siblings like delete_table, delete_element, and apply_edits without needing to open their schemas.

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 explicitly names apply_edits as the alternative for batch operations and gives concrete when-not conditions ('Refuses ranges cutting a field or a section break'). It lacks an explicit comparison to delete_element for single-element deletion, but the context for when this tool applies is clear.

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
queryNo
regexNo
scopeNobody
file_pathYes
formattingNo
context_charsNo
include_textboxesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/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 adds significant behavioral nuance: 500-match cap, effective-formatting resolution through run/style/defaults, query=None returning every formatted stretch, live-vs-file mode behavior, and textbox labeling. This goes well beyond the structured fields and prevents false assumptions.

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

Conciseness4/5

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

The description is dense and front-loaded with the core purpose, and every sentence carries useful constraint information. It is slightly over-packed and repeats 'file-mode only' and 'read-only' (already in annotations), but it remains a compact summary rather than bloat.

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

Completeness4/5

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

For an 8-parameter tool with no schema descriptions, this description covers most operational constraints: modes, regex rules, formatting resolution, result caps, and an alternative tool. The remaining minor gaps are exact context_chars semantics and how to set live mode explicitly, but the output schema supplies return-shape expectations.

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

Parameters4/5

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

Schema description coverage is 0%, so the description carries most parameter meaning. It explains formatting object semantics, query=None, scope values, regex limitations, and include_textboxes behavior. It does not explicitly define context_chars or the accepted values/effect of the live parameter, leaving a small 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 states a specific verb and resource: find text in paragraphs and table cells, returning locations plus context. It also names the sibling get_text as the alternative for known ranges, which clearly differentiates this tool from a close relative.

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 explicit routing guidance: use get_text for a known range, and it explains mode restrictions (file-mode only for textboxes/formatting, no regex in file mode, live behavior for plain queries). It does not mention search_and_replace, but since this tool is read-only, the main alternatives are adequately covered.

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

ParametersJSON Schema
NameRequiredDescriptionDefault
caseNo
findNo
liveNoauto
rangeNo
backupNo
file_pathYes
formattingNo
occurrenceNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, and the description adds meaningful behavioral context: auto-backup in file mode, backup=False skips rotation, atomic validated save, formatting goes live on serialized documents, case is file-mode only. This goes beyond the annotation and helps an agent understand side effects and safety.

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

Conciseness4/5

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

The description is dense but well-organized: it front-loads the core action, then lists options, then constraints, then routing. It is a single paragraph with clear semicolon-separated segments. Slightly long, but every sentence carries useful information.

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

Completeness4/5

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

Given 8 parameters, 0% schema coverage, and an output schema present, the description covers the key decision points: what can be formatted, how to target text, the one-of constraint, backup behavior, and live vs file-mode. It does not explain 'live' or 'occurrence' semantics, but the overall tool behavior is sufficiently clear for an agent to invoke it correctly in most cases.

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 explains the meaning of 'formatting', 'case', 'range', 'find', 'backup', and the one-of constraint. It does not detail 'live', 'occurrence', or the exact shape of the range/formatting objects, but it provides enough semantic grounding for the main parameters.

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 ('Apply') and resource ('character formatting or change case on a text range'), and enumerates the formatting options and case modes. It also distinguishes itself from siblings by noting 'For batches, use apply_edits' and by specifying file-mode vs live behavior.

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 vs alternatives: 'For batches, use apply_edits.' It also clarifies that case is file-mode only, formatting goes live on open documents, and that one of formatting or case is allowed per call. This gives an agent clear routing and constraint guidance.

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_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior5/5

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

Even though readOnlyHint=true already covers safety, the description adds valuable behavioral detail beyond annotations: live Word documents are read with 'same key names', live mode adds Word's ComputeStatistics 'words' count and track_revisions, and it omits the part list. This meaningfully informs an agent about mode-dependent behavior and output differences.

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

Conciseness5/5

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

The description is compact, front-loaded with the core purpose, and every sentence contributes information. The live-mode parenthetical is dense but directly relevant, and the read-only note reinforces annotations without unnecessary repetition.

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

Completeness4/5

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

With an output schema present, the tool does not need to enumerate return values. The description covers core behavior, live-mode differences, and safety. The main gap is the unspecified semantics of the 'live' parameter, which prevents full completeness for an agent trying to use non-default values.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate for the schema's silence. It mentions live behavior and output differences, but does not define the 'live' parameter's accepted values or clarify how 'auto' works, nor does it explain file_path's expected format. The live mode description is not clearly mapped to the parameter.

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 identifies a specific action ('Read a one-call document overview') and a clear resource (the document), listing concrete content categories: paragraph/table/footnote/comment/revision counts, sections, and package parts. It is distinct from siblings like get_outline or get_document_view in scope, though it does not explicitly name or differentiate from those alternatives.

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

Usage Guidelines3/5

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

The phrase 'one-call document overview' implies when to use this tool, and the live-mode explanation gives contextual nuance. However, there are no explicit when-to-use or when-not-to-use statements, no exclusions, and no mention of alternatives among the many sibling tools.

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/centered paragraphs). When nothing is detected, returns a note plus flat structure counts, not an empty list. The indices feed the location object's paragraph and outline selectors. Open documents are read live. Read-only. TOC generation and heading surgery: academic pack.

ParametersJSON Schema
NameRequiredDescriptionDefault
liveNoauto
file_pathYes
detect_formattedNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior5/5

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

Beyond the readOnlyHint annotation, the description adds substantial behavioral detail: it explains detection of w:outlineLvl overrides, the heuristic when detect_formatted=True, fallback behavior when nothing is detected ('returns a note plus flat structure counts, not an empty list'), and that open documents are read live. This is rich, non-obvious 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.

Conciseness4/5

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

The description is front-loaded with the core listing behavior and packs useful details into compact sentences. The phrase 'TOC generation and heading surgery: academic pack' is cryptic and somewhat unhelpful, but it does not detract much from an otherwise well-structured description.

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 annotations cover read-only safety, the description covers all essential operational context: detection modes, heuristic behavior, fallback output, live read behavior, and how indices relate to selectors. An agent has enough information to invoke the tool correctly and interpret its purpose.

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?

The schema has 0% description coverage, so the description must compensate. It successfully explains detect_formatted=True and its heuristic scan, which adds real meaning beyond the schema. However, the 'live' parameter with default 'auto' is not explained, and file_path is only implicitly obvious from context, leaving a partial 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 opens with a specific action and resource: 'List every heading with its paragraph index and level.' It further clarifies what is detected (Heading styles and w:outlineLvl overrides) and how results are structured, making the tool's purpose unmistakable and distinct from sibling tools like get_text or get_document_info.

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

Usage 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 this tool is meant to be used, mentioning 'TOC generation and heading surgery' and noting that indices feed location selectors. It does not explicitly name alternatives or exclusions, but the stated use case and read-only framing give an agent enough context to select it appropriately.

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 table nested inside a cell, pass nested={row, cell, index} addressing the host cell (index picks among several, default 0). Write with set_cells; reshape with modify_table_structure (media-forms pack). Read-only; reads the last-saved state of a document open in Word.

ParametersJSON Schema
NameRequiredDescriptionDefault
nestedNo
file_pathYes
table_indexYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A5/5.0
Behavior5/5

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

Annotations already state readOnlyHint=true, and the description adds meaningful behavior: it reads 'the last-saved state of a document open in Word,' and it explains how output shape depends on whether the table has merges. This goes well beyond what annotations alone provide.

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

Conciseness5/5

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

Four sentences, each carrying distinct value: scoping, parameter semantics, output behavior, and usage alternatives. There is no filler, and the most important information is front-loaded.

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

Completeness5/5

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

Given the tool's complexity and the existence of an output schema, the description covers the essential operational details: index addressing, nested tables, merge-dependent return shapes, and read-only behavior. Nothing critical is missing 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?

Despite 0% schema description coverage, the description fully explains table_index semantics (0-based, body-level, document order) and the nested parameter structure ({row, cell, index}, default 0). file_path is self-explanatory, so the parameter guidance is effectively complete.

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

Purpose5/5

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

Description opens with a specific verb and resource: 'Read one table in full,' then enumerates exactly what is returned (cell text, merge map, column widths). It also distinguishes itself from writes/reshapes by naming set_cells and modify_table_structure, making it clear this tool is for reading only.

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 nested addressing, and explicitly routes write and reshape operations to other tools ('Write with set_cells; reshape with modify_table_structure'). This gives the agent clear when-to-use vs. 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.

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
startNo
textboxNo
containsNo
file_pathYes
include_textboxesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

Beyond the readOnlyHint annotation, the description discloses slice semantics, contains filtering, textbox behavior, file-mode restrictions, and the live document shape. The parenthetical about set_textbox_text is cryptic, which keeps this from a 5.

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

Conciseness4/5

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

The description is compact and front-loaded with the core behavior and return format. It packs a lot into dense sentences and parentheticals, making it slightly harder to parse, but there is no unnecessary filler.

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 7-parameter tool with no schema descriptions, this is fairly complete: output shape, slicing, filtering, textbox modes, file/live behavior, and equation routing are all covered. The live parameter semantics and the meaning of the get_document_view orientation note remain slightly underspecified.

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

Parameters4/5

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

With 0% schema description coverage, the description carries the burden of explaining parameters. It explains start/end indexing, contains, include_textboxes, and textbox; however, the live parameter is only vaguely tied to "Open documents read live," and the contains filter lacks matching 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?

The description opens with a specific verb and resource: "Read body paragraphs" and immediately gives the output shape. It also differentiates itself from siblings by routing equations to list_elements and orientation to 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?

The description gives clear scoping signals: equations should be read via list_elements, textbox features are file-mode only, and open documents read live. It does not exhaustively contrast with all overlapping siblings like find_text or get_outline, but the main alternatives are identified.

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

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

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A5/5.0
Behavior5/5

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

The description adds substantial behavior beyond the sparse annotations: heading level mapping to outline levels, format cloning behavior (minus outline level), track-guard insertion reporting, auto-backup, atomic validated save, live serialized editing, and stale-selector refusal. No contradictions with readOnlyHint=false or destructiveHint=false.

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 highly efficient; every sentence adds a distinct, non-redundant fact. It opens with the primary action and then layers on caveats and limitations. There is no filler, and the structure flows from core operation to edge cases and alternatives.

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 a schema lacking descriptions, the description covers all essential aspects: item structure, location default, heading levels, format inheritance, tracking, backup, save semantics, live document behavior, and batch routing. An output schema exists, so return values are not required; nothing critical is missing.

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

Parameters5/5

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

With 0% schema description coverage, the tool description carries the full burden of parameter explanation. It defines paragraph item shape, clarifies location default, explains heading_level semantics, describes inherit_format/copy_format_from effects, and mentions track/author behavior. This is comprehensive compensation for the schema's silence.

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, 'Insert paragraphs', and specifies the target as a location object with a clear default (document end). It also distinguishes itself from the sibling apply_edits by explicitly naming it for batch use. There is no ambiguity about what operation this tool performs.

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 guidance: use apply_edits for batches, and notes that inherit_format/copy_format_from work only in file mode. It also includes troubleshooting behavior ('stale text-selector target refuses: save in Word, retry') and describes the live editing context. Clear when-to-use and when-not-to-use signals are present.

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
scopeNobody
trackNo
authorNoClaude
backupNo
previewNo
file_pathYes
replacementsYes
find_formattingNo
max_replacementsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

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

Annotations only indicate that the tool is destructive and not read-only, but the description discloses much more: preview dry-runs without touching the file, max_replacements aborts changing nothing, live edits appear as a single undo step and remain unsaved, file mode auto-backs up with atomic validated saves, and tracked replacements never re-match their own markup.

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 and dense, but nearly every clause earns its place by describing a distinct behavior, parameter, or safety mechanism. Its single-paragraph semicolon-heavy structure makes it harder to scan than a bulleted list, though this is a minor issue for such a complex tool.

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?

It covers preview dry-runs, abort-on-drift behavior, tracked changes, formatting-restricted matching, backup/save safety, Word run fragmentation, live-edit serialization, and sibling routing. Since an output schema exists, omitting detailed return-value explanations is acceptable.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must carry the parameter burden. It does well by specifying the replacement item shape ({find, replace, regex?}), enumerating scope values (body | footnotes | headers | all), and explaining preview, max_replacements, find_formatting, track, and backup. The 'live' parameter is described behaviorally rather than by its accepted values, leaving a small 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 opens with 'Batch find/replace, safe across Word's fragmented runs,' clearly naming the operation and target resource. It further differentiates itself from siblings by pointing to set_paragraph_text for whole-paragraph rewrites and apply_edits for anchor-scoped edits.

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

Usage Guidelines5/5

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

It gives explicit routing guidance: use set_paragraph_text when a find string would be unwieldy, and use apply_edits for anchor-scoped edits. It also prescribes a concrete safe workflow: run preview, review counts/refusals, then rerun with max_replacements set to the previewed total.

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 table nested in that host cell (edits mode only). track records tracked changes by author. Live mode (plain edits only) refuses vertical merges; file mode is merge-aware. Auto-backup in file mode (backup=False skips rotation); atomic validated save. Documents open in Word edit live, serialized. For batches, use apply_edits.

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

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already mark the operation destructive, idempotent, and read-write; the description adds valuable behavior beyond that: live mode refuses vertical merges, file mode is merge-aware, backup rotation can be skipped, saves are atomic and validated, and tracked changes are attributed by author. The Word-open sentence is terse but contributes real concurrency 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 efficient, packing mode syntax, nested behavior, tracking, backup, atomic save, and sibling routing into six sentences with no filler. A couple of phrases are telegraphic, 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?

Given 9 parameters and 0% schema coverage, the description covers the critical decision points: edit structures, nested targeting, merge restrictions, backup control, atomic save, and the apply_edits alternative. Remaining ambiguity around the Word-open sentence and exact output behavior keep it from being fully complete.

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

Parameters4/5

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

Schema description coverage is 0%, so the description carries the burden. It gives concrete shapes for edits, block, and nested, and explains track, author, backup, and live. Required params file_path and table_index are not explicitly described, but their roles are inferable from the tool context; still, this prevents a 5.

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: 'Write many table cells in one call.' It also names sibling apply_edits as the batch alternative, distinguishing the tool from nearby siblings.

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

Usage Guidelines4/5

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

Provides clear selection context by describing modes (scattered vs block vs nested) and live vs file behavior, and explicitly points to apply_edits for batches. It does not compare against every sibling table tool, but the intended use is unambiguous.

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
startNo
backupNo
indicesNo
file_pathYes
formattingNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/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 auto-backup, atomic validated saves, serialized live editing, refusal of shading/borders/tab_stops on live documents, and the unusual outline_level offset behavior. These are meaningful behavioral traits that an agent needs to anticipate side effects, and none of them contradict 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.

Conciseness4/5

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

The description is dense but each sentence earns its place: selection constraints, formatting keys, outline_level caveat, save behavior, live limitations, and routing. It is longer than a minimal definition, but the complexity of the tool justifies the length.

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 seven parameters and an output schema, the description covers the main selection modes, supported formatting keys, and key side effects. Gaps remain around the 'live' parameter's exact values, what happens if no selection form is supplied, and how 'backup' is explicitly toggled. Overall, it is adequate but not exhaustive.

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 carries the burden of explaining parametersebb8-semantics. It explains indices, start/end inclusive ranges, the formatting keys, and outline_level semantics. It does not fully document the 'live' parameter's accepted values or precisely tie 'auto-backup' to the backup parameter, so coverage is strong but not complete.

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 names the operation ('set paragraph formatting') and the target resource ('paragraphs'), and it specifies the selection modes (indices list or start/end inclusive range). However, it does not explicitly distinguish this tool from nearby siblings like format_text or apply_style; the only routing cue appears later with apply_edits.

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

Usage Guidelines4/5

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

The description provides useful usage context: it shows how to select paragraphs, notes live-document behavior, and says 'For batches, use apply_edits.' It does not fully explain when to prefer this over format_text or apply_style, but it gives enough context to route an agent for a paragraph-formatting operation.

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
backupNo
expectNo
locationYes
new_textYes
file_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.9/5.0
Behavior5/5

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

Beyond the annotations, the description discloses meaningful behavior: indices shift after edits, expect prevents wrong-paragraph edits, auto-backup in file mode, atomic validated save, live serialized edits, and refusal on tracked-revision paragraphs. This is exactly the kind of context that helps an agent anticipate side effects.

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

Conciseness5/5

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

The description is dense but every sentence adds value: operation, addressing, safety mechanism, backup behavior, live-edit implications, 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 (nested location objects, multiple parameters, output schema, annotations), the description covers the critical usage and behavioral aspects thoroughly. The batch alternative, safety guardrails, and live-edit constraints make it complete enough for correct invocation.

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

Parameters4/5

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

With 0% schema description coverage, the description compensates for the most important parameters: location object variants, expect substring, and backup behavior. It does not explain the 'live' parameter values or file_path explicitly, but file_path is self-evident and the live behavior is partially described, so the key semantic gaps are mostly filled.

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 and resource: 'Replace one paragraph's full text, keeping style and base formatting'. It clearly distinguishes itself from formatting-focused siblings and even points to apply_edits for batches, making the tool's scope unambiguous.

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

Usage Guidelines5/5

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

It explicitly says when to use this tool (replacing one paragraph's full text), when not to (for batches, use apply_edits), and provides important context such as tracked-revision paragraphs refusing live edits. This is strong routing guidance.

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

Tool Schema Changelog

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

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

TDQS

A4.4/5.0

Scored across 29 tools

Disambiguation5/5

Each tool targets a distinct resource or operationโ€”get_text for paragraphs, get_document_view for anchored markdown, get_outline for headingsโ€”with clear cross-references in descriptions to prevent confusion. Batch tools like apply_edits are explicitly contrasted with single-operation tools, and overlapping functions are differentiated by scope and output format.

Naming Consistency5/5

All 29 tool names follow a consistent verb_noun snake_case pattern (e.g., create_document, delete_table, set_cells, manage_backups). Verbs are descriptive and nouns are precise, with no mixed casing or arbitrary naming.

Tool Count4/5

At 29 tools, the server is heavier than typical but justified by its comprehensive Word manipulation scope, including optional packs. The enable_tools/disable_tools mechanism lets the surface scale down, so the count is not excessive for the domain.

Completeness5/5

The tool surface covers the full document lifecycle: create, read, edit, delete, format, search, tables, lists, breaks, styles, backups, and diagnostics. Advanced features are partitioned into packs, but the core is complete with no obvious dead ends for common workflows.

Maintenance

ActivityMaintained
ResponsivenessWithin a week

Related MCP Connectors

Related MCP Servers