# KitchenSink4Word > Word (.docx) MCP server for agents. 115 operations in 10 tools (231 counting each action), about 9.1k tokens for the whole tool list, everything available from the first message. stdio. Every mutation is preceded by an automatic backup and committed by an atomic verified save. Ambiguous targets are refused with every candidate listed instead of guessed. Release: v3.0.0 MCP registry name: io.github.KitchenSink4AI/kitchensink4word Transport: stdio. Platform: Windows. Editing files works without Word installed. Live editing and the Word-powered features need Microsoft Word. The `com_*` and `live_*` operations drive a local Microsoft Word through COM. This document is written for the agent that will call these tools. Every line below is a behavior you can rely on without testing it first. ## 1. How the surface works The server lists ten tools: `word_read`, `word_edit`, `word_format`, `word_structure`, `word_media`, `word_review`, `word_references`, `word_document`, `word_app` and `word_help`. Each tool except `word_help` takes `{op, args}`: `op` names an operation listed in that tool's description, and `args` holds its arguments, including `file_path` (the absolute path of the .docx). Call `word_help` with an `op` to get that operation's arguments and a worked example, or with `topic='location'` for the `location` object. Every operation has a curated example. - All 115 operations are available from the first message. There is nothing to enable and no tool-set switching, and the tool list is the same for the whole session (the server sends no `tools/list_changed`). - About 9.1k tokens (about 9,082 approximate tokens, measured over real stdio by `scripts/measure_surface.py`) cover the whole tool list; the server's own instructions add about 500. Per tool, operations and tokens: `word_read` 24 / 1,368, `word_edit` 9 / 1,031, `word_format` 6 / 620, `word_structure` 15 / 1,025, `word_media` 12 / 906, `word_review` 7 / 787, `word_references` 13 / 1,032, `word_document` 15 / 1,030, `word_app` 14 / 1,070, `word_help` 0 / 213. - Routing is lenient and meaning is strict. Op names match without regard to case, underscores or hyphens; arguments may sit beside `op`; `path` or `file` stands for `file_path`; an op sent to a tool that does not hold it runs when that tool promises no less. Each correction is echoed under `normalized_from`. A value that means something different from what you asked, and a close but different op name such as `insert_paragraph`, are refused, and an unknown op answers up to three `did_you_mean` suggestions that are never run. - Reads are token-shaped on purpose: `get_document_view` projects a document with stable anchors instead of dumping it, says what it left out, and returns `too_large: true` with the outline when one answer cannot hold the whole document. Prefer it, then `apply_edits`, over many small reads and writes. - Clients that defer tool schemas until first call pay close to zero at startup. - Launch settings can narrow the surface. `KS4W_READ_ONLY=1` lists only the operations that read. `KS4W_FORBID` removes named tools or operations from the list and from help; `KS4W_FORBID=word_app` closes every route to the running Word, including the live routes of other operations. A call refused because of a launch setting returns `NOT_AVAILABLE`, and no tool call can undo it. What is removed no longer counts toward the token figure. - Settings from earlier versions are handled for you: an old default (`KS4W_MODE=lite`, `full` or `everything`, `KS4W_PACK_POLICY=auto`, `KS4W_ALL_TOOLS`, `KS4W_LOCK_TOOLS` off) is ignored with a one-line notice on stderr, and a setting that locked the tools (`KS4W_PACK_POLICY=locked`, `KS4W_LOCK_TOOLS` on or a `KS4W_MODE` list of tool groups) stops the start with exit status 2 and one line naming the variable and its replacement, `KS4W_READ_ONLY` or `KS4W_FORBID`. ## 2. Behavioral contracts - Backup before mutation: every file mutation writes a backup into bounded rotating slots first. `manage_backups` lists, restores, and prunes them. The destructive operations `redact_text`, `resolve_revisions`, `prepare_for_submission`, `anonymize_for_review` and `set_document_protection` also keep a labeled snapshot, named in `snapshot` and restorable with `manage_backups` and `source=