GridCraft MCP Server
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@GridCraft MCP ServerBuild a monthly budget workbook with formulas, a chart, and export as XLSX and PDF"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Why
GridCraft is an open-source, Excel-class spreadsheet app with a headless CLI (gridcraft-cli), 339 commands, 513 worksheet functions (dynamic arrays included), XLSX as its native format and an MCP mode. This Model Context Protocol server turns that engine into file-in / file-out tools for Claude, so you can ask things like:
"Build a monthly budget workbook with formulas, a summary sheet and a chart, as XLSX and PDF." "Read
sales.xlsxand tell me the total by region and the best month." "Add a PivotTable of revenue by region and product to this workbook." "In every workbook inD:\Reports, replace '2025' with '2026' and save copies." "Convert this CSV to Excel with a formatted table, and every workbook in this folder to CSV."
Sibling of designcraft-mcp-server, effectcraft-mcp-server, lightcraft-mcp-server, photocraft-mcp-server, vectorcraft-mcp-server, filmcraft-mcp-server, pdfcraft-mcp-server, wordcraft-mcp-server, soundcraft-mcp-server, deckcraft-mcp-server and audacity-mcp-server.
Related MCP server: BachStudio Excel MCP Server
Platforms
OS | GridCraft package to install | Where the server finds it (no setup needed) | Status |
Windows 10/11 (x64, x86, arm64) | MSI or portable zip |
| โ Verified (Windows 11) |
Linux (x86_64, aarch64, riscv64) |
|
| โ Verified (Debian 12, headless) |
macOS 11+ (Apple silicon and Intel) |
|
| ๐ก Supported, not yet tested on a Mac |
All downloads: GridCraft releases (there is also a FreeBSD tar.gz; set GRIDCRAFT_DIR to it). Anywhere else: set GRIDCRAFT_DIR (folder, .tar.gz root or GridCraft.app) or GRIDCRAFT_CLI.
macOS: the DMG contains only the app. Unzip the separate
gridcraft-clizip and movegridcraft-clito/usr/local/bin(or pointGRIDCRAFT_CLIat it). The first run checks Apple's notarization online.Linux: the AppImage and Flatpak contain only the app, not
gridcraft-cli; use the deb, rpm or tar.gz. For an AppImage app, setGRIDCRAFT_APPsoopen_in_gridcraftcan start it. On a server without a GPU, the verified setup usedlibxkbcommon0 libvulkan1 libegl1 mesa-vulkan-drivers libasound2 fontconfig.
How it works
Part | What it is |
GridCraft engine ( | GridCraft's own engine: cells, the calculation engine with 513 functions, styles, number formats, tables, conditional formats, validation, charts, PivotTables and the XLSX / CSV / JSON / HTML / PDF writers. Started fresh and headless for each job, so it never touches the GridCraft app or an open workbook. |
MCP server (Node.js) | 9 high-level tools. Builds workbooks from a simple description of sheets (data and formulas, header, table, totals row, formats, rules, charts), names PivotTable sheets, checks every output first and returns the computed values of the first rows of every sheet plus any formula errors, so the assistant sees what the formulas give. |
Live app (optional) |
|
Tools
Tool | What it does |
| A new workbook (or a sample: budget, sales, grades) from sheets: values and formulas, header styling, Excel tables, totals rows, number formats, fonts, colours, borders, merges, conditional formatting (highlights, data bars, colour scales, icon sets), drop-down lists, notes, charts (17 types), frozen panes, print setup; PivotTables; theme and properties |
| One workbook, a list or a folder: write values and formulas, find and replace, insert or delete rows and columns, sort, remove duplicates, add, rename or delete sheets, formats, conditional formats, tables, charts, PivotTables; written as a new copy |
| Computed values, formulas or display text of a range or sheet, and formulas evaluated against the workbook without changing it |
| One workbook, a list or a folder โ xlsx, csv, tsv, json, html, pdf (one sheet or every sheet) |
| Sheets with used ranges, tables, charts, merges, filters, frozen panes, rules, validations, notes; defined names; first rows as computed values; formula errors |
| 339 commands with parameters, 513 worksheet functions with signatures, chart types, samples, formats |
| Any engine commands plus |
| Open workbooks (or a sample) in the GridCraft app, optionally with the control channel |
| Platform, installation, version, commands, functions, app / control port |
Opens | xlsx, xlsm, xls (values, formulas, number formats), xlsb and ods (data), csv, tsv, txt, json |
Saves | xlsx (every sheet, formulas, styles, tables, charts, PivotTables), csv, tsv, json, html, pdf |
Cells use A1 notation (B2, A1:D10); quote sheet names with spaces in formulas ('My sheet'!A1). Strings starting with = are formulas; text like 12% or 2026-03-01 is read as typed.
Example
{
"name": "Sales 2026",
"sheets": [
{
"name": "Data",
"data": [
["Region", "Product", "Units", "Price", "Total"],
["North", "A", 10, 12.5, "=C2*D2"],
["South", "A", 8, 12.5, "=C3*D3"],
["North", "B", 12, 20, "=C4*D4"],
["South", "B", 9, 20, "=C5*D5"]
],
"table": true,
"totals_row": ["none", "none", "sum", "average", "sum"],
"formats": [{ "range": "D2:E6", "number_format": "Currency" }],
"conditional_formats": [{ "range": "E2:E5", "type": "data_bar" }],
"validations": [{ "range": "A2:A5", "list": ["North", "South", "East", "West"] }],
"charts": [{ "range": "A1:A5", "type": "column", "title": "Units", "at": "G2" }]
},
{
"name": "By region",
"data": [["Region", "Total"], ["North", "=SUMIFS(Data!E:E,Data!A:A,A2)"], ["South", "=SUMIFS(Data!E:E,Data!A:A,A3)"]],
"formats": [{ "range": "B2:B3", "number_format": "Currency" }],
"charts": [{ "range": "A1:B3", "type": "pie", "title": "Sales by region", "at": "D2" }]
}
],
"pivots": [{ "source": "Data!A1:E5", "rows": ["Region"], "columns": ["Product"], "values": [{ "field": "Total", "func": "sum" }] }],
"formats": ["xlsx", "pdf"],
"output_dir": "C:\\Sheets"
}Requirements
GridCraft with
gridcraft-cli(tested with 0.6.1); see PlatformsNode.js โฅ 20 (bundled with Claude Desktop for
.mcpbinstalls)
Installation
Claude Desktop (recommended, all platforms)
Download
gridcraft-mcp-server.mcpbfrom the latest release.Double-click it (or drag it into Claude Desktop โ Settings โ Extensions) and click Install.
Optional: if GridCraft is not in a standard location, fill in its folder or the
gridcraft-clipath in the extension settings.
Sunsam Code
Install GridCraft Bridge from the Sunsam Code marketplace, or drop the .mcpb into MCP โ Install extension.
Codex (OpenAI)
Recommended โ the marketplace (gets updates): Plugins โ Add โ Add marketplace, source jhonsu01/craft-marketplace, reference main, then install GridCraft Bridge from Craft Bridges (craft-marketplace). New versions arrive by refreshing the marketplace. Or upload the zip (Codex then keeps it in your account and refuses a newer zip with the same name):
Download
gridcraft-mcp-server-<version>-codex.zipfrom the latest release.In Codex: Plugins โ Add โ New plugin, choose the zip and click Add plugin.
Codex starts the server with
node, so Node.js โฅ 20 must be onPATH. If GridCraft is not in a standard location, setGRIDCRAFT_DIRorGRIDCRAFT_CLIas system environment variables (Codex has no settings form for local plugins).
DeepSeek Harness
Plugins โ Add plugin, enter
github:jhonsu01/craft-marketplace#path:/plugins/gridcraft-mcp-serverand click Install, then Enable now.Harness runs the server with its own MCP client and
node(Node.js โฅ 20 onPATH); the tools appear asmcp__gridcraft__<tool>and the output files as cards that open in Harness.Harness does not update plugins by itself yet: to upgrade, uninstall the plugin and install it again with the same address.
Claude Code / other MCP clients
git clone https://github.com/jhonsu01/gridcraft-mcp-server.git
cd gridcraft-mcp-server
npm install
npm run buildWindows:
claude mcp add gridcraft -- node "%CD%\dist\bundle.cjs"macOS / Linux:
claude mcp add gridcraft -- node "$PWD/dist/bundle.cjs"Configuration
Variable | Meaning |
| GridCraft folder, one of its executables, a |
| Path of |
| Path of the desktop app when it lives elsewhere (e.g. a Linux AppImage) |
| Control port of the desktop app (default 7979) |
| Maximum seconds per engine call (default 3600) |
Safety
Files are never overwritten unless
overwrite: true: a free name (_2) is used in folders and an existingoutput_pathis an error. Inputs are only read; an edited file is saved only as a new copy (_edited).All paths must be absolute. The engine runs headless and never touches the GridCraft app unless
live: true.Everything runs locally with no network access. Each job uses a private engine in a temporary folder that is deleted at the end.
Development
npm run build # TypeScript + single-file bundle (dist/bundle.cjs)
npm test # unit tests (Windows, macOS and Linux path logic)
npm run test:e2e # 25 end-to-end checks (27 with `E2E_LIVE=1`) over real MCP stdio (synthetic CSV)
npm run pack:mcpb # gridcraft-mcp-server.mcpb
npm run pack:codex # Codex / DeepSeek Harness plugin zipLinux test in Docker (unpack gridcraft-<version>-linux-x86_64.tar.gz first):
docker run --rm -v "$PWD:/work:ro" -v "/path/to/gridcraft-0.6.1-linux-x86_64:/opt/gridcraft:ro" -e GRIDCRAFT_DIR=/opt/gridcraft -w /work node:22-bookworm bash -c "apt-get update && apt-get install -y libxkbcommon0 libvulkan1 libegl1 mesa-vulkan-drivers libasound2 fontconfig && node scripts/e2e.mjs"License
Apache-2.0. GridCraft is ยฉ its authors (Storytold), MIT or Apache-2.0. This project is not affiliated with or endorsed by GridCraft or Storytold. Excel is a trademark of Microsoft.
Available Tools
9 toolsconvert_workbookConvert spreadsheetsA
Convert workbooks (xlsx, xlsm, xls, xlsb, ods, csv, tsv, json; one, a list or a folder) to xlsx, csv, tsv, json, html or pdf (csv / tsv / pdf: the first sheet, or every sheet as its own file with all_sheets).
| Name | Required | Description | Default |
|---|---|---|---|
| suffix | No | ||
| formats | No | Outputs: xlsx (Excel, every sheet, formulas, styles, tables, charts), csv / tsv (values of one sheet), json, html and pdf (one sheet, print layout). | |
| input_dir | No | ||
| overwrite | No | Replace existing outputs. | |
| all_sheets | No | csv / tsv / pdf: write every sheet as its own file (<name>_<sheet>.csv) instead of only the first sheet. | |
| input_path | No | ||
| output_dir | No | Absolute output folder (default: next to the input; required for new files). | |
| input_paths | No | ||
| output_path | No | Absolute output file for the first format (its extension must match). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false, destructiveHint=false, idempotentHint=false, so the agent already knows this writes files without being flagged destructive. The description adds that inputs may be one file, a list, or a folder, but says nothing about overwrite semantics, whether output files are preserved by default, or side effects on the source workbook.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that goes inputs โ outputs โ option semantics, with nothing wasted. The nested parentheticals make it dense but every clause carries information an agent needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-parameter, mostly-optional conversion tool with no output schema, the description covers the essentials an agent needs to invoke it: accepted inputs, target formats, and the one non-obvious output-shaping flag. Remaining gaps (suffix, output pathing, overwrite) are defaults the schema surfaces.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
At 56% schema coverage, several parameters (suffix, output_path, output_dir, overwrite) are undocumented in both places. The description does add real meaning for the plurality of the input ('one, a list or a folder' maps to input_path/input_paths/input_dir) and for the all_sheets output naming, but only partially compensates for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (convert) and resource (workbooks) and enumerates both the accepted input formats and the producible output formats, which no sibling (create/edit/read_workbook) does. An agent can pick this tool over its siblings without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The format matrix effectively delimits when this tool applies and the parenthetical explains the all_sheets decision point for csv/tsv/pdf. It stops short of explicit alternatives or when-not-to-use guidance (e.g. use read_workbook to merely inspect), so it is clear context rather than full routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_workbookCreate a spreadsheetA
Build an Excel workbook with GridCraft (an Excel-class spreadsheet app): sheets of data and live formulas (500+ Excel functions, dynamic arrays), header styling, tables with filter buttons, totals rows, number formats, fonts, colours, borders, merged cells, conditional formatting (highlights, data bars, colour scales, icon sets), drop-down lists, notes, charts (17 types), PivotTables, frozen panes and print setup. Saves xlsx, csv, tsv, json, html or pdf and returns the computed values of the first rows of every sheet (and any formula errors) to check the result. Or start from a sample: budget, sales, grades.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | File name without extension. | workbook |
| theme | No | ||
| title | No | Document title (properties). | |
| author | No | ||
| pivots | No | PivotTables, made after the sheets. | |
| sample | No | Start from a built-in sample workbook instead of a blank one. | |
| sheets | No | ||
| formats | No | Outputs: xlsx (Excel, every sheet, formulas, styles, tables, charts), csv / tsv (values of one sheet), json, html and pdf (one sheet, print layout). | |
| overwrite | No | Replace existing outputs. | |
| all_sheets | No | csv / tsv / pdf: write every sheet as its own file (<name>_<sheet>.csv) instead of only the first sheet. | |
| output_dir | No | Absolute output folder (default: next to the input; required for new files). | |
| output_path | No | Absolute output file for the first format (its extension must match). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false, destructiveHint=false and idempotentHint=false, and the description is consistent with them by describing a write operation that produces files. It adds behavioral value beyond the annotations by disclosing that the tool returns the computed values of the first rows of every sheet and any formula errors as a verification mechanism, though it says nothing about overwrite semantics or size limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the action and capped at three sentences, and the feature catalogue genuinely signals what can be accomplished in a single call rather than via follow-up edits. The middle sentence is a long comma-spliced list of capabilities, which is dense but still earns its place for a 12-parameter tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and 12 parameters at 75% schema coverage, the description covers output formats, sample starting points and return values (computed first rows plus formula errors), which is enough to call the tool correctly. It omits guidance on how this differs from the edit/convert siblings, which is the main remaining gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 75%, so the schema already documents most parameters including formats, sample enums, output_dir and overwrite. The description paraphrases the format options and sample names but adds no syntax or format details beyond what the schema provides (e.g. how output_path must match the first format is only in the schema), so a baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ("Build an Excel workbook with GridCraft") and clarifies it is a creation tool that can also start from a sample. Sibling differentiation from edit_workbook/read_workbook is only implied by the word "build"; the description never names those alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use or when-not-to-use guidance relative to edit_workbook, convert_workbook or open_in_gridcraft, which are all plausible alternatives for an agent holding an existing file. The only contextual hint is optional ("Or start from a sample"), leaving routing entirely to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
edit_workbookEdit spreadsheetsA
Open workbooks (xlsx, xlsm, xls, xlsb, ods, csv, tsv; one, a list or a folder) and change them: write values and formulas, find and replace, insert or delete rows and columns, sort, remove duplicates, add, rename or delete sheets, apply formats, conditional formatting, tables, charts and PivotTables. Saved as new copies; the originals are only read.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | ||
| write | No | ||
| charts | No | ||
| pivots | No | ||
| suffix | No | _edited | |
| tables | No | ||
| formats | No | Cell formats (on `sheet`, default the first sheet). | |
| replace | No | ||
| input_dir | No | ||
| overwrite | No | Replace existing outputs. | |
| add_sheets | No | ||
| all_sheets | No | csv / tsv / pdf: write every sheet as its own file (<name>_<sheet>.csv) instead of only the first sheet. | |
| input_path | No | ||
| output_dir | No | Absolute output folder (default: next to the input; required for new files). | |
| input_paths | No | ||
| output_path | No | Absolute output file for the first format (its extension must match). | |
| rows_columns | No | ||
| delete_sheets | No | ||
| rename_sheets | No | ||
| output_formats | No | Outputs (default xlsx). | |
| remove_duplicates | No | ||
| conditional_formats | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=false and readOnlyHint=false, so the safety profile is covered. The description adds genuinely non-derivable behavior: inputs may be one file, a list, or a folder, and results are written as new copies while originals are only read. It omits the default output suffix/overwrite semantics and any limit or failure behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the verb and resource, and the long capability enumeration earns its length by covering a very broad feature surface. The chained list is dense but not padded or repetitive.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 22-parameter tool with no output schema and only modest annotations, the description covers formats, input multiplicity and the copy-not-mutate behavior, which are the essentials. It still leaves the agent guessing about output paths/naming defaults, how conflicting operations in one call are ordered, and coverage of the several parameters the schema leaves undocumented.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 27%, so the schema cannot carry the burden for 22 parameters. The description partially compensates by naming operation categories that map onto the parameter set (write/replace/rows_columns/sort/remove_duplicates/add_sheets/tables/charts/pivots/formats/conditional_formats), but it gives no syntax or per-parameter semantics, and key parameters such as input_path vs input_paths vs input_dir vs output_dir are never disambiguated.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete verb pair (open and change) plus the resource (workbooks) and enumerates the exact mutation families supported (write, replace, rows/columns, sort, dedupe, sheets, formats, tables, charts, pivots). That enumeration makes it unmistakably distinct from its siblings create_workbook, read_workbook and convert_workbook without needing to name them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the operation list tells an agent this is the tool for modifying spreadsheets, and 'saved as new copies' hints that in-place edits are not a concern. Nothing states when to prefer this over convert_workbook or run_gridcraft_commands, and no preconditions or exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_gridcraft_statusGridCraft statusARead-onlyIdempotent
Check the GridCraft installation: platform, executables, version, engine commands, worksheet functions, formats, whether the app is running / listening for control.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and closed-world scope, so the safety profile is fully covered without the description. The description adds modest context by revealing that it probes live state ('whether the app is running / listening for control'), but says nothing about cost, latency, or failure modes when no installation exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact sentence, front-loaded with the verb and resource, followed by a colon-separated inventory of what is checked. The list is dense but every item earns its place given the absence of an output schema; nothing is padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully compensates by enumerating the categories of information returned (platform, version, executables, commands, functions, formats, running state). Zero parameters and full annotation coverage mean little else is required; only the shape/format of the returned data is left unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate; the baseline for a parameterless tool applies. No parameter text is needed or missing.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb ('Check') and resource ('the GridCraft installation') and enumerates the exact facets inspected: platform, executables, version, engine commands, worksheet functions, formats, running/listening state. This clearly separates it from siblings like get_workbook_info or list_gridcraft_catalog, though it never names those alternatives explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Use is only implied: the enumerated diagnostic output suggests 'run this to see whether GridCraft is installed and running before invoking open_in_gridcraft or run_gridcraft_commands,' but the description never states when to use it, when not to, or what alternative to pick instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_workbook_infoWorkbook infoCRead-onlyIdempotent
Sheets of a workbook with used ranges, tables, charts, merges, filters, frozen panes, defined names, the first rows of each sheet as computed values, and every formula that returns an error.
| Name | Required | Description | Default |
|---|---|---|---|
| input_path | Yes | ||
| preview_rows | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive behavior, so the safety profile is covered. The description adds useful output-content context (used ranges, tables, charts, error formulas), but says nothing about cost, permissions, or failure modes on a bad path.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence with no filler; the most concrete inventory items are front-loaded. It is slightly list-heavy and would benefit from a leading verb, but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the return-value burden and does a reasonable job enumerating what comes back. However, it omits how the workbook is identified (input_path semantics), the preview row cap, and any error behavior, leaving gaps for a 2-parameter tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry both parameters. It partially compensates by implying preview rows ('the first rows of each sheet'), but never ties this to the preview_rows parameter, its default of 10, or its max of 100, and input_path is entirely unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description is a noun-phrase inventory of returned contents rather than a verb+resource statement, so it never states plainly that this tool retrieves workbook metadata/contents. It conveys the resource scope well enough, but nothing distinguishes it from the sibling read_workbook, which an agent must guess between.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisite (e.g., the workbook must be open or on disk), and no mention of read_workbook or any other sibling as an alternative. The agent is left to infer the choice entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_gridcraft_catalogList commands, functions, charts, samples, formatsARead-onlyIdempotent
What GridCraft can do: commands (the engine commands with parameters and ribbon place, for run_gridcraft_commands), functions (the worksheet functions with signature and description), charts (chart types), samples (built-in sample workbooks) and formats.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | Yes | ||
| filter | No | Case-insensitive text to match (id, label, name, category or description). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true and destructiveHint=false, so a 3 is the appropriate ceiling. The description usefully reveals what each entry carries (commands include parameters and ribbon place; functions include signature and description), which helps an agent know what it gets back, but says nothing about result size, filtering behavior, or empty-match handling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence that packs all five catalog categories without filler. The nested parentheticals make it dense, but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only, two-parameter catalog tool with no output schema, the description covers every kind an agent can request and what each contains, and the annotations carry the safety profile. Nothing essential for invoking it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 50%: 'kind' has no description (only an enum) and 'filter' is documented in the schema. The description compensates partially by explaining what each 'kind' value yields, but it never clarifies the 'kind' selector itself or how 'filter' interacts with it, so it adds only modest meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description enumerates exactly what the catalog covers (commands, functions, charts, samples, formats) and ties 'commands' to the sibling run_gridcraft_commands, which cleanly separates it from the execution tool. It is a bit indirect โ 'What GridCraft can do' never says 'list' or 'retrieve' โ but the resource and scope are unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: pointing at run_gridcraft_commands for commands suggests this is the discovery step before execution, but there is no explicit when-to-use or when-not-to-use statement, and no guidance that 'kind' selects the subset returned. The relationship to the sibling is the only routing signal.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
open_in_gridcraftOpen in GridCraftA
Open workbooks in the GridCraft desktop app to keep working by hand. With control=true the app also starts its loopback-only control channel so run_gridcraft_commands live=true can drive it.
| Name | Required | Description | Default |
|---|---|---|---|
| paths | No | Absolute workbooks to open. | |
| sample | No | Open a built-in sample instead. | |
| control | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the mutation/safety profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false). The description adds genuinely non-obvious behavior: with control=true the app opens a loopback-only control channel, which is both a network-surface disclosure and a prerequisite for another tool. That is real context beyond 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero waste, front-loaded with the core action before the control-channel detail. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-required-param launch tool with no output schema and no nested objects, the description covers the action, the interactive purpose, and the one undocumented flag's side effect. The sample parameter's behavior is left to the schema, which is acceptable but keeps this from a 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67%; paths and sample are documented in the schema, but the control boolean has no schema description. The description compensates by explaining exactly what control=true does and why it matters (enabling live command driving), which is the highest-value gap to fill.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (open workbooks in the GridCraft desktop app) and clarifies the intent ('to keep working by hand'), which distinguishes it from the read/edit/convert siblings that operate without launching the app. It stops short of naming a sibling alternative for headless use, but the resource and mode are unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear use context (interactive work in the desktop app) and a concrete condition for the control flag that gates a downstream tool (run_gridcraft_commands live=true). It does not state when NOT to use this versus e.g. read_workbook, but the interactive-vs-programmatic split is implied well enough to route correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_workbookRead and calculateARead-onlyIdempotent
Read a workbook (xlsx, xlsm, xls, xlsb, ods, csv, tsv, json): computed values, formulas or display text of a range or sheet, and evaluate formulas against it without changing anything (e.g. "=SUMIFS(D:D,A:A,"North")", "=AVERAGE(Sales!C2:C99)").
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | values (computed), formulas (formula text where there is one) or formatted (as displayed, number formats applied). | values |
| range | No | A1 range (default: the used range). | |
| sheet | No | Default: the first sheet. | |
| evaluate | No | Formulas to evaluate on the sheet. | |
| max_rows | No | ||
| input_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description reinforces this with 'without changing anything' and adds that formula evaluation happens against the workbook without persisting, plus the supported format set and evaluation examples, which is useful 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence with the read action front-loaded and examples parenthesized at the end. The format list is long but earns its place by scoping the tool; no filler text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description should say something about the return shape (e.g. how a range or evaluated formula result comes back), and it does not. For a 6-parameter tool it also omits max_rows truncation semantics, so it is adequate but leaves real gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67% and the description restates the three mode meanings, range/sheet targeting, and the evaluate expressions, matching the schema's own wording without adding format or syntax detail. max_rows and the truncation/limit behavior are not mentioned anywhere in the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (read) and resource (workbook), enumerates the supported file formats, and lists the three output modes and the formula-evaluation capability. Combined with the closing 'without changing anything', an agent can distinguish it from create_workbook, edit_workbook, and convert_workbook without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage ('read', 'evaluate formulas ... without changing anything') and shows example evaluation expressions, but never states when to prefer this tool over get_workbook_info or open_in_gridcraft, nor any prerequisite or exclusion. Usage is inferable rather than spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_gridcraft_commandsRun GridCraft engine commandsADestructive
Advanced: run any GridCraft engine commands in order (cell., home., insert., formulas., data., review., view., pageLayout., chart., table., pivot., sheet....) plus the engine tools write_range / read_range / set_cell / get_cell / evaluate_formula / format_range / insert_chart / create_table / sort_range / filter / select / inspect_workbook (step id = the tool name), on a new, sample or opened workbook, then save. Parameters can use "$steps[N].field" for a value returned by step N (0-based). With live=true the steps drive the open GridCraft app instead.
| Name | Required | Description | Default |
|---|---|---|---|
| live | No | Drive the open GridCraft app (control port 7979) instead of a headless engine. | |
| name | No | gridcraft | |
| steps | No | ||
| sample | No | Start from a sample when there is no open_path. | |
| formats | No | Save the result (needs output_dir or output_path). | |
| open_path | No | Absolute workbook to open first (never saved over; save a copy with formats). | |
| overwrite | No | ||
| all_sheets | No | ||
| output_dir | No | ||
| output_path | No | ||
| stop_on_error | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, readOnlyHint=false, and non-idempotency, so the safety profile is covered. The description adds genuinely useful behavior beyond that: the $steps[N].field cross-step reference syntax, that live=true drives the open app, and that commands run sequentially with a save at the end. It does not, however, explain failure handling or exactly what is destroyed/overwritten.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The action is front-loaded and nearly every clause carries information (command families, delegated tools, step-id convention, $steps reference, live mode). It is dense and runs long as essentially one sentence, which hurts scanability slightly, but there is little filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 11-parameter composite runner with no output schema, the description conveys the core execution model (ordered steps, engine tool steps, source workbook options, save step, live mode) so an agent can call it correctly. Gaps remain around error handling, overwrite behavior, and the output_dir/output_path pairing, keeping it short of a full 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 36%, so the description must compensate. It does clarify live, sample, the steps/id model, and the $steps[N] reference syntax (which is not in the schema), but leaves name, overwrite, all_sheets, output_dir, output_path, and stop_on_error unaddressed. Partial compensation warrants the baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('run any GridCraft engine commands in order') and makes the batch/composite nature explicit by enumerating the command families (cell.*, home.*, etc.) and the engine tools it can delegate to. An agent can immediately distinguish this general-purpose executor from single-operation siblings like create_workbook or edit_workbook.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'Advanced:' prefix and the description of operating on a new/sample/opened workbook imply context, and mentioning that it saves afterward gives a hint of when to reach for it. However, it never explicitly says when to prefer this batch tool over the plain sibling tools (create_workbook, edit_workbook, read_workbook), leaving the choice to inference.
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.
9 tool updates
v1.0.0- First observed
convert_workbook - First observed
create_workbook - First observed
edit_workbook - First observed
get_gridcraft_status - First observed
get_workbook_info - First observed
list_gridcraft_catalog - First observed
open_in_gridcraft - First observed
read_workbook - First observed
run_gridcraft_commands
TDQS
Scored across 9 tools
Most tools have clearly distinct purposes (create/edit/read/convert a workbook). However, run_gridcraft_commands is a low-level catch-all that functionally overlaps with create_workbook and edit_workbook, and list_gridcraft_catalog partially overlaps with get_gridcraft_status for listing commands/functions/formats. Descriptions help but boundaries are not entirely crisp.
All names use snake_case and start with a verb, with a predictable verb_noun pattern for core operations. open_in_gridcraft breaks the pattern by inserting a preposition, and the info/status tools use a longer verb_domain_noun form, but consistency is still high.
9 tools is well within the ideal range for a spreadsheet server; each tool maps to a distinct lifecycle stage (create, read, edit, convert, inspect, open, advanced control, discovery, health). No tool feels redundant or missing from a count perspective.
The surface covers the full create-read-edit-convert-inspect cycle plus live app control and advanced command execution. No obvious operational gap for an Excel-class workbook toolset; file deletion is out of scope and likely intentional.
Maintenance
Related MCP Connectors
Automate production-ready PDF, Word, Excel and PowerPoint documents from templates and JSON data
Excel analytics: inspect, query (JSON rows), charts, and JSON-to-xlsx workbook writing.
Composable APIs for document extraction, image transformation, and document & sheet generation.
Real .docx and .xlsx files from structured data, with automatic Hebrew/Arabic RTL.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceProvides Excel file manipulation capabilities without requiring Microsoft Excel installation, enabling workbook creation, data manipulation, formatting, and advanced Excel features.10MIT
- AlicenseNot gradedqualityNot gradedmaintenanceEnables creation, reading, and manipulation of Excel workbooks without Microsoft Excel installed, supporting formulas, formatting, charts, pivot tables, and data validation through multiple transport protocols.MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to create, read, write, and manipulate Excel files (.xlsx, .xlsm) without requiring Microsoft Excel, including support for charts, pivot tables, data import/export, and professional formatting across Windows, macOS, and Linux.27 npm34MIT
- AlicenseNot gradedqualityBmaintenanceEnables reading and writing of values, formulas, and formatting in Microsoft Excel files including .xlsx and .xlsm formats. It supports sheet management, table creation, and provides Windows-exclusive features like live editing and screen capture.8,031 npmMIT