Skip to main content
Glama

ironcalc-mcp

PyPI Python 3.13+ License: MIT Tests

MCP server for the IronCalc spreadsheet engine. Create, read, edit, and save xlsx files through the Model Context Protocol.

Built on the typed high-level API in IronCalc 0.8.3. It exposes workbook editing, formulas, styles, structure, names, conditional formatting, and xlsx persistence through MCP.

Motivation

I was really inspired by paper.design's real-time MCP workflow, where exposing a design tool via MCP enables custom, extensible agent workflows that feel native rather than bolted on.

Current AI-spreadsheet integrations (like Claude's cowork mode for Excel) add an unnecessary layer of abstraction - the agent writes Python code that manipulates Excel, instead of talking to the spreadsheet directly. This MCP server removes that indirection. Agents read cells, write formulas, and get evaluated results in one hop. No codegen middleman, no openpyxl glue scripts.

Huge thanks to the IronCalc contributors - their Python SDK API is so clean that this entire MCP server is basically thin wrappers. The hard work is all theirs.

Current limitation: the server works with an in-memory workbook - load a file, edit it, save it back. There's no real-time streaming to a running IronCalc UI yet. The engine already has a diff queue for syncing, so the plumbing is there. If IronCalc adds a WebSocket bridge to their web app, we can wire up live sync and get a true reactive workflow - agent edits appearing in the browser as they happen.

Related MCP server: Excel MCP Server

Quick start

uvx ironcalc-mcp

Claude Code

claude mcp add ironcalc -- uvx ironcalc-mcp

Claude Desktop / Cursor

Add to your MCP config:

{
  "mcpServers": {
    "ironcalc": {
      "command": "uvx",
      "args": ["ironcalc-mcp"]
    }
  }
}

Examples

Build a spreadsheet from scratch

Create a budget with formulas and save it

Audit an existing xlsx for errors

Load quarterly_report.xlsx and find all #NAME?, #REF!, #VALUE! errors. Tell me which formulas are broken and why.

Fix broken cross-sheet references

The P&L sheet was renamed but formulas in the DCF sheet still reference the old name. Find and fix all broken references.

Build a financial model

Create a 5-year DCF model with revenue assumptions in one sheet, P&L in another, and free cash flow calculation in a third. Use =NPV() and =IRR() for valuation.

Analyze and transform data

Load sales_data.xlsx, add a column with running totals, insert a summary row at the bottom, and save.

Available tools (56)

Workbook

Tool

Description

create_workbook

Create an empty workbook with locale, timezone, and formula language

load_workbook

Load an xlsx file

save_workbook

Save to xlsx

get_workbook_info

Get metadata, theme, sheets, dimensions, states, and colors

set_workbook_properties

Update name, locale, timezone, language, or theme

undo

Undo the latest action

redo

Redo the latest undone action

Cells and ranges

Tool

Description

get_cell

Get content, formatted value, and type

get_cells

Read non-empty cells from an inclusive range

set_cell

Set a value or formula

set_cells

Batch-write cells with one evaluation pass

set_array_formula

Set an array formula over a result area

clear_range

Clear contents, formatting, or everything

paste_csv

Paste tab-delimited rows into a range

Sheets

Tool

Description

add_sheet

Create a sheet

delete_sheet

Delete a sheet

rename_sheet

Rename a sheet

set_sheet_color

Set the tab color

duplicate_sheet

Duplicate a sheet

hide_sheet / unhide_sheet

Change sheet visibility

move_sheet

Reorder a sheet

set_grid_lines

Show or hide grid lines

Rows and columns

Tool

Description

insert_rows / delete_rows

Insert or delete rows

insert_columns / delete_columns

Insert or delete columns

move_rows / move_columns

Move a contiguous row or column block

set_column_width

Size one column or an inclusive range

set_row_height

Size one row or an inclusive range

set_rows_hidden / set_columns_hidden

Hide or unhide inclusive ranges

set_frozen_rows / set_frozen_columns

Set frozen panes

auto_fill_rows / auto_fill_columns

Extend values and formulas from a source area

Formatting

Tool

Description

get_cell_style

Get font, fill, border, alignment, and number format

set_cell_style

Update selected style properties on a cell or range

set_range_border

Apply inner, outer, side, or full borders

Named styles and conditional formatting

Tool

Description

list_named_styles / get_named_style

Inspect named styles

create_named_style / update_named_style / delete_named_style

Manage named styles

apply_named_style

Apply a named style to a range

list_conditional_formats

List conditional formatting rules

add_conditional_format / update_conditional_format / delete_conditional_format

Manage rules

raise_conditional_format_priority / lower_conditional_format_priority

Reorder rules

Defined names

Tool

Description

list_defined_names

List workbook- and sheet-scoped names

create_defined_name

Create a defined name

update_defined_name

Rename, re-scope, or update a defined name

delete_defined_name

Delete a defined name

Contributing

Prerequisites: uv and just.

git clone https://github.com/yolonir/ironcalc-mcp
cd ironcalc-mcp
just init

just init syncs the locked environment and installs the deterministic prek commit hook.

just test                      # Behavioral tests
just quality-check             # Ruff, mypy, and ty
just quality-check src/path.py # Targeted quality checks
just precommit                 # Run all commit-time hooks
just format                    # Format and apply safe lint fixes

Please create a new branch for your changes and open a focused pull request against main.

License

MIT

Available Tools

21 tools
add_sheetA

Add a new sheet to the workbook.

Args: name: Optional sheet name. If omitted, auto-named (Sheet2, Sheet3, etc.)

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior2/5

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

No annotations provided. Description only mentions auto-naming behavior but does not disclose side effects, whether it modifies an open workbook, or if saving is required. Minimal 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.

Conciseness5/5

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

Extremely concise and front-loaded. Two sentences contain all necessary information with no fluff.

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?

Tool is simple with one optional parameter. Description covers main behavior and parameter. Could mention return value or constraints like duplicate names, but output schema likely provides that context.

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 0%, but description adds meaning by explaining the parameter is optional and auto-named if omitted. This goes beyond the schema which only specifies type and default.

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?

Description clearly states 'Add a new sheet to the workbook.' Verb is specific and resource is identified. Distinguishes from sibling tools like delete_sheet and rename_sheet.

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?

No explicit guidance on when to use this tool versus alternatives, such as create_workbook for creating a new workbook or rename_sheet. Usage is implied but not clarified.

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

create_workbookA

Create a new empty workbook.

Args: name: Workbook name locale: Locale code (e.g. en, de, es, fr) timezone: Timezone (e.g. UTC, America/New_York) language: Language code for formulas (e.g. en, es, de)

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoWorkbook
localeNoen
timezoneNoUTC
languageNoen

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description carries full burden. It states the tool creates a new workbook but does not disclose side effects (e.g., whether it automatically saves, sets it as active, or what happens on duplicate names). The parameter list adds some context but behavioral traits are minimal.

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 extremely concise with the main action in the first sentence, followed by a clean list of parameters. No unnecessary words or repetition. Every sentence serves a purpose.

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 simplicity (4 params, all optional, output schema exists), the description covers creation intent and parameter details well. Minor missing context: no mention of what happens on duplicate workbook names or if the tool returns any identifier. Still, it is largely sufficient.

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 0%, so the description must compensate. It provides brief but helpful explanations for each parameter (e.g., locale: 'Locale code (e.g. en, de, es, fr)'). This adds meaning beyond the schema's type and default, aiding correct invocation.

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 'Create a new empty workbook', which is a specific verb and resource. This distinguishes it from sibling tools like load_workbook, save_workbook, and other mutation tools. The purpose is immediately understood.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives like load_workbook. There is no mention of prerequisites, such as whether a workbook must be closed first, or if calling this multiple times creates separate workbooks. The description lacks explicit usage context.

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

delete_columnsB

Delete columns starting at the given position.

Args: sheet: Sheet index (0-based) column: First column to delete (1-based) count: Number of columns to delete

ParametersJSON Schema
NameRequiredDescriptionDefault
sheetYes
columnYes
countNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

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

Lacks disclosure of destructive behavior, such as whether columns are permanently removed or if adjacent columns shift. No mention of data recovery or limits.

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?

Concise and front-loaded with key info; docstring format is slightly verbose for a JSON tool but remains efficient.

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

Completeness2/5

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

Given zero schema descriptions and no annotations, the description should cover usage guidelines and behavioral traits more thoroughly for a deletion 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?

Adds meaning beyond schema by documenting indices (0-based sheet, 1-based column) and default count, but does not explain all parameters in depth.

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 action ('Delete columns') and specifies the starting position, distinguishing it from sibling tools like delete_rows or delete_sheet.

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

Usage Guidelines2/5

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

No information about when to use this tool versus alternatives (e.g., hiding columns) or any prerequisites or side effects.

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

delete_rowsB

Delete rows starting at the given position.

Args: sheet: Sheet index (0-based) row: First row to delete (1-based) count: Number of rows to delete

ParametersJSON Schema
NameRequiredDescriptionDefault
sheetYes
rowYes
countNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description must disclose behavior. It describes the parameters but does not mention any side effects (e.g., shifting rows, inability to undo, or restrictions like deleting all rows). The description is minimal beyond the obvious deletion action.

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 concise and structured with an 'Args' block, listing parameters clearly. It front-loads the primary action. The format is efficient, though slightly unnatural for natural language understanding.

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

Completeness3/5

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

For a destructive tool with an output schema, the description is adequate but incomplete. It lacks mention of row shifting, undo behavior, or constraints (e.g., cannot delete all rows). The presence of siblings like delete_columns suggests a pattern, but the description does not leverage that context.

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 0% schema description coverage, the description compensates by explaining each parameter: sheet index (0-based), row (1-based), and count (default 1). This adds meaning beyond the schema's type information, though it does not clarify boundary behavior (e.g., what happens if count exceeds available rows).

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 description clearly states the action (delete rows) and the resource (starting at a given position in a sheet). It distinguishes from siblings like delete_columns and delete_sheet by specifying rows. However, it does not explicitly differentiate from other row operations like insert_rows.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives such as delete_columns or clear cells. There is no mention of prerequisites, edge cases, or 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.

delete_sheetB

Delete a sheet by index.

Args: sheet: Sheet index (0-based)

ParametersJSON Schema
NameRequiredDescriptionDefault
sheetYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations, the description must disclose behavior. It only says 'Delete,' implying a destructive action, but fails to mention side effects, reversibility, or requirements (e.g., saving afterwards).

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 very short and front-loaded, with a docstring-style parameter section. Every sentence is necessary, though it could be more structured.

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

Completeness2/5

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

Given the tool's simplicity (one parameter, output schema exists), the description is minimally adequate but lacks guidance on error conditions, behavior when deleting visible sheets, or interaction with sibling tools like save_workbook.

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 description adds the key insight that the index is 0-based, which is not in the schema. However, it does not explain valid ranges or what happens if the index is out of bounds. Given 0% schema coverage, more detail would be beneficial.

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 action ('Delete') and the resource ('a sheet'), with a specific method ('by index'). This distinguishes it from sibling tools like add_sheet or rename_sheet.

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?

It specifies the parameter format (0-based index) but does not provide guidance on when to use this tool versus alternatives, prerequisites, or constraints (e.g., cannot delete the last sheet).

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

get_cellA

Get a single cell's content, formatted value, and type.

Args: sheet: Sheet index (0-based) row: Row number (1-based) column: Column number (1-based)

ParametersJSON Schema
NameRequiredDescriptionDefault
sheetYes
rowYes
columnYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior2/5

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

No annotations are provided, so the description bears full burden. It does not disclose read-only nature, error conditions, or what exactly is returned (only 'content, formatted value, and type' vaguely). Minimal behavioral context.

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 succinct with a one-line summary and a clean list of arguments. No extraneous text; every sentence earns its place.

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 simple getter with 3 integer parameters and an output schema (not shown), the description covers the basics adequately. Could mention output format, but output schema likely handles that. Siblings provide context for differentiation.

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 0%, requiring description to compensate. The description adds critical context: '0-based' for sheet and '1-based' for row/column, which is absent in schema. This adds value beyond type alone.

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 'Get a single cell's content, formatted value, and type,' which is a specific verb-resource combination. It distinguishes from siblings like 'get_cells' (multiple cells) and 'get_cell_style' (style only).

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives like 'get_cells' for ranges or 'get_cell_style' for formatting. Lacks explicit context for selection.

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

get_cellsA

Get cells in a rectangular range.

Args: sheet: Sheet index (0-based) row_start: First row (1-based) col_start: First column (1-based) row_end: Last row (1-based, inclusive) col_end: Last column (1-based, inclusive)

ParametersJSON Schema
NameRequiredDescriptionDefault
sheetYes
row_startYes
col_startYes
row_endYes
col_endYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior2/5

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

Without annotations, the description carries the full burden for behavioral disclosure. It does not state what is returned (e.g., values, formulas), whether empty cells are included, or any read-only nature. This omission limits the agent's ability to predict tool 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?

The description is extremely concise: one line for purpose followed by a clear bullet list of parameters. Every sentence serves a purpose with no wasted words.

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

Completeness3/5

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

While an output schema exists, the description does not mention what the output contains (e.g., cell values, formatting). It provides minimal context beyond parameter meanings, lacking edge cases or limitations.

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?

The description defines each parameter with its meaning and indexing convention (sheet 0-based, rows/columns 1-based, inclusive). Since the schema has 0% description coverage, this compensates fully and adds essential clarity.

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 'Get cells in a rectangular range,' which clearly identifies the action and resource. It differentiates from sibling tools like 'get_cell' by specifying a range, implying multiple cells.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives such as 'get_cell' for single cells or other sibling tools. The description lacks explicit when-to-use or when-not-to-use instructions.

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

get_cell_styleA

Get the style (font, fill, border, alignment, number format) of a cell.

Args: sheet: Sheet index (0-based) row: Row number (1-based) column: Column number (1-based)

ParametersJSON Schema
NameRequiredDescriptionDefault
sheetYes
rowYes
columnYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

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

No annotations are provided, so the description bears full responsibility. It states the tool reads style data, but does not mention behavior for empty cells, invalid indices, or performance. The list of style components adds some context but not deep behavioral traits.

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 purpose is stated in a single line, followed by a parameter list. No redundant text. However, the parameter list could be integrated into schema descriptions; still, it is efficient and front-loaded.

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?

The description lists the style components returned. Since an output schema exists (though not shown), it is acceptable. It does not cover edge cases, but for a simple read tool, the information is sufficient.

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 0%, so the description must compensate. It clarifies that 'sheet' is 0-based, 'row' and 'column' are 1-based, which adds meaning beyond the schema's titles and types.

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 'Get the style (font, fill, border, alignment, number format) of a cell', specifying both the verb and resource with details of what style includes. It distinguishes from siblings like get_cell which retrieves the cell value, and get_cells which retrieves multiple cell values.

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

Usage Guidelines2/5

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

No guidance on when to use this tool vs alternatives. While siblings like get_cell and get_cells exist, the description does not explain when to choose this for style retrieval over or after other tools.

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

get_workbook_infoA

Get information about the current workbook: sheets, dimensions, and metadata.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description must disclose behavioral traits. It implies a read-only operation but does not confirm safety, authorization needs, or the meaning of 'current workbook'. The description is acceptable but could be more transparent.

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 a single, front-loaded sentence with no wasted words. It efficiently conveys the tool's purpose.

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 simple nature of the tool and the presence of an output schema, the description is nearly complete. It lists the types of information returned, which is sufficient for an agent to decide to use it.

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 no parameters, so the baseline is 4. The description does not add parameter information, but it is unnecessary. Schema coverage is complete.

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 verb 'Get' and the resource 'workbook information', and specifies the types of information: sheets, dimensions, and metadata. This distinguishes it from sibling tools that modify or retrieve specific data.

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?

No explicit guidance on when to use this tool versus alternatives. While the purpose is clear, there is no mention of when not to use it or comparisons with sibling tools like get_cells for specific data.

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

insert_columnsB

Insert columns at the given position.

Args: sheet: Sheet index (0-based) column: Column number where new columns are inserted (1-based) count: Number of columns to insert

ParametersJSON Schema
NameRequiredDescriptionDefault
sheetYes
columnYes
countNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, and the description does not disclose behavioral traits such as whether the operation is destructive, shifts existing columns, or requires specific permissions. Essential details are missing for a modification 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 extremely concise, using a clear docstring format with no unnecessary words. Every sentence serves a purpose, directly explaining the parameters.

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

Completeness3/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 does not need to explain return values. However, it lacks information about side effects, such as whether existing columns are shifted or if the operation is reversible. For a mutation tool, this is a notable gap.

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 description adds meaning beyond the schema by explaining each parameter (e.g., 'sheet: Sheet index (0-based)', 'column: Column number where new columns are inserted (1-based)'). This clarifies the indexing convention, which the schema does not provide.

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 description clearly states 'Insert columns at the given position', identifying the verb and resource. However, it does not differentiate from sibling tools like insert_rows, which have similar structure.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like insert_rows or delete_columns. No context on prerequisites or typical use cases.

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

insert_rowsB

Insert rows at the given position.

Args: sheet: Sheet index (0-based) row: Row number where new rows are inserted (1-based) count: Number of rows to insert

ParametersJSON Schema
NameRequiredDescriptionDefault
sheetYes
rowYes
countNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior2/5

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

No annotations are provided, so the description must disclose behavioral traits. It fails to mention whether rows are shifted down, the impact on cell references, limits, or error conditions. The description only defines parameters, missing key behavioral details for a mutation tool.

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

Conciseness4/5

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

The description is concise with no extraneous text. It follows a structured docstring format, listing each parameter with a brief explanation. It could be slightly more efficient by combining sentences.

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

Completeness3/5

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

The description covers the basic input parameters but lacks information about output or side effects (despite an output schema existing). It does not address validations, edge cases, or interaction with sibling tools, leaving gaps for an AI agent to infer.

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 description adds meaning beyond the schema: it explains sheet index is 0-based, row is 1-based, and count defaults to 1. However, it does not clarify whether insertion occurs before or after the specified row, leaving slight ambiguity.

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 'Insert rows at the given position' with parameters specifying sheet, row, and count. This is a specific verb-resource-action combination that distinguishes it from sibling tools like 'delete_rows'.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives (e.g., insert_columns or add_sheet). No prerequisites or context for invocation are mentioned.

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

load_workbookA

Load a workbook from an xlsx file.

Args: file_path: Absolute path to the .xlsx file locale: Locale code (e.g. en, de, es) timezone: Timezone (e.g. UTC) language: Language code for formulas (e.g. en)

ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathYes
localeNoen
timezoneNoUTC
languageNoen

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

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

No annotations are provided, so the description bears full responsibility. It explains the parameters but lacks details on side effects (e.g., memory usage), error conditions (e.g., file not found), or return behavior. The description is adequate but not thorough.

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 concise and well-structured, with the purpose stated first, followed by a clean Args section. Every sentence adds value without redundancy.

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?

The description covers the tool's purpose and all parameters. While it does not explain the return value, the presence of an output schema likely covers that. Minor missing details like file format support or error handling are acceptable given the tool's simplicity.

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?

Schema description coverage is 0%, so the description must compensate. It clearly explains each parameter: file_path as absolute path, locale as locale code, timezone as timezone string, and language as language code. This adds significant meaning beyond the schema's generic titles.

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 'Load a workbook from an xlsx file,' using a specific verb and resource. It distinguishes from siblings like create_workbook and save_workbook by focusing on loading an existing file.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives, such as create_workbook for new files or get_workbook_info for metadata. It does not mention prerequisites (e.g., file must exist) or when not to use.

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

rename_sheetA

Rename a sheet.

Args: sheet: Sheet index (0-based) name: New sheet name

ParametersJSON Schema
NameRequiredDescriptionDefault
sheetYes
nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior2/5

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

With no annotations, the description carries the full burden. It only states the operation and parameters, but does not disclose behavioral traits such as whether renaming affects references, name length limits, or case sensitivity.

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-line description and clear Args section. Front-loaded with purpose. Every sentence is essential with no waste.

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

Completeness3/5

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

Given no annotations and an output schema that is not described, the description is minimal. For a simple rename, it covers the basics but could mention return value or error conditions.

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 0%, so the description provides the only parameter meaning. It clarifies that 'sheet' is 0-based index and 'name' is the new sheet name, adding value beyond the schema's type-only 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 clearly states 'Rename a sheet,' which is a specific verb-resource pair. It distinguishes from sibling tools like add_sheet or delete_sheet, as renaming is a distinct operation.

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

Usage Guidelines2/5

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

No guidance on when to use this tool vs alternatives. For example, it does not mention constraints like name uniqueness or that the sheet must exist.

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

save_workbookA

Save the current workbook to an xlsx file.

Args: file_path: Path to save to. If omitted, saves to the path it was loaded from.

ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior3/5

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

No annotations are provided. The description implies writing to disk but does not disclose overwrite behavior, permissions, or format support. For a simple save, it is minimally adequate.

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, no unnecessary words. Efficiently conveys purpose and default behavior.

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?

The tool is simple. Description covers the essentials. An output schema exists but is not needed for understanding. Could mention return value, but not critical.

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 0% schema coverage, the description adds value by explaining the default behavior when file_path is omitted, which is not in the schema other than default=null.

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 'Save the current workbook to an xlsx file', specifying the verb and resource. This distinguishes it from sibling tools like create_workbook or load_workbook.

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 explains the default behavior when file_path is omitted, providing useful guidance. However, it lacks explicit when-to-use vs alternatives, but sibling context makes it clear.

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

set_cellA

Set a single cell's value. Use '=' prefix for formulas.

Args: sheet: Sheet index (0-based) row: Row number (1-based) column: Column number (1-based) value: Cell value (text, number, or formula starting with '=')

ParametersJSON Schema
NameRequiredDescriptionDefault
sheetYes
rowYes
columnYes
valueYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior2/5

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

No annotations provided, so description must disclose behaviors. It only states the mutation action without mentioning side effects (e.g., overwriting, recalculation) or whether saving is required. Minimal disclosure.

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 brief, with a clear verb+resource statement followed by a well-formatted argument list. Every sentence is necessary and front-loaded.

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

Completeness3/5

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

For a simple tool with output schema, the description covers the basic functionality and parameter details. However, it omits behavioral context like error conditions, prerequisites (e.g., workbook must be loaded), or post-save requirements. Adequate but not comprehensive.

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?

With 0% schema description coverage, the description fully compensates by explaining each parameter's semantics (e.g., 0-based sheet, 1-based row/column, value types including formulas). This adds significant value 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?

The description explicitly states it sets a single cell's value, distinguishing it from siblings like get_cell (read) and set_cells (multiple cells). The mention of formula prefix adds specificity.

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

Usage Guidelines2/5

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

Provides guidance on using '=' for formulas but lacks context on when to use this tool vs. alternatives (e.g., set_cells for bulk updates). No prerequisites or error handling mentioned.

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

set_cellsA

Set multiple cells in batch. Each entry needs sheet, row, column, value.

Args: cells: List of {sheet: int, row: int, column: int, value: str}

ParametersJSON Schema
NameRequiredDescriptionDefault
cellsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior2/5

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

No annotations provided, and the description only covers input requirements; missing details on overwrite behavior, errors, or return values.

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 concise sentences with an Args list, no unnecessary words, front-loaded with purpose.

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

Completeness3/5

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

Output schema exists but not shown; description lacks detail on side effects, error handling, or prerequisites, though input parameters are well-described.

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?

Schema only defines 'cells' as array of objects with no property constraints; the description specifies exact required fields (sheet, row, column, value) with types, adding critical 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 clearly states 'Set multiple cells in batch' with required fields, differentiating it from the singular sibling 'set_cell'.

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?

Implicitly indicates batch use, and siblings include set_cell for single cell, but no explicit when-not-to-use or alternative guidance.

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

set_column_widthB

Set the width of a column.

Args: sheet: Sheet index (0-based) column: Column number (1-based) width: Column width in points

ParametersJSON Schema
NameRequiredDescriptionDefault
sheetYes
columnYes
widthYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior2/5

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

No annotations provided; description only states the action and parameter details (e.g., units in points). Lacks behavioral traits like persistence requirements or side effects.

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

Conciseness3/5

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

Concise and front-loaded, but the Args section largely repeats schema information. Could be more efficient.

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

Completeness3/5

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

Simple tool with output schema present, so return values not needed. Still lacks any usage context or prerequisites.

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 0%, but description adds value: explains 0-based sheet index, 1-based column number, and width unit (points). Adds meaning beyond raw parameter names.

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?

Description clearly states 'Set the width of a column', a specific verb and resource. This distinguishes it from sibling tools like set_row_height.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives. No when-not-to-use or alternative suggestions provided.

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

set_frozen_columnsA

Freeze the left N columns.

Args: sheet: Sheet index (0-based) count: Number of columns to freeze (0 to unfreeze)

ParametersJSON Schema
NameRequiredDescriptionDefault
sheetYes
countYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description bears full burden. It correctly discloses that count=0 unfreezes columns, but does not discuss error cases or limits. Still, the core behavior is transparently explained.

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-line description with Args section is extremely concise and front-loaded. Every sentence adds value; no wasted words.

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 simplicity and the presence of an output schema (though not shown), the description covers parameter usage and core function. Could add a note about typical use (e.g., freezing header rows), but is sufficient.

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?

Schema coverage is 0%, so description must add meaning. It explains sheet as 0-based index and count as number to freeze (0 to unfreeze), providing essential semantics beyond the raw 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?

Description clearly states 'Freeze the left N columns,' specifying the action and resource. The parameters sheet and count are explained, distinguishing it from sibling tools like set_frozen_rows.

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

Usage Guidelines2/5

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

Description provides no guidance on when to use this tool versus alternatives (e.g., set_frozen_rows). No explicit when-to or when-not-to use context.

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

set_frozen_rowsA

Freeze the top N rows.

Args: sheet: Sheet index (0-based) count: Number of rows to freeze (0 to unfreeze)

ParametersJSON Schema
NameRequiredDescriptionDefault
sheetYes
countYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

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

No annotations are provided, so the description must carry the burden. It explains that count=0 unfreezes rows, implying reversibility, but does not disclose potential side effects or permissions. Adequate for a simple tool but minimal.

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 extremely concise, consisting of two lines of docstring and the tool name. It is front-loaded and every sentence adds value with no wasted words.

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 simplicity (2 parameters, no nested objects), the description covers the essential behavior. An output schema exists, so return values are not needed. It lacks error handling notes but is otherwise complete.

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?

Despite 0% schema description coverage, the description adds clear semantics: sheet is 0-based index, count freezes top N rows (0 to unfreeze). This compensates for the bare schema.

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 description clearly states 'Freeze the top N rows' which identifies the action and resource. It is distinct from sibling tools like set_frozen_columns due to naming, but no explicit differentiation is provided.

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

Usage Guidelines2/5

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

No guidance is given on when to use this tool versus alternatives (e.g., set_frozen_columns). The description does not provide context for appropriate usage or exclusions.

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

set_row_heightA

Set the height of a row.

Args: sheet: Sheet index (0-based) row: Row number (1-based) height: Row height in points

ParametersJSON Schema
NameRequiredDescriptionDefault
sheetYes
rowYes
heightYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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

Lacks annotations; description provides parameter details (0-based/1-based, points) but omits behavior like row existence handling or side effects.

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

Conciseness4/5

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

Concise and straightforward, though slightly verbose with docstring format. Could be trimmed.

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

Completeness3/5

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

Lacks explanation of return value (despite output schema exists), error scenarios, or broader context for a mutation 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 0%; description adds crucial meaning: sheet index 0-based, row 1-based, height in points, which the schema lacks.

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 it sets row height, with specific parameters explained. It distinguishes from sibling tools like set_column_width.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives, no prerequisites or restrictions mentioned.

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

set_sheet_colorA

Set the tab color of a sheet.

Args: sheet: Sheet index (0-based) color: Hex color string (e.g. '#FF0000')

ParametersJSON Schema
NameRequiredDescriptionDefault
sheetYes
colorYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior2/5

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

No annotations are provided, so the description must fully convey behavioral traits. However, the description only states 'Set the tab color' without disclosing whether changes are immediate, reversible, or require saving. It also does not mention if color validation occurs or if any side effects exist.

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 concise with only four lines, using a clear 'Args' section. Every sentence adds value and no unnecessary information is present.

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

Completeness3/5

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

Given the tool's simplicity and the presence of an output schema, the description is moderately complete. However, it lacks behavioral details (immediacy of effect, reversibility) and does not explain the output. For a straightforward setter, this is acceptable but not fully thorough.

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?

The description adds critical context beyond the input schema: it explains that 'sheet' is a 0-based index and gives an example hex color string ('#FF0000'). Since schema property descriptions are absent (0% coverage), the description fully compensates by clarifying both parameters.

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 'Set the tab color of a sheet', combining a specific verb ('Set') and resource ('tab color of a sheet'). Among sibling tools (e.g., add_sheet, rename_sheet, set_cell), this tool's purpose is uniquely distinguishable.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives, nor does it mention prerequisites or exclusions. For example, it does not clarify that this tool changes the sheet tab color rather than cell background colors.

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. 21 tool updatesv0.1.3
    • First observedadd_sheet
    • First observedcreate_workbook
    • First observeddelete_columns
    • First observeddelete_rows
    • First observeddelete_sheet
    • First observedget_cell
    • First observedget_cell_style
    • First observedget_cells
    • First observedget_workbook_info
    • First observedinsert_columns
    • First observedinsert_rows
    • First observedload_workbook
    • First observedrename_sheet
    • First observedsave_workbook
    • First observedset_cell
    • First observedset_cells
    • First observedset_column_width
    • First observedset_frozen_columns
    • First observedset_frozen_rows
    • First observedset_row_height
    • First observedset_sheet_color

TDQS

A3.8/5.0

Scored across 21 tools

Disambiguation5/5

Each tool targets a distinct action and resource (e.g., get_cell vs get_cells vs get_cell_style, delete_columns vs delete_rows vs delete_sheet). There is no overlap in functionality, and descriptions make the purpose clear.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern in snake_case (e.g., add_sheet, create_workbook, get_cell). Even compound names like get_cell_style and get_workbook_info adhere to this pattern, maintaining uniformity.

Tool Count5/5

With 21 tools, the count is well-suited for a spreadsheet server, covering workbook lifecycle, sheet management, cell operations, row/column manipulation, and formatting. It is neither too sparse nor overwhelming.

Completeness4/5

The tool set covers essential CRUD operations for cells, sheets, rows, and columns, plus workbook load/save and basic formatting (column width, row height, freeze panes, sheet color). However, it lacks tools to set cell styles (font, fill, border, alignment) or merge cells, which are notable gaps for a spreadsheet server.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    A Model Context Protocol server that enables AI agents to freely operate Excel spreadsheets, providing tools for workbook creation, cell manipulation, formatting, formula handling, and data export.
    11
    142
    ISC
  • A
    license
    A
    quality
    D
    maintenance
    Enables AI assistants to perform comprehensive Microsoft Excel operations including data analysis, cell editing, advanced formatting, and VBA execution on Windows systems. It provides a structured workflow for managing workbooks and worksheets through a dedicated Model Context Protocol interface.
    5
    142
    4
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to automate Microsoft Excel tasks such as reading/writing cells, formatting, creating charts, and managing sheets through natural language using the Model Context Protocol.
    1
    Apache 2.0