Skip to main content
Glama
hyunjae-labs

xlwings Excel MCP Server

by hyunjae-labs

xlwings-mcp-server

Version Python License MCP

A robust Model Context Protocol (MCP) server for Excel automation using xlwings. This server provides comprehensive Excel file manipulation capabilities through a session-based architecture, designed for high-performance and reliable Excel operations.

๐Ÿš€ Features

Core Capabilities

  • Session-based Architecture: Persistent Excel workbook sessions for optimal performance

  • Comprehensive Excel Operations: Full support for data manipulation, formulas, formatting, and visualization

  • Thread-safe Operations: Concurrent access with per-session locking

  • Automatic Resource Management: TTL-based session cleanup and LRU eviction policies

  • Zero-Error Design: Katherine Johnson principle compliance with comprehensive error handling

Excel Operations

  • Workbook Management: Open, create, list, and close Excel workbooks

  • Worksheet Operations: Create, copy, rename, and delete worksheets

  • Data Manipulation: Read, write, and modify Excel data with full type support

  • Formula Support: Apply and validate Excel formulas with syntax checking

  • Advanced Formatting: Cell styling, conditional formatting, and range formatting

  • Visualization: Chart creation with multiple chart types

  • Table Operations: Native Excel table creation and management

  • Range Operations: Cell merging, copying, and deletion

Related MCP server: Excel MCP Server

๐Ÿ› ๏ธ Installation

Prerequisites

  • Python 3.10 or higher

  • Windows OS (required for xlwings COM integration)

  • Microsoft Excel installed

Using pip

pip install xlwings-mcp-server

From Source

git clone https://github.com/yourusername/xlwings-mcp-server.git
cd xlwings-mcp-server
pip install -e .
uv add xlwings-mcp-server

โšก Quick Start

1. Basic Usage

Start the MCP server:

xlwings-mcp-server

Or run directly:

python -m xlwings_mcp

2. Session-based Workflow

# Example using MCP client
import mcp

# Open a workbook session
session_result = client.call_tool("mcp__xlwings-mcp-server__open_workbook", {
    "filepath": "C:/path/to/your/file.xlsx",
    "visible": False,
    "read_only": False
})

session_id = session_result["session_id"]

# Write data
client.call_tool("mcp__xlwings-mcp-server__write_data_to_excel", {
    "session_id": session_id,
    "sheet_name": "Sheet1",
    "data": [["Name", "Age", "Score"], ["Alice", 25, 95], ["Bob", 30, 87]]
})

# Apply formulas
client.call_tool("mcp__xlwings-mcp-server__apply_formula", {
    "session_id": session_id,
    "sheet_name": "Sheet1",
    "cell": "D2",
    "formula": "=B2+C2"
})

# Create chart
client.call_tool("mcp__xlwings-mcp-server__create_chart", {
    "session_id": session_id,
    "sheet_name": "Sheet1",
    "data_range": "A1:C3",
    "chart_type": "column",
    "target_cell": "E1"
})

# Close session
client.call_tool("mcp__xlwings-mcp-server__close_workbook", {
    "session_id": session_id
})

๐Ÿ”ง Configuration

Environment Variables

# Session management
EXCEL_MCP_SESSION_TTL=600          # Session TTL in seconds (default: 600)
EXCEL_MCP_MAX_SESSIONS=8           # Maximum concurrent sessions (default: 8)
EXCEL_MCP_DEBUG_LOG=1              # Enable debug logging (default: 0)

# Excel settings
EXCEL_MCP_VISIBLE=false            # Show Excel windows (default: false)
EXCEL_MCP_CALC_MODE=automatic      # Calculation mode (default: automatic)

MCP Configuration (.mcp.json)

{
  "name": "xlwings-mcp-server",
  "version": "1.0.0",
  "transport": {
    "type": "stdio"
  },
  "tools": {
    "prefix": "mcp__xlwings-mcp-server__"
  }
}

๐Ÿ“š API Reference

Session Management

  • open_workbook(filepath, visible=False, read_only=False): Create new session

  • close_workbook(session_id): Close session and save workbook

  • list_workbooks(): List active sessions

  • force_close_workbook_by_path(filepath): Force close by file path

Data Operations

  • write_data_to_excel(session_id, sheet_name, data, start_cell=None)

  • read_data_from_excel(session_id, sheet_name, start_cell=None, end_cell=None)

  • apply_formula(session_id, sheet_name, cell, formula)

  • validate_formula_syntax(session_id, sheet_name, cell, formula)

Worksheet Management

  • create_worksheet(session_id, sheet_name)

  • copy_worksheet(session_id, source_sheet, target_sheet)

  • rename_worksheet(session_id, old_name, new_name)

  • delete_worksheet(session_id, sheet_name)

Formatting & Visualization

  • format_range(session_id, sheet_name, start_cell, **formatting_options)

  • create_chart(session_id, sheet_name, data_range, chart_type, target_cell)

  • create_table(session_id, sheet_name, data_range, table_name=None)

Range Operations

  • merge_cells(session_id, sheet_name, start_cell, end_cell)

  • unmerge_cells(session_id, sheet_name, start_cell, end_cell)

  • copy_range(session_id, sheet_name, source_start, source_end, target_start)

  • delete_range(session_id, sheet_name, start_cell, end_cell)

๐Ÿ—๏ธ Architecture

Session-based Design

The server implements a sophisticated session management system:

  • ExcelSessionManager: Singleton pattern managing all Excel sessions

  • Per-session Isolation: Each session has independent Excel Application instance

  • Thread Safety: RLock per session preventing concurrent access issues

  • Resource Management: Automatic cleanup with TTL and LRU policies

  • Error Recovery: Comprehensive error handling and session recovery

Performance Optimizations

  • Session Reuse: Eliminates Excel restart overhead between operations

  • Connection Pooling: Efficient COM object management

  • Batch Operations: Optimized for multiple operations on same workbook

  • Memory Management: Proactive cleanup of Excel processes

๐Ÿงช Testing

Run Tests

# Run all tests
python -m pytest test/

# Run specific test categories  
python -m pytest test/test_session.py      # Session management
python -m pytest test/test_functions.py   # MCP function tests
python -m pytest test/test_integration.py # Integration tests

Test Coverage

The project maintains 100% test coverage for:

  • All MCP tool functions (17 functions tested)

  • Session lifecycle management

  • Error handling and recovery

  • Performance benchmarks

๐Ÿ”’ Security Considerations

  • File System Access: Server operates within specified directory permissions

  • Excel Process Isolation: Each session runs in separate Excel instance

  • Resource Limits: Configurable session limits prevent resource exhaustion

  • Input Validation: All inputs validated before Excel API calls

  • Safe Defaults: Read-only mode available, invisible Excel instances by default

๐Ÿค Contributing

  1. Fork the repository

  2. Create a feature branch (git checkout -b feature/amazing-feature)

  3. Commit your changes (git commit -m 'Add amazing feature')

  4. Push to the branch (git push origin feature/amazing-feature)

  5. Open a Pull Request

Development Setup

git clone https://github.com/yourusername/xlwings-mcp-server.git
cd xlwings-mcp-server
uv venv
uv sync
uv run python -m xlwings_mcp

๐Ÿ“ Changelog

See CHANGELOG.md for detailed version history.

๐Ÿ› Troubleshooting

Common Issues

Excel COM Error: Ensure Excel is properly installed and not running in safe mode

# Check Excel installation
excel --version

Session Not Found: Verify session hasn't expired (default TTL: 10 minutes)

# List active sessions
client.call_tool("mcp__xlwings-mcp-server__list_workbooks")

Permission Denied: Run with appropriate file system permissions

# Windows: Run as administrator if needed

Debug Mode

Enable detailed logging:

export EXCEL_MCP_DEBUG_LOG=1
xlwings-mcp-server

๐Ÿ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

๐Ÿ™ Acknowledgments

  • xlwings - Excellent Python-Excel integration library

  • Model Context Protocol - Standardized AI-tool communication

  • Claude Code - Development assistance

  • Katherine Johnson - Inspiration for zero-error engineering principles

๐Ÿ“ž Support


Made with โค๏ธ for the Excel automation community

Available Tools

29 tools
apply_formulaB
Apply Excel formula to cell.

Args:
    session_id: Session ID from open_workbook (required)
    sheet_name: Name of worksheet
    cell: Cell address (e.g., "A1")
    formula: Excel formula to apply
ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYes
sheet_nameYes
cellYes
formulaYes

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?

The description only states the action without disclosing behavioral details. Without annotations, the agent is not informed about potential side effects (e.g., overwriting cell content), error behavior, or whether the formula is immediately evaluated. The output schema exists but the description does not mention what is returned.

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

Conciseness5/5

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

The description is extremely concise: a one-line verb phrase followed by a clear parameter list. Every sentence earns its place, and the structure is front-loaded with the purpose. No unnecessary 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?

Given 4 required parameters and an output schema, the description covers the basic function but lacks completeness. It does not explain the relationship between this tool and siblings (e.g., when to use apply_formula vs write_data_to_excel), nor does it mention error handling or the need for a valid session. The output schema is present but not leveraged in the description.

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 includes parameter explanations (e.g., 'session_id: Session ID from open_workbook') that add meaning beyond the input schema's type and title. However, the formula parameter is described vaguely as 'Excel formula to apply', missing details like supported syntax or escape rules. With 0% schema description coverage, the description partially compensates but could be more specific.

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 'Apply Excel formula to cell' is a specific verb+resource that clearly states what the tool does. It distinguishes itself from sibling tools like 'validate_formula_syntax' and 'write_data_to_excel' by focusing on formula application. No ambiguity.

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. It does not mention prerequisites (e.g., an active session from open_workbook) or context where other tools like 'write_data_to_excel' might be more appropriate. This lack of usage direction leaves the agent uninformed.

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

close_workbookA
Close a workbook session.

Args:
    session_id: Session ID from open_workbook
    save: Whether to save changes (default: True)
    
Returns:
    Success message
ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYes
saveNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior2/5

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

No annotations provided, and description omits behavioral details such as side effects of closure, behavior on invalid session ID, or whether the operation is reversible.

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?

Description is short and efficient, using a single line for purpose and separate lines for args and returns without unnecessary verbosity.

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?

Adequate for a simple close operation given an output schema exists, but lacks guidance on error handling or prerequisites for use.

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, description clarifies each parameter: session_id is 'Session ID from open_workbook' and save is 'Whether to save changes (default: True)', adding essential meaning 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?

Description clearly states 'Close a workbook session', specifying the verb 'close' and resource 'workbook session', which is distinct from siblings like 'open_workbook' or 'force_close_workbook_by_path_tool'.

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?

Implies usage after open_workbook, but does not explicitly mention prerequisites or contrast with alternatives like force_close for handling stalled sessions.

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

copy_rangeA
Copy a range of cells to another location.

Args:
    sheet_name: Name of source worksheet
    source_start: Starting cell of source range
    source_end: Ending cell of source range
    target_start: Starting cell of target range
    session_id: Session ID from open_workbook (preferred)
    filepath: Path to Excel file (legacy, deprecated)
    target_sheet: Target worksheet (optional, uses source sheet if not provided)
    
Note: Use session_id for better performance. filepath parameter is deprecated.
ParametersJSON Schema
NameRequiredDescriptionDefault
sheet_nameYes
source_startYes
source_endYes
target_startYes
session_idNo
filepathNo
target_sheetNo

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?

With no annotations, the description carries the full burden of behavioral disclosure. It fails to mention what happens on overwrite, formatting preservation, or side effects, focusing only on parameters.

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 well-structured with a purpose line, Args list, and note, though the note could be integrated for brevity.

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 complexity and the presence of an output schema, the description covers parameters adequately but misses prerequisites (e.g., workbook must be open) and edge cases.

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 the description provides brief explanations for each parameter (e.g., 'Name of source worksheet'), adding meaning beyond the schema 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 the action ('Copy a range of cells to another location') with a specific verb and resource, distinguishing it from sibling tools like delete_range or format_range.

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

Usage Guidelines4/5

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

The description includes a note on preferring session_id over deprecated filepath, providing context for parameter choice, but does not explicitly state when to use this tool versus alternatives or exclude scenarios.

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

copy_worksheetC
Copy worksheet within workbook.

Args:
    session_id: Session ID from open_workbook (required)
    source_sheet: Name of the source worksheet
    target_sheet: Name of the target worksheet
ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYes
source_sheetYes
target_sheetYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.8/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 it copies formatting, validation rules, or data behavior. For a mutation tool, this is a significant gap.

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

Conciseness2/5

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

Although short, the description redundantly lists parameters that are already defined in the input schema, wasting valuable description space that could provide additional context.

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 has 3 required parameters and no annotations, the description omits crucial details like expected return values, behavior on name conflicts, and whether the target sheet must exist or is created.

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

Parameters2/5

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

Schema description coverage is 0%, and the description adds no meaning beyond parameter names (e.g., 'Name of the source worksheet'). No constraints, formats, or required formats are specified.

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 'Copy worksheet within workbook' using a specific verb and resource, distinguishing it from sibling tools like rename_worksheet or delete_worksheet.

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, nor any prerequisites or exclusions. The description merely lists parameters without contextual usage advice.

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

create_chartB
Create chart in worksheet.

Args:
    sheet_name: Name of worksheet
    data_range: Data range for chart
    chart_type: Type of chart
    target_cell: Cell where chart will be placed
    session_id: Session ID from open_workbook (preferred)
    filepath: Path to Excel file (legacy, deprecated)
    title: Chart title (optional)
    x_axis: X-axis label (optional)
    y_axis: Y-axis label (optional)
    
Note: Use session_id for better performance. filepath parameter is deprecated.
ParametersJSON Schema
NameRequiredDescriptionDefault
sheet_nameYes
data_rangeYes
chart_typeYes
target_cellYes
session_idNo
filepathNo
titleNo
x_axisNo
y_axisNo

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 behavioral traits. It only says 'create chart' without mentioning side effects (e.g., overwriting existing charts), permission needs, or error states. This is insufficient for a creation 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 succinct with a clear first sentence followed by a parameter list. No unnecessary information. It could be more structured (e.g., grouping optional params), but it's acceptably concise.

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 9 parameters and the presence of an output schema, the description is incomplete. It does not explain return values, prerequisites (e.g., workbook must be open), or error handling. The output schema exists but is unmentioned.

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

Parameters3/5

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

Schema description coverage is 0%, so the description adds meaning by labeling each parameter (e.g., 'Name of worksheet'). However, the descriptions are very brief and lack validation details, types, or examples. Baseline 3 due to low coverage.

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 'Create chart in worksheet' with a verb and resource. It distinguishes from siblings (no other chart creation tool) and lists parameters. However, it does not elaborate on different chart types or variations.

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

Usage Guidelines3/5

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

The description advises using session_id for better performance and notes filepath is deprecated. However, it provides no guidance on when to choose this tool over other tools (e.g., create_pivot_table, create_table) or context for chart creation.

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

create_pivot_tableA
Create pivot table in worksheet.

Args:
    sheet_name: Name of worksheet containing source data
    data_range: Source data range (e.g., "A1:E100" or "Sheet2!A1:E100")
    rows: Field names for row labels
    values: Field names for values
    session_id: Session ID from open_workbook (preferred)
    filepath: Path to Excel file (legacy, deprecated)
    columns: Field names for column labels (optional)
    agg_func: Aggregation function (sum, count, average, max, min)
    target_sheet: Target sheet for pivot table (optional, auto-created if not exists)
    target_cell: Target cell for pivot table (optional, finds empty area if not provided)
    pivot_name: Custom name for pivot table (optional, auto-generated if not provided)
    
Note: Use session_id for better performance. filepath parameter is deprecated.
ParametersJSON Schema
NameRequiredDescriptionDefault
sheet_nameYes
data_rangeYes
rowsYes
valuesYes
session_idNo
filepathNo
columnsNo
agg_funcNomean
target_sheetNo
target_cellNo
pivot_nameNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

No annotations provided, so description carries the behavioral disclosure burden. It notes that session_id is preferred over filepath (deprecated), explains auto-creation of target_sheet, auto-finding of target_cell, and auto-generation of pivot_name. However, it does not explicitly state that this operation modifies the workbook or require permissions.

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 structured as a clear bullet list with each parameter explained in one line. It is concise without fluff, though the 'Args:' prefix is slightly redundant. Still well-organized 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?

Given 11 parameters, 4 required, no annotations, and an output schema exists, the description covers all parameter behaviors adequately. It does not explain return values, but that is mitigated by the output schema presence.

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 fully explains each parameter's meaning, including optionality, defaults, deprecation of filepath, and examples for data_range. This is critical value-added 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 'Create pivot table in worksheet', a specific verb-resource combination. It distinguishes from sibling tools like create_chart and create_table by focusing on pivot table creation.

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

Usage Guidelines3/5

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

The description provides parameter explanations but no explicit guidance on when to use this tool versus alternatives like create_table or apply_formula. Usage context is implied by the parameter list, but no when-not-to-use or prerequisite conditions are mentioned.

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

create_tableA
Creates a native Excel table from a specified range of data.

Args:
    sheet_name: Name of worksheet
    data_range: Range of data to create table from
    session_id: Session ID from open_workbook (preferred)
    filepath: Path to Excel file (legacy, deprecated)
    table_name: Name for the table (optional)
    table_style: Style for the table (optional)
    
Note: Use session_id for better performance. filepath parameter is deprecated.
ParametersJSON Schema
NameRequiredDescriptionDefault
sheet_nameYes
data_rangeYes
session_idNo
filepathNo
table_nameNo
table_styleNoTableStyleMedium9

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 exist. The description focuses on parameters but does not disclose behavioral traits such as whether the tool modifies the workbook, error handling, or performance implications. It only mentions deprecation.

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 the main purpose front-loaded. The parameter list and note are clear, though a more structured format could improve readability.

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?

An output schema exists, so return values need not be described. However, the description lacks behavioral context (e.g., what happens on invalid range or missing sheet) and does not cover all aspects for a creation 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?

With 0% schema description coverage, the description adds meaning by explaining each parameter (e.g., 'Name of worksheet', 'Range of data to create table from'). It notes session_id is preferred and filepath deprecated, adding value beyond 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 clearly states the verb 'Creates' and the resource 'native Excel table from a specified range of data.' It distinguishes from sibling tools like create_chart or create_pivot_table.

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

Usage Guidelines3/5

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

The description provides parameter context and notes session_id as preferred over deprecated filepath, but does not explicitly state when to use this tool versus alternatives 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.

create_workbookB
Create new Excel workbook.

Args:
    session_id: Session ID for creating workbook in existing session (optional)
    filepath: Path to create new Excel file (legacy, deprecated)
    
Note: Use session_id for better performance. filepath parameter is deprecated.
ParametersJSON Schema
NameRequiredDescriptionDefault
session_idNo
filepathNo

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 exist, so the description must carry the full burden. It does not disclose whether the tool overwrites existing files, requires specific permissions, or has side effects like saving to disk. The note about session_id hints at session association but lacks clarity.

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 two sentences for purpose and two lines for parameters. It is front-loaded with the core purpose, but could be more structured (e.g., separate usage and notes sections). Still, no redundancy.

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 partially complete. It lacks details on error conditions, prerequisites (e.g., need for an open session), and what the output contains. For a creation tool, this is a moderate 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?

With 0% schema description coverage, the description adds meaningful context: session_id is for existing sessions, filepath is deprecated. This goes beyond mere type information, though more detail (e.g., format of session_id) would be helpful.

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 'Create new Excel workbook' clearly states the verb and resource, distinguishing it from siblings like open_workbook (opens existing) and create_worksheet (creates sheet within workbook).

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 almost no guidance on when to use this tool versus alternatives. It mentions a deprecation note for filepath and recommends session_id, but does not discuss selection criteria among sibling tools.

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

create_worksheetC
Create new worksheet in workbook.

Args:
    session_id: Session ID from open_workbook (required)
    sheet_name: Name of the new worksheet
ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYes
sheet_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/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 of behavioral disclosure. It only states it creates a worksheet, but omits any side effects, constraints (e.g., duplicate sheet names), or return value details. The existence of an output schema is not utilized in the description.

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 the purpose. The args are listed concisely. While there is some redundancy (the 'Args' section repeats parameter names), it is still efficient and easily parsed.

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 (not shown but known), the description is adequate but not fully complete. It does not cover error cases (e.g., invalid session, duplicate sheet name) or confirm what is returned, leaving some gaps for an agent.

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 schema has 0% description coverage, but the description adds brief explanations for both parameters: session_id is 'Session ID from open_workbook' and sheet_name is 'Name of the new worksheet'. This adds some value beyond the schema's type and title, though it remains minimal.

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 tool creates a new worksheet in a workbook, which is distinct from sibling tools like rename_worksheet or delete_worksheet. However, it does not explicitly differentiate from create_workbook, but contextually the session_id parameter implies an existing workbook.

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 is provided. The description mentions session_id from open_workbook implicitly, but does not state prerequisites or scenarios where this tool should be used or avoided.

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

delete_rangeA
Delete a range of cells and shift remaining cells.

Args:
    sheet_name: Name of worksheet
    start_cell: Starting cell
    end_cell: Ending cell
    session_id: Session ID from open_workbook (preferred)
    filepath: Path to Excel file (legacy, deprecated)
    shift_direction: Direction to shift cells ("up" or "left")
    
Note: Use session_id for better performance. filepath parameter is deprecated.
ParametersJSON Schema
NameRequiredDescriptionDefault
sheet_nameYes
start_cellYes
end_cellYes
session_idNo
filepathNo
shift_directionNoup

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?

Without annotations, the description bears full responsibility. It states the deletion and shifting effect, but does not disclose whether the workbook must be open, if the operation is reversible, or any side effects. The deprecated filepath note is insufficient.

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 overview followed by a bullet-style parameter list. No redundant information, and the deprecated note is appropriately placed.

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 existence of an output schema, the absence of return value description is acceptable. The param explanations are thorough, but the description could mention the required prerequisite of an open workbook session.

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 explain parameters. It provides clear explanations for all six parameters, including acceptable values for shift_direction ('up' or 'left'), and notes about session_id preference and filepath deprecation. This adds significant value.

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 a range of cells' and the resource 'range of cells'. It is specific enough to distinguish from row/column deletion siblings, though it does not explicitly differentiate.

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 like delete_sheet_rows or delete_sheet_columns. The note about session_id is parameter guidance, not usage context. No prerequisites or exclusions mentioned.

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

delete_sheet_columnsB
Delete one or more columns starting at the specified column.

Args:
    sheet_name: Name of worksheet
    start_col: Column number to start deleting from
    session_id: Session ID from open_workbook (preferred)
    filepath: Path to Excel file (legacy, deprecated)
    count: Number of columns to delete
    
Note: Use session_id for better performance. filepath parameter is deprecated.
ParametersJSON Schema
NameRequiredDescriptionDefault
sheet_nameYes
start_colYes
session_idNo
filepathNo
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 fully disclose behavioral traits. The description mentions deletion and deprecation of filepath, but does not specify the precise effect on the spreadsheet (e.g., columns shift left), whether the action is irreversible, performance implications, or required permissions. This leaves significant gaps in understanding the tool's behavior.

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, using a single paragraph with a bullet-like list to enumerates parameters. The purpose is front-loaded in the first sentence. Minor improvement could be to separate purpose and parameter details more clearly, but overall it is efficient and to the point.

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?

Despite having an output schema, the description does not mention return values or error conditions (e.g., invalid sheet name, out-of-range column). Given the tool is destructive and has 5 parameters with no annotations, the description should cover potential issues and expected outputs to be complete.

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?

With 0% schema description coverage, the description adds meaningful context by listing parameters with brief explanations and noting that session_id is preferred over filepath. However, it does not clarify key details like whether start_col is 0-indexed or 1-indexed, or the exact effect of the count parameter on which columns are deleted.

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 one or more columns') and the resource ('columns starting at the specified column'), making the purpose unambiguous. It effectively distinguishes this from sibling tools like delete_sheet_rows, which operate on rows instead.

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 lacks guidance on when to use this tool versus other deletion tools (e.g., delete_range, delete_sheet_rows). It only hints at preferring session_id over filepath, but does not specify prerequisites, such as requiring an open workbook, or when alternatives would be more appropriate.

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

delete_sheet_rowsB
Delete one or more rows starting at the specified row.

Args:
    sheet_name: Name of worksheet
    start_row: Row number to start deleting from
    session_id: Session ID from open_workbook (preferred)
    filepath: Path to Excel file (legacy, deprecated)
    count: Number of rows to delete
    
Note: Use session_id for better performance. filepath parameter is deprecated.
ParametersJSON Schema
NameRequiredDescriptionDefault
sheet_nameYes
start_rowYes
session_idNo
filepathNo
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, so the description must disclose all behavioral traits. It mentions deprecation of filepath and performance preference for session_id, but does not state that the operation is destructive, irreversible, or requires an open workbook. Missing key behavioral details for a deletion tool.

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

Conciseness5/5

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

The description is concise: a single sentence for purpose, bulleted args, and a note. No wasted words, well-organized, and front-loaded. Every sentence adds value.

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?

Despite having an output schema (missing details), the description omits prerequisites (open workbook), side effects (persistence), and distinguishes from siblings. For a deletion tool with 5 parameters and no annotations, this is incomplete for reliable agent use.

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

Parameters3/5

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

Schema description coverage is 0%, so the description provides the only parameter documentation. Each parameter has a brief description (e.g., 'Name of worksheet', 'Row number to start deleting from'). Adds context like 'preferred' and 'deprecated' for session_id and filepath. Adequate but not rich.

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 'Delete one or more rows starting at the specified row.' It uses a specific verb (delete) and resource (rows), making the purpose unambiguous. It naturally distinguishes from sibling tools like delete_sheet_columns by specifying '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 explicit guidance on when to use this tool versus alternatives like delete_sheet_columns or delete_range. The note about preferring session_id over filepath is internal tool guidance, not selection guidance among siblings. The agent must infer usage context.

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

delete_worksheetB
Delete worksheet from workbook.

Args:
    session_id: Session ID from open_workbook (required)
    sheet_name: Name of the worksheet to delete
ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYes
sheet_nameYes

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. The description states it deletes a worksheet, implying a destructive action, but does not disclose whether the deletion is permanent, if it requires special permissions, or what the return value indicates (e.g., success/failure).

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 two sentences for the main purpose and two bullet points for parameters. The structure is efficient, though the parameter descriptions could be integrated more smoothly.

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?

For a deletion tool with no annotations and a present output schema, the description lacks completeness. It does not explain the output, error handling, or behavior when the worksheet does not exist, leaving the agent with insufficient context.

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?

With 0% schema description coverage, the description adds meaning: it clarifies session_id as obtained from open_workbook and sheet_name as the worksheet name. However, it does not specify formats or constraints (e.g., sheet_name must exist).

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 worksheet') and the resource ('workbook'), with a specific verb that distinguishes it from sibling tools like copy_worksheet or rename_worksheet.

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 (e.g., delete_range, clear contents). There is no mention of prerequisites, such as the worksheet being empty or not protected.

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

force_close_workbook_by_path_toolA
Force close a specific workbook by file path (without saving).

Args:
    filepath: Path to the workbook to force close
    
Returns:
    Dictionary with 'closed' (bool) and 'message' (str)
ParametersJSON Schema
NameRequiredDescriptionDefault
filepathYes

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?

No annotations exist, so the description must fully disclose behavior. It mentions 'force close' and 'without saving', but does not explicitly warn that unsaved changes will be lost. For a simple tool, this 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.

Conciseness4/5

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

The description is very concise with a single core sentence and structured Args/Returns. The Args line is redundant given the schema, but overall it is well-structured 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?

For a simple one-parameter tool with an output schema, the description covers the essential purpose, parameter, and return. It lacks guidance on when to use this over 'close_workbook' and a warning about data loss, but is largely complete.

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

Parameters2/5

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

The description says 'Path to the workbook to force close', which adds minimal meaning beyond the schema's type 'string'. With 0% schema description coverage, more detail (e.g., format, requirement that workbook is open) would be expected.

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 'force close', the resource 'workbook', and the key qualifier 'by file path (without saving)'. This distinguishes it from sibling 'close_workbook' which likely saves changes.

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

Usage Guidelines3/5

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

The description implies usage when you want to discard changes by saying 'without saving', but it does not explicitly contrast with 'close_workbook' or provide when-not-to-use guidance. No alternatives are mentioned.

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

format_rangeB
Apply formatting to a range of cells.

Args:
    sheet_name: Name of worksheet
    start_cell: Starting cell
    session_id: Session ID from open_workbook (preferred)
    filepath: Path to Excel file (legacy, deprecated)
    end_cell: Ending cell (optional)
    bold: Apply bold formatting
    italic: Apply italic formatting
    underline: Apply underline formatting
    font_size: Font size
    font_color: Font color
    bg_color: Background color
    border_style: Border style
    border_color: Border color
    number_format: Number format
    alignment: Text alignment
    wrap_text: Enable text wrapping
    merge_cells: Merge cells in range
    protection: Cell protection settings (optional)
    conditional_format: Conditional formatting settings (optional)
    
Note: Use session_id for better performance. filepath parameter is deprecated.
ParametersJSON Schema
NameRequiredDescriptionDefault
sheet_nameYes
start_cellYes
session_idNo
filepathNo
end_cellNo
boldNo
italicNo
underlineNo
font_sizeNo
font_colorNo
bg_colorNo
border_styleNo
border_colorNo
number_formatNo
alignmentNo
wrap_textNo
merge_cellsNo
protectionNo
conditional_formatNo

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 are provided, so the description bears the full burden. It mentions applying formatting but does not disclose whether it overwrites existing formatting, whether the operation is reversible, or any side effects. For a tool with many parameters, more behavioral context is needed.

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?

The description is front-loaded with a clear purpose statement, but the bulk is a repetitive parameter list that largely mirrors the schema. The note at the end is concise. It could be more streamlined by grouping similar parameters, but it is not excessively verbose.

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 complexity (19 parameters, no annotations, but an output schema exists), the description covers all parameters and includes a useful deprecation note. However, it lacks guidance on when to use this tool versus siblings like merge_cells, and does not describe return values or behavioral impacts. It is adequate but not comprehensive.

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 the description's 'Args' section lists all 19 parameters with brief explanations (e.g., 'bold: Apply bold formatting'), adding semantics beyond the schema's property titles. The deprecation note for filepath is also helpful. However, some explanations are minimal (e.g., 'alignment: Text alignment' without allowed values).

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 'Apply formatting to a range of cells', using a specific verb ('Apply formatting') and resource ('range'). This distinguishes it from siblings that perform other operations like deleting ranges or merging 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?

The description includes a note advising to use 'session_id for better performance' and marks 'filepath' as deprecated, but it does not provide guidance on when to use this tool versus alternative formatting or range tools, such as merge_cells or delete_range.

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

get_data_validation_infoA
Get all data validation rules in a worksheet.

This tool helps identify which cell ranges have validation rules
and what types of validation are applied.

Args:
    sheet_name: Name of worksheet
    session_id: Session ID from open_workbook (preferred)
    filepath: Path to Excel file (legacy, deprecated)
    
Note: Use session_id for better performance. filepath parameter is deprecated.
    
Returns:
    JSON string containing all validation rules in the worksheet
ParametersJSON Schema
NameRequiredDescriptionDefault
sheet_nameYes
session_idNo
filepathNo

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?

With no annotations provided, the description must disclose all behavioral traits. It only states that the tool returns a JSON string of validation rules, but does not mention side effects (e.g., read-only, no modifications), required permissions, or error conditions. This leaves significant gaps for a read operation.

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?

The description is reasonably concise, but the Args section redundantly lists parameters already in the schema. The core purpose is front-loaded. Some words could be trimmed without loss.

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 (3 parameters, output schema exists), the description covers the essential purpose and key parameter guidance. The return type is stated, though the output schema itself provides more detail. Missing behavioral transparency is the main 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?

Schema description coverage is 0%, so the description must compensate. It adds value by noting that session_id is preferred for better performance and filepath is deprecated, which goes beyond the schema's type information. However, it does not describe the format of sheet_name or any constraints.

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 all data validation rules in a worksheet' with additional context about identifying ranges and validation types. This verb+resource combination is specific and distinct from sibling tools like validate_excel_range.

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

Usage Guidelines3/5

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

The description implies usage by explaining what the tool does, but does not explicitly state when to use it over alternatives like validate_excel_range or validate_formula_syntax. No exclusions or context for when-not-to-use are provided.

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

get_merged_cellsA
Get merged cells in a worksheet.

Args:
    sheet_name: Name of worksheet
    session_id: Session ID from open_workbook (preferred)
    filepath: Path to Excel file (legacy, deprecated)
    
Note: Use session_id for better performance. filepath parameter is deprecated.
ParametersJSON Schema
NameRequiredDescriptionDefault
sheet_nameYes
session_idNo
filepathNo

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?

No annotations are provided, so the description carries the full burden. It implies a read-only operation ('Get') but does not explicitly confirm no side effects, mention permissions, or error cases. The parameter note adds some context but overall transparency is limited.

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?

Description is concise with a clear first sentence stating purpose, followed by parameter explanations in a list. The note is relevant and placed at the end. Slightly more could be trimmed, but overall 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?

Given the output schema exists (not shown), description need not detail return values. However, it lacks prerequisites such as requiring an open workbook or valid worksheet name. For a simple getter with three parameters, the description is adequate but could be more complete about tool usage 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%, so the description adds significant meaning by explaining each parameter's purpose: sheet_name as worksheet name, session_id as preferred from open_workbook, and filepath as legacy deprecated. This goes beyond the schema's name and type.

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 'Get merged cells in a worksheet' with specific verb and resource. It distinguishes from siblings like 'merge_cells' and 'unmerge_cells' which perform different actions.

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

Usage Guidelines4/5

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

The description provides guidance on parameter usage, recommending session_id over the deprecated filepath. However, it does not explicitly state when to use this tool versus alternatives, though the purpose is clear enough for a simple getter.

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

get_workbook_metadataA
Get metadata about workbook including sheets, ranges, etc.

Args:
    session_id: Session ID from open_workbook (required)
    include_ranges: Whether to include range information
ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYes
include_rangesNo

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 provided, the description carries the full burden. It does not disclose whether the tool is read-only, its side effects (likely none), error behavior, or any prerequisites beyond the session_id. The limited behavioral information is a significant gap.

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 uses a clear list for arguments. Every sentence is meaningful, though the structure could be improved by separating the purpose statement from the arguments more formally.

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 params, no nested objects) and the presence of an output schema (which documents return values), the description is sufficient. It covers the tool's purpose and parameters, leaving details about return structure to the output schema.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must add meaning. It explains session_id as 'Session ID from open_workbook (required)' and include_ranges as 'Whether to include range information', adding context beyond the schema fields. However, it does not specify what range information entails or the format required for session_id.

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

Purpose5/5

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

The description clearly states the tool gets workbook metadata including sheets and ranges, using specific verb 'Get' and resource 'workbook metadata'. It distinguishes itself from sibling tools (e.g., read_data_from_excel, validate_excel_range) by focusing on overall workbook structure.

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

Usage Guidelines3/5

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

The description implies usage by requiring a session_id from open_workbook, but it does not explicitly state when to use this tool versus alternatives, nor does it provide guidance on 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.

insert_columnsB
Insert one or more columns starting at the specified column.

Args:
    sheet_name: Name of worksheet
    start_col: Column number to start inserting at
    session_id: Session ID from open_workbook (preferred)
    filepath: Path to Excel file (legacy, deprecated)
    count: Number of columns to insert
    
Note: Use session_id for better performance. filepath parameter is deprecated.
ParametersJSON Schema
NameRequiredDescriptionDefault
sheet_nameYes
start_colYes
session_idNo
filepathNo
countNo

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 are provided, so the description carries the full burden. It does not disclose behavioral traits such as whether inserting columns shifts existing data, what happens with merged cells, or any side effects. The note about deprecation is helpful but insufficient for a data-modifying operation.

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 a clear opening sentence, structured Args list, and a brief note. Every sentence adds value without redundancy. It front-loads the core 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?

Given the 5 parameters, no annotations, and 0% schema coverage, the description covers the purpose and highlights the preferred parameter. However, it lacks explanation of the output schema and potential error conditions, leaving some gaps for a complete understanding.

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 includes an Args section that lists and explains each parameter (sheet_name, start_col, session_id, filepath, count), adding value over the schema which has 0% description coverage. However, it lacks specifics like indexing (1-based vs 0-based) or constraints on count.

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 states 'Insert one or more columns starting at the specified column', which clearly identifies the action and resource. However, it does not differentiate from sibling tools like 'insert_rows' or 'delete_sheet_columns', leaving ambiguity about when to use this specific tool.

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

Usage Guidelines3/5

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

The note about preferring session_id over deprecated filepath provides parameter guidance, but no explicit direction on when to use this tool versus alternatives like 'insert_rows'. The usage context is implied but not fully articulated.

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

insert_rowsA
Insert one or more rows starting at the specified row.

Args:
    sheet_name: Name of worksheet
    start_row: Row number to start inserting at
    session_id: Session ID from open_workbook (preferred)
    filepath: Path to Excel file (legacy, deprecated)
    count: Number of rows to insert
    
Note: Use session_id for better performance. filepath parameter is deprecated.
ParametersJSON Schema
NameRequiredDescriptionDefault
sheet_nameYes
start_rowYes
session_idNo
filepathNo
countNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/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 carry full behavioral transparency. It does not state side effects like shifting existing rows, impact on merged cells or formatting, or any performance considerations. The agent lacks key 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 concise with a clear purpose sentence, a list of arguments, and a brief note. Every sentence adds value with no redundancy.

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 purpose and parameters adequately, but lacks behavioral context (see transparency) and usage guidelines. With an output schema existing, return values are not needed, but the tool's impact is insufficiently described.

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 coverage, the description explains each parameter's role (e.g., 'Number of rows to insert' for count) and notes deprecation of filepath. This adds significant meaning beyond the schema 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 'Insert one or more rows starting at the specified row.' This uses a specific verb and resource, and distinguishes the tool from siblings like insert_columns or delete_sheet_rows.

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

Usage Guidelines3/5

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

The description recommends using session_id over filepath for better performance, but does not provide explicit when-to-use or when-not-to-use guidance relative to other tools. No exclusions or alternatives are mentioned.

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

list_workbooksA
List all open workbook sessions.

Returns:
    List of session information dictionaries
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It only states it lists open sessions, with no mention of behavioral traits like permissions, side effects, or performance implications. For a read-only list operation, this is minimal but not harmful.

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 two sentences, no redundant information, and the key action is stated first. Every sentence adds value.

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

Completeness5/5

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

For a tool with no parameters and an output schema, the description sufficiently explains the purpose and return type. No additional context is needed.

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?

There are zero parameters, so the description need not add parameter details. The baseline score of 4 is appropriate as there is nothing missing.

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 lists all open workbook sessions, using a specific verb ('list') and resource ('open workbook sessions'). It distinguishes from other sibling tools that create, close, or modify workbooks.

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 or when not to use this tool versus alternatives. However, since it's the only list tool among siblings, the usage is implied. A score of 3 reflects the lack of explicit context.

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

merge_cellsB
Merge a range of cells.

Args:
    sheet_name: Name of worksheet
    start_cell: Starting cell
    end_cell: Ending cell
    session_id: Session ID from open_workbook (preferred)
    filepath: Path to Excel file (legacy, deprecated)
    
Note: Use session_id for better performance. filepath parameter is deprecated.
ParametersJSON Schema
NameRequiredDescriptionDefault
sheet_nameYes
start_cellYes
end_cellYes
session_idNo
filepathNo

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 should fully disclose behavioral traits. It fails to mention side effects (e.g., cell content handling), constraints (e.g., adjacent cells only), or return values for this mutation operation.

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 two sentences, and the parameters are listed in a structured args block. The note about session_id is efficient, but the overall structure could be more front-loaded.

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 no annotations, schema descriptions, and a true output schema (not provided), the description misses crucial context: prerequisites, error conditions, and return value info for a transformation tool modifying workbook state.

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

Parameters3/5

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

Schema coverage is 0%, so the description compensates with basic parameter semantics (e.g., 'Name of worksheet', 'Starting cell'). However, it lacks detail on formats (e.g., 'A1' notation) and does not explain all parameters beyond the args list.

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 tool merges a range of cells, with a specific verb and resource. However, it does not differentiate from sibling tools like unmerge_cells or format_range, which could also involve cell merging.

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

Usage Guidelines3/5

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

The description provides guidance on parameter preference (session_id over filepath) and deprecation, but lacks context on when to use this tool vs alternatives like unmerge_cells or prerequisites (e.g., requiring an open workbook).

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

open_workbookB
Open an Excel workbook and create a session.

Args:
    filepath: Path to Excel file
    visible: Whether to show Excel window (default: False)
    read_only: Whether to open in read-only mode (default: False)
    
Returns:
    Dictionary with session_id, filepath, visible, read_only, and sheets
ParametersJSON Schema
NameRequiredDescriptionDefault
filepathYes
visibleNo
read_onlyNo

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?

The description mentions 'create a session' but does not explain what a session entails (e.g., duration, locking, concurrency limits). No annotations are provided, so the description carries the full burden but fails to disclose key behavioral traits like mutability or error conditions.

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 a clear docstring format (Args, Returns). The first sentence effectively summarizes the tool. Minor repetition of default values already in the schema.

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 documents return values, the description covers basics but misses important context like session management, concurrency issues, and error handling. It is adequate but not comprehensive.

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?

With 0% schema coverage, the description compensates by explaining each parameter's purpose (filepath, visible, read_only) beyond type/default. However, it lacks details like acceptable file path formats or implications of read_only on editing.

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 opens an Excel workbook and creates a session, distinguishing it from sibling tools like create_workbook (creates new) and close_workbook (closes). The verb+resource is specific and unambiguous.

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 such as create_workbook or read_data_from_excel. It does not mention prerequisites, file state (e.g., already open), or conditions for optimal use.

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

read_data_from_excelA
Read data from Excel worksheet with cell metadata including validation rules.

Args:
    session_id: Session ID from open_workbook (required)
    sheet_name: Name of worksheet
    start_cell: Starting cell (default A1)
    end_cell: Ending cell (optional, auto-expands if not provided)
    preview_only: Whether to return preview only
ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYes
sheet_nameYes
start_cellNo
end_cellNo
preview_onlyNo

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?

No annotations are provided, so the description carries full burden. It states the tool reads data without mutation, but lacks details on side effects, concurrency behavior, or performance implications. Basic transparency is present but incomplete.

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 two introductory sentences and a well-structured parameter list. No redundant information, and each part contributes to understanding the tool's usage.

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 has an output schema, the description does not need to detail return values. However, it could be more complete by explaining what cell metadata includes or how preview_only affects the output. Overall, it sufficiently covers the main aspects.

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 adds value by explaining each parameter's role, including defaults (start_cell=A1), auto-expansion for end_cell, and the preview_only boolean. This goes beyond the schema's type-only information.

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

Purpose5/5

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

The description clearly states the tool reads data from an Excel worksheet with cell metadata including validation rules. This distinguishes it from sibling tools like get_data_validation_info or validate_excel_range by focusing on data reading with metadata.

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

Usage Guidelines3/5

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

The description implies usage through parameter descriptions but does not explicitly state when to use this tool versus alternatives like validate_excel_range or get_workbook_metadata. No exclusion criteria or when-not-to-use guidance is provided.

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

rename_worksheetB
Rename worksheet in workbook.

Args:
    session_id: Session ID from open_workbook (required)
    old_name: Current name of the worksheet
    new_name: New name for the worksheet
ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYes
old_nameYes
new_nameYes

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 rename is reversible, if it triggers any side effects, or if specific permissions are needed. It simply states the 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 short and to the point, but includes an Args section that is somewhat verbose for a tool description. Could be more concise by integrating parameter details inline.

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 presence of an output schema (not detailed here), the description adequately covers the basics but lacks usage context and differentiation from similar tools. It is minimally complete for a simple rename operation.

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

Parameters3/5

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

Schema description coverage is 0%, but the description adds minimal meaning by explaining session_id as 'from open_workbook (required)' and naming the other parameters. However, it lacks details like valid name formats or constraints.

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 worksheet in workbook', which is a specific verb and resource. It distinguishes itself from sibling tools like copy_worksheet or delete_worksheet.

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, or any prerequisites beyond the session_id being from open_workbook. Does not mention that the worksheet must exist or that old_name must match exactly.

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

unmerge_cellsA
Unmerge a range of cells.

Args:
    sheet_name: Name of worksheet
    start_cell: Starting cell
    end_cell: Ending cell
    session_id: Session ID from open_workbook (preferred)
    filepath: Path to Excel file (legacy, deprecated)
    
Note: Use session_id for better performance. filepath parameter is deprecated.
ParametersJSON Schema
NameRequiredDescriptionDefault
sheet_nameYes
start_cellYes
end_cellYes
session_idNo
filepathNo

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?

No annotations provided. Description lacks details on behavioral traits such as what happens if cells are not merged, whether it modifies the workbook, or required permissions. Minimal disclosure beyond the action.

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: one-line purpose, parameter list, and a note. No redundant text. Front-loaded with the action.

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?

Covers purpose and parameter purposes, but lacks behavioral context, error conditions, or what happens on success. Output schema exists but not detailed in description. Adequate for a simple 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?

Adds meaning beyond the schema by listing parameters with brief explanations and a note about preferring session_id. However, does not specify cell reference format (e.g., 'A1' style). Schema coverage is 0%, so description compensates well.

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 'Unmerge a range of cells', providing a specific verb and resource. It naturally distinguishes from sibling tool 'merge_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 on when to use this tool vs alternatives. Only provides parameter preference advice (session_id over filepath), not tool selection context.

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

validate_excel_rangeC
Validate if a range exists and is properly formatted.

Args:
    sheet_name: Name of worksheet
    start_cell: Starting cell
    session_id: Session ID from open_workbook (preferred)
    filepath: Path to Excel file (legacy, deprecated)
    end_cell: Ending cell (optional)
    
Note: Use session_id for better performance. filepath parameter is deprecated.
ParametersJSON Schema
NameRequiredDescriptionDefault
sheet_nameYes
start_cellYes
session_idNo
filepathNo
end_cellNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

No annotations exist, so the description must fully disclose behavior. It does not mention what happens when validation fails, whether the tool is read-only, or any side effects. The output schema exists but the description does not explain the return value.

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 short and well-structured with an Args list and a note. However, the Args list largely repeats the schema, so it could be more concise by focusing on additional context.

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 has 5 parameters and no annotations, the description lacks details on validation criteria and behavior. The output schema exists, so return value details are not required, but contextual completeness suffers from missing edge-case information.

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

Parameters3/5

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

Schema coverage is 0%, so the description must compensate. It lists parameters but only adds minimal value beyond names: specifying that session_id is preferred and filepath is deprecated. This is helpful but insufficient for full clarity.

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 'Validate if a range exists and is properly formatted', which is a specific verb+resource. It is distinct from sibling tools like write_data_to_excel or read_data_from_excel, though no explicit differentiation is given.

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 validate_formula_syntax or read_data_from_excel. The note about preferring session_id over filepath is about parameter choice, not tool selection.

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

validate_formula_syntaxA
Validate Excel formula syntax without applying it.

Args:
    sheet_name: Name of worksheet
    cell: Cell address (e.g., "A1")
    formula: Excel formula to validate
    session_id: Session ID from open_workbook (preferred)
    filepath: Path to Excel file (legacy, deprecated)
    
Note: Use session_id for better performance. filepath parameter is deprecated.
ParametersJSON Schema
NameRequiredDescriptionDefault
sheet_nameYes
cellYes
formulaYes
session_idNo
filepathNo

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?

With no annotations, the description must carry the full burden. It states the core behavior (validate without applying) and mentions parameter preferences, but does not disclose what happens on invalid syntax (e.g., error or return value) or whether the tool modifies anything (it doesn't, but that's implied).

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 a front-loaded main sentence and a well-structured parameter list using clear labels and a note. Every sentence adds value, and there is no wasted text.

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 complexity (5 parameters, sibling tools, and an output schema exists), the description covers the purpose and parameters adequately but misses context like prerequisites (e.g., workbook must be open) or edge-case behavior. It is minimally complete but not rich.

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

Parameters4/5

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

The schema has no parameter descriptions (0% coverage), but the description adds meaningful context: sheet_name is a worksheet name, cell is an address like 'A1', formula is to validate, session_id from open_workbook is preferred, and filepath is deprecated. This compensates well for the schema gap.

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 'Validate Excel formula syntax without applying it,' which clearly identifies a specific verb (validate) and resource (Excel formula syntax). It also distinguishes itself from sibling tools like 'apply_formula' by noting it does not apply the formula.

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 when to validate syntax vs. apply a formula or other operations. The note about session_id vs filepath is about parameter preference, not tool selection.

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

write_data_to_excelB
Write data to Excel worksheet.
Excel formula will write to cell without any verification.

Args:
    session_id: Session ID from open_workbook (required)
    sheet_name: Name of worksheet to write to
    data: List of lists containing data to write to the worksheet, sublists are assumed to be rows
    start_cell: Cell to start writing to (optional, auto-finds appropriate location)
ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYes
sheet_nameYes
dataYes
start_cellNo

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?

The description discloses that the tool writes 'without any verification,' which is a behavioral trait. However, it lacks details on overwriting behavior, error handling, or performance. With no annotations, more transparency is expected.

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 relatively concise with a clear first sentence. The 'Args:' section is redundant but not verbose. Each sentence adds information without excess.

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 all parameters but lacks context about return values, error conditions, and prerequisites beyond what is implied by parameters. An output schema exists but its content is not considered.

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: explains session_id as 'from open_workbook', data as 'list of lists with sublists as rows', and start_cell as 'optional, auto-finds appropriate location'. Schema coverage is 0%, so this adds significant value.

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 ('Write data to') and the resource ('Excel worksheet'). It distinguishes from siblings like read_data_from_excel and create_workbook.

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 explicit guidance on when to use this tool vs alternatives. The description implies writing data but does not mention prerequisites (e.g., must have an open workbook) or scenarios where other tools are preferred.

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. 29 tool updates
    • Changedapply_formula3 fields changed
      • removedInput schema / properties / filepath
        Removed value: -{
        -  "title": "Filepath",
        -  "type": "string"
        -}
      • addedInput schema / properties / session_id
        Added value: +{
        +  "title": "Session Id",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "filepath",
        -  "sheet_name",
        -  "cell",
        -  "formula"
        -]New value: +[
        +  "session_id",
        +  "sheet_name",
        +  "cell",
        +  "formula"
        +]
    • Addedclose_workbook
    • Changedcopy_range5 fields changed
      • addedInput schema / properties / filepath / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / filepath / default
        Added value: +null
      • removedInput schema / properties / filepath / type
        Removed value: -"string"
      • addedInput schema / properties / session_id
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Session Id"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "filepath",
        -  "sheet_name",
        -  "source_start",
        -  "source_end",
        -  "target_start"
        -]New value: +[
        +  "sheet_name",
        +  "source_start",
        +  "source_end",
        +  "target_start"
        +]
    • Changedcopy_worksheet3 fields changed
      • removedInput schema / properties / filepath
        Removed value: -{
        -  "title": "Filepath",
        -  "type": "string"
        -}
      • addedInput schema / properties / session_id
        Added value: +{
        +  "title": "Session Id",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "filepath",
        -  "source_sheet",
        -  "target_sheet"
        -]New value: +[
        +  "session_id",
        +  "source_sheet",
        +  "target_sheet"
        +]
    • Changedcreate_chart5 fields changed
      • addedInput schema / properties / filepath / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / filepath / default
        Added value: +null
      • removedInput schema / properties / filepath / type
        Removed value: -"string"
      • addedInput schema / properties / session_id
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Session Id"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "filepath",
        -  "sheet_name",
        -  "data_range",
        -  "chart_type",
        -  "target_cell"
        -]New value: +[
        +  "sheet_name",
        +  "data_range",
        +  "chart_type",
        +  "target_cell"
        +]
    • Changedcreate_pivot_table5 fields changed
      • addedInput schema / properties / filepath / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / filepath / default
        Added value: +null
      • removedInput schema / properties / filepath / type
        Removed value: -"string"
      • addedInput schema / properties / session_id
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Session Id"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "filepath",
        -  "sheet_name",
        -  "data_range",
        -  "rows",
        -  "values"
        -]New value: +[
        +  "sheet_name",
        +  "data_range",
        +  "rows",
        +  "values"
        +]
    • Changedcreate_table5 fields changed
      • addedInput schema / properties / filepath / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / filepath / default
        Added value: +null
      • removedInput schema / properties / filepath / type
        Removed value: -"string"
      • addedInput schema / properties / session_id
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Session Id"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "filepath",
        -  "sheet_name",
        -  "data_range"
        -]New value: +[
        +  "sheet_name",
        +  "data_range"
        +]
    • Changedcreate_workbook5 fields changed
      • addedInput schema / properties / filepath / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / filepath / default
        Added value: +null
      • removedInput schema / properties / filepath / type
        Removed value: -"string"
      • addedInput schema / properties / session_id
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Session Id"
        +}
      • removedInput schema / required
        Removed value: -[
        -  "filepath"
        -]
    • Changedcreate_worksheet3 fields changed
      • removedInput schema / properties / filepath
        Removed value: -{
        -  "title": "Filepath",
        -  "type": "string"
        -}
      • addedInput schema / properties / session_id
        Added value: +{
        +  "title": "Session Id",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "filepath",
        -  "sheet_name"
        -]New value: +[
        +  "session_id",
        +  "sheet_name"
        +]
    • Changeddelete_range5 fields changed
      • addedInput schema / properties / filepath / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / filepath / default
        Added value: +null
      • removedInput schema / properties / filepath / type
        Removed value: -"string"
      • addedInput schema / properties / session_id
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Session Id"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "filepath",
        -  "sheet_name",
        -  "start_cell",
        -  "end_cell"
        -]New value: +[
        +  "sheet_name",
        +  "start_cell",
        +  "end_cell"
        +]
    • Changeddelete_sheet_columns5 fields changed
      • addedInput schema / properties / filepath / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / filepath / default
        Added value: +null
      • removedInput schema / properties / filepath / type
        Removed value: -"string"
      • addedInput schema / properties / session_id
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Session Id"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "filepath",
        -  "sheet_name",
        -  "start_col"
        -]New value: +[
        +  "sheet_name",
        +  "start_col"
        +]
    • Changeddelete_sheet_rows5 fields changed
      • addedInput schema / properties / filepath / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / filepath / default
        Added value: +null
      • removedInput schema / properties / filepath / type
        Removed value: -"string"
      • addedInput schema / properties / session_id
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Session Id"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "filepath",
        -  "sheet_name",
        -  "start_row"
        -]New value: +[
        +  "sheet_name",
        +  "start_row"
        +]
    • Changeddelete_worksheet3 fields changed
      • removedInput schema / properties / filepath
        Removed value: -{
        -  "title": "Filepath",
        -  "type": "string"
        -}
      • addedInput schema / properties / session_id
        Added value: +{
        +  "title": "Session Id",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "filepath",
        -  "sheet_name"
        -]New value: +[
        +  "session_id",
        +  "sheet_name"
        +]
    • Addedforce_close_workbook_by_path_tool
    • Changedformat_range5 fields changed
      • addedInput schema / properties / filepath / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / filepath / default
        Added value: +null
      • removedInput schema / properties / filepath / type
        Removed value: -"string"
      • addedInput schema / properties / session_id
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Session Id"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "filepath",
        -  "sheet_name",
        -  "start_cell"
        -]New value: +[
        +  "sheet_name",
        +  "start_cell"
        +]
    • Changedget_data_validation_info5 fields changed
      • addedInput schema / properties / filepath / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / filepath / default
        Added value: +null
      • removedInput schema / properties / filepath / type
        Removed value: -"string"
      • addedInput schema / properties / session_id
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Session Id"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "filepath",
        -  "sheet_name"
        -]New value: +[
        +  "sheet_name"
        +]
    • Changedget_merged_cells5 fields changed
      • addedInput schema / properties / filepath / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / filepath / default
        Added value: +null
      • removedInput schema / properties / filepath / type
        Removed value: -"string"
      • addedInput schema / properties / session_id
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Session Id"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "filepath",
        -  "sheet_name"
        -]New value: +[
        +  "sheet_name"
        +]
    • Changedget_workbook_metadata3 fields changed
      • removedInput schema / properties / filepath
        Removed value: -{
        -  "title": "Filepath",
        -  "type": "string"
        -}
      • addedInput schema / properties / session_id
        Added value: +{
        +  "title": "Session Id",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "filepath"
        -]New value: +[
        +  "session_id"
        +]
    • Changedinsert_columns5 fields changed
      • addedInput schema / properties / filepath / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / filepath / default
        Added value: +null
      • removedInput schema / properties / filepath / type
        Removed value: -"string"
      • addedInput schema / properties / session_id
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Session Id"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "filepath",
        -  "sheet_name",
        -  "start_col"
        -]New value: +[
        +  "sheet_name",
        +  "start_col"
        +]
    • Changedinsert_rows5 fields changed
      • addedInput schema / properties / filepath / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / filepath / default
        Added value: +null
      • removedInput schema / properties / filepath / type
        Removed value: -"string"
      • addedInput schema / properties / session_id
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Session Id"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "filepath",
        -  "sheet_name",
        -  "start_row"
        -]New value: +[
        +  "sheet_name",
        +  "start_row"
        +]
    • Addedlist_workbooks
    • Changedmerge_cells5 fields changed
      • addedInput schema / properties / filepath / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / filepath / default
        Added value: +null
      • removedInput schema / properties / filepath / type
        Removed value: -"string"
      • addedInput schema / properties / session_id
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Session Id"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "filepath",
        -  "sheet_name",
        -  "start_cell",
        -  "end_cell"
        -]New value: +[
        +  "sheet_name",
        +  "start_cell",
        +  "end_cell"
        +]
    • Addedopen_workbook
    • Changedread_data_from_excel3 fields changed
      • removedInput schema / properties / filepath
        Removed value: -{
        -  "title": "Filepath",
        -  "type": "string"
        -}
      • addedInput schema / properties / session_id
        Added value: +{
        +  "title": "Session Id",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "filepath",
        -  "sheet_name"
        -]New value: +[
        +  "session_id",
        +  "sheet_name"
        +]
    • Changedrename_worksheet3 fields changed
      • removedInput schema / properties / filepath
        Removed value: -{
        -  "title": "Filepath",
        -  "type": "string"
        -}
      • addedInput schema / properties / session_id
        Added value: +{
        +  "title": "Session Id",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "filepath",
        -  "old_name",
        -  "new_name"
        -]New value: +[
        +  "session_id",
        +  "old_name",
        +  "new_name"
        +]
    • Changedunmerge_cells5 fields changed
      • addedInput schema / properties / filepath / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / filepath / default
        Added value: +null
      • removedInput schema / properties / filepath / type
        Removed value: -"string"
      • addedInput schema / properties / session_id
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Session Id"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "filepath",
        -  "sheet_name",
        -  "start_cell",
        -  "end_cell"
        -]New value: +[
        +  "sheet_name",
        +  "start_cell",
        +  "end_cell"
        +]
    • Changedvalidate_excel_range5 fields changed
      • addedInput schema / properties / filepath / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / filepath / default
        Added value: +null
      • removedInput schema / properties / filepath / type
        Removed value: -"string"
      • addedInput schema / properties / session_id
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Session Id"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "filepath",
        -  "sheet_name",
        -  "start_cell"
        -]New value: +[
        +  "sheet_name",
        +  "start_cell"
        +]
    • Changedvalidate_formula_syntax5 fields changed
      • addedInput schema / properties / filepath / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / filepath / default
        Added value: +null
      • removedInput schema / properties / filepath / type
        Removed value: -"string"
      • addedInput schema / properties / session_id
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Session Id"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "filepath",
        -  "sheet_name",
        -  "cell",
        -  "formula"
        -]New value: +[
        +  "sheet_name",
        +  "cell",
        +  "formula"
        +]
    • Changedwrite_data_to_excel3 fields changed
      • removedInput schema / properties / filepath
        Removed value: -{
        -  "title": "Filepath",
        -  "type": "string"
        -}
      • addedInput schema / properties / session_id
        Added value: +{
        +  "title": "Session Id",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "filepath",
        -  "sheet_name",
        -  "data"
        -]New value: +[
        +  "session_id",
        +  "sheet_name",
        +  "data"
        +]
  2. 25 tool updates
    • First observedapply_formula
    • First observedcopy_range
    • First observedcopy_worksheet
    • First observedcreate_chart
    • First observedcreate_pivot_table
    • First observedcreate_table
    • First observedcreate_workbook
    • First observedcreate_worksheet
    • First observeddelete_range
    • First observeddelete_sheet_columns
    • First observeddelete_sheet_rows
    • First observeddelete_worksheet
    • First observedformat_range
    • First observedget_data_validation_info
    • First observedget_merged_cells
    • First observedget_workbook_metadata
    • First observedinsert_columns
    • First observedinsert_rows
    • First observedmerge_cells
    • First observedread_data_from_excel
    • First observedrename_worksheet
    • First observedunmerge_cells
    • First observedvalidate_excel_range
    • First observedvalidate_formula_syntax
    • First observedwrite_data_to_excel

TDQS

A3.7/5.0

Scored across 29 tools

Disambiguation4/5

Most tools have distinct purposes targeting specific Excel operations like formulas, ranges, sheets, or charts, with clear boundaries. However, some overlap exists between 'delete_range' and 'delete_sheet_rows/columns', which could cause confusion about which to use for row/column deletion, and 'validate_excel_range' might be redundant with range validation implied in other tools.

Naming Consistency5/5

Tool names follow a highly consistent verb_noun pattern throughout, such as 'apply_formula', 'close_workbook', 'copy_range', and 'create_chart'. The only minor deviation is 'force_close_workbook_by_path_tool', which still adheres to the pattern but includes extra descriptors, maintaining overall readability and predictability.

Tool Count3/5

With 29 tools, the count is borderline high for an Excel server, potentially overwhelming for agents. While Excel is a complex domain, the set includes some specialized tools like 'get_merged_cells' and 'validate_formula_syntax' that might be less frequently used, suggesting the surface could be more streamlined without losing core functionality.

Completeness5/5

The tool set provides comprehensive coverage for Excel operations, including workbook management (open, close, create), sheet operations (create, delete, rename), data manipulation (read, write, copy, delete), formatting, charts, pivot tables, and validation. There are no obvious gaps; agents can perform full CRUD and lifecycle tasks for Excel files seamlessly.

Maintenance

ActivityInactive
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to read, write, and manipulate Excel files through comprehensive spreadsheet operations. Supports file management, data querying, worksheet operations, formula calculations, and includes security features like path validation and automatic backups.
    2
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI agents to create, read, and manipulate Excel files without requiring Microsoft Excel installation. Supports comprehensive spreadsheet operations including formulas, formatting, charts, pivot tables, and data validation.
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables 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.
    68
    33
    MIT