Office MCP
Click on "Install 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 MCPReview the Q3 sales Excel file and highlight the top 10 rows"
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 MCP
Office MCP is a Windows-native Model Context Protocol (MCP) server providing high-fidelity automation, AST inspection, and transactional mutation of Microsoft Office documents (Excel, Word, and PowerPoint).
Built on top of FastMCP, Office MCP combines native Windows COM automation (via pywin32 with Single-Threaded Apartment isolation) with pure-Python fallbacks (openpyxl, python-docx, python-pptx), backed by an airtight Safety Engine featuring path sandboxing, in-memory concurrency locks, automatic SHA-256 pre-mutation snapshots, SQLite WAL audit logging, and post-mutation invariant verifiers.
Table of Contents
Related MCP server: docforge-mcp
Architecture Overview
flowchart TD
Client["LLM / MCP Client<br/>(Claude, Antigravity, Cursor)"] -->|JSON-RPC| Server["FastMCP Server<br/>(office_mcp.server)"]
subgraph SafetyEngine ["Safety & Concurrency Engine"]
Sandbox["Path Sandbox<br/>(OFFICE_MCP_ALLOWED_ROOTS)"]
LockMgr["DocumentLockManager<br/>(Exclusive in-memory write locks)"]
SnapMgr["SnapshotManager<br/>(.office_snapshots + SHA-256)"]
Audit["AuditLogger<br/>(SQLite WAL: office_audit.db)"]
end
subgraph ExecutionLayer ["Transactional Execution Pipeline"]
Executor["ChangeSet Executor"]
Verifier["Verification Engine<br/>(AST, Formula Errors, Visual PNG)"]
end
subgraph DriverLayer ["Dual-Tier Office Drivers"]
Worker["STA Worker Registry<br/>(Dedicated Thread + pythoncom Pump)"]
COM["Windows COM Automation<br/>(Excel, Word, PowerPoint .Application)"]
Fallback["Pure-Python Fallbacks<br/>(openpyxl, python-docx, python-pptx)"]
end
Server --> Sandbox
Sandbox --> LockMgr
LockMgr --> SnapMgr
SnapMgr --> Executor
Executor --> DriverLayer
DriverLayer --> Worker
Worker --> COM
Worker -.->|Non-Windows| Fallback
Executor --> Verifier
Verifier -->|Pass| Commit["Commit Document & Release Lock"]
Verifier -->|Fail| Rollback["Auto-Rollback to .bak Snapshot"]
Commit --> Audit
Rollback --> AuditKey Capabilities & Safety Guarantees
Inspect First, Minimize Mutations, Verify Everything: Full document hierarchy and metadata inspection prior to applying modifications.
STA COM Isolation: Windows COM calls execute in dedicated Single-Threaded Apartment background threads with active message pumps (
pythoncom.PumpWaitingMessages()) and task timeouts to avoid modal dialog deadlocks.Canonical Filesystem Sandboxing: Operations outside
OFFICE_MCP_ALLOWED_ROOTSare immediately rejected (SecuritySandboxError).Pre-Mutation Snapshot & Auto-Rollback: Byte-exact
.baksnapshots are generated before any write. Invariant failures (e.g.,#REF!,#DIV/0!, corrupted AST, missing elements) trigger an automatic, immediate rollback.High-Performance 2D SAFEARRAY Marshaling: Bulk matrix data assignment in Excel COM runs orders of magnitude faster than individual cell writes.
Visual Slide Verification: PowerPoint slides can be exported to PNG at custom resolutions and validated against bounding box collisions.
SQLite WAL Audit Trail: All reads, writes, snapshots, and rollbacks are recorded with execution metrics in
office_audit.db.
Prerequisites & Installation
System Requirements
Operating System: Windows 10/11 or Windows Server (for native COM automation). Cross-platform environments will utilize fallback drivers.
Microsoft Office: Office 2016, 2019, 2021, or Microsoft 365 desktop apps installed (for COM drivers).
Python: Version
3.10or higher.
Installation
Clone the repository and install the package using pip or uv:
# Clone repository
git clone https://github.com/your-org/office-mcp.git
cd office-mcp
# Create and activate virtual environment
python -m venv .venv
.venv\Scripts\activate
# Install package in editable mode
pip install -e .
# (Optional) Install development dependencies
pip install -e ".[dev]"Configuration
Office MCP is configured through environment variables or a .env file in the root directory:
Environment Variable | Default Value | Description |
|
| JSON array or comma-separated list of allowed absolute paths for file operations. |
|
| Directory name for pre-mutation |
|
| Path to SQLite audit database (WAL mode enabled). |
|
| Timeout in seconds for individual COM task execution. |
|
| Timeout in seconds for acquiring an exclusive document lock. |
|
| Maximum number of snapshots preserved per document directory. |
|
| Logging level ( |
|
| Security flag controlling whether VBA macros are allowed to run. |
Client Integration
Claude Desktop
Add the server to your claude_desktop_config.json:
{
"mcpServers": {
"office-mcp": {
"command": "python",
"args": ["-m", "office_mcp.server"],
"env": {
"OFFICE_MCP_ALLOWED_ROOTS": "[\"C:\\\\path\\\\to\\\\documents\", \"C:\\\\path\\\\to\\\\workspace\"]",
"OFFICE_MCP_LOG_LEVEL": "INFO"
}
}
}
}Antigravity / Gemini CLI
In your project configuration or user settings (mcp_config.json):
{
"mcpServers": {
"office-mcp": {
"command": "python",
"args": ["-m", "office_mcp.server"],
"cwd": "C:/path/to/office-mcp",
"env": {
"OFFICE_MCP_ALLOWED_ROOTS": "[\"C:/path/to/office-mcp\"]"
}
}
}
}VS Code / Cursor (.mcp.json)
{
"servers": {
"office-mcp": {
"type": "stdio",
"command": "${workspaceFolder}/.venv/Scripts/python.exe",
"args": ["-m", "office_mcp.server"]
}
}
}MCP Tools Reference
The server exposes 19 specialized tools categorized by application and function:
Excel Tools
Tool Name | Parameters | Description |
|
| Opens an Excel workbook within allowed roots and returns sheet, table, and range metadata. |
|
| Creates a new workbook (.xlsx) with optional custom sheet names. |
|
| Returns AST metadata: used ranges, tables ( |
|
| Reads a 2D matrix of values and formulas from an Excel range (e.g. |
|
| Applies an atomic batch of operations (values, formulas, formatting, tables, charts) with post-validation and automatic rollback. |
|
| Exports workbook or active sheet directly to high-fidelity PDF. |
Word Tools
Tool Name | Parameters | Description |
|
| Opens a Word document (.docx) and extracts its AST metadata. |
|
| Creates a new document with an optional Heading 1 title. |
|
| Extracts full document AST (headings, paragraphs, styles, word/character count, and tables). |
|
| Applies atomic operations (headings, paragraphs, bullet lists, tables, cell merges, styles) with structural invariant verification. |
|
| Exports a Word document directly to PDF format. |
PowerPoint Tools
Tool Name | Parameters | Description |
|
| Opens a presentation (.pptx) and returns slide metadata. |
|
| Creates a new presentation with 16:9 widescreen or 4:3 standard aspect ratio. |
|
| Inspects slides, shape geometries, text frames, positions, and layout types. |
|
| Applies slide creations, textbox additions, shape updates, and image insertions with bounding box checks. |
|
| Renders a specific slide to a PNG image for visual inspection. |
|
| Exports the full presentation to PDF. |
General & Safety Tools
Tool Name | Parameters | Description |
|
| Manually restores a document to its pre-mutation |
|
| Queries recorded audit logs from |
MCP Resources & Prompts
Resources
office://audit-logs: Live JSON stream of recent document operations and status codes.office://settings: Current runtime configuration and canonical allowed root paths.
Workflow Prompts
spreadsheet-audit: Pre-configured guided prompt for scanning Excel workbooks for formula errors, broken references, and unformatted data ranges.report-generation: Guided workflow for assembling professional Word documents with structured tables, executive summaries, and heading hierarchies.presentation-builder: Guided workflow for generating polished PowerPoint decks adhering to widescreen aspect ratios and visual typography rules.
Transactional ChangeSet Protocol
ChangeSets represent atomic units of work. If any operation fails or any invariant is violated during post-mutation verification, the entire batch is rolled back to the pre-mutation snapshot.
Excel ChangeSet Example
{
"document_id": "C:/path/to/documents/Financials.xlsx",
"intent": "Update Q4 Revenue and format summary table",
"operations": [
{
"op_type": "set_range",
"target": "A1:C3",
"params": {
"sheet": "Summary",
"values": [
["Quarter", "Revenue", "Expenses"],
["Q3", 150000, 90000],
["Q4", 220000, 110000]
]
}
},
{
"op_type": "set_formula",
"target": "B4",
"params": {
"sheet": "Summary",
"formula": "=SUM(B2:B3)"
}
},
{
"op_type": "format_range",
"target": "A1:C1",
"params": {
"sheet": "Summary",
"bold": true,
"bg_color_rgb": "#1F4E78",
"color_rgb": "#FFFFFF"
}
},
{
"op_type": "create_table",
"target": "SummaryTable",
"params": {
"sheet": "Summary",
"range_address": "A1:C3",
"style": "TableStyleMedium9"
}
}
],
"expected_invariants": [
"no_formula_errors"
],
"risk_level": "low",
"dry_run": false
}Word ChangeSet Example
{
"document_id": "C:/path/to/documents/Quarterly_Report.docx",
"intent": "Add Executive Summary and Financial Metrics Table",
"operations": [
{
"op_type": "add_heading",
"target": "Executive Summary",
"params": { "level": 1 }
},
{
"op_type": "add_paragraph",
"target": "During Q4, overall performance exceeded targets across all key business units.",
"params": { "font_size_pt": 11 }
},
{
"op_type": "insert_table",
"target": "",
"params": {
"rows": 3,
"cols": 3,
"headers": ["Department", "Budget", "Actual"],
"data": [
["Engineering", "$500,000", "$480,000"],
["Marketing", "$200,000", "$210,000"]
],
"style": "Table Grid"
}
}
],
"expected_invariants": [
{
"invariant_type": "min_paragraphs",
"expected_value": 2
}
],
"risk_level": "low"
}PowerPoint ChangeSet Example
{
"document_id": "C:/path/to/documents/PitchDeck.pptx",
"intent": "Add Title Slide and KPI Callout Shapes",
"operations": [
{
"op_type": "add_slide",
"target": "",
"params": {
"layout_num": 12,
"title": "Q4 Performance Overview"
}
},
{
"op_type": "add_textbox",
"target": "Strategic Growth & Milestones",
"params": {
"slide_index": 1,
"left": 100,
"top": 120,
"width": 800,
"height": 60,
"font_size": 32,
"bold": true,
"color_rgb": "#111827"
}
},
{
"op_type": "add_shape",
"target": "rounded_rectangle",
"params": {
"slide_index": 1,
"left": 100,
"top": 220,
"width": 300,
"height": 160,
"fill_color": "#2563EB",
"text": "+45% YoY Growth"
}
}
],
"expected_invariants": [
{
"invariant_type": "min_slide_count",
"expected_value": 1
}
],
"risk_level": "medium"
}Development & Testing
Office MCP includes an extensive unit and integration test suite using pytest:
# Run full test suite
pytest
# Run tests with verbose output
pytest -v
# Run only Excel driver tests
pytest tests/test_excel.py
# Run only safety engine tests
pytest tests/test_safety.pyCode formatting and static type checking are enforced via ruff and mypy:
# Format and lint code
ruff check src tests
ruff format src tests
# Static type verification
mypy srcTroubleshooting & COM Error Handling
Office MCP translates low-level Windows COM HRESULT codes into clear, actionable domain exceptions:
COM HRESULT | Hex Code | Domain Exception | Description & Recovery |
|
|
| An internal Office application error occurred. Check parameters. |
|
|
| Office application is busy displaying a modal dialog. Closed via watchdog. |
|
|
| Office application is handling user interaction. Retried automatically. |
|
|
| COM object accessed across apartment boundaries without marshaling. STA worker ensures thread affinity. |
|
|
| The requested document path does not exist. |
|
|
| Document is locked by another process or instance. |
|
|
| Unspecified COM failure. The engine performs an automatic snapshot restore. |
Diagnostic Tips
Orphaned Office Processes: If Excel, Word, or PowerPoint remain hanging in Task Manager, Office MCP's
ProcessManagerterminates registered instances on shutdown. You can also force-terminate via PowerShell:Stop-Process -Name EXCEL, WINWORD, POWERPNT -Force -ErrorAction SilentlyContinueAudit Inspection: Inspect
office_audit.dbusing theoffice_query_audit_logstool or any SQLite viewer to review error stack traces and rollback history.
Available Tools
19 toolsexcel_apply_changesetA
Apply an atomic ChangeSet to an Excel workbook with formula verification and rollback
| Name | Required | Description | Default |
|---|---|---|---|
| changeset | Yes | ChangeSet dictionary adhering to the ChangeSet schema. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
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 discloses atomicity, formula verification, and rollback behavior, which are meaningful execution traits beyond what the name and schema convey. It does not detail whether rollback is automatic or requires a separate call, but the core mutation behavior is transparent.
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 entire description is one front-loaded sentence that packs the action, resource, and key behavioral guarantees without filler. Every phrase earns its place, and the structure is immediately scannable for an agent.
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, the description gives essential behavior (atomic apply, formula verification, rollback) but omits preconditions such as whether the workbook must already be open and does not expand on ChangeSet construction. An output schema exists, so return values are covered, but the overall context is only minimally 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 input schema already documents the single 'changeset' parameter at 100% coverage: 'ChangeSet dictionary adhering to the ChangeSet schema.' The tool description adds no additional parameter semantics, so the high-coverage 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 description opens with a concrete verb, 'Apply', names the resource ('ChangeSet' to 'an Excel workbook'), and adds meaningful qualifiers: 'atomic', 'formula verification', and 'rollback'. This clearly differentiates it from sibling document-type apply tools such as word_apply_changeset and powerpoint_apply_changeset.
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 the tool is for applying changesets to Excel workbooks, but it does not explicitly state when to prefer it over alternatives, when not to use it, or mention sibling tools like excel_open or office_rollback_document. Usage is inferred rather than explicitly guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
excel_create_workbookA
Create a new Excel workbook with custom sheets
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Target file path within allowed roots. | |
| sheets | No | Optional list of sheet names to initialize. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
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 merely states the creation action without revealing what happens if the target path already exists, whether the file is overwritten, or any other side effects 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?
A single, front-loaded sentence with zero filler. The verb, resource, and parameter-worthy scope ('custom sheets') all earn their 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?
The tool is simple with only 2 parameters and an output schema, so return values need not be described. However, with no annotations, the absence of overwrite/error behavior and default-workbook semantics leaves a real gap for an agent deciding how to handle an existing file.
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 both 'path' and 'sheets' fully. The phrase 'with custom sheets' lightly echoes the sheets parameter but adds no new meaning or format details 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 uses a specific verb+resource pair ('Create a new Excel workbook') and adds scope ('with custom sheets'). Among sibling tools like excel_open, excel_read_range, and excel_apply_changeset, this is the only creation tool, so it is immediately distinguishable.
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 creation intent is clear from the description, so when to use it is implied by contrast with reading/editing siblings. However, there is no explicit guidance about when not to use it or which alternative to prefer (e.g., excel_open for existing files, excel_apply_changeset for modifications).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
excel_export_pdfB
Export an Excel workbook to PDF format
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Path to source workbook. | |
| target_pdf | Yes | Target PDF path within allowed roots. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
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 behavior disclosure. It states the conversion but does not mention that a PDF file is created at target_pdf, whether an existing target is overwritten, or any constraints or limitations of the conversion. Core behavioral detail is missing.
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 filler words. Every word contributes to the core 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?
For a simple two-parameter conversion tool with an output schema and full schema coverage, the description is minimally adequate. However, with no annotations, it omits behavioral context such as file creation and overwrite semantics, leaving an agent to guess.
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 describes both parameters. The description adds no parameter-level information; the baseline 3 applies because the structured definitions carry the semantic load.
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/result pair: 'Export an Excel workbook to PDF format.' It is immediately distinguishable from sibling tools like word_export_pdf and powerpoint_export_pdf because the source format 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?
The description gives no guidance about when to select this tool over alternatives, such as word_export_pdf or powerpoint_export_pdf, and names no sibling or alternative. Usage must be inferred entirely from the resource type in the purpose statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
excel_inspectB
Inspect structural metadata of an Excel workbook
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Path to the workbook. | |
| sheet_name | No | Optional sheet name to target. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the burden of behavioral disclosure. The verb 'inspect' implies a read-only operation, but the description does not explicitly state that the workbook is never modified, nor does it explain behavior for invalid paths or access requirements. It conveys the core intent without exposing edge 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?
The description is a single efficient sentence with the action and resource front-loaded and no filler words. It is concise, though it misses the opportunity to add routing or constraint context that would make it more informative.
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, has only two parameters with full schema coverage, and an output schema exists, so the short description is nearly sufficient. However, it leaves 'structural metadata' slightly underspecified and provides no guidance on choosing this over excel_read_range, which are meaningful completeness gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3 even without additional parameter detail. The description adds no meaning beyond 'workbook' and 'structural metadata,' but the schema already sufficiently documents path and the optional sheet_name.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb, 'inspect,' and a specific resource, 'Excel workbook,' with the scope 'structural metadata,' which distinguishes it from sibling tools like excel_read_range (cell data) and excel_open. It does not enumerate what metadata is returned, so it is clear but not maximally precise.
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 or when-not-to-use guidance, and no alternative is named. The phrase 'structural metadata' implies using this tool when workbook structure is needed, but the agent is left to infer the distinction from sibling names rather than from stated instructions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
excel_openB
Open an existing Excel workbook and inspect metadata
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Path to the Excel workbook (.xlsx, .xlsm, .xlsb). | |
| read_only | No | Whether to open in read-only mode. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
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, but it only states 'Open... inspect metadata' without explaining side effects, file locking, or that read_only defaults to false. It doesn't clarify whether the file is modified or what state the workbook is left in after opening.
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 concise sentence with no filler, front-loading the action and resource. Every word contributes to the tool's 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?
For a simple two-parameter tool with an output schema and full schema coverage, the description is minimally viable. However, it doesn't address when read-only mode matters or how this relates to excel_inspect and subsequent excel_read_range calls, so an agent may still be uncertain about workflow placement.
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 input schema covers both parameters with descriptions, so schema coverage is 100%. The description adds no additional parameter meaning beyond the schema, but it doesn't need to.
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 ('Open') and resource ('existing Excel workbook') and adds 'inspect metadata,' which clarifies the tool's scope. It distinguishes itself from create/export/read siblings by action, though it doesn't explicitly separate itself from the similarly named excel_inspect tool.
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 is provided on when to use this tool versus excel_inspect, excel_read_range, or how it fits into a workflow. The description gives no exclusions or alternatives, leaving usage entirely to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
excel_read_rangeA
Read a 2D matrix of values and formulas from an Excel range
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Path to the workbook. | |
| sheet_name | No | Optional sheet name (defaults to active sheet). | |
| range_address | Yes | Excel range address (e.g. 'A1:D10', 'B2'). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral burden. The verb 'Read' clearly implies a non-mutating operation, and mentioning both 'values and formulas' gives a useful sense of the response. It does not cover edge cases like empty cells or how formulas are formatted, but the core read-only behavior is transparent.
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 an active verb and no filler. Every word adds meaning: read, 2D matrix, values and formulas, Excel range. This is an appropriately concise definition.
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 low parameter count, full schema coverage, and an existing output schema, the description is nearly sufficient on its own. The main gap is that it does not place the tool in the broader workflow, e.g., whether excel_open should be called first or how this relates to excel_inspect, but that is more of a usage-guidance issue than a call-blocking omission.
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 input schema has 100% description coverage for all three parameters, so the schema already documents path, sheet_name, and range_address meaningfully. The description adds little beyond tying the operation to an 'Excel range', which matches range_address, but no extra parameter nuance is necessary.
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 ('Read'), a concrete resource ('Excel range'), and the expected output shape ('2D matrix of values and formulas'). It is clear enough to distinguish itself from siblings like excel_open and excel_apply_changeset, though it does not explicitly call out those differences.
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 guidance on when to use this tool instead of excel_open, excel_inspect, or excel_apply_changeset. It also does not mention any prerequisites, exclusions, or alternative conditions, leaving the agent to infer appropriate usage from the tool name and sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
office_query_audit_logsA
Query recent execution logs from the SQLite audit database
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max number of log records to return. | |
| status | No | Filter by 'SUCCESS', 'FAILED', or 'ROLLED_BACK'. | |
| app_type | No | Filter by 'excel', 'word', or 'powerpoint'. | |
| canonical_path | No | Filter by target document path. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral disclosure burden. The verb 'Query' implies a read-only operation, but the description does not mention ordering, time-window semantics, or any side effects. It is adequate but not detailed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler. Every word contributes to identifying the action and resource.
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 and output schema cover parameters and return shape, but the description leaves 'recent' undefined and does not explain audit log scope or ordering. This is a noticeable but not critical gap for a simple query 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%, with each parameter already documented. The tool 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?
The description states a specific verb ('Query'), a specific resource ('recent execution logs from the SQLite audit database'), and the scope is unambiguous. This clearly differentiates it from the Excel/Word/PowerPoint manipulation 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?
The description gives no guidance about when to use this tool versus alternatives, no exclusions, and no routing hints. An agent must infer its use solely from the tool name and general context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
office_rollback_documentB
Restore a document to its pre-mutation snapshot backup
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Path to the target document. | |
| snapshot_id | No | Optional snapshot identifier. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
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 disclosing behavior. It implies a mutating or destructive operation but does not say that current changes may be overwritten, whether the restore is reversible, or what permissions are required. This is a meaningful transparency gap for a restore 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 filler. It identifies the action, object, and mechanism, and remains easy to scan; it 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?
The tool has only two documented parameters and an output schema, so the basic invocation is adequately covered. However, for a rollback operation with no behavioral annotations, the description should also convey that a restore overwrites the current document state and clarify what happens when snapshot_id is omitted; those gaps keep 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?
The schema already documents both parameters with 100% coverage, so the description need not re-explain them. It adds only the context that the snapshot is a 'pre-mutation snapshot backup', which slightly clarifies the purpose of snapshot_id but not its optionality or omission behavior.
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 clear verb ('Restore') and resource ('a document') and specifies the mechanism ('pre-mutation snapshot backup'), so an agent can understand the core operation. It does not explicitly differentiate this from sibling tools, but no other sibling is named 'rollback' and the restore intent is evident.
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 'pre-mutation snapshot backup' implies that this tool is for undoing changes made to a document, which provides some usage context. However, the description does not state when to use rollback instead of apply_changeset or audit_logs, nor does it mention prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
powerpoint_apply_changesetA
Apply an atomic ChangeSet to a PowerPoint presentation with visual bounds checking and rollback
| Name | Required | Description | Default |
|---|---|---|---|
| changeset | Yes | ChangeSet dictionary adhering to the ChangeSet schema. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds meaningful behavior: atomicity, visual bounds checking, and rollback, which are not visible in annotations or schema. It improves over a bare 'apply changeset' statement, though it doesn't disclose how rollback is triggered or how failures are surfaced.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One dense, front-loaded sentence covers action, resource, and key safety behaviors without filler. Every word 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?
The output schema covers return details, and the description covers safety behavior, but a new agent isn't told which presentation to target or whether one must already be open. Given the external ChangeSet schema and sibling open/create tools, this is a moderate completeness 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?
The input schema already documents the single changeset parameter at 100% coverage. The description doesn't elaborate the changeset structure, but it reinforces that the changeset is atomic and validated; baseline 3 applies because schema carries the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific action (apply), a specific resource (PowerPoint presentation), and the key concept (atomic ChangeSet). It also distinguishes this from sibling apply_changeset tools by naming PowerPoint, so an agent can route correctly.
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 the tool is for applying changesets to PowerPoint, but it doesn't explicitly say when to prefer it over excel_apply_changeset/word_apply_changeset or state prerequisites such as an already-open presentation. No exclusions or alternative conditions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
powerpoint_create_presentationA
Create a new PowerPoint presentation with aspect ratio (16:9 or 4:3)
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Target file path within allowed roots. | |
| aspect_ratio | No | '16:9' widescreen (default) or '4:3' standard. | 16:9 |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
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 disclosure burden. It communicates the core creation action and aspect ratio, but it does not mention side effects such as whether an existing file is overwritten, what the initial presentation contains, or any permissions 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 a single, front-loaded sentence with no filler. It states the action and the key option in a compact, easily scannable way.
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 creation tool with an output schema, the description plus schema covers the essential information an agent needs. It could be slightly richer on behavioral edge cases, but the tool's simplicity and schema coverage make it reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters well. The description adds no meaningful semantic detail beyond what the schema provides for path or aspect_ratio.
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 action, 'Create a new PowerPoint presentation', which clearly identifies the resource and operation. It naturally distinguishes this tool from the other PowerPoint siblings like open, inspect, apply_changeset, render_slide, and export_pdf.
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 is clear that the tool is for creating a new presentation, but there is no explicit guidance about when to choose it over alternatives, such as using powerpoint_open or powerpoint_apply_changeset for existing presentations. The usage context is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
powerpoint_export_pdfA
Export a PowerPoint presentation to PDF format
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Path to source presentation. | |
| target_pdf | Yes | Target PDF path within allowed roots. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description alone must disclose behavioral side effects. It only states the core conversion action and does not mention whether the source is modified, whether the target is overwritten, or what file-system constraints apply. This leaves important behavioral context 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?
A single clear sentence with no filler or redundant wording. It is appropriately sized for the tool's simple operation and quickly communicates the core 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?
This is a simple two-parameter tool with complete schema descriptions and an output schema, so the description does not need to explain return values or parameter formats. The only missing context is behavioral side-effect guidance, which is minor for a straightforward export operation.
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 both parameters adequately. The description adds only a loose mapping between 'presentation' and path, and 'PDF' and target_pdf, which is useful but not substantial.
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 ('Export'), a specific resource ('PowerPoint presentation'), and the output format ('PDF'). This is enough to distinguish it from sibling tools like word_export_pdf and excel_export_pdf, even without reading their schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The intended use case is implied by the resource type and action: use this when a PowerPoint presentation needs to be converted to PDF. However, there is no explicit when-to-use guidance, no mention of alternatives, and no exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
powerpoint_inspectA
Inspect slides, layout names, shapes, and text frames in a PowerPoint presentation
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Path to presentation. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral disclosure burden. 'Inspect' strongly suggests a non-mutating operation, giving a basic safety signal, but the description says nothing about scope (e.g., entire deck vs. current slide), errors, or any implicit side effects. There is no contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single clear sentence that leads with the action and lists the relevant inspected entities. There is no filler or redundant repetition of schema 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?
This is a low-parametric tool with a full input schema and an output schema, so the description does not need to explain return values. It adequately identifies the tool's purpose and scope, though it could be slightly stronger with an explicit read-only caveat or typical use case.
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 the schema already provides a clear description ('Path to presentation') at 100% coverage. The tool description adds no further detail about the expected path format, but with full schema coverage, 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 the specific verb 'Inspect' and names both the resource ('a PowerPoint presentation') and the relevant detail types (slides, layout names, shapes, text frames). This scope distinguishes it from sibling tools like powerpoint_open or word_inspect.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The verb 'Inspect' implies this is the read-only/navigation tool for presentation structure, and siblings make the domain clear. However, it does not explicitly state when to choose it over, say, powerpoint_open or powerpoint_render_slide, nor does it mention prerequisites such as having already opened the file.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
powerpoint_openB
Open an existing PowerPoint presentation and inspect metadata
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Path to presentation (.pptx). | |
| read_only | No | Whether to open in read-only mode. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry behavioral disclosure. It states that the tool opens and inspects metadata, but does not say whether opening modifies the file, whether it acquires locks, what read_only=false implies in practice, or whether any side effects occur.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with no filler. The core action is front-loaded and every word contributes meaning.
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 presence of an output schema covers return-value expectations. However, because no annotations are provided, the missing side-effect and usage context makes the description only minimally complete for safe 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 both path and read_only are already clearly documented. The description adds no parameter-specific meaning, 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 description uses a specific verb ('open') and a clear resource ('existing PowerPoint presentation'), and adds 'inspect metadata' to convey the intended purpose. It distinguishes from create/workbook-style siblings, though it does not explicitly differentiate from the close sibling powerpoint_inspect.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use or alternative guidance is provided. The word 'existing' implies it is not for creating a presentation, but the agent receives no help choosing between this tool and powerpoint_inspect, or understanding the recommended call sequence.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
powerpoint_render_slideA
Render a slide to a PNG image for visual inspection and multimodal verification
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Path to presentation. | |
| width | No | Output image pixel width. | |
| height | No | Output image pixel height. | |
| target_png | No | Optional target PNG path. | |
| slide_index | No | 1-based slide index. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
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 states the render-to-PNG action but does not explain side effects, whether the presentation is modified, what happens when target_png is null, or whether the presentation must be open first.
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 focused sentence with no filler or redundant restatement of the tool name. It front-loads the action and output format before giving the use case.
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 five fully documented parameters and the existence of an output schema, the description is largely complete for a rendering tool. The main gap is the lack of behavioral detail and sibling comparison, but these are partially compensated by schema richness and output schema presence.
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 parameters are already well documented. The description adds no extra parameter-level meaning beyond the output format and purpose, but the baseline of 3 applies because the schema carries the load.
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 ('Render'), identifies the resource ('a slide'), the output format ('PNG image'), and a clear purpose ('visual inspection and multimodal verification'). This distinguishes it from siblings like powerpoint_export_pdf and powerpoint_inspect without needing to inspect their schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'for visual inspection and multimodal verification' gives a clear context for when the tool should be used. It does not explicitly name alternatives or state when not to use it, so it falls just short of full guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
word_apply_changesetA
Apply an atomic ChangeSet to a Word document with structural verification and rollback
| Name | Required | Description | Default |
|---|---|---|---|
| changeset | Yes | ChangeSet dictionary adhering to the ChangeSet schema. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It adds meaningful behavior by specifying that the operation is atomic, includes structural verification, and has rollback, which goes beyond a simple mutation statement. It does not mention preconditions like an open document or permission requirements, but the key safety-related behaviors are disclosed.
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 sentence with no unnecessary words. It front-loads the action and resource, then adds key behavioral qualifiers (atomic, verification, rollback) without becoming verbose.
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 covers the core action and key safety mechanisms, and an output schema exists so return-value details are not required. However, it does not clarify how the target Word document is identified or whether the document must already be open, which is important given the only parameter is a changeset and there is a sibling word_open 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 the baseline is 3. The description does not add much detail about the ChangeSet parameter beyond what the schema already states; it reinforces that the ChangeSet is atomic and applies to a Word document, but does not explain the ChangeSet's internal structure or target-document identification.
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 ('Apply'), a clear resource ('Word document'), and a distinct mechanism ('ChangeSet'), which makes the tool's purpose immediately clear. It also differentiates this tool from sibling apply_changeset tools for Excel and PowerPoint by explicitly scoping it to Word.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool by stating it applies a ChangeSet to a Word document, but it does not explicitly explain when to prefer this over alternatives such as word_open, word_inspect, or office_rollback_document. No exclusions or alternative routing guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
word_create_documentA
Create a new Word document with optional heading title
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Target file path within allowed roots. | |
| title | No | Optional title text formatted as Heading 1. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of disclosing side effects. It only says 'Create a new Word document' but does not specify what happens if the target path already exists (overwrite, error, or no-op), whether intermediate directories are created, or any other side effects. The optional heading title behavior is already covered by the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence conveys the core purpose with minimal waste. It is appropriately sized for a simple two-parameter create operation.
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, parameters are fully described, and an output schema exists. The main missing contextual piece is behavior on existing files, which is relevant for a create operation but not severe enough to heavily penalize this otherwise complete definition.
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. The description's mention of 'optional heading title' mirrors the title schema without adding new semantics. Baseline 3 is appropriate because the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'Create a new Word document' with an optional heading title. This clearly distinguishes it from sibling tools like word_open, word_inspect, and word_apply_changeset, which operate on existing documents.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The verb 'Create' implicitly signals when to use this tool, but there is no explicit guidance on when not to use it or what alternatives exist (e.g., word_apply_changeset for modifying an existing document). No edge cases or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
word_export_pdfB
Export a Word document to PDF format
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Path to source document. | |
| target_pdf | Yes | Target PDF path within allowed roots. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
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 only describes the conversion action and does not mention side effects such as overwriting target_pdf, required permissions, 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?
The description is a single short sentence that is appropriately sized and front-loaded with the action 'Export'. There is no filler or redundant detail.
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 conversion tool with an output schema, the description is minimally adequate, but it omits usage conditions and behavioral details such as overwrite behavior or limitations.
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%; both path and target_pdf have meaningful schema descriptions. The tool description adds no additional parameter semantics, 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 states a specific action ('Export'), a specific resource ('Word document'), and an explicit output format ('PDF'). This clearly distinguishes it from sibling exporters like excel_export_pdf and powerpoint_export_pdf.
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 state when to use this tool versus alternatives or provide any context or exclusions. Usage is only implied by the description, with no explicit guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
word_inspectB
Inspect structural hierarchy and AST of a Word document
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Path to the Word document. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
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. 'Inspect' implies a read-only operation, and the description states what is examined (structural hierarchy/AST), but it does not explicitly confirm zero side effects, say whether the file must exist, or describe how the inspection behaves on malformed documents.
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 filler. It conveys the tool's purpose efficiently and every word contributes meaning.
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-parameter tool with an output schema, the description plus schema is minimally sufficient. However, it lacks explicit usage guidance, read-only confirmation, and clarification of what 'AST' means, which an agent selecting this tool would need for full confidence.
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 schema already describes the only parameter, 'path', with 100% coverage. The tool description adds no additional parameter-level detail such as supported file formats, path resolution rules, or constraints, so it stays at 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 names a specific action ('Inspect'), a resource ('Word document'), and an object ('structural hierarchy and AST'), which differentiates it from sibling mutating tools like word_apply_changeset and other format inspectors. It stops short of 5 because 'AST' is undefined and no sibling is named to make the distinction explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to choose this tool over alternatives such as word_open or word_apply_changeset. The intended use is only implied by the verb 'inspect'; no exclusions, prerequisites, or alternative-selection hints are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
word_openB
Open an existing Word document and inspect AST metadata
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Path to Word document (.docx). | |
| read_only | No | Whether to open in read-only mode. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must bear the full burden of behavioral disclosure. It only states 'open' and 'inspect AST metadata,' without explaining the default read-write behavior, file locking, or whether opening in non-read-only mode has side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One concise, front-loaded sentence clearly states the action and the inspected artifact. No filler, repetition, or unnecessary detail is present.
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 parameter schema and presence of an output schema cover inputs and return values. However, with no annotations and no explanation of operational context, such as the read-only default's implications or the tool's place among the Word sibling tools, the agent still has to infer some important context.
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 both parameters, including read_only's default value and meaning. The description adds no parameter-level detail, but that is acceptable given full 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?
The description names a specific action ('Open') and a specific resource ('existing Word document'), and adds the AST-metadata inspection purpose. This distinguishes it from creation and export siblings, although 'AST metadata' is somewhat domain-specific jargon.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool: when opening an existing Word document. However, it offers no explicit guidance on alternatives or prerequisites, such as how word_open relates to word_inspect or word_apply_changeset.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
19 tool updates
v0.1.0- First observed
excel_apply_changeset - First observed
excel_create_workbook - First observed
excel_export_pdf - First observed
excel_inspect - First observed
excel_open - First observed
excel_read_range - First observed
office_query_audit_logs - First observed
office_rollback_document - First observed
powerpoint_apply_changeset - First observed
powerpoint_create_presentation - First observed
powerpoint_export_pdf - First observed
powerpoint_inspect - First observed
powerpoint_open - First observed
powerpoint_render_slide - First observed
word_apply_changeset - First observed
word_create_document - First observed
word_export_pdf - First observed
word_inspect - First observed
word_open
TDQS
Format prefixes make tool groups clear, but within each format `open` and `inspect` heavily overlap: both return metadata or structural information. An agent could easily select the wrong one when trying to examine a document. Other tools like read_range, apply_changeset, and export_pdf are more distinct.
All tools follow a consistent `{scope}_{verb}_{object}` snake_case pattern, such as excel_create_workbook and powerpoint_render_slide. The cross-cutting office_* tools are also predictable and fit the convention. Naming is highly consistent across all 19 tools.
19 tools is slightly above the ideal sweet spot, but the count is justified by three distinct document formats and shared cross-cutting capabilities. Each format has a coherent set of create/open/inspect/apply/export tools, plus PowerPoint rendering, so nothing feels extraneous.
The tool surface covers the core document lifecycle: create, open, inspect/read, mutate via changesets, rollback, export, and audit. The main gaps are minor, such as no explicit save-as or search tool, but agents can work around these with inspect and changeset operations. Overall, the domain is well covered without severe dead ends.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Create and manage documents, spreadsheets, and presentations from your AI assistant.
Create presentations, docs, sheets and meeting notes from chat. Hosted link, editor, PPTX & PDF.
An agent-first office suite Claude & ChatGPT read and write over one MCP URL.
Composable APIs for document extraction, image transformation, and document & sheet generation.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceAI-powered Office automation server that enables creating, editing, and processing Word, Excel, and PowerPoint documents through natural language instructions using Python-based libraries.1MIT
- AlicenseBqualityDmaintenanceEnables complete Office document lifecycle management for AI agents, including creation, editing, conversion, and templating of DOCX, XLSX, PPTX, PDF, and EML files.40MIT
- AlicenseNot gradedqualityBmaintenanceGenerates PowerPoint, Excel, Word, and Markdown files from natural language requests and reviews Word documents with AI comments.85MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI assistants to read, modify, and create Word (.docx) and Excel (.xlsx) files through natural language commands, including batch queries and temporary table management.MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/MTDEV2312/Office_Word_Excel_and_Power_Point_MCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server