r7-office
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@r7-officeConvert report.docx to PDF and check it's valid"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
dsh-r7-office
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
x2tengine).Validation built in —
r7_validatechecks 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 |
Runtime dependencies | none — the plugin has zero runtime dependencies |
R7-Office Desktop | optional. Needed for |
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 testnpm 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 79The 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 -- --liveTo 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 webAs 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-officeor from the CLI equivalent for your profile:
dsh plugin --profile <profile> add /absolute/path/to/dsh-r7-officeConfirm it activated — a fresh Harness boot prints:
[r7-office] зарегистрировано инструментов: 27 (r7_inspect, r7_read, ...); desktop bridge port=7888, developerMode=falseNote. Add the row either through
install_bundleor by hand in the profile'scordis.patch.yml— never both. Two entries with the samer7-officeid 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.jsTools
Tool | Purpose |
| Document outline: headings, paragraphs, tables, sheets, slides, metadata |
| Structured text, Markdown view, or spreadsheet cell ranges |
| New DOCX / XLSX / PPTX. Refuses to replace an existing file unless |
| Replace, restyle or delete one paragraph by index |
| Find and replace text, preserving run formatting |
| Insert paragraphs, headings, bullet items or page breaks |
| Create, inspect or update tables and cells, including merge, borders, shading and column widths |
| Read the normalized formatting of every paragraph, run and table cell: style, font, size, colour, alignment, indents, spacing, line spacing, lists |
| Read and set page size, orientation, margins, columns, page breaks and section breaks |
| List, read, create or retitle headers and footers; page-number fields survive |
| Insert a PNG/JPEG/GIF at a size, keeping the aspect ratio |
| List, insert, retitle or remove hyperlinks and their relationships |
| Read values, formulas or the normalized formatting of a sheet or range (e.g. |
| Write cells or a 2-D matrix, addressed by sheet name or index; dates are stored as real date serials |
| 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 |
| Add a worksheet to an existing workbook; other sheets are untouched |
| Insert or update a formula |
| Read a slide as a normalized structure: every object's id, type, geometry, text, font, fill, stroke, alignment and paragraphs |
| Create a deck, or append a slide built on one of the deck's own layouts, without altering the slides already there |
| Restyle or reposition one existing object in place: font, geometry, fill, border, alignment, lists, spacing, text |
| Duplicate, move, reorder or delete slides |
| Add or remove an object: shape, text box or PNG/JPEG image |
| Convert via the R7 |
| Check package integrity and XML health |
| 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 |
| Desktop bridge connection and effective security mode |
| Read or replace the selection in the open editor |
| 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 likeMeasurements. 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_convertRun it yourself:
node examples/report-scenario.jsLibrary 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=1r7_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 adgm:relIdsreference, 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_convertneeds a local R7 installation for itsx2tconverter. 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, andr7_docx_header_footeracceptsfirst/even— forfirstalso callr7_docx_sectionswithtitlePg). Search is not revision-aware:r7_replacescans 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 afterr7_convert. The document contains no strikethrough, underline or paragraph border —w:strike,w:uandw:pBdrare 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.pyrenders 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:relIdsreference), 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 DesktopSee 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 toolsr7_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.
| Name | Required | Description | Default |
|---|---|---|---|
| allSheets | No | XLSX to PDF only: export every worksheet, in tab order. Default true. Set false to export just the active (first) sheet. | |
| sheetName | No | XLSX to PDF only: export just this worksheet. Takes precedence over allSheets. | |
| sourcePath | Yes | Absolute or workspace-relative path to source document. | |
| targetPath | Yes | Target destination file path (e.g. document.pdf, report.html). |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | Document title (DOCX/PPTX). | |
| sheets | No | XLSX: every worksheet to create, each { name, data } with a 2D data matrix. All entries and their names are honoured. | |
| tables | No | DOCX: list of tables, each with a 2D array of rows and cells. | |
| filePath | Yes | Output destination path (.docx, .xlsx, or .pptx). | |
| overwrite | No | Set true to replace an existing file at filePath. Default false. | |
| paragraphs | No | DOCX: initial paragraphs (strings, or objects with text/style/bold/italic/align). |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| args | No | Arguments for the safeCommand (e.g. { text: "...", style: "Heading1" }). | |
| code | No | Arbitrary DocScript JavaScript code (ONLY permitted when developerMode: true is explicitly configured). | |
| safeCommand | No | Safe pre-validated command permitted in production mode. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| text | No | Text to paste when action is replace. | |
| action | Yes | Get or replace active selection. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | How many paragraphs to return (default 200). | |
| filePath | Yes | Path to the DOCX file. | |
| includeRuns | No | Include the per-run detail inside each paragraph (default true). | |
| fromParagraph | No | 0-based paragraph to start from (default 0). | |
| includeTables | No | Include the table cell styles (default true). | |
| includeSections | No | Include page setup and section breaks (default true). | |
| includeStylesList | No | Also list every style the document defines. | |
| includeHeadersFooters | No | Include header/footer parts and their fields (default true). |
TDQS
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.
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.
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.
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.
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.
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_hyperlinkA
Read, insert, re-text or remove DOCX hyperlinks. Reading returns each link's text and target URL; inserting writes the relationship (external, deduplicated by URL) and a Word-compatible Hyperlink-styled run; re-texting keeps the relationship and the run formatting.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | Target URL for insert. | |
| bold | No | ||
| size | No | Font size in points for the link text. | |
| text | No | Link text (insert) or its replacement (setText). | |
| color | No | Font colour for the link text, e.g. "#0563C1". | |
| index | No | Hyperlink index from action "list", for setText/remove. | |
| style | No | Character style id for the link (default Hyperlink). | |
| action | No | list (default), insert, setText or remove. | |
| anchor | No | Internal bookmark/anchor name instead of a URL. | |
| italic | No | ||
| tooltip | No | Tooltip shown on hover. | |
| filePath | Yes | Path to the DOCX file. | |
| alignment | No | Alignment of the new paragraph. | |
| outputPath | No | Write to a copy instead of editing in place. | |
| newParagraph | No | For insert: put the link in its own paragraph. | |
| paragraphIndex | No | Paragraph the link joins (insert) or whose first link to edit/remove. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full disclosure burden and does real work: insert writes an external relationship deduplicated by URL plus a Hyperlink-styled run, re-text keeps the relationship and run formatting, and list returns text and target URL. It stops short of stating permission requirements, in-place vs copy semantics, or error behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two front-loaded sentences: the four verbs lead, then per-action behavior follows. Dense and largely waste-free, though the second sentence is long and could be split for clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 16-parameter mutation/read tool with no annotations and no output schema, the description usefully summarizes what 'list' returns and how writes behave, compensating for the missing output schema. It does not touch several formatting parameters (bold, italic, alignment) that only the schema covers.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 88%, so the schema already documents url, text, index, style, paragraphIndex, etc. The description adds behavioral meaning for the actions but no syntax or format 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource pairing (read/insert/re-text/remove DOCX hyperlinks) and enumerates all four modes, which no sibling tool (r7_docx_formatting, r7_edit, r7_insert) covers. An agent can immediately tell this is the hyperlink-specific tool rather than a general text or formatting operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The four actions are listed and partly explained, implying when each applies, but there is no explicit when-to-use guidance, no exclusions, and no naming of alternative tools (e.g., when to prefer r7_edit or r7_insert over this). Usage is inferred from the action enum 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_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.
| Name | Required | Description | Default |
|---|---|---|---|
| alt | No | Alternative text stored with the picture. | |
| data | No | Base64 image data (a data: URL also works) instead of imagePath. | |
| name | No | Picture name shown in the document's selection pane. | |
| action | No | insert (default) or list. | |
| widthCm | No | Display width in centimetres. The height is derived from the image's aspect ratio. | |
| widthPx | No | Display width in pixels at 96 dpi. | |
| filePath | Yes | Path to the DOCX file. | |
| heightCm | No | Display height in centimetres. | |
| heightPx | No | Display height in pixels at 96 dpi. | |
| imagePath | No | Path to the image file (PNG, JPEG or GIF). | |
| outputPath | No | Write to a copy instead of editing in place. | |
| paragraphIndex | No | Where the picture goes: "end" (default), "start", "new" for its own paragraph, or a 0-based paragraph index. |
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | For insertBreak: page setup applied to the NEW (following) section. | |
| type | No | Section break type. | |
| action | No | read (default) reports every section and page break; set changes one section; insertBreak starts a new section. | |
| columns | No | Number of text columns. | |
| margins | No | Margins in centimetres: { top, right, bottom, left, header, footer, gutter }. | |
| titlePg | No | Different first-page header/footer. | |
| widthCm | No | Explicit page width in centimetres. | |
| filePath | Yes | Path to the DOCX file. | |
| heightCm | No | Explicit page height in centimetres. | |
| separator | No | Draw a vertical line between columns. | |
| outputPath | No | Write to a copy instead of editing in place. | |
| orientation | No | Page orientation. | |
| sectionIndex | No | Which section to change (0-based; -1 is the final section, which is the default). | |
| columnSpaceCm | No | Space between columns, in centimetres. | |
| pageNumberStart | No | Restart page numbering at this value. | |
| pageNumberFormat | No | Page number format. | |
| afterParagraphIndex | No | For insertBreak: the last paragraph of the section being closed. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| style | No | Paragraph style name (e.g. Normal, Heading1, Heading2). | |
| newText | No | New text content for the paragraph. | |
| filePath | Yes | Path to the DOCX document. | |
| formatting | No | Character formatting for the new text: { bold, italic, underline, strike, family, size, color, highlight }. | |
| outputPath | No | Optional target path (defaults to overwriting in-place). | |
| paragraphIndex | Yes | 0-based index of the target paragraph (from r7_inspect/r7_read). | |
| deleteParagraph | No | Set true to delete this paragraph. | |
| preserveFormatting | No | Keep the paragraph's existing character formatting on the new text (default true). |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| bold | No | ||
| list | No | Make the paragraph a bulleted or numbered list item. The numbering part and its relationship are created when the document has none. | |
| runs | No | Mixed formatting inside one paragraph: [{ text, bold, italic, size, color, family, underline }]. | |
| size | No | Font size in points. | |
| text | No | Text to insert. | |
| color | No | Font colour, e.g. "#C00000". | |
| style | No | Paragraph style: Normal, Heading1…Heading6, Title, ListParagraph, or any style name/id the document defines. | |
| family | No | Font name, e.g. "Georgia". | |
| italic | No | ||
| strike | No | ||
| indents | No | Indents in points: { left, right, firstLine, hanging }. | |
| shading | No | Paragraph background, e.g. "#FFF2CC". | |
| spacing | No | Spacing: { 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. | |
| filePath | Yes | Path to the DOCX file. | |
| keepNext | No | Keep the paragraph with the next one. | |
| position | No | Insertion anchor. | |
| alignment | No | Horizontal alignment ("both" is justified). | |
| highlight | No | Text highlight colour, e.g. "yellow". | |
| isHeading | No | Whether this is a heading. | |
| listLevel | No | List level 0..8 (default 0). | |
| pageBreak | No | Insert a page break (alone, or before the text). | |
| underline | No | true for a single underline, or a style name such as double. | |
| outputPath | No | Optional destination file path. | |
| targetIndex | No | 0-based index when position is before or after. | |
| headingLevel | No | Heading level 1..6 (default 1). | |
| pageBreakBefore | No | Start the paragraph on a new page. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| filePath | Yes | Path to the document file (DOCX, XLSX, PPTX). | |
| includeLists | No | DOCX: also report numbering definitions. | |
| includeImages | No | DOCX: also report embedded images. | |
| includeStyles | No | DOCX: also report the style definitions in use. | |
| includeSections | No | DOCX: also report page size, orientation, margins and section breaks. | |
| includeHyperlinks | No | DOCX: also report hyperlinks and their targets. | |
| includeHeadersFooters | No | DOCX: also report header and footer parts. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| repair | No | Repair malformed ToUnicode CMap entry counts in place (rewrites filePath) before reporting. Default false. | |
| filePath | Yes | Path to the PDF file to inspect. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | Max paragraphs to return for DOCX. | |
| query | No | Filter text by substring. | |
| range | No | Cell range for XLSX (e.g. A1:D10). | |
| format | No | Output text representation (default: structured). | |
| filePath | Yes | Path to the document file. | |
| sheetName | No | Sheet name for XLSX. | |
| sheetIndex | No | 0-based sheet index for XLSX. | |
| slideIndex | No | 0-based slide index for PPTX. | |
| fromParagraph | No | 0-based starting paragraph index for DOCX. | |
| includeStyles | No | Return 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. | |
| includeFormulas | No | XLSX: also return the formulas matrix. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| search | Yes | Text substring or pattern to find. | |
| replace | Yes | Replacement text. | |
| filePath | Yes | Path to the DOCX file. | |
| matchCase | No | Case sensitive matching (default true). | |
| outputPath | No | Optional target path. | |
| replaceAll | No | Replace all occurrences (default true). |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| data | No | Optional 2D matrix to write starting at A1. | |
| name | No | New worksheet name (defaults to ЛистN; made unique automatically). | |
| index | No | Position in the tab order; appended when omitted. | |
| filePath | Yes | Path to an existing XLSX file. | |
| outputPath | No | Optional target path. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| fill | No | Cell background. | |
| font | No | Font settings. | |
| merge | No | Merge the range (or unmerge when set with unmerge: true). | |
| range | No | Cell or range to format, e.g. "B2" or "A1:D10". Optional when pageSetup is given. | |
| border | No | Borders. 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. | |
| unmerge | No | Remove the merge covering this range. | |
| filePath | Yes | Path to XLSX file. | |
| alignment | No | Text alignment. | |
| pageSetup | No | Print 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. | |
| rowHeight | No | Height in points for every row in the range. | |
| sheetName | No | Sheet name (takes precedence over sheetIndex). | |
| outputPath | No | Optional target path. | |
| sheetIndex | No | 0-based sheet index. | |
| columnWidth | No | Set the width of the columns spanned by the range. | |
| numberFormat | No | Excel number format. Values are stored as numbers, never as preformatted text. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| cell | Yes | Target cell reference (e.g. D2). | |
| formula | Yes | Excel formula string (e.g. =SUM(A2:C2) or =B2*1.2). | |
| filePath | Yes | Path to XLSX file. | |
| sheetName | No | Sheet name (takes precedence over sheetIndex). | |
| outputPath | No | Optional target path. | |
| sheetIndex | No | 0-based sheet index. | |
| numberFormat | No | Optional number format for the cell, e.g. { type: "currency" }. |
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| range | No | Range reference (e.g. A1:C10). | |
| filePath | Yes | Path to XLSX file. | |
| sheetName | No | Sheet name (takes precedence over sheetIndex). | |
| sheetIndex | No | 0-based sheet index. | |
| includeStyles | No | Also return normalized formatting for every cell (font, fill, border, alignment, numberFormat) plus merged ranges, row heights and column widths. | |
| includeFormulas | No | Also 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
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| cells | No | Individual 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. | |
| matrix | No | 2D matrix of values to write. | |
| filePath | Yes | Path to XLSX file. | |
| sheetName | No | Sheet name (takes precedence over sheetIndex). | |
| startCell | No | Starting cell (e.g. A1). | |
| outputPath | No | Optional target path. | |
| sheetIndex | No | 0-based sheet index. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | Text for the new slide's title placeholder (or for slide 1 when creating a deck). | |
| filePath | Yes | Path to the PPTX file. A missing file is created as a new deck; an existing one gets a new slide. | |
| subtitle | No | Text for the subtitle placeholder, when the layout has one. | |
| layoutName | No | Layout name, e.g. "Титульный слайд". Matched exactly first, then as a substring. | |
| layoutType | No | PowerPoint layout type: title, obj, twoObj, blank, titleOnly, picTx, secHead. | |
| outputPath | No | Write to a copy instead of editing in place. | |
| paragraphs | No | Body text, one entry per paragraph. An entry may be a string, or { text, runs?, bullet?, numbered?, alignment?, size?, color? }. | |
| layoutIndex | No | 0-based layout to build from, as listed by r7_slide_read. Omit for a sensible default ("heading and content"). | |
| baseSlideIndex | No | Clone this existing slide instead of building from a layout. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| order | No | For reorder: the complete new order, a permutation of 0..slideCount-1. | |
| action | Yes | duplicate one slide, move one, reorder all, or delete one. | |
| toIndex | No | For move: its new position. | |
| filePath | Yes | Path to the PPTX file. | |
| position | No | For duplicate: where the copy goes (default: right after the original). | |
| fromIndex | No | For move: the slide to move. | |
| outputPath | No | Write to a copy instead of editing in place. | |
| slideIndex | No | Target slide for duplicate and delete (0-based). |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | Left edge. A number is EMU; "2cm", "1in", "30px" and "24pt" also work. | |
| y | No | Top edge, same units as x. | |
| bold | No | ||
| caps | No | Capitalisation. | |
| fill | No | Solid fill colour, e.g. "#1F6FEB". Use "none" for no fill. | |
| line | No | Border colour, e.g. "#0B3D91". Use "none" for no border. | |
| size | No | Font size in points, e.g. 24. | |
| text | No | Replace the object's entire text with this one paragraph. | |
| color | No | Font colour, e.g. "#C00000". | |
| level | No | Outline level 0..8. | |
| width | No | Width, same units as x. | |
| arrows | No | Arrow heads for a line: true for one arrow at the end, { head, tail } with triangle/stealth/arrow/diamond/oval. | |
| bullet | No | true adds a bullet, false removes it. Combine with numbered. | |
| family | No | Font name, e.g. "Arial" or "Georgia". Applied to Latin, Cyrillic and complex scripts alike, so Cyrillic does not silently keep the theme font. | |
| height | No | Height, same units as x. | |
| indent | No | First-line indent, e.g. "-18pt". | |
| italic | No | ||
| noFill | No | Remove the fill entirely. | |
| noLine | No | Remove the border entirely. | |
| strike | No | ||
| zOrder | No | Position in the object list; 0 is furthest back. Omit to place the object on top. | |
| spacing | No | Character spacing in points (negative tightens). | |
| filePath | Yes | Path to the PPTX file. | |
| numbered | No | true makes the list numbered instead of bulleted. | |
| objectId | No | Shape id, exactly as r7_slide_read reported it. The most precise way to address an object. | |
| rotation | No | Clockwise rotation in degrees. | |
| alignment | No | Horizontal paragraph alignment. | |
| highlight | No | Text highlight colour, e.g. "#FFFF00". | |
| lineStyle | No | Border dash style: solid, dash, dot, lgDash, sysDot. | |
| lineWidth | No | Border width in points, e.g. 1.5. | |
| underline | No | true for a single underline, false to remove it, or a style: double, heavy, dotted, dash, wavy. | |
| marginLeft | No | Left indent, e.g. "24pt" or EMU as a number. | |
| objectName | No | Shape name, as an alternative to objectId. | |
| outputPath | No | Write to a copy instead of editing in place. | |
| paragraphs | No | Replace the text body with these paragraphs (a string each, or { text, runs?, ...options }). | |
| slideIndex | No | 0-based position of the slide in the deck. | |
| spaceAfter | No | Space after the paragraph, in points. | |
| lineSpacing | No | Proportional line spacing, 1 = single, 1.5 = one and a half. | |
| objectIndex | No | 0-based index among the objects that live on the slide. | |
| spaceBefore | No | Space before the paragraph, in points. | |
| transparency | No | Font colour transparency 0..1 (0 = opaque). | |
| paragraphIndex | No | Apply the paragraph options to this single paragraph (0-based) instead of all of them. | |
| verticalAnchor | No | Where the text sits inside its box. | |
| bulletCharacter | No | Custom bullet glyph, e.g. "–". | |
| placeholderType | No | Address a placeholder by role: title, ctrTitle, subTitle, body, pic, tbl. | |
| fillTransparency | No | Fill transparency 0..1 (0 = opaque). | |
| lineTransparency | No | Border transparency 0..1. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | Left edge. A number is EMU; "2cm", "1in", "30px" and "24pt" also work. | |
| y | No | Top edge, same units as x. | |
| bold | No | ||
| caps | No | Capitalisation. | |
| fill | No | Solid fill colour, e.g. "#1F6FEB". Use "none" for no fill. | |
| line | No | Border colour, e.g. "#0B3D91". Use "none" for no border. | |
| name | No | Shape name, so a later call can address it by name. | |
| size | No | Font size in points, e.g. 24. | |
| text | No | Text to put in the new object (single paragraph). | |
| color | No | Font colour, e.g. "#C00000". | |
| level | No | Outline level 0..8. | |
| scale | No | For images with no width or height: render at this multiple of the natural pixel size. | |
| shape | No | For 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. | |
| width | No | Width, same units as x. | |
| action | Yes | What to do. | |
| arrows | No | Arrow heads for a line: true for one arrow at the end, { head, tail } with triangle/stealth/arrow/diamond/oval. | |
| bullet | No | true adds a bullet, false removes it. Combine with numbered. | |
| family | No | Font name, e.g. "Arial" or "Georgia". Applied to Latin, Cyrillic and complex scripts alike, so Cyrillic does not silently keep the theme font. | |
| height | No | Height, same units as x. | |
| indent | No | First-line indent, e.g. "-18pt". | |
| italic | No | ||
| noFill | No | Remove the fill entirely. | |
| noLine | No | Remove the border entirely. | |
| strike | No | ||
| zOrder | No | Position in the object list; 0 is furthest back. Omit to place the object on top. | |
| spacing | No | Character spacing in points (negative tightens). | |
| filePath | Yes | Path to the PPTX file. | |
| numbered | No | true makes the list numbered instead of bulleted. | |
| objectId | No | For remove/replaceImage: the shape id reported by r7_slide_read. | |
| rotation | No | Clockwise rotation in degrees. | |
| alignment | No | Horizontal paragraph alignment. | |
| highlight | No | Text highlight colour, e.g. "#FFFF00". | |
| imagePath | No | For addImage/replaceImage: path to a PNG, JPEG, GIF, BMP, TIFF or WebP file. PNG and JPEG sizes are read from the file itself. | |
| lineStyle | No | Border dash style: solid, dash, dot, lgDash, sysDot. | |
| lineWidth | No | Border width in points, e.g. 1.5. | |
| underline | No | true for a single underline, false to remove it, or a style: double, heavy, dotted, dash, wavy. | |
| marginLeft | No | Left indent, e.g. "24pt" or EMU as a number. | |
| objectName | No | Alternative to objectId. | |
| outputPath | No | Write to a copy instead of editing in place. | |
| paragraphs | No | Text for the new object, one entry per paragraph; each may be a string or { text, runs?, bullet?, numbered?, alignment? }. | |
| slideIndex | No | 0-based slide position (default 0). | |
| spaceAfter | No | Space after the paragraph, in points. | |
| lineSpacing | No | Proportional line spacing, 1 = single, 1.5 = one and a half. | |
| spaceBefore | No | Space before the paragraph, in points. | |
| transparency | No | Font colour transparency 0..1 (0 = opaque). | |
| paragraphIndex | No | Apply the paragraph options to this single paragraph (0-based) instead of all of them. | |
| verticalAnchor | No | Where the text sits inside its box. | |
| bulletCharacter | No | Custom bullet glyph, e.g. "–". | |
| lockAspectRatio | No | For images: keep the natural aspect ratio when only one of width/height is given (default true). | |
| fillTransparency | No | Fill transparency 0..1 (0 = opaque). | |
| lineTransparency | No | Border transparency 0..1. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| filePath | Yes | Path to the PPTX file. | |
| includeRaw | No | Attach each object's raw OOXML, for debugging only. | |
| slideIndex | No | 0-based slide position (default 0). | |
| includeInherited | No | Also report layout placeholders the slide does not carry itself (default true). |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| cell | No | Cell coordinate and properties for setCell/formatCell. | |
| rows | No | 2D array of rows and cell values for create/addRow. A cell may be a string or an object with the cell properties. | |
| index | No | Insertion index for addRow/addColumn. | |
| merge | No | Merge block for the merge/unmerge actions. | |
| action | Yes | Table action. "merge" and "unmerge" take merge { row, col, rows, cols }. | |
| values | No | Row (addRow) or column (addColumn) cell values. | |
| widths | No | Alias of widthsTwips. | |
| borders | No | Table borders for create: false for none, or { top, left, bottom, right, insideH, insideV } with { style, sizePoints, color }. | |
| shading | No | Shading applied to every new cell of addRow/addColumn. | |
| filePath | Yes | Path to the DOCX file. | |
| position | No | Position when creating a table. | |
| rowIndex | No | Row to remove. | |
| alignment | No | Alignment for new cells, or for the whole new table. | |
| outputPath | No | Optional target path. | |
| tableIndex | No | 0-based table index for existing tables. | |
| columnIndex | No | Column to remove or where to insert one. | |
| fixedLayout | No | For setColumnWidths: pin the layout so the widths are honoured (default true). | |
| widthsTwips | No | Column widths in twips for create/setColumnWidths (and per-cell widths for addRow). | |
| includeStyles | No | For inspect: also return normalized cell formatting (widths, merges, shading, borders, alignment). | |
| verticalAlign | No | Vertical alignment for new cells. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| filePath | Yes | Path to document file. |
TDQS
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.
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.
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.
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.
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.
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.
28 tool updates
v0.1.1- First observed
r7_convert - First observed
r7_create - First observed
r7_desktop_exec - First observed
r7_desktop_selection - First observed
r7_desktop_status - First observed
r7_docx_formatting - First observed
r7_docx_header_footer - First observed
r7_docx_hyperlink - First observed
r7_docx_image - First observed
r7_docx_sections - First observed
r7_edit - First observed
r7_insert - First observed
r7_inspect - First observed
r7_pdf_inspect - First observed
r7_read - First observed
r7_replace - First observed
r7_sheet_add - First observed
r7_sheet_format - First observed
r7_sheet_formula - First observed
r7_sheet_read - First observed
r7_sheet_write - First observed
r7_slide_create - First observed
r7_slide_edit - First observed
r7_slide_format - First observed
r7_slide_object - First observed
r7_slide_read - First observed
r7_table - First observed
r7_validate
TDQS
Scored across 28 tools
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.
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.
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.
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
Related MCP Connectors
Document conversion and OCR for AI agents: PDF, Office docs, images to text.
Real Word and Excel for agents: open your .docx/.xlsm, read, propose, apply, get it back intact.
An agent-first office suite Claude & ChatGPT read and write over one MCP URL.
Create and manage documents, spreadsheets, and presentations from your AI assistant.
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables AI agents to read, write, and edit Office documents via LibreOffice with token-efficient design. Supports multiple formats including DOCX, XLSX, PPTX, and legacy formats through LibreOffice bridge.2745 npmMIT
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to read, edit, and create Microsoft Word documents (.docx) with support for rich text, tables, and images, deployable locally or via SSE.3MIT
- AlicenseBqualityCmaintenanceEnables complete Office document lifecycle management for AI agents, including creation, editing, conversion, and templating of DOCX, XLSX, PPTX, PDF, and EML files.40MIT
- AlicenseAqualityDmaintenanceEnables AI agents to generate real Office documents (.pptx, .docx, .xlsx) and source code from natural language via MCP protocol.4MIT