Skip to main content
Glama
WilliamSmithEdward

xlide-excel-word-powerpoint-access-office-vba-mcp

xlide-mcp

PyPI version Python versions Downloads CI Security Malware scan OpenSSF Scorecard License: MIT

xlide-excel-word-powerpoint-access-office-vba-mcp MCP server – quality and maintenance score on Glama

An MCP server for the inside of an Office file. Read, write, analyze and test the VBA in Excel, Word, PowerPoint and Access, and edit the document around it. Visual Basic 6 projects open the same way.

VBA, Power Query and OOXML worksheet edits need no Office installation and run on Windows, macOS and Linux. Reading .xlsb and .xls cells, writing .xlsb cells, and running macros or tests need Windows with the desktop application.

xlide_list_projects                -> Budget.xlsm
xlide_project_info   Budget.xlsm   -> 4 modules, 2 sheets, 1 query, not signed
xlide_read_module    Helpers       -> the source, and a content token
xlide_write_module   Helpers       -> guarded by that token
xlide_analyze        Budget.xlsm   -> 0 errors, 2 warnings
xlide_run_tests      Budget.xlsm   -> 12 passed

Why

An agent asked to fix a macro works from a copied snippet with no idea what else is in the project, or asks the user to export the modules and paste them back afterwards. Both treat the Office file as opaque. The VBA project, the form designs and the M code are all readable and writable without opening the application at all.

This server makes that reachable, and bounds it. A write is refused if the module changed since it was read. An analysis error fails the change. A run happens in an application the server created and holds a deadline over. Anything that cannot be undone is the user's decision.

Related MCP server: Office MCP Server

Implementations

Directory

Language

Status

python/

Python 3.10+

Reference implementation

Other languages go in sibling directories. Python is normative: it tracks the upstream libraries, and ports track it. See docs/porting.md.

Install and run

pip install xlide-mcp              # reads and writes files, any platform
pip install "xlide-mcp[live]"      # adds running macros and tests, Windows
xlide-mcp --root /path/to/your/files

Point a client at it. For Claude Desktop, Claude Code or any client that launches a server over stdio:

{
  "mcpServers": {
    "xlide": {
      "command": "xlide-mcp",
      "args": ["--root", "/path/to/your/files"]
    }
  }
}

For VS Code, put this in .vscode/mcp.json at the workspace root. VS Code uses servers here; the portable .mcp.json format above uses mcpServers.

{
  "servers": {
    "xlide": {
      "type": "stdio",
      "command": "uvx",
      "args": ["--from", "xlide-mcp[live]", "xlide-mcp", "--root", "${workspaceFolder}"]
    }
  }
}

Run MCP: List Servers in VS Code to start xlide and inspect its output if it does not register. The server prints its version and allowed roots to stderr on startup. The VS Code configuration format and commands are described in VS Code's MCP guide.

Or install nothing and let uv fetch it on first run. uv is one binary and installs its own Python, so a machine with neither can still run this:

{
  "mcpServers": {
    "xlide": {
      "command": "uvx",
      "args": [
        "--from", "xlide-mcp[live]",
        "xlide-mcp", "--root", "/path/to/your/files"
      ]
    }
  }
}

The live extra is safe to ask for on every platform: what it pulls in is marked sys_platform == 'win32', so off Windows it resolves to nothing and the same configuration works everywhere. Drop the --from pair for the file layer alone. uvx takes the newest published version unless you pin it, as xlide-mcp@1.2.3.

There is a Dockerfile for the file layer, which is the part that needs no Office installation. Mount the folder holding the files at /workspace, because that is the root the container is bounded to:

docker build -t xlide-mcp .
docker run --rm -i -v "$PWD:/workspace" xlide-mcp

--root is the security boundary. Every path a tool accepts is resolved, symlinks included, and refused unless it lands inside a root. Add --read-only to allow reads and analysis and refuse every write.

Call xlide_doctor first from a new client: it reports the workspace roots, which layers are installed, which Office applications this machine has, and whether each one has the Trust Center setting that module injection needs.

What it does

Files - the VBA project and the document it lives in. Most file tools need no Office installation; binary Excel grids use Excel on Windows.

The code project

Discover

xlide_list_projects, xlide_project_info, xlide_validate_project, xlide_create_project, xlide_doctor

Modules

xlide_list_modules, xlide_read_module, xlide_write_module, xlide_edit_module, xlide_rename_module, xlide_delete_module, xlide_list_procedures, xlide_search_modules

Analysis

xlide_analyze, xlide_analyze_source, xlide_rules

Forms

xlide_list_forms, xlide_read_form, xlide_manage_form, xlide_edit_form

References and catalog

xlide_list_references, xlide_manage_reference, xlide_access_catalog, xlide_read_access_query

Source control

xlide_export_modules, xlide_import_modules, xlide_git_changes

xlide_edit_module accepts preview_only=true to check a batch of line edits and return its proposed diff without saving. The preview's content token can be used to apply the same edits if the module has not changed. xlide_search_modules returns tokens for matched modules, so its line numbers can also be passed directly to a guarded edit. Broad searches can be paged with offset and next_offset; total_match_count reports how many matching lines exist across all pages. xlide_list_procedures returns a content token for guarded edits at the listed lines. Reading an empty module returns its empty body and token. Writing an identical module or applying an unchanged module import skips the save; the response reports saved=false. Applying an unchanged export leaves the existing .bas and .cls files untouched. Long Power Query formulas can be read by line; the read returns a token that xlide_write_query can use to refuse a stale change. Large form designs can be read in pages with offset and next_offset. Office file, VBA module and Power Query lists also return next_offset when a later page is available. For crowded drawing layers, pass sheet to xlide_list_shapes and follow its next_offset to read later shapes. Worksheet lists mark unreadable visibility or pivot metadata as unknown, and formatted or rich text cell reads name the cell when decoding fails instead of returning a blank. An Excel-backed worksheet survey refuses malformed output instead of dropping sheets. An Excel-backed cell read refuses a partial grid instead of labeling it as the full range. Form summary lists use the same offset and next_offset paging. Form reads distinguish missing properties or sections from a read failure, and an unreadable Access report collection fails instead of appearing empty. Procedure lists also return next_offset for long modules. Structural validation problems can be read with offset and next_offset. Access catalog lists return a next_offsets entry for each included collection. Long saved query SQL is previewed in the catalog; xlide_read_access_query returns the full text in character pages with a content token. The list actions for tables, names, validation, conditional formats, hyperlinks and comments also accept offset and max_results and return next_offset. Merging cells keeps only the top-left value. xlide_format_cells refuses to clear other values or formulas unless allow_overwrite=true is passed. xlide_sort_rows sorts a range, table or filter with ordered keys; xlide_remove_duplicates keeps the first matching row. xlide_copy_cells copies between sheets with Paste Special options and requires allow_overwrite=true. xlide_update_shape changes a shape's position, name, text, alt text or visibility without removing it; it also changes a Forms control's linked cell or list range.

xlide_check_cells lists Excel's green-triangle error checks, including numbers stored as text and inconsistent formulas, with paging for long lists.

The document around it

Power Query

xlide_list_queries, xlide_read_query, xlide_write_query (set, rename, remove, load, unload)

Sheets and cells

xlide_list_sheets, xlide_read_cells, xlide_write_cells, xlide_evaluate_formula, xlide_check_cells, xlide_format_cells, xlide_sort_rows, xlide_remove_duplicates, xlide_copy_cells

Structure

xlide_manage_sheet, xlide_manage_rows_columns

Tables and names

xlide_manage_table, xlide_manage_name, xlide_manage_filter

Rules, links and notes

xlide_manage_validation, xlide_manage_conditional_format, xlide_manage_hyperlink, xlide_manage_comment, xlide_page_setup

Shapes and charts

xlide_list_shapes, xlide_manage_shape, xlide_update_shape, xlide_set_shape_macro, xlide_add_chart

Execution - Windows with the desktop application.

xlide_run_macro, xlide_run_vba, xlide_run_tests, xlide_compile_check

Your Office applications - Windows with the desktop application. The one place this server acts inside an application the user is running, and only on the file named.

xlide_is_open, xlide_open_in_app, xlide_close_in_app

Live editor - a running xlide_vbide session inside the Visual Basic Editor.

xlide_live_sessions, xlide_live_state, xlide_live_request, xlide_live_read_module

xlide_live_read_module accepts line ranges for long unsaved source and returns a content token for comparing that source with the saved module. Both analysis tools return next_offset when findings exceed a page, while keeping their full severity counts.

Formats

Host

Extensions

Excel

.xlsm .xlsb .xlam .xls, and .xlsx for everything except VBA

Word

.docm .dotm .doc

PowerPoint

.pptm .potm

Access

.accdb .mdb

Visual Basic 6

.vbp

VBA reads and writes in all of them. Power Query is available in .xlsx, .xlsm, .xlsb and .xlam; package-based worksheet edits are available in .xlsx, .xlsm and .xlam. A .xlsx has no VBA project by design and is listed anyway, since its queries and sheets are fully reachable.

A recognized extension outside those sets is listed with the reason it cannot be opened. Nothing drops out of a listing without saying why.

Excel, Word and PowerPoint write no VBA project into a macro-enabled file until its first macro exists, so a .xlsm nobody has written code in yet has none. That is an ordinary file: the listings answer empty, and the first module written gives it the project its application would have made. An Access database that has never held code can likewise have no project; xlide_write_module creates it with the first module, or xlide_create_project adds an empty one to an existing .accdb.

A .xlsb keeps its grid in binary records and a .xls inside a compound file, neither of them OOXML. On Windows with Excel, those go through Excel, and the result says source: excel and recalculated: true, because opening the workbook is what produced the values. This path returns values only; .xls cells cannot be written through this server.

Seeing what changed

An Office file is one binary blob to git, so a commit that changed a line of VBA and one that replaced the whole project are the same three words: Binary files differ. Two ways out, both reading the file through the same renderer.

xlide_git_changes reports what changed since any revision, one entry per module and query, each with a unified diff. Call it before committing, or to review what an agent just did.

xlide-mcp --textconv is a git textconv driver. Wire it up once and the file diffs as text everywhere git looks:

echo '*.xlsm binary diff=vba' >> .gitattributes
git config diff.vba.textconv "xlide-mcp --textconv"
git config diff.vba.cachetextconv true
 Public Sub Greet()
-    MsgBox "hello"
+    MsgBox "hello, world"
+    Debug.Print Now
 End Sub

That is git diff on a .xlsm. git show and git log -p convert too.

Inside VS Code beside XLIDE, there is a third way. Every write tells a running XLIDE what changed, and a module write carries its before and after, so XLIDE marks the module as an agent edit in its project tree, opens the diff, and offers Keep and Revert, as it does for its own agent tools. It needs an XLIDE that listens for this; docs/xlide-vscode-bridge.md is the protocol. With no XLIDE running, nothing changes.

binary diff=vba rather than diff=vba alone. The binary macro means -diff -merge -text, and the later diff=vba overrides only its -diff, so the file keeps -text and git never applies end-of-line conversion to a container it would corrupt.

In VS Code, any side of a diff that comes out of git history renders through the driver, because the git extension reads blobs with git show --textconv. Comparing two revisions of a workbook therefore shows VBA. The Source Control panel's working-tree diff does not: the right-hand side there is the file on disk, still binary.

Both routes render VBA, Power Query and the sheet inventory. Cell values are not included, and the first line of every rendered file says so, because a reader who does not know the scope takes an empty diff for an unchanged workbook. git still stores the blob either way, so merges stay binary.

The rules it works by

These are in the server's own instructions, so every agent that connects reads them whether or not the user configured anything.

  • The VBA inside the file is the only source of truth for it. Exported .bas and .cls files are copies and go stale.

  • A read returns a content token. Pass it back on the write, and the write is refused if anything changed the module in between.

  • Analysis after every change, and an error is a build failure.

  • A run happens in an Office instance the server created and can therefore terminate. The user's own applications are touched only through the three tools above, on the file named: unsaved work is closed only when the call says to save or discard it, and a process is ended only when asked, and only the one Windows names as holding the file.

  • Anything hard to undo is the user's decision: deleting a module, overwriting cells that hold data, writing to a project that is signed or password-protected. Cell overwrites and writes to signed or protected projects are refused until the call carries the flag that allows them.

  • A cell value is what Excel last calculated. A formula written here has no result in the file until Excel next opens it. calculate=true works results out with pyOfficeEditor's formula engine, which names any cell it could not.

Security

Report a vulnerability through private vulnerability reporting, not a public issue. SECURITY.md says what to include and which versions receive fixes.

CodeQL and Semgrep scan the server and release workflows, pip-audit checks the runtime dependencies, and ClamAV and YARA-X, with the YARA Forge rules, scan every tracked file and the built wheel and sdist, on every push, pull request, daily run and release. An unexpected finding, scan warning or missing scan stops a release. Each successful release carries its security report and the SARIF results as downloadable assets. Dependabot proposes dependency and workflow updates for review.

Built on

pyOpenVBA

Reads and writes VBA, UserForms and Power Query inside Office files, in pure Python.

pyOfficeEditor

The document surface: cells, formulas, formatting, tables, validation, rows and columns.

pyVBAanalysis

The static analyzer: 165 diagnostics, measured against each host's object model.

pyVBAharness

Runs VBA in desktop Office under a supervisor that enforces a deadline.

XLIDE for VS Code

Where the tool surface, the content-token guard and the agent instructions come from.

xlide for the VBE

The live editor session the xlide_live_* tools talk to.

Contributing

cd python
pip install -e ".[dev,live]"
python -m pytest              # the file layer, no Office needed
python -m pytest -m live      # the rest, real Office, Windows only
python -m ruff check src tests tools

The generated contract under contract/ must stay current; the test suite fails if it does not. After changing a tool:

python tools/export_contract.py
python tools/export_conformance.py

License

MIT.

Available Tools

65 tools
xlide_access_catalogAccess tables and queriesA
Read-onlyIdempotent

Lists what an Access database holds besides its code: tables with their columns, saved queries with their SQL, and the relationships between tables. An .accdb is an application rather than a document, and the VBA in it is written against these, so reading the modules alone shows half of it. Use include with offset and next_offsets to page through a large catalog. Long query SQL is previewed; use xlide_read_access_query for the whole text. If one query's SQL cannot be read, that entry has sql=null and sql_error rather than hiding the catalog. Access files only.

ParametersJSON Schema
NameRequiredDescriptionDefault
offsetNoItems to skip in each list.
includeNo'tables', 'queries', 'relationships' or 'all'.all
file_pathYesAbsolute path to the Access database.
max_resultsNoMost items per list.
include_systemNoInclude the MSys tables and relationships Access keeps its own objects in. Off by default: every database has them, and listing them buries the few that are about the user's data.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare read-only, idempotent and non-destructive, so safety is covered. The description goes further by disclosing failure semantics ('that entry has sql=null and sql_error rather than hiding the catalog') and the default exclusion of system tables, which the annotations do not convey.

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

Conciseness4/5

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

Front-loaded with the what, then paging, then the sibling escape hatch, then the error contract. Efficient overall, though the 'An .accdb is an application rather than a document...' sentence is motivational exposition that could be trimmed.

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

Completeness4/5

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

An output schema exists so return values need not be explained, and the description still covers the notable output contract (sql=null/sql_error, next_offsets). Nothing an agent needs to invoke it correctly is missing; remaining detail lives in the schema.

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

Parameters3/5

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

Schema description coverage is 100%, so include, offset, max_results and file_path are already documented with defaults and ranges. The description reinforces the paging pattern and mentions next_offsets, but adds no syntax or format 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.

Purpose5/5

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

States a specific verb and three concrete resources (tables with columns, saved queries with SQL, table relationships) and explicitly frames the scope as 'what an Access database holds besides its code'. This is clearly distinguishable from siblings like xlide_list_modules and xlide_read_access_query.

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

Usage Guidelines5/5

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

Names an alternative and the condition that selects it ('Long query SQL is previewed; use xlide_read_access_query for the whole text'), explains paging via include/offset/next_offsets, and gives an explicit applicability constraint ('Access files only'). Removes guesswork about when to call it.

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

xlide_add_chartAdd a chartA

Adds a chart of a block of cells to a worksheet and saves the workbook, written as Excel's Insert Chart writes one of the same type. The block's first row names the series and its first column holds the categories, as Excel reads a selection; a block taller than it is wide makes a series of each column. The data can be on another sheet, as Data!A1:C13. Place it with cell or left and top in points. xlide_list_shapes reports it afterwards with each series' formula.

ParametersJSON Schema
NameRequiredDescriptionDefault
topNoWithout cell: points from the top.
cellNoThe chart's top-left cell, such as H2.
leftNoWithout cell: points from the left.
sheetYesWorksheet the chart goes on.
titleNoThe title. Empty keeps Excel's automatic one.
widthNoPoints. 0 gives Excel's 360.
heightNoPoints. 0 gives Excel's 216.
file_pathYesAbsolute path to the Excel file.
series_inNo'columns' or 'rows' to say which way the series run. Empty decides.
chart_nameNoIts name. Empty gives Chart 1, Chart 2 and so on.
chart_typeNocolumn, bar, line, lineMarkers, pie, doughnut, scatter or area.column
data_rangeYesThe block to chart, header row and category column included.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior3/5

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

The description discloses that the tool saves the workbook and mimics Excel's Insert Chart behavior, and it details how the data is interpreted and how placement works. It also mentions that xlide_list_shapes will report the chart afterwards. Since all annotations are false, the description carries the full burden. It covers the main mutation (saving) and data handling, but does not discuss reversibility, permissions, or failure modes, leaving some behavioral aspects undisclosed.

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

Conciseness4/5

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

The description is a single, well-structured paragraph. It opens with the core action ('Adds a chart... and saves the workbook'), then provides data interpretation, placement, and verification. Each sentence adds value without redundancy. It is concise yet thorough, though slightly longer than necessary due to the detailed data-layout explanation.

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

Completeness4/5

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

Given the tool's complexity (12 parameters, output schema present), the description covers the essential aspects: what it does, how data is structured, how to position the chart, and how to confirm the result via xlide_list_shapes. It does not explicitly mention prerequisites like file being open or error handling, but these are not critical for the core usage. The description is sufficiently 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.

Parameters4/5

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

The schema already documents all 12 parameters with individual descriptions (100% coverage), so the baseline is 3. The description adds meaningful context beyond the schema by explaining how data_range is interpreted (first row as series names, first column as categories, and how column vs row series are auto-detected). It also clarifies placement options (cell vs left/top in points). This enrichment justifies a score above baseline.

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

Purpose5/5

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

The description clearly states the tool adds a chart of a block of cells to a worksheet and saves the workbook. It specifies the exact action and resource, and the data interpretation details (first row names series, first column categories) further clarify its function. It is distinct from sibling tools like xlide_manage_shape because it explicitly targets chart creation, not generic shape management.

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

Usage Guidelines4/5

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

The description provides clear context on how to use the tool: it explains the expected data layout, how series are determined, that data can reside on another sheet, and how to place the chart. However, it does not explicitly mention alternatives or when not to use this tool, so it lacks explicit exclusion criteria. This is a minor gap given the unambiguous nature of the tool's purpose.

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

xlide_analyzeAnalyze VBAA
Read-onlyIdempotent

Runs static analysis over every VBA module in an Office file and returns the problems with module, line, column, code and message. Needs no Office installation and runs nothing. Each file is measured against its own host's object model, so Word code is never judged by Excel's surface, and a Visual Basic 6 project against no host at all, because its code does not run in one. Call this after every VBA change and treat any problem at error severity as a build failure: fix it and analyze again until it is clean. Warnings are worth reading; some are style, some are the bug. Use offset and next_offset to read later findings.

ParametersJSON Schema
NameRequiredDescriptionDefault
offsetNoSkip this many matching findings.
file_pathYesAbsolute path to the Office file.
max_resultsNoReturn at most this many findings.
module_nameNoReport only this module's problems. The whole project is still analyzed, so cross-module references still resolve.
min_severityNoLowest severity to report: 'error', 'warning' or 'information'.information

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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

Adds substantial context beyond the annotations: no Office installation required, nothing is executed, host-specific object-model matching (Word vs Excel vs VB6), and the semantic weight of severities. The annotations already cover the read-only/idempotent safety profile, so this is a strong additive description rather than a restatement.

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

Conciseness4/5

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

Front-loaded with the core action and return shape, then guidance, then pagination. All sentences carry information, though the VB6 clause is niche and the sentence is longer than needed.

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

Completeness5/5

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

An output schema exists, so return-value explanation is optional; the description nonetheless names the returned fields, and it covers purpose, constraints, severity policy, and pagination. Nothing needed to invoke it correctly is missing.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3; the description earns an extra point by explaining the pagination flow ('use offset and next_offset to read later findings'), which ties the input parameter to an output field. It adds nothing for min_severity or module_name beyond what the schema already documents.

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

Purpose5/5

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

States a specific verb (static analysis) and scope (every VBA module in an Office file), plus the exact shape of what it returns (module, line, column, code, message). The 'every VBA module in an Office file' scope implicitly distinguishes it from the source-level sibling xlide_analyze_source.

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

Usage Guidelines4/5

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

Gives explicit when-to-use ('call this after every VBA change') and an actionable operating policy (treat error severity as a build failure, re-analyze until clean, read warnings). It does not name alternatives such as xlide_analyze_source or xlide_compile_check, so the routing decision is left partly to inference.

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

xlide_analyze_sourceAnalyze VBA sourceA
Read-onlyIdempotent

Runs static analysis over VBA source you are holding, before it is written to a file. Use it to check code you have just generated: it costs nothing, needs no file, and catches the compile errors that would otherwise surface in front of the user. Pass host so the code is measured against the right object model, and file_path instead if the code is destined for a file that already exists, which resolves calls into the rest of that project. Use offset and next_offset to read later findings from a long result.

ParametersJSON Schema
NameRequiredDescriptionDefault
hostNo'excel', 'word', 'powerpoint' or 'access'. Empty checks the language alone, with no host object model.
kindNo'standard', 'class', 'document' or 'userform'.standard
offsetNoSkip this many findings.
sourceYesThe VBA source to check.
file_pathNoAn existing Office file this module belongs to. Its other modules are analyzed alongside, so calls into them resolve. Overrides host.
max_resultsNoReturn at most this many findings.
module_nameNoName to report problems against.Module1

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive), and the description adds genuinely new behavior: no file required, no cost, errors surface here rather than in front of the user, and file_path resolves calls into the surrounding project. It does not describe result shape or error reporting, which keeps it at 4.

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

Conciseness4/5

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

Four front-loaded sentences, each carrying a distinct payload (purpose, when to use, host vs file_path, pagination). The 'costs nothing, needs no file' clause slightly overlaps with the opening framing, which is the only real waste.

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

Completeness5/5

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

With an output schema present and 100% parameter description coverage, the description need not cover returns. It still covers when to call, the host/file_path trade-off, and how to page through a long result, which is everything an agent needs for a 7-parameter read-only tool.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds decision-level meaning the schema does not: host is for measuring against an object model while file_path overrides host and pulls in sibling modules. It also explains the offset/next_offset pagination flow, which the schema only half-documents.

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

Purpose5/5

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

The opening sentence names a specific verb and resource ('Runs static analysis over VBA source') and immediately scopes it: source held in memory, before it is written to a file. That scope is exactly what separates it from the file-based 'xlide_analyze' sibling, so an agent can route 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.

Usage Guidelines4/5

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

Gives a concrete when-to-use ('check code you have just generated') and clarifies it is free of side effects ('costs nothing, needs no file'). It does not explicitly state exclusions or name the alternative tool to use for already-saved modules, so it stops short of the 5 bar.

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

xlide_check_cellsFind Excel cell error indicatorsA
Read-onlyIdempotent

Lists cells Excel would mark with a green error-checking triangle, such as numbers stored as text, inconsistent formulas, or formulas with cached errors. Returns the rule and cell for each finding. Excel hides ignored findings unless include_ignored=true. Formula-dependent checks use the file's cached results, which may be stale until Excel recalculates and saves it. Works on .xlsx, .xlsm and .xlam; page through long lists with offset and next_offset.

ParametersJSON Schema
NameRequiredDescriptionDefault
rulesNoExcel error-rule names; omit for its enabled rules.
sheetYesWorksheet name, matched without case.
offsetNoFindings to skip.
file_pathYesAbsolute path to the Excel file.
max_resultsNoMost findings to return.
include_ignoredNoInclude findings Excel was told to ignore.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already establish read-only, idempotent, non-destructive, closed-world behavior, yet the description adds real context beyond them: cached results may be stale until Excel recalculates, Excel hides ignored findings by default, and which file formats are supported. The only repetition is the return-shape sentence, which the output schema already covers.

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

Conciseness4/5

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

Four dense sentences, front-loaded with the core purpose and followed by behavior caveats and pagination; every sentence carries information. Slightly cramped, and the return-value sentence is partly redundant with the output schema.

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

Completeness5/5

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

For a paginated, read-only inspection tool with a full input schema and an output schema, the description supplies everything an agent needs: trigger semantics, staleness caveat, default filtering behavior, supported formats, and paging. Nothing material is missing.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds meaning beyond the schema: it clarifies the default rules behavior (Excel's enabled rules), the ignored-findings filter, and frames offset/next_offset as pagination for long result lists. It also references next_offset, which is not an input parameter, useful for understanding the returned paging.

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

Purpose5/5

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

Specific verb (lists) plus a precise resource (cells Excel would mark with a green error-checking triangle) with concrete examples of what triggers a finding. It is clearly distinguishable from siblings like xlide_read_cells or xlide_rules 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.

Usage Guidelines4/5

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

The description makes clear this is the diagnostic tool for error indicators and explains the conditions that change results (include_ignored=true, formula-dependent checks using cached results). It does not name an alternative sibling or state when-not-to-use, so it falls short of a 5 but is far above bare implication.

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

xlide_close_in_appClose in OfficeA
Destructive

Closes a file in the Office application the user has it open in, which frees it for a write. Only that file: the application stays, unless this server started the instance and nothing else is open in it. A copy holding unsaved work is left open and reported, unless save_changes saves it first or discard_changes closes it without saving; losing the user's work is their decision, so ask them. When the application does not answer, or the file stays locked, end_process ends the process Windows says holds the file, and every unsaved document in that process is lost with it: ask the user first. Where the user was in the file is remembered, and xlide_open_in_app puts them back there. Windows only.

ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathYesAbsolute path to the Office file.
end_processNoIf the application does not answer, or the file stays locked, end the process holding it. Loses unsaved work in every document open in it. Ask the user first.
save_changesNoSave unsaved changes before closing. Not for a read-only copy.
discard_changesNoClose without saving, losing unsaved changes. Ask the user first.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.9/5.0
Behavior5/5

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

Beyond the annotations, the description discloses critical behavioral traits: closing frees the file for write, the application stays unless this server started it and nothing else is open, unsaved copies are left open and reported, and ending the process destroys every unsaved document in it. It also reveals that the user's position is remembered and restored by xlide_open_in_app, adding real operational context that annotations alone do not provide.

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

Conciseness5/5

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

The description is dense but every sentence carries operational weight: the main action is front-loaded, and each subsequent clause addresses a real decision point or side effect. The long paragraph structure is acceptable given the destructive complexity, and no sentence is filler.

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

Completeness5/5

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

For a destructive tool with four parameters and an output schema, the description covers all the important context: when write access is freed, what happens to unsaved work, when process termination is acceptable, the platform restriction, and the restoration behavior via a sibling tool. Nothing an agent needs to safely invoke this tool correctly is missing.

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

Parameters4/5

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

Schema coverage is 100%, and each parameter already has a detailed description, so the baseline is 3. The tool description adds some extra meaning by clarifying that file_path refers to a file currently open in Office and by explaining the precedence relationship among save_changes, discard_changes, and end_process. This is modest but genuinely supplementary, so it earns a 4 rather than a 3.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Closes a file in the Office application the user has it open in.' It immediately distinguishes its scope by stating 'Only that file: the application stays,' which separates it clearly from its sibling xlide_open_in_app. The function's destructive and unlocking role is unmistakable.

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

Usage Guidelines5/5

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

The description gives explicit conditional guidance: use save_changes first when unsaved work matters, use discard_changes only with user consent, and use end_process only when the application does not answer or the file stays locked, again with user consent. It also names the alternative flow, xlide_open_in_app, for restoring the user's position, and states the Windows-only platform constraint.

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

xlide_compile_checkCompile checkA
Read-onlyIdempotent

Asks the real VBA editor to compile a file's project, and reports whether it accepted it. Windows only. This is the compiler's own verdict, where xlide_analyze is a static analyzer's; run the analyzer first, because it is free and needs no Office, and use this when the last word matters. Excel is made visible for the check, because a hidden instance does not surface the compile-error dialog and would report a rejection as a pass.

ParametersJSON Schema
NameRequiredDescriptionDefault
timeoutNoSeconds to wait for the verdict.
file_pathYesAbsolute path to the Office file.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the annotations, the description discloses two important behavioral traits: Excel is made visible during the check, and a hidden instance would misreport a rejection as a pass. This explains a non-obvious failure mode and gives the agent essential context for interpreting results.

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

Conciseness5/5

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

The description is compact and front-loaded with the core function, then platform constraint, then sibling guidance, then the visibility caveat. Every sentence contributes useful, non-redundant information and no filler is present.

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

Completeness5/5

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

For a tool with two fully documented parameters, a rich schema, and annotations covering read-only/idempotent behavior, the description adds the remaining context an agent needs: platform limitation, when to choose it versus the analyzer, and the visible-Excel behavior. Return values are covered by the output schema, so nothing critical is missing.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents file_path and timeout. The description mentions compiling 'a file's project' but does not add meaningful parameter-level detail beyond what the schema provides, so the baseline score of 3 is appropriate.

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

Purpose5/5

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

The description states a specific verb and resource: asks the real VBA editor to compile a file's project and reports whether it accepted it. It also distinguishes itself from xlide_analyze, naming the compiler's verdict versus a static analyzer's, so an agent can tell it apart from a closely related sibling.

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

Usage Guidelines5/5

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

It gives explicit usage guidance: run xlide_analyze first because it is free and needs no Office, and use this tool when the last word matters. It also states a hard exclusion, Windows only, clarifying when the tool cannot be used.

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

xlide_copy_cellsCopy or paste cellsA
DestructiveIdempotent

Copies a range to another cell or block, on the same sheet or another sheet, and saves the workbook. Paste Special can select values, formulas, formats, comments, validation, links or other parts; it can also transpose, skip blanks or combine values arithmetically. The destination may hold data, which the paste can replace. Set allow_overwrite=true only after the user agrees to replace it. Formulas and their relative references move as Excel's Copy does. Works on .xlsx, .xlsm and .xlam.

ParametersJSON Schema
NameRequiredDescriptionDefault
pasteNoall, values, formulas, formats, comments, validation, link, or another Excel Paste Special kind.all
sheetYesSource worksheet name.
file_pathYesAbsolute path to the Excel file.
operationNoadd, subtract, multiply or divide; empty replaces.
transposeNoTurn source rows into destination columns.
destinationYesDestination cell or repeatable block.
skip_blanksNoLeave destination cells unchanged for blank source cells.
source_rangeYesSource range such as A1:D20.
allow_overwriteNoRequired: the paste may replace data. Set after user agreement.
destination_sheetNoDestination sheet; empty means the source sheet.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already flag destructiveHint=true and idempotentHint=true, and the description reinforces this by disclosing that the destination may hold data that the paste can replace and that overwrite requires user consent. It further adds non-obvious behavior: formulas move with relative references as Excel's Copy does, and it works on .xlsx/.xlsm/.xlam. This is rich context beyond the annotations.

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

Conciseness4/5

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

Front-loads what the tool does, then layers paste-special options, overwrite warning, and formula semantics. Every sentence carries information, though the paste-special enumeration is dense and could be trimmed slightly.

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

Completeness5/5

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

For a 10-parameter mutation tool with an output schema already present, the description covers the essential gaps: overwrite consent, formula reference behavior, supported file types, and paste mode semantics. An agent has enough to invoke it correctly and safely.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description nonetheless adds interpretive meaning, e.g. that 'operation' combines values arithmetically and that skip_blanks leaves destination cells untouched, which helps an agent understand the paste-mode interaction rather than just the field list.

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

Purpose5/5

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

States a specific verb and resource ('copies a range to another cell or block, on the same sheet or another sheet') and adds a side effect ('saves the workbook'). This is clearly distinguishable from siblings like xlide_write_cells and xlide_read_cells without opening any schema.

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

Usage Guidelines4/5

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

Gives explicit conditional guidance for the risky path: 'Set allow_overwrite=true only after the user agrees to replace it.' It also explains when paste variants apply (values/formulas/formats/etc.). It stops short of naming sibling alternatives such as write_cells for outright value entry, so it is not a full when/when-not map.

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

xlide_create_projectCreate Office file or VBA projectA

Creates a new Office file with an empty VBA project at the given absolute path, from a template the application itself authored, so it opens with no repair prompt. Extensions: .xlsm, .xlsb, .xlam, .docm, .pptm, .accdb, and .xlsx for a workbook with Power Query and no macros. It never overwrites a file or replaces a project that is already there. A .xlsm, .docm or .pptm saved before its first macro has no VBA project at all; xlide_write_module gives it one along with the first module. This tool also gives an existing .docm or .accdb with no project the empty one its application makes.

ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathYesAbsolute path to create, whose extension picks the format, or an existing .docm or .accdb with no VBA project.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare non-read-only, non-destructive, non-idempotent, non-open-world. The description adds genuine context beyond that: the template comes from the application itself so the file opens without a repair prompt, and it never overwrites or replaces existing content. Return-value behavior is left to the output schema, which exists.

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

Conciseness4/5

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

Front-loaded with the core action and scoping constraint in the first sentence; subsequent sentences carry distinct payloads (extensions, non-overwrite guarantee, sibling routing). Slightly long and dense, but no sentence is filler.

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

Completeness5/5

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

With annotations covering safety semantics, an output schema covering returns, and 100% schema parameter documentation, the description fills the remaining gaps: format selection, overwrite behavior, and the hand-off to xlide_write_module. Nothing needed to invoke it correctly is missing.

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

Parameters4/5

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

Schema coverage is 100% for the single parameter, so the baseline would be 3. The description adds real meaning: the extension selects the format, enumerates valid extensions, and notes the one case where the path may point at an existing file rather than a new one.

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

Purpose5/5

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

States a specific verb and resource ('Creates a new Office file with an empty VBA project') plus the exact extensions supported, and clearly separates itself from xlide_write_module, which handles the first module. An agent can distinguish this from xlide_list_projects/xlide_project_info without opening a schema.

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

Usage Guidelines5/5

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

Explicitly covers when to use it (new file creation, or an existing .docm/.accdb with no project), what it will not do (never overwrites a file or replaces an existing project), and names the alternative tool (xlide_write_module) for the case of a macro-capable file saved before its first macro.

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

xlide_delete_moduleDelete moduleA
Destructive

Permanently deletes a VBA module from an Office file and saves it. There is no undo: ask the user first, and read the module before deleting it so its code can be put back if they change their mind. Document modules cannot be deleted. For Excel, the write is refused if the server cannot check whether a shape still calls the module.

ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathYesAbsolute path to the Office file.
module_nameYesModule to delete.
allow_protectedNoPermit saving a password-protected VBA project. Set true only after the user agrees.
expected_content_tokenNoThe content_token from your read, so a module that changed since is not deleted on the strength of a stale look at it.
allow_invalidate_signatureNoPermit saving a change that removes the VBA project's digital signature, where applicable. Set true only after the user agrees.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

Goes well beyond the destructiveHint=true annotation by disclosing there is no undo, that the file is saved on success, the document-module restriction, and the Excel refusal when a shape-call check cannot be performed. These are exactly the behavioral traits an agent needs before a destructive write.

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

Conciseness5/5

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

Four sentences, each carrying distinct safety or precondition information, with the destructive nature front-loaded. No filler or repetition of the title.

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

Completeness5/5

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

For a destructive, 5-parameter tool with an output schema already covering returns, the description supplies the safety posture, the alternative (read first), the exclusions, and the failure condition. Nothing material is missing.

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

Parameters3/5

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

Schema coverage is 100%, so the schema already documents all five parameters, including the rationale for allow_protected, allow_invalidate_signature, and expected_content_token. The description only indirectly reinforces the content-token idea ('stale look') and does not add syntax or format detail, so the baseline 3 applies.

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

Purpose5/5

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

States a specific verb and resource ('Permanently deletes a VBA module from an Office file and saves it'), plus the permanence qualifier. An agent can instantly distinguish it from xlide_write_module, xlide_edit_module, and xlide_rename_module.

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

Usage Guidelines5/5

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

Explicit when-to-use and prerequisites: ask the user first, read the module before deleting so it can be restored, and note that document modules cannot be deleted. It effectively routes the agent to xlide_read_module before this call.

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

xlide_doctorWhat this machine can doA
Read-onlyIdempotent

Reports what this server can reach: its workspace roots, whether it is read-only, which optional layers are installed, and, on Windows, which Office applications are available to run macros and tests. Call it when a tool reports something missing, or before promising the user a test run.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description reinforces this by saying the tool 'Reports' rather than mutates, and notes it can be safely called before a test run. It adds useful context about what the report contains without contradicting any annotation.

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

Conciseness5/5

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

Two sentences with no filler. The first sentence front-loads the list of reported items, and the second gives concrete trigger conditions. Every clause contributes to deciding when and why to invoke this tool.

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

Completeness5/5

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

With zero parameters and an output schema present, the description fully covers what the tool reports and when to call it. An agent has enough information to invoke it appropriately and interpret the result using the output schema.

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

Parameters4/5

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

The tool has zero parameters, so there is no parameter documentation burden on the description. The baseline of 4 applies because the description correctly assumes no inputs are needed.

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

Purpose5/5

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

The description uses the specific verb 'Reports' and enumerates concrete resources: workspace roots, read-only status, optional layers, and Windows Office applications. This clearly separates it from sibling operation tools like xlide_run_macro or xlide_analyze, which perform actions rather than report capabilities.

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

Usage Guidelines4/5

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

The description gives explicit trigger conditions: 'Call it when a tool reports something missing, or before promising the user a test run.' It does not specify exclusions or alternatives, but no sibling tool appears to fill this diagnostic role, so the context is clear enough.

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

xlide_edit_formEdit form designA
DestructiveIdempotent

Changes one form's design and saves the file: add a control, remove one, or set a property on one. Geometry is in points for a UserForm and twips for an Access design. Setting a property to null clears it, putting the control back at its default. Removing a container takes its children with it, so ask the user first. Adding a control does not write its event procedure; do that with xlide_write_module on the form's code module.

ParametersJSON Schema
NameRequiredDescriptionDefault
topNoFor add_control.
leftNoFor add_control.
widthNo0 uses the type's default.
actionYes'add_control', 'remove_control' or 'set_property'.
heightNo0 uses the type's default.
captionNoFor add_control on an Access design: the control's caption.
sectionNoFor add_control on an Access design: the band to put it in, such as Detail, PageHeaderSection or PageFooterSection. xlide_list_forms names the ones a design has. Ignored for a UserForm, which has no bands.
containerNoFor add_control: the Frame or page to put it in.
file_pathYesAbsolute path to the Office file.
form_nameYesForm to change.
control_nameYesThe control to add, remove or change.
control_typeNoFor add_control: Label, TextBox, CommandButton, CheckBox, OptionButton, ComboBox, ListBox, Frame, MultiPage, Image, SpinButton and the rest.
property_nameNoFor set_property: the property to set.
property_valueNoFor set_property. null clears it to the default.
allow_protectedNoPermit saving a password-protected VBA project. Set true only after the user agrees.
allow_invalidate_signatureNoPermit saving a change that removes the VBA project's digital signature, where applicable. Set true only after the user agrees.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior5/5

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

Annotations already disclose destructive/idempotent/readOnly, so the bar is lower, yet the description still adds real behavior: units differ by host (points vs twips), null clears a property back to default, and removing a container cascades to its children. These are consequences an agent must know before calling and are not derivable from the annotations.

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

Conciseness5/5

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

Four tight sentences, front-loaded with what the tool does and the three action modes, followed by the unit rule, the destructive caveat, and the sibling handoff. Every sentence carries distinct information; no filler.

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

Completeness5/5

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

For a 16-parameter mutation tool with an output schema and full annotation coverage, the description supplies the missing behavioral contract: units, cascade deletion, default-clearing semantics, and the event-procedure gap. Nothing an agent needs to call this correctly is left unexplained.

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

Parameters4/5

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

Schema coverage is 100%, so the schema carries most parameter meaning, but the description adds semantics the schema omits: the measurement unit (points for UserForm, twips for Access) and the null-clears-to-default behavior of set_property. Modest but genuine value over the baseline.

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

Purpose4/5

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

States a specific verb and resource and enumerates the three modes of operation (add a control, remove one, set a property). That is far more than a restatement of the name. It does not, however, distinguish itself from the sibling xlide_manage_form, which appears to overlap in scope.

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

Usage Guidelines4/5

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

Gives explicit routing guidance for one case ('Adding a control does not write its event procedure; do that with xlide_write_module') and a precondition for destruction ('ask the user first'). It never explains when to reach for this tool instead of the nearby xlide_manage_form, so the sibling coverage is incomplete.

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

xlide_edit_moduleEdit module linesA
DestructiveIdempotent

Replaces, inserts or deletes several line ranges in one existing VBA module and saves once. Lines are 1-based against the original source returned by xlide_read_module, without the attribute header. Each edit has start_line, end_line inclusive, and replacement text. For insertion, set end_line to start_line - 1; an empty replacement deletes the named lines. Ranges must not overlap. expected_content_token is required and refuses a stale edit. Set preview_only to validate the edits and see the proposed diff without saving. An applied edit includes the read-back diff and new token. Analyze the file afterward.

ParametersJSON Schema
NameRequiredDescriptionDefault
editsYesLine edits against the original module body, applied together.
file_pathYesAbsolute path to the Office file.
module_nameYesExisting module to edit.
preview_onlyNoShow the proposed diff without saving.
allow_protectedNoPermit saving a password-protected VBA project. Set true only after the user agrees.
expected_content_tokenYesContent token from the last read; required.
allow_invalidate_signatureNoPermit saving a change that removes the VBA project's digital signature, where applicable. Set true only after the user agrees.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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

Goes well beyond the destructiveHint/idempotentHint annotations: it discloses the concurrency guard (expected_content_token required, refuses stale edits), the non-overlap constraint, that ranges index the original source without the attribute header, that the call saves once, and that an applied edit returns a read-back diff plus a new token. This is exactly the operational detail an agent needs before a destructive mutation.

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

Conciseness4/5

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

Front-loaded with the core action and save behavior, then the line-indexing convention, then the edit semantics, then the safety and preview mechanics. Every sentence carries information, though the density is near the upper limit and could be lightly trimmed without loss.

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

Completeness5/5

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

For a destructive, concurrency-guarded multi-edit tool with 7 parameters, the description covers indexing model, edit semantics, validation path, staleness protection, and the returned diff/token. With an output schema present it need not enumerate return fields, so nothing material is missing.

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

Parameters4/5

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

Schema coverage is already 100%, so the baseline is 3, but the description adds real semantics: the insertion convention (end_line = start_line - 1), the empty-replacement deletion rule, the 1-based origin against xlide_read_module output minus the attribute header, and the purpose of preview_only and expected_content_token. It adds meaning beyond the schema rather than restating it.

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

Purpose5/5

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

States a specific verb set (replaces, inserts, deletes) on a specific resource (an existing VBA module), with the key differentiator 'in one existing VBA module and saves once' separating it from xlide_write_module (full rewrite) and xlide_read_module (read-only). An agent can place it precisely among the module siblings without opening a schema.

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

Usage Guidelines4/5

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

Gives clear operating context: batch line-range edits within one existing module, single save, preview_only to validate first, 'Analyze the file afterward' as a follow-up step. It does not explicitly name an alternative (e.g. use write_module to replace a whole module), so it earns 4 rather than 5.

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

xlide_evaluate_formulaEvaluate a formulaA
Read-onlyIdempotent

Works out what a formula would give in a cell of a workbook, without writing it there: to check a formula before xlide_write_cells, or to ask the workbook a question, such as =SUMIFS(Sales[Amount],Sales[Region],"West"). Uses pyOfficeEditor's formula engine, 493 of Excel's functions, with the workbook's cells as they stand. A formula written for one cell answers with one value, as Excel would give it there. Changes nothing. .xlsx, .xlsm and .xlam.

ParametersJSON Schema
NameRequiredDescriptionDefault
atNoThe cell it is imagined in, which relative references count from.A1
sheetYesWorksheet the formula is evaluated on.
formulaYesThe formula, with or without its '='.
file_pathYesAbsolute path to the Excel file.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint. The description adds useful context: 'Changes nothing', 'Uses pyOfficeEditor's formula engine, 493 of Excel's functions', and 'with the workbook's cells as they stand'. It also clarifies that the result matches what Excel would give. This adds value beyond the annotations without contradicting them.

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

Conciseness5/5

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

The description is compact and well-structured. It opens with the primary purpose, includes a concrete example, and covers key details (engine, non-destructive, supported file types) without redundancy. Every sentence adds value, and it is not overly long.

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

Completeness4/5

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

Given the output schema exists (not shown but indicated), the description need not detail return values. It covers the tool's purpose, use cases, non-destructive nature, supported formats, and function count. This is sufficient for an agent to decide to invoke it, though it could mention any error handling or edge cases.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all four parameters. The description does not add significant new meaning beyond the schema, though it does hint at the 'at' parameter's role in relative references. Since the schema carries the load, a baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool's purpose: it evaluates a formula in a cell context without writing it, distinguishing it from write operations. It gives a concrete example (SUMIFS) and names the specific action ('works out what a formula would give'). It differentiates from siblings by mentioning 'without writing it there' and references xlide_write_cells.

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

Usage Guidelines5/5

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

The description explicitly states when to use the tool: 'to check a formula before xlide_write_cells, or to ask the workbook a question'. It also implies the tool is non-destructive and works on the current state of the workbook. This provides clear context for an agent to decide when to invoke it versus alternatives.

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

xlide_export_modulesExport modules to filesA
DestructiveIdempotent

Writes every VBA module in an Office file to a folder as .bas and .cls files, for source control or review. Previews by default: it reports what it would create, update and leave alone, and writes nothing until apply=true. Only when the user asks for it. Applying a plan leaves unchanged files alone. The exported files are copies: editing one changes nothing inside the Office file until xlide_import_modules runs.

ParametersJSON Schema
NameRequiredDescriptionDefault
applyNoWrite the files. False previews the plan.
file_pathYesAbsolute path to the Office file.
delete_staleNoDelete .bas and .cls files in the folder that match no module. Ask the user first.
export_folderNoFolder to write into. Empty uses a folder named after the file, beside it.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior5/5

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

Annotations already signal a destructive, idempotent write; the description adds real context beyond them: preview-by-default until apply=true, unchanged files left alone, and critically that exported files are copies that do not affect the Office file until xlide_import_modules runs. This is exactly the behavioral disclosure a mutation tool needs.

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

Conciseness4/5

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

Front-loads what it does, then preview/apply semantics, then the copy relationship. Most sentences earn their place, though 'Only when the user asks for it' is slightly redundant with the preview framing and could be tighter.

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

Completeness5/5

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

With an output schema present, return values need no explanation, and the description still covers reversibility, destructive scope, and preview behavior. An agent has everything needed to invoke it safely.

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

Parameters3/5

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

Schema description coverage is 100%, so apply and file_path are already documented. The description reinforces apply's semantics (write vs preview) but does not clarify delete_stale (which the schema itself flags as requiring user confirmation), so it adds only marginal value over the schema.

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

Purpose5/5

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

States a specific verb (writes) and resource (every VBA module) plus output format (.bas and .cls), with the motivation (source control or review). It is cleanly separable from siblings like xlide_list_modules and xlide_read_module.

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

Usage Guidelines4/5

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

Gives a clear triggering condition ('Only when the user asks for it') and a context (source control/review), and names the inverse operation xlide_import_modules. It does not explicitly state when-not-to-use or contrast against other export/review siblings, so it falls short of a full 5.

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

xlide_format_cellsFormat cellsA
DestructiveIdempotent

Changes how a range looks: bold and font, fill colour, borders, alignment, number format, and merging. Only what you pass is changed, so each cell keeps the rest of its own format and making a header row bold does not flatten the number formats under it. Colours are RRGGBB or AARRGGBB hex without a leading hash. A number format is an Excel format code such as '#,##0.00' or 'yyyy-mm-dd'; that code is also what decides whether a number is shown as a date. Merging clears values and formulas outside the top-left cell; allow_overwrite is required when that would discard content. Works on .xlsx, .xlsm and .xlam.

ParametersJSON Schema
NameRequiredDescriptionDefault
boldNoBold on or off.
mergeNo'merge' joins the range into one cell, keeping only the top-left value. 'unmerge' splits it back. Empty leaves merging alone.
sheetYesWorksheet name, matched without case.
styleNoA named cell style, applied first: one of Excel's own, such as Good, Bad, Neutral, Title, Heading 1, Total, Input, Output, Note or 20% - Accent1, or one the workbook defines. It sets only the parts the style includes.
italicNoItalic on or off.
strikeNoStrikethrough on or off.
verticalNotop, center, bottom, justify or distributed.
file_pathYesAbsolute path to the Excel file.
font_nameNoTypeface, such as 'Calibri'.
font_sizeNoPoints. 0 leaves it alone.
underlineNoSingle underline on or off.
wrap_textNoWrap text in the cell.
cell_rangeYesA1-style range, such as A1:D1, or a single cell.
fill_colorNoSolid background colour as hex. 'none' clears the fill back to no fill.
font_colorNoText colour as hex, such as 'FF0000'.
horizontalNoleft, center, right, fill, justify or general.
border_colorNoBorder colour as hex. Defaults to automatic.
border_styleNoBorder on all four sides: thin, medium, thick, double, dotted, dashed, hair, or none to remove.
number_formatNoExcel format code, such as '#,##0.00', '0%' or 'yyyy-mm-dd'.
allow_overwriteNoFor merge: allow clearing values or formulas in cells other than the top-left cell. Ask the user first.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already flag destructiveHint=true and idempotentHint=true, and the description adds the specific destructive mechanism: merging clears values and formulas outside the top-left cell and requires allow_overwrite. It also documents the non-destructive incremental behavior (each cell keeps the rest of its own format) and the supported file types.

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

Conciseness5/5

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

Front-loaded with the core scope, then one sentence each for pass-only semantics, color syntax, number-format semantics, merge destruction, and file types. Dense but every sentence carries distinct, non-redundant information.

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

Completeness5/5

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

For a 20-parameter mutation tool with full schema coverage, an output schema, and annotations covering the safety profile, the description supplies the remaining high-risk context (destructive merge, guard parameter, format-code side effects). Nothing needed 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.

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds genuine meaning beyond the schema: the hex color grammar (RRGGBB/AARRGGBB, no leading hash) and the fact that the number format code determines date display. It does not restate every parameter, which is appropriate.

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

Purpose5/5

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

The description opens with a precise verb+resource scope ('Changes how a range looks') and enumerates exactly the facets it governs — bold/font, fill, borders, alignment, number format, merging. It implicitly separates itself from value-writing siblings such as xlide_write_cells by stressing that only formatting is touched and values are untouched.

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

Usage Guidelines4/5

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

It gives clear operational context — pass-only semantics, the allow_overwrite precondition for merges, and 'Ask the user first' — but never names an alternative tool or states when to prefer it over xlide_write_cells or xlide_manage_sheet. Useful context, no explicit exclusion routing.

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

xlide_git_changesWhat changed inside the fileA
Read-onlyIdempotent

Lists what changed inside an Office file since a git revision, one entry per VBA module and Power Query, with a unified diff. git diff cannot show this: the file is binary, so a commit that changed one line and one that replaced the whole project look the same. Call this before committing, and to review what an agent or a colleague changed. Worksheet cell values are not compared. Defaults to HEAD; pass any revision git understands. Needs the file to be inside a git repository and tracked in that revision.

ParametersJSON Schema
NameRequiredDescriptionDefault
sectionNoOnly this one, named as a module or a query is named. Empty reports every one.
revisionNoAny revision git understands: HEAD, a branch, a tag, a SHA.HEAD
file_pathYesAbsolute path to the Office file.
include_diffNoInclude the unified diff. Off gives just what changed and by how much.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already indicate read-only, idempotent, and non-destructive behavior. The description adds substantial behavioral context beyond those: per-module/Power Query granularity, unified diff format, the fact that worksheet cell values are not compared, the default revision of HEAD, and the binary-file rationale. This is exactly the kind of added context the rubric rewards.

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

Conciseness5/5

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

The description is six sentences, each earning its place: core action, motivation, usage timing, a key limitation, default behavior, and requirement. It is front-loaded with the primary function and contains no redundant or filler content.

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

Completeness5/5

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

For a read-only comparison tool with a full parameter schema and an output schema, the description covers all operational essentials: what is compared, what is not compared, revision semantics, and repository prerequisites. An agent has enough information to decide whether and when to call it.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description does mention the revision default and that any git revision is accepted, but this is already in the schema. It does not add significant parameter-level meaning beyond what the schema provides.

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

Purpose5/5

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

The description states a specific verb and resource: 'Lists what changed inside an Office file since a git revision, one entry per VBA module and Power Query, with a unified diff.' This is precise and differentiates it from ordinary git diff, which the description explicitly says cannot handle the binary file format. No sibling tool has a similar focus.

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

Usage Guidelines5/5

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

It provides explicit usage timing: 'Call this before committing, and to review what an agent or a colleague changed.' It also explains why git diff is not an alternative and states the prerequisite that the file must be inside a git repository and tracked, giving an agent clear conditions for invocation.

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

xlide_import_modulesImport modules from filesA
DestructiveIdempotent

Reads .bas and .cls files from a folder back into an Office file's VBA project and saves it. Previews by default: it reports which modules would change and by how much, and writes nothing until apply=true. A file whose name matches no module creates one. Document modules such as ThisWorkbook are written but never created. Applying an unchanged plan skips the save. After a change, call xlide_analyze.

ParametersJSON Schema
NameRequiredDescriptionDefault
applyNoWrite the modules. False previews the plan.
file_pathYesAbsolute path to the Office file.
source_folderYesFolder holding the .bas/.cls files.
allow_protectedNoPermit saving a password-protected VBA project. Set true only after the user agrees.
allow_invalidate_signatureNoPermit saving a change that removes the VBA project's digital signature, where applicable. Set true only after the user agrees.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior5/5

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

Goes well beyond the annotations by disclosing the dry-run-by-default contract, that unmatched file names create new modules, that document modules like ThisWorkbook are written but never created, and that an unchanged plan skips the save. These details materially affect how the agent calls the tool and are not derivable from the destructive/idempotent hints alone.

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

Conciseness5/5

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

Six short sentences, front-loaded with what the tool does and the preview default, followed by edge cases (module creation, document modules, no-op saves) and a next-step pointer. No sentence is redundant.

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

Completeness5/5

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

With an output schema present, the description does not need to explain return values, and it covers the full behavioral envelope: default preview, write gate, creation rules, and follow-up. 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.

Parameters3/5

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

Schema description coverage is 100%, so each parameter (apply, file_path, source_folder, allow_protected, allow_invalidate_signature) is already documented in the schema. The description reinforces apply semantics but adds no field-level meaning beyond it, so the baseline of 3 applies.

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

Purpose5/5

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

States a specific verb and resource ('Reads .bas and .cls files from a folder back into an Office file's VBA project and saves it'), which is clearly distinct from the sibling xlide_export_modules. An agent can identify the direction of the operation (files → VBA project) immediately.

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

Usage Guidelines4/5

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

Explains the default preview behavior and the apply=true gate, and routes the agent to xlide_analyze after a change. It does not, however, state when to prefer this over xlide_write_module or xlide_edit_module for single-module edits.

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

xlide_is_openIs the file open in OfficeA
Read-onlyIdempotent

Says whether a file is open in its Office application, in any running instance: read-only or for editing, with unsaved changes or not, and which processes hold it locked. Call it when a write reports the file is locked, before closing anything, or when the user asks. Windows only. Changes nothing.

ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathYesAbsolute path to the Office file.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, and the description reinforces these with 'Changes nothing.' It adds meaningful behavior beyond the annotations: Windows-only platform scope, coverage of any running instance, read-only vs. editing states, unsaved changes, and lock-holding processes.

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

Conciseness5/5

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

Three compact sentences, each earning its place: the primary behavior, the usage triggers, and platform/side-effect clarifications. The main claim is front-loaded and no filler is present.

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

Completeness5/5

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

For a single-parameter read-only tool with an output schema present and safety annotations covering side effects, the description covers the key contextual facts: what states are checked, what lock information is returned, when to call it, the platform limitation, and that it mutates nothing.

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

Parameters3/5

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

Schema description coverage is 100%: the single file_path parameter is already documented as an absolute path to the Office file. The description does not add parameter-level semantics, but with full schema coverage it does not need to. Baseline 3 applies.

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

Purpose5/5

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

The description names the precise verb ('Says whether') and the resource (a file's open status in its Office application), and specifies the full scope: any running instance, read-only or editing, unsaved changes, and which processes hold the lock. This clearly differentiates it from sibling tools like xlide_open_in_app and xlide_close_in_app.

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

Usage Guidelines4/5

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

It gives explicit triggers: 'when a write reports the file is locked, before closing anything, or when the user asks.' It does not name alternatives or explicitly state when not to use it, so it stops short of the 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.

xlide_list_formsList formsA
Read-onlyIdempotent

Lists the UserForms in an Office file, or the forms and reports in an Access database, with each one's control count and, for Access, the sections a control can go in. A design's code is a module of the same name, read with xlide_read_module. An unreadable report collection is a failure, not an empty list. An unreadable design's sections are marked unknown with sections_error. Use offset and next_offset to read large form lists in pages.

ParametersJSON Schema
NameRequiredDescriptionDefault
offsetNoSkip this many forms before a page.
file_pathYesAbsolute path to the Office file.
max_resultsNoReturn at most this many forms.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already establish read-only, idempotent, non-destructive behavior, and the description adds meaningful context beyond them: an unreadable report collection is treated as a failure rather than an empty list, and unreadable designs are marked unknown via sections_error. This discloses error-handling semantics that structured fields do not.

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

Conciseness4/5

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

Four sentences, front-loaded with the core purpose and return content, followed by failure semantics and pagination. Efficient and each sentence adds information, though slightly dense with the Access-specific caveats grouped mid-paragraph.

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

Completeness4/5

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

An output schema exists so return shape needn't be explained, and annotations cover the safety profile. The description still fills the important gaps: error-vs-empty distinction, sections_error signaling, and pagination guidance, making it adequate for correct invocation.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents file_path, offset, and max_results; baseline 3 applies. The description adds pagination intent (using offset and next_offset) but no syntax or format detail beyond the schema.

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

Purpose5/5

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

States a specific verb (Lists) and resource (UserForms / Access forms and reports), and specifies what is returned (control count, sections). It clearly differentiates from sibling list tools like xlide_list_sheets and xlide_list_modules by naming the form/report scope.

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

Usage Guidelines4/5

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

Points to the alternative for reading a design's code (xlide_read_module) and explains the pagination workflow with offset/next_offset. It does not explicitly say when to choose this over xlide_read_form or other form siblings, but the context is clearly implied by the file-scoped listing purpose.

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

xlide_list_modulesList modulesA
Read-onlyIdempotent

Lists the VBA modules in an Office file: name, kind (standard, class, document or userform), line count, and a content_token to pass to a guarded write. xlide_project_info returns this and more in one call; use this one when the file is already known and only the module list is wanted. Use offset and next_offset to read large projects in pages.

ParametersJSON Schema
NameRequiredDescriptionDefault
offsetNoSkip this many modules before a page.
file_pathYesAbsolute path to the Office file.
max_resultsNoReturn at most this many modules.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true and destructiveHint=false, so safety is covered; the description adds genuinely new context by noting the returned content_token is meant to be passed to a guarded write, plus that large projects must be paged. It stops short of describing limits or what the write guard actually enforces.

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

Conciseness5/5

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

Three sentences, each carrying distinct load: what is returned, when to prefer this tool over the sibling, and how to page. The returned-field list is front-loaded and the alternative routing comes before the pagination detail.

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

Completeness5/5

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

An output schema exists, so return values need not be spelled out, yet the description still names the key fields and the one non-obvious one (content_token). Routing, paging and return shape are all covered; nothing an agent needs to call this correctly is missing.

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

Parameters4/5

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

Schema coverage is 100%, so offset, max_results and file_path are already documented, which sets the baseline at 3. The description adds meaning beyond the schema by explaining the offset/next_offset pairing as a paging loop, which the schema alone does not convey.

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

Purpose5/5

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

States a specific verb and resource (lists VBA modules in an Office file) and enumerates exactly what is returned: name, kind, line count, content_token. The kind values are even spelled out (standard, class, document, userform), so the agent knows the shape without opening the schema.

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

Usage Guidelines5/5

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

Explicitly names the overlapping sibling xlide_project_info and gives the selecting condition: use that one for more data, use this one when the file is already known and only the module list is wanted. Also gives pagination guidance for large projects, so both the routing and the operational path are covered.

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

xlide_list_proceduresList proceduresA
Read-onlyIdempotent

Lists the Sub, Function and Property procedures in one module, with each one's kind, scope, line number and signature. The module's content_token can guard an xlide_edit_module call. Use it to find where to change something without reading a long module in full. Use offset and next_offset to page through a module with many procedures.

ParametersJSON Schema
NameRequiredDescriptionDefault
offsetNoProcedures to skip.
file_pathYesAbsolute path to the Office file.
max_resultsNoMost procedures to return.
module_nameYesModule name, matched without case.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already establish readOnlyHint, idempotentHint, destructiveHint=false and closed-world scope, so the safety profile is covered. The description adds real value beyond that: the content_token can guard an xlide_edit_module call and paging behavior via offset/next_offset, which an agent could not infer from annotations alone.

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

Conciseness4/5

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

Three sentences, front-loaded with what is returned and then usage, then paging. No filler, though the pagination sentence and the token-guard sentence are somewhat loosely tied to the main purpose.

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

Completeness5/5

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

An output schema exists, so return-value explanation is not required. The description covers purpose, the edit-guard token, and pagination, which is everything an agent needs to call this read-only list tool correctly.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description earns above baseline by explaining that offset and next_offset are for paging through a module with many procedures, giving operational meaning to the pagination parameters beyond the schema's terse 'Procedures to skip.'

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

Purpose5/5

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

States a specific verb and resource ('Lists the Sub, Function and Property procedures in one module') and enumerates the returned fields (kind, scope, line number, signature). It also implicitly separates itself from xlide_read_module by framing the tool as a way to avoid reading a long module in full.

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

Usage Guidelines4/5

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

Gives a clear use case ('find where to change something without reading a long module in full') and paging guidance via offset/next_offset. It stops short of explicitly naming the alternative tools (xlide_list_modules, xlide_read_module) and the conditions that would select them.

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

xlide_list_projectsList Office filesA
Read-onlyIdempotent

Finds the Office files in this server's workspace and returns their absolute paths, host application and whether their VBA can be opened. Call this first when the user has not named a file. Covers Excel (.xlsm, .xlsb, .xlam, .xls, and .xlsx for Power Query and sheets), Word (.docm, .dotm, .doc), PowerPoint (.pptm, .potm), Access (.accdb, .mdb), and Visual Basic 6 projects (.vbp, whose modules are the files its manifest names). Files whose extension is recognized but not openable are listed with the reason, so a template or add-in is not silently missing. Use offset and next_offset to read large workspaces in pages.

ParametersJSON Schema
NameRequiredDescriptionDefault
offsetNoSkip this many files before a page.
subfolderNoLimit the search to this folder. Empty searches every workspace root.
max_resultsNoReturn at most this many files.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare read-only, idempotent, non-destructive, closed-world behavior. The description adds context those annotations cannot: the exact return fields, the fact that recognized-but-unopenable files are listed with a reason so templates/add-ins are not silently dropped, and the paging contract. It omits auth/permission notes, keeping it below 5.

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

Conciseness4/5

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

Front-loaded with the core action and return shape, then the when-to-use rule, then supported formats, then edge-case behavior and pagination. The extension enumeration is long but genuinely informative for file-type expectations; nothing is filler.

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

Completeness5/5

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

An output schema exists, so return values need not be explained in prose, yet the description still clarifies the semantics of the openability field and the 'listed with reason' edge case. Together with the covered file-type matrix and paging guidance, an agent has everything needed to call it correctly.

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

Parameters3/5

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

Schema coverage is 100%, so offset, subfolder, and max_results are already documented in the schema. The description only restates pagination ('offset and next_offset') and even references a next_offset field that is not an input parameter. Baseline 3 is appropriate.

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

Purpose5/5

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

States a specific verb (finds/lists) and resource (Office files in this workspace) and specifies the return payload: absolute paths, host application, and VBA openability. It is clearly distinguishable from siblings like xlide_list_modules or xlide_list_sheets, which enumerate different resources.

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

Usage Guidelines4/5

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

Gives explicit invocation guidance: 'Call this first when the user has not named a file,' which is a real routing rule. It also explains pagination via offset/next_offset. It stops short of naming the sibling alternative an agent should use once a file *is* named, so it is not a 5.

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

xlide_list_queriesList Power QueryA
Read-onlyIdempotent

Lists the Power Query queries in an Excel workbook: name, group, description, where each loads, and its applied step names. If the M formula cannot be parsed, steps is null with steps_error rather than an empty list. Queries live outside the VBA project, so a plain .xlsx has them too. Call this when asked what a workbook does; a workbook with no macros can still be doing most of its work here. Use offset and next_offset to read large query lists in pages.

ParametersJSON Schema
NameRequiredDescriptionDefault
offsetNoSkip this many queries before a page.
file_pathYesAbsolute path to the Excel workbook.
max_resultsNoReturn at most this many queries.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive, so safety is covered. The description adds genuinely new behavioral detail: steps is null with steps_error when M formula parsing fails, that queries exist outside the VBA project, and that pagination uses offset/next_offset.

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

Conciseness4/5

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

Four sentences, front-loaded with what is listed, followed by an edge case, usage guidance, and pagination. Every sentence contributes, though it is slightly denser than strictly necessary.

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

Completeness5/5

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

Given an output schema exists, return values needn't be restated, yet the description still covers the list contents, the parse-failure edge case, and pagination behavior. An agent has everything needed to select and invoke it correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so offset, file_path, and max_results are already documented in the schema. The description only reiterates the offset/next_offset paging pattern, adding minimal meaning 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.

Purpose5/5

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

States a specific verb and resource ('Lists the Power Query queries in an Excel workbook') and enumerates the fields returned (name, group, description, load targets, step names). This clearly distinguishes it from siblings like xlide_read_query, xlide_list_sheets, and xlide_list_modules.

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

Usage Guidelines4/5

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

Gives an explicit trigger: 'Call this when asked what a workbook does' and notes that macro-free .xlsx files can still hold most of their work here. It does not name a contrasting alternative (e.g., read_query for a single query's M code), so it stops short of full when/when-not routing.

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

xlide_list_referencesList project referencesA
Read-onlyIdempotent

Lists the type libraries a VBA project references: the name code uses to qualify them, the kind, and the registry or file path the project recorded. Call it when a name will not resolve, when deciding between early and late binding, or when code works on one machine and not another: a reference names a path and a version, so a project can be broken by the machine rather than by its own code.

ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathYesAbsolute path to the Office file.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already establish read-only, idempotent, non-destructive behavior. The description adds useful context by explaining that reference paths and versions can cause a project to break on another machine, which helps the agent interpret results without overstepping the 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.

Conciseness5/5

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

Two purposeful sentences front-load the core behavior and follow with high-value usage context. No wasted words or redundant restatements of the tool name.

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

Completeness5/5

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

With one well-documented parameter, full annotations, and an output schema present, the description provides everything an agent needs: what the tool lists, why it matters, and when to call it. There are no meaningful gaps.

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

Parameters3/5

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

The input schema already documents the single file_path parameter completely at 100% coverage. The description does not add parameter-level guidance, but none is needed beyond the schema's 'Absolute path to the Office file' definition.

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

Purpose5/5

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

The description states a precise action and resource: it lists the type libraries a VBA project references. It also clarifies the content of the listing—qualification name, kind, and registry/file path—making it distinct from siblings like xlide_list_projects or xlide_project_info.

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

Usage Guidelines4/5

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

It gives concrete trigger scenarios: unresolved names, early-vs-late binding decisions, and machine-specific failures. It does not name an alternative tool or explicit when-not-to-use case, but the context is clear enough for an agent to select it appropriately.

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

xlide_list_shapesList shapes and buttonsA
Read-onlyIdempotent

Lists what sits on a worksheet's drawing layer: buttons, form controls, AutoShapes, text boxes, pictures, charts and groups, each with the cells it covers, its position in points and, where it has one, the macro a click runs. A form control also carries what it holds: a check box's state, a list's chosen item, a spinner's value and bounds, the cell it is linked to. Call it when asked how a workbook is started, or before renaming a Sub: a button's OnAction names a procedure and nothing rewrites it. ActiveX controls are listed but have no macro; their code is event procedures in the sheet's module. For a crowded sheet, use sheet with offset and next_offset to read later shapes.

ParametersJSON Schema
NameRequiredDescriptionDefault
sheetNoOne worksheet. Empty lists every sheet's shapes.
offsetNoSkip this many shapes on one sheet.
file_pathYesAbsolute path to the Excel file.
max_resultsNoReturn at most this many per sheet.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint and openWorldHint=false, so the safety profile is covered. The description still adds real behavioral context: ActiveX controls are listed but carry no macro and their code lives as event procedures in the sheet module. That is meaningful beyond the annotations, though much of the rest describes return shape already covered by the output schema.

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

Conciseness4/5

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

Front-loaded with the resource and its scope, then usage, then caveats. Every sentence carries information, but the return-value enumeration overlaps with the output schema, making it longer than strictly necessary for a tool that already publishes a return shape.

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

Completeness5/5

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

For a read tool with full annotations, a 100%-covered schema and an output schema, the description supplies the one thing that could cause a wrong call — the ActiveX/no-macro and OnAction-name-is-frozen quirks — plus the paging hint. Nothing an agent needs to invoke it correctly is missing.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description adds meaning the schema does not: an empty sheet means every sheet, and offset/max_results are framed as a paging mechanism for crowded sheets (it even mentions a next_offset token). Slight mismatch in that next_offset is named but not present in the input schema.

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

Purpose5/5

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

States a specific verb and resource ('Lists what sits on a worksheet's drawing layer') and enumerates exactly which artifacts are covered (buttons, form controls, AutoShapes, text boxes, pictures, charts, groups). An agent can immediately distinguish this from xlide_list_sheets or xlide_list_forms.

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

Usage Guidelines5/5

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

Gives concrete triggers ('when asked how a workbook is started, or before renaming a Sub') and explains why the second matters (OnAction names a procedure and nothing rewrites it). It also routes crowded-sheet reads to sheet/offset pagination, naming the alternative behavior explicitly.

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

xlide_list_sheetsList worksheetsA
Read-onlyIdempotent

Lists the worksheets in an Excel file with their used ranges, whether each is hidden, and the pivot tables on each, the chart sheets, and the workbook's named ranges. Call this before reading cells, so the range you ask for is one that holds data. On .xlsx, .xlsm and .xlam the file also supplies pivot tables, chart sheets and named ranges. For .xlsb and .xls, Windows with Excel is required; that path surveys sheet names, used ranges and visibility only. Unreadable visibility or pivot metadata is marked unknown with hidden_error or pivot_tables_error. A malformed Excel survey is refused rather than returned as a partial sheet list.

ParametersJSON Schema
NameRequiredDescriptionDefault
timeoutNoSeconds allowed if Excel has to answer.
file_pathYesAbsolute path to the Excel file.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior5/5

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

With readOnlyHint, idempotentHint, and destructiveHint=false already covering the safety profile, the description adds substantial behavior context: format support differences, the Windows/Excel requirement for .xlsb and .xls, the reduced survey on that path, and error markers such as hidden_error and pivot_tables_error. It also states that malformed surveys are refused rather than returned partially.

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

Conciseness4/5

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

The description is front-loaded with the core purpose and keeps most sentences informative. It is slightly repetitive, since the first sentence lists pivot tables, chart sheets, and named ranges and the third sentence revisits that support on .xlsx/.xlsm/.xlam, but the repetition serves format-specific clarity.

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

Completeness5/5

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

Given that an output schema exists, the description need not explain return values, and it already covers the important behavioral edges: supported formats, degraded .xlsb/.xls behavior, error markers, and refusal on malformed surveys. Nothing an agent needs to invoke the tool correctly appears to be missing.

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

Parameters3/5

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

Schema description coverage is 100%, so file_path and timeout are already documented in the schema. The description does not add syntax, format, or argument-level meaning beyond what the schema 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.

Purpose5/5

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

The description states a specific verb and resource: list worksheets in an Excel file, with an explicit inventory of what is returned (used ranges, hidden state, pivot tables, chart sheets, named ranges). It also distinguishes the tool from cell-reading siblings by telling the agent to call it before reading cells.

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

Usage Guidelines4/5

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

It gives a clear when-to-use condition: call before reading cells so the requested range is known to hold data. It also documents format-dependent behavior for .xlsx/.xlsm/.xlam versus .xlsb/.xls. It stops short of naming explicit alternatives or when-not-to-use cases, so it is strong but not exhaustive.

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

xlide_live_read_moduleRead a module from the editorA
Read-onlyIdempotent

Reads a module's text as the running editor holds it, including edits the user has not saved. This is the one read that can differ from xlide_read_module, and the difference is exactly the user's unsaved work. Use it to see what they are actually working on; use xlide_read_module for what is in the file. surface_only=true reads the modern editor's own copy instead, which exists only for a module the user has open in a tab. start_line and end_line read a slice of long live source; content_token describes the whole live module.

ParametersJSON Schema
NameRequiredDescriptionDefault
pidNoWhich session, by process id.
projectNoWhich project, when two documents are open and both hold a module of this name.
end_lineNoLast source line. 0 means the end.
start_lineNoFirst source line. 0 means the start.
module_nameYesModule name as the editor shows it.
surface_onlyNoRead the modern editor's own copy, which only exists for an open tab. Off reads the module through the editor, which always answers.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior5/5

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

Beyond the read-only/idempotent annotations, it discloses that this read includes unsaved edits, can differ from the file read, and that surface_only=true reads the editor's own copy only for an open tab. It also explains slice behavior via start_line/end_line.

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

Conciseness4/5

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

The description is front-loaded with the core purpose and sibling comparison, then adds conditional details. It is mostly efficient, though the content_token sentence is not tied to an input parameter and slightly dilutes focus.

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

Completeness4/5

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

It is complete enough for a live read tool with annotations and an output schema covering return values. The main remaining gap is that pid and project are left entirely to the schema, though their schema descriptions are already clear.

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

Parameters3/5

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

Schema coverage is 100%, so the schema already documents all six parameters. The description adds some meaning for start_line/end_line and surface_only, but much of that overlaps with schema descriptions, and its content_token mention does not map to an input parameter.

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

Purpose5/5

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

The description states a specific verb and resource: reading a module's text as the running editor holds it, including unsaved edits. It explicitly distinguishes this tool from xlide_read_module by explaining the exact difference is the user's unsaved work.

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

Usage Guidelines5/5

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

It gives explicit when-to-use guidance: use this to see what the user is actually working on, and use xlide_read_module for what is in the file. It also clarifies the surface_only condition and when that alternate read exists.

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

xlide_live_requestQuery a live sessionA
Read-onlyIdempotent

Calls one read route on a running xlide_vbide session and returns its JSON. Start with route='agent', which answers with the session's own route table and what each one is for. Allowed routes: agent, agent/examples, agent/routes, analyzer, doctor, engine, model, native, project, projects, state, stats, windows. Routes that drive the editor are deliberately not reachable here.

ParametersJSON Schema
NameRequiredDescriptionDefault
pidNoWhich session, by process id.
queryNoQuery string for the route, such as 'name=Module1' or 'type=Range'.
routeYesOne of the read routes listed above.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is covered. The description adds useful behavioral context by framing it as a single read call, returning JSON, and deliberately limiting access to read routes only, which goes beyond the structured annotations.

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

Conciseness5/5

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

Three sentences, each with a distinct job: statement of function, recommended first call, and route scope/exclusion. The route list is long but necessary because the schema lacks an enum, and no filler or redundant restatement appears.

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

Completeness5/5

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

With an output schema present and annotations covering side-effect safety, the description only needed to explain what the tool does, how to start, and which routes are valid—all provided. The only minor omission is behavior when a session isn't running, but the 'running session' qualifier and output schema make the tool callable without further documentation.

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

Parameters4/5

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

Schema descriptions cover pid, query, and route at 100%, so baseline is 3. The description adds real value for route by enumerating all allowed routes and recommending the initial route value ('agent'), which is not present as an enum in the schema.

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

Purpose5/5

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

The description opens with 'Calls one read route on a running xlide_vbide session and returns its JSON,' naming the verb, resource, and output format. It further differentiates by listing allowed read routes and explicitly excluding editor-driving routes, making the tool's scope unmistakable against sibling live-session tools.

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

Usage Guidelines4/5

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

It gives concrete usage guidance: 'Start with route="agent"' and lists allowed routes, plus states which routes are not reachable ('Routes that drive the editor are deliberately not reachable here'). It does not explicitly map to alternative sibling tools, but the exclusions and recommended starting point provide clear context for when this tool is appropriate.

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

xlide_live_sessionsLive VBE sessionsA
Read-onlyIdempotent

Lists the running xlide_vbide sessions this machine can reach: one per Office process that has opened the Visual Basic Editor with the add-in loaded. Use it to find out whether the user has a live editor before asking about what is on their screen. Windows only, and the add-in's local API has to be switched on by the user. Each session is probed before it is listed, because a discovery file outlives the process that wrote it.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already mark the tool read-only, idempotent, and non-destructive. The description goes further by disclosing that each session is probed before listing and why: 'a discovery file outlives the process that wrote it.' It also adds platform and prerequisite context that the annotations do not express.

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

Conciseness5/5

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

Three sentences, each earning its place: the main action and scope, the intended use case, then the platform/prerequisite and probing caveat. The most decision-relevant information is front-loaded in the first sentence.

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

Completeness5/5

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

For a zero-parameter tool with an output schema present, the description covers everything an agent needs: what the tool lists, how to interpret a session, when to call it, and operational caveats. There is no missing guidance that would prevent correct invocation or interpretation.

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

Parameters4/5

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

The input schema has no parameters and schema description coverage is 100%, so the baseline is 4. The description correctly emphasizes the tool's zero-parameter nature by focusing entirely on the output and invocation context rather than parameter details.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Lists the running xlide_vbide sessions this machine can reach,' and clarifies what counts as a session: one per Office process with the VBE open and add-in loaded. This distinguishes it from other xlide list tools, which target projects, modules, queries, or sheets.

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

Usage Guidelines4/5

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

The description explicitly states when to use it: 'Use it to find out whether the user has a live editor before asking about what is on their screen.' It also gives prerequisites (Windows only, add-in's local API must be switched on), but it does not name alternative tools or explicitly say when not to use it, so it stops short of a full 5.

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

xlide_live_stateLive editor stateA
Read-onlyIdempotent

What the running Visual Basic Editor is doing right now: the module and project on screen, whether the project is in break mode, whether there are unsaved edits, the procedure the caret is in, and whether the analyzer engine is answering. Use it when the user asks about what they are looking at, or before suggesting an edit to a module they may have unsaved changes in.

ParametersJSON Schema
NameRequiredDescriptionDefault
pidNoWhich session, by process id. 0 uses the only one, or refuses.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds valuable behavioral context by detailing the live-state fields it reports, especially unsaved changes and break mode, which are not evident from annotations alone. No contradiction with annotations.

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

Conciseness5/5

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

Two sentences: the first front-loads the essential state contents, the second gives clear usage guidance. Every sentence earns its place and there is no filler or repetition of schema/annotation content.

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

Completeness5/5

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

With a low-parameter count, complete schema coverage, rich annotations, and an output schema, the description supplies what remains necessary: when to use the tool and what state dimensions it covers. Nothing an agent needs to decide whether to invoke it is missing.

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

Parameters3/5

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

The sole parameter pid is fully documented in the schema with its default and behavior ('0 uses the only one, or refuses'), so schema coverage is 100%. The description does not add parameter-level meaning, but the baseline of 3 applies because the schema carries the full burden.

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

Purpose5/5

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

The description clearly defines the resource as the running Visual Basic Editor's live state and enumerates the exact contents: current module/project, break mode, unsaved edits, caret procedure, and analyzer status. This level of specificity distinguishes it from sibling tools like xlide_live_sessions, xlide_project_info, or xlide_read_module, which target different resources or scopes.

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

Usage Guidelines4/5

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

The description gives explicit use cases: when the user asks what they are looking at, or before suggesting an edit where unsaved changes may be relevant. It does not explicitly name alternatives or state when not to use this tool, but the context is clear enough that an agent can route to it correctly.

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

xlide_manage_commentNotes and commentsA
DestructiveIdempotent

Lists, writes, answers or removes the comments on a worksheet's cells. Excel has two kinds: a note, the yellow box that shows on hover, and a threaded comment, the conversation on the Review tab with replies and a resolved state. action='list' reads both and changes nothing. 'set' writes a note, replacing one already on the cell, or with kind='thread' starts a conversation; 'reply' and 'resolve' act on a thread; 'remove' takes either kind off the cell. Use a note to explain a cell to whoever reads the workbook next.

ParametersJSON Schema
NameRequiredDescriptionDefault
cellNoThe cell, such as B4. For list, empty lists the sheet.
kindNoFor set: 'note' or 'thread'.note
textNoFor set and reply: what the comment says.
sheetYesWorksheet name, matched without case.
actionNolist, set, reply, resolve or remove.list
authorNoWho wrote it, as the workbook shows the name.Agent
offsetNoFor list: comments to skip.
visibleNoFor a note: shown all the time, not only on hover.
resolvedNoFor resolve: false opens a thread again.
file_pathYesAbsolute path to the Excel file.
max_resultsNoFor list: most comments to return.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

Annotations declare destructiveHint=true and readOnlyHint=false, and the description usefully partitions behavior per action — 'list' changes nothing while 'set' replaces an existing note and 'remove' takes either kind off the cell. That per-action safety breakdown adds real context beyond the blanket annotation. It doesn't cover permissions, file-locking, or interaction with an open workbook, so not 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.

Conciseness4/5

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

Content is front-loaded: the first sentence gives the core verb/resource, and the following sentences explain the note-vs-thread distinction and the action semantics. It is on the longer side for one sentence of value, but every clause carries distinguishing information.

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

Completeness4/5

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

For an 11-parameter mutation tool with full schema coverage and an output schema, the description supplies the missing narrative: what each action does, which ones mutate, and which apply to threads only. Remaining gaps (pagination behavior, replacement/undo semantics beyond the note case) are minor.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds meaning the schema does not spell out — e.g. that 'reply' and 'resolve' only apply to threads, and that 'set' with kind='thread' starts a conversation. It stops short of explaining cell/offset/max_results semantics, which the schema already handles.

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

Purpose5/5

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

States specific verbs (lists, writes, answers, removes) against a specific resource (comments on a worksheet's cells), and explicitly disambiguates the two Excel comment kinds (note vs threaded comment). An agent can identify exactly what this tool does and how it differs from all siblings, none of which touch comments.

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

Usage Guidelines4/5

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

Maps each action value to its effect ('list' reads both and changes nothing, 'set' writes/replaces, 'reply'/'resolve' act on a thread, 'remove' clears either kind off the cell) and gives a usage rule: 'Use a note to explain a cell to whoever reads the workbook next.' It does not name when another sibling would be preferred, 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.

xlide_manage_conditional_formatConditional formattingA
DestructiveIdempotent

Lists, adds or clears conditional formatting: the rules that colour cells by what is in them. rule='cell_is' with an operator and a value paints cells that compare true; rule='expression' takes a formula written for the top-left cell of the range and applied relatively, the way Excel's 'Use a formula' box works; rule='color_scale' and 'data_bar' are the gradient and in-cell bar. The paint itself is the fill and font arguments, which is what Excel calls a differential format.

ParametersJSON Schema
NameRequiredDescriptionDefault
boldNoMake matching cells bold.
ruleNocell_is, expression, color_scale or data_bar.cell_is
sheetYesWorksheet name, matched without case.
valueNoFor cell_is: the value compared against.
actionNolist, add or clear.list
offsetNoFor list: format ranges to skip.
formulaNoFor expression: a formula for the range's top-left cell.
operatorNoFor cell_is: greaterThan, between, etc.greaterThan
file_pathYesAbsolute path to the Excel file.
cell_rangeNoFor add and clear: the range. Empty clears the whole sheet.
fill_colorNoFill to paint matching cells, as hex.
font_colorNoText colour for matching cells, as hex.
max_resultsNoFor list: most to return.
other_valueNoFor cell_is with between: the second value.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, idempotentHint=true and readOnlyHint=false, so the safety profile is covered. The description adds the semantic meaning of the 'differential format' (fill/font as the paint) and how expression formulas are applied relatively, but never states what 'clear' destroys or that clearing is irreversible, which matters for a destructive mutation tool.

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

Conciseness4/5

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

The three sentences are dense but front-loaded, leading with the action set and rule modes before the paint detail. Some phrasing (the aside about Excel's 'Use a formula' box) is explanatory padding that could be trimmed, keeping it below a 5.

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

Completeness4/5

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

For a 14-parameter tool with full schema coverage, an output schema and destructive/idempotent annotations, the description covers the rule taxonomy and paint semantics well. It leaves the action (list/add/clear) contract and the destructive scope of 'clear' to the schema and annotations, so it is complete enough but not exhaustive.

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

Parameters4/5

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

Schema coverage is 100%, setting a baseline of 3, but the description genuinely adds meaning beyond it: it explains that rule='expression' takes a formula written for the range's top-left cell and applied relatively, and that fill/font are Excel's differential format. It does not touch the non-rule params (offset, max_results, other_value), so it falls short of 5.

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

Purpose4/5

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

The opening clause gives a specific verb set and resource ('Lists, adds or clears conditional formatting') and immediately disambiguates the concept ('the rules that colour cells by what is in them'), which separates it from static formatting siblings like xlide_format_cells. It does not name any sibling explicitly, 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.

Usage Guidelines3/5

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

The description explains what each rule mode means ('cell_is' compares true, 'expression' takes a relative formula, 'color_scale'/'data_bar' are gradients/bars), which helps an agent pick a rule, but that selection is already surfaced in the schema's rule description. It gives no guidance on when to choose this tool over siblings such as xlide_format_cells, or when list vs add vs clear is appropriate.

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

xlide_manage_filterAutofiltersA
DestructiveIdempotent

Lists, sets, reapplies or clears the autofilter on a worksheet or on an Excel table, and hides the rows it filters out. Excel does not apply a filter when it opens a workbook: it shows the rows as the file marks them, so the rows are worked out here, held to what Excel keeps. action='list' reads the filters and changes nothing. 'set' filters one column and keeps what the others already filter by; call it once per column. Give criteria as VBA's Range.AutoFilter spells Criteria1 and Criteria2: '>=10', '=North', '=east', '=' for blanks, '<>' for anything; or top for the top N items (negative for the bottom), or dynamic for aboveAverage, thisMonth, Q1 and the like. 'reapply' filters again after the data changed; 'clear' removes the filter and shows every row.

ParametersJSON Schema
NameRequiredDescriptionDefault
topNoFor set: keep the top N items, or with a negative N the bottom N.
sheetYesWorksheet name, matched without case.
tableNoFilter this Excel table rather than a range.
actionNolist, set, reapply or clear.list
columnNoFor set: the column, by header text or by number from 1 in the range.
dynamicNoFor set: aboveAverage, belowAverage, today, yesterday, tomorrow, thisWeek, lastWeek, nextWeek, thisMonth, lastMonth, nextMonth, thisQuarter, lastQuarter, nextQuarter, thisYear, lastYear, nextYear, yearToDate, Q1 to Q4 or M1 to M12.
percentNotop counts percent rather than items.
criteria1NoFor set: Criteria1, such as '>=10' or '=West'.
criteria2NoFor set: Criteria2, such as '<100'.
file_pathYesAbsolute path to the Excel file.
match_allNoWith two criteria: true keeps rows meeting both, false either.
cell_rangeNoFor set on a sheet: the block with its header row, such as A1:F200. Empty keeps the range of the filter already there.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior5/5

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

Beyond the annotations (idempotentHint=true, destructiveHint=true), the description adds substantial behavioral detail: it hides filtered rows, it does not rely on Excel's in-memory filter state, 'list' is side-effect-free, 'set' preserves other filter conditions, and criteria follow VBA's Range.AutoFilter conventions. This gives an agent a realistic model of what the tool actually does and what side effects to expect.

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

Conciseness4/5

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

The description is a dense single paragraph, but every sentence contributes real information: overall purpose, Excel's opaque filter-state behavior, per-action semantics, and criteria syntax. It could be improved with bullets for the action variantsainer, but the organization roughly follows the natural flow of actions and criteria, and nothing is wasteful.

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

Completeness4/5

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

For a 12-parameter tool with an output schema and full schema descriptions, the description covers the key behavioral and selection details: which action to choose, how criteria map to VBA, and how filter state is computed. It does not explicitly walk through every edge case, such as what happens when no filter exists and 'reapply' is called, but the schema and output schema cover the remaining surface adequately.

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

Parameters4/5

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

The schema already provides 100% coverage with per-parameter descriptions (criteria1, criteria2, top, dynamic, percent, etc.). The description adds meaningful context beyond that, especially the VBA Criteria1/Criteria2 spellings, examples like '=*east*', '=' for blanks, negative top for bottom N, and the note about calling 'set' once per column. This extra guidance is useful even with a well-documented schema.

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

Purpose5/5

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

The description opens with a clear, specific verb+resource: 'Lists, sets, reapplies or clears the autofilter on a worksheet or on an Excel table'. It distinguishes the operation from filtering in general and from other worksheet/table management siblings. The four action variants are explicitly named.

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

Usage Guidelines4/5

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

The description gives concrete usage context for each action: 'list reads the filters and changes nothing', 'set filters one column and keeps what the others already filter by; call it once per column', 'reapply filters again after the data changed', and 'clear removes the filter'. It also explains that Excel does not apply filters on open, so this tool is needed to compute visibility. It does not explicitly name sibling tools as alternatives, but the action-by-action guidance is clear enough for ordinary selection.

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

xlide_manage_formCreate, rename or delete a formA
DestructiveIdempotent

Creates a UserForm, or an Access form or report, and saves the file. A form is a designer storage and a code module of the same name, and this writes both, which is why it exists rather than xlide_write_module. Renaming and deleting work on Access designs, where both halves move together; for a UserForm they are refused, because nothing here can move the designer storage and doing half of it loses the form. Add controls afterwards with xlide_edit_form, and write its event procedures with xlide_write_module.

ParametersJSON Schema
NameRequiredDescriptionDefault
widthNoFor create. Points for a UserForm, twips for Access.
actionYes'create', 'rename' or 'delete'.
designNoFor create in Access: 'form' or 'report'. Elsewhere, a form.form
heightNoFor create.
captionNoFor create: the caption it opens with.
new_nameNoFor rename: the new name.
file_pathYesAbsolute path to the Office file.
form_nameYesThe form or report to act on.
allow_protectedNoPermit saving a password-protected VBA project. Set true only after the user agrees.
allow_invalidate_signatureNoPermit saving a change that removes the VBA project's digital signature, where applicable. Set true only after the user agrees.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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

Annotations mark this destructive and non-readonly, and the description adds real context beyond them: it writes both designer storage and the code module, and explains that partial rename/delete would lose the form. It also surfaces the destructive consequence of saving and, via the schema, user-agreement gates for protected/signed projects.

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

Conciseness4/5

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

Front-loaded with purpose, then rationale, then restrictions, then next steps – a logical order with no filler. Sentences are dense and somewhat long, but each carries distinct information, so only minor tightening is possible.

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

Completeness5/5

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

With annotations covering safety, a 100%-covered schema, and an output schema for returns, the description supplies everything else needed: scope, refusal conditions, the two-halves write model, and sibling routing.

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

Parameters3/5

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

Schema description coverage is 100%, so every parameter (width, design, new_name, allow_protected, etc.) is already documented with units and conditions. The description adds behavioral context around rename/delete but no per-parameter syntax 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.

Purpose5/5

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

States specific verbs and resources ('Creates a UserForm, or an Access form or report, and saves the file') and distinguishes the three actions. It explicitly contrasts itself with sibling tools (xlide_write_module, xlide_edit_form), so an agent can tell it apart without opening schemas.

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

Usage Guidelines5/5

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

Names the exact contexts and constraints: rename/delete work only on Access designs where both halves move together, and are refused for UserForms. It routes follow-on work to xlide_edit_form (controls) and xlide_write_module (event procedures), covering when-to-use and when-not.

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

xlide_manage_nameDefined namesA
DestructiveIdempotent

Lists, adds or removes a workbook's defined names. A defined name is what lets a formula say TaxRate rather than Config!$B$7, and VBA reads them too, so removing one can break code as well as formulas. action='list' changes nothing. For a range, qualify refers_to with its sheet and use absolute addresses to avoid following the active sheet or moving with a copied formula, for example Data!$A$1:$A$50.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoFor add and remove: the defined name.
scopeNoA sheet name to scope it to that sheet. Empty means the workbook.
actionNolist, add or remove.list
offsetNoFor list: names to skip.
file_pathYesAbsolute path to the Excel file.
refers_toNoFor add: what it points at, such as Data!$A$1:$A$50.
max_resultsNoFor list: most names to return.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and idempotentHint=true, but the description adds real value: removing a name can break VBA code as well as formulas, and list is a no-op. That is exactly the kind of consequence detail annotations cannot convey.

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

Conciseness4/5

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

Three sentences, front-loaded with the action scope, then the risk caveat, then the refers_to guidance. No filler, though the middle clause about VBA is slightly dense and could be tighter.

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

Completeness4/5

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

With an output schema present, return values need no explanation, and the description covers the destructive caveat and the non-obvious refers_to construction. Complete enough for a 7-param mutation tool, though permission/auth prerequisites are unstated.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3, but the description meaningfully extends refers_to semantics beyond the schema's terse example by warning to qualify with the sheet and use absolute addresses to avoid active-sheet/copy drift. That adds meaning the schema does not.

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

Purpose5/5

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

States a specific verb set (lists/adds/removes) and resource (workbook defined names) in the first sentence, and it is clearly distinguishable from siblings like xlide_manage_reference or xlide_manage_table. An agent knows immediately what domain this touches.

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

Usage Guidelines4/5

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

Clarifies the per-action semantics ('action=list changes nothing') and gives concrete guidance for constructing refers_to when adding a range. It does not explicitly name a sibling alternative or state when this tool should NOT be used, which keeps it 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.

xlide_manage_referenceAdd or remove a project referenceA
DestructiveIdempotent

Adds or removes a type library reference in a VBA project and saves the file. Use it when xlide_analyze reports missing-library-reference, or when code needs early binding, as Dim d As Scripting.Dictionary does. Name the library: Excel, Word, PowerPoint and Access work anywhere, and on Windows any library the VBA editor's References dialog lists resolves by its description (Microsoft Scripting Runtime) or by the name code writes (Scripting), taking its GUID, version and path from this machine's registry. A name that matches several libraries is refused with the candidates. Off Windows, pass guid and version. Adding the host's own library, or removing Microsoft Forms while a UserForm exists, is refused: the first is implicit and the second stops the project compiling.

ParametersJSON Schema
NameRequiredDescriptionDefault
guidNoFor add: the library's GUID, when it is not registered on this machine. library is then the name the reference is recorded under.
actionYes'add' or 'remove'.
libraryYesFor add: the library's description, the name code uses, or Excel, Word, PowerPoint or Access. For remove: the name xlide_list_references reports, or the GUID.
versionNoFor add with guid: major.minor in hexadecimal, as the registry spells it, such as 1.0 or 2.8. Empty takes the newest registered, or 1.0.
file_pathYesAbsolute path to the Office file.
allow_protectedNoPermit saving a password-protected VBA project. Set true only after the user agrees.
allow_invalidate_signatureNoPermit saving a change that removes the VBA project's digital signature, where applicable. Set true only after the user agrees.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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

Goes well beyond the annotations by disclosing that the file is saved, that names resolve against the Windows registry, that ambiguous names are refused with candidates, and that adding the host's own library or removing Microsoft Forms while a UserForm exists fails. This is rich operational context an agent cannot get from readOnly/destructive hints alone.

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

Conciseness4/5

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

Front-loaded with the core action and effect, then layers resolution and refusal rules. Dense but every sentence carries information; the long registry sentence is the only slightly heavy spot.

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

Completeness5/5

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

An output schema exists, so return-value explanation is unnecessary. The description covers the mutation, platform variance, ambiguity handling, and refusal conditions, leaving nothing an agent needs in order to call it correctly.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds real meaning: how the library string resolves (description, code name, or Excel/Word/PowerPoint/Access), where guid/version are needed, and that ambiguity is rejected. It enriches the schema rather than restating it.

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

Purpose5/5

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

States a precise verb pair (adds or removes) and resource (type library reference in a VBA project), plus the side effect of saving the file. This clearly distinguishes it from the sibling xlide_list_references, which only reads references.

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

Usage Guidelines4/5

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

Gives an explicit trigger ('Use it when xlide_analyze reports missing-library-reference, or when code needs early binding') and platform guidance ('Off Windows, pass guid and version'). It does not say when to avoid this tool in favor of another sibling, so it falls short of a full when/when-not/alternatives statement.

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

xlide_manage_rows_columnsInsert, delete or size rows and columnsA
DestructiveIdempotent

Inserts, deletes, resizes, hides, shows, groups or ungroups whole rows or columns. Inserting and deleting move every reference in the workbook with them: a formula pointing below an inserted row follows it, and one pointing into deleted cells becomes #REF!, exactly as Excel does it. Deleting has no undo, so ask the user first. Widths are in characters and heights in points, which is what Excel's own dialogs use. Works on .xlsx, .xlsm and .xlam.

ParametersJSON Schema
NameRequiredDescriptionDefault
sizeNoFor resize: column width in characters, or row height in points. -1 restores the sheet default.
countNoHow many, counting from first.
firstYesFirst row or column, 1-based. Column A is 1.
sheetYesWorksheet name, matched without case.
whichYes'rows' or 'columns'.
actionYesinsert, delete, resize, hide, show, group or ungroup.
collapsedNoFor group: start the new group collapsed.
file_pathYesAbsolute path to the Excel file.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior5/5

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

Even though annotations already mark destructiveHint and readOnlyHint, the description adds essential behavior beyond them: formulas follow inserted rows, references into deleted cells become #REF!, deletion has no undo, and units are Excel-native. This is exactly the kind of contextual disclosure an agent needs.

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

Conciseness5/5

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

Four sentences, each earning its place: the operation list, formula/reference consequences, undo warning, and unit/file-format context. Information is front-loaded and free of filler.

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

Completeness5/5

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

With an output schema, annotations, full parameter schema, and detailed behavioral notes, nothing essential is missing. The description covers safety (no undo), units, supported file formats, and Excel-compatible semantics, making it fully actionable.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents every parameter. The description's mention of character/point units is valuable but duplicates the schema's parameter descriptions, adding no new parameter-level meaning.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Inserts, deletes, resizes, hides, shows, groups or ungroups whole rows or columns.' This fully enumerates the tool's scope and clearly differentiates it from sibling tools like manage_sheet or manage_table, which operate on different resources.

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

Usage Guidelines4/5

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

The usage context is explicit: any row/column structure manipulation belongs herecing, not implied. However, it doesn't name alternatives or state when not to use this tool, so it stops short of the highest bar.

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

xlide_manage_shapeAdd or remove a shape or buttonA
DestructiveIdempotent

Adds a Forms control, an AutoShape, a text box, a line or a picture to a worksheet, or removes one, and saves the workbook. The usual case is a button that runs a macro: kind='button', a caption in text, and the procedure in macro as Proc or Module.Proc, written first. Place it with cell, its top-left cell, or with left and top in points; width and height are points, with a size to start from when left at 0. Check boxes, option buttons, lists and drop-downs take linked_cell, and lists and drop-downs list_range. A Forms control lives in four parts that have to agree, and they are written and removed together. Removing a shape that runs a macro leaves the macro; removing a chart is not offered. Excel workbooks only; .xlsx, .xlsm and .xlam.

ParametersJSON Schema
NameRequiredDescriptionDefault
topNoFor add without cell: points from the top.
cellNoFor add: the top-left cell, such as B2.
kindNoFor add: button, checkBox, optionButton, dropDown, listBox, scrollBar, spinner, label, groupBox, shape, textBox, line or picture.button
leftNoFor add without cell: points from the left.
textNoA control's caption, a shape's text, or a picture's alt text.
macroNoThe procedure a click runs: Proc or Module.Proc.
sheetYesWorksheet name, matched without case.
widthNoPoints. 0 picks one.
actionYes'add' or 'remove'.
heightNoPoints. 0 picks one.
geometryNoFor kind='shape': the preset, such as rect, roundRect or ellipse.
file_pathYesAbsolute path to the Excel file.
image_pathNoFor kind='picture': a PNG, JPEG or GIF file.
list_rangeNoThe cells a list or drop-down offers: $H$1:$H$9.
shape_nameYesThe shape's name: new for add, as listed for remove.
linked_cellNoThe cell a control writes its value to: $D$6.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

The description discloses several behaviors beyond annotations: it saves the workbook, leaves the macro when a shape is removed, requires the four parts of a Forms control to agree, and restricts to Excel workbook types (.xlsx, .xlsm, .xlam). Annotations already mark it as destructive and readOnly=false, but the description adds concrete side-effect details that are essential for safe use. 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.

Conciseness4/5

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

The description is dense but well-organized, starting with the general action, then the typical use case, placement rules, specific kind requirements, and caveats. Every sentence adds value, though it is longer than strictly necessary. It is front-loaded with the main purpose and key constraints, making it effective despite its length.

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

Completeness5/5

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

Given the tool's complexity (16 parameters, multiple kinds, interlocking rules), the description covers the essential calling context: common patterns, placement semantics, parameter dependencies, side effects (saves workbook, leaves macro), and limitations (no chart removal, Excel-only). An output schema exists, so return values are not expected here. The description is thorough enough for an agent to invoke correctly.

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

Parameters5/5

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

Even though the schema covers 100% of parameters, the description adds crucial inter-parameter relationships: how kind='button' pairs with text and macro, how cell relates to left/top and width/height defaults, and that linked_cell/list_range apply to specific kinds. This goes well beyond the individual schema descriptions, clarifying when each parameter is relevant.

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

Purpose5/5

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

The description states a specific verb (adds/removes) with a clear resource (shapes, controls, etc.), and explicitly excludes charts ('removing a chart is not offered'), which distinguishes it from sibling xlide_add_chart. It also clarifies it saves the workbook, which is a distinct side effect. The purpose is unambiguous.

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

Usage Guidelines4/5

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

The description provides rich usage context: the common button+macro pattern, placement options (cell vs. left/top), and which kinds require linked_cell or list_range. It also gives an explicit exclusion ('removing a chart is not offered'). However, it doesn't directly name sibling tools like xlide_list_shapes or xlide_set_shape_macro as alternatives for related tasks, leaving some routing to inference.

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

xlide_manage_sheetAdd, remove or change a worksheetA
DestructiveIdempotent

Adds, removes, renames, moves, hides, shows, protects or unprotects a worksheet. Renaming rewrites the formulas and defined names that referred to the old name, so nothing breaks. Removing a sheet takes its cells, tables and everything on it, and formulas elsewhere that pointed at it become #REF!, which has no undo: ask the user first. Protecting a sheet stops editing in Excel; it is not a security boundary and the password is trivially recovered. Works on .xlsx, .xlsm, .xlam.

ParametersJSON Schema
NameRequiredDescriptionDefault
indexNoFor add and move: 0-based position. -1 means the end.
sheetNoThe sheet to act on. For add, the name to give the new one.
actionYesadd, remove, rename, move, hide, show, protect or unprotect.
new_nameNoFor rename: the new name.
passwordNoFor protect: an optional password. Excel's sheet password is obfuscation, not encryption, so do not use one the user relies on elsewhere.
file_pathYesAbsolute path to the Excel file.
very_hiddenNoFor hide: hide it so that Excel's own Unhide dialog does not list it. Only the VBA editor can bring it back.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior5/5

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

The description goes well beyond the annotations by disclosing that renaming rewrites formulas and defined names, that removal is irreversible and breaks external references with #REF!, and that sheet protection is only obfuscation with easily recovered passwords. This is exactly the behavioral context an agent needs for a destructive, state-changing tool.

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

Conciseness5/5

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

The description is well-organized: operation list first, then action-specific consequences, then supported formats. Every sentence adds meaningful information, and there is no filler or repetition of the schema's parameter names.

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

Completeness5/5

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

Given the tool's complexity — seven parameters and eight possible actions — the description covers the critical edge cases: irreversible removal, formula rewriting on rename, Excel protection caveats, and file format compatibility. The output schema exists, so return-value details are not required in the description.

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

Parameters4/5

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

The schema already documents all 7 parameters with descriptions and defaults, so the baseline is 3. The description adds value by enumerating the exact allowed values for the action parameter (add, remove, rename, move, hide, show, protect, unprotect) and by explaining the consequences that distinguish one action from another.

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

Purpose5/5

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

The description opens with a specific set of verbs and a clear resource: 'Adds, removes, renames, moves, hides, shows, protects or unprotects a worksheet.' This fully disambiguates it from sibling tools that read or edit other workbook parts, and the title reinforces the same scope.

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

Usage Guidelines3/5

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

The description makes the tool's worksheet-level scope clear and includes a strong 'ask the user first' directive for removal. However, it does not explicitly name alternatives or state when NOT to use this tool versus sibling tools like xlide_manage_rows_columns or xlide_manage_table.

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

xlide_manage_tableExcel tablesA
DestructiveIdempotent

Lists, adds or removes Excel tables, the ListObjects that Ctrl+T creates. A table names a block so formulas can say Sales[Amount] instead of an address that breaks when rows move, and it is what a Power Query load writes into. action='list' reads them and changes nothing. Adding one takes the column names from the header row of the range you give. Removing one leaves the cells and takes the table, so structured references to it break.

ParametersJSON Schema
NameRequiredDescriptionDefault
sheetNoWorksheet. Empty lists every sheet's tables.
actionNolist, add or remove.list
offsetNoFor list: tables to skip.
file_pathYesAbsolute path to the Excel file.
cell_rangeNoFor add: the range including its header row, such as A1:D20.
table_nameNoFor add and remove: the table's name.
totals_rowNoFor add: give the table a totals row.
max_resultsNoFor list: most tables to return.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

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

Annotations declare destructiveHint=true and readOnlyHint=false, and the description earns its keep by explaining the actual damage: 'Removing one leaves the cells and takes the table, so structured references to it break.' That is materially useful beyond the hint, though it doesn't cover auth/file-lock or errors.

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

Conciseness4/5

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

Front-loaded with the action set, then uses the remaining space for genuinely informative context on tables and the destructive remove behavior. The middle sentence about Power Query is slightly tangential but still short and relevant.

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

Completeness4/5

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

An output schema exists and annotations cover the safety profile, so the description does not need to explain returns. It fills the remaining gaps well: the semantic meaning of a table, per-action effects, and the consequence of removal. Minor absence of pagination context given max_results/offset params.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents every parameter including the 'For list/add/remove' prefixes. The description reinforces that add derives column names from the header row of cell_range, but adds no syntax or format detail beyond the schema's own 'A1:D20' example, so the baseline 3 applies.

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

Purpose5/5

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

Opens with a specific verb set and resource ('Lists, adds or removes Excel tables, the ListObjects'), and immediately grounds it in a concrete concept (Ctrl+T blocks, structured references). It is unmistakably distinct from siblings like xlide_manage_reference or xlide_manage_name.

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

Usage Guidelines4/5

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

Explains what each action does and its side effects: 'action=list reads them and changes nothing', add takes column names from the header row, remove leaves the cells. There is clear contextual guidance, though it never names an alternative tool or states explicit when-not-to-use conditions.

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

xlide_manage_validationData validationA
DestructiveIdempotent

Lists, adds or clears data validation: what a cell will accept, and the dropdown it shows. kind='list' with formula1 as a comma-separated set of values gives a dropdown; kind='list' with a range reference gives one driven by cells. The other kinds take an operator and one or two formulas, which may be literals or references. Validation stops typing in Excel, not writing through this server, and Excel does not re-check cells that already held a value.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindNowhole, decimal, list, date, time, textLength or custom.list
sheetYesWorksheet name, matched without case.
actionNolist, add or clear.list
offsetNoFor list: validations to skip.
formula1NoThe allowed values. For kind='list', either 'Red,Green,Blue' or a range like $H$1:$H$9. For the others, the bound, such as 0.
formula2NoThe second bound, for between and notBetween.
operatorNobetween, greaterThan, lessThan and so on.between
file_pathYesAbsolute path to the Excel file.
cell_rangeNoFor add and clear: the range. Empty clears the whole sheet.
allow_blankNoLet the cell be left empty.
max_resultsNoFor list: most to return.
error_messageNoWhat Excel says when the entry is refused.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already flag destructiveHint=true and idempotentHint=true, but the description adds genuinely non-obvious behavior: validation gates typing in Excel and does not apply to writes made through this server, and pre-existing cell values are not re-validated. It does not address permissions, but this is meaningful value beyond the annotations.

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

Conciseness4/5

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

Three dense sentences, no filler, and the critical behavioral caveat is placed last but still earns its space. Slightly heavy on formula semantics for a description, but nothing is wasted.

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

Completeness4/5

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

For a 12-parameter mutation tool with an output schema, the description covers the semantically tricky parts (kind/formula combination and the Excel-side enforcement limit) while the schema and output schema carry the rest. Nothing an agent needs to invoke it correctly appears missing.

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

Parameters4/5

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

With 100% schema description coverage the baseline is 3, and the description earns above it by explaining the two distinct formula1 modes for kind='list' (comma-separated literal set vs. range reference) and the operator/one-or-two-formula pattern for other kinds. It leaves offset, max_results, allow_blank, and error_message to the schema.

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

Purpose5/5

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

Front-loads a precise verb triad (lists/adds/clears) with a specific resource (data validation), then immediately clarifies scope with 'what a cell will accept, and the dropdown it shows.' This is distinguishable from siblings like xlide_manage_conditional_format or xlide_check_cells without opening a schema.

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

Usage Guidelines3/5

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

The description explains the semantics of the kind parameter (how list vs. operator-based kinds behave) but never states when this tool is the right choice over adjacent tools like conditional formatting or cell checking, nor any prerequisites. Usage is implied by the parameter walkthrough rather than asserted.

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

xlide_open_in_appOpen in OfficeA

Opens a file in its Office application on the user's screen, for them to see or work in: after a change they should look at, or to put back a copy xlide_close_in_app closed. Already open, it is brought forward instead. read_only opens a copy that cannot be saved over the file, and new_instance a separate Excel or Word the user's other files are not in. bring_to_front=false reopens it behind whatever the user is doing. Macros follow the user's Trust Center settings, as for a file they open themselves. Windows only.

ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathYesAbsolute path to the Office file.
read_onlyNoOpen a copy that cannot be saved over it.
new_instanceNoOpen it in a new instance of the application rather than the one running. PowerPoint has only one; Access always gets its own.
bring_to_frontNoBring its window forward. False leaves it behind.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.9/5.0
Behavior5/5

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

Annotations are all negative hints (false), giving no behavioral information. The description carries the full burden and does so thoroughly: it details the effect of read_only (a copy that cannot be saved over), new_instance (separate Excel/Word without other files), bring_to_front=false (reopens behind), macro handling per Trust Center, and the Windows-only limitation. This is substantial value beyond the annotations.

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

Conciseness5/5

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

The description is four sentences, each carrying distinct meaning: purpose, already-open behavior, parameter effects, and macro/platform constraints. It front-loads the core purpose and keeps every sentence relevant without redundancy.

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

Completeness5/5

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

For a tool with 4 parameters, an output schema, and no positive annotations, the description covers all essential aspects: purpose, behavioral nuances, parameter effects, macro security, and platform limitation. It references the complementary sibling tool and explains edge cases. Nothing an agent needs 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.

Parameters4/5

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

Schema coverage is 100% with already descriptive parameter text. The description adds extra nuance: it explains read_only as 'a copy that cannot be saved over the file' (similar), but notably clarifies new_instance as a separate app 'the user's other files are not in', which deepens the schema's 'rather than the one running'. It also clarifies bring_to_front=false as 'reopens it behind whatever the user is doing', adding practical meaning.

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

Purpose5/5

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

The description states a clear verb-resource pair ('Opens a file in its Office application') and explains its purpose (for the user to see or work in). It explicitly connects to the sibling xlide_close_in_app by mentioning 'to put back a copy xlide_close_in_app closed', and defines scoping behaviors like 'Already open, it is brought forward instead' and 'Windows only'.

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

Usage Guidelines5/5

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

It provides explicit use cases: 'after a change they should look at, or to put back a copy xlide_close_in_app closed'. It implicitly contrasts with xlide_close_in_app and gives guidance on parameter variants (read_only, new_instance, bring_to_front=false). The 'Windows only' constraint further clarifies when not to use it.

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

xlide_page_setupHow a sheet printsA
Read-onlyIdempotent

Reads how a worksheet is set up to print: orientation, paper size, margins, the print area, the rows or columns repeated on every page, whether it is scaled to fit, and the header and footer. Call it when asked why a sheet prints the way it does, or before changing a layout somebody set up deliberately.

ParametersJSON Schema
NameRequiredDescriptionDefault
sheetYesWorksheet name, matched without case.
file_pathYesAbsolute path to the Excel file.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is established. The description confirms the read-only nature and lists the read scope, but adds no further behavioral details such as output format, failure modes, or side effects. No contradiction with annotations.

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

Conciseness5/5

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

Two purposeful sentences: the first defines the read scope with concrete examples, and the second gives usage context. There is no filler or repetition of schema details, making it appropriately efficient.

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

Completeness5/5

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

For a simple read-only tool with only two fully documented parameters and an output schema present, the description is complete. It states what is read, when to call it, and the safety profile is covered by annotations. No essential information is missing for an agent to select and invoke it correctly.

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

Parameters3/5

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

Schema description coverage is 100%: both file_path and sheet have clear descriptions in the input schema. The description does not add additional parameter meaning beyond what the schema already provides, so the baseline score of 3 applies.

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

Purpose5/5

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

The description begins with a specific verb and resource: 'Reads how a worksheet is set up to print' and then enumerates exactly which aspects are read. This clearly distinguishes it from sibling tools like xlide_read_cells or xlide_manage_sheet by narrowing the scope to print settings only.

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

Usage Guidelines4/5

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

The second sentence gives explicit trigger conditions: 'Call it when asked why a sheet prints the way it does, or before changing a layout somebody set up deliberately.' This is clear context for when to use the tool, though it does not mention when-not-to-use or name alternative tools.

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

xlide_project_infoProject summaryA
Read-onlyIdempotent

A summary of one Office file in a single call: its VBA modules with kinds and line counts, its UserForms, its Power Query queries, its worksheets with used ranges and named ranges, and whether the VBA project is password-protected or digitally signed. has_vba_project is false for a macro-enabled file saved before its first macro, which is normal: the first xlide_write_module gives it a project. Call this once per file before working on it. Each module carries a content_token for a guarded write. For .xlsb and .xls sheet details, call xlide_list_sheets on Windows with Excel. An unreadable form or query summary is reported as unknown rather than empty.

ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathYesAbsolute path to the Office file.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already establish the safe-read profile (readOnly, idempotent, non-destructive), and the description goes beyond them with non-obvious behavior: has_vba_project is false on a macro-enabled file with no macros yet and the first xlide_write_module creates the project, each module carries a content_token for a guarded write, and unreadable summaries are reported as 'unknown' rather than empty. These are genuinely useful disclosure that the annotations cannot express, though response shape itself is left to the output schema.

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

Conciseness4/5

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

Front-loaded with the scope and contents, then the call-timing rule, then caveats. Dense but every sentence carries a distinct rule; the enumeration of summary contents is long, yet it is the tool's core value proposition so it earns its space.

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

Completeness5/5

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

An output schema exists, so return values need not be explained, and the description still supplies the operational context an agent needs: when to call it, the empty-project caveat, the content_token handoff to guarded writes, the xlsb/xls fallback, and the unknown-vs-empty semantics. Nothing material is missing for a one-parameter summary tool.

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

Parameters3/5

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

Schema description coverage is 100% and the schema already documents file_path as 'Absolute path to the Office file.' The description reinforces the one-file scope ('one Office file', 'once per file') but adds no format, constraint, or edge-case detail about the parameter itself.

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

Purpose5/5

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

The description names a specific resource (one Office file) and enumerates exactly what the summary contains: VBA modules with kinds and line counts, UserForms, Power Query queries, worksheets with used/named ranges, and protection/signature status. This is enough to distinguish it from siblings like xlide_list_modules or xlide_list_sheets, which cover only one slice of the same file.

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

Usage Guidelines5/5

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

It gives explicit timing ('Call this once per file before working on it') and an explicit alternative with its condition ('For .xlsb and .xls sheet details, call xlide_list_sheets on Windows with Excel'). The only minor gap is that it does not say when NOT to call it at all, but the routing is otherwise unambiguous.

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

xlide_read_access_queryRead Access saved queryA
Read-onlyIdempotent

Reads the SQL of one saved query in an Access database. Use it after xlide_access_catalog when a query's SQL was previewed. offset and max_chars read long SQL in character slices; next_offset points to the next slice. content_token describes the whole SQL, so compare it across pages if the database may have changed. Access files only.

ParametersJSON Schema
NameRequiredDescriptionDefault
offsetNoCharacters to skip.
file_pathYesAbsolute path to the Access database.
max_charsNoMost SQL characters to return.
query_nameYesSaved query name, matched without case.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive, closed-world, so safety is covered. The description goes further by explaining the slicing behavior (offset/max_chars), the next_offset continuation pointer, and that content_token should be compared across pages to detect database changes.

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

Conciseness4/5

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

Four compact sentences, front-loaded with purpose and usage before the pagination details. No filler, though the content_token/pagination sentences are dense and slightly crammed together.

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

Completeness4/5

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

With an output schema present, return values largely need no explanation, yet the description still covers the pagination contract (next_offset, content_token) that an agent needs to page correctly. Complete for a read tool; only the character-slice edge cases are left to the schema.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds genuine meaning beyond the schema: it clarifies that offset/max_chars read SQL in character slices and that content_token describes the whole SQL rather than a page. It also documents next_offset, which the input schema does not contain.

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

Purpose5/5

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

States a specific verb and resource ('Reads the SQL of one saved query in an Access database') and scopes it with 'Access files only', which separates it from the similarly named xlide_read_query / xlide_list_queries siblings. An agent can pick it out without opening any schema.

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

Usage Guidelines4/5

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

Explicitly says to use it 'after xlide_access_catalog when a query's SQL was previewed', naming the preceding tool and the triggering condition. It does not name an alternative to avoid or a when-not case, but the file-type constraint bounds it well.

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

xlide_read_cellsRead cellsA
Read-onlyIdempotent

Reads a range of cells from a worksheet and returns a grid of values, formulas, both, or the text each cell shows under its number format. On .xlsx, .xlsm and .xlam, values are what Excel last calculated and stored; calculate=true works formulas out in memory with pyOfficeEditor's engine and names cells it could not work out. A failed formatted or rich-text read names the cell and refuses rather than returning an empty value. On .xlsb and .xls, Windows with Excel is required and only calculated values are available, not formulas or formatted text. A partial grid from Excel is refused. At most 20,000 cells per call.

ParametersJSON Schema
NameRequiredDescriptionDefault
sheetYesWorksheet name, matched without case.
includeNo'values', 'formulas', 'both', 'text' for what each cell shows, such as 12.5% or 1/15/2024, or 'rich_text' for the font runs of text written in more than one font.values
timeoutNoSeconds allowed if Excel has to answer.
calculateNoFor .xlsx, .xlsm and .xlam, work formulas out in memory before reading. The file is not changed. Binary .xlsb and .xls reads use Excel instead.
file_pathYesAbsolute path to the Excel file.
cell_rangeYesA1-style range, such as A1:D50, or a single cell.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior5/5

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

Annotations already declare readOnly/idempotent/non-destructive, and the description layers on substantial extra context: what 'values' means on modern vs binary formats, that calculate works formulas in memory without modifying the file, that unresolved cells are named, that failed formatted/rich-text reads refuse rather than return empty, that partial Excel grids are refused, and a 20,000-cell cap.

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

Conciseness4/5

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

Front-loads the core purpose in the first clause before detailing format-specific caveats. Dense but every sentence carries real information; only the repeated emphasis on file-format behavior costs a little length.

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

Completeness5/5

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

Given an existing output schema, the description need not explain return shape, and it instead completes the picture with format support, calculation semantics, failure behavior, and a size limit. Nothing an agent needs 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.

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3 and the description largely restates schema content (include modes, calculate behavior, cell_range format). It adds only marginal semantics beyond the schema, such as naming cells whose formulas could not be worked out.

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

Purpose5/5

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

States a specific verb and resource ('Reads a range of cells from a worksheet') and enumerates the return modes (values, formulas, both, formatted text). It is unmistakably distinct from siblings like xlide_write_cells and xlide_check_cells.

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

Usage Guidelines4/5

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

Gives clear usage conditions: calculate=true only helps on .xlsx/.xlsm/.xlam, and .xlsb/.xls require Windows with Excel and yield calculated values only. It does not explicitly route the agent to alternative siblings (e.g., check_cells for validation or evaluate_formula for a single formula), 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.

xlide_read_formRead form designA
Read-onlyIdempotent

Reads one form's design: every control with its name, type, the container it sits in, and the properties the developer set. Properties left at their default are not stored and so are not listed. A property read failure appears as _read_error, not an empty property set; unreadable sections have sections_error. Use offset and next_offset to read large forms in pages. Use it to understand a form's layout, or to see which control an event procedure belongs to.

ParametersJSON Schema
NameRequiredDescriptionDefault
offsetNoSkip this many controls before a page.
file_pathYesAbsolute path to the Office file.
form_nameYesForm name, matched without case.
max_controlsNoReturn at most this many controls.
include_propertiesNoInclude each control's set properties. Off gives just the tree.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior5/5

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

Adds substantial behavioral detail beyond annotations: default properties are omitted, property read failures surface as _read_error rather than empty sets, unreadable sections expose sections_error, and large forms are paged with offset/next_offset. This meaningfully informs the agent about edge cases and 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.

Conciseness5/5

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

Front-loaded with the core purpose, then behavior and usage details follow in tight, information-dense sentences. Every sentence earns its place without redundant restatement.

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

Completeness5/5

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

Given read-only annotations and an existing output schema, the description covers what the agent needs: scope, error markers, pagination, default property omission, and practical use cases. No critical gaps remain.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds useful context for offset/next_offset pagination and clarifies why some properties may not appear, which supports interpretation of include_properties and control listings.

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

Purpose4/5

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

States a specific verb and resource: 'Reads one form's design.' The focus on a single form and its controls is clear, but the description does not explicitly name or contrast with siblings such as xlide_list_forms or xlide_edit_form.

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

Usage Guidelines4/5

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

Gives clear usage contexts: 'Use it to understand a form's layout, or to see which control an event procedure belongs to.' It also explains pagination via offset and next_offset, but offers no explicit when-not guidance or named alternatives.

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

xlide_read_moduleRead moduleA
Read-onlyIdempotent

The canonical way to read VBA. Returns a module's source as the VBA editor shows it, with the attribute header stripped, plus a content_token. Pass that token back as expected_content_token when you write, and the write is refused if anything changed the module in between. start_line and end_line read a slice of a long module; both are 1-based and inclusive. line_ranges reads several slices in one call, with each pair [first, last] using body line numbers.

ParametersJSON Schema
NameRequiredDescriptionDefault
end_lineNoLast line to return. 0 means the end.
file_pathYesAbsolute path to the Office file.
start_lineNoFirst line to return. 0 means the start.
line_rangesNoOptional list of [first, last] inclusive 1-based line ranges.
module_nameYesModule name, matched without case.
include_headerNoInclude the Attribute VB_* header. Off by default: the header is managed for you on write, and editing it by hand is how a module loses its binding to a sheet or a form.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, so safety is covered. The description adds genuinely non-schema behavior: the attribute header is stripped by default, a content_token is returned, and a write carrying a stale token is refused. It does not describe pagination or output shape, which are partly the output schema's job.

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

Conciseness4/5

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

Front-loaded with the core purpose, then usage, then token semantics, then line semantics. Four dense sentences with no filler, though the header/token/line content is packed tightly enough that it reads more like documentation than a routing blurb.

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

Completeness4/5

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

With an output schema present, return-value explanation is correctly omitted, and annotations carry the safety profile. The description covers header stripping, the concurrency token, and line-address semantics, leaving only the sibling-differentiation gap (vs xlide_live_read_module) unaddressed.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds real meaning: it clarifies that start_line/end_line are 1-based and inclusive (the schema only says '0 means the start') and that line_ranges uses body line numbers rather than raw file lines. This is more than restating the schema.

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

Purpose5/5

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

States a specific verb+resource ('read a module's source') and positions itself as 'the canonical way to read VBA,' which distinguishes it from siblings like xlide_live_read_module and xlide_read_form. An agent can identify the tool without opening the schema.

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

Usage Guidelines4/5

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

Gives clear operational context: use start_line/end_line for a slice, line_ranges for several slices, and pass the returned content_token back on a subsequent write for conflict detection. It stops short of naming when NOT to use it versus the co-existing xlide_live_read_module, so routing 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.

xlide_read_queryRead Power QueryA
Read-onlyIdempotent

Reads one query's M formula, with its description, group, load target and refresh settings. The formula is the let ... in expression as the Advanced Editor shows it. start_line and end_line read a slice of a long formula; the content_token always describes the whole query. If applied steps cannot be read, steps is null and steps_error gives the reason; the M formula remains available.

ParametersJSON Schema
NameRequiredDescriptionDefault
end_lineNoLast formula line. 0 means the end.
file_pathYesAbsolute path to the Excel workbook.
query_nameYesQuery name, matched without case.
start_lineNoFirst formula line. 0 means the start.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior5/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive), and the description still adds real behavior: slice semantics for start_line/end_line, the fact that content_token always describes the whole query, and the failure mode where steps is null with steps_error while the formula remains readable. That is exactly the extra context that annotations cannot carry.

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

Conciseness4/5

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

Four sentences, front-loaded with the tool's purpose and ending with the error behavior. Dense but every sentence carries a distinct fact; only the metadata enumeration in sentence one borders on listy.

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

Completeness5/5

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

An output schema exists, so return-value documentation is not required, yet the description still explains the steps/steps_error fallback path. For a read-only, four-parameter tool with full schema coverage, nothing an agent needs 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.

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description goes further by explaining what a line slice means in relation to the whole-query content_token — a semantic distinction the schema's '0 means the start/end' does not convey.

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

Purpose5/5

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

The description names a specific verb and resource ('Reads one query's M formula') and enumerates exactly what comes back (description, group, load target, refresh settings). It is clearly distinguishable from xlide_list_queries and xlide_write_query 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.

Usage Guidelines3/5

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

Usage is implied by 'one query' versus the sibling list tool, and the start_line/end_line note hints at the long-formula case, but the description never explicitly states when to choose this over xlide_list_queries or xlide_read_module. 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.

xlide_remove_duplicatesRemove duplicate worksheet rowsA
DestructiveIdempotent

Removes later rows with the same values in the chosen columns, keeping the first row of each set, and saves the workbook. A range inside a table acts on the table and shrinks it. An empty columns list compares every column. This deletes data and cannot be undone in the file: ask the user before calling it. Works on .xlsx, .xlsm and .xlam.

ParametersJSON Schema
NameRequiredDescriptionDefault
sheetYesWorksheet name, matched without case.
headerNoFor a plain range: keep its first row.
columnsNoColumn letters to compare; omit for all.
file_pathYesAbsolute path to the Excel file.
cell_rangeYesRange such as A1:D20.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

Goes beyond the annotations (destructiveHint, idempotentHint) by spelling out what is destroyed ('deletes data and cannot be undone in the file'), the keep-first retention rule, the table-shrinking behavior, and supported file formats (.xlsx, .xlsm, .xlam). This is exactly the extra context annotations cannot convey.

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

Conciseness5/5

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

Five short sentences, each carrying a distinct fact (behavior, table case, columns default, destruction warning, formats). The destructive warning is front-loaded before the format note, so nothing important is buried.

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

Completeness5/5

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

For a 5-param destructive mutation with an output schema already documenting returns, this covers safety, scope, defaults, and side effects. 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.

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds real semantic value: an empty 'columns' list compares every column, and a range inside a table acts on the table rather than the raw range. It doesn't elaborate on 'header' or casing, which the schema already covers.

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

Purpose5/5

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

States a specific verb and resource ('Removes later rows with the same values in the chosen columns, keeping the first row of each set') plus the side effect ('saves the workbook'). This distinguishes it clearly from siblings like xlide_sort_rows or xlide_manage_rows_columns.

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

Usage Guidelines4/5

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

Gives clear operating context: range-in-table semantics, empty columns list meaning all columns, and an explicit 'ask the user before calling it' for a destructive operation. No sibling alternatives are named, but none of the listed siblings overlap enough to require routing guidance.

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

xlide_rename_moduleRename moduleA
DestructiveIdempotent

Renames a VBA module everywhere its name is stored, and saves the file. Calls to the module's procedures elsewhere in the project are not rewritten; search for the old name first with xlide_search_modules. Document modules such as ThisWorkbook and Sheet1 cannot be renamed, because the host owns them.

ParametersJSON Schema
NameRequiredDescriptionDefault
new_nameYesNew name. A valid VBA identifier.
file_pathYesAbsolute path to the Office file.
module_nameYesModule to rename.
allow_protectedNoPermit saving a password-protected VBA project. Set true only after the user agrees.
allow_invalidate_signatureNoPermit saving a change that removes the VBA project's digital signature, where applicable. Set true only after the user agrees.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior5/5

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

Annotations declare the mutation/destructive profile, and the description adds a genuinely non-obvious behavioral trait: procedure calls elsewhere in the project are NOT rewritten, so a rename can break references. It also states that the file is saved and that host-owned document modules are immutable.

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

Conciseness5/5

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

Three sentences, each front-loaded with the operation, the reference-rewrite caveat, and the document-module restriction. No filler.

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

Completeness5/5

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

For a mutating rename with an output schema present, the description covers the surprising semantics (unrewritten call sites), the save side effect, the prerequisite search step, and the hard restriction. Nothing needed to call it safely is missing.

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

Parameters3/5

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

Schema description coverage is 100%, including the safety-gated allow_protected and allow_invalidate_signature flags, so the schema carries parameter meaning. The description adds nothing about argument syntax or constraints beyond what the schema documents — the baseline 3 for fully-covered schemas.

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

Purpose5/5

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

States a specific verb and resource ('Renames a VBA module') plus the precise scope ('everywhere its name is stored, and saves the file'), which distinguishes it from xlide_write_module, xlide_edit_module, and xlide_delete_module in the sibling list.

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

Usage Guidelines4/5

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

Gives a concrete prerequisite ('search for the old name first with xlide_search_modules') and a clear exclusion ('Document modules such as ThisWorkbook and Sheet1 cannot be renamed, because the host owns them'). It does not, however, contrast rename against edit_module/write_module, which could also change a module name.

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

xlide_rulesAnalyzer rulesA
Read-onlyIdempotent

The analyzer's rule catalogue: every diagnostic code with its title, default severity, category, whether it mirrors a VBA compile failure, and the MS-VBAL section it enforces. Use it to explain a code to the user, or to decide whether a finding is a compile error or a judgement call.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeNoOne rule code. Empty lists them all.
searchNoOnly rules whose code or title contains this.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering safety. The description adds semantic context about rule entries (e.g., VBA compile failure mirroring), but does not disclose behavioral details such as output limits, ordering, or error conditions. This matches the calibration example where such gaps cap the score at 3.

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

Conciseness5/5

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

Two sentences with no fluff. The resource is identified up front, the content is summarized in one sentence, and the usage guidance is a compact second sentence.

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

Completeness5/5

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

For a simple read-only lookup tool with zero required parameters, full schema coverage, and an output schema, the description fully covers what the tool is and when to use it. 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.

Parameters3/5

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

Schema description coverage is 100%: both `code` and `search` have textual descriptions, including default behavior ('Empty lists them all'). The description adds no parameter-level meaning beyond what the schema already provides, so baseline 3 applies.

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

Purpose5/5

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

The description opens with 'The analyzer's rule catalogue', identifying a specific resource, and enumerates the exact content of each entry (title, default severity, category, VBA compile mirror, MS-VBAL section). It also gives two concrete use cases, making it unmistakably distinct from analysis or compile-checking siblings.

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

Usage Guidelines4/5

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

The final sentence states clear scenarios: 'explain a code to the user' and 'decide whether a finding is a compile error or a judgement call.' It does not explicitly name alternative tools or when-not-to-use conditions, but the usage context is unambiguous.

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

xlide_run_macroRun a macroA
Destructive

Runs a procedure that already exists in an Office file, in an application this server starts and owns, under a deadline. Windows only, with the application installed. The document opens read-only unless read_only=false, and closes without saving unless save=true. Returns the procedure's return value, anything it logged, and, on a VBA error, the error number and message. The failing line and call stack come from instrumentation applied to injected source, so a procedure already in the document does not carry them; run the same code through xlide_run_vba when you need them. A run that exceeds its timeout reports 'timeout' and the application is terminated. Ask the user before running a macro that changes data.

ParametersJSON Schema
NameRequiredDescriptionDefault
argsNoArguments, in order. Scalars only.
saveNoSave the document after the run. Needs read_only=false.
timeoutNoSeconds before the run is terminated.
file_pathYesAbsolute path to the Office file.
procedureYesProcedure to call, as 'Proc' or 'Module.Proc'.
read_onlyNoOpen the document read-only. False lets the macro change it.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.9/5.0
Behavior5/5

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

Beyond the annotations, the description reveals key behaviors: the document opens read-only by default, closes without saving unless save=true, returns the procedure's return value and logs, reports timeout by terminating the application, and lacks call-stack info for existing procedures. This is rich, accurate context that annotations alone do not provide.

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

Conciseness5/5

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

The description is compact despite covering environment constraints, defaults, return values, error behavior, an important limitation, and a safety instruction. Every sentence adds useful information, and the core action is stated first.

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

Completeness5/5

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

Given the tool's complexity, the description covers prerequisites, default behaviors, return values, timeout semantics, error limitations, and the safe alternative. The output schema handles return-value structure, so nothing needed for correct invocation is missing.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description adds meaningful semantics for parameters such as read_only and save by explaining their interaction, and for timeout by describing what happens on expiry. This goes beyond the schema's field-level definitions.

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

Purpose5/5

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

The description states a specific verb and resource: it runs a procedure that already exists in an Office file. It also distinguishes itself from the sibling xlide_run_vba by noting that call-stack instrumentation applies to injected source, not to procedures already in the document.

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

Usage Guidelines5/5

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

The description explicitly names xlide_run_vba as the alternative when failing line and call stack are needed, giving a concrete selection condition. It also gives environment prerequisites (Windows, application installed) and instructs the agent to ask the user before running a data-changing macro.

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

xlide_run_testsRun VBA testsA

Runs the VBA tests in an Office file: every zero-argument procedure whose name starts with Test. Windows only, with the application installed. Each test is run on its own, so one that hangs is reported as a timeout and the rest still run. Returns pass or fail per test with the assertion message, failing line, call stack and any logged output. Use PyVbaAssert and PyVbaAssertEqual in the tests; the harness supplies them.

ParametersJSON Schema
NameRequiredDescriptionDefault
timeoutNoSeconds allowed for each test.
file_pathYesAbsolute path to the Office file.
module_nameNoRun only this module's tests. Empty runs every module's.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

Annotations are minimal (readOnly=false, idempotent=false, destructive=false), so the description carries the burden. It discloses key behavior: tests are run individually, hangs become timeouts without blocking others, and the result format includes assertion message, failing line, call stack, and logged output. It also mentions that the harness provides PyvbaAssert and PyvbaAssertEqual. It does not specify whether tests can have side effects, but given destructiveHint=false and the test-runner purpose, this is acceptable.

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

Conciseness5/5

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

The description is 4 sentences with zero wasted words. It front-loads the core purpose, then adds prerequisites, behavioral guarantees, and test-authoring guidance. Every sentence serves a distinct informational need and the structure makes it easy to scan.

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

Completeness5/5

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

Given the moderate complexity (3 params, output schema present), the description covers what an agent needs: what tests are run, isolation and timeout behavior, what the result contains, platform prerequisites, and the required assertion library. Even though output schema exists, the description's explanation of return values is a useful supplement and not redundant. There are no glaring gaps that would prevent correct invocation.

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

Parameters3/5

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

Schema coverage is 100%, so the schema already documents each parameter (file_path absolute path, timeout seconds per test, module_name module filter). The description adds context about isolation and return format but does not add any extra meaning to the parameters themselves. 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.

Purpose5/5

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

The description names a specific verb and resource: it opens and runs VBA tests in an Office file, with a precise inclusion criterion (zero-argument procedures whose name starts with Test). This clearly differentiates it from sibling tools like xlide_run_macro (runs a single macro) or xlide_run_vba (runs arbitrary VBA), making selection unambiguous.

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

Usage Guidelines4/5

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

It states clear prerequisites (Windows only, with the application installed) and defines the test selection rule, which tells the agent when this tool is appropriate and what it expects. It does not explicitly name alternatives or say 'use run_macro instead', but the test-specific scope and prerequisites give sufficient context to choose it over siblings.

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

xlide_run_vbaRun VBA sourceA
Destructive

Injects VBA source into a document and calls one procedure from it, under a deadline. Windows only. Use it to check what a piece of code actually does before writing it into a file, or to read something out of a document that no existing macro exposes. With no file_path it runs in a new empty document. Errors come back as data with the failing line and call stack, never as a dialog. Call PyVbaLog "text" from the code to return output; Debug.Print and MsgBox do not work under automation.

ParametersJSON Schema
NameRequiredDescriptionDefault
argsNoArguments, in order. Scalars only.
hostNo'excel', 'word', 'powerpoint' or 'access'. Ignored with file_path.excel
sourceYesVBA source to inject.
timeoutNoSeconds before the run is terminated.
file_pathNoRun against this document instead of a new empty one.
procedureNoProcedure to call. Empty calls the first one in the source.
read_onlyNoOpen the document read-only.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior5/5

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

Beyond the annotations, it discloses Windows-only behavior, no-dialog error reporting with failing line and call stack, PyVbaLog as the output channel, and that Debug.Print/MsgBox fail under automation. It also states that missing file_path creates a new empty document, and the destructiveHint annotation is consistent with executing arbitrary code.

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

Conciseness5/5

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

The description is compact and front-loaded with the core action, then gives platform, use cases, default-document behavior, error shape, and output mechanism. Every sentence contributes a distinct fact; no filler.

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

Completeness5/5

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

For a 7-parameter execution tool, the combination of schema descriptions, annotations, output schema, and this description covers what the tool does, how to get results, how errors surface, and platform constraints. Nothing essential is missing 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.

Parameters3/5

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

Schema description coverage is 100%, so the schema already explains all 7 parameters. The description adds one param-related behavior, behavior when file_path is omitted, but that is already implied by the schema description, so no substantial extra semantic value is added.

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

Purpose5/5

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

The description states the exact operation: inject VBA source into a document and call one procedure, with a platform constraint. It also distinguishes itself from persisted-module tools by framing it as a way to check code before writing it to a file and to read data no existing macro exposes.

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

Usage Guidelines4/5

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

It gives explicit when-to-use guidance: for testing code before writing it to a file and for extracting values not exposed by existing macros. It doesn't mention when not to use it or name sibling alternatives like xlide_run_macro, but the context is clear enough to route an agent.

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

xlide_search_modulesSearch VBAA
Read-onlyIdempotent

Searches every module's source in an Office file and returns each match with its module, line number and the line itself. Use it to find where a name is declared or used before changing it. content_tokens maps returned module names to tokens for guarded xlide_edit_module calls without a separate read. Use offset and next_offset to page through broad searches; total_match_count counts all matches. Plain text by default; set is_regex for a Python regular expression.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesText or pattern to find.
offsetNoSkip this many matches before a page.
is_regexNoTreat query as a regular expression.
file_pathYesAbsolute path to the Office file.
match_caseNoMatch case. Off by default, because VBA itself ignores case.
max_resultsNoReturn at most this many matches.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, and the description adds real value on top: the shape of each match, that content_tokens maps module names to tokens usable by guarded xlide_edit_module calls, that total_match_count counts all matches, and that is_regex switches to Python regex semantics. Return-value detail is partly redundant with the output schema, 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.

Conciseness5/5

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

Four sentences, each carrying distinct information (purpose, use case, token handoff, paging, regex mode), with the core behavior front-loaded and no filler.

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

Completeness5/5

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

For a read-only search tool with full schema coverage, safety annotations and an output schema, the description covers everything an agent needs: what matches look like, how to page, how to feed results into edits, and query semantics.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds workflow meaning to offset/next_offset paging and clarifies the plain-text versus is_regex query interpretation beyond the terse schema descriptions.

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

Purpose5/5

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

States a precise verb+resource+scope: it searches every module's source in an Office file and returns each match with module, line number and line. This clearly separates it from siblings like xlide_read_module or xlide_list_modules, which retrieve whole modules rather than locate matches.

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

Usage Guidelines4/5

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

Gives concrete context for use ("find where a name is declared or used before changing it") and explains paging for broad searches. It implies the read_module alternative via "without a separate read" but never names an explicit alternative or says when not to use this tool.

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

xlide_set_shape_macroPoint a shape at a macroA
DestructiveIdempotent

Changes which macro an existing shape or button runs when clicked, and saves the workbook. An empty macro clears the link. Use it after writing a Sub, so a button actually calls it, and after renaming one, because nothing rewrites an OnAction. Give the procedure as Proc or Module.Proc; it must already exist in the project, so write it first. To add a button with its macro, or to remove one, use xlide_manage_shape.

ParametersJSON Schema
NameRequiredDescriptionDefault
macroYesThe procedure to run, as Proc or Module.Proc. Empty clears the link.
sheetYesWorksheet the shape is on.
file_pathYesAbsolute path to the Excel file.
shape_nameYesShape name, as xlide_list_shapes reports it.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already mark this as destructive and non-read-only, and the description adds meaningful behavioral detail: it saves the workbook, an empty macro clears the link, and renaming a procedure does not automatically rewrite the OnAction. This goes well beyond the structured annotations.

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

Conciseness5/5

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

Four tightly packed sentences, all earning their place: core action, key edge case, usage triggers, and sibling routing. No filler or repetition of obvious schema metadata.

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

Completeness5/5

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

For a mutating tool with all four parameters required, the description covers what it does, side effects, prerequisites, valid input format, and when to choose a sibling. Nothing essential is missing for an agent to call it correctly.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description adds extra meaning by emphasizing that the procedure must already exist in the project and that it should be written first, plus explains the Proc-or-Module.Proc format in context. This is useful beyond the schema descriptions.

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

Purpose5/5

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

States a specific verb and resource: changes the macro an existing shape or button runs when clicked, and also notes that it saves the workbook. It explicitly distinguishes itself from xlide_manage_shape by saying that adding or removing a button belongs to that sibling.

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

Usage Guidelines5/5

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

Gives concrete when-to-use scenarios: after writing a Sub and after renaming a procedure. It also gives an explicit when-not-to-use rule and names the alternative tool, xlide_manage_shape, for adding or removing buttons.

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

xlide_sort_rowsSort worksheet rowsA
DestructiveIdempotent

Sorts a range, a table's data rows, or a sheet autofilter's data rows, and saves the workbook. Keys are evaluated in order; each names a column letter for a range or filter, or a header name for a table. A range can keep its first row as a header. Hidden rows keep their places. Formulas, formatting, notes and links move with their rows. This changes existing data order and has no undo in the file: ask the user before calling it. Works on .xlsx, .xlsm and .xlam.

ParametersJSON Schema
NameRequiredDescriptionDefault
keysYesOrdered sort keys; each names a column and direction.
sheetYesWorksheet name, matched without case.
headerNoFor a range: leave its first row in place.
targetNorange, table or filter.range
file_pathYesAbsolute path to the Excel file.
cell_rangeNoFor target='range': block such as A1:D20.
match_caseNoUse case-sensitive text order.
table_nameNoFor target='table': table name.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior5/5

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

Annotations declare destructiveHint=true and idempotentHint=true, but the description goes well beyond them: no undo in the file, an explicit user-confirmation requirement, hidden rows retaining their positions, and formulas/formatting/notes/links traveling with their rows. That is exactly the mutation-risk context an agent needs.

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

Conciseness4/5

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

Front-loads what gets sorted, then behavior, then the warning, then file formats. Every sentence carries information, though the four-impact sentence (formulas/formatting/notes/links) is dense and could be tightened slightly.

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

Completeness5/5

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

For a destructive, in-place mutation with an output schema already covering returns, the description supplies the missing pieces: irreversibility, user consent, preservation of row-attached content, hidden-row handling, and supported file extensions. Nothing essential is absent.

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

Parameters3/5

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

Schema description coverage is 100%, so all 8 parameters are already documented, including the column-letter vs header-name distinction and the header flag. The description reiterates keys-are-ordered and header behavior but adds little parameter syntax or semantics not already in the schema; baseline 3 applies.

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

Purpose5/5

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

States a specific verb (sorts) applied to three concrete resources (range, table data rows, autofilter data rows) and names the persistence side effect (saves the workbook). It is clearly separable from siblings like xlide_remove_duplicates or xlide_manage_filter without opening their schemas.

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

Usage Guidelines4/5

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

Gives clear selection logic via the target concept (range/table/filter) and a strong pre-call instruction: 'ask the user before calling it' because the change has no undo. It does not name an alternative tool or say when a different sibling should be preferred, so it falls 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.

xlide_update_shapeUpdate a shape or form controlA
DestructiveIdempotent

Moves, resizes, renames or changes an existing shape's text, alt text or visibility without replacing it. A Forms control can also change its linked cell or list range. Coordinates and sizes are in points; omit any field to leave it unchanged, and pass an empty text or link to clear it. ActiveX, embedded objects and groups cannot be updated. Works on .xlsx, .xlsm and .xlam.

ParametersJSON Schema
NameRequiredDescriptionDefault
topNoNew top position in points.
leftNoNew left position in points.
textNoNew caption or text; empty clears it.
sheetYesWorksheet name, matched without case.
widthNoNew width in points.
heightNoNew height in points.
hiddenNoHide or show the shape.
alt_textNoNew accessibility text; empty clears it.
new_nameNoNew name; omit to keep the current one.
file_pathYesAbsolute path to the Excel file.
list_rangeNoForms list source; empty clears it.
shape_nameYesCurrent name from xlide_list_shapes.
linked_cellNoForms control link; empty clears it.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already flag this as a non-read-only, destructive, idempotent mutation, so the safety profile is covered. The description adds genuinely new behavior: the omit-leaves-unchanged / empty-clears contract, point-based units, the exclusion of ActiveX, embedded objects and groups, and the Forms-specific capability for linked cell and list range.

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

Conciseness5/5

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

Three dense sentences, front-loaded with the verb set, then mutation semantics, then exclusions, then file-type scope. Every clause carries information an agent needs and nothing is repeated from the schema.

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

Completeness4/5

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

For a 13-parameter destructive update with an output schema and full annotation coverage, this is nearly complete: scope, units, clear semantics, and unsupported object types are all present. Only the routing relative to manage_shape/set_shape_macro and any error/name-not-found behavior are absent, which is a minor gap given the output schema exists.

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

Parameters4/5

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

With 100% schema coverage the baseline is 3, but the description supplies a cross-cutting rule that no single schema property states — omitting a field preserves it, passing empty text or link clears it — plus the point unit and the Forms-only relevance of linked_cell/list_range. It stops short of any per-field syntax or example values.

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

Purpose4/5

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

Opens with a specific set of verbs (moves, resizes, renames, changes text/alt text/visibility) against a clearly identified resource (existing shape or Forms control), and the phrase 'without replacing it' implicitly distinguishes it from a re-create operation. It does not name the adjacent siblings (xlide_manage_shape, xlide_set_shape_macro, xlide_list_shapes), so an agent must infer the boundary rather than being told it.

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

Usage Guidelines4/5

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

Gives a real when-not rule ('ActiveX, embedded objects and groups cannot be updated'), states the supported file types, and explains the omit-vs-empty convention that governs every optional field. What is missing is explicit routing — it never says when to reach for xlide_manage_shape or xlide_list_shapes instead.

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

xlide_validate_projectValidate VBA projectA
Read-onlyIdempotent

Checks a file's VBA project for structural problems: records that disagree with each other, a module the directory names but the container does not hold, and the like. This is about the container, not about the code; use xlide_analyze for the code. Worth calling before risky work on an old or repaired file. Use offset and next_offset to read later problems from a damaged file.

ParametersJSON Schema
NameRequiredDescriptionDefault
offsetNoProblems to skip.
file_pathYesAbsolute path to the Office file.
max_resultsNoMost problems to return.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), so the description's added value is scope and mechanics: it validates the container not the code, and exposes offset/next_offset paging for damaged files. It doesn't state return shape or limits, but the output schema covers that.

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

Conciseness5/5

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

Three tight sentences with zero filler; the scope statement and sibling routing are front-loaded, and the pre-flight recommendation follows. Every sentence carries information.

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

Completeness5/5

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

With an output schema present, return values need not be explained, and the description covers purpose, boundaries, sibling routing, and paging. Nothing needed to invoke this correctly is missing.

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

Parameters3/5

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

Schema description coverage is 100%, so file_path, offset, and max_results are already documented. The description only adds that offset/next_offset are for paging through problems in a damaged file, which is a marginal gain over the schema's 'Problems to skip.'

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

Purpose5/5

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

States a specific verb+resource (checks a file's VBA project for structural problems) and enumerates concrete failure classes (cross-record disagreement, directory-named module missing from container). It explicitly separates itself from xlide_analyze, which is about code rather than container.

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

Usage Guidelines5/5

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

Names the alternative (xlide_analyze) and the condition that selects it, and gives a proactive trigger ('worth calling before risky work on an old or repaired file'). Nothing about when to reach for this tool 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.

xlide_write_cellsWrite cellsA
DestructiveIdempotent

Writes a rectangular block of values and formulas into a worksheet, starting at one cell, and saves the file. Each row of data is a row of the sheet. A string starting with '=' is written as a formula, as you would type it into Excel 365 with no _xlfn prefixes; anything else is a value. A cell given as {"rich_text": [{"text": "Total ", "bold": true}, {"text": "42"}]} is text in more than one font. A value written over a formula removes that formula, which is what typing into the cell does. On .xlsx, .xlsm and .xlam, only the touched worksheet rows are rewritten; their cached formula results remain stale until Excel opens the file or xlide_read_cells calculates them in memory. Writing .xlsb cells needs Windows with Excel, which recalculates and saves the workbook. Writing .xls cells is not offered. Cells that hold data are refused until allow_overwrite=true; ask the user first.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYesRows of cell values. Numbers, strings, booleans, null for empty, strings starting with '=' for formulas, and {"rich_text": [runs]} for text in several fonts, each run a text with any of bold, italic, strike, underline, size, font, color (RRGGBB) and script.
sheetYesWorksheet name, matched without case.
timeoutNoSeconds allowed if Excel has to do the write.
file_pathYesAbsolute path to the Excel file.
start_cellYesTop-left cell of the block, such as B2.
allow_overwriteNoAllow replacing cells that already hold data or formulas. Ask the user first. Without it, the write is refused before saving.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already declare destructiveHint=true and idempotentHint=true, and the description adds substantial context beyond them: overwriting a formula removes it, only touched rows are rewritten, cached formula results stay stale until Excel opens the file or xlide_read_cells recalculates, and platform constraints for .xlsb/.xls. This is genuinely useful behavioral disclosure.

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

Conciseness4/5

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

The write semantics and overwrite guard are front-loaded, and every sentence carries information (formula handling, rich text, staleness, platform support). It is on the long side but dense rather than padded, so no sentence is wasted.

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

Completeness5/5

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

For a mutation tool with an output schema present, the description covers the safety gate (allow_overwrite), the formula/value interpretation, platform limitations, and post-write staleness behavior. Nothing an agent needs before invoking it correctly is missing.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds interpretation rules the schema only gestures at: a string starting with '=' becomes a formula with no _xlfn prefixes, and the rich_text run shape is illustrated with a concrete example. Minor extra value over the schema, not a full replacement for its documentation.

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

Purpose5/5

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

States a specific verb and resource ('Writes a rectangular block of values and formulas into a worksheet, starting at one cell, and saves the file'), with scope detail that separates it from xlide_read_cells and xlide_format_cells. An agent knows exactly what operation this is without opening the schema.

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

Usage Guidelines4/5

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

Gives concrete conditions: cells holding data are refused until allow_overwrite=true and the user must be asked first; .xlsb needs Windows with Excel; .xls writing is not offered. It does not explicitly name sibling alternatives (copy_cells, format_cells, sort_rows) for adjacent tasks, so it stops short of full routing guidance.

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

xlide_write_moduleWrite moduleA
DestructiveIdempotent

The canonical way to change VBA. Writes a module's source into the Office file and saves it. It replaces the module's whole source, so send all of it; send the body only, because the attribute header is managed for you. A module that does not exist is created: standard by default, or a class with kind='class'. Pass expected_content_token from your read and the write is refused if the module changed since. The result carries a diff of what the file now holds, read back after saving, which is what to show the user when they ask what changed. After writing, call xlide_analyze and treat any error as a build failure. Identical source is reported without saving. Ask the user first when the project is protected or signed.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindNoKind for a module being created: 'standard' or 'class'.standard
sourceYesThe module's complete VBA source.
file_pathYesAbsolute path to the Office file.
module_nameYesModule to write, or to create.
include_diffNoInclude a unified diff of what changed. Off in a loop that writes many modules and reads none of them back.
allow_protectedNoWrite to a password-protected project. Ask the user first.
expected_content_tokenNoThe content_token from your read. Leave empty only when creating a module.
allow_invalidate_signatureNoWrite to a digitally signed project, dropping the signature. Ask the user first.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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

Goes well beyond the annotations: it discloses that missing modules get created, that writes are refused on token mismatch, that identical source is a no-op, that the attribute header is managed automatically, and that protected/signed projects need user consent. These are exactly the failure/edge behaviors an agent needs and none are in the structured fields.

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

Conciseness4/5

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

Dense and front-loaded, with the critical 'replaces whole source / send body only' constraint leading. It is longer than most definitions but nearly every sentence carries a distinct operational fact; only minor tightening is possible.

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

Completeness5/5

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

An output schema exists, and the description still explains that the result carries a read-back diff and how to present it. Combined with the safety, token, and follow-up guidance, nothing an agent needs to invoke this correctly is missing.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3, but the description adds non-obvious meaning the schema lacks: kind='class' only matters on creation, expected_content_token should be left empty only when creating, and source must be the body without the attribute header. That last point is a genuine semantics addition.

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

Purpose5/5

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

States a specific verb and resource ('Writes a module's source into the Office file and saves it') and immediately distinguishes itself from sibling edit tools by declaring it replaces the whole source. The agent knows exactly what class of operation this is versus xlide_edit_module.

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

Usage Guidelines4/5

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

Gives explicit conditional guidance: send the whole body, pass expected_content_token from your read, call xlide_analyze afterward, ask the user first for protected/signed projects. It implies but never names xlide_edit_module as the partial-edit alternative, so sibling routing 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.

xlide_write_queryWrite Power QueryA
DestructiveIdempotent

Changes a workbook's Power Query and saves it. action='set' replaces a query's M formula, creating it if it does not exist; 'rename' renames it and rewrites the queries that reference it by name; 'remove' deletes it and everything that loaded it onto a sheet, which has no undo, so ask the user first. 'load' puts a query's result on a worksheet and 'unload' takes it back off. Loading needs the column names, because writing the connection means naming the columns and knowing them means running the query, which nothing here does; Excel settles them against the real result on the first refresh. A query already loaded keeps its rows until Excel refreshes it. Pass expected_content_token from xlide_read_query to refuse a change if that query changed meanwhile.

ParametersJSON Schema
NameRequiredDescriptionDefault
cellNoFor load: the table's top-left cell.A1
groupNoFor set on a new query: the folder in the Queries pane.
sheetNoFor load: the worksheet. Empty uses the first.
actionYes'set', 'rename', 'remove', 'load' or 'unload'.
columnsNoFor load: the column names the query returns, in order. Required, because the connection has to name them and nothing here runs the query to find out. Excel corrects them on the first refresh.
formulaNoFor set: the whole M expression, such as 'let Source = 1 in Source'.
new_nameNoFor rename: the new name.
file_pathYesAbsolute path to the Excel workbook.
query_nameYesThe query to change.
descriptionNoFor set: the query's description.
include_diffNoFor set: include a unified diff of the M that changed. Nothing to diff for the other actions.
expected_content_tokenNoOptional read token to guard the change.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already cover the safety profile (destructiveHint=true, idempotentHint=true), and the description layers on meaningful behavior the annotations cannot convey: that 'remove' cascades to anything loaded onto a sheet with no undo, that 'rename' rewrites name references, and that loaded queries keep stale rows until Excel refreshes. That is exactly the beyond-annotation context this dimension rewards.

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

Conciseness4/5

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

Front-loaded with the core action semantics and free of filler, but it is delivered as one dense paragraph where a short action list would have scanned faster. Every sentence carries information, so the length is justified if not optimally structured.

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

Completeness4/5

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

With 12 parameters at 100% coverage and an output schema present, the description needn't describe returns, and it correctly avoids doing so. It covers all five actions, their side effects, prerequisites, and the token guard, leaving only minor gaps such as grouping behavior for 'set'.

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

Parameters4/5

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

Schema description coverage is 100% and each parameter already carries its own 'For X' note, so the baseline is 3. The description goes further by explaining why columns is mandatory (the connection must name them, nothing here runs the query, Excel reconciles on first refresh) and how expected_content_token acts as an optimistic-concurrency guard.

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

Purpose5/5

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

The description opens with a specific verb+resource ('Changes a workbook's Power Query and saves it') and then enumerates all five actions with concrete semantics. It is immediately distinguishable from xlide_read_query, which merely reads a query, and it makes clear that the five actions are not interchangeable.

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

Usage Guidelines4/5

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

Usage context is strong per action: 'remove' deletes dependents and has no undo ('ask the user first'), 'load' needs column names, and expected_content_token is routed from xlide_read_query for conflict guarding. It stops short of naming any tool the agent should prefer for reading or editing, so routing is implied rather than fully explicit.

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

Tool Schema Changelog

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

  1. 39 tool updatesv1.2.2
    • Changedxlide_access_catalog2 fields changed
      • addedInput schema / properties / max_results
        Added value: +{
        +  "default": 300,
        +  "description": "Most items per list.",
        +  "maximum": 500,
        +  "minimum": 1,
        +  "title": "Max Results",
        +  "type": "integer"
        +}
      • addedInput schema / properties / offset
        Added value: +{
        +  "default": 0,
        +  "description": "Items to skip in each list.",
        +  "minimum": 0,
        +  "title": "Offset",
        +  "type": "integer"
        +}
    • Changedxlide_analyze2 fields changed
      • addedInput schema / properties / max_results
        Added value: +{
        +  "default": 300,
        +  "description": "Return at most this many findings.",
        +  "maximum": 300,
        +  "minimum": 1,
        +  "title": "Max Results",
        +  "type": "integer"
        +}
      • addedInput schema / properties / offset
        Added value: +{
        +  "default": 0,
        +  "description": "Skip this many matching findings.",
        +  "minimum": 0,
        +  "title": "Offset",
        +  "type": "integer"
        +}
    • Changedxlide_analyze_source2 fields changed
      • addedInput schema / properties / max_results
        Added value: +{
        +  "default": 300,
        +  "description": "Return at most this many findings.",
        +  "maximum": 300,
        +  "minimum": 1,
        +  "title": "Max Results",
        +  "type": "integer"
        +}
      • addedInput schema / properties / offset
        Added value: +{
        +  "default": 0,
        +  "description": "Skip this many findings.",
        +  "minimum": 0,
        +  "title": "Offset",
        +  "type": "integer"
        +}
    • Addedxlide_check_cells
    • Addedxlide_copy_cells
    • Changedxlide_create_project1 field changed
      • changedInput schema / properties / file_path / description
        Previous value: -"Absolute path to create, whose extension picks the format, or an existing .docm with no VBA project."New value: +"Absolute path to create, whose extension picks the format, or an existing .docm or .accdb with no VBA project."
    • Changedxlide_delete_module2 fields changed
      • changedInput schema / properties / allow_invalidate_signature / description
        Previous value: -"Ask the user first."New value: +"Permit saving a change that removes the VBA project's digital signature, where applicable. Set true only after the user agrees."
      • changedInput schema / properties / allow_protected / description
        Previous value: -"Ask the user first."New value: +"Permit saving a password-protected VBA project. Set true only after the user agrees."
    • Changedxlide_edit_form2 fields changed
      • changedInput schema / properties / allow_invalidate_signature / description
        Previous value: -"Ask the user first."New value: +"Permit saving a change that removes the VBA project's digital signature, where applicable. Set true only after the user agrees."
      • changedInput schema / properties / allow_protected / description
        Previous value: -"Ask the user first."New value: +"Permit saving a password-protected VBA project. Set true only after the user agrees."
    • Addedxlide_edit_module
    • Changedxlide_format_cells1 field changed
      • addedInput schema / properties / allow_overwrite
        Added value: +{
        +  "default": false,
        +  "description": "For merge: allow clearing values or formulas in cells other than the top-left cell. Ask the user first.",
        +  "title": "Allow Overwrite",
        +  "type": "boolean"
        +}
    • Changedxlide_import_modules2 fields changed
      • changedInput schema / properties / allow_invalidate_signature / description
        Previous value: -"Ask the user first."New value: +"Permit saving a change that removes the VBA project's digital signature, where applicable. Set true only after the user agrees."
      • changedInput schema / properties / allow_protected / description
        Previous value: -"Ask the user first."New value: +"Permit saving a password-protected VBA project. Set true only after the user agrees."
    • Changedxlide_list_forms2 fields changed
      • addedInput schema / properties / max_results
        Added value: +{
        +  "default": 300,
        +  "description": "Return at most this many forms.",
        +  "maximum": 300,
        +  "minimum": 1,
        +  "title": "Max Results",
        +  "type": "integer"
        +}
      • addedInput schema / properties / offset
        Added value: +{
        +  "default": 0,
        +  "description": "Skip this many forms before a page.",
        +  "minimum": 0,
        +  "title": "Offset",
        +  "type": "integer"
        +}
    • Changedxlide_list_modules2 fields changed
      • addedInput schema / properties / max_results
        Added value: +{
        +  "default": 300,
        +  "description": "Return at most this many modules.",
        +  "maximum": 300,
        +  "minimum": 1,
        +  "title": "Max Results",
        +  "type": "integer"
        +}
      • addedInput schema / properties / offset
        Added value: +{
        +  "default": 0,
        +  "description": "Skip this many modules before a page.",
        +  "minimum": 0,
        +  "title": "Offset",
        +  "type": "integer"
        +}
    • Changedxlide_list_procedures2 fields changed
      • addedInput schema / properties / max_results
        Added value: +{
        +  "default": 300,
        +  "description": "Most procedures to return.",
        +  "maximum": 1000,
        +  "minimum": 1,
        +  "title": "Max Results",
        +  "type": "integer"
        +}
      • addedInput schema / properties / offset
        Added value: +{
        +  "default": 0,
        +  "description": "Procedures to skip.",
        +  "minimum": 0,
        +  "title": "Offset",
        +  "type": "integer"
        +}
    • Changedxlide_list_projects2 fields changed
      • addedInput schema / properties / max_results
        Added value: +{
        +  "default": 2000,
        +  "description": "Return at most this many files.",
        +  "maximum": 2000,
        +  "minimum": 1,
        +  "title": "Max Results",
        +  "type": "integer"
        +}
      • addedInput schema / properties / offset
        Added value: +{
        +  "default": 0,
        +  "description": "Skip this many files before a page.",
        +  "minimum": 0,
        +  "title": "Offset",
        +  "type": "integer"
        +}
    • Changedxlide_list_queries2 fields changed
      • addedInput schema / properties / max_results
        Added value: +{
        +  "default": 300,
        +  "description": "Return at most this many queries.",
        +  "maximum": 300,
        +  "minimum": 1,
        +  "title": "Max Results",
        +  "type": "integer"
        +}
      • addedInput schema / properties / offset
        Added value: +{
        +  "default": 0,
        +  "description": "Skip this many queries before a page.",
        +  "minimum": 0,
        +  "title": "Offset",
        +  "type": "integer"
        +}
    • Changedxlide_list_shapes2 fields changed
      • addedInput schema / properties / max_results
        Added value: +{
        +  "default": 300,
        +  "description": "Return at most this many per sheet.",
        +  "maximum": 300,
        +  "minimum": 1,
        +  "title": "Max Results",
        +  "type": "integer"
        +}
      • addedInput schema / properties / offset
        Added value: +{
        +  "default": 0,
        +  "description": "Skip this many shapes on one sheet.",
        +  "minimum": 0,
        +  "title": "Offset",
        +  "type": "integer"
        +}
    • Changedxlide_live_read_module2 fields changed
      • addedInput schema / properties / end_line
        Added value: +{
        +  "default": 0,
        +  "description": "Last source line. 0 means the end.",
        +  "minimum": 0,
        +  "title": "End Line",
        +  "type": "integer"
        +}
      • addedInput schema / properties / start_line
        Added value: +{
        +  "default": 0,
        +  "description": "First source line. 0 means the start.",
        +  "minimum": 0,
        +  "title": "Start Line",
        +  "type": "integer"
        +}
    • Changedxlide_manage_comment2 fields changed
      • addedInput schema / properties / max_results
        Added value: +{
        +  "default": 300,
        +  "description": "For list: most comments to return.",
        +  "maximum": 300,
        +  "minimum": 1,
        +  "title": "Max Results",
        +  "type": "integer"
        +}
      • addedInput schema / properties / offset
        Added value: +{
        +  "default": 0,
        +  "description": "For list: comments to skip.",
        +  "minimum": 0,
        +  "title": "Offset",
        +  "type": "integer"
        +}
    • Changedxlide_manage_conditional_format2 fields changed
      • addedInput schema / properties / max_results
        Added value: +{
        +  "default": 300,
        +  "description": "For list: most to return.",
        +  "maximum": 300,
        +  "minimum": 1,
        +  "title": "Max Results",
        +  "type": "integer"
        +}
      • addedInput schema / properties / offset
        Added value: +{
        +  "default": 0,
        +  "description": "For list: format ranges to skip.",
        +  "minimum": 0,
        +  "title": "Offset",
        +  "type": "integer"
        +}
    • Changedxlide_manage_form2 fields changed
      • changedInput schema / properties / allow_invalidate_signature / description
        Previous value: -"Ask the user first."New value: +"Permit saving a change that removes the VBA project's digital signature, where applicable. Set true only after the user agrees."
      • changedInput schema / properties / allow_protected / description
        Previous value: -"Ask the user first."New value: +"Permit saving a password-protected VBA project. Set true only after the user agrees."
    • Changedxlide_manage_hyperlink2 fields changed
      • addedInput schema / properties / max_results
        Added value: +{
        +  "default": 300,
        +  "description": "For list: most links to return.",
        +  "maximum": 300,
        +  "minimum": 1,
        +  "title": "Max Results",
        +  "type": "integer"
        +}
      • addedInput schema / properties / offset
        Added value: +{
        +  "default": 0,
        +  "description": "For list: links to skip.",
        +  "minimum": 0,
        +  "title": "Offset",
        +  "type": "integer"
        +}
    • Changedxlide_manage_name2 fields changed
      • addedInput schema / properties / max_results
        Added value: +{
        +  "default": 300,
        +  "description": "For list: most names to return.",
        +  "maximum": 300,
        +  "minimum": 1,
        +  "title": "Max Results",
        +  "type": "integer"
        +}
      • addedInput schema / properties / offset
        Added value: +{
        +  "default": 0,
        +  "description": "For list: names to skip.",
        +  "minimum": 0,
        +  "title": "Offset",
        +  "type": "integer"
        +}
    • Changedxlide_manage_reference2 fields changed
      • changedInput schema / properties / allow_invalidate_signature / description
        Previous value: -"Ask the user first."New value: +"Permit saving a change that removes the VBA project's digital signature, where applicable. Set true only after the user agrees."
      • changedInput schema / properties / allow_protected / description
        Previous value: -"Ask the user first."New value: +"Permit saving a password-protected VBA project. Set true only after the user agrees."
    • Changedxlide_manage_table2 fields changed
      • addedInput schema / properties / max_results
        Added value: +{
        +  "default": 500,
        +  "description": "For list: most tables to return.",
        +  "maximum": 500,
        +  "minimum": 1,
        +  "title": "Max Results",
        +  "type": "integer"
        +}
      • addedInput schema / properties / offset
        Added value: +{
        +  "default": 0,
        +  "description": "For list: tables to skip.",
        +  "minimum": 0,
        +  "title": "Offset",
        +  "type": "integer"
        +}
    • Changedxlide_manage_validation2 fields changed
      • addedInput schema / properties / max_results
        Added value: +{
        +  "default": 300,
        +  "description": "For list: most to return.",
        +  "maximum": 300,
        +  "minimum": 1,
        +  "title": "Max Results",
        +  "type": "integer"
        +}
      • addedInput schema / properties / offset
        Added value: +{
        +  "default": 0,
        +  "description": "For list: validations to skip.",
        +  "minimum": 0,
        +  "title": "Offset",
        +  "type": "integer"
        +}
    • Addedxlide_read_access_query
    • Changedxlide_read_cells1 field changed
      • changedInput schema / properties / calculate / description
        Previous value: -"Work every formula out before reading, with the formula engine. The file is not changed. Use it after writing inputs, to see the results now."New value: +"For .xlsx, .xlsm and .xlam, work formulas out in memory before reading. The file is not changed. Binary .xlsb and .xls reads use Excel instead."
    • Changedxlide_read_form2 fields changed
      • addedInput schema / properties / max_controls
        Added value: +{
        +  "default": 300,
        +  "description": "Return at most this many controls.",
        +  "maximum": 300,
        +  "minimum": 1,
        +  "title": "Max Controls",
        +  "type": "integer"
        +}
      • addedInput schema / properties / offset
        Added value: +{
        +  "default": 0,
        +  "description": "Skip this many controls before a page.",
        +  "minimum": 0,
        +  "title": "Offset",
        +  "type": "integer"
        +}
    • Changedxlide_read_module1 field changed
      • addedInput schema / properties / line_ranges
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "items": {
        +          "type": "integer"
        +        },
        +        "type": "array"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Optional list of [first, last] inclusive 1-based line ranges.",
        +  "title": "Line Ranges"
        +}
    • Changedxlide_read_query2 fields changed
      • addedInput schema / properties / end_line
        Added value: +{
        +  "default": 0,
        +  "description": "Last formula line. 0 means the end.",
        +  "minimum": 0,
        +  "title": "End Line",
        +  "type": "integer"
        +}
      • addedInput schema / properties / start_line
        Added value: +{
        +  "default": 0,
        +  "description": "First formula line. 0 means the start.",
        +  "minimum": 0,
        +  "title": "Start Line",
        +  "type": "integer"
        +}
    • Addedxlide_remove_duplicates
    • Changedxlide_rename_module2 fields changed
      • changedInput schema / properties / allow_invalidate_signature / description
        Previous value: -"Ask the user first."New value: +"Permit saving a change that removes the VBA project's digital signature, where applicable. Set true only after the user agrees."
      • changedInput schema / properties / allow_protected / description
        Previous value: -"Ask the user first."New value: +"Permit saving a password-protected VBA project. Set true only after the user agrees."
    • Changedxlide_search_modules2 fields changed
      • changedInput schema / properties / max_results / description
        Previous value: -"Stop after this many matches."New value: +"Return at most this many matches."
      • addedInput schema / properties / offset
        Added value: +{
        +  "default": 0,
        +  "description": "Skip this many matches before a page.",
        +  "minimum": 0,
        +  "title": "Offset",
        +  "type": "integer"
        +}
    • Addedxlide_sort_rows
    • Addedxlide_update_shape
    • Changedxlide_validate_project2 fields changed
      • addedInput schema / properties / max_results
        Added value: +{
        +  "default": 300,
        +  "description": "Most problems to return.",
        +  "maximum": 300,
        +  "minimum": 1,
        +  "title": "Max Results",
        +  "type": "integer"
        +}
      • addedInput schema / properties / offset
        Added value: +{
        +  "default": 0,
        +  "description": "Problems to skip.",
        +  "minimum": 0,
        +  "title": "Offset",
        +  "type": "integer"
        +}
    • Changedxlide_write_cells1 field changed
      • addedInput schema / properties / allow_overwrite
        Added value: +{
        +  "default": false,
        +  "description": "Allow replacing cells that already hold data or formulas. Ask the user first. Without it, the write is refused before saving.",
        +  "title": "Allow Overwrite",
        +  "type": "boolean"
        +}
    • Changedxlide_write_query1 field changed
      • addedInput schema / properties / expected_content_token
        Added value: +{
        +  "default": "",
        +  "description": "Optional read token to guard the change.",
        +  "title": "Expected Content Token",
        +  "type": "string"
        +}
  2. 13 tool updatesv1.1.0
    • Addedxlide_add_chart
    • Addedxlide_close_in_app
    • Changedxlide_create_project1 field changed
      • changedInput schema / properties / file_path / description
        Previous value: -"Absolute path to create. The extension picks the format."New value: +"Absolute path to create, whose extension picks the format, or an existing .docm with no VBA project."
    • Addedxlide_evaluate_formula
    • Changedxlide_format_cells1 field changed
      • addedInput schema / properties / style
        Added value: +{
        +  "default": "",
        +  "description": "A named cell style, applied first: one of Excel's own, such as Good, Bad, Neutral, Title, Heading 1, Total, Input, Output, Note or 20% - Accent1, or one the workbook defines. It sets only the parts the style includes.",
        +  "title": "Style",
        +  "type": "string"
        +}
    • Addedxlide_is_open
    • Addedxlide_manage_comment
    • Addedxlide_manage_filter
    • Addedxlide_manage_reference
    • Addedxlide_manage_shape
    • Addedxlide_open_in_app
    • Changedxlide_read_cells2 fields changed
      • addedInput schema / properties / calculate
        Added value: +{
        +  "default": false,
        +  "description": "Work every formula out before reading, with the formula engine. The file is not changed. Use it after writing inputs, to see the results now.",
        +  "title": "Calculate",
        +  "type": "boolean"
        +}
      • changedInput schema / properties / include / description
        Previous value: -"'values', 'formulas' or 'both'."New value: +"'values', 'formulas', 'both', 'text' for what each cell shows, such as 12.5% or 1/15/2024, or 'rich_text' for the font runs of text written in more than one font."
    • Changedxlide_write_cells1 field changed
      • changedInput schema / properties / data / description
        Previous value: -"Rows of cell values. Numbers, strings, booleans, null for empty, and strings starting with '=' for formulas."New value: +"Rows of cell values. Numbers, strings, booleans, null for empty, strings starting with '=' for formulas, and {\"rich_text\": [runs]} for text in several fonts, each run a text with any of bold, italic, strike, underline, size, font, color (RRGGBB) and script."
  3. 49 tool updatesv0.1.0
    • First observedxlide_access_catalog
    • First observedxlide_analyze
    • First observedxlide_analyze_source
    • First observedxlide_compile_check
    • First observedxlide_create_project
    • First observedxlide_delete_module
    • First observedxlide_doctor
    • First observedxlide_edit_form
    • First observedxlide_export_modules
    • First observedxlide_format_cells
    • First observedxlide_git_changes
    • First observedxlide_import_modules
    • First observedxlide_list_forms
    • First observedxlide_list_modules
    • First observedxlide_list_procedures
    • First observedxlide_list_projects
    • First observedxlide_list_queries
    • First observedxlide_list_references
    • First observedxlide_list_shapes
    • First observedxlide_list_sheets
    • First observedxlide_live_read_module
    • First observedxlide_live_request
    • First observedxlide_live_sessions
    • First observedxlide_live_state
    • First observedxlide_manage_conditional_format
    • First observedxlide_manage_form
    • First observedxlide_manage_hyperlink
    • First observedxlide_manage_name
    • First observedxlide_manage_rows_columns
    • First observedxlide_manage_sheet
    • First observedxlide_manage_table
    • First observedxlide_manage_validation
    • First observedxlide_page_setup
    • First observedxlide_project_info
    • First observedxlide_read_cells
    • First observedxlide_read_form
    • First observedxlide_read_module
    • First observedxlide_read_query
    • First observedxlide_rename_module
    • First observedxlide_rules
    • First observedxlide_run_macro
    • First observedxlide_run_tests
    • First observedxlide_run_vba
    • First observedxlide_search_modules
    • First observedxlide_set_shape_macro
    • First observedxlide_validate_project
    • First observedxlide_write_cells
    • First observedxlide_write_module
    • First observedxlide_write_query

TDQS

A3.9/5.0

Scored across 65 tools

Disambiguation3/5

Many tools are clearly scoped, but the set contains several overlapping alternatives: project_info vs list_modules/list_sheets/list_forms, read_module vs live_read_module, write_module vs edit_module vs import_modules, analyze vs analyze_source vs compile_check, and manage_shape vs update_shape vs set_shape_macro vs add_chart. Descriptions explicitly distinguish them, but the volume and paired variants make misselection plausible.

Naming Consistency4/5

Nearly all tools use the xlide_ prefix and snake_case with a verb_noun or resource_action pattern. Deviations such as project_info, rules, doctor, live_state and live_sessions are noun-only but still readable and predictable.

Tool Count2/5

65 tools is far above the typical 3-15 range; although the domain is broad, this count suggests overexposure and likely optional-layer tools that could be grouped. Agents face a heavy selection burden even before considering overlapping variants.

Completeness4/5

The surface is broad: VBA project/module lifecycle, Excel sheets/cells/tables/queries/shapes/charts, Access catalogs, forms, running/testing, and live editor inspection are covered. Some obvious gaps remain, such as Word/PowerPoint content objects and chart deletion, but core workflows and many guardrails are present.

Maintenance

ActivityMaintained
ResponsivenessWithin a week

Related MCP Connectors

Related MCP Servers