Skip to main content
Glama
shakhin85

Google Sheets MCP Server

by shakhin85

Google Sheets MCP Server

CI codecov Python 3.11+ License: MIT Code style: ruff

MCP (Model Context Protocol) server for Google Sheets integration. Allows AI assistants to read, write, and manage Google Spreadsheets.

Features

Core Features

  • TOON Format - Token-Optimized Output Notation for 40-80% token savings

  • Create spreadsheets - Create new Google Spreadsheets with custom sheets

  • Read data - Read cell ranges and formulas from spreadsheets

  • Write data - Write values and formulas to cell ranges

  • Append rows - Add new rows to existing data

  • Clear data - Clear cell ranges

  • Manage sheets - Add, delete, and duplicate sheets within spreadsheets

  • Batch updates - Perform multiple updates in one request

Formula Support

  • Read formulas - Extract formulas from cells (not just calculated values)

  • Write formulas - Insert formulas into cells

Named Ranges

  • Create named ranges - Define named ranges for easier reference

  • List named ranges - Get all named ranges in a spreadsheet

  • Delete named ranges - Remove named ranges

Advanced Formatting

  • Basic formatting - Bold, italic, background colors

  • Text alignment - Horizontal and vertical alignment

  • Fonts - Font size, font family, text color

  • Number formats - Currency, percentage, date, custom formats

  • Borders - Cell borders with custom styles and colors

  • Text wrapping - Control how text wraps in cells

Data Management

  • Data validation - Dropdown lists, number ranges, date ranges, text validation

  • Find and replace - Search and replace text across sheets

  • Sort ranges - Sort data by one or more columns

  • Merge/unmerge cells - Merge cells and unmerge them

Column & Row Operations

  • Insert columns/rows - Add new columns or rows

  • Delete columns/rows - Remove columns or rows

  • Auto-resize - Auto-resize columns/rows to fit content** - Perform multiple updates in one request

Related MCP server: gworkspace-mcp

Installation

# Using uv (recommended)
uv sync

# Or using pip
pip install -e .

Google Cloud Setup

Option 1: OAuth 2.0 (for personal use)

  1. Go to Google Cloud Console

  2. Create a new project or select existing one

  3. Enable the Google Sheets API:

    • Go to "APIs & Services" > "Library"

    • Search for "Google Sheets API"

    • Click "Enable"

  4. Configure OAuth consent screen:

    • Go to "APIs & Services" > "OAuth consent screen"

    • Select "External" user type

    • Fill in required fields

    • Add scope: https://www.googleapis.com/auth/spreadsheets

  5. Create OAuth credentials:

    • Go to "APIs & Services" > "Credentials"

    • Click "Create Credentials" > "OAuth client ID"

    • Select "Desktop app"

    • Download the JSON file

  6. Save credentials:

    mkdir -p ~/.config/google-sheets-mcp
    mv ~/Downloads/client_secret_*.json ~/.config/google-sheets-mcp/credentials.json

Option 2: Service Account (for automated/server use)

  1. Go to Google Cloud Console

  2. Create a new project or select existing one

  3. Enable the Google Sheets API

  4. Create a Service Account:

    • Go to "APIs & Services" > "Credentials"

    • Click "Create Credentials" > "Service account"

    • Fill in details and create

  5. Create a key:

    • Click on the service account

    • Go to "Keys" tab

    • "Add Key" > "Create new key" > JSON

  6. Save the key:

    mkdir -p ~/.config/google-sheets-mcp
    mv ~/Downloads/*.json ~/.config/google-sheets-mcp/service_account.json
  7. Important: Share your spreadsheets with the service account email (found in the JSON file under client_email)

Configuration

Credentials

Credentials are stored in ~/.config/google-sheets-mcp/:

File

Description

credentials.json

OAuth 2.0 client credentials

token.json

OAuth 2.0 access token (auto-generated)

service_account.json

Service account credentials

The server will automatically use service account if available, otherwise falls back to OAuth.

TOON Format (Token-Optimized Output Notation)

The server supports configurable output formats to minimize token usage when working with LLMs. Create a config.json file in ~/.config/google-sheets-mcp/:

{
  "output_format": "compact"
}

(See config.example.json for a complete example)

Available Formats:

Format

Description

Use Case

Token Savings

minimal

Absolute minimum data only

Maximum token efficiency, basic operations

~60-80%

compact

Essential data with abbreviated keys (default)

Best balance of efficiency and readability

~40-60%

standard

Readable but efficient output

Human-readable while still optimized

~20-30%

detailed

Full verbose output

Debugging, development

0% (full output)

Format Examples:

Creating a spreadsheet:

  • Detailed: {"spreadsheet_id": "abc123", "spreadsheet_url": "https://...", "title": "My Sheet", "sheets": ["Sheet1", "Sheet2"]}

  • Compact: {"id":"abc123","url":"https://..."}

  • Minimal: {"id":"abc123"}

Reading data:

  • Detailed: {"range": "Sheet1!A1:C3", "values": [[...]]}

  • Compact: {"values":[[...]]}

  • Minimal: {"v":[[...]]}

Environment Variable Override:

You can override the format setting using the SHEETS_MCP_FORMAT environment variable:

export SHEETS_MCP_FORMAT=minimal

Configuration in Claude Desktop:

{
  "mcpServers": {
    "google-sheets": {
      "command": "uv",
      "args": ["run", "--directory", "/path/to/google-sheets-mcp-server", "python", "main.py"],
      "env": {
        "SHEETS_MCP_FORMAT": "compact"
      }
    }
  }
}

Usage with Claude Desktop

Add to your Claude Desktop configuration (claude_desktop_config.json):

{
  "mcpServers": {
    "google-sheets": {
      "command": "uv",
      "args": ["run", "--directory", "C:\\Users\\salna\\local-mcp-servers\\google-sheets-mcp-server", "python", "main.py"]
    }
  }
}

Or if installed globally:

{
  "mcpServers": {
    "google-sheets": {
      "command": "google-sheets-mcp"
    }
  }
}

Available Tools

create_spreadsheet

Create a new Google Spreadsheet.

{
  "title": "My Spreadsheet",
  "sheets": ["Sheet1", "Data", "Summary"]
}

get_spreadsheet

Get metadata about a spreadsheet.

{
  "spreadsheet_id": "1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms"
}

read_range

Read data from a range.

{
  "spreadsheet_id": "...",
  "range": "Sheet1!A1:D10"
}

write_range

Write data to a range.

{
  "spreadsheet_id": "...",
  "range": "Sheet1!A1:C3",
  "values": [
    ["Name", "Age", "City"],
    ["Alice", 30, "NYC"],
    ["Bob", 25, "LA"]
  ]
}

append_rows

Append rows to existing data.

{
  "spreadsheet_id": "...",
  "range": "Sheet1!A:C",
  "values": [
    ["Charlie", 35, "Chicago"],
    ["Diana", 28, "Boston"]
  ]
}

clear_range

Clear values from a range.

{
  "spreadsheet_id": "...",
  "range": "Sheet1!A1:D10"
}

add_sheet

Add a new sheet to spreadsheet.

{
  "spreadsheet_id": "...",
  "title": "New Sheet"
}

delete_sheet

Delete a sheet (use sheet_id from get_spreadsheet).

{
  "spreadsheet_id": "...",
  "sheet_id": 123456789
}

format_cells

Apply formatting to cells.

{
  "spreadsheet_id": "...",
  "sheet_id": 0,
  "start_row": 0,
  "end_row": 1,
  "start_column": 0,
  "end_column": 3,
  "bold": true,
  "background_color": {"red": 0.9, "green": 0.9, "blue": 0.9}
}

batch_update

Multiple updates in one request.

{
  "spreadsheet_id": "...",
  "data": [
    {"range": "Sheet1!A1", "values": [["Header"]]},
    {"range": "Sheet1!B1", "values": [["Value"]]}
  ]
}

read_formulas

Read formulas from cells (not just their calculated values).

{
  "spreadsheet_id": "...",
  "range": "Sheet1!A1:B5"
}

write_formulas

Write formulas to cells.

{
  "spreadsheet_id": "...",
  "range": "Sheet1!C1:C5",
  "formulas": [
    ["=SUM(A1:B1)"],
    ["=SUM(A2:B2)"],
    ["=SUM(A3:B3)"],
    ["=SUM(A4:B4)"],
    ["=SUM(A5:B5)"]
  ]
}

create_named_range

Create a named range for easier reference in formulas.

{
  "spreadsheet_id": "...",
  "name": "SalesData",
  "sheet_id": 0,
  "start_row": 0,
  "end_row": 10,
  "start_column": 0,
  "end_column": 5
}

list_named_ranges

List all named ranges in a spreadsheet.

{
  "spreadsheet_id": "..."
}

delete_named_range

Delete a named range.

{
  "spreadsheet_id": "...",
  "named_range_id": "..."
}

format_cells_advanced

Apply advanced formatting including alignment, fonts, borders, and number formats.

{
  "spreadsheet_id": "...",
  "sheet_id": 0,
  "start_row": 0,
  "end_row": 1,
  "start_column": 0,
  "end_column": 5,
  "horizontal_alignment": "CENTER",
  "vertical_alignment": "MIDDLE",
  "font_size": 12,
  "font_family": "Arial",
  "text_color": {"red": 0, "green": 0, "blue": 0},
  "number_format": "$#,##0.00",
  "wrap_strategy": "WRAP",
  "border_bottom": {
    "style": "SOLID",
    "color": {"red": 0, "green": 0, "blue": 0}
  }
}

set_data_validation

Set data validation rules (dropdown lists, number ranges, etc.).

{
  "spreadsheet_id": "...",
  "sheet_id": 0,
  "start_row": 1,
  "end_row": 100,
  "start_column": 2,
  "end_column": 3,
  "validation_type": "ONE_OF_LIST",
  "values": ["Option 1", "Option 2", "Option 3"],
  "show_dropdown": true,
  "strict": true
}

For number validation:

{
  "spreadsheet_id": "...",
  "sheet_id": 0,
  "start_row": 1,
  "end_row": 100,
  "start_column": 3,
  "end_column": 4,
  "validation_type": "NUMBER_BETWEEN",
  "min_value": "0",
  "max_value": "100"
}

insert_dimension

Insert columns or rows.

{
  "spreadsheet_id": "...",
  "sheet_id": 0,
  "dimension": "ROWS",
  "start_index": 5,
  "end_index": 10
}

delete_dimension

Delete columns or rows.

{
  "spreadsheet_id": "...",
  "sheet_id": 0,
  "dimension": "COLUMNS",
  "start_index": 2,
  "end_index": 4
}

auto_resize_dimensions

Auto-resize columns or rows to fit content.

{
  "spreadsheet_id": "...",
  "sheet_id": 0,
  "dimension": "COLUMNS",
  "start_index": 0,
  "end_index": 5
}

find_replace

Find and replace text in a sheet.

{
  "spreadsheet_id": "...",
  "sheet_id": 0,
  "find": "old text",
  "replace": "new text",
  "match_case": false,
  "match_entire_cell": false,
  "search_formulas": false
}

duplicate_sheet

Duplicate an existing sheet.

{
  "spreadsheet_id": "...",
  "source_sheet_id": 0,
  "new_sheet_name": "Copy of Sheet1"
}

sort_range

Sort a range by one or more columns.

{
  "spreadsheet_id": "...",
  "sheet_id": 0,
  "start_row": 1,
  "end_row": 100,
  "start_column": 0,
  "end_column": 5,
  "sort_specs": [
    {"dimension_index": 0, "ascending": true},
    {"dimension_index": 1, "ascending": false}
  ]
}

merge_cells

Merge cells in a range.

{
  "spreadsheet_id": "...",
  "sheet_id": 0,
  "start_row": 0,
  "end_row": 1,
  "start_column": 0,
  "end_column": 3,
  "merge_type": "MERGE_ALL"
}

unmerge_cells

Unmerge cells in a range.

{
  "spreadsheet_id": "...",
  "sheet_id": 0,
  "start_row": 0,
  "end_row": 1,
  "start_column": 0,
  "end_column": 3
}

Running Manually

# Run the server
uv run python main.py

# Or after installation
google-sheets-mcp

Development

# Install dev dependencies
uv sync --extra dev

# Run all tests
uv run pytest

# Run tests with verbose output
uv run pytest -v

# Run specific test file
uv run pytest tests/test_new_tools.py -v

# Run tests with coverage
uv run pytest --cov=src/google_sheets_mcp

# Type checking
uv run mypy main.py

Test Coverage

The test suite includes:

  • 51 unit tests covering all 26 tools (10 original + 16 new)

  • Tool execution tests - Verify each tool's logic and API calls

  • TOON formatter tests - Ensure token optimization works correctly

  • Mock-based testing - No real API calls required

Test files:

  • tests/test_new_tools.py - Tests for all 16 new tools (25 tests)

  • tests/test_formatters.py - Tests for TOON formatters (26 tests)

  • tests/conftest.py - Shared fixtures and configuration

License

MIT

Available Tools

29 tools
add_sheetB

Add a new sheet to an existing spreadsheet

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYesTitle of the new sheet
spreadsheet_idYesThe ID of the spreadsheet

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations, description must disclose behavior. It only states the action but not any side effects, permissions, or return values.

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

Conciseness4/5

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

Single sentence, no wasted words. Could be slightly improved with more context, but it's efficient.

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

Completeness2/5

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

For a creation tool with no output schema, description lacks details like return value or prerequisites (e.g., spreadsheet must exist). Incomplete for safe usage.

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

Parameters3/5

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

Schema description coverage is 100%; both parameters are already documented. Description adds no additional 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?

The description uses a specific verb 'Add' and resource 'sheet to an existing spreadsheet', clearly distinguishing it from siblings like 'create_spreadsheet' or 'delete_sheet'.

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

Usage Guidelines2/5

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

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

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

append_rowsC

Append rows to the end of a sheet

ParametersJSON Schema
NameRequiredDescriptionDefault
rangeYesThe A1 notation of the range to append to (e.g., 'Sheet1!A:D')
valuesYes2D array of rows to append
spreadsheet_idYesThe ID of the spreadsheet

TDQS

C2.8/5.0
Behavior2/5

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

The description does not disclose critical behavioral traits such as whether the tool handles extending the sheet automatically, what happens if the range doesn't match existing data size, or if it's destructive. No annotations are provided, so the description carries the full burden but falls short.

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 extremely concise (one sentence), but it lacks important information that could be included without verbosity. It serves as a minimal statement rather than a well-structured description.

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 three parameters, no output schema, and no annotations, the description is insufficient. It does not explain the return value, error conditions, or how the append interacts with the sheet's existing data. Completeness is inadequate.

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

Parameters3/5

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

Schema coverage is 100%, so the schema already describes all parameters. The description adds no extra meaning beyond the tool's purpose, so baseline 3 is appropriate.

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 ('Append') and resource ('rows to the end of a sheet'). It effectively distinguishes from sibling tools like write_range (overwrite) and clear_range, though it could be more specific about the append behavior (e.g., automatically finds first empty row).

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 write_range or insert_dimension. There is no mention of prerequisites (e.g., sheet existence) or exclusions.

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

auto_resize_dimensionsC

Auto-resize columns or rows to fit content

ParametersJSON Schema
NameRequiredDescriptionDefault
sheet_idYesThe ID of the sheet
dimensionYesWhether to resize rows or columns
end_indexYesEnding index (exclusive)
start_indexYesStarting index (0-based)
spreadsheet_idYesThe ID of the spreadsheet

TDQS

C2.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 must disclose behavioral traits. It only states 'fit content' without specifying that this modifies the spreadsheet, may overwrite existing manual row/column sizes, or requires write permissions. This lack of detail is significant for a mutation tool.

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

Conciseness4/5

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

The description is a single sentence of 6 words, which is concise and front-loaded. It avoids unnecessary details. However, given the tool's complexity (5 parameters), a slightly more verbose description could improve clarity without losing conciseness.

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 schema covers all parameters, but the description lacks important context such as what 'fit content' means (e.g., column width adjusts to longest cell content), whether it is destructive, and the effect on merged cells or formatting. The absence of an output schema is acceptable, but behavioral context is insufficient.

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?

All 5 parameters have descriptions in the input schema, achieving 100% coverage. The tool description adds no additional meaning beyond what the schema provides. Baseline score of 3 is appropriate since the schema already defines parameters clearly.

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 'Auto-resize columns or rows to fit content' clearly states the action (auto-resize) and the resource (columns/rows). It distinguishes the tool from sibling tools like delete_dimension or insert_dimension, which handle dimension structural changes, not resizing. However, it does not explicitly differentiate from any hypothetical resize-only tools.

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 use manual formatting or other resize methods. There is no mention of prerequisites or when not to use this tool.

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

batch_updateC

Perform multiple updates in a single request

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYesArray of {range, values} objects
spreadsheet_idYesThe ID of the spreadsheet

TDQS

C2.9/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 like atomicity, error handling, order of operations, or required permissions. The minimal description adds no transparency beyond the basic action.

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

Conciseness4/5

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

The description is concise at one sentence, focusing on the core action. It is front-loaded but may be too brief for complex batch operations. Could benefit from slightly more detail without significant bloat.

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 performs batch updates on a spreadsheet with nested parameters and no output schema, the description is incomplete. It fails to explain return values, error behavior, or how batch updates differ from other update tools.

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

Parameters3/5

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

Schema description coverage is 100%, with clear parameter descriptions for spreadsheet_id and data. The tool description adds no additional meaning beyond what the schema already provides, so meets baseline but no extra 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 tool performs multiple updates in a single request, and the input schema with spreadsheet_id and data confirms it operates on a spreadsheet. However, it does not explicitly differentiate from sibling tools like write_range or append_rows, but the batch nature is implied.

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 batch_update versus alternatives such as write_range or append_rows. The description does not mention prerequisites, ideal scenarios, or limitations compared to sequential single updates.

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

clear_rangeB

Clear values from a range of cells

ParametersJSON Schema
NameRequiredDescriptionDefault
rangeYesThe A1 notation range to clear (e.g., 'Sheet1!A1:D10')
spreadsheet_idYesThe ID of the spreadsheet

TDQS

B3.1/5.0
Behavior2/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 only states 'Clear values' but does not disclose whether formatting, comments, or other cell data are affected, nor does it address destructive behavior or side effects. This lack of detail 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.

Conciseness4/5

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

The description is a single, short sentence that is concise and directly states the tool's purpose. It is appropriately sized and front-loaded, but could include slightly more detail without becoming verbose.

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 mutation tool with no output schema and no annotations, the description is too minimal. It does not explain return values (e.g., what is cleared, any confirmation) or the scope of the clear operation (values only vs. entire cell contents). This leaves gaps for the 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?

Both parameters are fully described in the input schema (100% coverage). The description adds no additional meaning or constraints beyond what the schema provides, so a baseline score of 3 is appropriate.

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

Purpose5/5

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

The description 'Clear values from a range of cells' clearly specifies the action (clear) and the resource (range of cells), distinguishing it from sibling tools like read_range, write_range, and delete_sheet.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives like delete_sheet or batch_update. There is no mention of prerequisites, such as requiring the spreadsheet to be writable, or exclusions like not affecting formatting.

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

create_chartC

Create a chart in a spreadsheet

ParametersJSON Schema
NameRequiredDescriptionDefault
titleNoChart title
positionNoPosition of the chart on the sheet (optional)
sheet_idYesThe ID of the sheet
chart_typeYesType of chart to create
data_rangeYesRange containing the data to chart
spreadsheet_idYesThe ID of the spreadsheet
legend_positionNoPosition of the chart legend (optional, defaults to RIGHT_LEGEND)

TDQS

C2.9/5.0
Behavior2/5

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

The description does not disclose any behavioral traits beyond the basic action. With no annotations, it fails to mention required permissions, error conditions, or side effects. The description is too brief.

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

Conciseness4/5

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

The description is a single, clear sentence that is front-loaded. It is concise but could benefit from slight expansion without losing efficiency.

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

Completeness2/5

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

Given the tool's complexity (7 parameters, nested objects, no output schema, no annotations), the description is incomplete. It does not explain what the tool returns, error handling, or operational context (e.g., spreadsheet must exist).

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?

All 7 parameters have descriptions in the input schema (100% coverage), so the schema provides sufficient detail. The description adds nothing beyond what the schema already offers, meeting the baseline for high 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 a chart in a spreadsheet,' specifying the verb and resource. It distinguishes from sibling tools like update_chart, delete_chart, and list_charts. However, it does not explicitly differentiate itself from them.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives (e.g., update_chart, delete_chart). There is no mention of prerequisites or situations where this tool is appropriate.

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

create_named_rangeB

Create a named range in the spreadsheet

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesName for the range
end_rowYesEnding row index (exclusive)
sheet_idYesThe ID of the sheet
start_rowYesStarting row index (0-based)
end_columnYesEnding column index (exclusive)
start_columnYesStarting column index (0-based)
spreadsheet_idYesThe ID of the spreadsheet

TDQS

B3.4/5.0
Behavior2/5

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

With no annotations, the description must disclose behaviors. It only states 'Create' without mentioning permissions, side effects, or outcomes if a range with the same name exists. Minimal transparency.

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?

A single, front-loaded sentence with no superfluous words. Every part is essential.

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 7 required parameters and no output schema, the description lacks information about the return value (e.g., success status, created range details). It is too brief for the tool's complexity.

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?

All 7 parameters are fully described in the schema (100% coverage), so the description adds no additional meaning. Baseline of 3 is appropriate.

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

Purpose5/5

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

The description uses a specific verb ('Create') and resource ('named range') and clearly distinguishes from sibling tools like list_named_ranges and delete_named_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?

No explicit when-to-use or when-not-to-use guidance is provided. The description implies the tool is for creating named ranges but does not differentiate from other creation tools or mention alternatives.

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

create_spreadsheetC

Create a new Google Spreadsheet

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYesTitle of the new spreadsheet
sheetsNoList of sheet names to create (optional)

TDQS

C2.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 must carry the transparency burden. It does not mention whether creation is allowed without permissions, what happens if the title already exists, or the return value (e.g., spreadsheet ID). The description is too sparse for a creation 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 a single sentence, concise and front-loaded. However, it could include more helpful context without sacrificing brevity.

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?

There is no output schema, so the description should explain what the tool returns (e.g., spreadsheet URL or ID). It also lacks information on required scopes, limits, or side effects. For a creation tool with only 2 parameters, the description is incomplete.

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

Parameters3/5

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

The input schema has 100% coverage with descriptions for both parameters (title and sheets). The description adds no additional meaning beyond the schema, so a baseline score of 3 is appropriate.

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

Purpose4/5

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

The description 'Create a new Google Spreadsheet' clearly states the verb (create) and resource (Google Spreadsheet). It is distinct from sibling tools which focus on reading, writing, or modifying existing spreadsheets, but no explicit differentiation is provided.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like adding a sheet to an existing spreadsheet or using batch operations. The description lacks usage context entirely.

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

create_tableB

Create a native Google Sheets table with defined range, columns, and formatting

ParametersJSON Schema
NameRequiredDescriptionDefault
rangeYesThe range to convert to a table
columnsNoColumn configurations (optional)
sheet_idYesThe ID of the sheet
table_idNoUnique identifier for the table (optional, will be auto-generated if not provided)
spreadsheet_idYesThe ID of the spreadsheet

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are present, so the description must disclose behavioral traits. It only says 'create', implying mutation, but lacks details on side effects, permission requirements, or what happens if the range already contains data.

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

Conciseness5/5

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

The description is a single, clear sentence that conveys the essential purpose without extraneous words. It is well-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 the absence of an output schema and annotations, the description is too minimal. It does not explain the return value (e.g., table ID), how the table is created, or the relationship to sibling tools. The nested parameters and lack of formatting details contribute to incompleteness.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all parameters. The description adds the notion of 'formatting', which is not explicitly in the schema, but does not elaborate on how formatting is applied. This provides marginal added 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 verb 'Create', the resource 'native Google Sheets table', and specifies the key components: range, columns, and formatting. It distinguishes this tool from siblings like read_range or write_range by focusing on 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 Guidelines2/5

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

No usage guidance is provided. The description does not indicate when to use this tool over alternatives, such as write_range for simple data entry, or what prerequisites (e.g., sheet existence) are needed.

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

delete_chartA

Delete a chart from a spreadsheet

ParametersJSON Schema
NameRequiredDescriptionDefault
chart_idYesThe ID of the chart to delete
spreadsheet_idYesThe ID of the spreadsheet

TDQS

A3.8/5.0
Behavior3/5

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

No annotations provided; description only states the basic action. Does not disclose traits like permanence or side effects, but for a simple delete, it's minimally adequate.

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

Conciseness5/5

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

Single sentence, clear and directly conveys the operation without extraneous words.

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

Completeness4/5

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

For a simple two-parameter delete tool with no output schema, the description is adequate. Could mention chart existence, but not critical.

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

Parameters3/5

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

Schema coverage is 100%, so baseline 3. Description adds no additional meaning beyond the schema's parameter descriptions.

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

Purpose5/5

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

The description clearly states the action (delete) and the resource (chart). It distinguishes from sibling tools like create_chart, update_chart, and list_charts.

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

Usage Guidelines3/5

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

No explicit guidance on when to use this tool versus alternatives, but the purpose is implied by the name and description.

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

delete_dimensionC

Delete columns or rows

ParametersJSON Schema
NameRequiredDescriptionDefault
sheet_idYesThe ID of the sheet
dimensionYesWhether to delete rows or columns
end_indexYesEnding index (exclusive)
start_indexYesStarting index (0-based) to delete
spreadsheet_idYesThe ID of the spreadsheet

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 full burden. It only states the basic action, failing to disclose that deletion is irreversible, shifts indices, or requires specific permissions. No side effects or limitations are mentioned.

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 a single, front-loaded sentence. Every word is necessary, and there is no wasted information.

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?

This is a destructive operation with no output schema. The description lacks critical context about data loss, index shifts, and the irreversible nature of the action, making it incomplete for safe usage.

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

Parameters3/5

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

Schema coverage is 100%, so the schema already documents all 5 parameters. The description adds no additional meaning beyond what the schema provides, maintaining the baseline of 3.

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) and resource (columns or rows), which matches the tool name. It distinguishes from sibling 'insert_dimension' by implying removal, but does not explicitly differentiate from other deletion tools like 'delete_sheet'.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives such as clearing a range or moving data. No prerequisites or contextual cues provided.

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

delete_named_rangeC

Delete a named range

ParametersJSON Schema
NameRequiredDescriptionDefault
named_range_idYesThe ID of the named range to delete
spreadsheet_idYesThe ID of the spreadsheet

TDQS

C2.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 must disclose behavioral traits. It only says 'delete', implying destructive action, but omits details like whether it affects formulas referencing the range, permission requirements, or reversibility.

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

Conciseness4/5

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

The description is a single sentence with no wasted words. It is efficient, but slightly too brief for the lack of 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 simplicity of the tool (2 required parameters, no output schema), the description is minimal. It lacks context about consequences, prerequisites, or error handling, leaving gaps for an AI 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?

Schema description coverage is 100%, so the schema already documents both parameters. The description adds no additional meaning beyond what the schema provides, resulting in a baseline score of 3.

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 'Delete a named range' clearly states the action and resource. It distinguishes from siblings like 'list_named_ranges' and 'create_named_range' but does not explicitly differentiate scope or behavior.

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., clearing a range or deleting a sheet). The description lacks context for appropriate usage scenarios.

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

delete_sheetB

Delete a sheet from a spreadsheet

ParametersJSON Schema
NameRequiredDescriptionDefault
sheet_idYesThe ID of the sheet to delete (get from get_spreadsheet)
spreadsheet_idYesThe ID of the spreadsheet

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations, the description carries the full burden. It states 'delete' implying destructive action, but does not disclose side effects (e.g., permanent removal, impact on charts/named ranges) or any required 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 a single, concise sentence with no waste. However, it could include more useful information without becoming verbose.

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 output schema and no annotations, the description is minimal. It does not cover important context like permanence of deletion or potential impact on related data, which is needed for a destructive tool.

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

Parameters3/5

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

Schema description coverage is 100% and already explains both parameters adequately (e.g., 'sheet_id' gets from get_spreadsheet). The description adds no additional meaning beyond the schema, so baseline 3 applies.

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

Purpose5/5

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

The description clearly states 'Delete a sheet from a spreadsheet', specifying the verb 'delete' and the resource 'sheet'. This distinguishes it from sibling tools like 'add_sheet' or 'clear_range'.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives such as 'clear_range' or 'delete_dimension'. The description lacks any context for appropriate usage or prerequisites.

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

find_replaceC

Find and replace text in a sheet

ParametersJSON Schema
NameRequiredDescriptionDefault
findYesText to find
replaceYesText to replace with
sheet_idNoThe ID of the sheet (optional, searches all sheets if not provided)
match_caseNoWhether to match case
spreadsheet_idYesThe ID of the spreadsheet
search_formulasNoWhether to search in formulas
match_entire_cellNoWhether to match entire cell content

TDQS

C2.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 must fully disclose behavioral traits. It only states 'Find and replace text' without specifying whether it replaces all occurrences, returns a count, or affects formulas. This omission is significant for a mutation tool.

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

Conciseness4/5

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

Single sentence is concise and front-loads the core function. It is appropriately brief, but could benefit from a second sentence to clarify scope or behavior without losing conciseness.

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 full schema coverage, the description lacks context about default behavior (e.g., replace all occurrences), return values (no output schema), and the effect on formulas. For a tool with 7 parameters, this minimal description is insufficient for an agent to reliably choose and invoke it.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all parameters. The description adds no extra meaning beyond the tool's overall purpose. Baseline 3 is appropriate as the description does not hinder usage but adds no 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?

Description states 'Find and replace text in a sheet' which clearly identifies the action and object. It distinguishes from sibling tools like read_range and write_range by specifying find-and-replace functionality. However, it could be more precise by mentioning optional scope (all sheets or a specific sheet).

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like write_range or batch_update. There is no mention of prerequisites or limitations, leaving the agent to infer usage context without explicit direction.

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

format_cellsC

Apply formatting to a range of cells

ParametersJSON Schema
NameRequiredDescriptionDefault
boldNoMake text bold
italicNoMake text italic
end_rowYesEnding row index (exclusive)
sheet_idYesThe ID of the sheet
start_rowYesStarting row index (0-based)
end_columnYesEnding column index (exclusive)
start_columnYesStarting column index (0-based)
spreadsheet_idYesThe ID of the spreadsheet
background_colorNoBackground color (RGB values 0-1)

TDQS

C2.9/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 any behavioral traits such as whether formatting overwrites existing formatting, permissions needed, or rate limits. Minimal transparency.

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?

One sentence, very concise. However, it could be slightly more informative without losing conciseness.

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 complexity (9 parameters, nested object) and lack of output schema or annotations, the description is incomplete. It does not explain return values, permissions, or limitations.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents parameters. The description adds no additional meaning beyond the schema, so baseline 3 is appropriate.

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 'Apply formatting to a range of cells' clearly states the verb (apply formatting) and the resource (range of cells). It is specific enough, though it does not differentiate from the sibling tool 'format_cells_advanced'.

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 'format_cells_advanced'. No exclusions or context provided.

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

format_cells_advancedB

Apply advanced formatting including alignment, fonts, borders, and number formats

ParametersJSON Schema
NameRequiredDescriptionDefault
end_rowYesEnding row index (exclusive)
sheet_idYesThe ID of the sheet
font_sizeNoFont size in points
start_rowYesStarting row index (0-based)
border_topNo
end_columnYesEnding column index (exclusive)
text_colorNoText color (RGB values 0-1)
border_leftNo
font_familyNoFont family name
border_rightNo
start_columnYesStarting column index (0-based)
border_bottomNo
number_formatNoNumber format pattern (e.g., '$#,##0.00', '0.00%', 'yyyy-mm-dd')
wrap_strategyNoText wrapping strategy
spreadsheet_idYesThe ID of the spreadsheet
vertical_alignmentNoVertical text alignment
horizontal_alignmentNoHorizontal text alignment

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 carries full burden. It only mentions that formatting is applied but does not disclose whether it overwrites existing formatting, whether it requires specific permissions, or any side effects. This is insufficient for a mutation tool.

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

Conciseness4/5

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

The description is a single sentence that front-loads the purpose. It is concise but could include more detail without being verbose.

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?

With 17 parameters, 6 required, nested objects, and no output schema, the description is insufficient. It does not explain range indexing (exclusive), default behaviors, or return value. The tool is complex, and the description does not provide enough context for an agent to use it correctly.

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

Parameters3/5

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

Schema coverage is 76%, so most parameters have descriptions. The description lists categories (alignment, fonts, borders, number formats) that map to parameters but adds no additional meaning beyond the schema. It does not explain nested structures like border color objects.

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 (Apply), resource (cells), and scope (advanced formatting including alignment, fonts, borders, number formats). It distinguishes from sibling 'format_cells' by using 'advanced'.

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 like 'format_cells', 'merge_cells', or 'set_data_validation'. The description does not mention any conditions or exclusions.

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

get_spreadsheetB

Get metadata about a spreadsheet including all sheet names

ParametersJSON Schema
NameRequiredDescriptionDefault
spreadsheet_idYesThe ID of the spreadsheet

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 carries the full burden. It implicitly indicates a read operation but lacks explicit statements about safety, no side effects, or auth requirements.

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

Conciseness4/5

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

The description is a single, front-loaded sentence with no wasted words. It efficiently conveys the core purpose, though it could include slightly more context without harming conciseness.

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 output schema, the description hints at return values ('including all sheet names') but does not fully specify what metadata is returned. For a simple tool with one parameter, 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?

Schema coverage is 100% with a basic description for the single parameter. The tool description adds no extra meaning beyond what the schema provides, so it meets the baseline.

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

Purpose5/5

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

The description clearly states the verb 'Get', the resource 'spreadsheet', and specifies the output includes 'all sheet names', which distinguishes it from sibling tools like list_named_ranges or read_range.

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 read_range or list_named_ranges, and does not mention any prerequisites or exclusions.

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

insert_dimensionC

Insert columns or rows

ParametersJSON Schema
NameRequiredDescriptionDefault
sheet_idYesThe ID of the sheet
dimensionYesWhether to insert rows or columns
end_indexYesEnding index (exclusive) - number of rows/columns to insert
start_indexYesStarting index (0-based) where to insert
spreadsheet_idYesThe ID of the spreadsheet

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations, the description carries full burden but fails to disclose behavioral traits such as whether insertion shifts existing data, requires permissions, or has side effects. The schema parameters are documented but not the behavioral implications.

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 extremely short (2 words), which is concise but may be under-specified. It lacks structure or front-loading of key information, but it is not verbose.

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 5 required parameters, no output schema, and no annotations, the description is incomplete. It does not explain the effect on the spreadsheet (e.g., shifting data), error conditions, or return value, leaving agents without sufficient 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?

Schema coverage is 100% with parameter descriptions, so the attributes are already clear. The description adds no additional meaning beyond what the schema provides, earning a baseline 3.

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 'Insert columns or rows' clearly states the action and resource, but does not differentiate from sibling tools like add_sheet or delete_dimension. It is specific enough for a basic understanding.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives (e.g., append_rows, add_sheet). The description simply states the action without context about prerequisites or typical use cases.

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

list_chartsC

List all charts in a spreadsheet

ParametersJSON Schema
NameRequiredDescriptionDefault
sheet_idNoThe ID of the sheet (optional, lists charts from all sheets if not provided)
spreadsheet_idYesThe ID of the spreadsheet

TDQS

C2.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 does not disclose read-only behavior, permissions, rate limits, or what happens when no charts exist. Minimal transparency.

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

Conciseness4/5

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

The description is a single sentence, concise and front-loaded. It could be slightly more structured by noting the optional sheet_id, but it remains efficient.

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

Completeness2/5

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

With no output schema, the description should explain what the tool returns (e.g., chart objects), but it does not. The tool is simple, but the description omits return value details, making it incomplete.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents both parameters. The description adds no additional meaning beyond what is in the schema, earning the baseline score of 3.

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 verb 'list' and resource 'charts in a spreadsheet,' distinguishing it from sibling tools like create_chart or delete_chart. However, it does not explicitly differentiate from other listing tools like list_named_ranges, and lacks mention of the optional sheet_id filtering.

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 get_spreadsheet or other listing tools. The description simply states what it does without context on prerequisites or exclusions.

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

list_named_rangesA

List all named ranges in a spreadsheet

ParametersJSON Schema
NameRequiredDescriptionDefault
spreadsheet_idYesThe ID of the spreadsheet

TDQS

A3.6/5.0
Behavior3/5

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

Without annotations, the description only implies read-only behavior via 'list'. It lacks explicit disclosure of safety, authorization, or side effects, but for a simple list operation this is minimally adequate.

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

Conciseness5/5

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

The description is extremely concise—a single, clear sentence with no redundant information.

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

Completeness4/5

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

For a simple list tool with one parameter, the description provides enough context to understand its scope. It does not detail the return format, but this is acceptable given the tool's simplicity.

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

Parameters3/5

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

Schema coverage is 100%, so the parameter is well-documented. The description adds no extra semantics beyond the implicit 'spreadsheet_id', but is consistent with the tool's purpose.

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 (list) and resource (all named ranges) with the context (in a spreadsheet). It uniquely identifies the tool's function among siblings.

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 create_named_range or delete_named_range. The description does not mention the read-only nature or any prerequisites.

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

merge_cellsC

Merge cells in a range

ParametersJSON Schema
NameRequiredDescriptionDefault
end_rowYesEnding row index (exclusive)
sheet_idYesThe ID of the sheet
start_rowYesStarting row index (0-based)
end_columnYesEnding column index (exclusive)
merge_typeYesHow to merge the cells
start_columnYesStarting column index (0-based)
spreadsheet_idYesThe ID of the spreadsheet

TDQS

C2.2/5.0
Behavior1/5

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

No annotations provided, so description must fully disclose behavior. It only states 'merge cells' without explaining effects (e.g., data loss, formatting changes, or that merging is a mutation). This is a severe 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?

Extremely short but at the expense of necessary information. Not a case of conciseness but of under-specification.

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

Completeness1/5

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

Given 7 required parameters and no output schema, the description fails to explain return behavior, effects of merging, or any side effects. Highly incomplete for an agent to use correctly.

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 has 100% coverage with descriptions for all 7 parameters, but the tool description adds no additional meaning or context to the parameters. It does not summarize or clarify beyond what the schema already provides.

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?

Description clearly states the action (merge) and resource (cells in a range). It is specific enough to understand the basic function, though lacks details on behavior. Distinguishes from sibling 'unmerge_cells' by name.

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 like unmerge_cells. No prerequisites or context provided.

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

read_formulasB

Read formulas from cells (not just their calculated values)

ParametersJSON Schema
NameRequiredDescriptionDefault
rangeYesThe A1 notation range to read formulas from
spreadsheet_idYesThe ID of the spreadsheet

TDQS

B3.4/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 burden of behavioral disclosure. It only states it reads formulas instead of values but omits details such as whether it returns a 2D array, what happens for cells without formulas, error handling, or that it is a safe read-only 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 extremely concise at one sentence. It is front-loaded with the key differentiator. However, it could be slightly more structured by adding examples or output format without losing conciseness.

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 simplicity of the tool with only two parameters and no output schema, the description adequately conveys the core purpose. However, it lacks information about the return format, handling of non-formula cells, and error conditions, which would be valuable for an agent to invoke the tool correctly.

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

Parameters3/5

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

Schema coverage is 100% with well-defined parameters. The description adds no additional meaning beyond the schema, so a baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool reads formulas from cells and contrasts with just reading calculated values. This distinguishes it from the sibling tool read_range, which likely returns only values.

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 one needs the formula text rather than the result, but it does not explicitly state when to use this tool versus alternatives like read_range, nor does it provide any when-not-to-use guidance.

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

read_rangeA

Read data from a range of cells in a spreadsheet

ParametersJSON Schema
NameRequiredDescriptionDefault
rangeYesThe A1 notation range to read (e.g., 'Sheet1!A1:D10')
spreadsheet_idYesThe ID of the spreadsheet

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It implies a read-only, non-destructive operation but does not explicitly state safety, authorization needs, or return format. Adequate but not thorough.

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

Conciseness5/5

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

The description is a single, well-formed sentence that immediately conveys the tool's purpose. No unnecessary words or clutter.

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 complete schema, the description is minimally sufficient but lacks details on return format (e.g., array of values) or error handling. It could be more helpful 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?

Schema coverage is 100%, with clear descriptions for both parameters. The description adds no additional meaning or usage context beyond what the schema provides, warranting the baseline score.

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 'read', the resource 'range of cells', and the context 'spreadsheet', distinguishing it from sibling tools like read_formulas. It 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 is provided on when to use this tool versus alternatives like read_formulas, list_named_ranges, or write_range. There is no mention of prerequisites 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.

set_data_validationB

Set data validation rules for cells (e.g., dropdown lists, number ranges)

ParametersJSON Schema
NameRequiredDescriptionDefault
strictNoWhether to reject invalid input
valuesNoList of valid values (for ONE_OF_LIST)
end_rowYesEnding row index (exclusive)
sheet_idYesThe ID of the sheet
max_valueNoMaximum value (for NUMBER_LESS, NUMBER_BETWEEN, DATE_BETWEEN)
min_valueNoMinimum value (for NUMBER_GREATER, NUMBER_BETWEEN, DATE_BETWEEN)
start_rowYesStarting row index (0-based)
end_columnYesEnding column index (exclusive)
start_columnYesStarting column index (0-based)
show_dropdownNoWhether to show dropdown for list validation
spreadsheet_idYesThe ID of the spreadsheet
validation_typeYesType of validation

TDQS

B3.2/5.0
Behavior2/5

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

Without any annotations, the description must disclose behavioral traits. It only states the core function without mentioning side effects (e.g., overwriting existing rules), required permissions, or error conditions. This is insufficient for safe usage.

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

Conciseness5/5

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

The description is a single concise sentence that efficiently conveys the tool's purpose with examples. No unnecessary words or repetition.

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 12 parameters, no output schema, and no annotations, the description provides only a high-level summary. It does not explain return behavior, error cases, or the effect on existing validation rules, leaving significant gaps.

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

Parameters3/5

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

The input schema already provides complete descriptions for all 12 parameters (100% coverage). The description adds no additional meaning beyond the schema, meeting the baseline expectation but not exceeding it.

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

Purpose5/5

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

The description clearly states the action (set), the resource (data validation rules for cells), and gives illustrative examples (dropdown lists, number ranges). It is specific and distinct from sibling tools, which focus on other spreadsheet operations.

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, prerequisites, or when not to use it. The agent receives no help in deciding between this and other tools for similar tasks.

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

sort_rangeB

Sort a range by one or more columns

ParametersJSON Schema
NameRequiredDescriptionDefault
end_rowYesEnding row index (exclusive)
sheet_idYesThe ID of the sheet
start_rowYesStarting row index (0-based)
end_columnYesEnding column index (exclusive)
sort_specsYesArray of sort specifications
start_columnYesStarting column index (0-based)
spreadsheet_idYesThe ID of the spreadsheet

TDQS

B3.1/5.0
Behavior2/5

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

No annotations exist, and the description fails to disclose behavioral traits such as whether sorting is in-place, side effects, or required permissions. The agent cannot infer beyond the basic action.

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

Conciseness4/5

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

The description is concise (6 words) and front-loaded, but lacks any structure or formatting. Every word is earned, but the brevity limits informativeness.

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?

With 7 required parameters, no output schema, and no annotations, the description is too minimal. It does not explain the tool's effect, return behavior, or edge cases, leaving gaps for the 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?

Schema description coverage is 100%, so parameters are documented. The description adds no additional semantic value beyond the schema, meeting the baseline.

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

Purpose5/5

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

The description 'Sort a range by one or more columns' clearly states the tool's purpose with a specific verb and resource, and distinguishes it from sibling tools like read_range or write_range.

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, nor are there any exclusions or context about prerequisites.

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

unmerge_cellsC

Unmerge cells in a range

ParametersJSON Schema
NameRequiredDescriptionDefault
end_rowYesEnding row index (exclusive)
sheet_idYesThe ID of the sheet
start_rowYesStarting row index (0-based)
end_columnYesEnding column index (exclusive)
start_columnYesStarting column index (0-based)
spreadsheet_idYesThe ID of the spreadsheet

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations, the description carries full burden for behavioral disclosure. It does not state side effects (e.g., data in previously hidden cells restored), permissions required, or error conditions. This is insufficient for a mutation tool.

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

Conciseness3/5

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

The description is extremely concise (one sentence), but such brevity sacrifices informativeness. It is not structured to front-load key details; it simply restates the tool name.

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 6 required parameters and no output schema, the description should explain the range specification and the effect on merged cells. It does not mention that unmerge reverses a previous merge, nor does it describe the result. Sibling tools like merge_cells exist but are not referenced.

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

Parameters3/5

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

Schema coverage is 100%, so baseline is 3. The description does not add meaning beyond the schema descriptions, which are clear. The parameters specify a range, but no explanation of how they relate to the unmerge operation is provided.

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 verb 'Unmerge' and the resource 'cells in a range', which directly conveys the tool's purpose. It distinguishes from sibling 'merge_cells' by being the inverse operation. However, it is minimally descriptive and lacks additional context.

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., merge_cells, clear_range). The description does not mention prerequisites, such as that cells must be already merged, or when unmerging is appropriate.

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

update_chartB

Update an existing chart in a spreadsheet

ParametersJSON Schema
NameRequiredDescriptionDefault
titleNoNew chart title (optional)
chart_idYesThe ID of the chart to update
chart_typeNoNew chart type (optional)
data_rangeNoNew data range (optional)
spreadsheet_idYesThe ID of the spreadsheet
legend_positionNoNew legend position (optional)

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations, the description must reveal behavioral traits, but it only says 'update' without disclosing what happens if the chart doesn't exist, whether changes are reversible, any side effects on related data, or permission requirements. This is insufficient for a mutation tool.

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

Conciseness4/5

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

The description is a single concise sentence without unnecessary words. It communicates the core purpose efficiently, though it could benefit from a bit more detail without becoming verbose.

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

Completeness2/5

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

Given the tool's complexity (6 parameters, one nested object, no output schema), the description is too minimal. It does not mention return values, error conditions, or the behavior of unspecified fields, which would be important for an update 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 coverage is 100%, and the input schema already includes descriptions for all parameters. The description adds no additional meaning beyond what the schema provides, so a baseline score of 3 is appropriate.

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

Purpose5/5

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

The description explicitly states the action ('Update'), the resource ('an existing chart'), and the context ('in a spreadsheet'), clearly distinguishing it from sibling tools like create_chart and delete_chart.

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 other chart-related tools, nor are there any prerequisites (e.g., requiring the chart ID from a prior list_charts call) or conditions that might make it inappropriate.

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

write_formulasC

Write formulas to cells

ParametersJSON Schema
NameRequiredDescriptionDefault
rangeYesThe A1 notation range to write formulas to
formulasYes2D array of formulas (e.g., [['=SUM(A1:A5)', '=AVERAGE(B1:B5)']])
spreadsheet_idYesThe ID of the spreadsheet

TDQS

C2.6/5.0
Behavior1/5

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

No annotations are present, so the description carries full behavioral disclosure burden. It merely states the action with no details on side effects (e.g., overwriting, error handling), authentication needs, or performance implications.

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 extremely concise (4 words) but lacks sufficient detail. While it is not verbose, the brevity sacrifices clarity and completeness.

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 simplicity of the tool (3 required params, no output schema), the description should at least mention result behavior or constraints. It omits any context about what happens upon execution.

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

Parameters3/5

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

Schema coverage is 100%, so parameters are already documented. The description adds no extra meaning beyond the schema's parameter descriptions.

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 'Write formulas to cells' has a specific verb and resource, clearly indicating it writes formulas rather than values. It distinguishes from sibling 'write_range' which writes values.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like 'write_range' or 'read_formulas'. No usage context, prerequisites, or when-not-to-use advice is provided.

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

write_rangeB

Write data to a range of cells in a spreadsheet

ParametersJSON Schema
NameRequiredDescriptionDefault
rangeYesThe A1 notation range to write (e.g., 'Sheet1!A1:D10')
valuesYes2D array of values to write
spreadsheet_idYesThe ID of the spreadsheet

TDQS

B3.1/5.0
Behavior2/5

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

No annotations exist, so description must carry full burden. It only states 'write data' but does not disclose overwrite behavior, authorization needs, rate limits, or impact on existing data.

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?

Single sentence, no redundancy. However, it is overly terse and could benefit from more detail without sacrificing conciseness.

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?

As a mutation tool with no output schema and many siblings, the description lacks critical context such as whether data is overwritten, sheet expansion behavior, and value format constraints.

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

Parameters3/5

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

Schema coverage is 100% with clear parameter descriptions. The description adds no extra parameter-level meaning beyond stating the action. Baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly specifies the verb 'write' and the resource 'range of cells in a spreadsheet', effectively distinguishing it from siblings like read_range, append_rows, and clear_range.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives (e.g., append_rows for appending, clear_range before writing). It does not mention prerequisites or context.

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 updatesv0.1.0
    • First observedadd_sheet
    • First observedappend_rows
    • First observedauto_resize_dimensions
    • First observedbatch_update
    • First observedclear_range
    • First observedcreate_chart
    • First observedcreate_named_range
    • First observedcreate_spreadsheet
    • First observedcreate_table
    • First observeddelete_chart
    • First observeddelete_dimension
    • First observeddelete_named_range
    • First observeddelete_sheet
    • First observedfind_replace
    • First observedformat_cells
    • First observedformat_cells_advanced
    • First observedget_spreadsheet
    • First observedinsert_dimension
    • First observedlist_charts
    • First observedlist_named_ranges
    • First observedmerge_cells
    • First observedread_formulas
    • First observedread_range
    • First observedset_data_validation
    • First observedsort_range
    • First observedunmerge_cells
    • First observedupdate_chart
    • First observedwrite_formulas
    • First observedwrite_range

TDQS

B3.1/5.0

Scored across 29 tools

Disambiguation5/5

Each tool targets a distinct operation (e.g., read vs write, create vs delete, add vs delete sheet) with no overlapping purposes. Even similar tools like format_cells and format_cells_advanced are clearly differentiated by scope.

Naming Consistency4/5

Most tools follow a verb_noun pattern (e.g., create_spreadsheet, delete_sheet, merge_cells). Minor deviations like format_cells_advanced (adjective appended) and auto_resize_dimensions (prefix) are present but do not cause confusion.

Tool Count4/5

29 tools is high but justified by the rich feature set of Google Sheets. Each tool serves a clear purpose, and while some users might prefer fewer, the count is not excessive for comprehensive coverage.

Completeness3/5

Covers core operations (CRUD for sheets, ranges, charts, named ranges) but missing advanced features like conditional formatting, data filtering, or pivot tables. Agents can accomplish most tasks but may encounter gaps.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers