Office Live MCP
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., "@Office Live MCPAdd a total row to my open Excel sheet and make it bold."
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.
Office Live MCP
One MCP server that drives live, open Word, Excel and PowerPoint documents on macOS through Office.js.
This started as a fork of kzarzycki/powerpoint-mcp and grew into something bigger. The original idea is brilliant: instead of parsing files on disk, an Office.js add-in inside the running Office app talks to a local bridge server over WebSocket. Your AI assistant edits the document you have open right now, and you watch it happen.
I asked the original author whether he planned to extend this to Word and Excel (issue #173). While waiting for an answer I built it myself, on this branch. Same architecture, two more apps.
What it does
One bridge server, one add-in taskpane, three Office apps. The add-in detects which host it runs in (PowerPoint, Word or Excel) and every tool call executes inside the live document.
PowerPoint: 27 tools from the upstream project. Inspect decks, edit shapes and text, raw OOXML access, charts, screenshots, speaker notes, and an
execute_officejsescape hatch.Excel: 32 new tools. Read and write ranges with values, formulas and number formats, inspect workbooks, format cells, manage worksheets, sort and find, tables, charts, conditional formatting, named ranges, data validation, comments, pivot refresh, sheet protection, plus
execute_exceljs.Word: 26 new tools. Read and edit paragraphs, styles and formatting, search and replace, tables, comments, page breaks, tracked changes (read), selection, save, plus
execute_wordjs.
That is 85 tools on one server. Anything the typed tools do not cover, the execute escape hatch handles with raw Office.js in the right host.
Related MCP server: MCP Office
Why live matters
File-based tools (openpyxl, python-docx, python-pptx) read and write bytes on disk. They cannot refresh a PivotTable, they silently drop charts and macros, and you only see the result after reopening the file. This server works inside the running app instead: formulas are calculated by Excel itself, edits appear on screen while the agent works, and nothing that Excel owns gets lost.
There is a second advantage that matters just as much. Everything here runs locally on your machine, next to your agent, not inside some hosted sandbox. Cloud Office agents lock you into their environment: your files go up, the tools they offer are the tools you get, and combining them with anything else is a fight against the platform. Here the Office tools are just one part of what the agent can reach. In the same session it can read your mail, query a database, drive a browser, call any other MCP server or plain script, and then put the results straight into the live document. The Office control is a capability, not a cage. That combination is where most of the real value showed up while building and testing this.
Quick start
git clone https://github.com/benjaminfrombe/office-live-mcp.git
cd powerpoint-mcp
npm install
npm run build
# install the add-in into the Office apps (needs Full Disk Access for the terminal)
node --experimental-strip-types scripts/sideload.ts # PowerPoint
node --experimental-strip-types scripts/sideload.ts --app word # Word
node --experimental-strip-types scripts/sideload.ts --app excel # Excel
# start the bridge
node dist/index.cjs --http --bridgeThen open a document in any of the three apps, click the add-in button in the Home ribbon, and connect your MCP client to http://127.0.0.1:3001/mcp.
Optional: the ribbon icon (HTTPS)
Everything works over plain HTTP except one cosmetic detail: Office refuses to load the ribbon icon over HTTP, so the button shows a generic placeholder. The add-in, taskpane and bridge connection are unaffected.
To get the real icon, serve the bridge over HTTPS with a locally trusted certificate (one-time setup):
brew install mkcert && mkcert -install # or: npx office-addin-dev-certs install
mkcert -cert-file certs/localhost.pem -key-file certs/localhost-key.pem localhost 127.0.0.1 ::1
BRIDGE_TLS=1 node dist/index.cjs --http --bridge # bridge on https://localhost:8443
node --experimental-strip-types scripts/sideload.ts --tls # per app: add --app word / --app excelThen restart the Office apps. Without this step, just ignore the placeholder icon.
Windows installation
Verified on Windows 11 (ARM64, Office Insider 16.0.20430) in a Parallels VM. Recent Windows Office builds reject the old sideload shortcuts (Developer-registry manifests only load under a debugger, the new "Apps" storefront never queries custom catalogs), so the supported route is the classic add-in dialog with a shared folder catalog:
Copy
dist/index.cjsandaddin/to the Windows machine (e.g.C:\o365-bridge), then start the bridge there:node C:\o365-bridge\dist\index.cjs --http --bridgeThis serves the taskpane on
http://localhost:8080and MCP onhttp://localhost:3001/mcp.Publish the
addin/folder as a network share (UNC path) that the Windows user can list — a native SMB share, or on a VM the host's shared folder (e.g.\\Mac\Home\powerpoint-mcp\addinunder Parallels).Trust that folder as an add-in catalog (per user, one-time):
reg add HKCU\Software\Microsoft\Office\16.0\Wef\TrustedCatalogs\{7E3F2A11-93C4-4B5D-8E6F-1A2B3C4D5E6F} /v Id /t REG_SZ /d {7E3F2A11-93C4-4B5D-8E6F-1A2B3C4D5E6F} /f reg add HKCU\Software\Microsoft\Office\16.0\Wef\TrustedCatalogs\{7E3F2A11-93C4-4B5D-8E6F-1A2B3C4D5E6F} /v Url /t REG_SZ /d \\host\share\addin /f reg add HKCU\Software\Microsoft\Office\16.0\Wef\TrustedCatalogs\{7E3F2A11-93C4-4B5D-8E6F-1A2B3C4D5E6F} /v Flags /t REG_DWORD /d 1 /fRestart the Office app, then: Home → Add-ins → Advanced... → SHARED FOLDER tab → select Office Live MCP → Add. The taskpane opens and connects to the bridge over
ws://localhost:8080; point your MCP client athttp://localhost:3001/mcp.
Notes:
Use
manifest.xmlfor PowerPoint,manifest.word.xmlfor Word,manifest.excel.xmlfor Excel. All point the taskpane athttp://localhost:8080.As on macOS, the ribbon icon stays a placeholder unless the bridge runs over HTTPS (see "Optional: the ribbon icon" above) and the manifests point at
https://localhost:8443.If a build refuses plain-HTTP catalogs, the bridge can also emulate a SharePoint-style HTTPS catalog (
server/sharepoint-catalog.ts, enabled withBRIDGE_TLS=1): Office enumerateshttps://<host>:8443as a corporate catalog and the same manifests are served from there.
How it is tested
Two layers, because they catch different bugs.
The mock suite (375 tests) verifies tool registration, argument handling and the generated Office.js code. It is fast and runs on every change.
The live suite runs every tool against a real open document. This is where the mock tests turned out to be insufficient: live testing caught three real API bugs the mocks could never find. Range.findAllOrNullObject does not exist on this host, DataValidationRule takes a type-keyed object rather than a { type, ... } envelope, and calculation lives on workbook.application, not workbook. All fixed and now covered by both layers.
Credits
This project stands on the work of others.
kzarzycki/powerpoint-mcp (MIT): the bridge architecture, the PowerPoint tool modules and the add-in are his. This fork exists because of it.
mindstone/mcp-servers (FSL-1.1-MIT): studied as a reference for Word and Excel add-in design. No code from it is included, its license does not allow that, so the Word and Excel tools here are an independent implementation.
The live Word MCP projects (kennypeh85/word-mcp, HelloWorld-Open/word-mcp-server, Han-ops-dev/word-mcp-server, all MIT) and sbroenne/mcp-server-excel (MIT) shaped which tools were worth building. Design references only, no code.
The icon uses the Tabler Icons bridge glyph as a starting point for the ring mark (MIT).
Full attribution in NOTICE.
Status
Working on macOS with desktop Word, Excel and PowerPoint. PowerPoint Web works for the upstream tool set. The Word and Excel tool surfaces are young: they cover what I actually needed, and the escape hatch covers the rest. Expect rough edges and please open issues on the fork.
License
MIT, like the upstream project. See LICENSE.
Available Tools
86 toolsadd_chartB
Create a chart from a range. Chart types: ColumnClustered, ColumnStacked, BarClustered, BarStacked, Line, LineMarkers, Pie, Doughnut, Area, XYScatterLines. Returns the chart name and title.
| Name | Required | Description | Default |
|---|---|---|---|
| range | Yes | A1 range address with the data (and labels) to plot. | |
| title | No | Chart title. Empty string removes the title. | |
| chartType | No | Chart type. Default ColumnClustered. | |
| sheetName | No | Worksheet name. Defaults to the active worksheet. | |
| workbookId | No | Target workbook ID from list_workbooks. Optional when only one workbook is connected. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavior burden. It does disclose return values ('returns the chart name and title'), which is useful since no output schema exists, but it says nothing about where the chart is placed, whether a new worksheet is created, permission requirements, or reversibility of the mutation.
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. The chart-type enumeration is somewhat redundant with the schema enum and incomplete against it, which slightly dilutes the value-per-sentence.
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 5-parameter creation tool with no output schema, the description covers the action and the return values. It is nearly complete, but leaves chart placement behavior (default sheet, insertion position) implicit, which an agent may need to know.
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 reinforces that the data comes 'from a range' and that title is settable, but adds no syntax, defaults, or format detail 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 and resource ('Create a chart from a range') and enumerates supported chart types, which distinguishes it from siblings like add_table or add_conditional_format. However, the chart-type list is a partial subset of the schema enum (omitting ColumnStacked100, BarStacked100, PieStacked, AreaStacked), which could briefly mislead.
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 by the verb and the 'from a range' phrasing, but there is no explicit when-to-use/when-not guidance and no mention of the related sibling edit_slide_chart or how this differs from other Excel mutation tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_commentC
Add a threaded comment to a cell.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Comment text. | |
| workbookId | No | Target workbook ID from list_workbooks. Optional when only one workbook is connected. | |
| cellAddress | Yes | Cell reference including sheet, e.g. "Sheet1!A1". |
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 discloses only that a comment is created; it says nothing about permissions, whether an existing thread on the cell is reused or a new thread is started, or what the call returns.
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 efficient but so terse that it omits any routing or behavioral context the reader would need.
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 simple three-parameter create operation with a fully documented schema and no output schema, the description is adequate to invoke the tool. It is incomplete for anything beyond invocation, since it says nothing about threading behavior or the response.
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 three parameters (text, workbookId, cellAddress) are already documented, including the optional-workbook rule. The description adds no meaning beyond the schema, 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?
The description gives a specific verb and resource ('Add a threaded comment to a cell'), and 'threaded' distinguishes it from a plain note. It does not explicitly distinguish it from the sibling reply_to_comment, which also 'adds' to a thread, so it falls short of a 5.
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 use this tool versus alternatives. With reply_to_comment, resolve_comment, and read_threaded_comments in the sibling set, the agent must infer that this creates a new thread rather than replying to one.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_conditional_formatB
Add a conditional formatting rule to a range. Supports cellValue (compare with a formula and fill on match), colorScale (min/max gradient), dataBar, and iconSet rules.
| Name | Required | Description | Default |
|---|---|---|---|
| range | Yes | A1 range address. | |
| formula1 | No | cellValue: comparison value/formula, e.g. "0" or "=TODAY()". | |
| formula2 | No | cellValue: second bound for Between/NotBetween. | |
| maxColor | No | colorScale: maximum color. Default "#63BE7B". | |
| minColor | No | colorScale: minimum color. Default "#F8696B". | |
| operator | No | cellValue: comparison operator. | |
| ruleType | Yes | Type of rule. | |
| fillColor | No | cellValue: fill color on match, as #RRGGBB. Default "#FFC7CE". | |
| sheetName | No | Worksheet name. Defaults to the active worksheet. | |
| workbookId | No | Target workbook ID from list_workbooks. Optional when only one workbook is connected. | |
| iconSetStyle | No | iconSet: icon set style. Default ThreeTrafficLights1. |
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 disclose what each rule type does conceptually (cellValue compares via formula and fills on match, colorScale is a min/max gradient), but says nothing about whether existing rules are replaced or appended, rule priority/order, permission requirements, or what is returned after the add.
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 compact sentences with the core action front-loaded and the rule-type enumeration immediately after; no filler. It omits required-field note but nothing 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 11 parameters, no annotations, and no output schema, the definition is adequate but thin: it never addresses defaults behavior, whether the new rule is appended to existing ones, or what the agent gets back. The high schema coverage compensates for the parameter side but not for the mutation semantics.
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% and the schema already prefixes each parameter with its applicable rule type (formula1/operator/fillColor for cellValue, minColor/maxColor for colorScale), so the description's grouping adds no information beyond the structured fields. 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+resource ("Add a conditional formatting rule to a range") and enumerates the four rule types it supports, which lets an agent distinguish it from format_range or set_data_validation. It does not explicitly name a sibling or exclusion, so it stops short of a 5.
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 by the tool name and the rule-type list; there is no statement of when to prefer this over format_range, or when a static format is the better choice. No prerequisites (e.g., workbook must be connected, rule precedence) are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_nameC
Define a named range (named formula) in the workbook, e.g. name "TaxRate" for "=Sheet1!$B$1".
| Name | Required | Description | Default |
|---|---|---|---|
| ref | Yes | Reference formula, e.g. "=Sheet1!$A$1:$D$10". | |
| name | Yes | Name to define, e.g. "TaxRate". | |
| comment | No | Optional description. | |
| workbookId | No | Target workbook ID from list_workbooks. Optional when only one workbook is connected. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, and it only restates the operation. It does not say whether an existing name is overwritten or errors, whether workbookId is required when multiple workbooks are connected, or what the call returns on success.
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 the example inline, so nothing is wasted. It is slightly under-specified for a mutation tool rather than over-long.
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 simple four-parameter tool with full schema coverage and no output schema, the description is minimally sufficient to permit a correct call. It stops short of covering duplicate-name behavior and multi-workbook targeting, which are the two things an agent could still get wrong.
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 including the optional comment and workbookId are already documented in the schema. The description reinforces the name/ref pairing with an example but adds no syntax or validation details beyond that; 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?
Specific verb 'Define' plus resource 'named range (named formula)' and a concrete example mapping "TaxRate" to "=Sheet1!$B$1". No sibling tool in the Excel family overlaps with named-range creation, so the agent can distinguish it without extra effort, though the description never says so 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 description gives no when-to-use guidance, no alternatives (e.g. execute_exceljs for bulk operations), and no prerequisites such as needing a connected workbook or what happens if the name already exists. The example implies the intended scenario but provides no routing or exclusion rules.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_slideA
Add a new slide from a layout at a specific position, with placeholder text pre-filled and shapes renamed to layout names. Use inspect_layouts to find available layout names and placeholder names. Returns the new slide index and its placeholder shapes with semantic names.
| Name | Required | Description | Default |
|---|---|---|---|
| position | No | Zero-based target slide index. The new slide is inserted at this position (existing slides shift right). Default: append at end. | |
| layoutName | Yes | Layout name from inspect_layouts (e.g. "Title and Content", "Section Header"). Case-insensitive match. Layouts starting with "_" are rejected (technical layouts). | |
| placeholders | No | Map of layout placeholder name → text content. E.g. {"section_title": "Backup Slides", "section_subtitle": "Evidence & appendix"}. Names must match layout placeholder names from inspect_layouts. | |
| presentationId | No | Target presentation ID from list_presentations. Optional when only one presentation is connected. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden alone; it does disclose two non-obvious side effects (placeholder text pre-filled, shapes renamed to semantic layout names) and the return payload. It omits error/permission behavior and the rejection of `_`-prefixed layouts (which lives only in the schema), leaving meaningful gaps 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 action, then the prerequisite, then the return value — no filler and no 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 the description compensates by explaining what comes back (new slide index and placeholder shapes with semantic names). Combined with a fully documented input schema, only mutation safety/error context 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% and each parameter is thoroughly documented there, including the zero-based insertion semantics and case-insensitive layout matching. The description restates layout/placeholder concepts at a high level without adding format or edge-case detail beyond the schema, 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?
The description states a specific verb and resource ("Add a new slide from a layout") plus the scope details that separate it from sibling `duplicate_slide` (new-from-layout rather than copy-existing). It doesn't explicitly name `duplicate_slide` as the alternative, but the resource and mechanism are unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Use inspect_layouts to find available layout names and placeholder names" gives an explicit prerequisite workflow before calling, which is the main usage question for this tool. No exclusion/alternative cases are stated, 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.
add_tableB
Create an Excel table (ListObject) over a range. Returns the table name and range.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Table name. Auto-generated when omitted. | |
| range | Yes | A1 range address including headers, e.g. "A1:D20". | |
| style | No | Built-in table style name, e.g. "TableStyleMedium2". | |
| sheetName | No | Worksheet name. Defaults to the active worksheet. | |
| hasHeaders | No | True if the first row contains headers. Default true. | |
| workbookId | No | Target workbook ID from list_workbooks. Optional when only one workbook is connected. |
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, yet it only states that the table name and range are returned. It does not say whether an existing table in the range causes an error, whether source formatting is altered, whether the operation requires a selected/active worksheet, or that it is a workbook mutation.
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 action front-loaded and the return value second; 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?
It usefully discloses the return payload, so no output schema is needed. But for an unannotated mutation tool with six parameters, it omits conflict/error behavior and any note about workbook targeting or side effects on the underlying range, leaving meaningful 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% and every parameter (name, range, style, sheetName, hasHeaders, workbookId) is documented inline, so the baseline of 3 applies. The description adds no parameter meaning beyond the schema, notably nothing about what happens when both name and sheetName conflict with existing tables.
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 ("Create an Excel table (ListObject)") and scopes it ("over a range"), which also disambiguates it from the Word sibling insert_table and from read_table/edit_table_columns. An agent can identify what this tool does in one read.
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 use this versus alternatives such as insert_table (Word), add_worksheet, or format_range, and no prerequisites are given (e.g. that the range must already contain header data, or which workbook is targeted). The only implied usage is the phrase "over a range".
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_worksheetA
Add a new worksheet to the workbook, optionally at a specific position, and activate it. Returns the new sheet name and position.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Name for the new worksheet. Auto-generated when omitted. | |
| position | No | Zero-based position to insert at. Default: append at end. | |
| workbookId | No | Target workbook ID from list_workbooks. Optional when only one workbook is connected. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It usefully discloses two side effects an agent wouldn't otherwise know: the new sheet becomes active, and the response includes the new name and position. It says nothing about persistence (whether the workbook is saved), permission requirements, or what happens to the previously active 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?
Two clauses, zero waste: the action and its options first, then the return values. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a three-parameter, all-optional mutation tool with no output schema, the description supplies the return shape (name and position), which is exactly the gap an absent output schema leaves. Missing only persistence/permission context, which is minor here.
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 name, position, and workbookId fully. The description only echoes position optionally and the auto-generation/activation semantics, adding little beyond structured data; 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 and resource ('Add a new worksheet to the workbook') plus two behavioral details: optional position and activation. It is clearly distinguishable from update_worksheet/delete_worksheet by the verb, though it never names a sibling or states the boundary 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?
Usage is implied by the verb – add a sheet when one is needed – and 'optionally at a specific position' hints at the insertion use case. There is no explicit when-to-use/when-not guidance, no mention of prerequisites, and no routing to alternatives such as update_worksheet for existing sheets.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
autofit_rangeB
Autofit column widths and/or row heights of a range to their content.
| Name | Required | Description | Default |
|---|---|---|---|
| rows | No | Autofit row heights. Default true. | |
| range | Yes | A1 range address, e.g. "A:F". | |
| columns | No | Autofit column widths. Default true. | |
| sheetName | No | Worksheet name. Defaults to the active worksheet. | |
| workbookId | No | Target workbook ID from list_workbooks. Optional when only one workbook is connected. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden, and it says nothing about whether the autofit persists to the saved file, whether a save step is needed, what permissions or open-workbook state are required, or what the response looks like. The 'and/or' phrasing does convey that rows/columns can be targeted independently, but the mutation's side effects go undisclosed.
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?
One sentence, front-loaded with the verb and resource, with the scope qualifier at the end. There is no filler or redundancy; every clause carries 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 five-parameter formatting tool with no annotations and no output schema, the description covers purpose adequately and the schema covers parameters fully, but it omits the behavioral context an agent needs (persistence, save requirement) and does not differentiate from set_dimensions. It is adequate but has 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 every parameter including rows, columns, sheetName, and workbookId is already documented in the schema. The description's 'and/or' hints at the rows/columns toggle but adds no syntax, default, or format detail beyond what the schema states, 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?
The description names a specific operation (autofit) applied to specific resources (column widths and/or row heights) over a range, with the 'to their content' clause clarifying the semantic effect. It is clearly distinct from write-oriented siblings like write_range or format_range, though it never explicitly contrasts itself with set_dimensions, which is the nearest neighbor.
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: an agent can infer this is the tool for content-driven sizing, but the description never states when to prefer it over set_dimensions (explicit sizing) or format_range. No prerequisites, no exclusions, no named alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calculate_workbookA
Force Excel to recalculate the workbook. Use after writes when you need formula results to be current before reading them back.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Recalculation type. Default "Recalculate". | |
| workbookId | No | Target workbook ID from list_workbooks. Optional when only one workbook is connected. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the behavioral load. 'Force ... to recalculate' does convey a side effect on cached formula values, but it omits cost/latency, whether the workbook must be open or saved afterward, and what distinguishes the Full vs FullRebuild recalculation modes behaviorally.
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, front-loaded with the action and followed immediately by the condition that selects it. No filler, no repetition of the tool name or schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-required-param tool with a fully documented schema and no output schema, the description covers the essential decision: when to call it. It could say what to expect in return or note the recalculation-type trade-offs, but nothing critical to correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, including the recalculation-type enum and the optional workbookId fallback, so the schema already documents both parameters. The description adds nothing about parameter choice, leaving the baseline of 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 ('Force ... to recalculate') and resource ('the workbook'), which is unambiguous and readily separable from siblings like refresh_pivottables or inspect_workbook. An agent knows exactly what the tool does 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?
Gives a clear trigger condition: use after writes when formula results must be current before reading back. It doesn't name explicit alternatives or exclusion cases (e.g., when a pivot refresh is the right choice instead), so it stops short of full when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clear_rangeA
Clear the contents and formatting of a range in the live workbook.
| Name | Required | Description | Default |
|---|---|---|---|
| range | Yes | A1 range address, e.g. "A1:C10". | |
| sheetName | No | Worksheet name. Defaults to the active worksheet. | |
| workbookId | No | Target workbook ID from list_workbooks. Optional when only one workbook is connected. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It usefully states that both contents and formatting are cleared in the live workbook, which discloses the destructive scope. It does not mention reversibility, confirmation needs, permissions, or error behavior, leaving meaningful gaps 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?
It is a single compact sentence with no wasted words. The destructive action and target are front-loaded, making it easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is adequate for a simple three-parameter mutation with a complete schema and no output schema. However, because there are no annotations identifying destructive behavior, it should do more to flag irreversibility or safe-usage constraints before an agent invokes it.
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 three parameters are already documented in the schema. The description adds no parameter-level detail beyond the basic range concept, which is acceptable at the baseline when schema coverage is complete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource: 'Clear the contents and formatting of a range' in the 'live workbook'. It implies a distinction from read_range, write_range, and format_range by emphasizing both content and formatting removal, but it does not explicitly name which sibling to use instead.
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 by the purpose: an agent can infer this is the tool for emptying a range. However, there is no explicit when-to-use guidance, no exclusions, and no comparison to siblings such as write_range or format_range.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
comment_on_paragraphC
Add a comment to a paragraph (anchored on its text).
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Comment text. | |
| index | Yes | Zero-based paragraph index to comment on. | |
| documentId | No | Target document ID from list_documents. Optional when only one document is connected. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It mentions the anchoring behavior, which is useful, but does not describe permissions, mutation effects, error behavior for invalid indices, or what happens when documentId is omitted.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no wasted words. It is appropriately sized for a simple targeted action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, this description is too sparse. It omits authorization needs, return behavior, and specifics about how the comment anchors to paragraph text, leaving important context 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 all three parameters are documented in the schema. The description adds the anchoring detail but no additional parameter meaning beyond what the schema already provides; 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 states a specific verb and resource: 'Add a comment to a paragraph,' and adds the anchoring detail. It is clear what the tool does, but it does not explicitly distinguish this from sibling tools like add_comment or read_comments.
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 use this tool versus alternatives such as add_comment or read_comments. Usage is only implied by the name and description; no exclusions or prerequisites are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
copy_rangeB
Copy a source range to a target range in the live workbook. Copies values, formulas and formatting by default; valuesOnly copies just the results.
| Name | Required | Description | Default |
|---|---|---|---|
| source | Yes | A1 range address to copy from, e.g. "A1:C3". | |
| target | Yes | A1 range address (top-left corner) to copy into, e.g. "E1". | |
| sheetName | No | Worksheet name for both ranges. Defaults to the active worksheet. | |
| valuesOnly | No | Copy only the calculated values, not formulas or formatting. | |
| workbookId | No | Target workbook ID from list_workbooks. Optional when only one workbook is connected. |
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 helpfully discloses default copy semantics (values, formulas, formatting) and the valuesOnly variant, but it does not state that target contents are overwritten, whether the operation is reversible, or what permissions or error conditions apply. This is a meaningful mutation 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 with zero waste, and the main action is front-loaded before the default-behavior clarification. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a five-parameter mutation tool with no annotations and no output schema, the description is adequate but incomplete. It explains copy semantics but omits overwrite behavior, cross-sheet implications of sheetName, and what the tool returns.
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 thoroughly. The description reinforces the default behavior and the valuesOnly effect, but adds no syntax or format details beyond 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?
The description states a specific verb and resource ('Copy a source range to a target range in the live workbook'), which is clearly distinguishable from siblings like write_range or clear_range. It lacks explicit sibling differentiation, but the copy operation is unique enough that an agent can identify it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as write_range, format_range, or insert_or_delete_range. The description implies it is a copy operation but does not state preconditions, exclusions, or the scenario where copying is preferred over writing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
copy_slidesA
Copies slides between two open presentations entirely server-side — the Base64 data never enters Claude context. Exports from the source presentation and inserts into the destination in a single operation. Both presentations must be connected to the bridge. Requires PowerPointApi 1.8.
| Name | Required | Description | Default |
|---|---|---|---|
| formatting | No | Formatting mode. Default: KeepSourceFormatting. | |
| targetSlideId | No | Insert after this slide ID in destination (format: "nnn#" or "#mmmmmmmmm" or "nnn#mmmmmmmmm"). If omitted, inserts at the beginning. | |
| sourceSlideIndex | Yes | Zero-based slide index to copy from the source presentation | |
| sourcePresentationId | Yes | Source presentation ID from list_presentations | |
| destinationPresentationId | Yes | Destination presentation ID from list_presentations |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does disclose key traits: the transfer is server-side, Base64 never enters context, and export+insert happen in one operation. It omits failure behavior, whether the destination is modified destructively, and what the caller receives back.
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 tightly packed sentences, each earning its place: what it does, the context-saving mechanism, and the operational prerequisites. The most useful fact (server-side, no Base64 in context) is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 5-parameter mutation tool with no output schema, the description covers mechanism and prerequisites well. It leaves a small gap around return value and what happens to the destination deck's existing state on insert.
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% — every parameter, including the formatting enum and slide ID format, is documented in the schema itself. The description adds no syntax or semantic detail beyond restating that both presentations are involved, 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 and resource ('Copies slides between two open presentations') with the crucial qualifier 'entirely server-side'. This distinguishes it from sibling tools like duplicate_slide (in-deck copy) and get_local_copy, since the operation crosses document boundaries.
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 prerequisites: both presentations must be connected to the bridge and PowerPointApi 1.8 is required. It does not, however, explicitly contrast with duplicate_slide or explain when copying would be preferable to export/import alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_paragraphB
Delete one paragraph (text and paragraph mark) from the document.
| Name | Required | Description | Default |
|---|---|---|---|
| index | Yes | Zero-based paragraph index. | |
| documentId | No | Target document ID from list_documents. Optional when only one document is connected. |
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 for a destructive mutation. It usefully discloses that both the paragraph text and paragraph mark are deleted, but it does not mention irreversibility, required permissions, confirmation behavior, or effects on paragraph indexes. This is a meaningful gap for a deletion 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?
The description is a single front-loaded sentence with no wasted words. It immediately states the action and scope. The brevity is appropriate for this simple 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?
The tool is simple, with two fully documented parameters and no output schema, so the description covers the core action adequately. However, for a destructive operation with no annotations, it omits important context about side effects and reversibility. It is minimally complete but not fully self-sufficient.
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 explains the required zero-based index and optional documentId. The description does not add parameter-level details beyond what the schema provides. 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 states a specific verb and resource: delete one paragraph from the document. It also clarifies that both the text and paragraph mark are removed, which distinguishes it from sibling tools that read, insert, or format paragraphs. It does not explicitly name a sibling alternative, but the purpose is clear.
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 use this tool versus alternatives such as set_paragraph_text or insert_paragraph. It also does not state prerequisites, such as whether the document must be saved or whether deletion can be undone. The usage is only implied by the tool name and action.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_worksheetA
Delete a worksheet from the workbook. This removes its contents permanently and can break formulas referencing it.
| Name | Required | Description | Default |
|---|---|---|---|
| sheetName | Yes | Name of the worksheet to delete. | |
| workbookId | No | Target workbook ID from list_workbooks. Optional when only one workbook is connected. |
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 does disclose two consequential behaviors: the removal is permanent and it can break formulas that reference the sheet. It omits other relevant traits such as whether the operation can be undone, what error occurs for a missing sheet or the last remaining sheet, and what is returned.
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, verb and resource front-loaded, followed immediately by the risk. Every clause earns its place and 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 simple two-parameter destructive tool with no output schema and full schema coverage, the description supplies the essential purpose and the main hazard. The only meaningful gaps are edge-case behavior (last sheet, nonexistent name) and confirmation expectations, which are secondary for a tool this small.
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 sheetName and the optional workbookId are already documented in the schema, including the list_workbooks sourcing hint. The description adds no parameter-level meaning beyond that, which matches the baseline for fully documented schemas.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Delete a worksheet from the workbook"), which cleanly separates it from add_worksheet and update_worksheet in the sibling list. It stops short of explicitly naming an alternative or contrasting scope, so it is clear but not maximally differentiated.
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 rather than stated: an agent infers this is the tool for removing a sheet. The warning about permanent removal and broken formulas acts as an implicit 'only if you mean it' guard, but there is no explicit when-to-use, when-not, or alternative (e.g. clear_range to empty a sheet without deleting it).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
duplicate_slideA
Duplicate a slide within the same presentation. Exports the slide and reimports it at the specified position. Data stays server-side. The reimport makes PowerPoint view jump to the first slide.
| Name | Required | Description | Default |
|---|---|---|---|
| slideIndex | Yes | Zero-based index of the slide to duplicate | |
| insertAfter | No | Zero-based slide index to insert the duplicate after. Default: same as slideIndex (duplicate appears right after the source). | |
| presentationId | No | Target presentation ID from list_presentations. Optional when only one presentation is connected. |
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 the export/reimport mechanism, notes 'Data stays server-side,' and warns of a visible side effect ('the reimport makes PowerPoint view jump to the first slide'). It stops short of stating permission requirements or whether notes/animations/layout links are preserved.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences, each contributing something: purpose, mechanism, data locality, and the UI side effect. The key action is front-loaded and 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?
No output schema exists, and the description never says what is returned (presumably the new slide's index or the duplicated slide object), leaving the agent unable to chain on the result. Core behavior and the notable side effect are covered, but this return-value gap plus unstated fidelity guarantees keep it at minimum-viable-plus.
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% — every parameter, including the insertAfter default behavior, is documented in the schema itself. The description adds no parameter-level detail beyond that, 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 and resource ('Duplicate a slide') and constrains scope to 'within the same presentation,' which separates it from the cross-presentation-sounding copy_slides sibling. It does not name copy_slides explicitly, so sibling differentiation is implied rather than stated.
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 scope phrase 'within the same presentation' implies when this tool applies, and 'at the specified position' hints at insertAfter usage. However, it never says when to prefer copy_slides, add_slide, or edit_slide_xml instead, and no prerequisites or exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
edit_shape_paragraphsA
Replace paragraph content of a shape with raw OOXML <a:p> XML. Preserves <a:bodyPr> and <a:lstStyle>. Use read_shape_paragraphs first to get the current XML, modify it (using /pptx skill knowledge), then write it back. The slide is exported, modified server-side, and reimported — data never enters Claude's context. NOTE: the reimport deletes and reinserts the slide, which makes PowerPoint's view jump to the first slide. For text-only changes, prefer execute_officejs (in place via shape.textFrame.textRange — view position is preserved).
| Name | Required | Description | Default |
|---|---|---|---|
| xml | Yes | The <a:p> paragraph XML to replace the current text body content with | |
| shapeId | Yes | Shape ID from inspect_slide results | |
| slideIndex | Yes | Zero-based slide index | |
| presentationId | No | Target presentation ID from list_presentations. Optional when only one presentation is connected. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the disclosure burden and does it well: it explains the server-side export/modify/reimport mechanism, that data never enters the model's context, and the key side effect that reimport deletes and reinserts the slide causing PowerPoint to jump to slide one. That side-effect warning is exactly the kind of non-obvious behavior an agent needs before mutating.
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?
Front-loaded with the core action, followed by prerequisites, mechanism, and the caveat with its alternative. Dense and mostly earning its space, though the export/reimport explanation and the view-jump note partially overlap and could be tightened.
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 supplies the full picture: prerequisite read step, required /pptx knowledge, side effects, and the preferred alternative for text-only edits. An agent has everything needed to invoke it correctly and avoid the pitfall.
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 baseline is 3; the description adds value by clarifying that xml is the <a:p> paragraph XML that replaces the current text body while bodyPr and lstStyle survive, and by situating shapeId/slideIndex in the read-then-write workflow. It doesn't add format-level detail beyond that, so it stops short of a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (replace a shape's paragraph content with raw <a:p> OOXML) and specifies the exact scope of what is and isn't touched (preserves <a:bodyPr> and <a:lstStyle>). It is clearly distinguishable from read_shape_paragraphs and edit_slide_xml 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?
Explicitly routes the agent: call read_shape_paragraphs first to get current XML, then write it back, and use execute_officejs instead for text-only changes because view position is preserved. Both the when and the when-not are stated with the condition that selects each.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
edit_slide_chartA
Create a chart on a slide from structured data. Generates all OOXML automatically (chart XML, rels, graphic frame, Content_Types). Supports column, bar, line, pie, doughnut, and area charts with multiple series.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | Chart title | |
| series | Yes | Data series | |
| options | No | Chart options | |
| position | No | Chart position in points. Defaults to centered on slide. | |
| chartType | Yes | Chart type | |
| categories | Yes | Category labels (x-axis or pie slices) | |
| slideIndex | Yes | Zero-based slide index | |
| presentationId | No | Target presentation ID from list_presentations. Optional when only one presentation is connected. |
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 all OOXML artifacts are generated automatically and lists supported chart types, but it omits overwrite/replacement semantics, permission requirements, failure modes, and response behavior for this 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?
The description is two efficient sentences with no wasted text. The core creation action is front-loaded and the second sentence adds relevant supported-type context.
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 complex 8-parameter nested mutation tool with no annotations and no output schema, the description covers creation and supported chart types but leaves gaps around usage selection, overwrite behavior, and return values. The schema handles parameter details, but the description is not fully complete for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 8 parameters, including nested series, options, position, and presentationId. The description adds only chart type and multiple-series context, which is already represented in the schema, so 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 states a specific verb and resource: 'Create a chart on a slide from structured data,' and enumerates supported chart types and multiple series. However, the tool name says edit_slide_chart while the description says create, and it does not explicitly distinguish this from the raw XML sibling edit_slide_xml.
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, or alternative guidance. The phrase 'from structured data' implies it is intended for data-driven chart creation rather than raw OOXML editing, but the agent must infer that versus edit_slide_xml.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
edit_slide_xmlA
Edit slide XML and reimport. Two modes: (1) xml mode — provide finished XML string (use read_slide_xml first to get current XML), (2) code mode — provide JS code that manipulates the pre-parsed DOM (receives: doc, findShapeById, NS_P, NS_A, escapeXml, serializeXml, DOMParser). Code mode preserves untouched attributes. The slide is exported, modified server-side, and reimported — data never enters Claude's context. NOTE: the reimport deletes and reinserts the slide, which makes PowerPoint's view jump to the first slide — reserve this for structural changes (new shapes, layout rebuilds).
| Name | Required | Description | Default |
|---|---|---|---|
| xml | No | Modified XML — full slide XML or a single shape's <p:sp> element (when shapeId is provided). Mutually exclusive with 'code'. | |
| code | No | JS code that manipulates the pre-parsed slide DOM. Receives: doc (Document), findShapeById(id) → Element|null, NS_P, NS_A (namespace strings), escapeXml(text), serializeXml(node), DOMParser. Mutually exclusive with 'xml'. | |
| shapeId | No | Optional shape ID (xml mode only). If provided, replaces only that shape's <p:sp> element instead of the full slide XML. | |
| slideIndex | Yes | Zero-based slide index | |
| explanation | No | Brief description of what the code does (for logging, max 50 chars). Only used with code mode. | |
| presentationId | No | Target presentation ID from list_presentations. Optional when only one presentation is connected. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden and does so well: it discloses the server-side export/modify/reimport flow, that data never enters context, that code mode preserves untouched attributes, and critically that the reimport deletes and reinserts the slide causing PowerPoint's view to jump to slide 1. These are exactly the side effects an agent needs before invoking 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?
Front-loaded with the core action and mode split, and the behavioral caveat is at the end where it lands as a warning. Some duplication of the code-mode helper list (already in schema) is minor waste, but overall it is dense with 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?
For a mutation tool with six params and no output schema, the description covers workflow, mode semantics, context-isolation guarantees, and the view-jump side effect. Nothing an agent needs to call it safely and 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 100% and the schema already documents xml, code, shapeId, explanation, and presentationId including mutual exclusivity and the code-mode helper signature. The description mostly restates the mode structure rather than adding syntax or format detail beyond the schema, 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?
States a specific verb and resource (edit slide XML and reimport) and immediately disambiguates the two operating modes. It implicitly and explicitly distinguishes itself from read_slide_xml (used as a prerequisite) and from simpler sibling edit tools (format_shapes, edit_shape_paragraphs) by scoping itself to structural changes.
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 concrete when-to-use routing: read_slide_xml first to fetch current XML, and 'reserve this for structural changes (new shapes, layout rebuilds)' which tells the agent when NOT to use it. The two modes are described with their selection criteria, leaving little inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
edit_slide_zipA
Update multiple files in the slide zip and reimport in a single operation. Accepts a map of { path: content } — can modify existing files or add new ones (e.g. chart XML + rels). Auto-registers Content_Types for new chart files. Use read_slide_zip first to get the current content.
| Name | Required | Description | Default |
|---|---|---|---|
| files | Yes | Map of { zipPath: newContent }. Can include existing paths (to modify) or new paths (to add). Example: { "ppt/slides/slide1.xml": "<p:sld>...</p:sld>", "ppt/charts/chart1.xml": "<c:chartSpace>...</c:chartSpace>" } | |
| slideIndex | Yes | Zero-based slide index | |
| presentationId | No | Target presentation ID from list_presentations. Optional when only one presentation is connected. |
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 discloses that files are reimported in a single operation and that Content_Types are auto-registered for new chart files, which is useful. However, it does not state that existing paths are overwritten, nor does it cover permissions, failure modes, or return 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?
Four short sentences, front-loaded with the core action. Each sentence adds practical information: input shape, add/modify behavior, Content_Types side effect, and the read-first prerequisite.
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 multi-file zip mutation with no output schema, the description covers the operation, input map, side effect, and prerequisite well enough to invoke it correctly. It leaves return values and error behavior unstated, which is a moderate but not critical 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 reinforces the files map as { path: content } and mentions adding chart XML and rels, but this largely repeats the schema's own files description and adds no new syntax or constraints beyond it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: update multiple files in the slide zip and reimport them in one operation. It differentiates from single-file XML editing implicitly via 'multiple files' and the map input, but does not explicitly name edit_slide_xml as the alternative.
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 a clear prerequisite: 'Use read_slide_zip first to get the current content.' It does not explicitly explain when to use this versus edit_slide_xml or edit_slide_chart, but the batch-update context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
edit_speaker_notesA
Set speaker notes on one or more slides. Accepts markdown text (paragraphs, bold, italic). Converts to OOXML server-side and injects via single-slide reimport. Replaces all existing notes on the specified slides.
| Name | Required | Description | Default |
|---|---|---|---|
| notes | Yes | Array of slide notes to set. | |
| presentationId | No | Target presentation ID from list_presentations. Optional when only one presentation is connected. |
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 the destructive overwrite ('Replaces all existing notes'), the accepted input format (markdown), and the server-side mechanism (OOXML conversion, single-slide reimport). It omits return behavior and any failure modes, keeping it short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences, front-loaded with purpose, then format, mechanism, and the destructive caveat. Nothing is redundant and every sentence adds a distinct fact an agent needs.
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 2-parameter write tool with no output schema, the description covers the essentials: what it writes, format, mechanism, and overwrite behavior. The only real gap is not stating what a successful call returns (e.g., confirmation or affected slide indices).
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 parameters are already documented, including markdown support and the optional presentationId. The description restates markdown support and 'one or more slides' but adds no semantics beyond the schema, 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?
Opens with a specific verb+resource: 'Set speaker notes on one or more slides.' This clearly distinguishes it from read_speaker_notes in the sibling list by verb alone, but it never names an alternative tool (e.g., edit_slide_xml) for the agent to consider.
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 by the verb and by 'Replaces all existing notes on the specified slides,' which warns of overwrite semantics. However, there is no explicit when-to-use/when-not guidance and no pointer to the read-only sibling (read_speaker_notes) or bulk XML editing alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
edit_table_columnsA
Add or delete columns of a table. Add: position "Before" inserts left of the first column, "After" right of the last column; optionally pre-fill with values (2D array, one column per entry). Delete: remove count columns starting at columnIndex (0-based). Note: some Word builds reject column operations with InvalidArgument.
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | Number of columns (default 1). | |
| action | Yes | Add or delete columns. | |
| values | No | For add: cell texts as 2D array (rows x added columns). | |
| position | No | For add: "Before" inserts at the left edge, "After" at the right edge. | |
| documentId | No | Target document ID from list_documents. Optional when only one document is connected. | |
| tableIndex | Yes | Zero-based table index. | |
| columnIndex | No | For delete: first column index to remove. |
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 disclose a meaningful behavioral trait beyond the schema, namely that some Word builds reject column operations with InvalidArgument, which helps an agent interpret failures. However, it never states that deletion permanently destroys cell content, nor anything about permissions or what the success response contains, which are significant gaps for a mutating 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?
The core action is front-loaded in a single short sentence, followed by mode-specific details separated by clear semicolons and a final caveat. There is no filler, and each clause adds usable 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?
With seven parameters, two enums, no output schema, and no annotations, the description covers the operation's two branches and the main failure mode well. It stops short of describing what happens to existing data on delete or what the tool returns, which would round out a mutation tool of this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all seven parameters are already documented, including enums and defaults. The description restates position, columnIndex, and the 2D-array shape of values without adding format or edge-case detail (for example, how many rows values must have), 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?
The first sentence names a specific verb pair and resource: add or delete columns of a table. It is clearly distinguishable from siblings like insert_table (creates a table) or set_table_cell (writes a single cell), so an agent can select it 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 description explains both modes in detail: for add, where Before/After insert and optional value pre-fill; for delete, count columns starting at columnIndex. It also flags a real operational caveat (some Word builds reject the operation with InvalidArgument), though it never names an alternative tool for cases where this one fails.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
execute_exceljsB
Execute arbitrary Office.js code inside the live Excel workbook. The code runs inside Excel.run(async (context) => { ... }) with 'context' available as a variable. Use 'await context.sync()' after loading properties. Return a value to get it back as the tool result. Common operations: read/write ranges (workbook.worksheets), formulas, tables, charts. Cell references use A1 notation; values/formulas are returned as arrays matching the range shape.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | Office.js code to execute. Runs inside Excel.run() with 'context' available. Use 'return' to send back a result. | |
| workbookId | No | Target workbook ID from list_workbooks. Optional when only one workbook is connected. |
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 execution wrapper shape, the required context.sync() step, and how results are returned. It omits behavior that matters for arbitrary live-workbook code: error/exception handling, whether mutations persist or are undoable, timeouts, and any risk warning.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences, front-loaded with the action and the execution contract, and the operations list is compact. The return-value and context.sync notes overlap slightly with the schema's own description, but no sentence 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?
For an arbitrary-code-execution tool with no annotations and no output schema, the definition covers the execution contract and return handling adequately. It falls short on failure modes, persistence of mutations, and result serialization limits, which an agent needs before running write-side code against a live workbook.
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% and both parameters are documented in the schema, so the baseline is 3. The description adds useful semantics beyond the schema (A1 notation, values/formulas returned as arrays matching range shape) but says nothing additional about workbookId 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+resource: executes arbitrary Office.js inside the live Excel workbook, which clearly differentiates it from the many declarative Excel CRUD siblings (read_range, write_range, format_range). It does not explicitly distinguish itself from the sibling execute_officejs, leaving the agent to infer Excel-vs-Office from the name.
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: 'arbitrary code' plus a list of 'common operations' suggests this is the escape hatch when the declarative tools fall short, but the description never says so, nor does it say when to prefer read_range/write_range/add_chart instead. Only the mechanical when ('await context.sync() after loading properties') is explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
execute_officejsA
Execute arbitrary Office.js code inside the live PowerPoint presentation. The code runs inside PowerPoint.run(async (context) => { ... }) with 'context' available as a variable. Use 'await context.sync()' after loading properties. Return a value to get it back as the tool result. For positioning, all values are in points (1 point = 1/72 inch). Common operations: add shapes, set text, change colors, add/delete slides. Edits run in place without reimporting the slide, so PowerPoint's current view position is preserved — prefer this over edit_shape_paragraphs / edit_slide_xml for text-only or formatting-only changes (to read a shape's text in place, load shape.textFrame with hasText + textRange).
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | Office.js code to execute. Runs inside PowerPoint.run() with 'context' available. Use 'return' to send back a result. | |
| presentationId | No | Target presentation ID from list_presentations. Optional when only one presentation is connected. |
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 explains the execution wrapper (PowerPoint.run with 'context'), the required await context.sync() pattern, that a returned value comes back as the tool result, that values are in points (1/72 inch), and that edits apply in place preserving the current view. It omits failure behavior — how errors/exceptions surface, whether partial edits persist, and any timeout or sandbox limits — which matters for arbitrary code execution.
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?
Purpose is front-loaded in the first clause, and the alternative-tool routing appears before the API details. Dense with useful content, though the final sentence stacks the view-preservation rationale, the sibling preference, and a parenthetical API hint, which could be split for cleaner scanning.
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 arbitrary-code-execution tool with no annotations and no output schema, the description covers execution context, sync, return values, units, and view preservation — enough to attempt a call. What's missing is the risk/error surface: whether thrown errors are returned as text, whether edits are reversible, and whether re-running is safe. That gap is significant for a tool that can mutate a live deck.
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 `code` and `presentationId` are already documented, including the PowerPoint.run wrapper and the return convention — the description mostly restates this. The points-unit note adds genuine meaning about how values inside the code are interpreted, but it is not tied to either parameter. Baseline 3 is appropriate given the schema does the parameter work.
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 — 'Execute arbitrary Office.js code inside the live PowerPoint presentation' — and immediately names the siblings it displaces (edit_shape_paragraphs / edit_slide_xml). An agent can distinguish this general escape hatch from the specialized edit tools 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?
Explicitly directs: 'prefer this over edit_shape_paragraphs / edit_slide_xml for text-only or formatting-only changes', which gives a concrete selection criterion against named alternatives. It also lists common operations to signal fit. It stops short of saying when NOT to use arbitrary code (e.g., prefer a dedicated tool for routine ops or when you don't know the API).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
execute_wordjsB
Execute arbitrary Office.js code inside the live Word document. The code runs inside Word.run(async (context) => { ... }) with 'context' available as a variable. Use 'await context.sync()' after loading properties. Return a value to get it back as the tool result. Common operations: read the body (context.document.body), insert paragraphs, search and replace, work with tables, read tracked changes.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | Office.js code to execute. Runs inside Word.run() with 'context' available. Use 'return' to send back a result. | |
| documentId | No | Target document ID from list_documents. Optional when only one document is connected. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the execution model (wrapped in Word.run, context variable, return mechanism), which is genuinely useful. But it omits safety/permission implications of arbitrary code execution, error behavior, and whether a failed run can mutate or corrupt the document — significant gaps for a mutation-capable 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?
Front-loaded with the core purpose, then execution details, then a compact list of common operations. Every sentence is informative and there is little waste, though the trailing operations list is somewhat loose.
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?
Explains the execution context and how to retrieve return values, which is helpful given there is no output schema. But for a code-execution tool it should say more about documentId behavior, failure/error handling, and safety expectations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both parameters (code, documentId) are already fully documented, including the Word.run context and the single-document default. The description adds only marginal detail beyond the schema, 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?
States a specific verb+resource: 'Execute arbitrary Office.js code inside the live Word document.' The Word targeting distinguishes it from execute_officejs/execute_exceljs siblings, though it never explicitly contrasts with them. An agent can tell what it does.
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?
Offers in-context API guidance (context.sync after loading properties, return values) and lists common operations, which implies when it's useful. However, it never routes the agent to the many specific Word siblings (insert_paragraph, replace_text, read_table) for simple tasks, nor says when this raw-escape-hatch tool should be preferred over them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_in_rangeA
Find text in a range or the whole used range. Returns the address of the first match, or all matches as a (possibly multi-area) address string.
| Name | Required | Description | Default |
|---|---|---|---|
| all | No | Return all matches instead of only the first. Default true. | |
| text | Yes | Text to find. | |
| range | No | A1 range address to search. Defaults to the used range. | |
| matchCase | No | Case-sensitive search. Default false. | |
| sheetName | No | Worksheet name. Defaults to the active worksheet. | |
| workbookId | No | Target workbook ID from list_workbooks. Optional when only one workbook is connected. | |
| completeMatch | No | Match the entire cell contents. Default false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden. It helpfully describes the return value as an address or multi-area address string, but it omits important behavior such as what happens when there is no match, whether the search covers formulas or values, and whether the operation 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?
The description is two tight sentences: first the purpose and search scope, then the return format. It is front-loaded and has no redundant or filler text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The full input schema documents all parameters and defaults, and the description explains the return shape even though there is no output schema. It could be more complete by specifying no-match behavior and whether it searches displayed values or formulas, but it is sufficient 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 all seven parameters are already documented in the schema. The description lightly reinforces the 'range' and 'all' parameters but adds no syntax, edge-case, or default semantics beyond what the schema provides; 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 uses a specific verb and resource: 'Find text in a range or the whole used range.' It also states the return value, making the tool's effect clear. However, it does not explicitly distinguish this tool from siblings such as search_text, read_range, or replace_in_sheet.
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 usage by saying it searches a range or the whole used range, and the schema documents defaults. But it gives no explicit guidance on when to use this versus sibling search/read tools, nor any exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
format_paragraphA
Format one paragraph: style, alignment, and font (name, size, bold, italic, color, highlight color). Only provided properties are changed.
| Name | Required | Description | Default |
|---|---|---|---|
| bold | No | Bold text. | |
| color | No | Font color as #RRGGBB. | |
| index | Yes | Zero-based paragraph index. | |
| style | No | Style name, e.g. "Heading 1". Built-in names matched locale-independently. | |
| italic | No | Italic text. | |
| fontName | No | Font family, e.g. "Calibri". | |
| fontSize | No | Font size in points. | |
| alignment | No | Paragraph alignment. | |
| documentId | No | Target document ID from list_documents. Optional when only one document is connected. | |
| highlightColor | No | Highlight color as #RRGGBB. Use "#FFFFFF" to clear. |
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 only supplied properties are modified, but it does not cover permissions, reversibility, whether paragraph-level formatting applies to all text runs, or what the tool returns.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single tight sentence with the core operation front-loaded and no wasted text.
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 rich schema coverage and no output schema, the description covers the essential scope and partial-update behavior. It could be stronger with explicit sibling routing, but the agent has enough 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 description coverage is 100%, so the schema already documents all parameters thoroughly. The description lists the formatting categories but adds little per-parameter meaning beyond what the schema provides, making 3 the 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?
The description states a specific verb and resource: format one paragraph, with style, alignment, and font properties. It is clear but does not explicitly distinguish this from nearby tools like set_paragraph_text or format_shapes.
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 "Only provided properties are changed" implies partial-update usage, but there is no explicit guidance on when to choose this tool versus set_paragraph_text for text changes or format_shapes for shape formatting.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
format_rangeA
Format a range: font (name, size, bold, italic, underline, color), fill color, borders (all/outline with style, weight, color), alignment, wrap, and number format. Only the provided properties are changed.
| Name | Required | Description | Default |
|---|---|---|---|
| bold | No | Bold text. | |
| range | Yes | A1 range address, e.g. "A1:C10". | |
| italic | No | Italic text. | |
| borders | No | Which borders to apply. "none" clears borders. | |
| fontName | No | Font family, e.g. "Calibri". | |
| fontSize | No | Font size in points. | |
| wrapText | No | Wrap text within cells. | |
| fillColor | No | Cell fill color as #RRGGBB, e.g. "#FFFF00". | |
| fontColor | No | Font color as #RRGGBB, e.g. "#FF0000". | |
| sheetName | No | Worksheet name. Defaults to the active worksheet. | |
| underline | No | Underline style. | |
| workbookId | No | Target workbook ID from list_workbooks. Optional when only one workbook is connected. | |
| borderColor | No | Border color as #RRGGBB. Default "#000000". | |
| borderStyle | No | Border line style. Default "Continuous". | |
| numberFormat | No | Number format string, e.g. "0.00%". | |
| verticalAlignment | No | ||
| horizontalAlignment | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It does disclose an important behavioral trait beyond the schema: 'Only the provided properties are changed' (partial, additive update). However it omits permissions, whether changes are reversible, which workbook/sheet it targets by default, and what the operation returns.
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 action and property inventory, then the key partial-update constraint. No wasted text for a 17-parameter 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 mutation tool with zero annotations, no output schema, and 17 parameters, the description covers the 'what' but is thin on behavior—no mention of permission requirements, response, or targeting defaults (which leak into schema-only fields like workbookId/sheetName). 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 coverage is 88%, so the schema already documents nearly all parameters and baseline is 3. The description reinforces the grouping of fields but adds little syntax beyond the schema, and its mention of border 'weight' doesn't correspond to any actual parameter (schema has only borderStyle/borderColor).
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 ('Format a range') and immediately enumerates exactly which formatting facets are controllable (font, fill, borders, alignment, wrap, number format). An agent can tell this apart from siblings like clear_range or write_range 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?
Usage is implied by 'Format a range' but there is no explicit when-to-use vs when-not guidance and no mention of alternatives such as clear_range for removing formatting or autofit_range. The agent must infer context from the sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
format_shapesA
Apply formatting to multiple shapes on a slide in one call. Generates Office.js code internally. Use for fill color, font bold/italic/size/color/name. Cannot set corner radius or borders (use edit_slide_xml code mode for those). Runs in place (no slide reimport), so PowerPoint view position is preserved.
| Name | Required | Description | Default |
|---|---|---|---|
| shapes | Yes | Shapes to format with their properties | |
| slideIndex | Yes | Zero-based slide index | |
| presentationId | No | Target presentation ID from list_presentations. Optional when only one presentation is connected. |
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 a lot: it explains the internal mechanism (generates Office.js code), that it runs in place without reimporting the slide, and the user-visible benefit (PowerPoint view position preserved). It does not say whether supplied properties merge with or replace existing formatting, nor what happens on partial failure with an invalid shape ID — the remaining gap keeps it below a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Five short sentences, front-loaded with purpose, then mechanism, then use cases, then the exclusion with its alternative, then the in-place guarantee. No sentence is filler and the exclusion is placed where an agent will hit it before committing.
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?
Covers purpose, supported properties, the main capability gap with a routing alternative, and an unusual behavioral guarantee (in-place execution preserving view). Since there is no output schema, the description could say more about what comes back or how partial failures are reported, which is the only meaningful shortfall for a batch-mutation tool.
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 shape ID provenance ('from inspect_slide or scan_slide') and hex-without-# format, so the schema does the heavy lifting. The description's enumeration of supported properties adds scope confirmation but no syntax or semantics beyond what the schema already 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?
States a specific verb and resource with explicit scope: 'Apply formatting to multiple shapes on a slide in one call.' It also carves out what it cannot do (corner radius, borders) and names the sibling that handles those, so an agent can distinguish it from edit_slide_xml without opening 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?
Names the concrete use case (fill color, font bold/italic/size/color/name), the exclusion (no corner radius or borders), and the exact alternative ('use edit_slide_xml code mode for those'). When-to-use, when-not-to-use and the fallback are all explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
freeze_panesA
Freeze rows and columns of a worksheet at a cell (everything above and left of the cell stays visible), or unfreeze. E.g. freezeAt "A2" freezes the first row, "B2" freezes row 1 and column A.
| Name | Required | Description | Default |
|---|---|---|---|
| freezeAt | Yes | Cell reference to freeze at, e.g. "A2". Pass null to unfreeze. | |
| sheetName | Yes | Worksheet name. | |
| workbookId | No | Target workbook ID from list_workbooks. Optional when only one workbook is connected. |
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 disclose the core effect (everything above and left of the cell stays visible) and the unfreeze path. It does not say whether an existing freeze is replaced, whether the state persists on save, or whether permissions are required for a protected 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?
Two sentences: the first states the operation and its visual effect, the second teaches the address semantics with two compact examples. Every clause earns its place and the definition is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a three-parameter, side-effecting-but-reversible worksheet view operation with no output schema, the description supplies almost everything an agent needs to call it correctly, including the null-unfreeze convention. Only the replace-existing-freeze and persistence questions are left open.
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 baseline would be 3, but the description adds real meaning by mapping cell references to outcomes ("A2" freezes the first row, "B2" freezes row 1 and column A), which the schema's bare "e.g. A2" does not convey. Sheet and workbook parameters gain nothing 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?
Specific verb (freeze/unfreeze) plus resource (rows and columns of a worksheet at a cell), and the parenthetical explains the resulting visibility state. No sibling tool touches worksheet panes, so there is no ambiguity to resolve.
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 covers both modes of use — freeze by supplying a cell, unfreeze by the null path — giving a clear operating context. It stops short of naming when to prefer a freeze over, say, set_dimensions or formatting, and states no prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_document_propertiesB
Read the document metadata: title, author, subject, keywords, comments, category, creation and last-save dates.
| Name | Required | Description | Default |
|---|---|---|---|
| documentId | No | Target document ID from list_documents. Optional when only one document is connected. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations and no output schema, the description carries the full burden, and it does disclose the returned field set (title, author, subject, keywords, comments, category, dates), which is valuable. However, it says nothing about default-document behavior when documentId is omitted, error cases, or permissions.
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 waste. The field enumeration earns its place because it substitutes for a missing output schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only metadata tool, the description covers purpose and returned fields, and the sole parameter is fully documented in the schema. The main remaining gap is behavior for the omitted-documentId default, which the schema does partially cover.
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%: documentId is fully described, including that it is optional when only one document is connected. The description adds no parameter 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 states a specific verb ('Read') and resource ('document metadata') and enumerates exactly which properties are returned. It is clear on its own, but it never mentions the write counterpart set_document_properties or any other sibling, so sibling differentiation is left implicit.
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 use this tool versus alternatives such as inspect_document, read_comments, or set_document_properties. The read-only nature is implied by 'Read' but no exclusions, prerequisites, or alternative routing are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_local_copyA
Returns a local file path for the presentation. For local files, returns the existing path. For SharePoint/cloud files, exports server-side and saves to a temp .pptx. Caches by revision number — re-exports only when the presentation has been saved since last export.
| Name | Required | Description | Default |
|---|---|---|---|
| presentationId | No | Target presentation ID from list_presentations. Optional when only one presentation is connected. |
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 the server-side export side effect, the creation of a temp .pptx, and revision-based cache invalidation ('re-exports only when the presentation has been saved since last export'). It omits where the temp file lives, whether it is overwritten/deleted, and any permission or failure 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?
Three short sentences, each earning its place: outcome first, then the local-vs-cloud branch, then the caching rule. Front-loaded and free of filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single optional parameter with no output schema, the description covers the decision-relevant behavior (export, temp file, cache-by-revision). Minor gaps remain on the shape of the returned path/error cases, but 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 100% and the single presentationId is fully documented in-schema, including the 'optional when only one presentation is connected' nuance. The description adds no parameter-level meaning, 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 and resource: 'Returns a local file path for the presentation.' It further splits the two cases (already-local file vs. SharePoint/cloud export), so an agent knows exactly what artifact it gets. No sibling tool overlaps this purpose, so differentiation is implicitly clear.
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: the reader infers this is the way to obtain a path for downstream file operations, and that cloud files incur an export. There is no explicit 'use this when' vs. 'use X instead', no prerequisites, and no guidance on when a fresh path is needed versus a cached one.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_paragraphB
Read one paragraph in full: text, style, alignment and font properties (name, size, bold, italic, color).
| Name | Required | Description | Default |
|---|---|---|---|
| index | Yes | Zero-based paragraph index. | |
| documentId | No | Target document ID from list_documents. Optional when only one document is connected. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries the full burden. 'Read' makes the non-mutating nature clear and the listed fields give useful output context, but it omits error behavior, permission requirements, and whether missing paragraphs return null or throw.
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 that front-loads the action and then enumerates the returned fields. There is no wasted wording.
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 simple two-parameter read tool with no output schema, the description adequately explains what is returned: text, style, alignment, and font properties. It could be more complete by mentioning the optional documentId fallback or error cases, but the core behavior is covered.
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 both parameters are fully documented. The description adds no parameter-specific syntax or constraints beyond what the schema already provides, 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: 'Read one paragraph in full.' The phrase 'one paragraph' implicitly distinguishes it from sibling read_paragraphs, but does not name the alternative 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?
No guidance on when to use this versus read_paragraphs, read_deck_text, or inspect_document. The intended use is inferable from 'one paragraph' and the required index parameter, but the description provides no explicit selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_selectionB
Read the current user selection (cursor) in the document.
| Name | Required | Description | Default |
|---|---|---|---|
| documentId | No | Target document ID from list_documents. Optional when only one document is connected. |
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. 'Read' correctly implies a non-mutating operation, but it says nothing about behavior when the selection is empty, whether it requires an active/connected editor, or what the selection payload looks like. Adequate but thin for a tool with zero annotation coverage.
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?
One short sentence with the action and the object front-loaded; nothing wasted and nothing buried.
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 trivial one-optional-param read with no output schema and no annotations, the description covers the what but not the return shape (selection range? text? empty state?) or the failure mode. Just enough to call it correctly, not enough to interpret the result confidently.
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% and the schema already explains that documentId is optional when only one document is connected. The description only echoes the notion of 'in the document' and adds no syntax or default-value meaning, 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?
States a specific verb ('Read') and a specific resource ('current user selection (cursor)'), which no sibling tool competes with. It stops short of 5 only because 'the document' is ambiguous across the Word/PowerPoint/Excel siblings, so the agent cannot tell which document surface this applies to from the description alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no indication of when to reach for this tool versus the many read_* / inspect_* siblings, and no prerequisites (e.g. a live editor session). Usage has to be inferred entirely from the phrase 'current user selection'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_tracked_changesA
List tracked changes (revisions) in the document: type (insertion/deletion), author, date and a text snippet. Read-only; Office.js cannot create tracked changes.
| Name | Required | Description | Default |
|---|---|---|---|
| documentId | No | Target document ID from list_documents. Optional when only one document is connected. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description handles the key behavioral fact well: it is read-only and Office.js cannot create tracked changes. It also describes the returned fields, though it omits ordering, pagination, and whether resolved or rejected changes are included.
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 compact sentences, front-loaded with purpose and return fields, then the read-only limitation. Every sentence earns its place with no redundant text.
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 simple read-only listing tool with no output schema, the description is nearly complete: it states what is returned (type, author, date, snippet) and the read-only constraint. Minor omissions such as ordering or pagination are unlikely to block 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?
There is one parameter and schema description coverage is 100%, so the schema already fully documents documentId. The description adds no extra parameter semantics beyond what is in 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 and resource: 'List tracked changes (revisions) in the document', and enumerates the returned fields. It clearly distinguishes this from general document reads, though it does not name a specific sibling tool as an alternative.
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 by the purpose: use it to list revisions in a document. There is no explicit when-to-use vs alternatives guidance, no mention of prerequisites, and no exclusions beyond the read-only note.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
insert_imageA
Inserts an image onto a slide using Office.js setSelectedDataAsync with CoercionType.Image. Accepts a file path, URL, or raw base64 data. Optionally target a specific slide (the view stays there so the user sees the insert; call show_slide first per the view etiquette) and control position/size in points.
| Name | Required | Description | Default |
|---|---|---|---|
| top | No | Vertical position in points | |
| left | No | Horizontal position in points (1 point = 1/72 inch) | |
| color | No | Hex color to tint SVG images (e.g. "#FF5733"). Only applies to SVG sources. Works best with mono/outline icons. | |
| width | No | Image width in points | |
| height | No | Image height in points | |
| source | Yes | File path, URL, or base64 image data depending on sourceType | |
| slideIndex | No | Zero-based slide index to navigate to before inserting. If omitted, inserts on the currently active slide. | |
| sourceType | Yes | How to interpret source: "file" reads from disk, "url" fetches from network, "base64" uses data directly | |
| presentationId | No | Target presentation ID from list_presentations. Optional when only one presentation is connected. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description does add useful behavior: the insert happens via setSelectedDataAsync, so placement depends on the current selection, and the view remains on the target slide so the user sees the result. It does not disclose what happens on failure (bad path, unreachable URL), whether an existing selection is replaced, permission/auth needs, or how the inserted image can be referenced afterwards.
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?
It is essentially one dense sentence, front-loaded with the verb and resource, with the slide-targeting caveat following. The nested parenthetical about view etiquette is slightly awkward but each clause carries 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 9-parameter mutation tool with no annotations and no output schema, the description covers source handling, slide targeting, and units, but leaves gaps an agent needs: what the call returns (e.g. an image/shape identifier for later formatting), failure modes for bad file paths or URLs, and whether position is honored when setSelectedDataAsync inserts into a current selection.
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 nine parameters (including sourceType enum and the color tint for SVGs) are already documented in the schema, making 3 the baseline. The description restates the source modes and 'position/size in points' but adds no syntax, defaults, or interaction rules (e.g. width/height vs left/top behavior) 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 opens with a specific verb and resource: 'Inserts an image onto a slide', and names the underlying mechanism (setSelectedDataAsync with CoercionType.Image). It is unambiguously distinguishable from siblings like edit_shape_paragraphs or execute_officejs.
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 explains when to pass slideIndex (to target a specific slide and keep the view there) and explicitly points to show_slide first per the view etiquette, which is actionable routing guidance. It does not, however, say when to prefer this over alternatives such as execute_officejs for image insertion, or note prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
insert_or_delete_rangeA
Insert or delete a range, shifting existing cells. For insert, shift is Down or Right; for delete, Up or Left.
| Name | Required | Description | Default |
|---|---|---|---|
| range | Yes | A1 range address to insert at or delete. | |
| shift | No | Shift direction. Defaults: insert=Down, delete=Up. | |
| action | Yes | Whether to insert or delete. | |
| sheetName | No | Worksheet name. Defaults to the active worksheet. | |
| workbookId | No | Target workbook ID from list_workbooks. Optional when only one workbook is connected. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations at all, the description should carry the full burden, and it does disclose the key behavioral trait: existing cells are shifted rather than overwritten. It omits whether the operation expands the worksheet, what happens if shifted cells fall off the sheet boundary, and whether the change is undoable — real gaps for a structural mutation.
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, zero filler, with the core action and its side effect front-loaded before the constraint detail. 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 5-parameter structural mutation with full schema coverage and no output schema, the description covers what the tool does, its side effect, and the key parameter coupling. It is slightly thin on failure modes and scope limits, but an agent can call it correctly from this.
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 baseline is 3, but the description adds meaning beyond the schema by constraining shift directions per action ('for insert, shift is Down or Right; for delete, Up or Left') — the schema's enum allows all four values for both actions. That is a genuine validity constraint the schema alone does not express.
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 and resource ('Insert or delete a range') plus the side effect ('shifting existing cells'), which clearly separates it from read/write/format siblings such as write_range or clear_range. It doesn't explicitly name a sibling to route against, so it stops short of a 5.
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 second sentence implies the correct usage path by pairing action values with valid shift directions, which is genuinely useful guidance. However, there is no explicit statement of when to choose this over alternatives like write_range, clear_range, or set_merge, and no prerequisites are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
insert_page_breakB
Insert a page break at the end of the document body.
| Name | Required | Description | Default |
|---|---|---|---|
| documentId | No | Target document ID from list_documents. Optional when only one document is connected. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the behavioral burden; it does disclose that the break is appended to the body but not that at the cursor or mid-document may be impossible, nor whether the call mutates the saved document or requires a live connection. For a one-line mutation tool this is a partial disclosure.
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 the action and the location constraint front-loaded; no filler, no redundancy with 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?
For a trivial single-parameter tool with full schema coverage and no output schema this is close to sufficient, but it omits whether the change is persisted (save_document semantics) and whether placement is truly limited to the body end.
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?
Only one optional parameter and the schema already documents it at 100% coverage, including the 'optional when only one document is connected' fallback. The description adds nothing about documentId, 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?
Names a specific verb (Insert) and resource (page break) plus a placement constraint (end of the document body), so an agent can predict the effect precisely. It is not explicitly differentiated from any sibling, but no sibling in the list does this 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 description never states when to use this versus other insertion tools (insert_paragraph, insert_table) or any preconditions. The placement note ('at the end of the document body') is the only scoping hint and it is about behavior, not selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
insert_paragraphA
Insert a new paragraph into the document, optionally with a style (e.g. "Heading 1", "Title", "Quote"). Insert at the start or end of the body, or before/after a given paragraph index. Returns the new paragraph count.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Paragraph text. Use empty string for a blank paragraph. | |
| index | No | Paragraph index for location beforeIndex/afterIndex. | |
| style | No | Style name, e.g. "Heading 1", "Heading 2", "Title", "Quote", "Normal". Built-in names are matched locale-independently. | |
| location | No | Where to insert. Default "end". | |
| documentId | No | Target document ID from list_documents. Optional when only one document is connected. |
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 return value ("Returns the new paragraph count"). However, it omits the critical side effect for this tool: inserting at an index shifts the indices of subsequent paragraphs, which affects any index the caller holds. Permission requirements and whether the document is saved are also unstated.
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 short sentences, front-loaded with the core action, then placement, then the return value. No filler and nothing buried.
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?
A document mutation with five parameters and no annotations or output schema: the description supplies the return value, which is good. What it lacks is the index-shifting consequence of beforeIndex/afterIndex and any note on persistence or permissions, which matters for a tool where callers pass positional indices.
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 five parameters — including the location enum and the documentId fallback — are already documented in the schema. The description restates the location options and style examples without adding format or constraint detail beyond what the schema supplies, 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?
Specific verb plus resource ("Insert a new paragraph into the document") with the scope of operations spelled out — style, placement options, and return value. It is distinguishable from siblings like set_paragraph_text or insert_table, though it never names an alternative directly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Insert at the start or end of the body, or before/after a given paragraph index" describes how placement works, which implicitly guides use of the location parameter. But there is no explicit when-to-use guidance versus set_paragraph_text, format_paragraph, or the other paragraph siblings, and no stated prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
insert_tableA
Insert a table at the end of the document, optionally pre-filled from a 2D array of strings. Returns row and column counts.
| Name | Required | Description | Default |
|---|---|---|---|
| rows | Yes | Number of rows. | |
| values | No | Optional 2D array of cell texts (rows x columns) to pre-fill the table. | |
| columns | Yes | Number of columns. | |
| documentId | No | Target document ID from list_documents. Optional when only one document is connected. |
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 usefully discloses that the table is appended at the end and that it returns row and column counts, but omits mutation side effects, permission requirements, and what happens if values dimensions don't match rows/columns.
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 action and append behavior, followed by the return value. No wasted words.
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 simple 4-parameter mutation tool with no annotations and no output schema, the description covers purpose, append position, optional pre-fill, and return value. It lacks only secondary behavioral details like permission needs or dimension-mismatch handling.
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 all four parameters are already documented in the schema, including the 2D values array and documentId. The description's '2D array of strings' mirrors the schema without adding constraints or format details beyond it, 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?
States a specific verb and resource ('Insert a table') and adds scope ('at the end of the document') plus the optional pre-fill behavior. It does not explicitly contrast with siblings like add_table or insert_paragraph, but the resource is distinct enough for an agent to select it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by 'optionally pre-filled from a 2D array of strings', which tells the agent about one mode, but there is no explicit when-to-use/when-not guidance or reference to an alternative tool (e.g. add_table, insert_paragraph).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
inspect_deckA
Deck overview: slide dimensions, theme (colors + fonts), and all slides with index, ID, and shape count. Use as the first call to understand deck structure. Theme is cached after the first call. For shape details, follow up with scan_slide or inspect_slide on specific slides. For available layouts, use inspect_layouts.
| Name | Required | Description | Default |
|---|---|---|---|
| presentationId | No | Target presentation ID from list_presentations. Optional when only one presentation is connected. |
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 discloses the exact return content and a genuine side effect (theme is cached after the first call), which an agent cannot learn from structured fields. It stops short of stating explicitly that the call is non-mutating, what errors occur, or how large decks are handled.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four tight sentences; the returned payload is front-loaded, then the entry-point guidance, then the caching note, then sibling routing. No sentence is 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?
With only one optional parameter and no output schema, the description compensates by enumerating the returned fields and disclosing the caching behavior. Everything needed to call it correctly and interpret the result is present.
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 single parameter is fully documented in the schema (100% coverage), including its optionality when only one presentation is connected. The description adds no parameter-level detail beyond that, 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 the resource (deck) and enumerates exactly what the overview contains: slide dimensions, theme colors/fonts, and slides with index, ID and shape count. It is immediately distinguishable from scan_slide, inspect_slide and inspect_layouts, which it names 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?
"Use as the first call to understand deck structure" gives an explicit entry-point condition, and the two follow-up sentences route the agent to scan_slide/inspect_slide for shape details and inspect_layouts for layouts. Both alternatives carry the condition that selects them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
inspect_documentA
Overview of the live document: paragraph count, section count, table count, inline picture count, and a preview of the first paragraphs with their styles. Use this first to orient yourself in an unfamiliar document.
| Name | Required | Description | Default |
|---|---|---|---|
| documentId | No | Target document ID from list_documents. Optional when only one document is connected. | |
| previewParagraphs | No | How many paragraphs to preview. Default 10. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the behavioral burden. Calling it an 'overview' and 'preview' implies a non-mutating inspection, which is useful, but it never states that nothing is modified, whether it requires the document to be currently open, or what happens with an invalid or ambiguous documentId.
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, zero filler, and the highest-value information (what you get back) is front-loaded before the usage hint. Nothing repeats the tool name or title.
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 the description compensates well by enumerating the exact counts and preview contents returned. Coverage of edge behavior — scope of the counts (body only vs. headers/footers), errors on bad IDs — is missing, which keeps it below a 5.
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 documentId's optionality and previewParagraphs' default and 50-cap. The description restates the concept of a paragraph preview but adds no format or behavior 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?
The description names the specific resource ('the live document') and enumerates exactly what is returned: paragraph/section/table/inline-picture counts plus a styled paragraph preview. That distinguishes it from inspect_deck, inspect_slide and inspect_workbook on the document-type axis, 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?
'Use this first to orient yourself in an unfamiliar document' gives a clear triggering condition and ordering relative to deeper readers like read_paragraphs or get_paragraph. It offers no exclusion cases (e.g., when you already know the document, prefer get_document_properties), so it stops short of full when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
inspect_layoutsA
Returns slide layouts with names, OOXML type (e.g. blank, twoObj, secHead), master/layout indices, and detailed placeholders. Use fields to control which data is returned. By default reads all layouts from every slide master in OOXML (complete list, requires file access — may take a moment on first call for cloud files). Layouts sharing a name across different masters are distinguished by masterIndex. Set usedOnly to return only layouts assigned to existing slides (fast, Office.js only, no file access).
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Comma-separated layout fields to include. Placeholders sub-fields in parens. Default: "index,masterIndex,name,type,usedBySlides,placeholders(type,idx,name)". All placeholder fields: type,idx,name,description,sz,left,top,width,height. | |
| usedOnly | No | If true, return only layouts currently assigned to slides (fast, Office.js only). Default: false (all layouts from OOXML). | |
| presentationId | No | Target presentation ID from list_presentations. Optional when only one presentation is connected. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden, and it does disclose real behavioral traits: file access requirement, first-call latency for cloud files, and an Office.js-only fast path. It does not state read-only/non-mutating semantics explicitly, which would be the remaining gap for a zero-annotation 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?
Five tight sentences, front-loaded with the return shape, then parameter behavior, then the performance caveat. Every sentence carries distinct information; no restatement of the tool name or redundant boilerplate.
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 three optional parameters, no annotations, and no output schema, the description supplies exactly what is missing: the structure of the return value, the default field set, the master-disambiguation key, and the cost profile of each mode. An agent could call this correctly on the first attempt.
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 baseline is 3, but the description adds meaning beyond the schema: it explains that `fields` controls which data comes back, that `masterIndex` exists specifically to disambiguate same-named layouts across masters, and it frames the performance tradeoff behind `usedOnly` rather than just restating its boolean.
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 ("Returns slide layouts") and enumerates the returned data shape (names, OOXML type, master/layout indices, placeholders). It is clearly distinct from slide- or deck-level siblings like inspect_slide/inspect_deck by scope, though it never names an alternative 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?
Gives a clear decision rule between the two modes: default = all layouts from every master via OOXML (complete, requires file access, may be slow on first call), versus usedOnly = only layouts assigned to slides (fast, Office.js only, no file access). It lacks guidance on when to prefer this over inspect_slide/inspect_deck for layout-related questions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
inspect_slideA
Detailed slide inspector (~80 tokens/shape): returns every shape with text content, positions, sizes, and fill colors, plus slide dimensions. Supports slideRange for multiple slides. For just positions without text/fills, use scan_slide instead.
| Name | Required | Description | Default |
|---|---|---|---|
| slideRange | Yes | Slide indices to inspect, e.g. "0", "0-5", "2,4,7". Single index or range. | |
| presentationId | No | Target presentation ID from list_presentations. Optional when only one presentation is connected. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden, and it does disclose the two things an agent most needs: the approximate payload cost (~80 tokens/shape, which matters on ranged calls) and the shape of the output. It does not explicitly confirm the operation is read-only or note auth/prerequisites, 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 the cost/return profile before the alternative routing. Every clause earns its place, including the token estimate and the sibling pointer.
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 must describe return contents — and it does, naming shapes, text, positions, sizes, fills, and slide dimensions. The only meaningful omission is an explicit statement that the call is non-mutating and safe to run on many slides.
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 slideRange syntax examples, so the baseline is 3. The description's note that it 'supports slideRange for multiple slides' reinforces usage but adds no 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 and resource ('Detailed slide inspector') and enumerates exactly what is returned: every shape with text content, positions, sizes, fill colors, plus slide dimensions. It explicitly distinguishes itself from scan_slide, so an agent can separate the two siblings without opening 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?
It names the alternative (scan_slide) and the condition that selects it: 'For just positions without text/fills.' That is a clear routing rule. It doesn't address other overlapping siblings like show_slide, screenshot_slide, or read_deck_text, so it falls short of exhaustive when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
inspect_workbookA
Overview of the live workbook: all worksheets (name, position, visibility, used-range address), all Excel tables (name, sheet, range), all named ranges, and all PivotTables (name, sheet). Use this first to orient yourself in an unfamiliar workbook.
| Name | Required | Description | Default |
|---|---|---|---|
| workbookId | No | Target workbook ID from list_workbooks. Optional when only one workbook is connected. |
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 a good job by specifying the exact fields returned for each object type, which effectively substitutes for a missing output schema. It never explicitly states the operation is read-only / non-mutating, nor whether large workbooks cause truncation or latency, which is the remaining 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: the return contract first, then the action directive. Every clause names a concrete object type and its attributes; nothing is padded or redundant.
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-required-parameter inspection tool with no output schema, the description is nearly self-sufficient because it documents the return shape in detail. It could go one step further on read-only guarantee or behavior on very large workbooks, but an agent has what it needs to call 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% and the workbookId parameter is fully documented in the schema ("Target workbook ID from list_workbooks. Optional when only one workbook is connected."). The description adds no additional meaning about the parameter, 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?
Uses a specific verb ("Overview of the live workbook") and then enumerates exactly what it covers: worksheets with their attributes, Excel tables, named ranges, and PivotTables. That enumeration also distinguishes it from list_workbooks (which lists workbooks, not their contents) without the agent 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?
"Use this first to orient yourself in an unfamiliar workbook" is an explicit when-to-use directive, stronger than most sibling definitions offer. It stops short of naming anti-patterns or alternatives (e.g. use read_range once you know the address), so the routing is clear but not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_content_controlsA
List all content controls (template fields) in the document: id, title, tag, type, current text and placeholder. Use set_content_control_text with the id to fill them.
| Name | Required | Description | Default |
|---|---|---|---|
| tag | No | Only return content controls with this tag. | |
| title | No | Only return content controls with this title. | |
| documentId | No | Target document ID from list_documents. Optional when only one document is connected. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. 'List' plus the enumerated fields conveys a read-only retrieval operation and its return shape, but it does not disclose whether the tag/title filters combine, what happens when no match exists, or any permission/pagination 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 short sentences with zero waste: the enumeration of returned fields comes first, then the actionable follow-up. Nothing is buried or repeated.
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, the description compensates by listing the returned fields (id, title, tag, type, text, placeholder), which is the key information an agent needs. Only minor gaps remain, such as filter-combination behavior and empty-result handling.
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 tag, title, and documentId are already documented, setting the baseline at 3. The description names id, tag and title as returned fields rather than as filters, and adds no clarification on filter semantics 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 and resource ('List all content controls (template fields) in the document') and enumerates the returned fields, so the agent knows exactly what scope it covers. It does not explicitly contrast itself with nearby readers like read_paragraphs, search_document, or get_paragraph, so it falls short of a 5.
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 second sentence gives a clear downstream action ('Use set_content_control_text with the id to fill them'), which implies the tool's role in a read-then-fill workflow. However, it never says when to prefer this over search_document or read_paragraphs, nor any exclusions or prerequisites, so guidance is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_documentsA
Lists all Word documents currently connected to the bridge server. Shows document IDs (file paths for saved files, generated IDs for unsaved) and connection status. Use this to find the documentId to pass to other Word tools when multiple documents are open.
| 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 behavioral burden and discloses useful return details: document IDs are file paths for saved files or generated IDs for unsaved files, plus connection status. It implies a read-only listing operation, but does not explicitly state side effects, permissions, or error behavior, which is a minor gap for a zero-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?
Two sentences, both earning their place: one states what is returned, and the second gives the actionable usage context. The information is front-loaded with no 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 zero-parameter, no-output-schema tool, the description supplies the key return semantics: document IDs, their meaning for saved versus unsaved files, and connection status. Nothing else is needed for an agent to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero parameters, so parameter semantics are not applicable. The empty schema is self-explanatory, and the description correctly does not add irrelevant parameter guidance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: it lists all Word documents connected to the bridge server. It distinguishes itself from sibling listing tools such as list_presentations and list_workbooks by scoping to Word documents and by explaining the documentId output that other Word tools need.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly says to use this tool to find the documentId to pass to other Word tools when multiple documents are open. That gives clear selection guidance, though it does not name or exclude alternative listing tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_presentationsA
Lists all PowerPoint presentations currently connected to the bridge server. Shows presentation IDs (file paths for saved files, generated IDs for unsaved) and connection status. Use this to find the presentationId to pass to other tools when multiple presentations are open.
| 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 burden of behavioral disclosure. It describes what is shown (presentation IDs and connection status) but does not explicitly state that the operation is read-only or mention any side effects, permissions, or rate limits. 'Lists' implies a safe read, but more detail would be beneficial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, front-loaded with the core purpose, followed by specific details about IDs and connection status, and ending with actionable usage guidance. Every sentence adds value with no 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?
The tool is simple (no parameters, no output schema), and the description covers what it does, what it returns, and how to use it. It could mention what happens if no presentations are open or if the bridge server is unavailable, but for a basic list tool it is largely 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?
The tool has zero parameters, so there is no parameter semantics to describe. The baseline score for zero parameters is 4, as the description naturally does not need to compensate for missing schema coverage.
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: 'Lists all PowerPoint presentations currently connected to the bridge server.' This clearly distinguishes it from siblings like list_workbooks and list_documents, which handle different document types.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says to use this tool to find the presentationId for other tools when multiple presentations are open. It provides clear context but does not state when not to use it or name specific alternatives, though the use case is well-defined.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_workbooksA
Lists all Excel workbooks currently connected to the bridge server. Shows workbook IDs (file paths for saved files, generated IDs for unsaved) and connection status. Use this to find the workbookId to pass to other Excel tools when multiple workbooks are open.
| 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 load and does disclose the return shape: workbook IDs (file paths for saved files, generated IDs for unsaved) plus connection status. It does not mention behavior on an empty result set or any permission/auth requirements, which keeps it short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, all front-loaded: what it lists, what it returns, and why you'd call it. 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?
No output schema exists, so the description must describe the return values, and it does (IDs and connection status). For a zero-parameter list tool this is complete enough 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?
Zero parameters, so the baseline is 4; there is nothing for the description to disambiguate. The description correctly implies a no-argument call.
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 and resource ('Lists all Excel workbooks currently connected to the bridge server') with the scope of the listing made explicit. It is clearly distinguishable from inspect_workbook or list_documents, which serve different purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to reach for it: 'Use this to find the workbookId to pass to other Excel tools when multiple workbooks are open.' No alternative is named, but no sibling tool performs this discovery function, so the guidance is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
preview_deckA
Deck preview: batch overview of all/selected slides with optional thumbnails + text. With images: ~900 tokens/slide; text-only (includeImages=false): ~35 tokens/slide. Use for visual review or content audit. Do NOT use to inspect one slide — use inspect_slide or screenshot_slide instead.
| Name | Required | Description | Default |
|---|---|---|---|
| imageWidth | No | Thumbnail width in pixels. Default: 480. Height auto-calculated to preserve aspect ratio. | |
| slideRange | No | Slide indices to include, e.g. "0-5", "2,4,7", "0-2,5,8-10". Omit for all slides. | |
| includeImages | No | Include slide thumbnails. Default: true. Set false for text-only overview (faster). | |
| presentationId | No | Target presentation ID from list_presentations. Optional when only one presentation is connected. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description does real work: it quantifies cost (~900 tokens/slide with images vs ~35 text-only), implies a default (images on) and a performance tradeoff (text-only is faster). It does not state read-only semantics or any slide-count ceiling, but 'preview' plus the cost disclosure makes the operational profile clear.
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 short sentences, zero filler, with the cost figures and the exclusion front-loaded. The semicolon-packed token-cost clause is dense but earns its space since it drives the includeImages decision.
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 4-param, all-optional read tool with no output schema, the description covers purpose, batching scope, output shape (thumbnails + text), cost, and routing. Nothing an agent needs in order to call 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 100%, so baseline is 3; the description goes beyond it by attaching the concrete cost differential to includeImages (~900 vs ~35 tokens/slide), which tells the agent why and when to flip that flag. The other three parameters are left entirely to 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+resource ('Deck preview') plus scope ('batch overview of all/selected slides with optional thumbnails + text'), and explicitly differentiates itself from the single-slide siblings. An agent can distinguish it from inspect_deck, inspect_slide and screenshot_slide 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?
Gives explicit use cases ('visual review or content audit') and an explicit negative case ('Do NOT use to inspect one slide') naming the two alternatives (inspect_slide, screenshot_slide). This is the when/when-not/alternative pattern at full strength.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_commentsA
Read all comments in the document body: id, author, text, resolved state, date, and replies. Note: adding replies is not supported by the current Word.js API set.
| Name | Required | Description | Default |
|---|---|---|---|
| documentId | No | Target document ID from list_documents. Optional when only one document is connected. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden: 'Read' signals a safe read and the note about the Word.js API limitation usefully warns that reply creation will fail here. However, it does not say whether threaded comments are included, whether the operation is paginated, or what happens on documents with no comments.
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 operation and its returned fields, followed by a single caveat. No filler and nothing misplaced.
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, the enumeration of returned fields usefully substitutes for a return-value spec, and the API limitation is disclosed. It stops short of clarifying the relationship to read_threaded_comments, which is the main gap for an agent choosing among comment tools.
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?
Only one parameter (documentId) exists and schema description coverage is 100%, covering the optional-when-single-document behavior. The description adds nothing about documentId or document selection, 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?
States a specific verb and resource (read all comments in the document body) and enumerates the returned fields (id, author, text, resolved state, date, replies). It does not differentiate itself from the very close sibling read_threaded_comments, which an agent could easily confuse with it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied by 'document body' and by the closing note that adding replies isn't supported, which gestures at reply_to_comment/resolve_comment as the mutation alternatives. There is no explicit statement of when to use this versus read_threaded_comments or when comments might not exist.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_deck_textA
Lightweight text extractor: returns slide titles and body text as plain strings (~20x smaller than inspect_slide). Use for content review, narrative analysis, or any read-only text task. Supports slideRange and optional speaker notes.
| Name | Required | Description | Default |
|---|---|---|---|
| slideRange | No | Slide range, e.g. "0-5", "2,4,7". Zero-based. Omit for all slides. | |
| includeNotes | No | Include speaker notes. Default: false. | |
| presentationId | No | Target presentation ID from list_presentations. Optional when only one presentation is connected. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the load and does well: it declares read-only intent, names the return format (plain strings of titles and body text), and quantifies the size tradeoff against inspect_slide. It stops short of saying what is omitted (images, tables, charts, shape text), which matters for a lossy extractor.
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 short sentences with the core identity and the key differentiator front-loaded, followed by usage and parameter notes. 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?
For a read-only, zero-required-param tool with no output schema, the description adequately covers what comes back and how it compares to the heavier alternative. The one gap is not clarifying which content is excluded from the text extraction.
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 slideRange syntax, includeNotes default, and presentationId resolution are already fully documented in the schema. The description only names slideRange and speaker notes without adding format or edge-case detail, 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?
States a specific verb and resource ('Lightweight text extractor: returns slide titles and body text') and explicitly distinguishes itself from the sibling inspect_slide by the ~20x size difference. An agent can pick between the two 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?
Gives clear use cases ('content review, narrative analysis, or any read-only text task') and implicitly routes detail-heavy needs to inspect_slide via the size comparison. It does not explicitly state when not to use it, e.g. when formatting, images, or shape-level text matter.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_paragraphsA
Read paragraphs of the document with their styles, paginated by offset and limit. Returns total count plus the requested slice.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum paragraphs to return. Default 50. | |
| offset | No | First paragraph index to return. Default 0. | |
| documentId | No | Target document ID from list_documents. Optional when only one document is connected. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden: it clearly frames this as a read operation, discloses the pagination behavior, and states the return shape (total count plus requested slice). It does not cover permissions or error behavior, but for a read-only listing tool the key behavioral traits are present.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with zero waste. The pagination mechanism and return shape are front-loaded in a logical order.
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 3-parameter read tool with no output schema and no annotations, the description covers the essential behavior: what is returned (total count plus slice) and how pagination works. It leaves minor gaps around documentId optionality and style formatting, but those are largely covered by the schema or not critical 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 offset, limit, defaults, and maximums in detail. The description mentions offset/limit pagination but adds no syntax or format meaning beyond what the schema provides; 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 states a specific verb+resource (read paragraphs of the document) and adds scope details: styles included, paginated with offset/limit. It is clear what the tool does, but it does not explicitly distinguish itself from siblings like get_paragraph or search_document.
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?
Pagination is mentioned, which implies the tool is for retrieving a slice of paragraphs, but there is no explicit guidance on when to use this versus get_paragraph (single paragraph) or search_document (filtered search). Usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_rangeA
Read values, formulas and number formats from a range of the live workbook. Returns a 2D array (rows x columns) plus the range address and dimensions. Use "usedRange": true to read the whole used range of the sheet.
| Name | Required | Description | Default |
|---|---|---|---|
| range | No | A1 range address, e.g. "A1:C10" or "MyTable". Omit when usedRange is true. | |
| sheetName | No | Worksheet name. Defaults to the active worksheet. | |
| usedRange | No | Read the entire used range of the worksheet instead of a specific address. | |
| workbookId | No | Target workbook ID from list_workbooks. Optional when only one workbook is connected. | |
| includeFormulas | No | Include the formulas grid (default true). | |
| includeNumberFormat | No | Include the number-format grid (default false). |
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 only partially does so. It usefully discloses the return shape (2D rows x columns array plus address and dimensions), but says nothing about read-only safety, whether it triggers recalculation, what happens when both range and usedRange are omitted, or behavior against an unsaved/unsynced workbook.
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 short sentences, the core action and return shape come first, and the usedRange hint is appended as a secondary tip. No sentence is redundant with the title or schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description does the important work of describing the returned array and metadata, which is the main thing an agent needs. Gaps remain around default resolution when neither range nor usedRange is given and around multi-workbook targeting (workbookId), which the schema alone covers thinly.
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 baseline is 3; the description adds real value by tying the includeFormulas and includeNumberFormat flags to the output ('values, formulas and number formats') and by explaining the usedRange switch as an alternative to supplying an address. It still doesn't clarify interaction with workbookId or the sheetName default beyond what the schema says.
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 ('a range of the live workbook') and enumerates exactly what is returned (values, formulas, number formats), which separates it from write_range or format_range by intent. It never names a sibling or explicitly contrasts with find_in_range / inspect_workbook, so differentiation rests on the verb alone.
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 only guidance is parameter-level: use "usedRange": true to read the whole sheet. There is no statement of when to prefer this over inspect_workbook, find_in_range, or execute_officejs, nor any prerequisite such as needing a connected workbook or an open workbook session.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_shape_paragraphsA
Read raw OOXML <a:p> paragraphs from a shape's text body. Returns the paragraph XML as a string — preserves all formatting (bold, colors, bullets, etc.) that textRange.text strips. Use with the /pptx skill's OOXML knowledge to understand and modify the XML.
| Name | Required | Description | Default |
|---|---|---|---|
| shapeId | Yes | Shape ID from inspect_slide results (e.g. "5") | |
| slideIndex | Yes | Zero-based slide index from scan_slide results | |
| presentationId | No | Target presentation ID from list_presentations. Optional when only one presentation is connected. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does well for a read operation: it states the return type (paragraph XML as a string) and explains the key behavioral trait that formatting is preserved. It still does not explicitly state read-only semantics, error behavior for shapes without text bodies, or permission assumptions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences: the first states the action and return, the second explains the use case and value. It is front-loaded with zero filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read tool with fully documented parameters and no output schema, the description covers what is returned and why it matters. It is complete enough to call correctly, though it could mention failure modes or how multiple paragraphs are concatenated.
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 three parameters are already documented. The description references the shape's text body conceptually but adds no parameter-specific syntax, defaults, or edge-case guidance beyond the schema, making 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 and resource: 'Read raw OOXML <a:p> paragraphs from a shape's text body.' It clearly distinguishes the output from plain text extraction by noting it preserves formatting that textRange.text strips. It does not explicitly contrast itself with sibling tools like read_slide_xml or read_paragraphs, so sibling differentiation is incomplete.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear usage context: use it when you need the raw XML formatting that textRange.text loses, and pair it with the /pptx skill's OOXML knowledge. It stops short of naming alternatives or stating when not to use this tool versus read_slide_xml or edit_shape_paragraphs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_slide_xmlA
Read the full raw OOXML of a slide, or filter to a specific shape. Returns the slide's ppt/slides/slide1.xml content. Use with the /pptx skill's OOXML knowledge to understand the XML structure.
| Name | Required | Description | Default |
|---|---|---|---|
| shapeId | No | Optional shape ID to filter to. If provided, returns only that shape's <p:sp> element. | |
| slideIndex | Yes | Zero-based slide index from scan_slide results | |
| presentationId | No | Target presentation ID from list_presentations. Optional when only one presentation is connected. |
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 does disclose the nature of the return payload (full raw OOXML, the slide1.xml content), which tells the agent to expect a large XML blob, and 'Read' implies non-mutation. It does not state that the operation is non-destructive, nor warn about output size, so it stops short of the disclosure level a no-annotation tool warrants.
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 short sentences, front-loaded with the primary capability and the filter variant before the skill-context note. No redundant restatement of the name or padded phrasing; every clause contributes.
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, so the description must characterize the return value, and it does (raw OOXML for the slide, or the filtered shape element per the schema). It is nearly complete for a simple read tool; only an output-size caution 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 100%, so slideIndex, shapeId, and presentationId are already fully documented in the input schema. The description corroborates the shape-filter behavior ('or filter to a specific shape') but adds no syntax, format, or edge-case detail beyond the schema, making 3 the correct 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 and resource ('Read the full raw OOXML of a slide') plus a secondary mode ('filter to a specific shape'), and pins down the exact artifact returned (ppt/slides/slide1.xml). An agent can distinguish this from edit_slide_xml or read_slide_zip by the 'read raw XML of one slide' framing.
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?
'Use with the /pptx skill's OOXML knowledge' implies the context in which this tool is appropriate (when you need to reason about raw XML structure), which is more than nothing. But it names no alternatives (read_slide_zip, inspect_slide, read_shape_paragraphs) and gives no when-not-to-use condition, so routing is left largely to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_slide_zipA
Read multiple files from the exported slide zip. Returns slide XML, relationships, chart XMLs, and Content_Types. Use this to inspect chart data, rels, or other zip contents beyond what read_slide_xml provides. When no paths specified, auto-discovers all text/XML files in the zip.
| Name | Required | Description | Default |
|---|---|---|---|
| paths | No | Specific zip paths to read (e.g. ["ppt/slides/slide1.xml", "ppt/charts/chart1.xml"]). If omitted, auto-discovers all text/XML files. | |
| slideIndex | Yes | Zero-based slide index | |
| presentationId | No | Target presentation ID from list_presentations. Optional when only one presentation is connected. |
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 substantive behavior: the tool is a read operation, it returns raw zip members by category, and it auto-discovers text/XML files when no paths are given. It stops short of stating what happens on invalid paths, whether large/binary files are truncated or skipped, or side effects, which are the remaining behavioral gaps for a no-annotation 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 short sentences, front-loaded with the core action, with zero filler. There is mild overlap between the return-value sentence and the 'inspect chart data, rels' sentence, but it is efficient overall.
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, but the description compensates by enumerating what is returned, and all parameters are schema-documented. The only shortfall is behavioral edge cases (errors, size limits, non-text file handling), which are minor for a straightforward read tool.
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 three parameters (paths, slideIndex, presentationId) are already documented in the schema. The description's 'when no paths specified, auto-discovers all text/XML files' largely restates the schema's own wording on 'paths' and adds no new syntax or format detail. 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?
Specific verb and resource: 'Read multiple files from the exported slide zip', followed by an explicit enumeration of what comes back (slide XML, relationships, chart XMLs, Content_Types). It also draws a clear boundary against the sibling read_slide_xml, so an agent can differentiate the two tools without opening 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?
It names the alternative tool explicitly ('beyond what read_slide_xml provides') and states the conditions that select each one: use this one for chart data, rels, or other zip contents. It also documents the default behavior when 'paths' is omitted, which is a genuine usage decision point.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_speaker_notesA
Read speaker notes from slides. Uses full-deck export (cached by revision) to parse notes from OOXML — Office.js has no notes API. Returns plain text per slide.
| Name | Required | Description | Default |
|---|---|---|---|
| slideRange | No | Slide indices, e.g. "0", "0-5", "2,4,7". Omit to read all slides. | |
| presentationId | No | Target presentation ID from list_presentations. Optional when only one presentation is connected. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the burden and does reasonably well: it discloses the non-obvious mechanism (full-deck export, cached by revision, parsed from OOXML because Office.js has no notes API) and the return format (plain text per slide). It doesn't say how slides without notes are represented, whether the export requires a saved deck, or how stale the revision cache can be.
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 short sentences, front-loaded with what it does, then the mechanism, then the return type. The OOXML/Office.js sentence is dense but earns its place by explaining why a full-deck export is involved. 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?
No output schema exists, so the description's 'returns plain text per slide' is the only return-value signal and it is present. Parameters are fully covered by the schema. Gaps are minor: ordering of results, handling of empty notes, and performance implications of the deck export.
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% and both parameters are documented there, including the slideRange syntax and the optional-when-single-presentation rule for presentationId. The description adds no parameter-level meaning 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 (read) and resource (speaker notes from slides), and rounds it out with the return shape (plain text per slide). It is distinguishable from edit_speaker_notes and read_deck_text by name and content, though the description never explicitly names those siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied — you call it when you need notes text — with no explicit when/when-not guidance and no alternatives named (e.g., read_deck_text for general text, edit_speaker_notes for writing). An agent can infer the case, but nothing steers it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_tableB
Read all cell texts of a table as a 2D array.
| Name | Required | Description | Default |
|---|---|---|---|
| documentId | No | Target document ID from list_documents. Optional when only one document is connected. | |
| tableIndex | Yes | Zero-based table index. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden. 'Read' clearly signals a non-mutating operation and 'as a 2D array' usefully discloses the return shape given the absence of an output schema, but nothing is said about text-only extraction (formatting/merges lost), behavior on out-of-range tableIndex, or permission requirements.
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; the operation and its return shape are stated immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter read tool with full schema coverage, the description supplies the one thing the schema cannot: the 2D-array-of-texts result shape. Only the lack of edge-case behavior (invalid index, missing document) keeps it from being fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with clear docs on documentId sourcing and zero-based tableIndex, so the schema does the heavy lifting. The description adds no param-level meaning beyond implying the whole table is returned rather than a slice.
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 specific resource ('all cell texts of a table') and it even declares the return shape ('2D array'). It does not, however, distinguish itself from adjacent siblings such as read_range or set_table_cells, so an agent must infer which table-reading tool applies in a mixed Word/Excel environment.
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 statement of when to use this versus alternatives (e.g., read_range for Excel ranges or set_table_cells for writing). Usage is only implied by the verb 'Read' and the word 'table'; no exclusions or prerequisites are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_threaded_commentsA
Read all threaded comments in the workbook: content, author, creation date, resolved state, and replies. Use reply_to_comment or resolve_comment with a comment id from this output.
| Name | Required | Description | Default |
|---|---|---|---|
| workbookId | No | Target workbook ID from list_workbooks. Optional when only one workbook is connected. |
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 so reasonably by disclosing the exact payload — including replies and resolved state — which tells the agent this is a non-mutating retrieval that surfaces both resolved and unresolved threads. It does not mention permission requirements or behavior when the workbook has no comments, 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 with zero filler: the first front-loads scope and return fields, the second front-loads the follow-up action. Nothing redundant or buried.
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 single-optional-parameter read tool with no output schema and no annotations, the description supplies the return shape and the next-step integration, which is most of what an agent needs. Minor gaps remain around empty results and whether the whole thread history or only the current state is returned.
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 single parameter workbookId has 100% schema description coverage (including the note that it is optional when one workbook is connected), so the schema already does the work. The description only refers obliquely to 'the workbook' and adds 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 ('Read') and resource ('all threaded comments in the workbook') and enumerates the returned fields (content, author, creation date, resolved state, replies), which distinguishes it from the sibling add_comment and from the Word-oriented read_comments. An agent can tell exactly what it gets back 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 second sentence gives explicit downstream workflow: use reply_to_comment or resolve_comment with a comment id taken from this output. That is clear context for why and when to call it, but it offers no exclusions (e.g. how it relates to read_comments or what to do if no workbook is connected).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
refresh_pivottablesA
Refresh all PivotTables in the workbook. Use after data changes when pivot summaries must be current.
| Name | Required | Description | Default |
|---|---|---|---|
| workbookId | No | Target workbook ID from list_workbooks. Optional when only one workbook is connected. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the behavioral burden. It says what is refreshed, but it does not disclose permissions, side effects, whether dependent formulas recalculate, behavior when no PivotTables exist, or what the tool returns.
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, front-loaded with the action and followed by the trigger condition. There is no wasted wording.
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 simple one-parameter refresh tool with no output schema, the description is adequate: it identifies the operation and the condition for using it. Minor gaps remain around side effects and failure/no-op cases, but the core information needed to invoke it is present.
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 single workbookId parameter is already fully documented in the schema, including its optionality when only one workbook is connected. The description adds only the general phrase 'in the workbook' and does not add further parameter semantics, so 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 gives a specific verb and resource: refresh all PivotTables in a workbook. It clearly scopes the operation to PivotTables, but it does not distinguish it from the related sibling calculate_workbook, which could also be relevant after data changes.
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 states a clear usage condition: use after data changes when pivot summaries must be current. It does not name exclusions or an alternative tool such as calculate_workbook for non-pivot recalculation, so guidance is helpful but not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
replace_in_sheetA
Find and replace text across a whole worksheet (substring match per cell by default). Returns the number of cells changed. Uses findAll so merged/hidden cells behave like the Excel UI.
| Name | Required | Description | Default |
|---|---|---|---|
| find | Yes | Text to find. | |
| replace | Yes | Replacement text. | |
| matchCase | No | Case-sensitive search. Default false. | |
| sheetName | No | Worksheet name. Defaults to the active worksheet. | |
| workbookId | No | Target workbook ID from list_workbooks. Optional when only one workbook is connected. | |
| completeMatch | No | Match the entire cell contents. Default false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It discloses the return value (number of cells changed) and a key behavior (findAll mimics Excel UI for merged/hidden cells), but omits mutation side effects, permissions, reversibility, and formula handling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three tight sentences with zero waste: purpose first, then return value, then a behavioral note. It is appropriately sized and front-loaded, with every sentence earning its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the fully documented schema and absence of an output schema, the description covers the essential return value and key behavior. It lacks some mutation-specific context (e.g., permissions, formula handling) but is largely complete for an agent to call the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents all six parameters. The description adds only marginal parameter context via 'substring match per cell by default,' which relates to completeMatch but does not go beyond schema descriptions. 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 states a clear verb and resource: 'Find and replace text across a whole worksheet.' It implicitly distinguishes from a range-based find by specifying 'whole worksheet,' but does not name alternatives like find_in_range. This gives a solid purpose with minor sibling differentiation left implicit.
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 by 'across a whole worksheet' and 'substring match per cell by default,' suggesting when to use it. However, there is no explicit guidance on when to use this versus find_in_range or replace_text, nor any exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
replace_textB
Find and replace text throughout the document. Returns the number of replacements made.
| Name | Required | Description | Default |
|---|---|---|---|
| find | Yes | Text to find. | |
| replace | Yes | Replacement text. | |
| matchCase | No | Case-sensitive search. Default false. | |
| documentId | No | Target document ID from list_documents. Optional when only one document is connected. |
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 two useful traits: replacement spans the whole document, and the return value is a replacement count. It omits reversibility/undo, whether tables, headers and footers are included, what happens on zero matches, and any permission requirements 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?
Two short sentences, action front-loaded and the return behavior stated second. 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?
Return behavior is covered despite no output schema, and parameters are fully described in the schema. But for an unannotated mutation, the description leaves scope questions (headers/footers/tables, all-occurrences vs first-only semantics, undo) unanswered.
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 find, replace, matchCase and documentId are all documented, including the single-document default. The description adds nothing beyond the schema, which is acceptable at this coverage level but not better than 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 (find and replace) and resource (text throughout the document), plus the return value. It does not name or differentiate from siblings like replace_in_sheet, set_paragraph_text, or search_document, but 'throughout the document' scopes it clearly enough to be actionable.
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 use this versus set_paragraph_text (targeted edit), search_document (read-only lookup), or replace_in_sheet (spreadsheet equivalent). The agent must infer the choice from names alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reply_to_commentB
Add a reply to an existing threaded comment. Use the comment id from read_comments.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Reply text. | |
| commentId | Yes | Comment id from read_comments. | |
| workbookId | No | Target workbook ID from list_workbooks. Optional when only one workbook is connected. |
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 says only that a reply is added: nothing about required permissions, whether the reply notifies participants, whether replies are editable/deletable, what happens on a resolved thread, or what the call returns.
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, zero waste, with the core action front-loaded and the prerequisite id source immediately after. 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 small 3-parameter mutation tool this is close to adequate, but with no annotations and no output schema the description leaves live questions unanswered: whether the created reply is returned, and how the tool behaves on a resolved or missing thread.
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% and the schema itself already explains commentId ('Comment id from read_comments') and workbookId (optional when one workbook is connected). The description adds no meaning 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+resource pair ('Add a reply to an existing threaded comment') and uses 'threaded' to distinguish it from the sibling add_comment, which creates a top-level comment. It does not explicitly name which sibling it is not, so it falls short of a 5.
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 one concrete prerequisite ('Use the comment id from read_comments'), which implies you must read comments first. However, it never states when to reply versus start a new thread with add_comment, nor what to do about resolve_comment or whether replying to a resolved thread is allowed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resolve_commentA
Resolve or reopen a threaded comment. Use the comment id from read_comments.
| Name | Required | Description | Default |
|---|---|---|---|
| resolved | Yes | True to resolve, false to reopen. | |
| commentId | Yes | Comment id from read_comments. | |
| workbookId | No | Target workbook ID from list_workbooks. Optional when only one workbook is connected. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full burden, and it does disclose the state change (resolve vs. reopen) driven by the resolved flag. However, it omits whether resolving notifies participants, what happens to replies on reopen, permission requirements, or error behavior, all of which matter for a mutation on collaboration data.
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 the action front-loaded and the input prerequisite second; no filler whatsoever. Every clause carries information the agent can act on.
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 three-parameter mutation with no annotations and no output schema, the description covers the action and where the id comes from but leaves the agent without any sense of return value, side effects, or failure modes. It is minimal but not inadequate given the fully documented schema.
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%, and the schema already spells out that resolved=true resolves while false reopens, and that workbookId is optional when a single workbook is connected. The description adds nothing beyond reiterating the comment id source, so 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 states a specific verb pair ('resolve or reopen') acting on a specific resource ('threaded comment'), so an agent immediately knows it flips a comment's resolved state. It doesn't explicitly name contrasting siblings (e.g., reply_to_comment, add_comment), but the verb is distinct enough from the sibling set that misselection is unlikely.
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 a concrete prerequisite by pointing at read_comments as the source of the comment id, which tells the agent when this tool is applicable and how to obtain the required input. It stops short of stating exclusions, such as non-threaded comments, which would make it a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_documentB
Save the document. If it has never been saved, Word applies its default save behavior (may prompt).
| Name | Required | Description | Default |
|---|---|---|---|
| documentId | No | Target document ID from list_documents. Optional when only one document is connected. |
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 first-save default behavior and possible prompt, which is genuine behavioral context. However, it says nothing about overwrite semantics, permissions, or whether saving an unmodified document is a no-op — significant gaps 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?
Two short sentences with no padding, and the core action is front-loaded ahead of the edge-case caveat. Appropriately sized for a simple 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 one-optional-parameter tool with no output schema, it covers the main ambiguity (unsaved documents) but omits what saving actually affects and any error or permission conditions. Adequate, 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 coverage is 100% and the single parameter is fully documented in the schema, including the optional-when-one-document rule. The description adds nothing about documentId, 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?
States a specific verb and resource ('Save the document'), which is unambiguous and there is no sibling save tool to confuse it with. It doesn't distinguish itself from sibling read/inspect tools, but that distinction is self-evident from the verb.
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 invoke this versus related operations (e.g., editing paragraphs then saving), and no prerequisites or post-conditions. The only conditional sentence addresses a first-save edge case, not tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scan_slideA
Lightweight shape scanner (~40 tokens/shape): lists shape IDs, types, and positions on slides, plus slide dimensions. Supports slideRange for multiple slides. For text content and fills, use inspect_slide instead.
| Name | Required | Description | Default |
|---|---|---|---|
| shapeType | No | Filter by shape type: "Placeholder", "TextBox", "GeometricShape", "Graphic", "Picture", etc. | |
| slideRange | Yes | Slide indices to scan, e.g. "0", "0-5", "2,4,7". Single index or range. | |
| namePattern | No | Glob-style filter on shape name, e.g. "Title*", "*_source", "Card*_bg". Case-insensitive. | |
| presentationId | No | Target presentation ID from list_presentations. Optional when only one presentation is connected. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and discloses useful behavior: it is lightweight (~40 tokens/shape), returns shape IDs/types/positions plus slide dimensions, and supports multiple slides via slideRange. It stops short of explicitly stating read-only status, but 'scanner' and 'lists' strongly imply a non-mutating operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loads the scanner's purpose, return contents, and token cost. The final sentence cleanly redirects to the alternative for richer inspection.
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, so the description appropriately explains the return payload at a high level: shape IDs, types, positions, and slide dimensions. Combined with the fully documented input schema, it gives an agent enough to call the tool correctly, though explicit read-only status would make it 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 coverage is 100%, so the four parameters, including filters and slideRange format, are already fully documented in the schema. The description adds only limited extra meaning by noting slideRange supports multiple slides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: it scans slides and lists shape IDs, types, positions, and slide dimensions. It explicitly distinguishes itself from inspect_slide by saying that text content and fills belong there.
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 clearly positions the tool as a lightweight shape scanner and names the alternative inspect_slide for text content and fills. The condition for choosing inspect_slide is explicit, so an agent can route correctly without opening sibling schemas.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
screenshot_slideA
Slide screenshot (~1000 tokens): captures one slide as PNG image. Use to visually verify layout after changes. Do NOT loop over all slides — use preview_deck instead.
| Name | Required | Description | Default |
|---|---|---|---|
| width | No | Image width in pixels. Default: 720. Height auto-calculated to preserve aspect ratio unless also specified. | |
| height | No | Image height in pixels. If omitted, auto-calculated from width to preserve aspect ratio. | |
| slideIndex | Yes | Zero-based slide index from scan_slide results | |
| presentationId | No | Target presentation ID from list_presentations. Optional when only one presentation is connected. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does disclose the two traits an agent most needs: the ~1000-token cost per call and the PNG output format, plus the anti-looping cost warning. It does not state whether the operation is read-only or whether authentication/presentation selection is required, so it falls short of full disclosure.
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 short sentences, zero waste, with the cost signal and output type front-loaded before the usage and exclusion guidance. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Return format (PNG) and per-call cost are stated, and all four parameters are fully covered by the schema, so no output schema is needed. Minor gap: no mention of presentation-scoping or failure behavior for out-of-range indices.
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% (width, height, slideIndex, presentationId are all documented in-schema), so the baseline is 3. The description adds no parameter guidance of its own, such as the zero-based indexing caveat or default width.
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 ('captures one slide as PNG image') and immediately bounds the scope ('one slide'). It distinguishes itself from preview_deck by naming that sibling as the bulk alternative.
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?
Explicit when-to-use ('visually verify layout after changes') and explicit when-not ('Do NOT loop over all slides') with the correct alternative named ('use preview_deck instead'). Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_documentB
Search the document body for text. Returns up to 50 matches with a text snippet around each hit.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Text to find. | |
| matchCase | No | Case-sensitive search. Default false. | |
| documentId | No | Target document ID from list_documents. Optional when only one document is connected. |
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 does disclose useful behavior: a cap of 50 matches and a text snippet around each hit, which tells the agent results are truncated and excerpted. However, it doesn't clarify ordering, whether all matches or matches-per-section, or permissions needed, leaving meaningful behavioral gaps.
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, zero waste, and the return behavior is stated up front after the purpose. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description adequately covers purpose and return shape (50 matches, snippets). A bit more on result ordering or how documentId omission is resolved would make it complete, but it's sufficient for calling the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents text, matchCase, and documentId. The description adds no extra meaning about parameters, 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 and resource ('Search the document body for text') plus what it returns. It's clear what the tool does, but it does not distinguish itself from sibling tools like search_text, find_in_range, or read_paragraphs, so an agent could confuse it with them.
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. With siblings such as search_text, find_in_range, read_deck_text, and read_paragraphs available, the description gives no criteria for choosing this tool over them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_fluent_iconsA
Search Microsoft Fluent UI icon library. Returns matching icons with svgBase64 ready for insert_image (sourceType: "base64") — the SVG content is fetched server-side so dead icon URLs can never break the workflow. Prefer mono (_M) variants for professional decks. Retry with synonyms if no good matches (e.g. "innovation" → "lightbulb", "security" → "shield").
| Name | Required | Description | Default |
|---|---|---|---|
| top | No | Max results to return (default 10) | |
| query | Yes | Search query (e.g. "warning", "arrow down", "lightbulb") | |
| style | No | Filter by style: "regular" for mono/outline icons, "filled" for solid icons. Omit for both. | |
| includeSvg | No | Fetch the SVG content for each result (default true, capped at 6 fetches). Set false for a URL-only listing. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does well: it discloses that SVG content is fetched server-side so dead URLs can't break the workflow, explains the return format (svgBase64 ready for insert_image), and gives retry behavior. It omits rate limits or pagination, but those are minor for a search 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 tightly packed sentences, front-loaded with the core action and followed by the most important behavioral detail (server-side fetch) and practical tips. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple search tool with 100% schema coverage and no output schema, the description supplies the necessary return format, integration hint (insert_image), and fallback strategy. An agent can call it correctly without further information.
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 all four parameters are fully documented by the schema. The description adds only tangential guidance (prefer mono variants, synonym examples) without explaining parameter syntax or interactions beyond the schema 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 and resource: 'Search Microsoft Fluent UI icon library.' No sibling tool overlaps with icon search, so the purpose is unambiguous without needing explicit 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?
Adds clear usage context: prefer mono (_M) variants for professional decks, retry with synonyms if matches are poor, and ties results to insert_image. Lacks explicit when-not-to-use guidance, but the context is sufficient for this focused tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_textA
Search for text across all slides (or a slide range) in the presentation — like grep for slides. Searches shape text, table cells, and speaker notes. Returns matching shapes with context at the chosen level. Case-insensitive substring by default; supports regex.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Text to search for. Plain substring by default, or a regex pattern when regex=true. | |
| regex | No | Treat query as a regular expression. Default: false (plain substring). | |
| context | No | Result detail level. "shape" (default): matching shapes with text. "slide": all shapes on matching slides with matched markers. "none": just matching slide indices. | |
| slideRange | No | Optional slide range to search, e.g. "0-4" or "2-7". Zero-based. Omit to search all slides. | |
| includeNotes | No | Search speaker notes in addition to slide content. Default: true. | |
| caseSensitive | No | Case-sensitive search. Default: false. | |
| presentationId | No | Target presentation ID from list_presentations. Optional when only one presentation is connected. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden and does disclose key behavior: case-insensitive substring by default, regex support, which content is searched, and what is returned (matching shapes with context). It omits read-only/side-effect guarantees and any auth or performance notes, keeping it below a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, front-loaded with the core action and analogy, then the searched surfaces and return behavior. 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?
With seven parameters, no output schema, and no annotations, the description adequately covers return shape (matching shapes with context at the chosen level) and search scope. It could say more about result limits or ordering, but nothing critical for invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so every parameter including query, regex, context, slideRange, includeNotes, caseSensitive, and presentationId is already documented in the schema. The description reinforces the default case-insensitivity and return-level concepts but adds little beyond the structured fields, 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 and resource ("Search for text across all slides") and distinguishes itself from siblings with the concrete analogy "like grep for slides." It also names exactly what is searched: shape text, table cells, and speaker notes.
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?
Explains when to use it implicitly through scope (slide range, notes inclusion, context level) and the grep analogy settles the search intent. It does not explicitly exclude or point to alternatives like read_deck_text or scan_slide, which is the only gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_content_control_textA
Replace the text of a content control (template field) identified by its id from list_content_controls. Optionally update its title and tag.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Content control id from list_content_controls. | |
| tag | No | New tag for the content control. | |
| text | Yes | New text for the content control. | |
| title | No | New title for the content control. | |
| documentId | No | Target document ID from list_documents. Optional when only one document is connected. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden. 'Replace the text' does signal that existing content in the field is overwritten, which is useful, but there is nothing about permissions, failure behavior for a bad id, or whether surrounding formatting is preserved.
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 the core action and the id source front-loaded; nothing is padded or repeated.
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 5-param mutation with full schema coverage and no output schema, this is largely sufficient. It could say what is returned (e.g., the updated control) or whether text replacement inherits field formatting, but an agent has enough 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 every parameter is already documented in the schema, including the id provenance and documentId fallback. The description only restates the optionality of title/tag and adds no format or constraint detail beyond structured fields.
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 ('Replace') plus resource ('text of a content control (template field)') and the lookup key (id). It also names list_content_controls as the source of that id, which distinguishes it from paragraph-editing siblings like set_paragraph_text or replace_text.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It establishes the prerequisite chain (get the id from list_content_controls) and clarifies that title/tag updates are optional on the same call. It stops short of stating when to prefer this over replace_text or set_paragraph_text, but the context is clear enough to act on.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_data_validationC
Set a data validation rule on a range. Supports list, wholeNumber, decimal, textLength, and date rules.
| Name | Required | Description | Default |
|---|---|---|---|
| list | No | List type: comma-separated values, e.g. "Low,Medium,High". | |
| type | Yes | Validation type. | |
| range | Yes | A1 range address. | |
| formula1 | No | Numeric/date/textLength: bound value or formula. | |
| formula2 | No | Second bound for Between/NotBetween. | |
| operator | No | Numeric/date/textLength: comparison operator. | |
| sheetName | No | Worksheet name. Defaults to the active worksheet. | |
| allowBlank | No | Allow blank cells. Default true. | |
| workbookId | No | Target workbook ID from list_workbooks. Optional when only one workbook is connected. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full disclosure burden. It says nothing about mutation effects, whether an existing rule is overwritten, permission requirements, or what is returned; the type list merely restates the schema enum.
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 the core action front-loaded and no padding. The second sentence is arguably redundant with the schema enum, which keeps it just under a 5.
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 is too thin: overwrite behavior, conditional parameter requirements, and result/error semantics are all 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 every parameter (including the conditional relationship between type and formula1/operator) is already documented. The description adds no field-level meaning 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 and resource ('Set a data validation rule on a range') and enumerates the supported rule types, which matches the schema enum. It is clear but does not differentiate itself from nearby Excel siblings such as add_conditional_format.
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 indication of when to choose this over add_conditional_format or other range-mutating tools, no prerequisites (workbook connection, worksheet existence), and no note about what happens if the range already has validation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_dimensionsB
Set column widths and/or row heights for a range, in points. Optionally autofit columns or rows to their content.
| Name | Required | Description | Default |
|---|---|---|---|
| range | Yes | A1 range address, e.g. "A:A" or "1:10" or "A1:C10". | |
| rowHeight | No | Row height in points. | |
| sheetName | No | Worksheet name. Defaults to the active worksheet. | |
| workbookId | No | Target workbook ID from list_workbooks. Optional when only one workbook is connected. | |
| autofitRows | No | Autofit row heights to content. | |
| columnWidth | No | Column width in points. | |
| autofitColumns | No | Autofit column widths to content. |
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 discloses units and the optional autofit behavior, but says nothing about overwriting existing dimensions, what happens when columnWidth and autofitColumns are both supplied, whether sheet protection blocks the operation, or whether the change is undoable. For a mutation tool with zero annotation coverage this is a meaningful 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 short sentences, front-loaded with the primary action, with the optional autofit capability following. No filler and nothing repeated beyond the necessary unit clarification.
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 seven-parameter mutation tool with no annotations and no output schema, the description covers the core purpose but leaves the agent guessing about parameter conflicts, protection/auth requirements, and the effect on existing dimension settings. Adequate to invoke, not adequate to invoke confidently in edge cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all seven parameters are documented in the schema, which sets the baseline at 3. The description reinforces units and the width/height split but adds no new semantics — in particular it doesn't explain the precedence or interaction between columnWidth and autofitColumns (or rowHeight and autofitRows), which is the one thing the schema cannot convey.
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: setting column widths and/or row heights for a range, with units (points) and an optional autofit mode. An agent can tell this is a dimension-mutation tool rather than a formatting or content tool. It stops short of distinguishing itself from overlapping siblings like autofit_range or format_range.
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 by the description ('set column widths and/or row heights'), but there is no explicit when/when-not guidance. Notably, the sibling autofit_range overlaps with the autofitColumns/autofitRows options here, and the description never says which to prefer. No prerequisites such as sheet protection or workbook selection are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_document_propertiesA
Set document metadata (title, author, subject, keywords, comments, category). Only provided fields are changed.
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | Document title. | |
| author | No | Document author. | |
| subject | No | Document subject. | |
| category | No | Document category. | |
| comments | No | Document comments field. | |
| keywords | No | Document keywords. | |
| documentId | No | Target document ID from list_documents. Optional when only one document is connected. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations at all, the description carries the full behavioral burden. 'Only provided fields are changed' is genuinely valuable partial-update semantics, but it says nothing about permission requirements, whether changes persist without a save call, or what happens when documentId is omitted.
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 resource scope front-loaded and the mutation semantics immediately after. Nothing is wasted, though it is arguably too terse given the tool's surface area.
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-param metadata setter with a fully documented schema, this covers the essentials: what is set and that unspecified fields are untouched. The gaps are the save/persistence question and documentId targeting, which keep it below a 5.
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 merely re-lists the same six field names already documented in the schema and says nothing extra about documentId, which is the parameter with the most consequential behavior (optional when only one document is connected).
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 ('Set document metadata') and enumerates exactly which fields are affected, so it is clearly distinguishable from the read-side sibling get_document_properties. It stops short of naming that sibling 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?
Usage is only implied — an agent can infer this is the write counterpart to get_document_properties, but the description never says when to prefer it, whether a document must first be selected via list_documents, or whether save_document must follow. No exclusions or alternatives are named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_hyperlinkA
Set a hyperlink on a cell (address, display text, tooltip). The cell text is replaced by textToDisplay when provided. Pass address as null to remove the hyperlink.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | Target URL, e.g. "https://example.com". Pass null to remove the hyperlink. | |
| tooltip | No | Screen tip shown on hover. | |
| workbookId | No | Target workbook ID from list_workbooks. Optional when only one workbook is connected. | |
| cellAddress | Yes | Sheet-qualified cell reference, e.g. "Sheet1!B2". | |
| textToDisplay | No | Cell text shown for the link. Defaults to the address. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses key behaviors: cell text is replaced by textToDisplay when provided, and passing address as null removes the hyperlink. However, it does not cover side effects like overwriting an existing hyperlink, required permissions, or the response format, leaving significant behavioral gaps 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?
The description is three concise sentences, front-loaded with the core action. Each sentence adds useful information without repetition: the first states what the tool does, the second clarifies text replacement behavior, and the third explains removal. No 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?
Given the tool's low complexity, full schema coverage, and absence of annotations or output schema, the description is largely complete. It covers the main behaviors (setting, text replacement, removal) but omits potential side effects such as overwriting an existing hyperlink. For a simple cell operation, this is adequate but not exhaustive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds meaning beyond the schema by clarifying that textToDisplay replaces the cell text (a behavioral detail not present in the schema's parameter description). It also restates the null address removal, which is redundant but reinforces the parameter's semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Set') and resource ('hyperlink on a cell'), including the optional fields address, display text, and tooltip. It does not explicitly differentiate from sibling tools like write_range or set_table_cell, but the resource is unique enough that an agent can identify the tool's purpose without ambiguity.
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 does not provide any guidance on when to use this tool versus alternatives (e.g., writing a HYPERLINK formula or using other cell-editing tools). It only describes parameter behavior ('Pass address as null to remove') but offers no contextual usage rules or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_mergeC
Merge or unmerge cells in a range.
| Name | Required | Description | Default |
|---|---|---|---|
| range | Yes | A1 range address. | |
| across | No | merge: merge each row separately instead of one area. Default false. | |
| action | Yes | Whether to merge or unmerge. | |
| sheetName | No | Worksheet name. Defaults to the active worksheet. | |
| workbookId | No | Target workbook ID from list_workbooks. Optional when only one workbook is connected. |
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 and does not meet it. It doesn't state what happens to cell values on merge (typically only the top-left value is kept), whether the operation is reversible with unmerge, or what permissions are needed.
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 is appropriately sized but also minimal, leaving no room to convey additional valuable context.
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 five parameters, no annotations, and no output schema, the description is too thin. It omits important behavioral details such as data retention on merge and reversibility, which an agent would need to use it safely.
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 including the enum for action and the across behavior. The description adds nothing beyond this, 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 pair (merge/unmerge) and resource (cells in a range), which is clear enough for an agent to understand what the tool does. It doesn't explicitly name a sibling to differentiate from, but the operation is distinct from formatting and value-writing tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus alternatives like format_range or write_range, nor any mention of prerequisites or destructive behavior. The usage is only implied by the tool name and purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_paragraph_textA
Replace the text of one paragraph, keeping the paragraph itself (and optionally its style).
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | New paragraph text. | |
| index | Yes | Zero-based paragraph index. | |
| documentId | No | Target document ID from list_documents. Optional when only one document is connected. |
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 add real value by stating that the paragraph object survives and that style can be preserved, which tells the agent this is a text overwrite rather than a structural change. It omits permission requirements, behavior on out-of-range index, and whether the prior text is recoverable.
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 with the core action front-loaded and the preservation guarantee packed into a parenthetical. Nothing to trim.
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 simple three-parameter setter with no output schema, the essentials are present, and the schema covers documentId's optional-when-single-document rule. Gaps remain for a mutation tool with zero annotations: no statement of failure modes (invalid index, missing document) and no clarification of the dangling 'style' option.
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 three parameters are already documented, making 3 the baseline. The description adds no per-parameter meaning, and its phrase 'optionally its style' hints at a style option that has no corresponding parameter in the schema, which could mildly mislead.
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?
A specific verb+resource pair ('Replace the text of one paragraph') that makes the single-paragraph scope unambiguous. It implicitly distinguishes itself from document-wide siblings like replace_text and from insert_paragraph/delete_paragraph, but does not name 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?
Usage is implied by the wording ('one paragraph', 'keeping the paragraph itself'), which suggests using this instead of delete+insert. However, there is no explicit when-to-use statement, no pointer to get_paragraph/read_paragraphs to obtain the index, and no mention of when replace_text would be the better choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_table_cellB
Write text into one table cell (replacing its content).
| Name | Required | Description | Default |
|---|---|---|---|
| row | Yes | Zero-based row index. | |
| text | Yes | New cell text. | |
| column | Yes | Zero-based column index. | |
| documentId | No | Target document ID from list_documents. Optional when only one document is connected. | |
| tableIndex | Yes | Zero-based table index. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description does carry the key behavioral fact that the write is destructive to the existing cell content (replacement, not append). It says nothing about permissions, whether the table expands, or what happens on out-of-range indices.
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; the replacement behavior, the most important detail, is stated inline rather than buried.
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 5-parameter mutation tool with no annotations and no output schema, the description covers the essentials but omits failure behavior, range bounds semantics, and the batch alternative. Adequate, 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 all five parameters are self-documenting, including the zero-based indexing and the optional documentId. The description adds no parameter-level meaning beyond that, which is the expected 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 and resource: writes text into one table cell, and adds that existing content is replaced. It does not distinguish itself from the sibling set_table_cells (plural), so an agent must infer the singular-vs-batch split.
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 about when to use this versus set_table_cells for multiple cells, or versus insert_table/read_table. The only usable cue is the implicit 'one cell' scope in the name and description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_table_cellsA
Set the text of multiple table cells in one call. Rows and columns are 0-based indices into the table.
| Name | Required | Description | Default |
|---|---|---|---|
| cells | Yes | Cells to update. | |
| documentId | No | Target document ID from list_documents. Optional when only one document is connected. | |
| tableIndex | Yes | Zero-based table index. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden. It does disclose the batch nature and the 0-based coordinate convention, but does not say that existing cell text is overwritten, how out-of-range indices are handled, or whether changes persist immediately.
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 filler, and the batch scope is front-loaded ahead of the coordinate convention. Nothing could be removed without losing content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple, fully schema-documented mutation with no output schema or annotations, the description covers what it does and the coordinate system. Only behavioral edge cases (overwrite semantics, invalid indices, single-vs-multi table selection) are left unstated.
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%; every parameter (including row/column/tableIndex zero-based semantics and documentId optionality) is already documented in the schema. The description's indexing note restates schema content rather than adding format or constraint detail, 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 and resource ("Set the text of multiple table cells") and the batch semantics ("in one call"), which implicitly separates it from the singular sibling set_table_cell. It never names that sibling explicitly, so the differentiation must be inferred from the word "multiple."
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?
Use for bulk updates is only implied by "multiple table cells in one call"; there is no explicit when-to-use versus set_table_cell, and no mention of prerequisites such as having a document/table selected. Adequate but inference-dependent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_worksheet_protectionB
Protect or unprotect a worksheet. Protection restricts user edits; cells formatted as locked are affected.
| Name | Required | Description | Default |
|---|---|---|---|
| protect | Yes | True to protect, false to unprotect. | |
| password | No | Optional password for the protection. | |
| sheetName | Yes | Worksheet name. | |
| workbookId | No | Target workbook ID from list_workbooks. Optional when only one workbook is connected. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden. It usefully discloses that protection restricts user edits and affects locked cells, but it omits important details such as whether unprotecting requires the password, whether protection is reversible, and what permissions are needed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two focused sentences with no wasted words. The core action is front-loaded, followed by a concise behavioral note about locked cells.
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 low-complexity, four-parameter tool with full schema coverage and no output schema, the description is nearly complete. The main remaining gaps are behavioral details around password requirements and permissions, but the schema covers all parameter semantics.
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 adds no parameter-level meaning beyond what the schema provides, which is appropriate baseline behavior 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 states a specific verb (protect/unprotect) and resource (worksheet), which is clear enough for an agent to identify the operation. It does not explicitly distinguish this tool from sibling tools like update_worksheet, so it falls short of a 5.
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 explains what the tool does but gives no guidance on when to use it versus alternatives such as update_worksheet or delete_worksheet. No prerequisites or exclusion conditions are provided, leaving usage entirely implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
show_slideA
Bring a slide into view in the live presentation (navigates the user to that slide). Call this BEFORE editing a slide so the user can watch the changes happen; also useful to walk the user through a deck slide by slide.
| Name | Required | Description | Default |
|---|---|---|---|
| slideIndex | Yes | Zero-based slide index to show. | |
| presentationId | No | Target presentation ID from list_presentations. Optional when only one presentation is connected. |
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 disclose the key side effect — the user's live view is moved — which is the important non-obvious behavior. It omits prerequisites (does a presentation need to be open/connected?) and error behavior when navigation is impossible.
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, purpose first, then the workflow guidance. No filler and nothing redundant with 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?
For a simple 2-parameter navigation tool with no output schema and no annotations, the description covers purpose, effect on the user, and when to call it. Missing only edge-case behavior around live-session availability.
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%, with slideIndex documented as zero-based and presentationId documented as optional when only one presentation is connected. The description adds nothing about parameters, 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 and resource ('bring a slide into view in the live presentation') and clarifies the effect with a parenthetical ('navigates the user to that slide'). This clearly separates it from read-only siblings like inspect_slide or screenshot_slide without naming them.
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 when-to-use guidance: call BEFORE editing so the user can watch changes, and for slide-by-slide walkthroughs. It lacks any when-not or failure condition (e.g., what to do if no live session exists), which keeps it from a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sort_rangeB
Sort a range by one or more columns. Fields are given as zero-based column offsets within the range.
| Name | Required | Description | Default |
|---|---|---|---|
| range | Yes | A1 range address to sort, e.g. "A2:D100" (include or exclude headers as needed). | |
| fields | Yes | Sort fields, applied in order. | |
| sheetName | No | Worksheet name. Defaults to the active worksheet. | |
| hasHeaders | No | True if the first row is a header row that should not be sorted. Default false. | |
| workbookId | No | Target workbook ID from list_workbooks. Optional when only one workbook is connected. |
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 of behavioral disclosure. It implies a mutation but does not state that the range is sorted in place, whether existing formatting is affected, what permissions are required, or what the tool returns. This is a significant gap for a write operation with zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences with no wasted wording, and the core operation is front-loaded. It is appropriately sized for the tool's basic purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The schema richly documents all parameters, which supports correct invocation, and the description identifies the operation. However, with no annotations or output schema, the description should say more about mutation behavior and return semantics. It is minimally adequate but leaves meaningful behavioral 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 all five parameters are already documented in the schema. The description reiterates that fields are zero-based column offsets, matching the schema's own column description, but adds no additional parameter semantics beyond what structured data provides. 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 clearly states a specific verb and resource: sort a range by one or more columns. It also clarifies the field addressing model, so an agent understands the core operation without opening the schema. It does not explicitly differentiate itself from other range-manipulation siblings, but the operation is distinct enough.
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 says what the tool does but gives no guidance on when to use it versus alternatives such as format_range, read_range, or write_range. There are no prerequisites, exclusions, or context cues for selecting this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_worksheetA
Update an existing worksheet: rename it, move it to a position, change visibility, set the tab color, or activate it. Only provided properties are changed.
| Name | Required | Description | Default |
|---|---|---|---|
| newName | No | New name for the worksheet. | |
| activate | No | Make this the active worksheet. | |
| position | No | Zero-based position to move the sheet to. | |
| tabColor | No | Tab color as #RRGGBB. Use "" to clear. | |
| sheetName | Yes | Current name of the worksheet to update. | |
| visibility | No | Sheet visibility. | |
| workbookId | No | Target workbook ID from list_workbooks. Optional when only one workbook is connected. |
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 does disclose the valuable partial-update semantics ('Only provided properties are changed'), preventing unintended overwrites. It does not mention permission requirements, what happens to formulas/references when a sheet is renamed, or whether name collisions error out — meaningful gaps 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?
Two tight sentences with no filler; the enumerable operations come first and the partial-update caveat closes it out. Nothing redundant with the schema is repeated verbatim.
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 description covers the what and the partial-update behavior but omits error/conflict behavior and permission context. Adequate to call correctly, not complete enough to predict outcomes confidently.
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 'sheetName' vs 'newName', position semantics, and tabColor clearing is already documented in the schema. The description restates the same field list without adding syntax or format details 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?
The description gives a specific verb ('Update') plus resource ('an existing worksheet') and enumerates the five mutable aspects: rename, reposition, visibility, tab color, activate. This implicitly separates it from add_worksheet/delete_worksheet siblings, though no sibling is named 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?
'Only provided properties are changed' clarifies this is a partial-update tool, which implies it should be used instead of a full replacement. However, there is no explicit guidance on when to prefer it over sibling tools, nor any stated prerequisites such as needing workbookId when multiple workbooks are connected.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
verify_slidesA
Run programmatic checks on a slide: detect overlapping shapes, out-of-bounds shapes, empty text, tiny shapes, unused placeholders, placeholder drift from layout defaults, and full-bleed background covers. Returns a list of issues found. Uses the same shape data as inspect_slide — no OOXML needed.
| Name | Required | Description | Default |
|---|---|---|---|
| checks | No | Checks to run. Default: all checks. | |
| slideIndex | Yes | Zero-based slide index | |
| presentationId | No | Target presentation ID from list_presentations. Optional when only one presentation is connected. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the behavioral burden. It discloses that the tool returns a list of issues and uses the same shape data as inspect_slide without OOXML, but it does not state whether the operation is read-only, what permissions are needed, or what side effects (if any) exist.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded paragraph with no filler. Every sentence contributes: the check list, the return behavior, and the relationship to inspect_slide.
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 says only that it returns 'a list of issues found' without describing the issue object structure (e.g., fields like shape ID, severity, message). It also omits read-only status, which an agent might need to know before invoking.
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 slideIndex and presentationId are already documented. The description adds value by explaining what each check type means (e.g., 'placeholder drift from layout defaults', 'full-bleed background covers'), which goes beyond the enum labels in 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 and resource ('Run programmatic checks on a slide') and enumerates exactly what is checked, making the tool's purpose unambiguous. It also distinguishes itself from inspect_slide by noting it uses the same shape data for validation rather than inspection.
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 enumerated checks imply the tool is for auditing slide layout issues, but there is no explicit guidance on when to use this versus inspect_slide or scan_slide. The mention of 'same shape data as inspect_slide' is contextual but not a usage rule or exclusion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
write_rangeA
Write values and/or formulas into a range of the live workbook. Accepts a 2D array (rows x columns) or a single scalar that fills the whole range. Formulas are set separately from values. Also supports setting the number format. Content in the target range is overwritten.
| Name | Required | Description | Default |
|---|---|---|---|
| range | Yes | A1 range address, e.g. "A1:C10". | |
| values | No | 2D array of values, or a single scalar broadcast across the range. | |
| formulas | No | 2D array of formula strings (e.g. "=SUM(A1:A10)"), or a single formula broadcast across the range. | |
| sheetName | No | Worksheet name. Defaults to the active worksheet. | |
| workbookId | No | Target workbook ID from list_workbooks. Optional when only one workbook is connected. | |
| numberFormat | No | Number format string (e.g. "0.00", "#,##0", "dd/mm/yyyy"), 2D array or single broadcast. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description usefully discloses that this mutates the live workbook and overwrites existing content. It does not cover permissions, undo/atomicity, return behavior, or precedence when both values and formulas are supplied.
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?
Five short sentences, front-loaded with the action and immediately covering input shape and the destructive overwrite. No filler or redundant background.
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, it covers the core action, accepted input shapes, and overwrite behavior. It still omits important invocation details such as whether values and formulas conflict, dimension-mismatch behavior, and what is returned.
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 six parameters, including broadcast semantics for values, formulas, and numberFormat. The description restates those semantics but adds little parameter-specific meaning 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 and resource: write values/formulas into a range of the live workbook. It distinguishes itself from adjacent tools like format_range or clear_range by focusing on writing values and formulas, but it never explicitly names or contrasts with those siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the write operation and the overwrite warning, but there is no explicit when-to-use guidance or routing to alternatives such as read_range, format_range, or clear_range.
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.
86 tool updates
v0.6.0- First observed
add_chart - First observed
add_comment - First observed
add_conditional_format - First observed
add_name - First observed
add_slide - First observed
add_table - First observed
add_worksheet - First observed
autofit_range - First observed
calculate_workbook - First observed
clear_range - First observed
comment_on_paragraph - First observed
copy_range - First observed
copy_slides - First observed
delete_paragraph - First observed
delete_worksheet - First observed
duplicate_slide - First observed
edit_shape_paragraphs - First observed
edit_slide_chart - First observed
edit_slide_xml - First observed
edit_slide_zip - First observed
edit_speaker_notes - First observed
edit_table_columns - First observed
execute_exceljs - First observed
execute_officejs - First observed
execute_wordjs - First observed
find_in_range - First observed
format_paragraph - First observed
format_range - First observed
format_shapes - First observed
freeze_panes - First observed
get_document_properties - First observed
get_local_copy - First observed
get_paragraph - First observed
get_selection - First observed
get_tracked_changes - First observed
insert_image - First observed
insert_or_delete_range - First observed
insert_page_break - First observed
insert_paragraph - First observed
insert_table - First observed
inspect_deck - First observed
inspect_document - First observed
inspect_layouts - First observed
inspect_slide - First observed
inspect_workbook - First observed
list_content_controls - First observed
list_documents - First observed
list_presentations - First observed
list_workbooks - First observed
preview_deck - First observed
read_comments - First observed
read_deck_text - First observed
read_paragraphs - First observed
read_range - First observed
read_shape_paragraphs - First observed
read_slide_xml - First observed
read_slide_zip - First observed
read_speaker_notes - First observed
read_table - First observed
read_threaded_comments - First observed
refresh_pivottables - First observed
replace_in_sheet - First observed
replace_text - First observed
reply_to_comment - First observed
resolve_comment - First observed
save_document - First observed
scan_slide - First observed
screenshot_slide - First observed
search_document - First observed
search_fluent_icons - First observed
search_text - First observed
set_content_control_text - First observed
set_data_validation - First observed
set_dimensions - First observed
set_document_properties - First observed
set_hyperlink - First observed
set_merge - First observed
set_paragraph_text - First observed
set_table_cell - First observed
set_table_cells - First observed
set_worksheet_protection - First observed
show_slide - First observed
sort_range - First observed
update_worksheet - First observed
verify_slides - First observed
write_range
TDQS
Scored across 86 tools
Most tools target distinct resources/actions, but the PowerPoint surface has several overlapping read/inspect variants (inspect_slide, scan_slide, preview_deck, read_deck_text, screenshot_slide) and multiple editing routes (edit_slide_xml, edit_slide_zip, edit_shape_paragraphs, execute_officejs). The descriptions do a good job explaining when to use each, but an agent still faces real selection ambiguity.
Names are consistently snake_case, which helps, but verbs vary widely (inspect, scan, read, get, list, preview, show, edit, execute) and cross-domain tools are not systematically prefixed by app. The pattern is readable but not highly predictable across 86 tools.
86 tools is far beyond a well-scoped set for an MCP server, even one spanning PowerPoint, Word, and Excel. The breadth creates a large surface that is hard for an agent to navigate and invites redundancy.
Coverage is broad: PowerPoint has layout, shape, text, notes, chart, image, and XML/zip operations; Word has paragraph, table, comment, and metadata operations; Excel has range, table, chart, validation, comment, and protection operations. Some lifecycle gaps remain (e.g., PowerPoint slide deletion/reordering, Word table row operations), but core workflows are covered.
Maintenance
Related MCP Connectors
An agent-first office suite Claude & ChatGPT read and write over one MCP URL.
Create, review and edit Word, PowerPoint, Excel and PDF documents from any AI agent.
MCP server for your apps' tools and custom tools, plus hosted AI agents and approval-gated workflows
214 tools for AI agents over one MCP endpoint: image, video, audio, 3D, data, storage, mail, GPUs.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceMCP server for driving Office add-ins (Excel, Word, Outlook, PowerPoint, OneNote) through high-level workflow tools and queries, enabling LLM agents to automate document tasks across Microsoft Office applications via a single Go binary.4-
- AlicenseNot gradedqualityBmaintenanceSuite of MCP servers for local-first, governed automation of Microsoft Office files (Excel, PowerPoint, Word) via structured tool calls.99 PyPI8MIT

SumOffice MCP serverofficial
AlicenseNot gradedqualityCmaintenanceEnables AI agents to open, read, propose, and apply edits to real Word and Excel files while preserving macros, Power Query, and file integrity.MIT- AlicenseNot gradedqualityAmaintenanceLets any AI agent read and edit the Excel and Word documents a user already has open, attaching through COM so it sees unsaved edits, recalculated formulas, pivot tables, slicers and charts, and can bridge content between the two apps with journaling, undo, read-only mode and allowed-folder limits.MIT