Google Sheets MCP Server
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Google Sheets MCP ServerCreate a new spreadsheet named 'Inventory'"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Google Sheets MCP Server
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)
Go to Google Cloud Console
Create a new project or select existing one
Enable the Google Sheets API:
Go to "APIs & Services" > "Library"
Search for "Google Sheets API"
Click "Enable"
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
Create OAuth credentials:
Go to "APIs & Services" > "Credentials"
Click "Create Credentials" > "OAuth client ID"
Select "Desktop app"
Download the JSON file
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)
Go to Google Cloud Console
Create a new project or select existing one
Enable the Google Sheets API
Create a Service Account:
Go to "APIs & Services" > "Credentials"
Click "Create Credentials" > "Service account"
Fill in details and create
Create a key:
Click on the service account
Go to "Keys" tab
"Add Key" > "Create new key" > JSON
Save the key:
mkdir -p ~/.config/google-sheets-mcp mv ~/Downloads/*.json ~/.config/google-sheets-mcp/service_account.jsonImportant: 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 |
| OAuth 2.0 client credentials |
| OAuth 2.0 access token (auto-generated) |
| 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 |
| Absolute minimum data only | Maximum token efficiency, basic operations | ~60-80% |
| Essential data with abbreviated keys (default) | Best balance of efficiency and readability | ~40-60% |
| Readable but efficient output | Human-readable while still optimized | ~20-30% |
| 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=minimalConfiguration 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-mcpDevelopment
# 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.pyTest 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 toolsadd_sheetB
Add a new sheet to an existing spreadsheet
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | Title of the new sheet | |
| spreadsheet_id | Yes | The ID of the spreadsheet |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| range | Yes | The A1 notation of the range to append to (e.g., 'Sheet1!A:D') | |
| values | Yes | 2D array of rows to append | |
| spreadsheet_id | Yes | The ID of the spreadsheet |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| sheet_id | Yes | The ID of the sheet | |
| dimension | Yes | Whether to resize rows or columns | |
| end_index | Yes | Ending index (exclusive) | |
| start_index | Yes | Starting index (0-based) | |
| spreadsheet_id | Yes | The ID of the spreadsheet |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | Array of {range, values} objects | |
| spreadsheet_id | Yes | The ID of the spreadsheet |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| range | Yes | The A1 notation range to clear (e.g., 'Sheet1!A1:D10') | |
| spreadsheet_id | Yes | The ID of the spreadsheet |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | Chart title | |
| position | No | Position of the chart on the sheet (optional) | |
| sheet_id | Yes | The ID of the sheet | |
| chart_type | Yes | Type of chart to create | |
| data_range | Yes | Range containing the data to chart | |
| spreadsheet_id | Yes | The ID of the spreadsheet | |
| legend_position | No | Position of the chart legend (optional, defaults to RIGHT_LEGEND) |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name for the range | |
| end_row | Yes | Ending row index (exclusive) | |
| sheet_id | Yes | The ID of the sheet | |
| start_row | Yes | Starting row index (0-based) | |
| end_column | Yes | Ending column index (exclusive) | |
| start_column | Yes | Starting column index (0-based) | |
| spreadsheet_id | Yes | The ID of the spreadsheet |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | Title of the new spreadsheet | |
| sheets | No | List of sheet names to create (optional) |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| range | Yes | The range to convert to a table | |
| columns | No | Column configurations (optional) | |
| sheet_id | Yes | The ID of the sheet | |
| table_id | No | Unique identifier for the table (optional, will be auto-generated if not provided) | |
| spreadsheet_id | Yes | The ID of the spreadsheet |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| chart_id | Yes | The ID of the chart to delete | |
| spreadsheet_id | Yes | The ID of the spreadsheet |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| sheet_id | Yes | The ID of the sheet | |
| dimension | Yes | Whether to delete rows or columns | |
| end_index | Yes | Ending index (exclusive) | |
| start_index | Yes | Starting index (0-based) to delete | |
| spreadsheet_id | Yes | The ID of the spreadsheet |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| named_range_id | Yes | The ID of the named range to delete | |
| spreadsheet_id | Yes | The ID of the spreadsheet |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| sheet_id | Yes | The ID of the sheet to delete (get from get_spreadsheet) | |
| spreadsheet_id | Yes | The ID of the spreadsheet |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| find | Yes | Text to find | |
| replace | Yes | Text to replace with | |
| sheet_id | No | The ID of the sheet (optional, searches all sheets if not provided) | |
| match_case | No | Whether to match case | |
| spreadsheet_id | Yes | The ID of the spreadsheet | |
| search_formulas | No | Whether to search in formulas | |
| match_entire_cell | No | Whether to match entire cell content |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| bold | No | Make text bold | |
| italic | No | Make text italic | |
| end_row | Yes | Ending row index (exclusive) | |
| sheet_id | Yes | The ID of the sheet | |
| start_row | Yes | Starting row index (0-based) | |
| end_column | Yes | Ending column index (exclusive) | |
| start_column | Yes | Starting column index (0-based) | |
| spreadsheet_id | Yes | The ID of the spreadsheet | |
| background_color | No | Background color (RGB values 0-1) |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| end_row | Yes | Ending row index (exclusive) | |
| sheet_id | Yes | The ID of the sheet | |
| font_size | No | Font size in points | |
| start_row | Yes | Starting row index (0-based) | |
| border_top | No | ||
| end_column | Yes | Ending column index (exclusive) | |
| text_color | No | Text color (RGB values 0-1) | |
| border_left | No | ||
| font_family | No | Font family name | |
| border_right | No | ||
| start_column | Yes | Starting column index (0-based) | |
| border_bottom | No | ||
| number_format | No | Number format pattern (e.g., '$#,##0.00', '0.00%', 'yyyy-mm-dd') | |
| wrap_strategy | No | Text wrapping strategy | |
| spreadsheet_id | Yes | The ID of the spreadsheet | |
| vertical_alignment | No | Vertical text alignment | |
| horizontal_alignment | No | Horizontal text alignment |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| spreadsheet_id | Yes | The ID of the spreadsheet |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| sheet_id | Yes | The ID of the sheet | |
| dimension | Yes | Whether to insert rows or columns | |
| end_index | Yes | Ending index (exclusive) - number of rows/columns to insert | |
| start_index | Yes | Starting index (0-based) where to insert | |
| spreadsheet_id | Yes | The ID of the spreadsheet |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| sheet_id | No | The ID of the sheet (optional, lists charts from all sheets if not provided) | |
| spreadsheet_id | Yes | The ID of the spreadsheet |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| spreadsheet_id | Yes | The ID of the spreadsheet |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| end_row | Yes | Ending row index (exclusive) | |
| sheet_id | Yes | The ID of the sheet | |
| start_row | Yes | Starting row index (0-based) | |
| end_column | Yes | Ending column index (exclusive) | |
| merge_type | Yes | How to merge the cells | |
| start_column | Yes | Starting column index (0-based) | |
| spreadsheet_id | Yes | The ID of the spreadsheet |
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| range | Yes | The A1 notation range to read formulas from | |
| spreadsheet_id | Yes | The ID of the spreadsheet |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| range | Yes | The A1 notation range to read (e.g., 'Sheet1!A1:D10') | |
| spreadsheet_id | Yes | The ID of the spreadsheet |
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| strict | No | Whether to reject invalid input | |
| values | No | List of valid values (for ONE_OF_LIST) | |
| end_row | Yes | Ending row index (exclusive) | |
| sheet_id | Yes | The ID of the sheet | |
| max_value | No | Maximum value (for NUMBER_LESS, NUMBER_BETWEEN, DATE_BETWEEN) | |
| min_value | No | Minimum value (for NUMBER_GREATER, NUMBER_BETWEEN, DATE_BETWEEN) | |
| start_row | Yes | Starting row index (0-based) | |
| end_column | Yes | Ending column index (exclusive) | |
| start_column | Yes | Starting column index (0-based) | |
| show_dropdown | No | Whether to show dropdown for list validation | |
| spreadsheet_id | Yes | The ID of the spreadsheet | |
| validation_type | Yes | Type of validation |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| end_row | Yes | Ending row index (exclusive) | |
| sheet_id | Yes | The ID of the sheet | |
| start_row | Yes | Starting row index (0-based) | |
| end_column | Yes | Ending column index (exclusive) | |
| sort_specs | Yes | Array of sort specifications | |
| start_column | Yes | Starting column index (0-based) | |
| spreadsheet_id | Yes | The ID of the spreadsheet |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| end_row | Yes | Ending row index (exclusive) | |
| sheet_id | Yes | The ID of the sheet | |
| start_row | Yes | Starting row index (0-based) | |
| end_column | Yes | Ending column index (exclusive) | |
| start_column | Yes | Starting column index (0-based) | |
| spreadsheet_id | Yes | The ID of the spreadsheet |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | New chart title (optional) | |
| chart_id | Yes | The ID of the chart to update | |
| chart_type | No | New chart type (optional) | |
| data_range | No | New data range (optional) | |
| spreadsheet_id | Yes | The ID of the spreadsheet | |
| legend_position | No | New legend position (optional) |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| range | Yes | The A1 notation range to write formulas to | |
| formulas | Yes | 2D array of formulas (e.g., [['=SUM(A1:A5)', '=AVERAGE(B1:B5)']]) | |
| spreadsheet_id | Yes | The ID of the spreadsheet |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| range | Yes | The A1 notation range to write (e.g., 'Sheet1!A1:D10') | |
| values | Yes | 2D array of values to write | |
| spreadsheet_id | Yes | The ID of the spreadsheet |
TDQS
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.
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.
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.
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.
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.
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.
29 tool updates
v0.1.0- First observed
add_sheet - First observed
append_rows - First observed
auto_resize_dimensions - First observed
batch_update - First observed
clear_range - First observed
create_chart - First observed
create_named_range - First observed
create_spreadsheet - First observed
create_table - First observed
delete_chart - First observed
delete_dimension - First observed
delete_named_range - First observed
delete_sheet - First observed
find_replace - First observed
format_cells - First observed
format_cells_advanced - First observed
get_spreadsheet - First observed
insert_dimension - First observed
list_charts - First observed
list_named_ranges - First observed
merge_cells - First observed
read_formulas - First observed
read_range - First observed
set_data_validation - First observed
sort_range - First observed
unmerge_cells - First observed
update_chart - First observed
write_formulas - First observed
write_range
TDQS
Scored across 29 tools
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.
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.
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.
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
Related MCP Connectors
MCP server connecting AI agents to 100+ apps (Gmail, Slack, Notion, GitHub) via one-click OAuth.
- ZapierOAuthcom.zapier
Hosted MCP server connecting AI assistants to 9,000+ apps and 40,000+ actions via Zapier.
MCP server that lets AI assistants use all OneSchema features exposed via the public API.
MCP server unifying ERPs, CRMs, APIs and knowledge base for Claude, ChatGPT and Gemini.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceThis MCP server enables AI assistants to automatically sync Google Sheets data to a local database and perform natural language queries and analysis on spreadsheet data.19 npm4MIT
- AlicenseBqualityDmaintenanceAn MCP server for automating Google Workspace applications including Sheets, Apps Script, Drive, Docs, and Gmail. It enables users to manipulate spreadsheets, edit scripts, manage files, and send emails directly from conversational AI interfaces.31MIT
- AlicenseNot gradedqualityNot gradedmaintenanceAn MCP server that lets AI agents read and write Google Sheets using the Google Sheets API v4.MIT
- AlicenseNot gradedqualityBmaintenanceMCP server for Google Sheets operations, enabling spreadsheet management including reading, writing, appending, creating, and searching sheets via natural language.MIT