KitchenSink4Word
KitchenSink4Word is an MCP server that lets AI assistants read, edit, and manage Word (.docx) documents โ including live editing of documents open in Microsoft Word โ with tracked changes, citations, templates, and a tiered tool system.
Read & navigate documents: get text, outline, document info, find text, enumerate tables/images/charts/fields/comments/notes, and view a markdown-projected document with stable anchors.
Edit text and formatting: insert/delete/set paragraphs, batch find-and-replace (run-aware, regex-safe), apply character/paragraph formatting, apply styles, insert lists and breaks.
Work with tables: create, delete, read, bulk-set cells (merge-aware), modify table structure (merge/split, insert/delete columns/rows).
Track changes and collaborate: write tracked edits, accept/reject by author, manage threaded comments, get structured diffs.
Academic & references: citations and bibliographies (Word-native + Zotero), footnotes/endnotes, TOC/captions/cross-references, index generation, styles, sections, headers/footers, accessibility checks.
Assembly & templates: insert/split documents, move sections, copy tables across files, apply/fill templates, mail merge.
Media & forms: images, charts, equations, text boxes, hyperlinks, content controls, form fields, field codes.
Live Word integration: edit documents open in Word (serialized, one undo step), PDF import/export, compare/combine documents, refresh fields, proofing/readability stats, save/close.
Protection & I/O: document protection, watermarks, redaction with verification, table CSV/JSON import/export.
Safety & backups: automatic atomic validated saves, backup slots (prev/anchor) for undo, sandboxing by allowed roots, update check opt-out.
Pack management: start with a lite core (~9.9k tokens) and enable optional packs on demand (references, review, academic, assembly, media-forms, com-live, protection-io) or load everything at once.
Provides reference-management integration with Mendeley in Word documents, including inventory, detection, and integrity checking of Mendeley citation fields.
Provides citation management for Zotero in Word documents, including detection and integrity checking of Zotero citation fields and support for Zotero-based citations.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@KitchenSink4WordInsert a TOC after the title page, then delete the third column from the table."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
๐ฐ KitchenSink4Word Community Edition
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 kitchensink4wordcodex mcp add word -- uvx kitchensink4wordAny 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 kitchensink4wordThen 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_structureinserts 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_cellscall 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 |
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, commentsLite-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 fromscripts/count_operations.py; the v1.6 run isscripts/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_toolscall. 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_pathand rotates the current content into stable backup slots before the change (backup=Falseto 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) andanchor.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_backupslists, restores (undoably: the pre-restore state rotates intoprevfirst), 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;
validatereports 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 |
|
|
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 |
| 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 |
| section-break/field-crossing ranges refuse; range={} location endpoints run the snapshot staleness guard |
| plain queries, 500-match cap; formatting mode and include_textboxes file-mode only |
| formatting mode routes live; case mode file-mode only (live='force' refuses); range={} locations run the snapshot staleness guard |
| same shape |
| same key names; adds words/track_revisions, omits part list |
| same flat-list shape |
| body shape identical; include_textboxes/textbox modes file-mode only |
| 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 |
| plain items route live (255-char finds handled); preview and find_formatting modes are file-mode only (find_formatting with live='force' refuses) |
| plain text cells; vertical merges refuse live |
| shading/borders/tab_stops keys refuse live (XML-level); raw indices keep the v1 index-trust contract |
| expect guard honored; tracked-revision paragraphs refuse; text-selector locations run the snapshot staleness guard |
| 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_cellsrefuses 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 toolsapply_editsApply EditsADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| live | No | auto | |
| edits | Yes | ||
| atomic | No | ||
| backup | No | ||
| file_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 StyleADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| range | No | ||
| style | Yes | ||
| backup | No | ||
| target | No | ||
| file_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| dest_path | Yes | ||
| file_path | Yes | ||
| overwrite | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | ||
| file_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | ||
| backup | No | ||
| location | No | ||
| width_pt | No | ||
| file_path | Yes | ||
| header_row | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 ElementADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | ||
| type | Yes | ||
| backup | No | ||
| location | No | ||
| file_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 ParagraphsADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | ||
| live | No | auto | |
| range | No | ||
| start | No | ||
| track | No | ||
| author | No | Claude | |
| backup | No | ||
| file_path | Yes | ||
| expect_end | No | ||
| expect_start | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 TableADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| backup | No | ||
| file_path | Yes | ||
| table_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 DocumentARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 ToolsAIdempotent
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'].
| Name | Required | Description | Default |
|---|---|---|---|
| packs | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 ToolsAIdempotent
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
| Name | Required | Description | Default |
|---|---|---|---|
| packs | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 TextARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| live | No | auto | |
| query | No | ||
| regex | No | ||
| scope | No | body | |
| file_path | Yes | ||
| formatting | No | ||
| context_chars | No | ||
| include_textboxes | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 TextADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| case | No | ||
| find | No | ||
| live | No | auto | |
| range | No | ||
| backup | No | ||
| file_path | Yes | ||
| formatting | No | ||
| occurrence | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 InfoARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| live | No | auto | |
| file_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| scope | No | ||
| detail | No | text | |
| include | No | ||
| file_path | Yes | ||
| stamp_anchors | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 OutlineARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| live | No | auto | |
| file_path | Yes | ||
| detect_formatted | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 InfoARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
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.
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.
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.
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.
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.
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 TableARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| nested | No | ||
| file_path | Yes | ||
| table_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 TextARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | ||
| live | No | auto | |
| start | No | ||
| textbox | No | ||
| contains | No | ||
| file_path | Yes | ||
| include_textboxes | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 WorkflowsARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| task | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | page | |
| backup | No | ||
| location | No | ||
| file_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | bullet | |
| items | Yes | ||
| backup | No | ||
| levels | No | ||
| location | No | ||
| start_at | No | ||
| file_path | Yes | ||
| continue_from | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| live | No | auto | |
| track | No | ||
| author | No | Claude | |
| backup | No | ||
| location | No | ||
| file_path | Yes | ||
| paragraphs | Yes | ||
| inherit_format | No | ||
| copy_format_from | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description 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.
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.
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.
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.
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.
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 ElementsARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| type | Yes | ||
| filter | No | ||
| file_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 BackupsADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| label | No | ||
| scope | No | ||
| action | Yes | ||
| source | No | ||
| dry_run | No | ||
| dest_dir | No | ||
| directory | No | ||
| file_path | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 ReplaceADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| live | No | auto | |
| scope | No | body | |
| track | No | ||
| author | No | Claude | |
| backup | No | ||
| preview | No | ||
| file_path | Yes | ||
| replacements | Yes | ||
| find_formatting | No | ||
| max_replacements | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 CellsADestructiveIdempotent
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.
| Name | Required | Description | Default |
|---|---|---|---|
| live | No | auto | |
| block | No | ||
| edits | No | ||
| track | No | ||
| author | No | Claude | |
| backup | No | ||
| nested | No | ||
| file_path | Yes | ||
| table_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 FormatADestructiveIdempotent
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.
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | ||
| live | No | auto | |
| start | No | ||
| backup | No | ||
| indices | No | ||
| file_path | Yes | ||
| formatting | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description 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.
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.
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.
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.
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.
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 TextADestructiveIdempotent
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.
| Name | Required | Description | Default |
|---|---|---|---|
| live | No | auto | |
| backup | No | ||
| expect | No | ||
| location | Yes | ||
| new_text | Yes | ||
| file_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
2 tool updates
v2.0.3- Added
get_server_info - Changed
insert_list3 fields changed- added
Input schema / properties / continue_fromAdded value: +{ + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null +} - added
Input schema / properties / levelsAdded value: +{ + "anyOf": [ + { + "items": {}, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null +} - added
Input schema / properties / start_atAdded value: +{ + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null +}
1 tool update
v2.0.1- Changed
delete_paragraphs2 fields changed- added
Input schema / properties / expect_endAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null +} - added
Input schema / properties / expect_startAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null +}
192 tool updates
v2.0.0- Removed
accept_revisions - Removed
add_bookmark - Removed
add_caption - Removed
add_chart - Removed
add_comment - Removed
add_cross_reference - Removed
add_endnote - Removed
add_equation - Removed
add_footnote - Removed
add_heading - Removed
add_hyperlink - Removed
add_image - Removed
add_list - Removed
add_page_break - Removed
add_page_numbers - Removed
add_section_break - Removed
add_source - Removed
add_watermark - Removed
anonymize_for_review - Removed
apply_character_style - Added
apply_edits - Removed
apply_manuscript_format - Changed
apply_style4 fields changed- removed
Input schema / properties / indicesRemoved value: -{ - "items": { - "type": "integer" - }, - "type": "array" -} - added
Input schema / properties / rangeAdded value: +{ + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null +} - added
Input schema / properties / targetAdded value: +{ + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null +} - changed
Input schema / requiredPrevious value: -[ - "file_path", - "indices", - "style" -]New value: +[ + "file_path", + "style" +]
- Removed
apply_table_style - Removed
apply_template - Removed
assemble_front_matter - Removed
audit_accessibility - Removed
batch_apply - Removed
change_case - Removed
change_heading_level - Removed
check_brand_compliance - Removed
check_citation_parity - Removed
check_defined_terms - Removed
check_image_resolution - Removed
check_reference_field_integrity - Removed
check_template_compliance - Removed
cleanup_orphan_notes - Removed
com_close_open_document - Removed
com_combine_documents - Removed
com_compare_documents - Removed
com_export_pdf - Removed
com_import_pdf - Removed
com_merge_documents - Removed
com_proofing_errors - Removed
com_readability_statistics - Removed
com_refresh_fields - Removed
com_save_open_document - Removed
com_save_with_password - Removed
com_validate_opens_clean - Removed
com_word_status - Removed
comment_report - Removed
comment_report_multi - Removed
convert_citation_style - Removed
convert_notes - Removed
copy_table - Removed
create_snapshot - Changed
create_table4 fields changed- removed
Input schema / properties / after_anchorRemoved value: -{ - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null -} - removed
Input schema / properties / after_indexRemoved value: -{ - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "default": null -} - removed
Input schema / properties / at_endRemoved value: -{ - "default": false, - "type": "boolean" -} - added
Input schema / properties / locationAdded value: +{ + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null +}
- Removed
deanonymize_document - Removed
define_style - Removed
delete_columns - Removed
delete_comment - Added
delete_element - Removed
delete_endnote - Removed
delete_equation - Removed
delete_footnote - Changed
delete_paragraphs5 fields changed- added
Input schema / properties / rangeAdded value: +{ + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null +} - added
Input schema / properties / start / anyOfAdded value: +[ + { + "type": "integer" + }, + { + "type": "null" + } +] - added
Input schema / properties / start / defaultAdded value: +null - removed
Input schema / properties / start / typeRemoved value: -"integer" - changed
Input schema / requiredPrevious value: -[ - "file_path", - "start" -]New value: +[ + "file_path" +]
- Removed
delete_rows - Removed
delete_source - Removed
delete_toc - Removed
detect_citation_system - Added
disable_tools - Removed
edit_endnote - Removed
edit_footnote - Added
enable_tools - Removed
export_table - Removed
extract_images - Removed
fill_form_fields - Removed
fill_template - Removed
find_formatted - Changed
find_text6 fields changed- added
Input schema / properties / formattingAdded value: +{ + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null +} - added
Input schema / properties / query / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - added
Input schema / properties / query / defaultAdded value: +null - removed
Input schema / properties / query / typeRemoved value: -"string" - added
Input schema / properties / scopeAdded value: +{ + "default": "body", + "type": "string" +} - changed
Input schema / requiredPrevious value: -[ - "file_path", - "query" -]New value: +[ + "file_path" +]
- Removed
fix_accessibility - Removed
format_cells - Changed
format_text11 fields changed- added
Input schema / properties / caseAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null +} - removed
Input schema / properties / formatting / additionalPropertiesRemoved value: -true - added
Input schema / properties / formatting / anyOfAdded value: +[ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } +] - added
Input schema / properties / formatting / defaultAdded value: +null - removed
Input schema / properties / formatting / typeRemoved value: -"object" - added
Input schema / properties / occurrence / anyOfAdded value: +[ + { + "type": "integer" + }, + { + "type": "null" + } +] - changed
Input schema / properties / occurrence / defaultPrevious value: -1New value: +null - removed
Input schema / properties / occurrence / typeRemoved value: -"integer" - removed
Input schema / properties / paragraph_indexRemoved value: -{ - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "default": null -} - added
Input schema / properties / rangeAdded value: +{ + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null +} - changed
Input schema / requiredPrevious value: -[ - "file_path", - "formatting" -]New value: +[ + "file_path" +]
- Removed
get_comments - Added
get_document_view - Removed
get_headers_footers - Removed
get_lists - Removed
get_nested_table - Changed
get_outline1 field changed- added
Input schema / properties / detect_formattedAdded value: +{ + "default": false, + "type": "boolean" +}
- Removed
get_paragraph_format - Removed
get_protection - Removed
get_styles - Changed
get_table1 field changed- added
Input schema / properties / nestedAdded value: +{ + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null +}
- Changed
get_text1 field changed- added
Input schema / properties / textboxAdded value: +{ + "anyOf": [ + { + "type": "boolean" + }, + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null +}
- Removed
get_textbox_text - Removed
get_tracked_changes - Removed
import_table - Removed
insert_bibliography - Added
insert_break - Removed
insert_caption_list - Removed
insert_citation - Removed
insert_columns - Removed
insert_content_control - Removed
insert_document - Removed
insert_field - Removed
insert_glossary - Removed
insert_index - Added
insert_list - Changed
insert_paragraphs5 fields changed- removed
Input schema / properties / after_anchorRemoved value: -{ - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null -} - removed
Input schema / properties / after_indexRemoved value: -{ - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "default": null -} - removed
Input schema / properties / at_endRemoved value: -{ - "default": false, - "type": "boolean" -} - removed
Input schema / properties / before_indexRemoved value: -{ - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "default": null -} - added
Input schema / properties / locationAdded value: +{ + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null +}
- Removed
insert_rows - Removed
insert_toc - Removed
insert_zotero_citation - Removed
list_bookmarks - Removed
list_charts - Removed
list_content_controls - Added
list_elements - Removed
list_endnotes - Removed
list_equations - Removed
list_fields - Removed
list_footnotes - Removed
list_form_fields - Removed
list_images - Removed
list_index_entries - Removed
list_reference_fields - Removed
list_section_blocks - Removed
list_sections - Removed
list_sources - Removed
list_tables - Removed
list_template_placeholders - Removed
live_insert_at_cursor - Removed
live_scroll_to - Removed
live_set_track_changes - Removed
mail_merge - Changed
manage_backups2 fields changed- added
Input schema / properties / dest_dirAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null +} - added
Input schema / properties / labelAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null +}
- Removed
mark_index_entry - Removed
merge_cells - Removed
move_section - Removed
parse_references - Removed
prepare_for_submission - Removed
preview_replace - Removed
read_toc - Removed
redact_text - Removed
reject_revisions - Removed
remove_document_protection - Removed
remove_watermark - Removed
replace_formatted - Removed
replace_image - Removed
replace_paragraph_text - Removed
reply_to_comment - Removed
resize_image - Removed
resolve_comment - Removed
revision_analytics - Removed
revision_summary - Changed
search_and_replace2 fields changed- added
Input schema / properties / find_formattingAdded value: +{ + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null +} - added
Input schema / properties / previewAdded value: +{ + "default": false, + "type": "boolean" +}
- Removed
search_zotero_library - Removed
set_bibliography_style - Changed
set_cells7 fields changed- added
Input schema / properties / blockAdded value: +{ + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null +} - added
Input schema / properties / edits / anyOfAdded value: +[ + { + "items": { + "additionalProperties": true, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } +] - added
Input schema / properties / edits / defaultAdded value: +null - removed
Input schema / properties / edits / itemsRemoved value: -{ - "additionalProperties": true, - "type": "object" -} - removed
Input schema / properties / edits / typeRemoved value: -"array" - added
Input schema / properties / nestedAdded value: +{ + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null +} - changed
Input schema / requiredPrevious value: -[ - "file_path", - "table_index", - "edits" -]New value: +[ + "file_path", + "table_index" +]
- Removed
set_cells_block - Removed
set_column_widths - Removed
set_columns - Removed
set_content_control_value - Removed
set_document_properties - Removed
set_document_protection - Removed
set_footer - Removed
set_header - Removed
set_header_row_repeat - Removed
set_image_alt_text - Removed
set_line_numbering - Removed
set_nested_cells - Removed
set_page_number_format - Changed
set_paragraph_format11 fields changed- added
Input schema / properties / endAdded value: +{ + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null +} - removed
Input schema / properties / formatting / additionalPropertiesRemoved value: -true - added
Input schema / properties / formatting / anyOfAdded value: +[ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } +] - added
Input schema / properties / formatting / defaultAdded value: +null - removed
Input schema / properties / formatting / typeRemoved value: -"object" - added
Input schema / properties / indices / anyOfAdded value: +[ + { + "items": { + "type": "integer" + }, + "type": "array" + }, + { + "type": "null" + } +] - added
Input schema / properties / indices / defaultAdded value: +null - removed
Input schema / properties / indices / itemsRemoved value: -{ - "type": "integer" -} - removed
Input schema / properties / indices / typeRemoved value: -"array" - added
Input schema / properties / startAdded value: +{ + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null +} - changed
Input schema / requiredPrevious value: -[ - "file_path", - "indices", - "formatting" -]New value: +[ + "file_path" +]
- Added
set_paragraph_text - Removed
set_section_properties - Removed
set_textbox_text - Removed
set_update_fields_flag - Removed
setup_chapter_headers - Removed
sort_table - Removed
split_document - Removed
split_table - Removed
structured_diff - Removed
unmerge_cells - Removed
update_chart_data - Removed
validate_captions - Removed
validate_chapter_headers - Removed
validate_cross_references - Removed
validate_document - Removed
validate_form_completeness - Removed
validate_notes - Removed
verify_redaction - Removed
word_count - Removed
word_count_with_exclusions - Removed
word_live_repair
84 tool updates
v1.6.1- Added
add_chart - Added
add_equation - Added
anonymize_for_review - Added
apply_manuscript_format - Added
assemble_front_matter - Added
audit_accessibility - Added
batch_apply - Added
change_heading_level - Added
check_brand_compliance - Added
check_defined_terms - Added
check_image_resolution - Added
check_reference_field_integrity - Added
check_template_compliance - Added
com_import_pdf - Added
comment_report - Added
comment_report_multi - Added
convert_citation_style - Changed
copy_document1 field changed- added
Input schema / properties / overwriteAdded value: +{ + "default": false, + "type": "boolean" +}
- Added
copy_table - Added
create_snapshot - Added
deanonymize_document - Added
delete_equation - Changed
delete_paragraphs1 field changed- added
Input schema / properties / liveAdded value: +{ + "default": "auto", + "type": "string" +}
- Added
detect_citation_system - Added
diagnose_document - Added
export_table - Added
extract_images - Added
fill_form_fields - Added
fill_template - Added
find_formatted - Changed
find_text5 fields changed- added
Input schema / properties / include_textboxesAdded value: +{ + "default": false, + "type": "boolean" +} - added
Input schema / properties / liveAdded value: +{ + "default": "auto", + "type": "string" +} - added
Output schema / properties / result / anyOfAdded value: +[ + { + "items": {}, + "type": "array" + }, + { + "additionalProperties": true, + "type": "object" + } +] - removed
Output schema / properties / result / itemsRemoved value: -{} - removed
Output schema / properties / result / typeRemoved value: -"array"
- Added
fix_accessibility - Changed
format_text1 field changed- added
Input schema / properties / liveAdded value: +{ + "default": "auto", + "type": "string" +}
- Changed
get_comments1 field changed- added
Input schema / properties / liveAdded value: +{ + "default": "auto", + "type": "string" +}
- Changed
get_document_info1 field changed- added
Input schema / properties / liveAdded value: +{ + "default": "auto", + "type": "string" +}
- Changed
get_outline4 fields changed- added
Input schema / properties / liveAdded value: +{ + "default": "auto", + "type": "string" +} - added
Output schema / properties / result / anyOfAdded value: +[ + { + "items": {}, + "type": "array" + }, + { + "additionalProperties": true, + "type": "object" + } +] - removed
Output schema / properties / result / itemsRemoved value: -{} - removed
Output schema / properties / result / typeRemoved value: -"array"
- Added
get_paragraph_format - Changed
get_text5 fields changed- added
Input schema / properties / include_textboxesAdded value: +{ + "default": false, + "type": "boolean" +} - added
Input schema / properties / liveAdded value: +{ + "default": "auto", + "type": "string" +} - added
Output schema / properties / result / anyOfAdded value: +[ + { + "items": {}, + "type": "array" + }, + { + "additionalProperties": true, + "type": "object" + } +] - removed
Output schema / properties / result / itemsRemoved value: -{} - removed
Output schema / properties / result / typeRemoved value: -"array"
- Added
get_textbox_text - Added
get_workflows - Added
import_table - Added
insert_content_control - Added
insert_document - Added
insert_field - Added
insert_glossary - Changed
insert_paragraphs3 fields changed- added
Input schema / properties / copy_format_fromAdded value: +{ + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null +} - added
Input schema / properties / inherit_formatAdded value: +{ + "default": false, + "type": "boolean" +} - added
Input schema / properties / liveAdded value: +{ + "default": "auto", + "type": "string" +}
- Added
insert_zotero_citation - Added
list_charts - Added
list_content_controls - Added
list_equations - Added
list_fields - Added
list_form_fields - Added
list_reference_fields - Added
list_template_placeholders - Added
live_insert_at_cursor - Added
live_scroll_to - Added
live_set_track_changes - Added
mail_merge - Added
manage_backups - Added
parse_references - Added
prepare_for_submission - Added
preview_replace - Added
redact_text - Added
replace_formatted - Changed
replace_paragraph_text2 fields changed- added
Input schema / properties / expectAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null +} - added
Input schema / properties / liveAdded value: +{ + "default": "auto", + "type": "string" +}
- Added
revision_analytics - Changed
search_and_replace1 field changed- added
Input schema / properties / liveAdded value: +{ + "default": "auto", + "type": "string" +}
- Added
search_zotero_library - Changed
set_cells1 field changed- added
Input schema / properties / liveAdded value: +{ + "default": "auto", + "type": "string" +}
- Added
set_content_control_value - Changed
set_paragraph_format1 field changed- added
Input schema / properties / liveAdded value: +{ + "default": "auto", + "type": "string" +}
- Added
set_textbox_text - Added
setup_chapter_headers - Added
split_document - Added
structured_diff - Added
update_chart_data - Added
validate_captions - Added
validate_chapter_headers - Added
validate_cross_references - Added
validate_form_completeness - Added
verify_redaction - Changed
word_count1 field changed- added
Input schema / properties / liveAdded value: +{ + "default": "auto", + "type": "string" +}
- Added
word_count_with_exclusions - Added
word_live_repair
119 tool updates
v1.2.1- First observed
accept_revisions - First observed
add_bookmark - First observed
add_caption - First observed
add_comment - First observed
add_cross_reference - First observed
add_endnote - First observed
add_footnote - First observed
add_heading - First observed
add_hyperlink - First observed
add_image - First observed
add_list - First observed
add_page_break - First observed
add_page_numbers - First observed
add_section_break - First observed
add_source - First observed
add_watermark - First observed
apply_character_style - First observed
apply_style - First observed
apply_table_style - First observed
apply_template - First observed
change_case - First observed
check_citation_parity - First observed
cleanup_orphan_notes - First observed
com_close_open_document - First observed
com_combine_documents - First observed
com_compare_documents - First observed
com_export_pdf - First observed
com_merge_documents - First observed
com_proofing_errors - First observed
com_readability_statistics - First observed
com_refresh_fields - First observed
com_save_open_document - First observed
com_save_with_password - First observed
com_validate_opens_clean - First observed
com_word_status - First observed
convert_notes - First observed
copy_document - First observed
create_document - First observed
create_table - First observed
define_style - First observed
delete_columns - First observed
delete_comment - First observed
delete_endnote - First observed
delete_footnote - First observed
delete_paragraphs - First observed
delete_rows - First observed
delete_source - First observed
delete_table - First observed
delete_toc - First observed
edit_endnote - First observed
edit_footnote - First observed
find_text - First observed
format_cells - First observed
format_text - First observed
get_comments - First observed
get_document_info - First observed
get_headers_footers - First observed
get_lists - First observed
get_nested_table - First observed
get_outline - First observed
get_protection - First observed
get_styles - First observed
get_table - First observed
get_text - First observed
get_tracked_changes - First observed
insert_bibliography - First observed
insert_caption_list - First observed
insert_citation - First observed
insert_columns - First observed
insert_index - First observed
insert_paragraphs - First observed
insert_rows - First observed
insert_toc - First observed
list_bookmarks - First observed
list_endnotes - First observed
list_footnotes - First observed
list_images - First observed
list_index_entries - First observed
list_section_blocks - First observed
list_sections - First observed
list_sources - First observed
list_tables - First observed
mark_index_entry - First observed
merge_cells - First observed
move_section - First observed
read_toc - First observed
reject_revisions - First observed
remove_document_protection - First observed
remove_watermark - First observed
replace_image - First observed
replace_paragraph_text - First observed
reply_to_comment - First observed
resize_image - First observed
resolve_comment - First observed
revision_summary - First observed
search_and_replace - First observed
set_bibliography_style - First observed
set_cells - First observed
set_cells_block - First observed
set_column_widths - First observed
set_columns - First observed
set_document_properties - First observed
set_document_protection - First observed
set_footer - First observed
set_header - First observed
set_header_row_repeat - First observed
set_image_alt_text - First observed
set_line_numbering - First observed
set_nested_cells - First observed
set_page_number_format - First observed
set_paragraph_format - First observed
set_section_properties - First observed
set_update_fields_flag - First observed
sort_table - First observed
split_table - First observed
unmerge_cells - First observed
validate_document - First observed
validate_notes - First observed
word_count
TDQS
Scored across 29 tools
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.
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.
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.
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
Related MCP Connectors
Create real Word .docx files from your AI chat: proposals, quotes, contracts, statements of work.
Real Word and Excel for agents: open your .docx/.xlsm, read, propose, apply, get it back intact.
Composable APIs for document extraction, image transformation, and document & sheet generation.
Collaborative word processor you can use with your agent.
Related MCP Servers
- AlicenseCqualityFmaintenanceWord document reading and writing MCP implemented in Node.js7102 npm11MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to edit Microsoft Word documents live while they are open, with full support for tracked changes, comments, formatting, and 124 tools.251 PyPI214MIT
- AlicenseAqualityDmaintenanceEnables AI assistants to directly read, edit, and manipulate Word documents, supporting image and table operations, paragraph editing, and search/replace.202MIT
- AlicenseNot gradedqualityFmaintenanceEnables AI assistants to create, edit, and extract data from Microsoft Word documents programmatically, supporting document creation, content editing, table manipulation, parameter extraction, and template generation.1MIT