Skip to main content
Glama

Safe DOCX Suite

CI codecov npm version License: MIT GitHub last commit GitHub issues closed

English | Español | 简体中文 | Português (Brasil) | Deutsch

safe-docx от UseJunior — используйте агентов кодирования и для работы с документами.

Часть инструментов разработчика UseJunior.

Safe Docx — это TypeScript-стек с открытым исходным кодом для точечного редактирования существующих файлов Microsoft Word .docx. Он создан для рабочих процессов, где агент предлагает изменения, а человеку по-прежнему требуется надежное редактирование документа с сохранением форматирования.

Если вы проверяете контракты с помощью ИИ, самым медленным этапом часто является применение принятых рекомендаций в Word. Safe Docx превращает это в детерминированные вызовы инструментов.

Зачем это нужно

CLI для ИИ-кодинга отлично работают с кодом и текстовыми файлами, но слабы в редактировании существующих (brownfield) файлов .docx. Бизнес- и юридические процессы по-прежнему завязаны на документах Word, поэтому мы создали нативный TypeScript-путь для:

  • чтения и поиска в существующих документах в форматах, эффективных с точки зрения токенов

  • выполнения точечных правок без нарушения форматирования

  • создания чистых/отслеживаемых результатов и артефактов извлечения правок

Миссия: позволить агентам кодирования заниматься и бумажной работой. Safe Docx фокусируется на детерминированных правках существующих файлов Word, где форматирование и семантика проверки должны сохраняться при автоматизации.

Related MCP server: docx-mcp

Позиционирование

Safe Docx оптимизирован для рабочих процессов агентов, которым требуются детерминированные, локальные правки существующих файлов .docx:

  • типизированные инструменты MCP для редактирования, сравнения, извлечения правок, комментариев, сносок и макета

  • проверяемое поведение с доказательствами тестирования и артефактами прослеживаемости

  • распространение среды выполнения TypeScript без необходимости использования Python или LibreOffice для поддерживаемого использования

Safe Docx не предназначен для замены библиотек для генерации .docx с нуля.

Нам доверяют

  • Юридическая фирма из топ-10 Am Law — многоэтапный конвейер перевода контрактов

  • Региональная фирма со 150 юристами — обработано более 22 млн токенов разметки контрактов

  • Gemini CLI — совместимое расширение MCP для редактирования Word

С чего начать

npx -y @usejunior/safe-docx

Подробную информацию о настройке и справочник инструментов см. в packages/docx-mcp/README.md.

Пример: Агент редактирует контракт

Когда вы даете задание агенту кодирования (Claude Code, Cursor, Gemini CLI) с установленным Safe Docx, агент делает вызовы инструментов MCP, подобные этим:

User: Edit the NDA at ~/docs/NDA.docx — change the governing law
      from "State of New York" to "State of Delaware" and save both
      a clean copy and a tracked-changes copy.

Agent calls:

  1. read_file(file_path="~/docs/NDA.docx", format="toon")
     → Returns paragraphs with stable IDs: _bk_1, _bk_2, ...

  2. grep(file_path="~/docs/NDA.docx", pattern="State of New York")
     → Match in paragraph _bk_47

  3. replace_text(
       file_path="~/docs/NDA.docx",
       target_paragraph_id="_bk_47",
       old_string="State of New York",
       new_string="State of Delaware",
       instruction="Change governing law to Delaware"
     )

  4. save(
       file_path="~/docs/NDA.docx",
       save_to_local_path="~/docs/NDA-clean.docx",
       tracked_save_to_local_path="~/docs/NDA-tracked.docx",
       save_format="both"
     )

Агент автоматически обрабатывает вызовы инструментов. Вы получаете чистый файл и файл с отслеживаемыми изменениями для проверки человеком.

Быстрый старт MCP

Claude Code

claude mcp add safe-docx -- npx -y @usejunior/safe-docx

Claude Desktop

Добавьте в ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) или %APPDATA%\Claude\claude_desktop_config.json (Windows):

{
  "mcpServers": {
    "safe-docx": {
      "command": "npx",
      "args": ["-y", "@usejunior/safe-docx"]
    }
  }
}

Gemini CLI

{
  "mcpServers": {
    "safe-docx": {
      "command": "npx",
      "args": ["-y", "@usejunior/safe-docx"]
    }
  }
}

Любой клиент MCP

  • Команда: npx

  • Аргументы: ["-y", "@usejunior/safe-docx"]

  • Транспорт: stdio

Для чего оптимизирован Safe Docx

  • Редактирование существующих файлов .docx

  • Замена текста и вставка абзацев с сохранением форматирования

  • Рабочие процессы с комментариями и сносками

  • Вывод результатов с отслеживаемыми изменениями для проверки (download, compare_documents)

  • Извлечение правок в виде структурированного JSON (extract_revisions)

Для чего Safe Docx НЕ оптимизирован

Safe Docx — это не инструментарий для создания документов с нуля.

Если ваша основная потребность — создание новых файлов .docx из шаблонов/программной верстки, используйте пакеты, такие как docx.

Локальная среда выполнения Safe Docx также намеренно пока отклоняет файлы шаблонов Word (.dotx). Преобразуйте шаблон в обычный документ .docx перед открытием здесь.

Семейства документов

Автоматизированное покрытие фикстур в этом репозитории

  • Фикстуры взаимного NDA в стиле Common Paper

  • Фикстура взаимного NDA Bonterms

  • Фикстура письма о намерениях (LOI)

  • Фикстуры правок соглашений об ограниченном партнерстве ILPA

Разработано для сложных юридических и бизнес-классов .docx

  • Финансовые формы NVCA

  • YC SAFE

  • Инвестиционные меморандумы

  • Формы заказов и соглашения об оказании услуг

  • Соглашения об ограниченном партнерстве

Пакеты

  • @usejunior/docx-core: примитивы + движок сравнения для существующих документов .docx

  • @usejunior/docx-mcp: реализация сервера MCP и интерфейс инструментов

  • @usejunior/safe-docx: каноническое имя установки для конечного пользователя (npx -y @usejunior/safe-docx)

  • @usejunior/safedocx-mcpb: приватный оберточный пакет MCP

Надежность и поверхность доверия

  • Схемы инструментов генерируются из packages/docx-mcp/src/tool_catalog.ts.

  • Матрица прослеживаемости OpenSpec: packages/docx-mcp/src/testing/SAFE_DOCX_OPENSPEC_TRACEABILITY.md

  • Матрица допущений: packages/docx-mcp/assumptions.md

  • Руководство по соответствию: docs/safe-docx/sprint-3-conformance.md

Часто задаваемые вопросы

Что такое Safe Docx?

TypeScript-стек для редактирования DOCX, предназначенный для рабочих процессов агентов кодирования, которым требуются детерминированные правки существующих документов Word с сохранением форматирования.

Сохраняется ли форматирование при правках?

Это основная цель дизайна. Интерфейс инструментов построен вокруг хирургических операций (replace_text, insert_paragraph, элементы управления макетом), которые максимально сохраняют структуру документа и семантику форматирования.

Требуется ли .NET, Python или LibreOffice при обычном использовании?

Нет. Поддерживаемое использование среды выполнения — JavaScript/TypeScript с jszip + @xmldom/xmldom.

Можно ли генерировать контракты с нуля?

Это не является основной задачей. Для генерации с нуля используйте пакеты, такие как docx.

На каких типах документов это тестировалось в фикстурах репозитория?

Взаимные NDA (включая фикстуры в стиле Common Paper/Bonterms), письма о намерениях и фикстуры правок соглашений об ограниченном партнерстве ILPA.

Это только для юристов?

Нет. Те же проблемы редактирования существующих .docx возникают в HR, закупках, финансах, операционном отделе продаж и других процессах, насыщенных бумажной работой.

С чего мне начать как пользователю MCP?

Используйте @usejunior/safe-docx через npx, затем следуйте примерам настройки в packages/docx-mcp/README.md.

Где можно изучить схемы инструментов?

См. сгенерированный справочник в packages/docx-mcp/docs/tool-reference.generated.md.

Разработка

npm ci
npm run build
npm run lint --workspaces --if-present
npm run test:run
npm run check:spec-coverage
npm run test:coverage:packages
npm run coverage:packages:check
npm run coverage:matrix

См. также

  • Open Agreements — заполнение стандартных юридических шаблонов с помощью агентов кодирования (NDA, SAFE, NVCA)

  • Инструменты разработчика UseJunior — страница продукта с вариантами установки и каталогом инструментов

Конфиденциальность

Safe Docx работает полностью на вашем локальном компьютере. Содержимое документов не отправляется на внешние серверы. Подробности см. в нашей Политике конфиденциальности.

Управление

Available Tools

26 tools
accept_ai_editsA
Destructive

Selectively accept tracked changes by revision id or author, leaving all other (e.g. third-party reviewer) revisions byte-untouched. Provide revision_ids (array of w:id values) to target specific revisions, or author to accept every revision by one actor. Sweeps document.xml and supported side-story parts (footnotes, endnotes, comments). An ambiguous overlap — a targeted revision structurally containing, or contained by, a non-targeted revision (nested ins/del/move) — hard-errors with code AMBIGUOUS_REVISION_OVERLAP and a structured overlaps list unless normalize_first is set (best-effort, no byte-identical promise).

ParametersJSON Schema
NameRequiredDescriptionDefault
authorNoAccept every revision authored by this w:author. Convenience alternative to revision_ids.
file_pathYesPath to the DOCX or ODT file.
revision_idsNow:id values of the revisions to accept. Mutually preferred over author.
normalize_firstNoAttempt best-effort resolution on an ambiguous (overlapping) revision graph instead of hard-erroring. No byte-identical guarantee. Default: false.

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already indicate destructiveHint=true, and the description adds substantial behavioral detail: non-targeted revisions remain byte-untouched, multiple document parts are swept, and ambiguous overlaps cause a hard-error with a structured error code and overlaps list unless normalize_first is set. This fully discloses the tool's behavior.

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

Conciseness4/5

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

The description is well-structured and front-loaded with the main action. It contains necessary detail without redundancy, though it could be slightly more concise in the error handling part.

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

Completeness5/5

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

Given the tool's complexity (4 parameters, destructive effect, error cases) and no output schema, the description covers all essential aspects: operation, parameter usage, scope, error behavior, and options. It is complete and self-contained.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds value by explaining that revision_ids target specific w:id values, author is a convenience alternative, and normalize_first is best-effort with no byte-identical guarantee. This context goes beyond the schema descriptions.

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

Purpose5/5

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

The description clearly states the tool selectively accepts tracked changes by revision id or author, and specifies the scope (document.xml and side-story parts). It also distinguishes behavior for ambiguous overlaps, making the purpose very specific and distinct from sibling tools like accept_changes.

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

Usage Guidelines4/5

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

The description explains when to use revision_ids vs author, and the normalize_first option for ambiguous overlaps. However, it does not explicitly compare with sibling tool 'accept_changes' to indicate when one should be preferred over the other.

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

accept_changesA
Destructive

Accept all tracked changes in the document body, producing a clean document with no revision markup. Returns acceptance stats.

ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathYesPath to the DOCX or ODT file.

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already indicate destructiveHint=true. The description adds that it produces a clean document and returns acceptance stats, but it does not elaborate on irreversible changes, performance implications, or what happens if no changes exist. No contradiction with annotations.

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

Conciseness5/5

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

Two sentences with no redundant information. The action and key outcomes are front-loaded. Every word contributes to understanding.

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

Completeness3/5

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

With no output schema, the description mentions 'returns acceptance stats' but does not specify what stats (count, success, etc.). The tool is destructive, but reversibility or confirmation steps are not mentioned. Slightly incomplete for a decision-critical operation.

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

Parameters3/5

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

Schema coverage is 100% with a single parameter 'file_path' described as 'Path to the DOCX or ODT file.' The description adds no further meaning (e.g., file format validation, path examples), so it meets the baseline without exceeding.

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

Purpose5/5

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

The description uses specific verbs ('Accept all tracked changes') and clearly identifies the resource (document body) and outcome ('clean document with no revision markup'). It distinguishes this tool from siblings like 'has_tracked_changes' (checking) and 'extract_revisions' (extracting).

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

Usage Guidelines3/5

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

The description does not provide explicit guidance on when to use this tool versus alternatives. It states the action but lacks context on prerequisites, exclusion criteria, or references to other tools like 'delete_comment' or 'batch_edit'.

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

add_commentA
Destructive

Add a comment or threaded reply to a document. Provide target_paragraph_id + anchor_text for root comments, or parent_comment_id for replies. Supports DOCX and ODT (ODT backs comments with office:annotation; threaded replies are DOCX-only). Surface: revisionable + package-mutation — the body-story comment reference is tracked (w:ins), while comment text and author metadata are recorded in the save report non-revision change manifest.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesComment body text.
authorYesComment author name.
initialsNoAuthor initials (defaults to first letter of author name).
file_pathYesPath to the DOCX or ODT file.
anchor_textNoText within the paragraph to anchor the comment to. If omitted, anchors to entire paragraph.
parent_comment_idNoParent comment ID for threaded replies.
target_paragraph_idNoParagraph ID to anchor the comment to (for root comments).

TDQS

A4.3/5.0
Behavior5/5

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

Explains beyond annotations: it is revisionable with tracked changes (w:ins) in body-story, and comment text/author metadata recorded in non-revision change manifest. Also notes ODT format behavior (office:annotation). Annotations only indicate destructiveHint=true, so this adds significant value.

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

Conciseness4/5

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

The description is moderately long but well-structured: starts with main purpose, then usage patterns, format differences, and behavioral details. Every sentence adds value, though it could be slightly shortened without losing clarity.

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

Completeness4/5

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

Given 7 parameters, no output schema, and complexity of threaded comments vs root, the description covers purpose, parameter use cases, format limitations, and behavioral impact. It does not explain return values, but that is acceptable without an output schema. Slightly more could be done to clarify prerequisites or error conditions.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3. The description adds meaning by explaining two usage patterns (root vs reply), the effect of omitting anchor_text (anchors to entire paragraph), and defaults for initials. This goes beyond the schema's descriptions.

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

Purpose5/5

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

Clearly states the tool adds comments or threaded replies, distinguishes two modes (root vs reply), and specifies supported formats (DOCX, ODT) with DOCX-only for threaded replies. This distinguishes it from sibling tools like delete_comment or get_comments.

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

Usage Guidelines3/5

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

Provides clear instructions on when to use target_paragraph_id+anchor_text versus parent_comment_id, and notes format-specific limitations. However, it does not explicitly state when not to use this tool or compare it to alternatives like batch_edit or insert_paragraph.

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

add_footnoteA
Destructive

Add a footnote anchored to a paragraph. Optionally position the reference after specific text using after_text. Note: [^N] markers in read_file output are display-only and not part of the editable text used by replace_text. Surface: revisionable + package-mutation — the footnote reference and note text are tracked (w:ins), while footnote-part creation and registration are recorded in the save report non-revision change manifest.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesFootnote body text.
file_pathYesPath to the DOCX or ODT file.
after_textNoText after which to insert the footnote reference. If omitted, appends at end of paragraph.
target_paragraph_idYesParagraph ID to anchor the footnote to.

TDQS

A4.3/5.0
Behavior5/5

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

Beyond annotations ('destructiveHint: true'), the description details revision tracking behavior: footnote reference and text are tracked as insertions, while footnote-part creation is recorded in the save report as non-revision changes. This provides valuable context for AI agent decision-making.

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

Conciseness4/5

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

The description is concise with two sentences and a note. The first sentence plainly states purpose, the second adds optional parameter. The technical note about revision tracking, while dense, is relevant for transparency. Could be slightly streamlined.

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

Completeness4/5

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

Given no output schema, the description adequately covers what happens on invocation: tracked changes and save report details. It explains the effect of 'after_text' and the revision behavior, leaving little ambiguity for a mutation tool.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds minimal extra semantics, only clarifying that 'after_text' is optional and used for positioning. No additional depth beyond schema.

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

Purpose5/5

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

The description clearly states the verb ('Add') and resource ('footnote anchored to a paragraph'), distinguishing it from sibling tools like 'update_footnote' and 'delete_footnote'.

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

Usage Guidelines4/5

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

The description implicitly indicates when to use this tool (to add a footnote) and mentions optional positioning with 'after_text', but lacks explicit guidance on when not to use it or alternatives beyond the sibling list.

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

batch_editA
Destructive

Single-agent front door for applying multiple edit steps (replace_text, insert_paragraph) to a document in one call. Validates all steps first, rejects conflicts before applying anything, then executes valid steps sequentially. Accepts inline steps or a plan_file_path JSON array. Surface: revisionable — every applied step emits native OOXML tracked changes.

ParametersJSON Schema
NameRequiredDescriptionDefault
stepsNoJSON array of edit steps. Each step needs step_id, operation, and operation-specific fields.
file_pathYesPath to the DOCX or ODT file.
plan_file_pathNoPath to a .json file containing an array of edit steps. Mutually exclusive with steps.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations indicate destructiveHint=true and readOnlyHint=false. The description adds valuable behavioral details: validates all steps first, rejects conflicts, executes sequentially, and emits tracked changes, going beyond annotation-only information.

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

Conciseness5/5

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

Three concise sentences, each adding essential information without redundancy. Purpose, behavior, and outcome are clearly communicated with no waste.

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

Completeness4/5

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

Covers key aspects: batch operation, validation, conflict handling, and output (tracked changes). However, lacks details on error handling for individual step failures or partial execution, leaving some gaps for complex scenarios.

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

Parameters4/5

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

Schema coverage is 100%, baseline 3. The description adds meaning by explaining that steps can be inline or via plan_file_path, and that each step needs step_id, operation, and operation-specific fields, compensating for the schema's empty items properties.

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

Purpose5/5

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

The description clearly states the tool is for applying multiple edit steps (replace_text, insert_paragraph) to a document in one call, distinguishing it from individual sibling tools like replace_text and insert_paragraph.

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

Usage Guidelines4/5

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

It identifies itself as a 'single-agent front door' for batch edits, implying usage for multiple steps. It mentions validation and conflict rejection but does not explicitly state when not to use it or compare to alternatives beyond the sibling list.

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

clear_formattingA
Destructive

Clear specific run-level formatting (bold, italic, underline, highlight, color, font) from paragraphs. Surface: revisionable — clearing emits a native run-property-change revision (w:rPrChange).

ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathYesPath to the DOCX or ODT file.
clear_boldNoRemove bold formatting.
clear_fontNoRemove font family and size.
clear_colorNoRemove font color.
clear_italicNoRemove italic formatting.
paragraph_idsNoParagraph IDs to clear formatting from. If omitted, clears from all paragraphs.
clear_highlightNoRemove highlight formatting.
clear_underlineNoRemove underline formatting.

TDQS

A4/5.0
Behavior4/5

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

Annotations indicate destructiveHint=true, but the description adds important context: the operation is revisionable and emits a native run-property-change revision. This goes beyond annotations and helps the agent understand the side effects.

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

Conciseness5/5

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

Two concise sentences with no wasted words. The first sentence states the core function, the second adds behavioral context. Well-structured and efficient.

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

Completeness4/5

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

With 8 parameters (1 required) and no output schema, the description covers purpose, behavior (revisionable), and scope (paragraphs). It could mention error conditions or file modification details, but the combination with schema annotations is fairly complete.

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

Parameters3/5

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

The schema has 100% coverage with descriptions for all parameters. The description repeats the list of formatting types but adds context about run-level and revisions. Since schema coverage is high, baseline is 3; the description offers moderate added value.

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

Purpose5/5

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

The description clearly states the tool clears specific run-level formatting (bold, italic, underline, highlight, color, font) from paragraphs, which is a specific verb+resource. It distinguishes from sibling tools like format_layout which likely deals with layout-level formatting.

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

Usage Guidelines3/5

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

The description implies usage for clearing run-level formatting but does not explicitly state when to use this tool versus alternatives (e.g., format_layout). No exclusions or when-not-to-use guidance is provided.

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

close_fileA
Destructive

Close an open file session, or close all sessions with explicit confirmation. Supports DOCX, ODT, and Google Docs.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmNo
clear_allNo
file_pathNoPath to the DOCX or ODT file.
google_doc_idNoGoogle Doc ID or URL (alternative to file_path). Extract from URL: docs.google.com/document/d/{ID}/edit

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true. The description adds supported file formats but does not disclose what happens to unsaved changes or other side effects of closing. Some additional behavioral context would be beneficial.

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

Conciseness4/5

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

The description is a single sentence that efficiently conveys the core purpose. It is front-loaded and contains no unnecessary words, though a bit more structure (e.g., separate lines for usage) could improve readability.

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

Completeness3/5

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

Given no output schema and the destructive nature, the description is minimal. It does not explain return values, side effects, or parameter interactions. For a closing tool, more detail on what happens after closing (e.g., saving) would improve completeness.

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

Parameters2/5

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

Schema coverage is 50%, but the description does not explain any parameter semantics. It does not clarify the roles of clear_all and confirm (which lack schema descriptions), nor does it add meaning beyond the schema for file_path and google_doc_id.

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

Purpose5/5

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

The description uses a specific verb ('close') and resource ('open file session'), and distinguishes from sibling tools like read_file, save, and batch_edit by clearly indicating this is about closing sessions. It also specifies supported file formats.

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

Usage Guidelines3/5

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

The description implies usage when an open file session exists and mentions explicit confirmation for closing all sessions, but provides no when-not guidance or alternatives. It lacks details on prerequisites or comparison to other closing scenarios.

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

compare_documentsB
Read-only

Compare two documents and produce a tracked-changes output document. Provide original_file_path + revised_file_path for standalone comparison, or file_path to compare session edits against the original. DOCX and ODF (.odt) support both modes. DOCX stats count insertions/deletions as contiguous ranges, expose atom totals as insertedAtoms/deletedAtoms, and report formatChanges separately from modifiedParagraphs. ODF compares at inline granularity (a modified paragraph is marked up in place — only the changed spans are struck or inserted).

ParametersJSON Schema
NameRequiredDescriptionDefault
authorNoAuthor name for track changes. Default: 'Comparison' (DOCX) or the configured AI author (ODF).
engineNoComparison engine (DOCX only). Default: 'auto'.
file_pathNoPath to the DOCX or ODT file.
revised_file_pathNoPath to the revised DOCX or .odt file.
original_file_pathNoPath to the original DOCX or .odt file.
save_to_local_pathYesPath to save the tracked-changes output (DOCX or .odt).

TDQS

B3.3/5.0
Behavior1/5

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

The description states the tool creates a tracked-changes output file, but annotations include readOnlyHint=true, which indicates the tool should not modify any state. Creating a file is a state modification, constituting a contradiction. The description does not clarify this inconsistency or disclose other behavioral traits like permissions or error handling.

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

Conciseness4/5

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

The description is concise but packed with detail; it front-loads the purpose then segments into mode explanations and format-specific notes. A minor improvement would be to move granular stats to parameter descriptions, but overall it is well-structured.

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

Completeness2/5

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

The description explains input modes and output behavior, but lacks information on the tool's return value (e.g., success message/filename). With no output schema, this is a gap. It also does not clarify handling of conflicting parameters (e.g., providing both original/revised and file_path).

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

Parameters4/5

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

Schema coverage is 100% with parameter descriptions, but the description adds significant value: it explains the two comparison modes, file-type behaviors (e.g., DOCX atom statistics, ODF inline granularity), and default author/engine values. This enriches parameter understanding beyond the schema alone.

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

Purpose5/5

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

The description clearly states the tool's purpose: comparing two documents and producing a tracked-changes output. It explains two modes (standalone and session edit) and supported formats (DOCX, ODF), distinguishing it from siblings like 'extract_revisions' or 'accept_changes'.

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

Usage Guidelines3/5

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

The description implies when to use the tool (for comparing documents) but does not explicitly state when not to use it or mention alternatives among siblings. It contrasts modes but lacks exclusionary guidance, such as 'use extract_revisions for existing tracked changes'.

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

convert_to_odtA

Convert a DOCX document to OpenDocument Text (.odt) using the native model-to-model converter (no LibreOffice involved). Writes the .odt (default: source path with the .odt extension), validates ODF packaging safety before writing, and returns the output path plus a lossiness summary itemizing every downgraded construct. Conversion is semantic and intentionally lossy: text, headings, bold/italic/underline, hyperlinks, lists, and tables are mapped; richer styling, tracked changes, comments, and headers/footers are not. DOCX in, ODT out — Google Docs and .odt inputs are not supported.

ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathNoPath to the DOCX or ODT file.
output_pathNoWhere to write the .odt. Defaults to the source path with the .odt extension.
allow_overwriteNoOverwrite output_path if it already exists. Default: false.

TDQS

A4.5/5.0
Behavior5/5

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

The description details the write operation, safety validation, lossy nature with specific mapped and unmapped constructs, and return values. This goes well beyond the annotations, which only indicate non-read-only and non-destructive.

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

Conciseness5/5

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

The description is concise with three sentences, each adding essential information. It is front-loaded with the core action and avoids redundancy.

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

Completeness5/5

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

The description fully covers inputs, output, processing details, limitations, and return value structure. Without an output schema, it adequately explains what the tool returns.

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

Parameters3/5

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

Schema coverage is 100% and description adds no extra parameter meaning beyond what the schema provides. Baseline of 3 is appropriate.

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

Purpose5/5

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

The description precisely states the tool converts DOCX to ODT using a native converter, lists what is preserved and lost, and notes unsupported inputs. It clearly distinguishes from sibling tools like 'export' by specifying the conversion direction and limitations.

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

Usage Guidelines4/5

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

The description explicitly states the input requirement (DOCX) and output format (ODT), and lists unsupported features. However, it does not explicitly state when to avoid this tool or suggest alternatives among siblings.

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

delete_commentA
Destructive

Delete a comment and all its threaded replies from the document. Cascade-deletes all descendants. Surface: revisionable + package-mutation — the body-story comment reference removal is tracked (w:del), while comment/reply text cleanup is recorded in the save report non-revision change manifest.

ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathYesPath to the DOCX or ODT file.
comment_idYesComment ID to delete.

TDQS

A3.8/5.0
Behavior4/5

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

Annotations indicate destructiveHint=true. The description adds valuable behavioral details: cascade-deletes all descendants and specifics about tracking (w:del, non-revision change manifest). This goes beyond the annotations, disclosing side effects and recording behavior.

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

Conciseness4/5

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

Two sentences, each serving a purpose. The first sentence is a clear action, the second adds technical behavioral context. Front-loaded but the second sentence may be dense; still efficient with no wasted words.

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

Completeness3/5

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

For a simple delete tool with 2 parameters and no output schema, the description covers the core action and side effects. However, it lacks information on error conditions, prerequisites (e.g., file must be open), or what the response looks like, leaving some gaps.

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

Parameters3/5

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

Schema coverage is 100% with descriptions for both parameters. The tool description does not add extra meaning or syntax details beyond the schema, meeting the baseline for high coverage.

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

Purpose5/5

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

The description clearly states the action ('Delete a comment and all its threaded replies') and identifies the resource (comment). It distinguishes this tool from siblings like add_comment or get_comments by specifying deletion of threaded replies.

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

Usage Guidelines3/5

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

The description implies use for deleting comments but does not explicitly state when to use or avoid this tool, nor does it mention alternatives (e.g., delete_footnote). Some context is given but lacks explicit guidance.

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

delete_footnoteA
Destructive

Delete a footnote and its reference from the document. Surface: revisionable — the reference and note text are removed as native OOXML tracked deletions (w:del).

ParametersJSON Schema
NameRequiredDescriptionDefault
note_idYesFootnote ID to delete.
file_pathYesPath to the DOCX or ODT file.

TDQS

A4/5.0
Behavior4/5

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

Annotations already indicate destructiveHint=true. The description adds valuable detail: that the deletion is revisionable and performed as native OOXML tracked deletions (w:del), providing transparency beyond the annotations. No contradiction.

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

Conciseness5/5

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

Two concise sentences, front-loaded with the primary action. Every sentence adds value: purpose and technical detail. No wasted words.

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

Completeness4/5

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

For a simple tool with 2 required parameters and no output schema, the description is complete. It explains the core behavior and tracked changes mechanism. Could optionally mention that note_id should come from get_footnotes, but not necessary for completeness.

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

Parameters3/5

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

Schema coverage is 100% (both parameters described in schema). The description adds no additional meaning beyond the schema, but the schema itself is clear. Baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool deletes a footnote and its reference, distinguishing it from sibling tools like add_footnote and update_footnote. The verb 'delete' combined with the resource 'footnote' gives unambiguous purpose.

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

Usage Guidelines3/5

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

No explicit when-to-use or when-not-to-use guidance is provided, nor are alternatives mentioned. However, the context from sibling tools makes it clear this is the deletion tool, providing some implicit guidance. Could be improved by noting prerequisites or limitations.

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

exportA

Export a document to a portable rendering (Markdown, semantic HTML, or plain text). Writes an output file (default: source path with the format extension, e.g. .md, .html, or .txt) and returns its path, byte count, and the rendered content (under content). Intentionally lossy (no round-trip); HTML is the semantic tier, not pixel-faithful. DOCX only — Google Docs is not supported.

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNoOutput format: 'markdown' (default, writes .md), 'html' (writes .html), or 'plaintext' (writes .txt).
file_pathNoPath to the DOCX or ODT file.
output_pathNoWhere to write the rendering. Defaults to the source path with the format extension.
allow_overwriteNoOverwrite output_path if it already exists. Default: false.
include_markdownNoInclude the rendered content (under `content`) in the response. Default: true; set false for large documents.

TDQS

A4.7/5.0
Behavior5/5

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

Beyond annotations (both false), the description details output file writing, return values (path, byte count, content), lossy behavior, and semantic HTML nature. This fully discloses behavioral traits.

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

Conciseness5/5

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

Three sentences, front-loaded with main action, no wasted words. Every sentence provides essential information: purpose, output behavior, and limitations.

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

Completeness5/5

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

Given 5 parameters and no output schema, the description covers all needed context: formats, output file behavior, return values, and constraints (DOCX only, lossy). It is fully sufficient for agent understanding.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3. The description adds value by explaining default output path behavior and the return of rendered content under 'content', which clarifies the include_markdown parameter's effect.

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

Purpose5/5

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

The description clearly states the tool exports a document to Markdown, HTML, or plain text. It distinguishes from siblings like convert_to_odt by focusing on rendering formats, and specifies DOCX-only, providing a specific verb and resource.

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

Usage Guidelines4/5

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

The description gives clear context (DOCX only, not Google Docs) but does not explicitly state when to use this tool over alternatives. However, siblings are distinct, so it is sufficient for guiding usage.

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

extract_revisionsA
Read-only

Extract tracked changes as structured JSON with before/after text per paragraph, revision details, and comments. Supports pagination via offset and limit. Read-only - does not modify the document.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax entries per page (1-500). Default: 50.
offsetNo0-based offset for pagination. Default: 0.
file_pathYesPath to the DOCX or ODT file.

TDQS

A4/5.0
Behavior4/5

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

The description adds that the tool is read-only and does not modify the document, which aligns with annotations (readOnlyHint=true). It also describes the output format and pagination behavior, providing helpful context beyond the annotations.

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

Conciseness5/5

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

Two concise sentences: first explains the core function, second adds pagination and read-only status. No wasted words and front-loads key information.

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

Completeness4/5

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

Given no output schema, the description provides a good overview of the return format. Parameter details are fully covered in schema. It lacks specifics about error handling or file accessibility, but overall sufficient for selection and invocation.

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

Parameters3/5

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

Schema description coverage is 100%, and the schema already provides detailed parameter descriptions (offset default 0, limit default 50, max 500). The description only adds that pagination is supported, offering minimal extra value.

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

Purpose5/5

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

The description clearly states it extracts tracked changes as structured JSON with specific details (before/after text, revisions, comments) and supports pagination. This distinguishes it from sibling tools like accept_changes or has_tracked_changes.

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

Usage Guidelines3/5

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

The description mentions pagination support and read-only nature, which helps in understanding usage context. However, it does not explicitly state when to use this tool versus alternatives (e.g., for retrieving revision data vs. accepting changes).

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

format_layoutA
Destructive

Apply layout controls (paragraph spacing, table row height, cell padding). Google Docs supports paragraph spacing only. Surface: revisionable — DOCX geometry edits emit native property-change revisions (w:pPrChange/w:trPrChange/w:tcPrChange).

ParametersJSON Schema
NameRequiredDescriptionDefault
strictNo
file_pathNoPath to the DOCX or ODT file.
row_heightNo
cell_paddingNo
google_doc_idNoGoogle Doc ID or URL (alternative to file_path). Extract from URL: docs.google.com/document/d/{ID}/edit
paragraph_spacingNo

TDQS

A3.9/5.0
Behavior5/5

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

The description goes beyond annotations by detailing that edits are revisionable (emit native property-change revisions) and notes platform-specific behavior. Annotations already indicate destructiveHint=true, and the description adds valuable context about tracked changes.

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

Conciseness5/5

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

The description is extremely concise: two sentences that front-load the purpose and then add key behavioral context. Every sentence adds value.

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

Completeness2/5

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

Given the tool's complexity (6 parameters with nested objects, no output schema), the description lacks detail on how to use parameters (e.g., row_indexes, cell_indexes) and the meaning of 'strict'. It does not cover return values or error conditions.

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

Parameters2/5

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

Schema coverage is only 33% (only file_path and google_doc_id have descriptions). The description does not explain the semantics of parameters like 'strict', 'row_height', 'cell_padding', or 'paragraph_spacing' beyond naming the categories. An agent would need more detail to set these correctly.

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

Purpose5/5

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

The description clearly states the tool applies layout controls (paragraph spacing, table row height, cell padding). It differentiates from sibling tools like 'clear_formatting' by focusing on specific layout properties.

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

Usage Guidelines3/5

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

The mention of 'Google Docs supports paragraph spacing only' provides some context about when to use which parameter, but there is no explicit guidance on when to use this tool versus alternatives like 'clear_formatting' or 'insert_paragraph'. Usage context is implied but not fully elaborated.

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

get_commentsA
Read-only

Get all comments from the document with IDs, authors, dates, text, and anchored paragraph IDs. Range-anchored DOCX comments also expose optional end_paragraph_id, start_run_index, start_char_offset, end_run_index, and end_char_offset fields describing the covered span. Includes threaded replies (DOCX). Supports DOCX and ODT. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathYesPath to the DOCX or ODT file.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already indicate readOnlyHint=true and destructiveHint=false, so the description's 'Read-only' is consistent. It adds value by listing specific return fields and mentioning threaded replies and optional range-anchored fields, which go beyond what annotations provide. No contradictions are present.

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

Conciseness5/5

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

The description consists of two sentences that front-load the core purpose ('Get all comments from the document') and then expand with relevant details. Every sentence adds value without redundancy. It is efficiently structured for quick parsing by an AI agent.

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

Completeness5/5

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

Given the tool has a single parameter, 100% schema coverage, and no output schema, the description sufficiently covers the return values (IDs, authors, dates, text, anchored paragraph IDs, and optional span fields). The mention of threaded replies and supported formats completes the picture for a read-only comment retrieval tool.

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

Parameters3/5

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

The input schema has 100% coverage with a single 'file_path' parameter described as 'Path to the DOCX or ODT file.' The description does not add additional meaning beyond what the schema already provides, so a baseline score of 3 is appropriate.

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

Purpose5/5

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

The description begins with a clear verb+resource combination ('Get all comments from the document') and lists specific fields (IDs, authors, dates, text, anchored paragraph IDs). It distinguishes itself from sibling tools like add_comment or delete_comment by focusing on retrieval. The mention of range-anchored DOCX comments and threaded replies adds specificity without ambiguity.

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

Usage Guidelines4/5

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

The description states it supports DOCX and ODT formats and is read-only, which implicitly guides when to use (read scenarios) versus write operations (e.g., add_comment, delete_comment). It does not explicitly exclude use cases or list alternatives, but the context of sibling tools provides sufficient differentiation.

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

get_document_outlineA
Read-only

Get a compact structural map of a document's headings (DOCX only). Returns one entry per heading paragraph with its text, outline level, source, and stable _bk_* paragraph_id — so an agent can read the cheap outline first, then scope a targeted read_file/replace_text to the right section instead of scanning the whole body. Style-based (Word HeadingN) headings only by default; set include_heuristic_headings=true to also include heuristic titles/run-in headers. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNoOutput format: 'json' (default, structured outline array) or 'markdown' (indented ATX outline under `content`).
file_pathNoPath to the DOCX file.
include_heuristic_headingsNoWhen true, also include heuristically-detected headings (manual title / run-in / centered-caps) alongside Word HeadingN styles. Default: false (style-based only).

TDQS

A5/5.0
Behavior5/5

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

Description adds value beyond annotations by detailing that it returns one entry per heading with text, outline level, source, and paragraph_id, and explains the difference between style-based and heuristic headings. Annotations already declare readOnlyHint=true and destructiveHint=false; description reinforces read-only nature without contradiction.

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

Conciseness5/5

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

Two sentences, front-loaded with purpose, no fluff. Every sentence earns its place, efficiently communicating key information.

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

Completeness5/5

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

Despite lacking an output schema, the description fully explains the return structure and parameter effects. Covers all relevant behavioral aspects for a read-only outline tool.

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

Parameters5/5

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

All three parameters (format, file_path, include_heuristic_headings) are explained in the description with additional context on default values and behavior, complementing the schema coverage of 100%.

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

Purpose5/5

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

Description specifies verb 'Get', resource 'compact structural map of a document's headings', and includes domain 'DOCX only'. Distinguishes from siblings like read_file and replace_text by targeting outlines specifically.

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

Usage Guidelines5/5

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

Explicitly tells when to use: 'read the cheap outline first, then scope a targeted read_file/replace_text'. Also states 'DOCX only' and explains the default behavior for style-based vs heuristic headings, providing clear context for agent decision-making.

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

get_file_statusA
Read-only

Get file/session metadata including edit count, normalization stats, and cache info. Supports DOCX, ODT, and Google Docs.

ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathNoPath to the DOCX or ODT file.
google_doc_idNoGoogle Doc ID or URL (alternative to file_path). Extract from URL: docs.google.com/document/d/{ID}/edit

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, indicating safe read operation. Description adds minimal context about return data (edit count, normalization stats, cache info) but does not elaborate on side effects or limitations.

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

Conciseness5/5

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

Single, focused sentence with no extraneous information. Front-loaded with core purpose.

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

Completeness4/5

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

Given no output schema, description adequately hints at return values. Combined with strong annotations, it provides sufficient context for a simple metadata retrieval tool.

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

Parameters3/5

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

Input schema has 100% coverage with clear descriptions for both parameters. Description mentions supported formats (DOCX, ODT, Google Docs) which aligns with schema, but adds no additional semantic detail.

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

Purpose5/5

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

Description clearly states 'Get file/session metadata' with specific examples (edit count, normalization stats, cache info), and mentions supported formats. This distinguishes it from sibling tools like get_comments or get_footnotes.

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

Usage Guidelines2/5

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

No explicit guidance on when to use this tool vs alternatives. While it lists supported file types, it does not specify contexts where get_file_status is preferred over other metadata tools.

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

get_footnotesA
Read-only

Get all footnotes from the document with IDs, display numbers, text, and anchored paragraph IDs. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathYesPath to the DOCX or ODT file.

TDQS

A4/5.0
Behavior3/5

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

Description adds 'Read-only' and lists returned data (IDs, display numbers, text, anchored paragraph IDs). Annotations already provide readOnlyHint=true and destructiveHint=false, so description adds minor context beyond annotations but does not contradict.

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

Conciseness5/5

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

Single sentence efficiently conveys purpose, scope, and data returned with no wasted words. Front-loaded with key action 'Get all footnotes'.

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

Completeness4/5

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

For a simple read-only tool with one parameter and no output schema, description covers returned data and read-only nature. Lacks error handling or prerequisite info, but is sufficient for basic use.

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

Parameters3/5

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

Schema has 100% coverage with file_path fully described. Description adds no additional parameter information beyond schema, meeting baseline expectation.

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

Purpose5/5

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

Description explicitly states 'Get all footnotes from the document' with specific attributes (IDs, display numbers, text, anchored paragraph IDs), clearly distinguishing it from sibling tools like add_footnote, delete_footnote, update_footnote.

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

Usage Guidelines4/5

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

Description states 'Read-only,' implying no modifications, but does not explicitly contrast with alternatives or provide when-not-to-use scenarios. Lacks explicit guidance relative to siblings, but the read-only nature is clear.

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

grepA
Read-only

Search paragraphs with regex. Use file_path for session-based search, file_paths for stateless multi-file search, or google_doc_id for Google Docs. ODT supported via file_path (single-file) only.

ParametersJSON Schema
NameRequiredDescriptionDefault
patternNo
patternsNo
file_pathNoPath to the DOCX or ODT file.
file_pathsNoMultiple file paths for stateless multi-file search. No session created.
search_xmlNoWhen true, search raw XML (word/document.xml) instead of paragraph text.
whole_wordNo
max_resultsNo
context_charsNo
google_doc_idNoGoogle Doc ID or URL (alternative to file_path). Extract from URL: docs.google.com/document/d/{ID}/edit
case_sensitiveNo
include_contextNoWhen false, skip document view context (list labels, headers) for faster results. Default: true.
dedupe_by_paragraphNo

TDQS

A3.9/5.0
Behavior4/5

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

Annotations declare readOnlyHint and destructiveHint, confirming safety. The description adds behavioral context: it searches paragraphs with regex, specifies input modes, and notes ODT-only support via file_path. No contradictions. Additional details about regex flags or output format would improve transparency.

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

Conciseness5/5

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

The description is concise: two sentences that front-load the core action ('Search paragraphs with regex') and efficiently convey key usage distinctions. No redundant or unnecessary text.

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

Completeness2/5

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

Given the tool's complexity (12 parameters, no output schema, low schema coverage), the description is insufficient. It does not explain return values (e.g., matching paragraphs), result limits, or behavior of regex flags, leaving significant gaps for an agent to use the tool correctly.

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

Parameters2/5

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

Schema description coverage is low (42%), and the description adds meaning to only the file/file-path parameters (file_path, file_paths, google_doc_id) and ODT support. The remaining 7 parameters (e.g., pattern, case_sensitive, max_results) lack description in both schema and tool description, leaving their semantics unclear.

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

Purpose5/5

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

The description clearly states the tool's purpose: 'Search paragraphs with regex.' It specifies different input modes (file_path, file_paths, google_doc_id) and highlights the ODT limitation, effectively distinguishing it from sibling tools like read_file or replace_text.

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

Usage Guidelines4/5

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

The description provides clear guidance on when to use different input parameters (session-based vs stateless multi-file vs Google Docs) and notes ODT support limitations. However, it lacks explicit guidance on when not to use this tool or alternatives among siblings.

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

has_tracked_changesA
Read-only

Check whether the document body contains tracked-change markers (insertions, deletions, moves, and property-change records). Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathYesPath to the DOCX or ODT file.

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already provide readOnlyHint=true and destructiveHint=false. The description adds which marker types are checked but does not describe the return value or error behavior. Since no output schema exists, this is a minor gap.

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

Conciseness5/5

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

Single sentence, front-loaded with purpose, no redundant information. Highly concise and efficient.

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

Completeness3/5

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

For a simple boolean check tool, the description is adequate but omits return type and error cases. Given no output schema, agents may not know if the result is a boolean or something else. However, the parameter is well-documented.

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

Parameters3/5

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

The schema has 100% coverage with a clear description for file_path. The tool description does not add anything beyond that, so baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool checks for tracked-change markers with specific types (insertions, deletions, moves, property-change records) and declares it read-only. This distinguishes it from sibling tools like accept_changes or extract_revisions.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives. For example, it doesn't suggest using it before accept_changes or that it's lighter than extract_revisions. The purpose implies usage but is not explicit.

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

insert_paragraphA
Destructive

Insert a paragraph before/after an anchor paragraph by paragraph id. Supports DOCX, ODT, and Google Docs. (ODT paragraph ids are positional and shift after insertion — re-read before further edits.) Surface: revisionable — DOCX insertions emit native OOXML tracked changes.

ParametersJSON Schema
NameRequiredDescriptionDefault
positionNo
file_pathNoPath to the DOCX or ODT file.
new_stringYes
instructionYes
google_doc_idNoGoogle Doc ID or URL (alternative to file_path). Extract from URL: docs.google.com/document/d/{ID}/edit
style_source_idNoParagraph _bk_* ID to clone formatting (pPr and template run) from instead of the positional anchor. Falls back to anchor with a warning if not found.
positional_anchor_node_idYes

TDQS

A4/5.0
Behavior4/5

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

Annotations already indicate this is not read-only (readOnlyHint=false) and is destructive (destructiveHint=true). The description adds context about ODT positional ID behavior and DOCX tracked changes, which goes beyond annotations. No contradictions.

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

Conciseness4/5

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

The description is concise with two sentences. The first sentence covers the main purpose and mechanism. The second sentence adds important warnings and surface behavior. While efficient, it could be improved with line breaks or bullet points for readability.

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

Completeness3/5

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

With 7 parameters, no output schema, and three supported formats, the description covers key constraints (ODT ID shifting, DOCX tracked changes) but leaves parameter semantics vague. It is moderately complete but could include more details on parameter usage and return behavior.

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

Parameters3/5

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

Schema description coverage is 43%, with descriptions only for file_path, google_doc_id, and style_source_id. Required parameters (positional_anchor_node_id, new_string, instruction) lack schema descriptions. The description clarifies positional_anchor_node_id via 'anchor paragraph by paragraph id' but does not explain new_string or instruction. The style_source_id parameter is explained in schema, so the description adds limited value here.

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

Purpose5/5

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

The description clearly states the action (Insert), the resource (paragraph), the positioning mechanism (before/after an anchor paragraph by paragraph id), and the supported formats (DOCX, ODT, Google Docs). This distinguishes it from sibling tools like add_comment or replace_text.

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

Usage Guidelines4/5

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

The description specifies supported document types and gives a critical warning about ODT paragraph IDs being positional and shifting after insertion, advising re-read before further edits. It also mentions that DOCX insertions emit tracked changes. However, it does not explicitly state when to use this tool versus alternatives, earning a 4 instead of 5.

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

read_fileA
Read-only

Read document content (DOCX, ODT, or Google Doc). Output is token-limited (~14k tokens) by default with pagination metadata (has_more, next_offset). Use offset/limit to paginate.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax paragraphs to return. When omitted, output is token-limited to ~14k tokens with pagination.
formatNo
offsetNo1-based paragraph offset for pagination. Negative values count from end.
node_idsNo
file_pathNoPath to the DOCX or ODT file.
google_doc_idNoGoogle Doc ID or URL (alternative to file_path). Extract from URL: docs.google.com/document/d/{ID}/edit
show_formattingNoWhen true (default), shows inline formatting tags (<b>, <i>, <u>, <highlighting>, <a>). When false, emits plain text with no inline tags.
comment_renderingNoHow to render comments in read_file output. Use "paragraph_notes" (default) for paragraph-local comment threads, "inline_markers" to add `[cm-start:N]`/`[cm-end:N]` milestones in TOON output (combined with the thread blocks), "endnotes" to collect threaded comments into a trailing #COMMENTS block in TOON output, or "none" for the legacy output with no comment rendering.
include_footnotesNoWhen true and format="json", attach a `footnotes` array ({id, display_number, text}) to each paragraph node for the footnotes anchored to it. Windowed to the returned slice (a paginated walk returns each footnote exactly once) and counted toward the read token budget. Footnotes with an empty body or no anchored paragraph are excluded — use get_footnotes for the authoritative full enumeration. No effect on TOON/simple output. Ignored for Google Docs and ODT. Default: false.
include_fingerprintNoWhen true and format="json", include a portable content_fingerprint ("sha256:nfkc:<32hex>") on each paragraph. Read-only metadata derived from the paragraph's normalized visible text; NOT an edit anchor. Edit tools accept only `_bk_*` IDs. No effect on TOON/simple output. Ignored for Google Docs and ODT.
include_fingerprint_ordinalNoWhen true together with include_fingerprint and format="json", add duplicate-disambiguation metadata to each paragraph: `content_fingerprint_ordinal` (1-based document-order position among paragraphs sharing the same content_fingerprint), `content_fingerprint_count_in_document` (total paragraphs sharing it, document-wide even under pagination), and `portable_paragraph_ref` ("<content_fingerprint>#<ordinal>"). Read-only disambiguator, NOT an edit anchor; reordering duplicates may change ordinals. No effect without include_fingerprint, and no effect on TOON/simple output. Ignored for Google Docs and ODT. Default: false.

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false. Description adds pagination behavior (token limit, has_more, next_offset), which is useful context beyond the annotations.

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

Conciseness5/5

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

Two sentences covering core functionality and pagination. Extremely efficient, no unnecessary text.

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

Completeness3/5

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

Covers basic purpose and pagination, but doesn't guide on parameter combinations (e.g., format selection, comment rendering). Schema fills many gaps, but description could offer more context for a complex tool.

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

Parameters3/5

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

Schema description coverage is 82%, so most parameters are well-documented in the schema. The description briefly mentions offset/limit for pagination, reinforcing schema details but adding limited new value.

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

Purpose4/5

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

Clearly states 'Read document content' and specifies supported file types (DOCX, ODT, Google Doc). The purpose is distinct from sibling tools, though no explicit differentiation is made.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives (e.g., get_comments, grep). Does not mention when not to use or contextual scenarios.

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

reject_ai_editsA
Destructive

Selectively reject tracked changes by revision id or author (restoring their pre-edit state), leaving all other revisions byte-untouched. Symmetric to accept_ai_edits: provide revision_ids or author, sweeps document.xml and supported side-story parts, and hard-errors on an ambiguous overlap (code AMBIGUOUS_REVISION_OVERLAP with a structured overlaps list) unless normalize_first is set.

ParametersJSON Schema
NameRequiredDescriptionDefault
authorNoReject every revision authored by this w:author. Convenience alternative to revision_ids.
file_pathYesPath to the DOCX or ODT file.
revision_idsNow:id values of the revisions to reject. Mutually preferred over author.
normalize_firstNoAttempt best-effort resolution on an ambiguous (overlapping) revision graph instead of hard-erroring. No byte-identical guarantee. Default: false.

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already indicate destructiveHint=true. The description adds beyond that by detailing the scope ('sweeps document.xml and supported side-story parts'), the guarantee of leaving other revisions byte-untouched, and the error behavior with a specific error code and structured response. This enriches the agent's understanding of 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.

Conciseness4/5

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

The description is a single paragraph that fronts the core action and constraints, then details error handling and options. It is dense but efficient. Minor room for improvement by breaking into sentences for readability, but no extraneous content.

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

Completeness4/5

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

Given no output schema and 4 parameters, the description covers the core behavior, error states, and the normalize_first escape hatch. It does not describe return values, but incomplete for a mutation tool with no output schema. Acceptable given the detail on error handling.

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

Parameters3/5

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

Schema coverage is 100%, so the baseline is 3. The description does not add meaning beyond the schema for parameters; it only restates that revision_ids or author can be used, which is already in the schema. No additional syntax, constraints, or examples are provided.

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

Purpose5/5

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

The description uses a specific verb ('reject') and resource ('tracked changes'), clearly stating it restores pre-edit state. It explicitly names the sibling 'accept_ai_edits' as symmetric, distinguishing the tool's purpose from similar operations.

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

Usage Guidelines4/5

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

The description provides clear context: it is the symmetric counterpart to 'accept_ai_edits', and explains the error handling for ambiguous overlaps with an option to normalize. However, it does not explicitly state when NOT to use this tool or offer alternative tools for different scenarios.

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

replace_textA
Destructive

Replace text in a paragraph by provider paragraph id, preserving formatting where supported. Supports DOCX, ODT, and Google Docs. Surface: revisionable — DOCX edits emit native OOXML tracked changes (w:ins/w:del/w:rPrChange).

ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathNoPath to the DOCX or ODT file.
new_stringYes
old_stringYes
instructionYes
google_doc_idNoGoogle Doc ID or URL (alternative to file_path). Extract from URL: docs.google.com/document/d/{ID}/edit
normalize_firstNoMerge format-identical adjacent runs before searching. Useful when text is fragmented across runs.
target_paragraph_idYes

TDQS

A3.7/5.0
Behavior4/5

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

Beyond the annotations (destructiveHint=true, readOnlyHint=false), the description adds that for DOCX, edits emit native OOXML tracked changes. This is valuable behavioral context. However, it doesn't detail what happens for ODT or Google Docs in terms of revision tracking.

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

Conciseness4/5

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

The description is three sentences, front-loaded with the main action and supported formats. It is efficient with no unnecessary words, though the 'Surfacing' clause could be more integrated.

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

Completeness3/5

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

Given the complexity (7 params, destructive, no output schema), the description covers core purpose, format support, and a key behavioral trait. However, it lacks information on return values, error conditions, or behavior for non-DOCX formats. With no output schema, this leaves gaps.

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

Parameters2/5

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

Only 43% of parameters have schema descriptions, and the tool description adds little beyond the schema. The 'normalize_first' and 'instruction' parameters are not elaborated in the description. The required 'target_paragraph_id' lacks any description, even though the tool description mentions 'by provider paragraph id'.

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

Purpose5/5

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

The description clearly states the action ('Replace text in a paragraph by provider paragraph id'), specifies supported formats (DOCX, ODT, Google Docs), and emphasizes formatting preservation. This strongly distinguishes it from sibling tools like 'batch_edit' or 'insert_paragraph'.

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

Usage Guidelines3/5

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

The description outlines supported formats but provides no explicit guidance on when to use this tool versus alternatives (e.g., when a simple find/replace is needed vs. batch operations). No 'when not to use' or alternative tool mentions are present.

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

saveC
Destructive

Save document. For DOCX: saves clean and/or tracked changes output. For ODT: saves an .odt package. For Google Docs: checkpoint (default) returns revisionId, or snapshot exports as DOCX. Surface: revisionable — the save report lists both the AI revisions applied and a non-revision change manifest of any package-level mutations (comment/footnote side parts, relationships) that have no tracked-change wrapper.

ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathNoPath to the DOCX or ODT file.
save_formatNo
google_doc_idNoGoogle Doc ID or URL (alternative to file_path). Extract from URL: docs.google.com/document/d/{ID}/edit
allow_overwriteNo
clean_bookmarksNo
save_to_local_pathYes
tracked_changes_authorNo
tracked_changes_engineNoDeprecated and ignored (#126). The redline is now the session's write-time tracked markup, serialized directly — there is no comparison engine to select. Use the compare_documents tool for comparison-based redlines.
fail_on_rebuild_fallbackNoDeprecated and ignored (#126). The default save no longer runs the comparison reconstruction engine, so there is no rebuild fallback to guard against; accepted for backward compatibility only.
tracked_save_to_local_pathNo

TDQS

C2.8/5.0
Behavior3/5

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

Annotations already indicate destructiveHint=true, and the description adds context about save report contents (AI revisions, package-level mutations) and Google Docs checkpoint vs snapshot. However, it does not explicitly discuss side effects like file overwriting or the impact of the 'allow_overwrite' parameter, which would enhance transparency.

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

Conciseness3/5

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

The description is somewhat verbose and jumps between format-specific details. It could be more concise and better structured, but it does front-load the main purpose with 'Save document'. Overall adequate but not streamlined.

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

Completeness2/5

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

Given the complexity of 10 parameters and no output schema, the description is incomplete. It does not explain the return value (save report) in detail, the difference between checkpoint and snapshot for Google Docs in terms of agent expectations, or how to handle tracked changes versus AI revisions. Missing guidance on when to use this tool versus related siblings.

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

Parameters2/5

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

With schema description coverage at only 40%, the description should compensate but fails to explain most parameters. It mentions save_format indirectly via 'clean and/or tracked changes' but does not describe parameters like allow_overwrite, clean_bookmarks, save_to_local_path, or tracked_save_to_local_path. The parameter semantics are largely missing.

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

Purpose4/5

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

The description clearly states 'Save document' and elaborates on specific behaviors for DOCX, ODT, and Google Docs, including different save modes (clean/tracked/both) and checkpoint vs snapshot. However, it does not explicitly differentiate from sibling tools like 'export' or 'accept_ai_edits', which have overlapping functions.

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

Usage Guidelines2/5

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

The description does not provide guidance on when to use this tool versus alternatives such as 'export' or 'close_file'. There is no mention of prerequisites, when-not to use, or explicit alternatives.

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

update_footnoteA
Destructive

Update the text content of an existing footnote. Surface: revisionable — note-text changes emit native OOXML tracked changes (w:ins/w:del) inside the footnote body.

ParametersJSON Schema
NameRequiredDescriptionDefault
note_idYesFootnote ID to update.
new_textYesNew footnote body text.
file_pathYesPath to the DOCX or ODT file.

TDQS

A4/5.0
Behavior4/5

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

The description adds value beyond annotations by disclosing that changes emit native OOXML tracked changes (w:ins/w:del). Annotations already show readOnlyHint=false and destructiveHint=true, but the description clarifies the revisionable nature, enhancing transparency.

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

Conciseness5/5

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

The description is two sentences with no redundant information. First sentence states the core purpose; second sentence adds a critical behavioral detail. Every word is purposeful.

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

Completeness4/5

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

For a tool with three simple parameters, no output schema, and clear annotations, the description provides sufficient context. It covers purpose and a key behavioral trait (tracked changes), making it complete for its complexity.

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

Parameters3/5

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

Schema coverage is 100%, so the description does not need to add much. It provides general context but does not elaborate on parameter formats or constraints beyond what is in the schema. Baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool updates the text content of an existing footnote. It uses a specific verb ('Update') and resource ('footnote'), distinguishing it from siblings like 'add_footnote' and 'delete_footnote'.

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

Usage Guidelines3/5

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

The description implies usage for updating footnote text but does not explicitly state when to use this tool versus alternatives or any prerequisites. The behavioral note about tracked changes is helpful but does not provide direct usage 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. Dates show when Glama detected each change.

  1. 5 tool updatesv0.16.0
    • Addedaccept_ai_edits
    • Addedget_document_outline
    • Changedread_file1 field changed
      • addedInput schema / properties / include_fingerprint_ordinal
        Added value: +{
        +  "description": "When true together with include_fingerprint and format=\"json\", add duplicate-disambiguation metadata to each paragraph: `content_fingerprint_ordinal` (1-based document-order position among paragraphs sharing the same content_fingerprint), `content_fingerprint_count_in_document` (total paragraphs sharing it, document-wide even under pagination), and `portable_paragraph_ref` (\"<content_fingerprint>#<ordinal>\"). Read-only disambiguator, NOT an edit anchor; reordering duplicates may change ordinals. No effect without include_fingerprint, and no effect on TOON/simple output. Ignored for Google Docs and ODT. Default: false.",
        +  "type": "boolean"
        +}
    • Addedreject_ai_edits
    • Changedsave2 fields changed
      • changedInput schema / properties / fail_on_rebuild_fallback / description
        Previous value: -"When true, return an error instead of a destructive output if the comparison engine falls back to rebuild mode (which destroys table structure). Default: false."New value: +"Deprecated and ignored (#126). The default save no longer runs the comparison reconstruction engine, so there is no rebuild fallback to guard against; accepted for backward compatibility only."
      • addedInput schema / properties / tracked_changes_engine / description
        Added value: +"Deprecated and ignored (#126). The redline is now the session's write-time tracked markup, serialized directly — there is no comparison engine to select. Use the compare_documents tool for comparison-based redlines."
  2. 26 tool updatesv0.12.1
    • Changedaccept_changes1 field changed
      • changedInput schema / properties / file_path / description
        Previous value: -"Path to the DOCX file."New value: +"Path to the DOCX or ODT file."
    • Changedadd_comment1 field changed
      • changedInput schema / properties / file_path / description
        Previous value: -"Path to the DOCX file."New value: +"Path to the DOCX or ODT file."
    • Changedadd_footnote1 field changed
      • changedInput schema / properties / file_path / description
        Previous value: -"Path to the DOCX file."New value: +"Path to the DOCX or ODT file."
    • Removedapply_plan
    • Addedbatch_edit
    • Changedclear_formatting1 field changed
      • changedInput schema / properties / file_path / description
        Previous value: -"Path to the DOCX file."New value: +"Path to the DOCX or ODT file."
    • Changedclose_file1 field changed
      • changedInput schema / properties / file_path / description
        Previous value: -"Path to the DOCX file."New value: +"Path to the DOCX or ODT file."
    • Changedcompare_documents6 fields changed
      • changedInput schema / properties / author / description
        Previous value: -"Author name for track changes. Default: 'Comparison'."New value: +"Author name for track changes. Default: 'Comparison' (DOCX) or the configured AI author (ODF)."
      • changedInput schema / properties / engine / description
        Previous value: -"Comparison engine. Default: 'auto'."New value: +"Comparison engine (DOCX only). Default: 'auto'."
      • changedInput schema / properties / file_path / description
        Previous value: -"Path to the DOCX file."New value: +"Path to the DOCX or ODT file."
      • changedInput schema / properties / original_file_path / description
        Previous value: -"Path to the original DOCX file."New value: +"Path to the original DOCX or .odt file."
      • changedInput schema / properties / revised_file_path / description
        Previous value: -"Path to the revised DOCX file."New value: +"Path to the revised DOCX or .odt file."
      • changedInput schema / properties / save_to_local_path / description
        Previous value: -"Path to save the tracked-changes DOCX output."New value: +"Path to save the tracked-changes output (DOCX or .odt)."
    • Addedconvert_to_odt
    • Changeddelete_comment1 field changed
      • changedInput schema / properties / file_path / description
        Previous value: -"Path to the DOCX file."New value: +"Path to the DOCX or ODT file."
    • Changeddelete_footnote1 field changed
      • changedInput schema / properties / file_path / description
        Previous value: -"Path to the DOCX file."New value: +"Path to the DOCX or ODT file."
    • Addedexport
    • Changedextract_revisions1 field changed
      • changedInput schema / properties / file_path / description
        Previous value: -"Path to the DOCX file."New value: +"Path to the DOCX or ODT file."
    • Changedformat_layout1 field changed
      • changedInput schema / properties / file_path / description
        Previous value: -"Path to the DOCX file."New value: +"Path to the DOCX or ODT file."
    • Changedget_comments1 field changed
      • changedInput schema / properties / file_path / description
        Previous value: -"Path to the DOCX file."New value: +"Path to the DOCX or ODT file."
    • Changedget_file_status1 field changed
      • changedInput schema / properties / file_path / description
        Previous value: -"Path to the DOCX file."New value: +"Path to the DOCX or ODT file."
    • Changedget_footnotes1 field changed
      • changedInput schema / properties / file_path / description
        Previous value: -"Path to the DOCX file."New value: +"Path to the DOCX or ODT file."
    • Changedgrep1 field changed
      • changedInput schema / properties / file_path / description
        Previous value: -"Path to the DOCX file."New value: +"Path to the DOCX or ODT file."
    • Changedhas_tracked_changes1 field changed
      • changedInput schema / properties / file_path / description
        Previous value: -"Path to the DOCX file."New value: +"Path to the DOCX or ODT file."
    • Removedinit_plan
    • Changedinsert_paragraph1 field changed
      • changedInput schema / properties / file_path / description
        Previous value: -"Path to the DOCX file."New value: +"Path to the DOCX or ODT file."
    • Removedmerge_plans
    • Changedread_file4 fields changed
      • addedInput schema / properties / comment_rendering
        Added value: +{
        +  "description": "How to render comments in read_file output. Use \"paragraph_notes\" (default) for paragraph-local comment threads, \"inline_markers\" to add `[cm-start:N]`/`[cm-end:N]` milestones in TOON output (combined with the thread blocks), \"endnotes\" to collect threaded comments into a trailing #COMMENTS block in TOON output, or \"none\" for the legacy output with no comment rendering.",
        +  "enum": [
        +    "none",
        +    "paragraph_notes",
        +    "endnotes",
        +    "inline_markers"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / file_path / description
        Previous value: -"Path to the DOCX file."New value: +"Path to the DOCX or ODT file."
      • addedInput schema / properties / include_fingerprint
        Added value: +{
        +  "description": "When true and format=\"json\", include a portable content_fingerprint (\"sha256:nfkc:<32hex>\") on each paragraph. Read-only metadata derived from the paragraph's normalized visible text; NOT an edit anchor. Edit tools accept only `_bk_*` IDs. No effect on TOON/simple output. Ignored for Google Docs and ODT.",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / include_footnotes
        Added value: +{
        +  "description": "When true and format=\"json\", attach a `footnotes` array ({id, display_number, text}) to each paragraph node for the footnotes anchored to it. Windowed to the returned slice (a paginated walk returns each footnote exactly once) and counted toward the read token budget. Footnotes with an empty body or no anchored paragraph are excluded — use get_footnotes for the authoritative full enumeration. No effect on TOON/simple output. Ignored for Google Docs and ODT. Default: false.",
        +  "type": "boolean"
        +}
    • Changedreplace_text1 field changed
      • changedInput schema / properties / file_path / description
        Previous value: -"Path to the DOCX file."New value: +"Path to the DOCX or ODT file."
    • Changedsave1 field changed
      • changedInput schema / properties / file_path / description
        Previous value: -"Path to the DOCX file."New value: +"Path to the DOCX or ODT file."
    • Changedupdate_footnote1 field changed
      • changedInput schema / properties / file_path / description
        Previous value: -"Path to the DOCX file."New value: +"Path to the DOCX or ODT file."
  3. 23 tool updates
    • First observedaccept_changes
    • First observedadd_comment
    • First observedadd_footnote
    • First observedapply_plan
    • First observedclear_formatting
    • First observedclose_file
    • First observedcompare_documents
    • First observeddelete_comment
    • First observeddelete_footnote
    • First observedextract_revisions
    • First observedformat_layout
    • First observedget_comments
    • First observedget_file_status
    • First observedget_footnotes
    • First observedgrep
    • First observedhas_tracked_changes
    • First observedinit_plan
    • First observedinsert_paragraph
    • First observedmerge_plans
    • First observedread_file
    • First observedreplace_text
    • First observedsave
    • First observedupdate_footnote

TDQS

A3.7/5.0
Disambiguation5/5

Each tool targets a distinct operation or resource: tracked changes, comments, footnotes, formatting, editing, etc. Even similar tools like accept_ai_edits and accept_changes are clearly differentiated by selectivity vs. blanket accept.

Naming Consistency4/5

Most tools follow a clear verb_noun pattern (e.g., add_comment, delete_footnote, replace_text). A few exceptions like batch_edit (modifier-verb) and grep (command-like) are minor deviations.

Tool Count4/5

26 tools is reasonable for a feature-rich document editing server covering tracked changes, comments, footnotes, formatting, conversion, and export. Each tool serves a clear purpose, and the count is well-scoped.

Completeness4/5

The tool set covers core lifecycle operations (create, read, update, delete) for text, comments, footnotes, and tracked changes. Minor gaps like lack of explicit paragraph deletion are workable through replace_text.

Maintenance

ActivityActive
ResponsivenessWithin a week

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/UseJunior/safe-docx'

If you have feedback or need assistance with the MCP directory API, please join our Discord server