Skip to main content
Glama

dsh-r7-office

CI License: MIT Node.js

R7-Office (Р7-Офис) document processing plugin and Model Context Protocol (MCP) server for DeepSeek Harness.

Lets an AI agent inspect, read, create, format, edit and convert DOCX, XLSX, PPTX and PDF documents — through standard OOXML manipulation plus the R7 converter you already have installed — without emulating a mouse or keyboard.

⚠️ Unofficial community project

This is an independent, community-maintained project. It is not affiliated with, endorsed by, sponsored by, or supported by АО «Р7» (R7-Office) or DeepSeek, and it is not an official R7-Office or DeepSeek product.

R7-Office and Р7-Офис are trademarks of their respective owners and are used here only to describe what this software interoperates with.

This repository contains no R7-Office code, binaries or other assets. It detects an R7-Office installation already present on the user's machine and drives it locally. You must install and license R7-Office yourself.


Русская документация: README.ru.md


Related MCP server: docx-mcp-server

What it does

  • Format-preserving editing — replacements and edits keep the original XML styles, fonts, colours and numbering hierarchies. Untouched parts of a document are preserved byte for byte.

  • All four formats — DOCX (headings, paragraphs, lists, tables, page breaks), XLSX (sheets, ranges, values, formulas), PPTX (slides, titles, text frames), PDF (conversion through the local R7 x2t engine).

  • Validation built in — r7_validate checks package integrity before and after a change.

  • Two ways to run — as a native DeepSeek Harness plugin, or as a standalone MCP server over stdio for any MCP client.

  • Live desktop bridge — optionally drives a document the user has open in R7-Office Desktop, over a loopback WebSocket.

Architecture

DeepSeek Harness ──► dsh-r7-office plugin ──┐
                                            ├──► DOCX / XLSX / PPTX / PDF
Any MCP client ────► MCP server (stdio) ────┤
                                            │
R7-Office Desktop ◄── desktop bridge ◄──────┘

Details in docs/architecture.md; design decisions in docs/decisions/.


Requirements

Node.js

>= 20.0.0 to run the plugin and MCP server. >= 22.0.0 to run the full test suite (the bridge and CDP clients use the global WebSocket, which only exists from Node 22).

Runtime dependencies

none — the plugin has zero runtime dependencies

R7-Office Desktop

optional. Needed for r7_convert (→ PDF/HTML), inspect fidelity on exotic documents, and the whole desktop bridge. Without it the pure-OOXML tools still work.

Platform

Windows, Linux and macOS. R7 auto-detection covers the standard install locations of all three; the live desktop bridge is verified on Windows only (see limitations).


Clean install from scratch

These steps assume an empty directory and a machine with Node.js 20+.

# 1. Get the code
git clone https://github.com/blazar-source/dsh-r7-office.git
cd dsh-r7-office

# 2. Install the optional dev dependencies (test-only: the MCP client SDK)
npm install

# 3. Verify the checkout — no R7-Office required for this step
npm test

npm test is the portable suite and needs nothing but Node: unit tests, OOXML round-trip regression tests, file end-to-end workflows, security-policy tests and an external MCP client smoke suite. Tests whose subject is the installed product — R7's own templates, the x2t converter, the desktop editor — skip themselves with a stated reason instead of failing, so a machine that has never seen R7-Office gets a green run and a visible skip count.

$ npm test
# tests 469
# pass 390
# fail 0
# skipped 79

The R7-dependent tests are only meaningful where R7-Office is installed, so they get their own command, which refuses to run without it rather than skipping everything and reporting success:

# Requires an installed R7-Office. Runs the whole suite with nothing skipped,
# then drives the live desktop editor over CDP and saves a document for real.
npm run test:r7

# Just the suite, or just the live editor, if you want them separately:
npm run test:r7 -- --suite
npm run test:r7 -- --live

To see what the portable suite does on a machine without R7 even though you have one installed, set R7_OFFICE_DISABLED=1 — detection then reports no installation, which is exactly the condition CI runs under.

Then verify the integration you actually intend to use:

# R7-Office file pipeline (author → edit → validate → PDF). Skips if R7 is absent.
npm run test:live

# DeepSeek Harness plugin activation. Boots a fresh Harness and asserts the
# 28 r7_* tools reached the tool registry.
npm run test:harness -- --profile web

As a DeepSeek Harness plugin

Install the package directory as a bundle:

# in the DeepSeek Harness UI: plugin_manager → install_bundle
# target: /absolute/path/to/dsh-r7-office

or from the CLI equivalent for your profile:

dsh plugin --profile <profile> add /absolute/path/to/dsh-r7-office

Confirm it activated — a fresh Harness boot prints:

[r7-office] зарегистрировано инструментов: 27 (r7_inspect, r7_read, ...); desktop bridge port=7888, developerMode=false

Note. Add the row either through install_bundle or by hand in the profile's cordis.patch.yml — never both. Two entries with the same r7-office id make the row fail to activate.

The plugin also registers a short usage section into the agent system prompt, so the agent knows the tools and the intended inspect → read → edit → validate → convert order.

As a standalone MCP server

The MCP server speaks line-delimited JSON-RPC 2.0 on stdio.

{
  "mcpServers": {
    "r7-office": {
      "command": "node",
      "args": ["/absolute/path/to/dsh-r7-office/src/mcp/cli.js"]
    }
  }
}

Put that in your client's configuration file (for example claude_desktop_config.json or .cursor/mcp.json). Any stdio MCP client works; interoperability is verified in npm test against the official @modelcontextprotocol/client SDK.

You can also run it by hand:

echo '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' | node src/mcp/cli.js

Tools

Tool

Purpose

r7_inspect

Document outline: headings, paragraphs, tables, sheets, slides, metadata

r7_read

Structured text, Markdown view, or spreadsheet cell ranges

r7_create

New DOCX / XLSX / PPTX. Refuses to replace an existing file unless overwrite: true; every sheets[] entry and name is honoured

r7_edit

Replace, restyle or delete one paragraph by index

r7_replace

Find and replace text, preserving run formatting

r7_insert

Insert paragraphs, headings, bullet items or page breaks

r7_table

Create, inspect or update tables and cells, including merge, borders, shading and column widths

r7_docx_formatting

Read the normalized formatting of every paragraph, run and table cell: style, font, size, colour, alignment, indents, spacing, line spacing, lists

r7_docx_sections

Read and set page size, orientation, margins, columns, page breaks and section breaks

r7_docx_header_footer

List, read, create or retitle headers and footers; page-number fields survive

r7_docx_image

Insert a PNG/JPEG/GIF at a size, keeping the aspect ratio

r7_docx_hyperlink

List, insert, retitle or remove hyperlinks and their relationships

r7_sheet_read

Read values, formulas or the normalized formatting of a sheet or range (e.g. A1:D10)

r7_sheet_write

Write cells or a 2-D matrix, addressed by sheet name or index; dates are stored as real date serials

r7_sheet_format

Format a cell or range: font, background, borders, alignment, wrap, number format (integer, decimal, currency, percent, date, datetime, custom), merge, column width and row height

r7_sheet_add

Add a worksheet to an existing workbook; other sheets are untouched

r7_sheet_formula

Insert or update a formula

r7_slide_read

Read a slide as a normalized structure: every object's id, type, geometry, text, font, fill, stroke, alignment and paragraphs

r7_slide_create

Create a deck, or append a slide built on one of the deck's own layouts, without altering the slides already there

r7_slide_format

Restyle or reposition one existing object in place: font, geometry, fill, border, alignment, lists, spacing, text

r7_slide_edit

Duplicate, move, reorder or delete slides

r7_slide_object

Add or remove an object: shape, text box or PNG/JPEG image

r7_convert

Convert via the R7 x2t engine (PDF, HTML, TXT, DOCX, XLSX, PPTX). PDF conversion uses the font list R7 generates, repairs a malformed ToUnicode count, and refuses to return a PDF with no extractable text instead of silently emitting a blank one. XLSX exports every worksheet by default (allSheets)

r7_validate

Check package integrity and XML health

r7_pdf_inspect

Report whether a PDF really contains text or was produced without fonts: per-font embedded flag and ToUnicode/Cyrillic map counts, text glyphs, empty fill operators, and a text / outlined / mixed verdict. repair: true fixes a malformed ToUnicode count in place

r7_desktop_status

Desktop bridge connection and effective security mode

r7_desktop_selection

Read or replace the selection in the open editor

r7_desktop_exec

Run a safe editor command, or raw DocScript in developer mode

Presentations

A deck is built on the layouts it already has. Adding a slide registers the slide part, its relationship part, its [Content_Types].xml override, its <p:sldId> entry and the presentation relationship; the layout, the master, the theme, the notes and every slide that already existed keep their original bytes. A placeholder written onto a slide stays a placeholder, so it keeps inheriting its geometry and typography from the master.

Reading resolves that inheritance for you: r7_slide_read reports a title slide's 60 pt layout title rather than the presentation's 18 pt default, and reports the position a placeholder inherits from the layout or the master instead of null.

import { PptxEngine } from 'dsh-r7-office/r7'

const pptx = new PptxEngine()

// 1. Read: geometry, text, font, fill, stroke, alignment, paragraphs.
const before = await pptx.readSlide('Deck.pptx', 1)
const title = before.slide.objects.find(o => o.placeholder?.type === 'title')
const body = before.slide.objects.find(o => o.placeholder?.type === 'body')
console.log(title.x, title.width, title.font.family, title.font.size)

// 2. Add a slide on one of the deck's own layouts.
const added = await pptx.addSlide('Deck.pptx', {
  layoutType: 'obj',
  title: 'Ключевые выводы',
  paragraphs: [{ text: 'Выручка +18%', bullet: true }]
})

// 3. Restyle one object. Everything not named keeps its original bytes.
await pptx.formatObject('Deck.pptx', {
  slideIndex: added.slideIndex,
  objectId: title.id,
  font: { family: 'Georgia', size: 32, bold: true, color: '#1F6FEB' },
  alignment: 'center'
})

// 4. Add an object: fill, border, text, font, geometry — all in one call.
await pptx.addShape('Deck.pptx', {
  slideIndex: added.slideIndex,
  shape: 'rounded-rectangle',          // rectangle, ellipse, line, arrow, star, …
  x: '2cm', y: '10cm', width: '9.4cm', height: '8.2cm',
  fill: '#1F6FEB', fillTransparency: 0.1,
  line: '#0B3D91', lineWidth: 2,       // lineWidth is in points
  text: 'KPI 98%',
  font: { family: 'Arial', size: 24, bold: true, color: '#FFFFFF' },
  alignment: 'center', verticalAnchor: 'middle'
})

// 5. Insert and replace a picture.
const image = await pptx.addImage('Deck.pptx', {
  slideIndex: added.slideIndex, imagePath: 'chart.png', x: '4cm', y: '4cm', width: '24cm'
})
await pptx.formatObject('Deck.pptx', {
  slideIndex: added.slideIndex, objectId: image.objectId, imagePath: 'chart-v2.png'
})

// 6. Structure, and a PDF.
await pptx.duplicateSlide('Deck.pptx', 1)
await pptx.moveSlide('Deck.pptx', 2, 0)
await pptx.deleteSlide('Deck.pptx', 4)
console.log((await pptx.validate('Deck.pptx')).valid)
await pptx.toPdf('Deck.pptx', 'Deck.pdf')

Run the full acceptance deck:

node examples/pptx-acceptance.js            # writes into os.tmpdir()/r7-acceptance
node examples/pptx-acceptance.js ./out      # or wherever you like

Measurements. A bare number is EMU (the unit r7_slide_read returns), so a value can be read, adjusted and written back unchanged. "2cm", "1in", "30px" and "24pt" also work. lineWidth is the exception: a number below 100 is read as points, because "border: 1.5" means 1.5 pt to everyone who is not holding a DrawingML specification.

Colours. #RRGGBB, #AARRGGBB and transparency as a separate 0..1 option. transparency on a font and fillTransparency on a fill are deliberately distinct, so a half-transparent caption colour cannot make the shape under it see-through.

Shapes. rectangle, rounded-rectangle, ellipse, circle, line, arrow (and arrow-left/up/down/left-right), triangle, diamond, pentagon, hexagon, octagon, star, chevron, plus, cloud, heart, cylinder, cube, donut, pie, parallelogram, trapezoid — or any DrawingML preset name. pptx.shapeCatalog() lists them all.


Typical agent flow

"Take Report.docx, update section 3, keep the formatting, add a summary table and save a PDF."

r7_inspect → r7_read → r7_replace (keeps formatting) → r7_table
           → r7_validate → r7_convert

Run it yourself:

node examples/report-scenario.js

Library use:

import { DocxEngine, R7Adapter } from 'dsh-r7-office/r7'

const docx = new DocxEngine()
const adapter = new R7Adapter()

await docx.replaceText('Report.docx', 'draft text', 'approved text', {
  outputPath: 'Report_v2.docx'   // the original is never overwritten by default
})

await docx.table('Report_v2.docx', {
  action: 'create',
  rows: [['Objective', 'Timeline', 'Owner'], ['Deploy R7', 'Q2', 'IT']]
})

console.log((await docx.validate('Report_v2.docx')).valid)

await adapter.convert('Report_v2.docx', 'Report_v2.pdf')

Security

r7_desktop_exec can execute code inside the user's open editor. Raw DocScript is therefore disabled by default; only a fixed allowlist of safe argument-driven commands runs in production. Enable raw execution only deliberately:

- id: r7-office
  name: 'dsh-r7-office'
  config:
    developerMode: true        # or export DSH_R7_DEVELOPER_MODE=1

r7_desktop_status always reports the effective mode. The desktop bridge binds to 127.0.0.1 only.

See SECURITY.md for the full threat model and how to report a vulnerability.


Known limitations

  • Presentations: building layouts or masters is out of scope. Slides are created on the layouts the deck already contains; a deck that ships none gets the generic title/body pair.

  • Presentations: SmartArt and charts are preserved, never authored. The reader reports them (type: "chart", type: "graphicFrame") and every part behind them stays byte-identical through any edit, but the engine cannot create one. A hand-written SmartArt frame is just a dgm:relIds reference, and R7's own renderer dereferences the diagram parts behind it.

  • Presentations: image replacement stores a fresh media part when the format changes or the media is shared, so the old part can be left unreferenced. Everything that still points at it keeps working.

  • Presentations: theme colours read back as tokens (scheme:accent1), because no literal hex exists until the theme is resolved. Writing accepts literals only.

  • Live desktop bridge: Windows verified. The bridge plugin itself is platform-neutral, but the automated live test drives R7-Office Desktop through the CEF DevTools protocol and is only verified against the Windows build (Editors-2026.3.1). Other platforms should work; they are untested.

  • R7 required for PDF. r7_convert needs a local R7 installation for its x2t converter. Everything else works without it.

  • Format coverage. Reading and editing cover the common OOXML surface listed above. Charts, embedded objects, SmartArt and tracked changes are preserved but not editable through these tools.

  • DOCX: not implemented in v0.1.0. Replacing or resizing an existing image; assigning a table style (tblStyle); changing a hyperlink's target (retitle, or remove and insert instead); a convenience wrapper for per-section different headers (both can be read and preserved, and r7_docx_header_footer accepts first/even — for first also call r7_docx_sections with titlePg). Search is not revision-aware: r7_replace scans raw <w:t>, so text inside a tracked insertion is editable and paragraph indices count paragraphs inside deleted content — <w:delText> is never matched.

  • DOCX: comments, tracked changes, footnotes, endnotes, a table of contents, equations and embedded objects are preserved, never edited. A test asserts they survive an ordinary edit with every part byte-identical.

  • DOCX to PDF: a thin horizontal line can appear through an italic subtitle. A paragraph styled Subtitle (italic, centred, grey) may render with a faint line across it after r7_convert. The document contains no strikethrough, underline or paragraph border — w:strike, w:u and w:pBdr are all absent, and the same style applied to R7's own template renders cleanly through the same converter — so the line is introduced during PDF conversion and cannot be corrected from the document. It is cosmetic: the text itself is correct and extracts normally. Quantified at roughly 5 % more ink in that text band.

  • PDF rendering is verified visually, not by text extraction. A PDF can carry the right text, the right page count and a clean validate() while drawing the wrong glyphs or a solid block. scripts/visual-acceptance.py renders the output with two independent engines and compares against a LibreOffice render of the source; run it when changing anything in the conversion path.

  • XLSX: not implemented in v0.1.0. Cell styles are limited to the properties listed for r7_sheet_format; conditional formatting, data validation, charts, pivot tables and defined names are preserved but not editable.

  • PPTX: SmartArt, charts, animations and transitions are preserved, never authored. The engine cannot create SmartArt (a hand-written frame is only a dgm:relIds reference), and editing their content is out of scope.

  • No concurrent editing. File tools operate on a document at rest. For a document the user has open, use the desktop bridge; the file tools assume the file is not locked by another process.


Development

npm test              # the portable suite; needs only Node, R7 tests skip
npm run test:unit
npm run test:integration
npm run test:e2e
npm run test:r7       # requires R7-Office: full suite + the live desktop editor
npm run test:live     # just the live desktop bridge (needs R7-Office)
npm run test:harness  # boots a fresh DeepSeek Harness
npm run inspect:r7    # CDP probe of a running R7 Desktop

See docs/development.md and docs/roadmap.md.


License

MIT — see LICENSE.

R7-Office is proprietary software owned by АО «Р7». This project redistributes none of it.

Available Tools

28 tools
r7_convertA

Convert document to PDF, HTML, TXT, DOCX, XLSX, or PPTX using R7 native converter (x2t). XLSX to PDF exports EVERY worksheet by default, in tab order; pass sheetName (or allSheets: false) to export one sheet only.

ParametersJSON Schema
NameRequiredDescriptionDefault
allSheetsNoXLSX to PDF only: export every worksheet, in tab order. Default true. Set false to export just the active (first) sheet.
sheetNameNoXLSX to PDF only: export just this worksheet. Takes precedence over allSheets.
sourcePathYesAbsolute or workspace-relative path to source document.
targetPathYesTarget destination file path (e.g. document.pdf, report.html).

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full behavioral burden. It usefully discloses the multi-sheet default and the sheetName-over-allSheets precedence, but says nothing about overwrite behavior at targetPath, required permissions, or error/failure reporting for a tool that writes files.

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 tight sentences, front-loaded with the core capability and output formats, then the non-obvious XLSX caveat. No wasted phrasing.

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 conversion tool with no output schema, the description covers the format space and the main edge case (multi-sheet XLSX). It lacks any note on return value or overwrite semantics, but is otherwise adequate to invoke correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so both paths and both sheet options are already documented; baseline is 3. The description reinforces the sheetName/allSheets precedence but adds no new syntax or constraint beyond the schema.

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

Purpose5/5

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

States a specific verb (convert) plus resource (document) and enumerates the supported output formats, and names the underlying engine (x2t). This clearly distinguishes it from sibling write/read tools like r7_read, r7_create, or r7_edit.

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

Usage Guidelines4/5

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

Gives explicit conditional guidance for the XLSX-to-PDF case: default exports every worksheet in tab order, and passing sheetName or allSheets: false restricts to one sheet. It does not name an alternative tool for in-place editing vs conversion, so it stops short of full routing guidance.

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

r7_createA

Create a NEW DOCX, XLSX or PPTX document. Refuses to replace an existing file unless overwrite is true.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleNoDocument title (DOCX/PPTX).
sheetsNoXLSX: every worksheet to create, each { name, data } with a 2D data matrix. All entries and their names are honoured.
tablesNoDOCX: list of tables, each with a 2D array of rows and cells.
filePathYesOutput destination path (.docx, .xlsx, or .pptx).
overwriteNoSet true to replace an existing file at filePath. Default false.
paragraphsNoDOCX: initial paragraphs (strings, or objects with text/style/bold/italic/align).

TDQS

A3.8/5.0
Behavior3/5

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

No annotations exist, so the description carries the full burden. It usefully discloses the overwrite guard ('refuses to replace an existing file unless overwrite is true'), which is real behavioral context, but it says nothing about permission requirements, behavior on unsupported extensions, or where the file is written.

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 short sentences with zero waste; the core action is front-loaded and the overwrite caveat follows immediately. Nothing is padded or repeated from the schema.

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 a rich 100%-covered schema and no output schema, the description covers the essential purpose plus the one non-obvious behavioral rule. It is nearly complete, lacking only notes on failure modes or return behavior that an agent might benefit from.

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 every parameter including the format-specific ones (sheets, tables, paragraphs, title, overwrite) is already documented in the schema. The description adds no format syntax or constraint detail beyond that, so the baseline of 3 applies.

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

Purpose5/5

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

States a specific verb ('Create') and resource ('DOCX, XLSX or PPTX document') with the scoping qualifier NEW, which clearly separates it from siblings like r7_edit, r7_replace, r7_insert, and r7_sheet_write. An agent can identify the tool's operation without opening the schema.

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 refusal-to-replace rule implies the correct usage context (creating a fresh file rather than modifying one), but the description never names an alternative sibling such as r7_edit or r7_slide_create for existing documents, nor states when this tool should be preferred. Usage is implied rather than guided.

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

r7_desktop_execB

Execute safe built-in command or custom DocScript in live opened document in R7 Desktop. Arbitrary JS requires developerMode enabled.

ParametersJSON Schema
NameRequiredDescriptionDefault
argsNoArguments for the safeCommand (e.g. { text: "...", style: "Heading1" }).
codeNoArbitrary DocScript JavaScript code (ONLY permitted when developerMode: true is explicitly configured).
safeCommandNoSafe pre-validated command permitted in production mode.

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations, the description carries the full burden, and it does disclose the key prerequisite that arbitrary JS requires developerMode enabled. However it omits whether execution mutates the live document irreversibly, whether changes are saved automatically, and any side-effect or rate-limit behavior for a mutating exec tool.

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

Conciseness5/5

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

Two tightly packed sentences with the core purpose front-loaded and the developerMode caveat following. No filler or redundancy.

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?

There is no output schema and no return-value description, and the description never clarifies the relationship to the numerous sibling document-editing tools. For an exec tool with complete schema coverage it is adequate but leaves real 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 description coverage is 100%, so the schema already documents args, code, and the safeCommand enum. The description adds no parameter syntax or interaction detail beyond what the schema provides, so the baseline 3 applies.

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?

States a specific verb (Execute) and resource (safe built-in command or custom DocScript) scoped to 'live opened document in R7 Desktop', which distinguishes it from offline docx/sheet/slide tools. It does not, however, differentiate it from closely related siblings like r7_edit or r7_insert that also mutate documents.

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?

There is no explicit guidance on when to pick this over r7_edit, r7_insert, or r7_table, nor any exclusion. The agent must infer that this is the low-level escape hatch versus the higher-level editing tools.

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

r7_desktop_selectionC

Get or replace selected text in the currently active R7-Office Desktop editor window.

ParametersJSON Schema
NameRequiredDescriptionDefault
textNoText to paste when action is replace.
actionYesGet or replace active selection.

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It does not disclose what happens when no window is focused, whether replace requires an existing selection, or any permission/error behavior for this desktop-control tool. 'Replace' implies mutation but nothing about reversibility or side effects is given.

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?

A single front-loaded sentence with no wasted words. It could afford one more clause given the preconditions involved, but nothing is padded.

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 no-annotation, no-output-schema tool that mutates desktop state, the definition is minimal-viable but incomplete: it omits return shape for 'get', focus prerequisites, and failure modes for 'replace'.

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 both the action enum and the text parameter are already documented in the schema. The description adds no syntax or format detail beyond that baseline.

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?

States a specific verb pair (get/replace) and resource (selected text in the active R7-Office Desktop editor window), which is clear and distinguishable from most siblings. However, it does not differentiate from close siblings like r7_desktop_exec or r7_replace, so the agent must infer which to use.

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 when-to-use or when-not-to-use guidance. The phrase 'currently active ... window' implies a focus precondition but neither states it as a requirement nor points to alternatives such as r7_desktop_status or r7_replace.

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

r7_desktop_statusA

Check live connection status and security policy for open R7-Office Desktop windows via the local bridge.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden. It usefully discloses the 'local bridge' dependency and that it reports live (as opposed to cached) state plus a security policy, which is real context. It stops short of saying whether the bridge must be running, what happens on failure, or whether it is strictly read-only.

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?

A single sentence with no filler, front-loading the action and the object being inspected. Every clause (live status, security policy, local bridge) earns its place.

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

Completeness4/5

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

For a zero-parameter diagnostic whose only dependency (the local bridge) is named, the definition is nearly sufficient. The remaining gap is that no output schema exists and the description doesn't hint at what the returned status looks like, but little else is missing.

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

Parameters4/5

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

The tool takes zero parameters, so there is nothing for the description to disambiguate; the baseline for a parameterless tool is 4. No syntax or argument context is needed.

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?

States a specific verb (Check) and a specific resource (live connection status and security policy for open R7-Office Desktop windows). An agent can distinguish it from siblings like r7_desktop_exec (which acts) and r7_desktop_selection (which reads the selection), though it never explicitly names those alternatives.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no mention of when this status check is or isn't appropriate, and no reference to the sibling desktop tools it might precede or replace. The scope is implied by the name but nothing routes the agent here versus r7_desktop_selection.

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

r7_docx_formattingA

Read the normalized formatting of a DOCX document before changing it: per-paragraph style, font family/size/bold/italic/underline/strike/colour, alignment, indents, spacing, list numbering, plus table cell styles (widths, merges, shading, borders, alignment), page/section setup and header/footer parts. Values are normalized (points, #RRGGBB), never raw OOXML.

ParametersJSON Schema
NameRequiredDescriptionDefault
countNoHow many paragraphs to return (default 200).
filePathYesPath to the DOCX file.
includeRunsNoInclude the per-run detail inside each paragraph (default true).
fromParagraphNo0-based paragraph to start from (default 0).
includeTablesNoInclude the table cell styles (default true).
includeSectionsNoInclude page setup and section breaks (default true).
includeStylesListNoAlso list every style the document defines.
includeHeadersFootersNoInclude header/footer parts and their fields (default true).

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations, the description carries full burden; it discloses the key behavioral trait that values are normalized (points, #RRGGBB, never raw OOXML), which materially shapes output interpretation. It stops short of explicitly confirming the operation is non-mutating, though 'Read' implies it.

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?

A single dense sentence, front-loaded with the verb+resource and the 'before changing it' rationale, followed by the enumerated payload. It is long but every clause enumerates real content, so little is wasted.

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?

No output schema exists, so the description bears the return-shape burden and does so thoroughly, enumerating paragraph, table, section and header/footer detail. For an 8-param read tool it is complete enough to call correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so every parameter (count, fromParagraph, includeRuns, includeTables, etc.) is already documented in the schema with defaults. The description lists return content but adds no syntax or semantics beyond that, so baseline 3 applies.

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?

Specific verb ('Read') plus resource ('normalized formatting of a DOCX document') and an enumeration of exactly what is read (paragraph styles, table cells, sections, headers/footers). It stands apart from generic siblings like r7_inspect/r7_read through specificity, though it never names them explicitly.

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

Usage Guidelines3/5

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

The phrase 'before changing it' implies a when-to-use (inspection prior to an edit), which is useful implied guidance. It stops short of stating when-not to use it or pointing to the overlapping r7_inspect/r7_read tools for other needs.

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

r7_docx_imageA

Insert a PNG/JPEG/GIF into a DOCX document, or list the images already in it. Inserting creates the media part, its relationship and its content type, and keeps the picture's own aspect ratio when only one dimension is given. Existing images and relationships are never touched.

ParametersJSON Schema
NameRequiredDescriptionDefault
altNoAlternative text stored with the picture.
dataNoBase64 image data (a data: URL also works) instead of imagePath.
nameNoPicture name shown in the document's selection pane.
actionNoinsert (default) or list.
widthCmNoDisplay width in centimetres. The height is derived from the image's aspect ratio.
widthPxNoDisplay width in pixels at 96 dpi.
filePathYesPath to the DOCX file.
heightCmNoDisplay height in centimetres.
heightPxNoDisplay height in pixels at 96 dpi.
imagePathNoPath to the image file (PNG, JPEG or GIF).
outputPathNoWrite to a copy instead of editing in place.
paragraphIndexNoWhere the picture goes: "end" (default), "start", "new" for its own paragraph, or a 0-based paragraph index.

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does well: it discloses that inserting creates the media part, relationship, and content type, that aspect ratio is preserved with a single dimension, and that existing images and relationships are never touched (a non-destructive guarantee). It omits permission/auth context and the return shape for list mode.

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 the primary action and resource, with the behavioral guarantees packed efficiently afterward. No filler.

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?

There is no output schema, yet the description never explains what the list mode returns or the format of inserted results. For a 12-parameter tool the insert path is well covered, but the list path's behavior and return are left unspecified.

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 schema documents all 12 parameters, and the schema already states for widthCm that height derives from aspect ratio. The description's aspect-ratio note largely restates that, so it adds little beyond structured fields; baseline 3 is correct.

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

Purpose5/5

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

States specific verbs and resource: insert a PNG/JPEG/GIF into a DOCX, or list the images in it. This clearly distinguishes it from formatting, section, and table siblings without needing their schemas.

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

Usage Guidelines3/5

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

The dual 'insert or list' framing gives implied usage and the action enum reinforces it, but there is no explicit when-to-use guidance, no prerequisites, and no named alternative (e.g. use r7_docx_formatting for styling). Usage is inferable but not spelled out.

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

r7_docx_sectionsA

Read or change DOCX page setup and sections: page size, portrait/landscape, margins, columns, page-number restart, page breaks and section breaks. Changing one property preserves everything else in the section (headers, footers, columns, document grid, title-page setting).

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoFor insertBreak: page setup applied to the NEW (following) section.
typeNoSection break type.
actionNoread (default) reports every section and page break; set changes one section; insertBreak starts a new section.
columnsNoNumber of text columns.
marginsNoMargins in centimetres: { top, right, bottom, left, header, footer, gutter }.
titlePgNoDifferent first-page header/footer.
widthCmNoExplicit page width in centimetres.
filePathYesPath to the DOCX file.
heightCmNoExplicit page height in centimetres.
separatorNoDraw a vertical line between columns.
outputPathNoWrite to a copy instead of editing in place.
orientationNoPage orientation.
sectionIndexNoWhich section to change (0-based; -1 is the final section, which is the default).
columnSpaceCmNoSpace between columns, in centimetres.
pageNumberStartNoRestart page numbering at this value.
pageNumberFormatNoPage number format.
afterParagraphIndexNoFor insertBreak: the last paragraph of the section being closed.

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations the description carries the full burden, and it does add a genuinely useful behavioral fact: changing one property preserves the rest of the section (headers, footers, columns, grid, title-page). It still omits permission requirements, in-place vs copy side effects, and what 'read' reports, so disclosure is helpful but incomplete for a mutation tool with zero annotation support.

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 tight sentences, front-loaded with scope and followed by the key preservation guarantee. No filler or redundancy.

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 17-parameter tool with nested objects and no output schema, the description covers scope, actions, and the section-preservation behavior well. The main gap is the shape of 'read' output, which the absence of an output schema leaves undocumented.

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 names some property families that map to parameters (margins, columns, page-number restart) but adds no syntax, units, or defaults beyond what the schema already documents.

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

Purpose5/5

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

States a specific verb pair ('Read or change') and resource ('DOCX page setup and sections') and enumerates the exact properties covered (page size, orientation, margins, columns, page-number restart, breaks). An agent can distinguish this from siblings like r7_docx_formatting or r7_docx_header_footer without opening a schema.

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 property list implies when the tool applies (page/section layout), and the schema's action enum conveys read/set/insertBreak/remove. However, there is no explicit when-to-use guidance or routing against siblings such as r7_docx_formatting, so selection remains partially inferential.

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

r7_editA

Edit, update text, style, or remove a specific paragraph in a DOCX document. The paragraph keeps its own properties (section break, list numbering, spacing) and the new text inherits the previous first run's formatting unless you ask for different formatting.

ParametersJSON Schema
NameRequiredDescriptionDefault
styleNoParagraph style name (e.g. Normal, Heading1, Heading2).
newTextNoNew text content for the paragraph.
filePathYesPath to the DOCX document.
formattingNoCharacter formatting for the new text: { bold, italic, underline, strike, family, size, color, highlight }.
outputPathNoOptional target path (defaults to overwriting in-place).
paragraphIndexYes0-based index of the target paragraph (from r7_inspect/r7_read).
deleteParagraphNoSet true to delete this paragraph.
preserveFormattingNoKeep the paragraph's existing character formatting on the new text (default true).

TDQS

A3.8/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full load, and it does disclose meaningful behavior: the paragraph retains its own properties (section break, list numbering, spacing) and the new text inherits the previous first run's formatting unless overridden. It omits the destructive/overwrite implications of deleteParagraph and the in-place default write, which the schema alone covers.

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 waste; the core action is front-loaded and the second sentence adds only genuinely new preservation semantics.

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

Completeness4/5

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

For an 8-parameter, mutation-capable tool with a nested formatting object and no annotations or output schema, the description covers the key behavioral contract (formatting inheritance, property preservation, removal). It leaves the in-place write default and delete semantics to the schema, which is a minor gap.

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 clarifies the preserveFormatting/formatting interplay ('inherits the previous first run's formatting unless you ask for different formatting'), which adds slight meaning, but it does not explain paragraphIndex sourcing beyond what the schema already states.

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?

States a specific verb set (edit, update, remove) and a precise resource (a specific paragraph in a DOCX document). An agent can tell this is the in-place paragraph editor rather than a document-wide replace, though the description never names the likely sibling alternatives (r7_replace, r7_insert).

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?

Usage is only implied: 'a specific paragraph' suggests targeting by index, and 'remove a specific paragraph' hints at the delete case. There is no explicit when-to-use/when-not guidance and no routing to the closest siblings (r7_replace for text substitution, r7_insert for adding content).

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

r7_insertC

Insert a paragraph, heading, list item, or page break at the start, the end, or relative to another paragraph. The inserted paragraph can carry its own alignment, indents, spacing and font.

ParametersJSON Schema
NameRequiredDescriptionDefault
boldNo
listNoMake the paragraph a bulleted or numbered list item. The numbering part and its relationship are created when the document has none.
runsNoMixed formatting inside one paragraph: [{ text, bold, italic, size, color, family, underline }].
sizeNoFont size in points.
textNoText to insert.
colorNoFont colour, e.g. "#C00000".
styleNoParagraph style: Normal, Heading1…Heading6, Title, ListParagraph, or any style name/id the document defines.
familyNoFont name, e.g. "Georgia".
italicNo
strikeNo
indentsNoIndents in points: { left, right, firstLine, hanging }.
shadingNoParagraph background, e.g. "#FFF2CC".
spacingNoSpacing: { before, after } in points and { line, lineRule } for line spacing, where lineRule "auto" makes line a multiple (1.5) and "exact"/"atLeast" make it points.
filePathYesPath to the DOCX file.
keepNextNoKeep the paragraph with the next one.
positionNoInsertion anchor.
alignmentNoHorizontal alignment ("both" is justified).
highlightNoText highlight colour, e.g. "yellow".
isHeadingNoWhether this is a heading.
listLevelNoList level 0..8 (default 0).
pageBreakNoInsert a page break (alone, or before the text).
underlineNotrue for a single underline, or a style name such as double.
outputPathNoOptional destination file path.
targetIndexNo0-based index when position is before or after.
headingLevelNoHeading level 1..6 (default 1).
pageBreakBeforeNoStart the paragraph on a new page.

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are supplied, so the description carries the full behavioral burden. It says nothing about whether the DOCX file is modified in place or a copy is produced (outputPath hints at a copy but this is unexplained), what happens to existing content at the anchor, or any permission/error behavior. For a 26-parameter mutation tool this is a substantial gap.

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 tight sentences with the core action front-loaded and no filler. The second sentence earns most of its place by scoping what formatting can accompany the inserted content, though it borders on restating schema fields.

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?

For a tool with 26 parameters, nested objects, no annotations, and no output schema, two sentences are far too thin. Missing are mutation semantics (in-place vs outputPath copy), anchor/targetIndex interaction detail, and any cautionary context an agent needs before writing to a document.

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 88%, so the schema already documents nearly every parameter thoroughly. The description adds only a light gloss — that the inserted paragraph can carry alignment, indents, spacing and font — which loosely frames but does not extend the schema's own parameter docs. Baseline 3 applies when the schema does the heavy lifting.

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 names a specific verb (insert) and enumerates the resource variants (paragraph, heading, list item, page break) plus the anchor options (start, end, relative to another paragraph). This is clear and concrete, but it never distinguishes itself from overlapping siblings like r7_edit, r7_replace, or r7_create, so an agent gets no routing signal.

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?

There is no when-to-use or when-not-to-use guidance, no prerequisites, and no named alternative despite several siblings that plausibly overlap (r7_edit, r7_replace). The usage is only inferable from the verb and the mention of insertion anchors.

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

r7_inspectC

Inspect document structure: outline, metadata, headings, tables, sheet list, slide list, sections, headers/footers, images and hyperlinks.

ParametersJSON Schema
NameRequiredDescriptionDefault
filePathYesPath to the document file (DOCX, XLSX, PPTX).
includeListsNoDOCX: also report numbering definitions.
includeImagesNoDOCX: also report embedded images.
includeStylesNoDOCX: also report the style definitions in use.
includeSectionsNoDOCX: also report page size, orientation, margins and section breaks.
includeHyperlinksNoDOCX: also report hyperlinks and their targets.
includeHeadersFootersNoDOCX: also report header and footer parts.

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden, and it discloses nothing about behavior: not that it is a non-destructive read, not whether it opens/locks the file, not what happens on an unsupported or corrupt file. Only the implied semantics of 'inspect' suggest read-only, which is thin for a 7-parameter tool.

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?

A single front-loaded sentence with zero filler, opening with the verb and resource before the enumeration. The facet list is dense but each item maps to real output, so little is wasted.

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 and no annotations, the description should say more about what an inspection returns and how it differs from r7_read/r7_pdf_inspect. It is adequate for a read-only survey tool with fully documented parameters, but the absence of routing and output context leaves clear 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%, so each parameter (includeLists, includeImages, includeStyles, etc.) is already documented in the schema, including its DOCX-only limitation. The description's facet list loosely echoes those parameters but adds no syntax, default, or interaction detail beyond the schema, so the baseline 3 applies.

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?

States a specific verb ('Inspect') and resource ('document structure') and enumerates the exact facets covered (outline, metadata, headings, tables, sheet/slide lists, sections, headers/footers, images, hyperlinks). This clearly separates it from content-reading siblings like r7_read and from r7_pdf_inspect, though it never names those siblings explicitly.

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?

There is no guidance on when to choose this tool over r7_read, r7_sheet_read, r7_slide_read, or r7_pdf_inspect. The use case (surveying structure before extracting content) must be inferred entirely from the tool name and the facet list.

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

r7_pdf_inspectA

Measure the text fidelity of a PDF: page and font inventory, how many glyphs are really drawn by text operators, how many glyph fills painted nothing, whether the text is extractable, and a verdict (text/outlined/mixed). Use it to prove a PDF export kept its text instead of silently losing it; set repair to fix malformed ToUnicode CMap entry counts that make R7-exported body text copy out as garbage.

ParametersJSON Schema
NameRequiredDescriptionDefault
repairNoRepair malformed ToUnicode CMap entry counts in place (rewrites filePath) before reporting. Default false.
filePathYesPath to the PDF file to inspect.

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations provided the description carries the full burden, and it discloses the important behavioral trait that setting repair mutates the file in place to fix CMap entry counts, plus the concrete symptom (text copies out as garbage). It does not explicitly state that the default path is non-mutating or mention permission/auth needs, leaving a small gap.

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, front-loaded with purpose before the use case and parameter guidance, so nothing is buried. It is dense with enumerated clauses, which slightly taxes readability, but every clause carries distinct 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?

Though there is no output schema, the description effectively specifies the return content (page/font inventory, drawn-glyph counts, empty-fill counts, extractability, verdict), and it covers purpose, usage, and the single non-trivial parameter. Nothing an agent needs to invoke it correctly is missing.

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

Parameters4/5

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

Schema coverage is already 100%, so the baseline is 3, but the description adds meaning beyond the schema by explaining what repair actually fixes (malformed ToUnicode CMap entry counts) and the real-world consequence it addresses (R7-exported body text copying out as garbage). That extra context exceeds the schema's drier 'rewrites filePath' wording.

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

Purpose5/5

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

States a specific verb+resource ('Measure the text fidelity of a PDF') and enumerates exactly what is measured (page/font inventory, drawn glyph counts, empty glyph fills, extractability, a text/outlined/mixed verdict). The diagnostic scope distinguishes it from the generic sibling r7_inspect without needing to open either schema.

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

Usage Guidelines4/5

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

Gives a clear triggering scenario: 'Use it to prove a PDF export kept its text instead of silently losing it,' and names the condition that selects the repair mode (malformed ToUnicode CMap making body text copy as garbage). It does not explicitly contrast with the sibling r7_inspect or state exclusions, so it falls just short of full routing guidance.

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

r7_readB

Read structured text, filtered paragraphs, markdown preview, spreadsheet ranges or slides, optionally with normalized formatting.

ParametersJSON Schema
NameRequiredDescriptionDefault
countNoMax paragraphs to return for DOCX.
queryNoFilter text by substring.
rangeNoCell range for XLSX (e.g. A1:D10).
formatNoOutput text representation (default: structured).
filePathYesPath to the document file.
sheetNameNoSheet name for XLSX.
sheetIndexNo0-based sheet index for XLSX.
slideIndexNo0-based slide index for PPTX.
fromParagraphNo0-based starting paragraph index for DOCX.
includeStylesNoReturn normalized formatting instead of raw OOXML. DOCX: a "formatting" block per paragraph (style, font family/size, bold, italic, underline, colour, alignment, indents, spacing before/after, line spacing, list/numbering). XLSX: a "styles" matrix plus merged ranges, row heights and column widths. Read this before changing a document.
includeFormulasNoXLSX: also return the formulas matrix.

TDQS

B3.2/5.0
Behavior3/5

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

No annotations are provided, so the description carries the behavioral burden. It usefully signals that output can be normalized/structured across several document formats, but says nothing about failure modes (missing file, unsupported format), permissions, or what the returned text looks like.

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?

A single, front-loaded sentence with no filler. It is slightly list-heavy but every clause identifies a supported capability, so it earns its length.

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 an 11-parameter, multi-format read tool with no annotations and no output schema, the description covers the surface but omits return-value expectations and format-to-parameter guidance. It is minimally adequate given the rich schema descriptions, but not 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?

Schema description coverage is 100%, so the schema already documents all 11 parameters with format-specific detail. The description adds only a broad mapping of formats to capabilities and does not explain parameter interactions beyond what the schema states; baseline 3 applies.

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?

States a specific verb (Read) and enumerates the resource types it handles (structured text, filtered paragraphs, markdown preview, spreadsheet ranges, slides). However, it does not differentiate itself from siblings like r7_sheet_read, r7_slide_read, or r7_inspect, so an agent cannot tell from the description alone which read tool to pick.

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 when-to-use or when-not-to-use guidance, and no mention of the several sibling read tools that overlap in scope (r7_sheet_read, r7_slide_read, r7_inspect). The only usage hint ('Read this before changing a document') lives inside a parameter description, not the tool description.

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

r7_replaceB

Search and replace text in DOCX while strictly preserving all existing run formatting, fonts, colors, and styles.

ParametersJSON Schema
NameRequiredDescriptionDefault
searchYesText substring or pattern to find.
replaceYesReplacement text.
filePathYesPath to the DOCX file.
matchCaseNoCase sensitive matching (default true).
outputPathNoOptional target path.
replaceAllNoReplace all occurrences (default true).

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations, the description carries the full burden — and it does disclose one important behavioral trait: replacement preserves existing run formatting, fonts, colors, and styles. However, it says nothing about whether the original file is mutated in place versus only written to outputPath, nor about error behavior when the search text is absent.

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?

A single sentence with no padding, front-loading the action before the formatting-preservation guarantee. Every clause earns its place.

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 6-parameter mutation tool with no annotations and no output schema, the description omits in-place-vs-outputPath semantics and any result/error information. The formatting-preservation guarantee is the main value added; the rest of the behavioral surface is thin.

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 all six parameters (including matchCase and replaceAll defaults) are already documented in the schema. The description adds no syntax or format detail beyond that; the mention of 'run formatting' is behavioral rather than parameter-level. Baseline 3 applies.

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 gives a specific verb+resource ('search and replace text in DOCX') plus a distinguishing scope note ('strictly preserving all existing run formatting, fonts, colors, and styles'). It is clear what the tool does, though it never explicitly distinguishes itself from the sibling mutation tools r7_edit or r7_insert.

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?

There is no when-to-use guidance: nothing says when to pick this over r7_edit or r7_insert, or what preconditions exist (e.g., file must exist, format must be DOCX). Usage is only implied by the verb 'replace'.

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

r7_sheet_addA

Add a new worksheet to an existing XLSX workbook, optionally with initial data. Other sheets are left untouched.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataNoOptional 2D matrix to write starting at A1.
nameNoNew worksheet name (defaults to ЛистN; made unique automatically).
indexNoPosition in the tab order; appended when omitted.
filePathYesPath to an existing XLSX file.
outputPathNoOptional target path.

TDQS

A3.6/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden. It does add real behavioral context by promising 'Other sheets are left untouched', which reassures against collateral damage. It does not disclose whether the file is mutated in place, how outputPath affects the original, permissions needed, or whether an existing sheet with the same name is overwritten.

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?

A single tight sentence front-loads the action and resource, and the trailing clause about other sheets is the one piece of non-obvious scope information worth keeping. Zero 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?

For a five-parameter, fully schema-documented tool with no output schema, the description covers purpose and side-effect scope adequately. It is slightly thin on how outputPath interacts with the original file, which is the one thing an agent might need but cannot get from the schema alone.

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 schema already documents all five parameters (data, name, index, filePath, outputPath) with meaningful text. The description's phrase 'optionally with initial data' only loosely echoes the `data` parameter and adds no new semantics, so the baseline of 3 is appropriate.

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?

States a specific verb and resource ('Add a new worksheet to an existing XLSX workbook'), so the agent knows exactly what it creates. It also scopes the effect ('Other sheets are left untouched'). It does not name the sibling it differs from (e.g., r7_sheet_write or r7_create), so it stops short of full sibling differentiation.

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?

Implied usage is clear from 'to an existing XLSX workbook', which establishes the prerequisite that the file must already exist. However, there is no explicit when-to-use guidance and no routing against alternatives like r7_sheet_write (write into an existing sheet) or r7_create (make a new workbook), leaving the agent to infer.

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

r7_sheet_formatA

Apply formatting to a cell or range in an XLSX worksheet: font, fill, borders, alignment, number format, merge, column width and row height. Values, formulas and unrelated styles are preserved. A sheet's print layout (fit-to-width so a table does not spill onto another page, orientation, paper, margins, centring) can be written in the same call with pageSetup.

ParametersJSON Schema
NameRequiredDescriptionDefault
fillNoCell background.
fontNoFont settings.
mergeNoMerge the range (or unmerge when set with unmerge: true).
rangeNoCell or range to format, e.g. "B2" or "A1:D10". Optional when pageSetup is given.
borderNoBorders. Each edge accepts a style name or { style, color }. Use "all" to set every edge at once. Styles: thin, medium, thick, dashed, dotted, double, hair, mediumDashed, dashDot, mediumDashDot, dashDotDot, mediumDashDotDot, slantDashDot.
unmergeNoRemove the merge covering this range.
filePathYesPath to XLSX file.
alignmentNoText alignment.
pageSetupNoPrint layout for this sheet, written in the same save as the formatting. Use { fitToWidth: 1, fitToHeight: 0 } to keep a table one page wide with as many pages tall as it needs; fitToPage="1" is written automatically, without which fitToWidth is ignored by every renderer.
rowHeightNoHeight in points for every row in the range.
sheetNameNoSheet name (takes precedence over sheetIndex).
outputPathNoOptional target path.
sheetIndexNo0-based sheet index.
columnWidthNoSet the width of the columns spanned by the range.
numberFormatNoExcel number format. Values are stored as numbers, never as preformatted text.

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations, the description carries the full burden, and it does disclose a key non-obvious trait: values, formulas and unrelated styles are preserved, and pageSetup can be applied in the same save. It omits whether filePath must already exist and how outputPath vs filePath overwrite semantics work, which are relevant for a mutation tool.

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?

Three sentences, front-loaded with the core action, then preservation guarantees, then the pageSetup extension. Dense but efficient; the enumerated facet list is long though it directly maps to the tool's scope and earns its place.

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

Completeness4/5

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

For a 15-parameter mutation tool with nested objects, no annotations and no output schema, the description covers the operation's scope and its non-destructive behavior. Return-value explanation is unnecessary since no output schema exists; remaining gaps are minor preconditions (file existence, overwrite 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 100%, so the schema already documents all 15 parameters in detail (including edge styles, paper sizes, fitToWidth/fitToHeight pairing). The description restates categories rather than adding format/syntax detail beyond the schema, so the 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?

States a precise verb and resource (apply formatting to a cell or range in an XLSX worksheet) and enumerates the exact facets it covers: font, fill, borders, alignment, number format, merge, column width, row height. This makes it cleanly distinguishable from siblings like r7_sheet_write or r7_sheet_formula without opening any schema.

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?

Usage is implied through the enumerated facets and the note that print layout 'can be written in the same call with pageSetup', but there is no explicit when-to-use routing against alternatives (e.g. use r7_sheet_write for values). The agent must infer the boundary with sibling tools.

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

r7_sheet_formulaC

Insert or update a formula in an XLSX spreadsheet cell.

ParametersJSON Schema
NameRequiredDescriptionDefault
cellYesTarget cell reference (e.g. D2).
formulaYesExcel formula string (e.g. =SUM(A2:C2) or =B2*1.2).
filePathYesPath to XLSX file.
sheetNameNoSheet name (takes precedence over sheetIndex).
outputPathNoOptional target path.
sheetIndexNo0-based sheet index.
numberFormatNoOptional number format for the cell, e.g. { type: "currency" }.

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. 'Insert or update' hints at mutation, but it omits whether existing cell content is overwritten, permission/auth requirements, and how the formula is recalculated or persisted.

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?

A single front-loaded sentence with zero filler, and no repetition of the name. It is efficient, though arguably underspecified rather than maximally concise.

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?

For a mutation tool with no annotations and no output schema, the description is too thin. With 7 parameters and a nested numberFormat object, an agent still lacks behavioral context such as overwrite semantics, output behavior, and sheet selection precedence.

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%, including the example-laden cell/formula descriptions and the nested numberFormat object, so the schema does the heavy lifting. The description adds no parameter-level meaning beyond that, warranting the baseline 3.

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?

States a specific verb (insert/update) and resource (a formula in an XLSX cell), which is more precise than the sibling r7_sheet_write's value-writing role. However, it never names or contrasts with r7_sheet_write/r7_sheet_format, so sibling differentiation is only implied by the word 'formula'.

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?

Provides no when-to-use guidance and no alternatives. An agent cannot tell from this text whether to reach for r7_sheet_formula versus r7_sheet_write when populating a cell.

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

r7_sheet_readB

Read spreadsheet values, formulas and formatting from a worksheet or range (e.g. A1:D10).

ParametersJSON Schema
NameRequiredDescriptionDefault
rangeNoRange reference (e.g. A1:C10).
filePathYesPath to XLSX file.
sheetNameNoSheet name (takes precedence over sheetIndex).
sheetIndexNo0-based sheet index.
includeStylesNoAlso return normalized formatting for every cell (font, fill, border, alignment, numberFormat) plus merged ranges, row heights and column widths.
includeFormulasNoAlso return the formulas matrix. Use it to verify a formula was written: a formula cell has no cached value until a spreadsheet engine recalculates the workbook.

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It implies values, formulas and formatting are all returned, yet the schema shows formulas and styles are opt-in via includeFormulas/includeStyles flags — a potentially misleading impression — and it says nothing about failure modes for a missing file or sheet.

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?

A single front-loaded sentence that names the verb, the resource and the scope with no filler or redundancy. Nothing could be removed without losing information.

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 six-parameter read tool with no output schema and no annotations, the description sketches the return content but does not explain the optional flags that materially change the response, nor error behavior. It is minimally adequate but leaves gaps the structured fields do not fill.

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 every parameter including the range example and the sheetName/sheetIndex precedence is already documented in the schema. The description's range example (A1:D10) merely repeats the schema and adds no extra semantics, making the baseline 3 appropriate.

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?

States a specific verb (Read) and resource (spreadsheet values, formulas, formatting) scoped to a worksheet or range, which clearly separates it from r7_sheet_write and the generic r7_read. It stops short of naming which sibling to use for related tasks, so it is clear but not sibling-differentiating.

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?

There is no when-to-use or when-not-to-use guidance and no mention of alternatives such as r7_read or r7_inspect, even though the sibling list contains several read-oriented tools. The agent must infer that this is the spreadsheet-specific reader.

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

r7_sheet_writeC

Write values, dates or formulas into an XLSX worksheet, addressed by index or name.

ParametersJSON Schema
NameRequiredDescriptionDefault
cellsNoIndividual cell updates: [{ ref, value, formula?, numberFormat?, date? }]. Set date: true (or a date numberFormat) with an ISO 8601 value to store a real date serial instead of text, and numberFormat to apply an Excel number format to the cell.
matrixNo2D matrix of values to write.
filePathYesPath to XLSX file.
sheetNameNoSheet name (takes precedence over sheetIndex).
startCellNoStarting cell (e.g. A1).
outputPathNoOptional target path.
sheetIndexNo0-based sheet index.

TDQS

C2.9/5.0
Behavior2/5

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

No annotations exist, so the description carries the full behavioral burden. It never discloses whether existing cell contents are overwritten, whether the target file/sheet must already exist, whether a new sheet is created, or what happens on partial failure — all critical for a mutation tool.

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?

A single front-loaded sentence with zero filler, clearly leading with the verb and resource. It is efficient, though its terseness contributes to the missing behavioral context rather than being a structural flaw.

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?

For a 7-parameter mutation tool with no annotations and no output schema, the one-line description is too thin. It omits overwrite/reversibility semantics, the roles of cells vs matrix, and file-existence requirements that an agent needs to invoke it correctly.

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

Parameters3/5

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

Schema coverage is 100%, so the schema already documents all seven parameters, including the cells/matrix distinction and date/numberFormat handling. The description only echoes the index-or-name addressing mode already stated in the schema, adding no new parameter meaning.

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?

States a specific verb (write) and resource (values, dates, formulas into an XLSX worksheet) with scoping detail (addressed by index or name). It does not, however, differentiate from nearby siblings such as r7_sheet_add, r7_sheet_formula, or r7_edit, which an agent must disambiguate.

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?

There is no when-to-use guidance, no mention of alternatives (e.g. r7_sheet_formula for formula-focused work or r7_sheet_add for adding sheets), and no prerequisites. The agent must infer choice among several sheet-related siblings entirely on its own.

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

r7_slide_createA

Create a new PPTX deck, or append a slide to an existing one built on one of the deck's own layouts. Appending never modifies the slides already present, and the layout, master and theme the deck already has are reused rather than replaced. Pass baseSlideIndex to clone an existing slide instead of using a layout.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleNoText for the new slide's title placeholder (or for slide 1 when creating a deck).
filePathYesPath to the PPTX file. A missing file is created as a new deck; an existing one gets a new slide.
subtitleNoText for the subtitle placeholder, when the layout has one.
layoutNameNoLayout name, e.g. "Титульный слайд". Matched exactly first, then as a substring.
layoutTypeNoPowerPoint layout type: title, obj, twoObj, blank, titleOnly, picTx, secHead.
outputPathNoWrite to a copy instead of editing in place.
paragraphsNoBody text, one entry per paragraph. An entry may be a string, or { text, runs?, bullet?, numbered?, alignment?, size?, color? }.
layoutIndexNo0-based layout to build from, as listed by r7_slide_read. Omit for a sensible default ("heading and content").
baseSlideIndexNoClone this existing slide instead of building from a layout.

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations the description carries the full burden, and it delivers the key traits: appending is non-destructive, layout/master/theme are reused rather than replaced, and baseSlideIndex clones a slide. It does not touch permissions, return format, or in-place vs copy behavior (left to the outputPath param).

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, zero waste, front-loaded with the primary purpose and followed by the behavioral and cloning details. Each sentence earns its place.

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

Completeness4/5

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

For a 9-parameter mutation tool with no annotations and no output schema, the description adequately conveys the create/append distinction and non-destructive behavior. Minor gaps (authentication, response expectations) remain, but nothing essential for calling it correctly is missing.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3 and the schema already documents every parameter. The description echoes the baseSlideIndex cloning semantics already stated in the schema, adding only marginal meaning beyond structured data.

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

Purpose5/5

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

States a specific verb (create) and resource (PPTX deck/slide), and covers the dual behavior of creating a new deck versus appending a slide to an existing one. It separates itself from siblings like r7_slide_edit and r7_slide_format by making clear appending never modifies existing slides.

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

Usage Guidelines4/5

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

Gives clear context: a missing file creates a new deck, an existing one gets a new slide, and baseSlideIndex switches to clone mode. It does not explicitly name an alternative sibling (e.g., r7_slide_edit) or state exclusions, so it stops short of a 5.

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

r7_slide_editA

Change the structure of a PPTX deck: duplicate a slide, move a slide, reorder all slides, or delete a slide. Slides are addressed by their position in the deck, and no slide part is rewritten by a reorder, so nothing on any slide can be affected.

ParametersJSON Schema
NameRequiredDescriptionDefault
orderNoFor reorder: the complete new order, a permutation of 0..slideCount-1.
actionYesduplicate one slide, move one, reorder all, or delete one.
toIndexNoFor move: its new position.
filePathYesPath to the PPTX file.
positionNoFor duplicate: where the copy goes (default: right after the original).
fromIndexNoFor move: the slide to move.
outputPathNoWrite to a copy instead of editing in place.
slideIndexNoTarget slide for duplicate and delete (0-based).

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden. It usefully discloses that reorder rewrites no slide part so slide content is unaffected, but it is silent on the destructive/irreversible nature of delete, whether duplicate deep-copies or shares parts, and in-place vs. outputPath write behavior beyond what the schema states.

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 tightly written sentences with zero waste; the action list is front-loaded and the safety note on reorder follows immediately. Every clause earns its place.

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 an 8-parameter mutation tool with no annotations and no output schema, the description covers the operations and the index-based addressing model but omits critical behavioral context an agent needs: that delete permanently removes a slide and that outputPath can protect the source. Adequate but with clear 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 description coverage is 100%, so the schema already documents every parameter (order, toIndex, fromIndex, position, slideIndex). The description only adds the addressing model, 'Slides are addressed by their position in the deck,' which is helpful but minimal; baseline 3 applies when the schema does the heavy lifting.

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

Purpose5/5

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

States a specific verb and resource ('Change the structure of a PPTX deck') and enumerates the four exact operations (duplicate, move, reorder, delete). This scope cleanly separates it from sibling tools like r7_slide_create, r7_slide_format, and r7_slide_object, which touch content or formatting rather than slide ordering.

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 each action applies by naming them, but gives no explicit when-to-use vs. when-not-to-use guidance or routing to alternatives (e.g., use r7_slide_read first to find slide positions, or r7_slide_create instead of duplicate). The distinction between 'move' and 'reorder' is left to the reader.

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

r7_slide_formatA

Format or reposition one object on a PPTX slide, in place. Sets font (family, size, bold, italic, underline, colour), geometry (x, y, width, height, rotation, z-order), fill and border, paragraph alignment, bullet and numbered lists, line and paragraph spacing, and can replace the object's text. Only the properties you name change: gradients, shadows, hyperlinks and everything else the author set are left untouched. Falls back to the slide's first text object when no target is named.

ParametersJSON Schema
NameRequiredDescriptionDefault
xNoLeft edge. A number is EMU; "2cm", "1in", "30px" and "24pt" also work.
yNoTop edge, same units as x.
boldNo
capsNoCapitalisation.
fillNoSolid fill colour, e.g. "#1F6FEB". Use "none" for no fill.
lineNoBorder colour, e.g. "#0B3D91". Use "none" for no border.
sizeNoFont size in points, e.g. 24.
textNoReplace the object's entire text with this one paragraph.
colorNoFont colour, e.g. "#C00000".
levelNoOutline level 0..8.
widthNoWidth, same units as x.
arrowsNoArrow heads for a line: true for one arrow at the end, { head, tail } with triangle/stealth/arrow/diamond/oval.
bulletNotrue adds a bullet, false removes it. Combine with numbered.
familyNoFont name, e.g. "Arial" or "Georgia". Applied to Latin, Cyrillic and complex scripts alike, so Cyrillic does not silently keep the theme font.
heightNoHeight, same units as x.
indentNoFirst-line indent, e.g. "-18pt".
italicNo
noFillNoRemove the fill entirely.
noLineNoRemove the border entirely.
strikeNo
zOrderNoPosition in the object list; 0 is furthest back. Omit to place the object on top.
spacingNoCharacter spacing in points (negative tightens).
filePathYesPath to the PPTX file.
numberedNotrue makes the list numbered instead of bulleted.
objectIdNoShape id, exactly as r7_slide_read reported it. The most precise way to address an object.
rotationNoClockwise rotation in degrees.
alignmentNoHorizontal paragraph alignment.
highlightNoText highlight colour, e.g. "#FFFF00".
lineStyleNoBorder dash style: solid, dash, dot, lgDash, sysDot.
lineWidthNoBorder width in points, e.g. 1.5.
underlineNotrue for a single underline, false to remove it, or a style: double, heavy, dotted, dash, wavy.
marginLeftNoLeft indent, e.g. "24pt" or EMU as a number.
objectNameNoShape name, as an alternative to objectId.
outputPathNoWrite to a copy instead of editing in place.
paragraphsNoReplace the text body with these paragraphs (a string each, or { text, runs?, ...options }).
slideIndexNo0-based position of the slide in the deck.
spaceAfterNoSpace after the paragraph, in points.
lineSpacingNoProportional line spacing, 1 = single, 1.5 = one and a half.
objectIndexNo0-based index among the objects that live on the slide.
spaceBeforeNoSpace before the paragraph, in points.
transparencyNoFont colour transparency 0..1 (0 = opaque).
paragraphIndexNoApply the paragraph options to this single paragraph (0-based) instead of all of them.
verticalAnchorNoWhere the text sits inside its box.
bulletCharacterNoCustom bullet glyph, e.g. "–".
placeholderTypeNoAddress a placeholder by role: title, ctrTitle, subTitle, body, pic, tbl.
fillTransparencyNoFill transparency 0..1 (0 = opaque).
lineTransparencyNoBorder transparency 0..1.

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does meaningful work: it discloses that only named properties change and that gradients, shadows, hyperlinks and author styling are left untouched, and that it edits in place unless outputPath is given. It also discloses the silent fallback to the slide's first text object when no target is named, which is a real behavioral surprise. It does not cover permissions or what precedence applies among competing object selectors.

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?

Three sentences plus a fallback clause, front-loaded with the action and scope before the property inventory. No filler sentences, though the long property enumeration is close to restating the schema and could be trimmed.

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 47-parameter, output-less mutation tool with no annotations, the description covers the non-destructive partial-update contract, in-place vs copy semantics, and target fallback. The remaining gap is precedence among the several object-selection parameters (objectId, objectName, objectIndex, placeholderType), which is left for the agent to infer.

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 94%, so the schema already documents the 47 parameters thoroughly and the baseline is 3. The description adds only the aggregate property list and the fallback rule rather than per-parameter meaning, so it does not materially exceed what the schema provides.

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

Purpose5/5

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

States a specific verb and scope: 'Format or reposition one object on a PPTX slide, in place,' then enumerates the property families it touches (font, geometry, fill/border, alignment, lists, spacing, text replacement). The 'one object' scope plus the explicit fallback rule distinguish it from the broader slide/object siblings like r7_slide_edit and r7_slide_object.

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?

Usage context is implied rather than stated: it tells the agent an objectId 'exactly as r7_slide_read reported it' is the most precise way to address an object, which routes the agent through r7_slide_read first. However, there is no explicit when-to-use-this-vs-r7_slide_edit/r7_slide_object guidance and no when-not-to-use condition.

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

r7_slide_objectA

Add or remove objects on a PPTX slide: shapes (rectangle, rounded-rectangle, ellipse/circle, line, arrow, triangle, star, chevron, plus more), text boxes and PNG/JPEG images. An object gets its geometry, fill, border, text and font in the same call. Existing media and relationships are never damaged. Set action "replaceImage" with an existing image object's id to swap its picture while keeping its geometry and placement.

ParametersJSON Schema
NameRequiredDescriptionDefault
xNoLeft edge. A number is EMU; "2cm", "1in", "30px" and "24pt" also work.
yNoTop edge, same units as x.
boldNo
capsNoCapitalisation.
fillNoSolid fill colour, e.g. "#1F6FEB". Use "none" for no fill.
lineNoBorder colour, e.g. "#0B3D91". Use "none" for no border.
nameNoShape name, so a later call can address it by name.
sizeNoFont size in points, e.g. 24.
textNoText to put in the new object (single paragraph).
colorNoFont colour, e.g. "#C00000".
levelNoOutline level 0..8.
scaleNoFor images with no width or height: render at this multiple of the natural pixel size.
shapeNoFor addShape: rectangle, rounded-rectangle, ellipse, circle, line, arrow, triangle, diamond, pentagon, hexagon, star, chevron, plus, cloud, heart, cylinder, cube, donut, pie, or any DrawingML preset name.
widthNoWidth, same units as x.
actionYesWhat to do.
arrowsNoArrow heads for a line: true for one arrow at the end, { head, tail } with triangle/stealth/arrow/diamond/oval.
bulletNotrue adds a bullet, false removes it. Combine with numbered.
familyNoFont name, e.g. "Arial" or "Georgia". Applied to Latin, Cyrillic and complex scripts alike, so Cyrillic does not silently keep the theme font.
heightNoHeight, same units as x.
indentNoFirst-line indent, e.g. "-18pt".
italicNo
noFillNoRemove the fill entirely.
noLineNoRemove the border entirely.
strikeNo
zOrderNoPosition in the object list; 0 is furthest back. Omit to place the object on top.
spacingNoCharacter spacing in points (negative tightens).
filePathYesPath to the PPTX file.
numberedNotrue makes the list numbered instead of bulleted.
objectIdNoFor remove/replaceImage: the shape id reported by r7_slide_read.
rotationNoClockwise rotation in degrees.
alignmentNoHorizontal paragraph alignment.
highlightNoText highlight colour, e.g. "#FFFF00".
imagePathNoFor addImage/replaceImage: path to a PNG, JPEG, GIF, BMP, TIFF or WebP file. PNG and JPEG sizes are read from the file itself.
lineStyleNoBorder dash style: solid, dash, dot, lgDash, sysDot.
lineWidthNoBorder width in points, e.g. 1.5.
underlineNotrue for a single underline, false to remove it, or a style: double, heavy, dotted, dash, wavy.
marginLeftNoLeft indent, e.g. "24pt" or EMU as a number.
objectNameNoAlternative to objectId.
outputPathNoWrite to a copy instead of editing in place.
paragraphsNoText for the new object, one entry per paragraph; each may be a string or { text, runs?, bullet?, numbered?, alignment? }.
slideIndexNo0-based slide position (default 0).
spaceAfterNoSpace after the paragraph, in points.
lineSpacingNoProportional line spacing, 1 = single, 1.5 = one and a half.
spaceBeforeNoSpace before the paragraph, in points.
transparencyNoFont colour transparency 0..1 (0 = opaque).
paragraphIndexNoApply the paragraph options to this single paragraph (0-based) instead of all of them.
verticalAnchorNoWhere the text sits inside its box.
bulletCharacterNoCustom bullet glyph, e.g. "–".
lockAspectRatioNoFor images: keep the natural aspect ratio when only one of width/height is given (default true).
fillTransparencyNoFill transparency 0..1 (0 = opaque).
lineTransparencyNoBorder transparency 0..1.

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden. It does add real value by claiming existing media/relationships are "never damaged" and that geometry, fill, border, text and font are applied in one call. But it omits that 'remove' is a permanent destructive action, whether edits are in-place versus copied, and what the call returns (the schema references ids "reported by r7_slide_read", implying output exists but that is never stated).

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?

Three sentences, front-loaded with the core verb+resource and object types, then behavior, then the replaceImage special case. The parenthetical shape list is verbose but informative. No filler sentences.

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 51-parameter tool with 94% schema coverage and no output schema, the description supplies the essential framing: what can be created/removed, the single-call composition model, and the swap-picture mode. Since the schema covers parameters and no output schema must be explained, the remaining gap (the five action modes are only partially elaborated) is minor.

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 94%, so the schema already documents nearly every parameter, including units, enums and defaults. The description mostly restates schema content (the shape preset list is duplicated) and adds only the replaceImage/geometry-preservation nuance. Baseline 3 is appropriate when the schema does the heavy lifting.

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 uses a specific verb+resource ("Add or remove objects on a PPTX slide") and enumerates the object kinds (shapes, text boxes, images) plus the special replaceImage mode. It is clearly distinguishable from sibling r7_slide_read, though it does not explicitly contrast with r7_slide_edit or r7_slide_format, which could also parse as object-mutating.

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?

It gives one concrete usage hint ("Set action \"replaceImage\" with an existing image object's id to swap its picture"), which points the agent at the right action. However, there is no guidance on when to use this tool versus r7_slide_edit, when to prefer addShape over addTextBox, or any exclusion criteria. Usage is implied rather than stated.

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

r7_slide_readA

Read a PPTX slide as a normalized structure: every object with its id, type, current geometry (x, y, width, height, rotation, z-order), text, font, fill, stroke, alignment and paragraphs. Placeholder geometry and typography are resolved from the slide layout and master, so inherited values are reported rather than left null. Also returns the deck's layouts, so the next slide can be built on a real one.

ParametersJSON Schema
NameRequiredDescriptionDefault
filePathYesPath to the PPTX file.
includeRawNoAttach each object's raw OOXML, for debugging only.
slideIndexNo0-based slide position (default 0).
includeInheritedNoAlso report layout placeholders the slide does not carry itself (default true).

TDQS

A3.7/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does substantial work: it discloses that placeholder geometry and typography are resolved from layout/master so inherited values are reported instead of null, and that the deck's layouts are returned as a side effect. It omits read-only/safety framing and error behavior, but the inherited-value resolution is real behavioral context beyond the schema.

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, front-loaded with the core verb and normalized structure before the inherited-value clarification. The first sentence is a long enumeration but every listed field earns its place in setting output expectations; the layout-return note is a useful trailing addition.

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?

No output schema exists, so the description usefully takes on the job of describing the return shape (per-object fields plus deck layouts). With 100% schema coverage on the four parameters and the inherited-value behavior explained, an agent has enough to call it correctly, though return pagination/large-deck handling is unaddressed.

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 all four parameters are already documented in the schema. The description's mention of resolving layout/master placeholders loosely maps to includeInherited but adds no syntax, default, or format detail beyond what the schema provides; baseline 3 applies.

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 gives a specific verb+resource ('Read a PPTX slide') and enumerates the normalized fields returned (id, type, geometry, text, font, fill, stroke, alignment, paragraphs), which goes well beyond the name. It does not explicitly distinguish itself from siblings like r7_read or r7_inspect, so the agent must infer the PPTX-slide-specific scope from the name plus content.

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?

There is no explicit when-to-use/when-not-to-use statement or named alternative among the many siblings. The closing clause ('so the next slide can be built on a real one') implies a read-before-create workflow, but the agent must infer this rather than being told to prefer this over r7_read or r7_inspect.

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

r7_tableB

Create, inspect, or modify tables in DOCX documents: add and remove rows and columns, merge and unmerge cells, set column widths, and format individual cells (shading, borders, alignment, width). Cell formatting never rewrites the text or the properties of neighbouring cells.

ParametersJSON Schema
NameRequiredDescriptionDefault
cellNoCell coordinate and properties for setCell/formatCell.
rowsNo2D array of rows and cell values for create/addRow. A cell may be a string or an object with the cell properties.
indexNoInsertion index for addRow/addColumn.
mergeNoMerge block for the merge/unmerge actions.
actionYesTable action. "merge" and "unmerge" take merge { row, col, rows, cols }.
valuesNoRow (addRow) or column (addColumn) cell values.
widthsNoAlias of widthsTwips.
bordersNoTable borders for create: false for none, or { top, left, bottom, right, insideH, insideV } with { style, sizePoints, color }.
shadingNoShading applied to every new cell of addRow/addColumn.
filePathYesPath to the DOCX file.
positionNoPosition when creating a table.
rowIndexNoRow to remove.
alignmentNoAlignment for new cells, or for the whole new table.
outputPathNoOptional target path.
tableIndexNo0-based table index for existing tables.
columnIndexNoColumn to remove or where to insert one.
fixedLayoutNoFor setColumnWidths: pin the layout so the widths are honoured (default true).
widthsTwipsNoColumn widths in twips for create/setColumnWidths (and per-cell widths for addRow).
includeStylesNoFor inspect: also return normalized cell formatting (widths, merges, shading, borders, alignment).
verticalAlignNoVertical alignment for new cells.

TDQS

B3.2/5.0
Behavior3/5

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

No annotations are present, so the description carries the full burden. It does disclose one genuinely useful, non-obvious trait: cell formatting 'never rewrites the text or the properties of neighbouring cells.' But it is silent on the biggest behavioral question for a multi-action writer tool — whether edits mutate the source file in place or honour outputPath, and whether operations are destructive/irreversible.

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, tightly front-loaded with the capability list followed by the one caveat. No filler, though the long comma-separated operation list is dense for an 11-action tool.

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 20-parameter, 11-action tool with no annotations and no output schema, the description is only high-level. It does not indicate which parameters each action requires (e.g. cell for setCell/formatCell, rowIndex/columnIndex for removals, merge block for merge/unmerge) or what inspect/compute-style returns look like, leaving real gaps for correct 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%, so the schema already documents all 20 parameters with aliases, units and enums; the baseline is 3. The description's mention of shading, borders, alignment and width loosely maps to the cell object but adds no syntax or format detail beyond the schema.

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 states a specific verb set and resource ('Create, inspect, or modify tables in DOCX documents') and then enumerates the sub-operations (rows, columns, merge, widths, cell formatting). An agent can tell this is the table-specific tool rather than a document-wide one, though it never names or contrasts the nearest sibling, r7_docx_formatting.

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?

It lists what can be done but gives no when-to-use guidance: no routing versus r7_docx_formatting or r7_edit, no prerequisites (e.g. an existing file and tableIndex are needed for modify actions), and no hint about which action suits which goal. The action enum is left to be inferred from the prose.

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

r7_validateB

Validate document package structure, XML integrity, and formatting health.

ParametersJSON Schema
NameRequiredDescriptionDefault
filePathYesPath to document file.

TDQS

B3.3/5.0
Behavior3/5

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

No annotations are provided, so the description carries the behavioral burden. It usefully discloses the scope of validation (structure, XML, formatting) and the word 'validate' implies a non-mutating operation, but it never states that nothing is modified, what happens when validation fails, or how results are surfaced.

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?

A single front-loaded sentence with no filler; every clause names a distinct validation concern.

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 diagnostic tool with no output schema and no annotations, the description should say what a caller gets back (pass/fail, error list) and whether the file is touched. The scope of checks is covered, but the return/error behavior is missing.

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

Parameters3/5

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

One parameter with 100% schema description coverage, so the schema already documents filePath adequately; the description adds no format, path-type, or file-type constraints. Baseline 3 is appropriate when the schema does the heavy lifting.

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?

States a specific verb (validate) and resource (document package), and enumerates the three checks performed: structure, XML integrity, formatting health. This distinguishes it from mutation siblings like r7_edit or r7_create, though it does not explicitly contrast with the closest sibling, r7_inspect.

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 choose this over r7_inspect or r7_read, no preconditions, and no mention of when validation should be run (before/after edits, pre-conversion, etc.). The agent must infer usage entirely.

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

Tool Schema Changelog

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

  1. 28 tool updatesv0.1.1
    • First observedr7_convert
    • First observedr7_create
    • First observedr7_desktop_exec
    • First observedr7_desktop_selection
    • First observedr7_desktop_status
    • First observedr7_docx_formatting
    • First observedr7_docx_header_footer
    • First observedr7_docx_hyperlink
    • First observedr7_docx_image
    • First observedr7_docx_sections
    • First observedr7_edit
    • First observedr7_insert
    • First observedr7_inspect
    • First observedr7_pdf_inspect
    • First observedr7_read
    • First observedr7_replace
    • First observedr7_sheet_add
    • First observedr7_sheet_format
    • First observedr7_sheet_formula
    • First observedr7_sheet_read
    • First observedr7_sheet_write
    • First observedr7_slide_create
    • First observedr7_slide_edit
    • First observedr7_slide_format
    • First observedr7_slide_object
    • First observedr7_slide_read
    • First observedr7_table
    • First observedr7_validate

TDQS

B3.2/5.0

Scored across 28 tools

Disambiguation3/5

The set includes both generic readers (r7_read, r7_inspect) and format-specific readers (r7_sheet_read, r7_slide_read, r7_docx_formatting) that read overlapping content, creating ambiguity about which tool to use for a given read task. Descriptions help, but several tools target similar resources.

Naming Consistency3/5

Names follow a prefix r7_ and mostly snake_case, but mix verb-first (r7_sheet_add) with noun-first (r7_docx_formatting) and generic verbs (r7_read) alongside domain-scoped ones, so the pattern is inconsistent though readable.

Tool Count2/5

28 tools is on the high side for a single server, exceeding the typical 3-15 range; while the broad domain (DOCX, XLSX, PPTX, PDF, desktop) could justify many operations, the count feels heavy and could overwhelm.

Completeness4/5

Core document CRUD/formatting is well covered across DOCX, XLSX, PPTX, and PDF, including tables, sections, headers, images, hyperlinks, slides, and conversion. Minor gaps exist (e.g., worksheet delete/rename, DOCX style management, PDF editing), but agents can work around most.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers