Skip to main content
Glama

PyPI - Version PyPI Downloads GitHub License GitHub Actions Workflow Status


🤔 What is this?

mcp-google-sheets is a Python-based MCP server that acts as a bridge between any MCP-compatible client (like Claude Desktop) and the Google Sheets API. It allows you to interact with your Google Spreadsheets using a defined set of tools, enabling powerful automation and data manipulation workflows driven by AI.


Related MCP server: sheets-mcp-server

🚀 Quick Start (Using uvx)

Essentially the server runs in one line: uvx mcp-google-sheets@latest.

This command will automatically download the latest code and run it. We recommend always using @latest to ensure you have the newest version with the latest features and bug fixes.

Refer to the ID Reference Guide for more information about the IDs used below.

  1. ☁️ Prerequisite: Google Cloud Setup

    • You must configure Google Cloud Platform credentials and enable the necessary APIs first. We strongly recommend using a Service Account.

    • ➡️ Jump to the Detailed Google Cloud Platform Setup guide below.

  2. 🐍 Install uv

    • uvx is part of uv, a fast Python package installer and resolver. Install it if you haven't already:

      # macOS / Linux
      curl -LsSf https://astral.sh/uv/install.sh | sh
      # Windows
      powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
      # Or using pip:
      # pip install uv

      Follow instructions in the installer output to add uv to your PATH if needed.

  3. 🔑 Set Essential Environment Variables (Service Account Recommended)

    • You need to tell the server how to authenticate. Set these variables in your terminal:

    • (Linux/macOS)

      # Replace with YOUR actual path and folder ID from the Google Setup step
      export SERVICE_ACCOUNT_PATH="/path/to/your/service-account-key.json"
      export DRIVE_FOLDER_ID="YOUR_DRIVE_FOLDER_ID"
    • (Windows CMD)

      set SERVICE_ACCOUNT_PATH="C:\path\to\your\service-account-key.json"
      set DRIVE_FOLDER_ID="YOUR_DRIVE_FOLDER_ID"
    • (Windows PowerShell)

      $env:SERVICE_ACCOUNT_PATH = "C:\path\to\your\service-account-key.json"
      $env:DRIVE_FOLDER_ID = "YOUR_DRIVE_FOLDER_ID"
    • ➡️ See Detailed Authentication & Environment Variables for other options (OAuth, CREDENTIALS_CONFIG).

  4. 🏃 Run the Server!

    • uvx will automatically download and run the latest version of mcp-google-sheets:

      uvx mcp-google-sheets@latest
    • The server will start and print logs indicating it's ready.

    • 💡 Pro Tip: Always use @latest to ensure you get the newest version with bug fixes and features. Without @latest, uvx may use a cached older version.

  5. 🔌 Connect your MCP Client

    • Configure your client (e.g., Claude Desktop) to connect to the running server.

    • Depending on the client you use, you might not need step 4 because the client can launch the server for you. But it's a good practice to test run step 4 anyway to make sure things are set up properly.

    • ➡️ See Usage with Claude Desktop for examples.

  6. ⚡ Optional: Enable Tool Filtering (Reduce Context Usage)

    • By default, all 19 tools are enabled (~13K tokens). To reduce context usage, enable only the tools you need.

    • ➡️ See Tool Filtering for details.

You're ready! Start issuing commands via your MCP client.


✨ Key Features

  • Seamless Integration: Connects directly to Google Drive & Google Sheets APIs.

  • Comprehensive Tools: Offers a wide range of operations (CRUD, listing, batching, sharing, formatting, etc.).

  • Flexible Authentication: Supports Service Accounts (recommended), OAuth 2.0, and direct credential injection via environment variables.

  • Easy Deployment: Run instantly with uvx (zero-install feel) or clone for development using uv.

  • AI-Ready: Designed for use with MCP-compatible clients, enabling natural language spreadsheet interaction.

  • Tool Filtering: Reduce context window usage by enabling only the tools you need with --include-tools or ENABLED_TOOLS environment variable.


🎯 Tool Filtering (Reduce Context Usage)

Problem: By default, this MCP server exposes all 19 tools, consuming ~13,000 tokens before any conversation begins. If you only need a few tools, this wastes valuable context window space.

Solution: Use tool filtering to enable only the tools you actually use.

How to Enable Tool Filtering

You can filter tools using either:

  1. Command-line argument --include-tools:

    {
      "mcpServers": {
        "google-sheets": {
          "command": "uvx",
          "args": [
            "mcp-google-sheets@latest",
            "--include-tools",
            "get_sheet_data,update_cells,list_spreadsheets,list_sheets"
          ],
          "env": {
            "SERVICE_ACCOUNT_PATH": "/path/to/credentials.json"
          }
        }
      }
    }
  2. Environment variable ENABLED_TOOLS:

    {
      "mcpServers": {
        "google-sheets": {
          "command": "uvx",
          "args": ["mcp-google-sheets@latest"],
          "env": {
            "SERVICE_ACCOUNT_PATH": "/path/to/credentials.json",
            "ENABLED_TOOLS": "get_sheet_data,update_cells,list_spreadsheets,list_sheets"
          }
        }
      }
    }

Available Tool Names

When filtering, use these exact tool names (comma-separated, no spaces):

Most Common Tools (recommended subset):

  • get_sheet_data - Read from spreadsheets

  • update_cells - Write to spreadsheets

  • list_spreadsheets - Find spreadsheets

  • list_sheets - Navigate tabs

All Available Tools:

  • add_columns

  • add_rows

  • batch_update

  • batch_update_cells

  • copy_sheet

  • create_sheet

  • create_spreadsheet

  • find_in_spreadsheet

  • get_multiple_sheet_data

  • get_multiple_spreadsheet_summary

  • get_sheet_data

  • get_sheet_formulas

  • list_folders

  • list_sheets

  • list_spreadsheets

  • rename_sheet

  • search_spreadsheets

  • share_spreadsheet

  • update_cells

Note: If neither --include-tools nor ENABLED_TOOLS is specified, all tools are enabled (default behavior).


🛠️ Available Tools & Resources

This server exposes the following tools for interacting with Google Sheets:

Refer to the ID Reference Guide for more information about the IDs used below.

(Input parameters are typically strings unless otherwise specified)

  • list_spreadsheets: Lists spreadsheets in the configured Drive folder (Service Account) or accessible by the user (OAuth).

    • folder_id (optional string): Google Drive folder ID to search in. Get from its URL. If omitted, uses the configured default folder or searches 'My Drive'.

    • Returns: List of objects [{id: string, title: string}]

  • create_spreadsheet: Creates a new spreadsheet.

    • title (string): The desired title for the spreadsheet. Example: "Quarterly Report Q4".

    • folder_id (optional string): Google Drive folder ID where the spreadsheet should be created. Get from its URL. If omitted, uses configured default or root.

    • Returns: Object with spreadsheet info, including spreadsheetId, title, and folder.

  • get_sheet_data: Reads data from a range in a sheet/tab.

    • spreadsheet_id (string): The spreadsheet ID (from its URL).

    • sheet (string): Name of the sheet/tab (e.g., "Sheet1").

    • range (optional string): A1 notation (e.g., 'A1:C10', 'Sheet1!B2:D'). If omitted, reads the whole sheet/tab specified by sheet.

    • include_grid_data (optional boolean, default False): If True, returns full grid data including formatting and metadata (much larger). If False, returns values only (more efficient).

    • Returns: If include_grid_data=True, full grid data with metadata (get response). If False, a values result object from the Values API (values.get response).

  • get_sheet_formulas: Reads formulas from a range in a sheet/tab.

    • spreadsheet_id (string): The spreadsheet ID (from its URL).

    • sheet (string): Name of the sheet/tab (e.g., "Sheet1").

    • range (optional string): A1 notation (e.g., 'A1:C10', 'Sheet1!B2:D'). If omitted, reads all formulas in the sheet/tab specified by sheet.

    • Returns: 2D array of cell formulas (array of arrays) (values.get response).

  • update_cells: Writes data to a specific range. Overwrites existing data.

    • spreadsheet_id (string): The spreadsheet ID (from its URL).

    • sheet (string): Name of the sheet/tab (e.g., "Sheet1").

    • range (string): A1 notation range to write to (e.g., 'A1:C3').

    • data (array of arrays): 2D array of values to write. Example: [[1, 2, 3], ["a", "b", "c"]].

    • Returns: Update result object (values.update response).

  • batch_update_cells: Updates multiple ranges in one API call.

    • spreadsheet_id (string): The spreadsheet ID (from its URL).

    • sheet (string): Name of the sheet/tab (e.g., "Sheet1").

    • ranges (object): Dictionary mapping range strings (A1 notation) to 2D arrays of values. Example: { "A1:B2": [[1, 2], [3, 4]], "D5": [["Hello"]] }.

    • Returns: Result of the operation (values.batchUpdate response).

  • add_rows: Adds (inserts) empty rows to a sheet/tab at a specified index.

    • spreadsheet_id (string): The spreadsheet ID (from its URL).

    • sheet (string): Name of the sheet/tab (e.g., "Sheet1").

    • count (integer): Number of empty rows to insert.

    • start_row (optional integer, default 0): 0-based row index to start inserting rows. If omitted, defaults to 0 (inserts at the beginning).

    • Returns: Result of the operation (batchUpdate response).

  • list_sheets: Lists all sheet/tab names within a spreadsheet.

    • spreadsheet_id (string): The spreadsheet ID (from its URL).

    • Returns: List of sheet/tab name strings. Example: ["Sheet1", "Sheet2"].

  • create_sheet: Adds a new sheet/tab to a spreadsheet.

    • spreadsheet_id (string): The spreadsheet ID (from its URL).

    • title (string): Name for the new sheet/tab.

    • Returns: New sheet properties object.

  • get_multiple_sheet_data: Fetches data from multiple ranges across potentially different spreadsheets in one call.

    • queries (array of objects): Each object needs spreadsheet_id, sheet, and range. Example: [{"spreadsheet_id": "abc", "sheet": "Sheet1", "range": "A1:B2"}, ...].

    • Returns: List of objects, each containing the query params and fetched data or an error. Each data is a values.get response.

  • get_multiple_spreadsheet_summary: Gets titles, sheet/tab names, headers, and first few rows for multiple spreadsheets.

    • spreadsheet_ids (array of strings): IDs of the spreadsheets (from their URLs).

    • rows_to_fetch (optional integer, default 5): How many rows (including header) to preview. Example: 5.

    • Returns: List of summary objects for each spreadsheet.

  • share_spreadsheet: Shares a spreadsheet with specified users/emails and roles.

    • spreadsheet_id (string): The spreadsheet ID (from its URL).

    • recipients (array of objects): [{"email_address": "user@example.com", "role": "writer"}, ...]. Roles: reader, commenter, writer.

    • send_notification (optional boolean, default True): Send email notifications to recipients.

    • Returns: Dictionary with successes and failures lists.

  • add_columns: Adds (inserts) empty columns to a sheet/tab at a specified index.

    • spreadsheet_id (string): The spreadsheet ID (from its URL).

    • sheet (string): Name of the sheet/tab (e.g., "Sheet1").

    • count (integer): Number of empty columns to insert.

    • start_column (optional integer, default 0): 0-based column index to start inserting. If omitted, defaults to 0 (inserts at the beginning).

    • Returns: Result of the operation (batchUpdate response).

  • copy_sheet: Duplicates a sheet/tab from one spreadsheet to another and optionally renames it.

    • src_spreadsheet (string): Source spreadsheet ID (from its URL).

    • src_sheet (string): Source sheet/tab name (e.g., "Sheet1").

    • dst_spreadsheet (string): Destination spreadsheet ID (from its URL).

    • dst_sheet (string): Desired sheet/tab name in the destination spreadsheet.

    • Returns: Result of the copy and optional rename operations.

  • rename_sheet: Renames an existing sheet/tab.

    • spreadsheet (string): The spreadsheet ID (from its URL).

    • sheet (string): Current sheet/tab name (e.g., "Sheet1").

    • new_name (string): New sheet/tab name (e.g., "Transactions").

    • Returns: Result of the operation (batchUpdate response).

  • add_chart: Creates a chart in a Google Spreadsheet from specified data.

    • spreadsheet_id (string): The spreadsheet ID (from its URL).

    • sheet (string): Name of the sheet/tab containing the data (e.g., "Sheet1").

    • chart_type (string): Type of chart to create. Options: COLUMN (vertical bars), BAR (horizontal bars), LINE, AREA, PIE, SCATTER, COMBO, HISTOGRAM.

    • data_range (string): A1 notation range for the chart data (e.g., "A1:C10"). First row is treated as headers.

    • title (optional string): Chart title.

    • x_axis_label (optional string): Label for the X axis (bottom axis). Not applicable for pie charts.

    • y_axis_label (optional string): Label for the Y axis (left axis). Not applicable for pie charts.

    • position_x (optional integer, default 0): Horizontal position offset in pixels from the top-left corner.

    • position_y (optional integer, default 0): Vertical position offset in pixels from the top-left corner.

    • width (optional integer, default 600): Width of the chart in pixels.

    • height (optional integer, default 400): Height of the chart in pixels.

    • Returns: Result object with success status, chart ID, and operation details.

MCP Resources:

  • spreadsheet://{spreadsheet_id}/info: Get basic metadata about a Google Spreadsheet.

    • Returns: JSON string with spreadsheet information.


☁️ Google Cloud Platform Setup (Detailed)

This setup is required before running the server.

  1. Create/Select a GCP Project: Go to the Google Cloud Console.

  2. Enable APIs: Navigate to "APIs & Services" -> "Library". Search for and enable:

    • Google Sheets API

    • Google Drive API

  3. Configure Credentials: You need to choose one authentication method below (Service Account is recommended).


🔑 Authentication & Environment Variables (Detailed)

The server needs credentials to access Google APIs. Choose one method:

Refer to the ID Reference Guide for more information about the IDs used below.

  • Why? Headless (no browser needed), secure, ideal for server environments. Doesn't expire easily.

  • Steps:

    1. Create Service Account: In GCP Console -> "IAM & Admin" -> "Service Accounts".

      • Click "+ CREATE SERVICE ACCOUNT". Name it (e.g., mcp-sheets-service).

      • Grant Roles: Add Editor role for broad access, or more granular roles (like roles/drive.file and specific Sheets roles) for stricter permissions.

      • Click "Done". Find the account, click Actions (⋮) -> "Manage keys".

      • Click "ADD KEY" -> "Create new key" -> JSON -> "CREATE".

      • Download and securely store the JSON key file.

    2. Create & Share Google Drive Folder:

      • In Google Drive, create a folder (e.g., "AI Managed Sheets").

      • Note the Folder ID from the URL: https://drive.google.com/drive/folders/THIS_IS_THE_FOLDER_ID.

      • Right-click the folder -> "Share" -> "Share".

      • Enter the Service Account's email (from the JSON file client_email).

      • Grant Editor access. Uncheck "Notify people". Click "Share".

    3. Set Environment Variables:

      • SERVICE_ACCOUNT_PATH: Full path to the downloaded JSON key file.

      • DRIVE_FOLDER_ID: The ID of the shared Google Drive folder. (See Ultra Quick Start for OS-specific examples)

Method B: OAuth 2.0 (Interactive / Personal Use) 🧑‍💻

  • Why? For personal use or local development where interactive browser login is okay.

  • Steps:

    1. Configure OAuth Consent Screen: In GCP Console -> "APIs & Services" -> "OAuth consent screen". Select "External", fill required info, add scopes (.../auth/spreadsheets, .../auth/drive), add test users if needed.

    2. Create OAuth Client ID: In GCP Console -> "APIs & Services" -> "Credentials". "+ CREATE CREDENTIALS" -> "OAuth client ID" -> Type: Desktop app. Name it. "CREATE". Download JSON.

    3. Set Environment Variables:

      • CREDENTIALS_PATH: Path to the downloaded OAuth credentials JSON file (default: credentials.json).

      • TOKEN_PATH: Path to store the user's refresh token after first login (default: token.json). Must be writable.

Method C: Direct Credential Injection (Advanced) 🔒

  • Why? Useful in environments like Docker, Kubernetes, or CI/CD where managing files is hard, but environment variables are easy/secure. Avoids file system access.

  • How? Instead of providing a path to the credentials file, you provide the content of the file, encoded in Base64, directly in an environment variable.

  • Steps:

    1. Get your credentials JSON file (either Service Account key or OAuth Client ID file). Let's call it your_credentials.json.

    2. Generate the Base64 string:

      • (Linux/macOS): base64 -w 0 your_credentials.json

      • (Windows PowerShell):

        $filePath = "C:\path\to\your_credentials.json"; # Use actual path
        $bytes = [System.IO.File]::ReadAllBytes($filePath);
        $base64 = [System.Convert]::ToBase64String($bytes);
        $base64 # Copy this output
      • (Caution): Avoid pasting sensitive credentials into untrusted online encoders.

    3. Set the Environment Variable:

      • CREDENTIALS_CONFIG: Set this variable to the full Base64 string you just generated.

        # Example (Linux/macOS) - Use the actual string generated
        export CREDENTIALS_CONFIG="ewogICJ0eXBlIjogInNlcnZpY2VfYWNjb..."

Method D: Application Default Credentials (ADC) 🌐

  • Why? Ideal for Google Cloud environments (GKE, Compute Engine, Cloud Run) and local development with gcloud auth application-default login. No explicit credential files needed.

  • How? Uses Google's Application Default Credentials chain to automatically discover credentials from multiple sources.

  • ADC Search Order:

    1. GOOGLE_APPLICATION_CREDENTIALS environment variable (path to service account key) - Google's standard variable

    2. gcloud auth application-default login credentials (local development)

    3. Attached service account from metadata server (GKE, Compute Engine, etc.)

  • Setup:

    • Local Development:

      1. Run gcloud auth application-default login --scopes=https://www.googleapis.com/auth/cloud-platform,https://www.googleapis.com/auth/spreadsheets,https://www.googleapis.com/auth/drive once

      2. Set a quota project: gcloud auth application-default set-quota-project <project_id> (replace <project_id> with your Google Cloud project ID)

    • Google Cloud: Attach a service account to your compute resource

    • Environment Variable: Set GOOGLE_APPLICATION_CREDENTIALS=/path/to/service-account.json (Google's standard)

  • No additional environment variables needed - ADC is used automatically as a fallback when other methods fail.

Note: GOOGLE_APPLICATION_CREDENTIALS is Google's official standard environment variable, while SERVICE_ACCOUNT_PATH is specific to this MCP server. If you set GOOGLE_APPLICATION_CREDENTIALS, ADC will find it automatically.

Authentication Priority & Summary

The server checks for credentials in this order:

  1. CREDENTIALS_CONFIG (Base64 content)

  2. SERVICE_ACCOUNT_PATH (Path to Service Account JSON)

  3. CREDENTIALS_PATH (Path to OAuth JSON) - triggers interactive flow if token is missing/expired

  4. Application Default Credentials (ADC) - automatic fallback

Environment Variable Summary:

Variable

Method(s)

Description

Default

SERVICE_ACCOUNT_PATH

Service Account

Path to the Service Account JSON key file (MCP server specific).

-

GOOGLE_APPLICATION_CREDENTIALS

ADC

Path to service account key (Google's standard variable).

-

DRIVE_FOLDER_ID

Service Account

ID of the Google Drive folder shared with the Service Account.

-

CREDENTIALS_PATH

OAuth 2.0

Path to the OAuth 2.0 Client ID JSON file.

credentials.json

TOKEN_PATH

OAuth 2.0

Path to store the generated OAuth token.

token.json

CREDENTIALS_CONFIG

Service Account / OAuth 2.0

Base64 encoded JSON string of credentials content.

-


⚙️ Running the Server (Detailed)

Refer to the ID Reference Guide for more information about the IDs used below.

Method 1: Using uvx (Recommended for Users)

As shown in the Ultra Quick Start, this is the easiest way. Set environment variables, then run:

uvx mcp-google-sheets@latest

uvx handles fetching and running the package temporarily.

Method 2: For Development (Cloning the Repo)

If you want to modify the code:

  1. Clone: git clone https://github.com/yourusername/mcp-google-sheets.git && cd mcp-google-sheets (Use actual URL)

  2. Set Environment Variables: As described above.

  3. Run using uv: (Uses the local code)

    uv run mcp-google-sheets
    # Or via the script name if defined in pyproject.toml, e.g.:
    # uv run start

Method 3: Docker (SSE transport)

Run the server in a container using the included Dockerfile:

# Build the image
docker build -t mcp-google-sheets .

# Run (SSE on port 8000)
# NOTE: Prefer CREDENTIALS_CONFIG (Base64 credentials content) in containers.
docker run --rm -p 8000:8000 ^
  -e HOST=0.0.0.0 ^
  -e PORT=8000 ^
  -e CREDENTIALS_CONFIG=YOUR_BASE64_CREDENTIALS ^
  -e DRIVE_FOLDER_ID=YOUR_DRIVE_FOLDER_ID ^
  mcp-google-sheets
  • Use CREDENTIALS_CONFIG instead of SERVICE_ACCOUNT_PATH inside Docker to avoid mounting secrets as files.

  • The container starts with --transport sse and listens on HOST/PORT. Point your MCP client to http://localhost:8000 using SSE transport.


🔌 Usage with Claude Desktop

Add the server config to claude_desktop_config.json under mcpServers. Choose the block matching your setup:

Refer to the ID Reference Guide for more information about the IDs used below.

⚠️ Important Notes:

  • 🍎 macOS Users: use the full path: "/Users/yourusername/.local/bin/uvx" instead of just "uvx"

{
  "mcpServers": {
    "google-sheets": {
      "command": "uvx",
      "args": ["mcp-google-sheets@latest"],
      "env": {
        "SERVICE_ACCOUNT_PATH": "/full/path/to/your/service-account-key.json",
        "DRIVE_FOLDER_ID": "your_shared_folder_id_here"
      }
    }
  }
}

🍎 macOS Note: If you get a spawn uvx ENOENT error, use the full path to uvx:

{
  "mcpServers": {
    "google-sheets": {
      "command": "/Users/yourusername/.local/bin/uvx",
      "args": ["mcp-google-sheets@latest"],
      "env": {
        "SERVICE_ACCOUNT_PATH": "/full/path/to/your/service-account-key.json",
        "DRIVE_FOLDER_ID": "your_shared_folder_id_here"
      }
    }
  }
}

Replace yourusername with your actual username.

{
  "mcpServers": {
    "google-sheets": {
      "command": "uvx",
      "args": ["mcp-google-sheets@latest"],
      "env": {
        "CREDENTIALS_PATH": "/full/path/to/your/credentials.json",
        "TOKEN_PATH": "/full/path/to/your/token.json"
      }
    }
  }
}

Note: A browser may open for Google login on first use. Ensure TOKEN_PATH is writable.

🍎 macOS Note: If you get a spawn uvx ENOENT error, replace "command": "uvx" with "command": "/Users/yourusername/.local/bin/uvx" (replace yourusername with your actual username).

{
  "mcpServers": {
    "google-sheets": {
      "command": "uvx",
      "args": ["mcp-google-sheets@latest"],
      "env": {
        "CREDENTIALS_CONFIG": "ewogICJ0eXBlIjogInNlcnZpY2VfYWNjb3VudCIsCiAgInByb2plY3RfaWQiOiAi...",
        "DRIVE_FOLDER_ID": "your_shared_folder_id_here"
      }
    }
  }
}

Note: Paste the full Base64 string for CREDENTIALS_CONFIG. DRIVE_FOLDER_ID is still needed for Service Account folder context.

🍎 macOS Note: If you get a spawn uvx ENOENT error, replace "command": "uvx" with "command": "/Users/yourusername/.local/bin/uvx" (replace yourusername with your actual username).

Option 1: With GOOGLE_APPLICATION_CREDENTIALS

{
  "mcpServers": {
    "google-sheets": {
      "command": "uvx",
      "args": ["mcp-google-sheets@latest"],
      "env": {
        "GOOGLE_APPLICATION_CREDENTIALS": "/path/to/service-account.json"
      }
    }
  }
}

Option 2: With gcloud auth (no env vars needed)

{
  "mcpServers": {
    "google-sheets": {
      "command": "uvx",
      "args": ["mcp-google-sheets@latest"],
      "env": {}
    }
  }
}

Prerequisites:

  1. Run gcloud auth application-default login --scopes=https://www.googleapis.com/auth/cloud-platform,https://www.googleapis.com/auth/spreadsheets,https://www.googleapis.com/auth/drive first.

  2. Set quota project: gcloud auth application-default set-quota-project <project_id>

🍎 macOS Note: If you get a spawn uvx ENOENT error, replace "command": "uvx" with "command": "/Users/yourusername/.local/bin/uvx" (replace yourusername with your actual username).

{
  "mcpServers": {
    "mcp-google-sheets-local": {
      "command": "uv",
      "args": [
        "run",
        "--directory",
        "/path/to/your/mcp-google-sheets",
        "mcp-google-sheets"
      ],
      "env": {
        "SERVICE_ACCOUNT_PATH": "/path/to/your/mcp-google-sheets/service_account.json",
        "DRIVE_FOLDER_ID": "your_drive_folder_id_here"
      }
    }
  }
}

Note: Use --directory flag to specify the project path, and adjust paths to match your actual workspace location.


💬 Example Prompts for Claude

Once connected, try prompts like:

  • "List all spreadsheets I have access to." (or "in my AI Managed Sheets folder")

  • "Create a new spreadsheet titled 'Quarterly Sales Report Q3 2024'."

  • "In the 'Quarterly Sales Report' spreadsheet, get the data from Sheet1 range A1 to E10."

  • "Add a new sheet named 'Summary' to the spreadsheet with ID 1aBcDeFgHiJkLmNoPqRsTuVwXyZ."

  • "In my 'Project Tasks' spreadsheet, Sheet 'Tasks', update cell B2 to 'In Progress'."

  • "Append these rows to the 'Log' sheet in spreadsheet XYZ: [['2024-07-31', 'Task A Completed'], ['2024-08-01', 'Task B Started']]"

  • "Get a summary of the spreadsheets 'Sales Data' and 'Inventory Count'."

  • "Share the 'Team Vacation Schedule' spreadsheet with team@example.com as a reader and manager@example.com as a writer. Don't send notifications."

  • "Create a column chart in my 'Sales Report' spreadsheet showing monthly revenue from data in range A1:B13."

  • "Add a pie chart to the 'Market Analysis' sheet with data from A1:B5 titled 'Market Share by Product'."

  • "In spreadsheet abc123, create a line chart on Sheet1 from range A1:C10 with title 'Growth Trends' and labels 'Month' and 'Revenue'."


🆔 ID Reference Guide

Use the following reference guide to find the various IDs referenced throughout the docs:

Google Cloud Project ID:
  https://console.cloud.google.com/apis/dashboard?project=sheets-mcp-server-123456
                                                          └───── Project ID ─────┘

Google Drive Folder ID:
  https://drive.google.com/drive/u/0/folders/1xcRQCU9xrNVBPTeNzHqx4hrG7yR91WIa
                                             └────────── Folder ID ──────────┘

Google Sheets Spreadsheet ID:
  https://docs.google.com/spreadsheets/d/25_-_raTaKjaVxu9nJzA7-FCrNhnkd3cXC54BPAOXemI/edit
                                         └───────────── Spreadsheet ID ─────────────┘

🤝 Contributing

Contributions are welcome! Please open an issue to discuss bugs or feature requests. Pull requests are appreciated.


📄 License

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


🙏 Credits

Available Tools

40 tools
add_chartA
Destructive

Add a chart to a Google Spreadsheet.

Creates a chart from the specified data range with customizable type, title, and positioning. The chart is added as a floating element on the sheet.

Args: spreadsheet_id: The ID of the spreadsheet (found in the URL) sheet: The name of the sheet containing the data chart_type: Type of chart to create. Supported types: - COLUMN: Vertical bar chart - BAR: Horizontal bar chart - LINE: Line chart - AREA: Area chart - PIE: Pie chart - SCATTER: Scatter plot - COMBO: Combination chart - HISTOGRAM: Histogram data_range: A1 notation range for chart data (e.g., 'A1:C10'). The first row is typically treated as headers. title: Optional title for the chart x_axis_label: Optional label for the X axis (bottom axis) y_axis_label: Optional label for the Y axis (left axis) position_x: Horizontal position offset in pixels from the top-left corner (default: 0) position_y: Vertical position offset in pixels from the top-left corner (default: 0) width: Width of the chart in pixels (default: 600) height: Height of the chart in pixels (default: 400)

Returns: Result of the chart creation operation

Examples: Create a column chart showing sales data: add_chart( spreadsheet_id="abc123", sheet="Sales", chart_type="COLUMN", data_range="A1:B13", title="Monthly Sales", x_axis_label="Month", y_axis_label="Revenue ($)" )

Create a pie chart for market share:
add_chart(
    spreadsheet_id="abc123",
    sheet="Market",
    chart_type="PIE",
    data_range="A1:B5",
    title="Market Share by Product"
)
ParametersJSON Schema
NameRequiredDescriptionDefault
spreadsheet_idYes
sheetYes
chart_typeYes
data_rangeYes
titleNo
x_axis_labelNo
y_axis_labelNo
position_xNo
position_yNo
widthNo
heightNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

Annotations include destructiveHint=true, but the description does not elaborate on destructiveness (e.g., irreversible addition, overwrite risk). It adds behavioral context like floating element positioning but misses details on limits, permissions, or side effects beyond annotations.

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

Conciseness4/5

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

The description is well-structured with args, returns, and examples, and the main purpose is front-loaded. However, it is slightly verbose due to detailed parameter descriptions and two examples; could be trimmed without losing clarity.

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

Completeness4/5

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

The description covers parameters thoroughly, and an output schema exists (though not shown). Missing context includes error handling, prerequisite permissions (e.g., edit access), and behavior when default values are used. Still, it is largely complete for a tool with good annotations.

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

Parameters5/5

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

Schema description coverage is 0%, but the description compensates fully by listing all 11 parameters with clear explanations, data types, defaults, and examples. This adds significant meaning beyond the schema's basic titles.

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

Purpose5/5

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

The description clearly states the tool adds a chart to a Google Spreadsheet, specifies it creates from a data range with customization, and distinguishes from siblings by being the only chart-creation tool among many spreadsheet operations.

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

Usage Guidelines3/5

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

The description explains what the tool does but provides no explicit guidance on when to use it versus alternatives (e.g., formatting cells or conditional formatting). The agent must infer usage from sibling context, as no other chart tool exists.

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

add_columnsA
Destructive

Add columns to a sheet in a Google Spreadsheet.

Args: spreadsheet_id: The ID of the spreadsheet (found in the URL) sheet: The name of the sheet count: Number of columns to add start_column: 0-based column index to start adding. If not provided, adds at the beginning.

Returns: Result of the operation

ParametersJSON Schema
NameRequiredDescriptionDefault
spreadsheet_idYes
sheetYes
countYes
start_columnNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations provide destructiveHint=true. The description adds behavioral context, such as the default starting position for columns. It does not contradict annotations.

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

Conciseness5/5

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

The description is concise, front-loaded with the main purpose, and uses a clear Args/Returns structure without unnecessary words.

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

Completeness4/5

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

Given the output schema exists, the return value mention is acceptable. All parameters are explained. However, it lacks details on prerequisites like permissions or limits, but overall it's adequate for the tool's complexity.

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

Parameters5/5

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

Schema description coverage is 0%, so the description fully explains all four parameters: spreadsheet_id (where to find), sheet (name), count (number), start_column (0-based, default at beginning). This adds critical meaning beyond the schema.

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

Purpose5/5

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

The description clearly states 'Add columns to a sheet in a Google Spreadsheet', specifying the verb, resource, and scope. It distinguishes from siblings like 'add_rows' and 'delete_rows_columns'.

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

Usage Guidelines3/5

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

The description does not explicitly provide when-to-use or when-not-to-use guidance. It implicitly describes the action but lacks alternative suggestions or exclusion criteria.

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

add_commentA
Destructive

Add a comment to a spreadsheet. Optionally anchor it to a specific cell.

Args: spreadsheet_id: The ID of the spreadsheet content: The comment text anchor_cell: Cell reference in 'Sheet1!A1' format. If omitted, adds a file-level comment.

Returns: The created comment

ParametersJSON Schema
NameRequiredDescriptionDefault
spreadsheet_idYes
contentYes
anchor_cellNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

Adds the optional anchoring behavior and return value. Annotations already provide destructiveHint=true, so description does not need to repeat that, and it adds context about comment placement.

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

Conciseness5/5

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

Three focused sentences with args listed. Front-loaded main action. No redundant words.

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

Completeness4/5

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

Covers core behavior, optional parameter, and return. Given output schema exists, return explanation is sufficient. Lacks potential restrictions or side effects, but overall adequate for a simple create tool.

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

Parameters5/5

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

With 0% schema coverage, the description compensates fully: explains spreadsheet_id, content, anchor_cell format and its effect when omitted. This adds vital meaning beyond schema types.

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

Purpose5/5

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

The description clearly states 'Add a comment to a spreadsheet', using a specific verb and resource. It distinguishes from sibling tools like get_comments and resolve_comment by implying creation.

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

Usage Guidelines4/5

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

Explains when to use anchor_cell vs file-level comment. However, no explicit guidance on when to use this tool over other comment-related siblings.

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

add_conditional_formatA
Destructive

Add a conditional formatting rule to a range.

Args: spreadsheet_id: The ID of the spreadsheet sheet: Sheet/tab name range: A1 notation range (e.g., 'B2:B100') rule_type: Condition type — 'NUMBER_GREATER', 'NUMBER_LESS', 'NUMBER_EQ', 'TEXT_CONTAINS', 'TEXT_NOT_CONTAINS', 'BLANK', 'NOT_BLANK', 'NUMBER_BETWEEN', 'NUMBER_NOT_BETWEEN' values: Condition values (e.g., ['100'] for greater than 100, ['10','50'] for between) background_color: Hex color to apply when condition is met (e.g., '#FF0000')

Returns: Result of the conditional formatting operation

ParametersJSON Schema
NameRequiredDescriptionDefault
spreadsheet_idYes
sheetYes
rangeYes
rule_typeNoNUMBER_GREATER
valuesNo
background_colorNo#FF0000

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

The annotations already indicate destructiveHint=true, so the agent knows the tool modifies the spreadsheet. The description adds no further behavioral details beyond what the annotations provide, such as potential side effects (e.g., overwriting existing rules). It adequately describes the action but adds no extra transparency.

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

Conciseness4/5

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

The description is structured as a docstring with a brief statement followed by an Args list. It is clear and not overly verbose, though the list of rule types could be slightly more concise. Overall, it is well-organized and front-loaded.

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

Completeness4/5

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

Given the 6 parameters (3 required) and the presence of an output schema, the description covers all input parameters well. However, it lacks details about behavior on duplicate rules or invalid ranges. With the output schema present, the lack of return value explanation is acceptable. It is fairly complete for the tool's complexity.

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

Parameters5/5

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

With 0% schema description coverage, the description fully compensates by explaining each parameter in the docstring. It provides examples (e.g., 'B2:B100' for range, 'NUMBER_GREATER' for rule_type, or values like ['100'] for greater than), adding significant meaning beyond the input schema.

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

Purpose5/5

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

The description clearly states the tool 'Add a conditional formatting rule to a range', specifying the verb 'Add', the resource 'conditional formatting rule', and the scope 'to a range'. This distinguishes it from sibling tools like 'add_filter', 'format_cells', etc.

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

Usage Guidelines3/5

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

The description does not provide explicit guidance on when to use this tool versus alternatives or when not to use it. It lists rule types but does not discuss prerequisites or context for selection. Usage is implied by the tool name and purpose, but no explicit when/when-not information is given.

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

add_filterB
Destructive

Add a basic filter (auto-filter) to a range.

Args: spreadsheet_id: The ID of the spreadsheet sheet: Sheet/tab name range: A1 notation range (e.g., 'A1:E100')

Returns: Result of the filter operation

ParametersJSON Schema
NameRequiredDescriptionDefault
spreadsheet_idYes
sheetYes
rangeYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

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

Annotations provide destructiveHint=true, but description adds no context about what is destroyed (e.g., existing filters) or side effects. Does not exceed annotation value.

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

Conciseness4/5

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

Short and direct, purpose is first. Includes args and returns. Efficient but could be more structured.

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

Completeness2/5

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

Missing prerequisites, behavior when filter already exists, or output details. Output schema exists but description's return line is vague. Incomplete for a mutation tool with 3 required params.

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

Parameters3/5

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

Schema coverage is 0%, but description adds format for 'range' (A1 notation). Other parameters lack additional meaning beyond names. Partial compensation.

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

Purpose5/5

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

Clearly states the action 'add' and resource 'basic filter' with scope 'to a range'. Distinguishes from siblings like 'add_conditional_format' or 'add_pivot_table'.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like 'sort_range' or 'add_conditional_format'. No when-not-to-use or prerequisites mentioned.

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

add_pivot_tableB
Destructive

Create a pivot table from source data.

Args: spreadsheet_id: The ID of the spreadsheet source_sheet: Sheet name containing source data source_range: A1 range of source data (e.g., 'A1:E100') target_sheet: Sheet name to place the pivot table target_cell: Cell to anchor the pivot table (default 'A1') row_columns: List of 0-based column indices for row grouping (e.g., [0, 1]) value_columns: List of 0-based column indices to aggregate (e.g., [3, 4]) aggregation: Aggregation function — 'SUM', 'COUNTA', 'AVERAGE', 'MAX', 'MIN'

Returns: Result of the pivot table creation

ParametersJSON Schema
NameRequiredDescriptionDefault
spreadsheet_idYes
source_sheetYes
source_rangeYes
target_sheetYes
target_cellNoA1
row_columnsNo
value_columnsNo
aggregationNoSUM

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior2/5

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

The annotations include destructiveHint=true, indicating mutation. The description adds no additional behavioral information beyond stating it creates a pivot table. It does not disclose side effects, required permissions, error handling, or return value details beyond a vague statement.

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

Conciseness4/5

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

The description is well-structured with an Args list, making it easy to parse. It is efficient with no fluff, though the 'Returns' line is vague and could be omitted if output schema suffices. Overall, it earns its place.

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

Completeness3/5

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

Given the complexity (8 parameters) and lack of schema descriptions, the description covers parameter meanings but lacks workflow context, error scenarios, or data requirements (e.g., headers). With an output schema present, the return value vagueness is acceptable, but more context would improve completeness.

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

Parameters5/5

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

With schema description coverage at 0%, the description fully compensates by providing clear, concise explanations for all 8 parameters, including examples and default values. This adds significant meaning beyond the schema titles.

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

Purpose4/5

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

The description clearly states 'Create a pivot table from source data,' which is a specific verb and resource. It distinguishes from siblings as none of the listed sibling tools create pivot tables. However, it lacks explicit mention of the spreadsheet context (Google Sheets), though parameters imply it.

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

Usage Guidelines2/5

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

No usage guidelines are provided. The description does not state when to use this tool versus alternatives, nor does it mention prerequisites or when not to use it. There is no guidance on context or best practices.

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

add_rowsB
Destructive

Add rows to a sheet in a Google Spreadsheet.

Args: spreadsheet_id: The ID of the spreadsheet (found in the URL) sheet: The name of the sheet count: Number of rows to add start_row: 0-based row index to start adding. If not provided, adds at the beginning.

Returns: Result of the operation

ParametersJSON Schema
NameRequiredDescriptionDefault
spreadsheet_idYes
sheetYes
countYes
start_rowNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior3/5

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

The annotation already indicates destructiveHint=true. The description adds that rows are added and, if start_row is omitted, rows are added at the beginning. It does not disclose potential side effects like shifting existing rows, permissions required, or what the 'Result of the operation' entails.

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

Conciseness4/5

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

The description is concise (three sentences plus Returns line) and front-loads the purpose. The Returns line is generic, but overall structure is clear and efficient without superfluous text.

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

Completeness3/5

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

Covers purpose and parameter meaning but lacks details on return value specifics, error conditions, limitations, or comparison with sibling tools. Given the complexity (4 params, destructive hint, output schema exists), the description is adequate but not fully complete.

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

Parameters4/5

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

With 0% schema coverage, the description compensates by explaining each parameter: spreadsheet_id points to URL, sheet is name, count is number of rows, start_row is 0-based index with default behavior. This adds significant meaning beyond the schema's type-only definitions.

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

Purpose4/5

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

The description clearly states it adds rows to a Google Spreadsheet sheet. However, it does not explicitly differentiate from the sibling tool 'append_rows', which likely appends at the end, but the mention of 'start_row' implies insertion at a specific position, providing some distinction.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like 'append_rows' or other row manipulation tools. The description only explains parameter behavior (e.g., start_row default) but not the context for tool selection.

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

append_rowsA
Destructive

Append rows of data after the last row with content in a sheet. Useful for adding log entries or new records without knowing the exact row number.

Args: spreadsheet_id: The ID of the spreadsheet sheet: Sheet/tab name values: List of rows, each row is a list of cell values. Example: [["Alice", 30, "Seoul"], ["Bob", 25, "Busan"]]

Returns: The range where data was appended and number of rows added

ParametersJSON Schema
NameRequiredDescriptionDefault
spreadsheet_idYes
sheetYes
valuesYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

The description explains the behavior of appending after the last row with content, adding value beyond the destructiveHint annotation. It does not contradict annotations, but could mention potential side effects like overwriting if there is no blank row.

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

Conciseness4/5

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

The description is concise with a clear structure: purpose, usage, parameters, and returns. The example is helpful but adds some length; however, it is justified.

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

Completeness4/5

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

The description covers purpose, parameter details, and return value. For a straightforward append operation, this is complete. The tool has no complex behaviors or edge cases that would require more.

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

Parameters4/5

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

Despite 0% schema coverage, the description defines all three parameters and provides a concrete example for 'values.' This compensates for the missing schema descriptions and adds significant meaning.

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

Purpose5/5

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

The description clearly states it appends rows after the last row with content, distinguishing it from tools like update_cells (specific range) and add_rows (add empty rows). The verb 'append' and resource 'rows' are specific, and the usage example solidifies the purpose.

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

Usage Guidelines4/5

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

The description explicitly says 'Useful for adding log entries or new records without knowing the exact row number,' which guides when to use. It does not explicitly mention alternatives or when not to use, but the context is clear enough for most agents.

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

auto_resizeA
Destructive

Auto-resize columns or rows to fit content.

Args: spreadsheet_id: The ID of the spreadsheet sheet: Sheet/tab name dimension: 'COLUMNS' or 'ROWS' start_index: 0-based start index end_index: 0-based end index (exclusive). Omit to resize all.

Returns: Result of the resize operation

ParametersJSON Schema
NameRequiredDescriptionDefault
spreadsheet_idYes
sheetYes
dimensionNoCOLUMNS
start_indexNo
end_indexNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

The description discloses the basic behavior (resizing to fit content) and is consistent with the destructiveHint annotation. However, it does not add further context beyond what annotations already provide, such as whether it expands or shrinks cells, or if it modifies the sheet permanently. With annotations already indicating destructiveness, the description provides minimal extra transparency.

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

Conciseness5/5

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

The description is extremely concise: two sentences plus a clear Args list. It front-loads the core purpose and provides parameter details in a structured format without any redundant or verbose content. Every sentence adds value.

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

Completeness4/5

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

Given the tool has an output schema and 5 parameters (2 required), the description covers all parameters with reasonable detail. It does not explain return values deeply, but the output schema exists to handle that. The description is complete enough for a focused auto-resize operation, though it could mention that it modifies existing sheets.

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

Parameters4/5

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

Despite 0% schema coverage, the description compensates by listing and explaining each parameter in the Args section. It clarifies default values (e.g., dimension defaults to 'COLUMNS', start_index defaults to 0) and provides useful details like 'end_index is exclusive; omit to resize all'. This adds meaning beyond the input schema's property names and types.

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

Purpose5/5

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

The description clearly states the tool's purpose: 'Auto-resize columns or rows to fit content.' It uses a specific verb (auto-resize) and resource (columns/rows), distinguishing it from siblings like 'format_cells' or 'update_cells' which don't handle auto-resizing.

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

Usage Guidelines3/5

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

The description implies the tool should be used when you need to resize columns/rows to fit content, but it does not explicitly state when to use it versus alternatives, nor does it provide exclusions or prerequisites. The usage context is implied but not explicitly guided.

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

batch_updateA
Destructive

Execute a batch update on a Google Spreadsheet using the full batchUpdate endpoint. This provides access to all batchUpdate operations including adding sheets, updating properties, inserting/deleting dimensions, formatting, and more.

Args: spreadsheet_id: The ID of the spreadsheet (found in the URL) requests: A list of request objects. Each request object can contain any valid batchUpdate operation. Common operations include: - addSheet: Add a new sheet - updateSheetProperties: Update sheet properties (title, grid properties, etc.) - insertDimension: Insert rows or columns - deleteDimension: Delete rows or columns - updateCells: Update cell values and formatting - updateBorders: Update cell borders - addConditionalFormatRule: Add conditional formatting - deleteConditionalFormatRule: Remove conditional formatting - updateDimensionProperties: Update row/column properties - and many more...

         Example requests:
         [
             {
                 "addSheet": {
                     "properties": {
                         "title": "New Sheet"
                     }
                 }
             },
             {
                 "updateSheetProperties": {
                     "properties": {
                         "sheetId": 0,
                         "title": "Renamed Sheet"
                     },
                     "fields": "title"
                 }
             },
             {
                 "insertDimension": {
                     "range": {
                         "sheetId": 0,
                         "dimension": "ROWS",
                         "startIndex": 1,
                         "endIndex": 3
                     }
                 }
             }
         ]

Returns: Result of the batch update operation, including replies for each request

ParametersJSON Schema
NameRequiredDescriptionDefault
spreadsheet_idYes
requestsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already indicate destructiveHint=true. The description reinforces this by listing operations like insertDimension, deleteDimension, and updateCells, which imply mutability. However, it does not go beyond annotations to discuss side effects, error handling, or rate limits.

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

Conciseness4/5

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

The description is front-loaded with purpose but becomes lengthy with many examples and operation details. It is well-structured with clear sections (Args, Returns) but could be more concise by reducing verbosity in the operation list.

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

Completeness4/5

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

Given the tool's complexity and zero schema description coverage, the description is quite complete with examples and return type mentioned. However, it lacks mention of error scenarios, operation limits, or specifics about the output schema content.

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

Parameters5/5

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

The input schema has 0% description coverage, so the description carries full burden. It explains spreadsheet_id as 'found in the URL' and thoroughly describes the requests parameter with examples of valid operations, adding significant meaning beyond the schema's empty descriptions.

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

Purpose5/5

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

The description clearly states it executes a batch update on a Google Spreadsheet using the full batchUpdate endpoint, providing access to all batchUpdate operations. This is a specific verb and resource, and it distinguishes from sibling tools like add_rows or update_cells by emphasizing the batch nature.

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

Usage Guidelines4/5

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

The description explains the types of operations available (addSheet, insertDimension, etc.) and provides examples, but it does not explicitly guide when to use this tool versus siblings (e.g., batch_update_cells for cell updates only). It lacks direct exclusions or alternative suggestions.

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

batch_update_cellsA
Destructive

Batch update multiple ranges in a Google Spreadsheet.

Args: spreadsheet_id: The ID of the spreadsheet (found in the URL) sheet: The name of the sheet ranges: Dictionary mapping range strings to 2D arrays of values e.g., {'A1:B2': [[1, 2], [3, 4]], 'D1:E2': [['a', 'b'], ['c', 'd']]}

Returns: Result of the batch update operation

ParametersJSON Schema
NameRequiredDescriptionDefault
spreadsheet_idYes
sheetYes
rangesYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior2/5

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

The annotations include destructiveHint=true, but the description only says 'update' without clarifying that overwrites values. It does not disclose behavioral traits like irreversibility, required permissions, or side effects beyond what annotations provide.

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

Conciseness5/5

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

The description is concise with a one-sentence summary followed by structured Args and Returns sections. Every sentence serves a purpose with no redundancy.

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

Completeness3/5

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

The tool is complex with multiple ranges, but the description lacks context on limits, error handling, or authorization. The output schema exists, so return details are not required, but additional usage guidance would improve completeness.

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

Parameters4/5

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

With 0% schema description coverage, the description provides meaningful explanations for all three parameters, including an example for 'ranges'. It adds value over the bare schema, though it could specify valid range formats or constraints.

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

Purpose5/5

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

The description clearly states the tool's purpose: 'Batch update multiple ranges in a Google Spreadsheet.' This verb+resource combination is specific and distinguishes it from alternatives like 'update_cells' (single range) among siblings.

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

Usage Guidelines4/5

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

The description indicates when to use this tool (for batch updates of multiple ranges). However, it does not explicitly state when not to use it or compare with siblings like 'update_cells' or 'append_rows', leaving some ambiguity for an AI agent.

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

clear_rangeA
Destructive

Clear data from a range of cells. Optionally clear formatting too.

Args: spreadsheet_id: The ID of the spreadsheet sheet: Sheet/tab name range: A1 notation range (e.g., 'A1:C10') clear_format: If True, also clears formatting. If False (default), only clears values.

Returns: Result of the clear operation

ParametersJSON Schema
NameRequiredDescriptionDefault
spreadsheet_idYes
sheetYes
rangeYes
clear_formatNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

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

The description adds the detail that clearing formatting is optional, which goes beyond the 'destructiveHint' annotation. However, it does not disclose other behavioral traits such as impact on formulas, reversal possibilities, or permission requirements.

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

Conciseness5/5

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

The description is concise and front-loaded with the main purpose. The structured 'Args' list presents each parameter efficiently without unnecessary words.

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

Completeness4/5

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

Given the low schema coverage and the presence of an output schema, the description adequately covers parameter semantics. However, it lacks context about side effects or comparison with similar tools, which would make it more complete.

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

Parameters5/5

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

With 0% schema description coverage, the description fully compensates by providing clear explanations for all four parameters, including examples for 'range' and default behavior for 'clear_format'.

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

Purpose5/5

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

The description clearly states 'Clear data from a range of cells', specifying the verb 'clear' and the resource 'range of cells'. It distinguishes itself from sibling tools like 'update_cells' or 'delete_rows_columns' by focusing on clearing values within a range.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It does not mention prerequisites, when not to use it, or how it compares to related operations like deleting cells or updating cells.

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

copy_sheetB
Destructive

Copy a sheet from one spreadsheet to another.

Args: src_spreadsheet: Source spreadsheet ID src_sheet: Source sheet name dst_spreadsheet: Destination spreadsheet ID dst_sheet: Destination sheet name

Returns: Result of the operation

ParametersJSON Schema
NameRequiredDescriptionDefault
src_spreadsheetYes
src_sheetYes
dst_spreadsheetYes
dst_sheetYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

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

Annotations include destructiveHint=true, but the description does not clarify what is destructive (e.g., overwriting destination). It also omits side effects like whether the source remains unchanged.

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

Conciseness4/5

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

The description is concise and front-loaded with purpose, followed by parameter descriptions in a structured docstring format. Every line adds value.

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

Completeness3/5

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

The description covers the minimal purpose and parameters but omits important context such as error handling, behavior on duplicate destination names, or prerequisites like spreadsheet IDs.

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

Parameters3/5

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

Schema description coverage is 0%, but the description lists each parameter with a short description (e.g., 'Source spreadsheet ID'), adding some meaning beyond schema titles. However, it lacks details like data types or validation.

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

Purpose5/5

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

The description clearly states the action (Copy) and resource (sheet from one spreadsheet to another), differentiating it from related siblings like move_sheet and duplicate_sheet.

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

Usage Guidelines2/5

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

No guidance on when to use this tool over alternatives such as duplicate_sheet or move_sheet. The description lacks context for selection.

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

create_sheetA
Destructive

Create a new sheet tab in an existing Google Spreadsheet.

Args: spreadsheet_id: The ID of the spreadsheet title: The title for the new sheet

Returns: Information about the newly created sheet

ParametersJSON Schema
NameRequiredDescriptionDefault
spreadsheet_idYes
titleYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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

Annotations include destructiveHint: true, indicating mutation, which the description aligns with by stating 'Create'. However, beyond annotations, the description adds little behavioral detail (e.g., it does not state that the spreadsheet must already exist, though 'existing' is mentioned).

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

Conciseness5/5

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

The description is very concise (three short lines), front-loading the purpose and including Args/Returns without unnecessary words. Every sentence serves a purpose.

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

Completeness4/5

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

Given the simplicity of the tool (2 parameters, clear purpose, output schema present), the description is largely complete. It mentions 'existing spreadsheet' and the return value is covered by output schema. Minor gaps like error handling or uniqueness of title are not critical for this low-complexity tool.

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

Parameters3/5

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

Schema description coverage is 0%, but the description provides minimal explanations for each parameter: 'The ID of the spreadsheet' and 'The title for the new sheet'. This adds some value beyond names but lacks format, constraints, or examples.

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

Purpose5/5

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

The description clearly states the action 'Create' and the resource 'new sheet tab in an existing Google Spreadsheet', which distinguishes it from sibling tools like 'create_spreadsheet' that create entire spreadsheets.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like 'copy_sheet' or 'duplicate_sheet'. The description does not specify prerequisites or conditions for use.

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

create_spreadsheetA
Destructive

Create a new Google Spreadsheet.

Args: title: The title of the new spreadsheet folder_id: Optional Google Drive folder ID where the spreadsheet should be created. If not provided, uses the configured default folder or creates in root.

Returns: Information about the newly created spreadsheet including its ID

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYes
folder_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations indicate destructiveHint=true, and the description aligns by describing a creation operation. It adds value by explaining folder_id default behavior and return info, beyond the annotations.

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

Conciseness4/5

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

The description is concise with clear 'Args:' and 'Returns:' blocks, though the 'Args' section is slightly verbose for a single line.

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

Completeness5/5

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

For a simple tool with 2 parameters and an output schema, the description provides sufficient context, including return value information.

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

Parameters4/5

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

Despite 0% schema description coverage, the description adds meaning to both parameters: title and folder_id, including default behavior for folder_id.

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

Purpose5/5

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

The description uses a specific verb+resource: 'Create a new Google Spreadsheet.' It clearly distinguishes from sibling tools like list_spreadsheets or upload_excel.

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

Usage Guidelines3/5

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

The description explains parameters and default behavior for folder_id, but does not provide explicit guidance on when to use this tool versus alternatives like upload_excel or when not to use it.

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

delete_rows_columnsA
Destructive

Delete rows or columns from a sheet.

Args: spreadsheet_id: The ID of the spreadsheet sheet: Sheet/tab name dimension: 'ROWS' or 'COLUMNS' start_index: 0-based start index (inclusive) end_index: 0-based end index (exclusive)

Returns: Result of the delete operation

ParametersJSON Schema
NameRequiredDescriptionDefault
spreadsheet_idYes
sheetYes
dimensionYes
start_indexYes
end_indexYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already mark destructiveHint=true. The description aligns with this but adds no extra context about irreversibility, data shifting, or other effects. It meets expectations but does not exceed them given the annotation coverage.

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

Conciseness5/5

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

The description is extremely concise with a clear two-sentence intro followed by a bulleted argument list. Every word serves a purpose, and the structure is easy to parse.

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

Completeness4/5

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

Given the presence of an output schema and the destructive annotation, the description covers the core functionality. However, it could add context about the permanence of deletion and that rows/columns shift, which would make it more complete.

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

Parameters4/5

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

Schema description coverage is 0%, so the description carries the full burden. It explains each parameter meaningfully (e.g., '0-based start index (inclusive)'), adding significant value beyond the raw schema.

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

Purpose5/5

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

The description explicitly states 'Delete rows or columns from a sheet', using a specific verb and resource. It clearly distinguishes this tool from siblings that add, format, or clear without deleting structure.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives like clear_range or when not to use it. The description only lists parameters without contextual usage advice.

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

duplicate_sheetA
Destructive

Duplicate a sheet/tab within the same spreadsheet.

Args: spreadsheet_id: The ID of the spreadsheet sheet: Name of the sheet to duplicate new_name: Name for the duplicated sheet (defaults to 'Copy of ')

Returns: The new sheet's properties

ParametersJSON Schema
NameRequiredDescriptionDefault
spreadsheet_idYes
sheetYes
new_nameNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

The annotations include destructiveHint: true, indicating the tool modifies state. The description adds minimal behavioral context beyond the parameters and default behavior for new_name. It does not elaborate on destructive aspects or side effects.

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

Conciseness5/5

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

The description is concise: a single sentence for purpose, followed by a structured Args list and Returns note. Every sentence is informative and earns its place.

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

Completeness4/5

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

For a tool with 3 parameters and an output schema, the description covers purpose, all parameters, and return value. It lacks explicit context about when to use vs. siblings, but otherwise meets completeness needs.

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

Parameters4/5

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

Despite 0% schema description coverage, the description includes an Args section that explains each parameter (spreadsheet_id, sheet, new_name) and its purpose, including the default for new_name. This adds significant meaning beyond the raw schema.

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

Purpose5/5

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

The description clearly states 'Duplicate a sheet/tab within the same spreadsheet.' This specifies the verb (duplicate) and resource (sheet/tab) and differentiates from the sibling 'copy_sheet' by limiting scope to the same spreadsheet.

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

Usage Guidelines2/5

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

The description does not provide any guidance on when to use this tool versus alternatives (e.g., copy_sheet, create_sheet). It only states what it does, leaving the agent to infer usage context.

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

export_sheetA
Read-only

Export (download) a Google Spreadsheet as Excel, CSV, or PDF.

Args: spreadsheet_id: The ID of the spreadsheet format: Export format — 'xlsx', 'csv', 'pdf', or 'ods' output_path: Local file path to save to. Auto-generated if omitted.

Returns: The local file path where the file was saved

ParametersJSON Schema
NameRequiredDescriptionDefault
spreadsheet_idYes
formatNoxlsx
output_pathNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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

The description adds behavioral context beyond the readOnlyHint annotation, explaining that the tool downloads and saves a file locally, with auto-generated path support. However, it omits details like size limits, permission requirements, or error handling.

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

Conciseness5/5

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

The description is concise and well-structured: a brief purpose statement, followed by parameter explanations, and a return value note. No extraneous information is present.

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

Completeness4/5

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

Given the tool's simplicity (3 parameters, one required, and an output schema), the description covers the essential aspects: what it does, how to use parameters, and what is returned. It could mention non-destructive nature or interaction with file system permissions, but is largely sufficient.

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

Parameters4/5

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

With 0% schema description coverage, the description effectively compensates by explaining the purpose of spreadsheet_id, listing format options ('xlsx', 'csv', 'pdf', 'ods'), and noting that output_path is auto-generated if omitted. This adds significant meaning over the raw schema.

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

Purpose5/5

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

The description explicitly states the action 'Export (download) a Google Spreadsheet' and lists the supported formats (Excel, CSV, PDF). This clearly distinguishes it from sibling tools like get_sheet_data or update_cells.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives such as get_sheet_data or uploading files. It does not mention prerequisites, conditions, or comparative use cases.

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

find_in_spreadsheetA
Read-only

Find cells containing a specific value in a Google Spreadsheet.

Args: spreadsheet_id: The ID of the spreadsheet (found in the URL) query: The text to search for in cell values sheet: Optional sheet name to search in. If not provided, searches all sheets. case_sensitive: Whether the search should be case-sensitive (default False) max_results: Maximum number of results to return (default 50)

Returns: List of found cells with their location (sheet, cell in A1 notation) and value

ParametersJSON Schema
NameRequiredDescriptionDefault
spreadsheet_idYes
queryYes
sheetNo
case_sensitiveNo
max_resultsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

The description confirms the read-only nature (matching the annotation 'readOnlyHint: true') and adds detail about the return value (list of found cells with location and value). It does not mention potential performance impacts or edge cases, but overall provides good transparency beyond annotations.

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

Conciseness4/5

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

The description is well-structured with an 'Args' list and 'Returns' statement. It is reasonably concise, though the 'Args:' prefix could be streamlined. Every sentence adds value, and the format aids readability.

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

Completeness4/5

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

Given the tool has 5 parameters (2 required) and an output schema, the description covers all parameters and the return format. It does not explicitly address edge cases like empty results but is complete enough for standard use.

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

Parameters5/5

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

The description adds significant meaning beyond the input schema, which has 0% coverage. It explains each parameter clearly, including how to obtain 'spreadsheet_id' (from URL), the role of 'query', and defaults for 'case_sensitive' (False) and 'max_results' (50). This fully compensates for the lack of schema descriptions.

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

Purpose5/5

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

The description clearly states the tool finds cells containing a specific value in a Google Spreadsheet, using a specific verb ('Find') and resource ('cells'). It is distinct from sibling tools like 'search_spreadsheets' (which searches across spreadsheets) and 'get_sheet_data' (which retrieves all data).

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

Usage Guidelines3/5

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

The description does not provide explicit guidance on when to use this tool versus alternatives, nor does it mention when not to use it. The usage context is implied by the tool's function, but no exclusions or comparisons are given.

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

format_cellsA
Destructive

Apply formatting to a range of cells.

Args: spreadsheet_id: The ID of the spreadsheet sheet: Sheet/tab name range: A1 notation range (e.g., 'A1:C10') bold: Make text bold italic: Make text italic font_size: Font size in pt font_color: Hex color for text (e.g., '#FF0000') background_color: Hex color for cell background (e.g., '#FFFF00') number_format: Number format pattern (e.g., '#,##0.00', '0%', 'yyyy-mm-dd') horizontal_alignment: 'LEFT', 'CENTER', or 'RIGHT'

Returns: Result of the formatting operation

ParametersJSON Schema
NameRequiredDescriptionDefault
spreadsheet_idYes
sheetYes
rangeYes
boldNo
italicNo
font_sizeNo
font_colorNo
background_colorNo
number_formatNo
horizontal_alignmentNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior2/5

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

Annotations set destructiveHint: true, but the description does not elaborate on destructive behavior (e.g., overwriting existing formatting). It adds minimal behavioral context beyond what annotations already provide.

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

Conciseness4/5

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

The description is well-structured with a clear one-liner and a parameter list. It is concise but the Args block adds necessary detail. No redundant sentences.

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

Completeness4/5

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

Given the tool's complexity (10 params, destructive hint, output schema exists), the description covers most aspects. It explains all parameters but could mention behavior on omitted optionals or cumulative effects.

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

Parameters4/5

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

With 0% schema description coverage, the description compensates by adding examples for number_format, font_color, and background_color. However, some parameters (e.g., bold, italic) lack examples, keeping it from a top score.

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

Purpose5/5

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

The description clearly states 'Apply formatting to a range of cells' with a specific verb and resource. It distinguishes from siblings like 'add_conditional_format' or 'batch_update_cells' by listing many specific formatting options.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives (e.g., 'add_conditional_format' for conditional rules). It does not mention any prerequisites or limitations.

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

get_commentsA
Read-only

Get all comments on a spreadsheet.

Args: spreadsheet_id: The ID of the spreadsheet include_resolved: Whether to include resolved comments (default False) max_results: Maximum number of comments to return (default 50)

Returns: List of comments with author, content, anchor cell, and resolved status

ParametersJSON Schema
NameRequiredDescriptionDefault
spreadsheet_idYes
include_resolvedNo
max_resultsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already indicate readOnlyHint=true; description adds value by explaining return format (list with author, content, anchor cell, resolved status) and default parameter values (include_resolved=False, max_results=50).

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

Conciseness5/5

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

One-sentence purpose followed by concise parameter list. No wasted words; front-loaded with action and resource.

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

Completeness5/5

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

For a read-only list tool with output schema present, description adequately covers purpose, parameters, and return format. No gaps given the context.

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

Parameters5/5

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

With 0% schema coverage, description fully explains all three parameters: spreadsheet_id (required), include_resolved (boolean, default False), max_results (integer, default 50). Adds meaning beyond schema titles and types.

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

Purpose5/5

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

Description clearly states 'Get all comments on a spreadsheet.' with specific verb and resource, distinguishing it from sibling tools like add_comment and resolve_comment.

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

Usage Guidelines3/5

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

No explicit guidance on when to use this tool versus alternatives; the agent must infer from the name and context. Lacks when-not-to-use or alternative tool mentions.

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

get_multiple_sheet_dataA
Read-only

Get data from multiple specific ranges in Google Spreadsheets.

Args: queries: A list of dictionaries, each specifying a query. Each dictionary should have 'spreadsheet_id', 'sheet', and 'range' keys. Example: [{'spreadsheet_id': 'abc', 'sheet': 'Sheet1', 'range': 'A1:B5'}, {'spreadsheet_id': 'xyz', 'sheet': 'Data', 'range': 'C1:C10'}]

Returns: A list of dictionaries, each containing the original query parameters and the fetched 'data' or an 'error'.

ParametersJSON Schema
NameRequiredDescriptionDefault
queriesYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

The description explains the return format (list of dicts with original query and data or error), which adds behavioral detail beyond the readOnlyHint annotation. It discloses that the tool fetches data and can return errors per query. No contradictions with annotations.

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

Conciseness4/5

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

The description is concise, starting with the purpose and then detailing the parameters and return format in structured sections. There is slight redundancy (e.g., repeating 'A list of dictionaries'), but overall it is efficient and easy to parse.

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

Completeness5/5

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

Given the low complexity (single parameter, output schema present), the description covers all necessary aspects: purpose, parameter details with example, and return structure. No major gaps exist for an agent to correctly invoke the tool.

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

Parameters5/5

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

The input schema has 0% description coverage, but the description provides thorough parameter semantics: it specifies that 'queries' is a list of dicts with required keys 'spreadsheet_id', 'sheet', and 'range', and includes an example. This fully compensates for the schema's lack of descriptions.

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

Purpose5/5

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

The description clearly states 'Get data from multiple specific ranges in Google Spreadsheets', using a specific verb 'Get' and resource 'multiple specific ranges'. This distinguishes it from sibling tools like get_sheet_data (single range) and get_multiple_spreadsheet_summary (summary of multiple spreadsheets). The purpose is unambiguous and well-differentiated.

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

Usage Guidelines3/5

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

The description implies the tool is for multiple ranges but does not explicitly state when to use it over alternatives like get_sheet_data for single ranges. There is no mention of when not to use it or context for batching. The usage guidance is implicit rather than explicit.

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

get_multiple_spreadsheet_summaryA
Read-only

Get a summary of multiple Google Spreadsheets, including sheet names, headers, and the first few rows of data for each sheet.

Args: spreadsheet_ids: A list of spreadsheet IDs to summarize. rows_to_fetch: The number of rows (including header) to fetch for the summary (default: 5).

Returns: A list of dictionaries, each representing a spreadsheet summary. Includes spreadsheet title, sheet summaries (title, headers, first rows), or an error.

ParametersJSON Schema
NameRequiredDescriptionDefault
spreadsheet_idsYes
rows_to_fetchNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

Annotations already indicate readOnlyHint=true, so no contradiction. The description adds context about returning summaries with errors, but does not mention potential performance issues 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.

Conciseness5/5

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

The description is concise, well-structured with purpose, args, and returns clearly separated. Every sentence is necessary and informative.

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

Completeness4/5

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

Given the output schema exists, the description adequately summarizes return structure. It covers the main functionality, though it could mention handling multiple spreadsheets simultaneously more explicitly.

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

Parameters4/5

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

Schema description coverage is 0%, but the description fully explains both parameters: spreadsheet_ids as a list of IDs and rows_to_fetch with default 5. This adds substantial value beyond the schema.

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

Purpose5/5

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

The description clearly states the verb 'Get' and resource 'multiple Google Spreadsheets', and details the content (sheet names, headers, first few rows). This distinguishes it from siblings like get_sheet_data or list_sheets.

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

Usage Guidelines3/5

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

The description implies usage for obtaining a summary of multiple spreadsheets but provides no explicit guidance on when to use this tool versus alternatives like get_sheet_data or list_sheets.

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

get_revision_historyA
Read-only

Get the revision (edit) history of a spreadsheet.

Args: spreadsheet_id: The ID of the spreadsheet max_results: Maximum number of revisions to return (default 20)

Returns: List of revisions with author, date, and modification details

ParametersJSON Schema
NameRequiredDescriptionDefault
spreadsheet_idYes
max_resultsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true. The description adds that it returns a list with author, date, and modification details. No contradictions, but missing details on pagination or rate limits.

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

Conciseness5/5

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

Concise and well-structured; no unnecessary words. Front-loaded with purpose.

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

Completeness5/5

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

Given the simple nature of the tool (2 parameters, read-only), the description covers all needed context, especially since output schema exists and is partially described.

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

Parameters4/5

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

Schema description coverage is 0%, so the description provides necessary meaning for both parameters, including the default for max_results. Adds value beyond the schema.

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

Purpose5/5

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

The description clearly states it retrieves revision history of a spreadsheet, with a clear verb and resource. It distinguishes from siblings which are mostly write operations.

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

Usage Guidelines3/5

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

No explicit guidance on when to use versus alternatives. However, the tool's read-only nature and focus on history imply usage, but lacks when-not or alternative recommendations.

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

get_sheet_dataA
Read-only

Get data from a specific sheet in a Google Spreadsheet.

Args: spreadsheet_id: The ID of the spreadsheet (found in the URL) sheet: The name of the sheet range: Optional cell range in A1 notation (e.g., 'A1:C10'). If not provided, gets all data. include_grid_data: If True, includes cell formatting and other metadata in the response. Note: Setting this to True will significantly increase the response size and token usage when parsing the response, as it includes detailed cell formatting information. Default is False (returns values only, more efficient).

Returns: Grid data structure with either full metadata or just values from Google Sheets API, depending on include_grid_data parameter

ParametersJSON Schema
NameRequiredDescriptionDefault
spreadsheet_idYes
sheetYes
rangeNo
include_grid_dataNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

The description adds important behavioral context beyond the readOnlyHint annotation: it warns that setting include_grid_data to True significantly increases response size and token usage. No contradictions with annotations.

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

Conciseness4/5

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

The description is structured with clear Args and Returns sections, and is front-loaded with the core purpose. It is efficiently written but could be slightly more concise by omitting the 'Returns' line if the output schema covers it.

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

Completeness4/5

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

Given the presence of an output schema, the description need not detail return values. It covers all input parameters adequately. The tool is simple and the description is sufficient for correct use.

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

Parameters5/5

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

Despite 0% schema description coverage, the description explains every parameter in detail: spreadsheet_id's location, sheet name meaning, range notation, and include_grid_data's performance implications. This fully compensates for the lack of schema descriptions.

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

Purpose5/5

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

The description uses specific verbs ('Get data from a specific sheet') and resources ('Google Spreadsheet'), clearly distinguishing from sibling tools like get_sheet_formulas or get_multiple_sheet_data.

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

Usage Guidelines4/5

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

The description implies that this tool is for fetching data (not formulas or multiple sheets), but does not explicitly state when to avoid it or mention alternative tools. Still, the context is clear enough for an AI agent.

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

get_sheet_formulasA
Read-only

Get formulas from a specific sheet in a Google Spreadsheet.

Args: spreadsheet_id: The ID of the spreadsheet (found in the URL) sheet: The name of the sheet range: Optional cell range in A1 notation (e.g., 'A1:C10'). If not provided, gets all formulas from the sheet.

Returns: A 2D array of the sheet formulas.

ParametersJSON Schema
NameRequiredDescriptionDefault
spreadsheet_idYes
sheetYes
rangeNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, so the description doesn't need to repeat that. It adds that the tool returns a 2D array of formulas, providing useful output context beyond annotations.

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

Conciseness4/5

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

The description is concise and front-loaded with the main purpose. The Args section is slightly structured but not overly verbose. Could be slightly trimmed without loss.

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

Completeness4/5

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

For a simple read-only tool, the description covers the main functionality and output format. However, it doesn't mention edge cases (e.g., empty sheet, invalid range) or error behavior, which would enhance completeness.

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

Parameters5/5

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

Schema description coverage is 0%, but the description fully explains each parameter: spreadsheet_id location, sheet naming, and range format with default behavior. This adds significant meaning beyond the schema titles.

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

Purpose5/5

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

The description clearly states the tool retrieves formulas from a specific sheet in a Google Spreadsheet, using a specific verb and resource. It distinguishes itself from sibling tools like get_sheet_data which returns values, though not explicitly.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like get_sheet_data for values or find_in_spreadsheet. Missing context on prerequisites (e.g., sheet must exist, permissions).

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

list_foldersA
Read-only

List all folders in the specified Google Drive folder. If no parent folder is specified, lists folders from 'My Drive' root.

Args: parent_folder_id: Optional Google Drive folder ID to search within. If not provided, searches the root of 'My Drive'.

Returns: List of folders with their ID, name, and parent information

ParametersJSON Schema
NameRequiredDescriptionDefault
parent_folder_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already indicate readOnlyHint=true, and the description adds that the tool returns a list of folders with ID, name, and parent information. It confirms no destructive effects and explains the optional parameter's impact.

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

Conciseness5/5

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

The description is concise with two short paragraphs, including Args and Returns sections. Every sentence is necessary and clear, with no wasted words.

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

Completeness5/5

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

The tool is simple with one optional parameter, and the description covers its behavior and return value adequately. The presence of an output schema further reduces the need for detailed return descriptions.

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

Parameters5/5

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

Schema description coverage is 0%, but the tool description fully explains the sole parameter: 'Optional Google Drive folder ID to search within. If not provided, searches the root of My Drive.' This adds essential meaning beyond the schema.

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

Purpose5/5

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

The description clearly states the verb 'list' and the resource 'folders in Google Drive', and specifies the behavior with and without a parent folder. It is distinct from sibling tools, which are all spreadsheet-related.

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

Usage Guidelines4/5

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

The description explains when to use the parent_folder_id parameter and default behavior, giving clear context. While it doesn't explicitly state when not to use, the sibling tools are all for spreadsheets, so the usage context is clear.

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

list_sheetsA
Read-only

List all sheets in a Google Spreadsheet.

Args: spreadsheet_id: The ID of the spreadsheet (found in the URL)

Returns: List of sheet names

ParametersJSON Schema
NameRequiredDescriptionDefault
spreadsheet_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, and the description adds minimal behavioral context beyond returning a list of sheet names. No mention of limits, pagination, or error scenarios.

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

Conciseness5/5

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

The description is concise, well-structured with Args/Returns sections, and contains no unnecessary words while conveying essential information.

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

Completeness4/5

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

Given the simple read-only nature and the presence of an output schema, the description covers the basics adequately. It lacks details on error handling or non-existent spreadsheets, but is complete enough for a straightforward list operation.

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

Parameters4/5

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

With 0% schema description coverage, the description explains the spreadsheet_id parameter's meaning and where to find it, adding significant value beyond the bare schema.

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

Purpose5/5

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

The description clearly states the action ('List all sheets'), the resource ('sheets in a Google Spreadsheet'), and it distinguishes itself from sibling tools like create_sheet or rename_sheet.

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

Usage Guidelines2/5

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

No explicit guidance on when to use this tool versus alternatives such as list_spreadsheets or get_multiple_sheet_data. It does not mention prerequisites beyond the spreadsheet ID 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.

list_spreadsheetsA
Read-only

List all spreadsheets in the specified Google Drive folder. If no folder is specified, uses the configured default folder or lists from 'My Drive'.

Args: folder_id: Optional Google Drive folder ID to search in. If not provided, uses the configured default folder or searches 'My Drive'.

Returns: List of spreadsheets with their ID and title

ParametersJSON Schema
NameRequiredDescriptionDefault
folder_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

The description adds useful behavioral context beyond the readOnlyHint annotation, such as the default folder behavior when no folder_id is provided, which helps the agent understand the tool's operation.

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

Conciseness5/5

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

The description is concise with two main sentences plus structured Args/Returns sections, no unnecessary words, and front-loaded key information.

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

Completeness5/5

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

The description covers the input parameter behavior, indicates the return structure (list of spreadsheets with ID and title), and is complete for a simple listing tool, especially with an output schema assumed present.

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

Parameters4/5

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

Even though the input schema has 0% description coverage, the tool description provides detailed explanation of the folder_id parameter, including its optional nature and default behavior, effectively compensating for schema gaps.

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

Purpose5/5

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

The description clearly states 'List all spreadsheets' with a specific resource and action, and it distinguishes from siblings like 'search_spreadsheets' and 'list_sheets' by focusing on listing vs searching or listing sheets within a spreadsheet.

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

Usage Guidelines4/5

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

The description explains when to use the tool (to list spreadsheets in a folder) and mentions optional parameter for folder selection, but it does not explicitly state when not to use it or compare to alternatives like 'search_spreadsheets'.

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

merge_cellsA
Destructive

Merge (or unmerge) cells in a range.

Args: spreadsheet_id: The ID of the spreadsheet sheet: Sheet/tab name range: A1 notation range (e.g., 'A1:C3') merge_type: 'MERGE_ALL', 'MERGE_COLUMNS', 'MERGE_ROWS', or 'UNMERGE'

Returns: Result of the merge operation

ParametersJSON Schema
NameRequiredDescriptionDefault
spreadsheet_idYes
sheetYes
rangeYes
merge_typeNoMERGE_ALL

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

Annotations include destructiveHint: true, indicating potential destructive effects. The description adds that the tool can also 'unmerge', which implies reversibility, but does not detail consequences like data loss or cell content handling. It neither contradicts nor significantly adds to the annotation's behavioral signal.

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

Conciseness5/5

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

The description is extremely concise: two sentences for the main action, then a clean Args/Returns listing. Every element is necessary and immediately informative. The front-loaded purpose sentence allows quick comprehension.

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

Completeness4/5

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

Given 4 parameters, an output schema, and a destructive hint, the description covers the essential input details and return value concept ('Result of the merge operation'). It lacks potential caveats about data concatenation or error conditions, but for a straightforward merge tool, it is reasonably complete.

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

Parameters4/5

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

Schema description coverage is 0%, so the description carries the burden. It explains each parameter: spreadsheet_id and sheet by name, range as 'A1 notation (e.g., 'A1:C3')', and merge_type with enum values ('MERGE_ALL', 'MERGE_COLUMNS', 'MERGE_ROWS', 'UNMERGE'). These details add meaning beyond the bare schema properties, improving understanding.

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

Purpose5/5

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

The description explicitly states 'Merge (or unmerge) cells in a range', clearly identifying the verb (merge/unmerge) and resource (cells in a range). The title from annotations is 'Merge Cells', reinforcing the purpose. No sibling tools perform merging, so it is well-differentiated.

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

Usage Guidelines2/5

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

The description provides no explicit guidance on when to use this tool versus alternatives. It does not mention prerequisites, exclusions, or context for merging vs. other cell operations like updating cells or formatting. The sibling list includes many cell-related tools, but no comparative information is given.

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

move_sheetA
Destructive

Move a sheet/tab to a different position (reorder tabs).

Args: spreadsheet_id: The ID of the spreadsheet sheet: Name of the sheet to move index: New 0-based position index

Returns: Result of the move operation

ParametersJSON Schema
NameRequiredDescriptionDefault
spreadsheet_idYes
sheetYes
indexYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior2/5

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

Annotations include destructiveHint=true but description only says 'move' and 'reorder', which is not necessarily destructive. Does not elaborate on side effects, permissions, or behavior beyond the basic operation.

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

Conciseness5/5

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

Very concise: one-line purpose, Args section with clear explanations, Returns section. No unnecessary text.

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

Completeness3/5

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

Covers purpose and parameters, but return value is vague ('Result of the move operation'). No mention of what the result object contains, even though an output schema exists. Could be more complete.

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

Parameters4/5

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

Each parameter is explained with a brief description (spreadsheet ID, sheet name, 0-based index), adding value over the schema which only has titles. No examples or constraints, but sufficient.

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

Purpose5/5

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

Clearly states the tool moves a sheet/tab to reorder tabs, with specific verb and resource. Distinguishes from siblings like copy_sheet or rename_sheet.

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

Usage Guidelines2/5

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

No guidance on when to use this vs alternatives. Does not specify context or restrictions (e.g., when reordering is needed versus other operations).

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

protect_rangeB
Destructive

Protect a range or entire sheet from editing.

Args: spreadsheet_id: The ID of the spreadsheet sheet: Sheet/tab name range: A1 notation range to protect. Omit to protect the entire sheet. description: Description of the protection warning_only: If True, shows a warning but allows editing editors: List of email addresses allowed to edit

Returns: Result of the protection operation

ParametersJSON Schema
NameRequiredDescriptionDefault
spreadsheet_idYes
sheetYes
rangeNo
descriptionNo
warning_onlyNo
editorsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior2/5

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

Annotations include destructiveHint: true, but the description does not explain the behavioral implications (e.g., that protection restricts editing, that it may require permissions, or that it is reversible). The description adds no behavioral context beyond the parameter list.

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

Conciseness4/5

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

The description is front-loaded with a clear one-line summary, followed by structured Args and Returns sections. It is concise and uses clear language, though the formatting could be slightly more compact.

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

Completeness2/5

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

Despite covering parameters, the description lacks context about side effects (e.g., requiring permissions, interactions with other tools like clear_range), reversibility, or output details. The Returns line is generic ('Result of the protection operation'), providing no concrete information.

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

Parameters5/5

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

The description comprehensively explains all 6 parameters in the Args section, providing semantic meaning (e.g., 'Omit to protect the entire sheet.'). Since schema description coverage is 0%, the description fully compensates by documenting each parameter's purpose.

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

Purpose5/5

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

The description clearly states the tool's purpose: 'Protect a range or entire sheet from editing.' It uses a specific verb ('Protect') and identifies the resource ('range or entire sheet'), distinguishing it from sibling tools like clear_range or format_cells.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives. The description does not mention prerequisites, exclusions, or when not to use it. It simply lists parameters without contextual usage advice.

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

rename_sheetC
Destructive

Rename a sheet in a Google Spreadsheet.

Args: spreadsheet: Spreadsheet ID sheet: Current sheet name new_name: New sheet name

Returns: Result of the operation

ParametersJSON Schema
NameRequiredDescriptionDefault
spreadsheetYes
sheetYes
new_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

Annotations set destructiveHint=true, so the agent knows the tool is destructive. The description adds no further behavioral context (e.g., effects on formulas, permissions, rollback). It merely restates the operation.

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

Conciseness3/5

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

The description is short and front-loaded with the main sentence. However, the 'Args' and 'Returns' lines are redundant given the schema and output schema, adding unnecessary verbosity without value.

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

Completeness3/5

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

For a simple tool with three required parameters and a clear operation, the description is minimally adequate. However, it lacks guidance on when to use it and does not explain the return value format, which is partially addressed by the output schema.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate. It lists parameter names in 'Args' but adds no additional meaning (e.g., format of spreadsheet ID, uniqueness constraints for sheet names). The information is identical to the schema titles.

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

Purpose5/5

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

The description clearly states the tool's purpose: 'Rename a sheet in a Google Spreadsheet.' It uses a specific verb ('rename') and resource ('sheet'), which distinguishes it from sibling tools like 'move_sheet' or 'copy_sheet'.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. Siblings like 'duplicate_sheet' or 'move_sheet' are listed, but the description does not help the agent differentiate based on operation intent.

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

resolve_commentB
Destructive

Resolve a comment, optionally adding a reply before resolving.

Args: spreadsheet_id: The ID of the spreadsheet comment_id: The comment ID (from get_comments) reply_content: Optional reply to add before resolving

Returns: Result of the resolve operation

ParametersJSON Schema
NameRequiredDescriptionDefault
spreadsheet_idYes
comment_idYes
reply_contentNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already provide destructiveHint: true, so description need not repeat. It adds optional reply detail but lacks other behavioral context (e.g., irreversibility, state changes).

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

Conciseness5/5

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

Exceptionally concise: 3 lines for purpose, args, returns. No extraneous text. Information is well-structured and front-loaded.

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

Completeness3/5

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

Given a simple tool with output schema, description covers essential but misses edge cases (e.g., re-resolving) and vague return ('Result of the resolve operation'). Adequate but not comprehensive.

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

Parameters2/5

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

0% schema coverage means description must compensate. Args are listed with minimal phrases like 'The ID of the spreadsheet', which adds little beyond parameter names. No guidance on format or origin of IDs.

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

Purpose5/5

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

Description clearly states 'Resolve a comment' with a specific action and resource. It distinguishes from siblings like add_comment and get_comments.

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

Usage Guidelines2/5

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

No explicit when-to-use or when-not-to-use guidance. No mention of prerequisites or alternatives despite existence of add_comment and get_comments as siblings.

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

search_spreadsheetsA
Read-only

Search for spreadsheets in Google Drive by name or content.

Args: query: Search query string. Searches in file name and content. Examples: "budget 2024", "sales report", "project tracker" max_results: Maximum number of results to return (default 20, max 100)

Returns: List of matching spreadsheets with their ID, name, and metadata

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes
max_resultsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

The annotations already declare readOnlyHint=true, so the description's safety profile is clear. The description adds value by specifying search scope (name and content), but does not disclose rate limits, authentication needs, or behavior when results exceed max_results.

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

Conciseness5/5

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

The description is concise with two brief sentences for purpose, followed by clearly labeled Args and Returns sections. Every sentence provides value, and the structure is front-loaded for quick scanning.

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

Completeness4/5

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

With 2 parameters (1 required) and an output schema present, the description adequately covers the tool's functionality. It explains what the tool does, how to use parameters, and the query scope. No missing critical context for a search tool.

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

Parameters4/5

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

Schema description coverage is 0%, meaning the input schema provides only type and default. The description compensates by explaining the query searches in name and content with examples, and specifying max_results default (20) and max (100). This adds significant meaning beyond the schema.

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

Purpose5/5

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

The description clearly states 'Search for spreadsheets in Google Drive by name or content', specifying the action, resource, and method. This distinguishes it from siblings like 'list_spreadsheets' (lists all) and 'find_in_spreadsheet' (searches within a specific spreadsheet).

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

Usage Guidelines3/5

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

The description provides query examples and parameter limits, but does not explicitly state when to use this tool versus alternatives like 'list_spreadsheets' or 'find_in_spreadsheet'. It lacks guidance on exclusions 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_tab_colorA
Destructive

Change the color of a sheet tab.

Args: spreadsheet_id: The ID of the spreadsheet sheet: Sheet/tab name color: Hex color (e.g., '#FF0000' for red, '#00FF00' for green). Use '#FFFFFF' or 'none' to remove color.

Returns: Result of the color change operation

ParametersJSON Schema
NameRequiredDescriptionDefault
spreadsheet_idYes
sheetYes
colorYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

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

The annotation destructiveHint=true is present, but the description does not elaborate on what 'destructive' means for a tab color change. It also does not disclose any additional behavioral traits such as side effects, authorization needs, or rate limits. The description adds the hex format guidance but lacks depth beyond that.

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

Conciseness5/5

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

The description is very concise: one line for purpose, then a clear Args section, and a Returns line. Every part serves a purpose with no redundant or extraneous information. It is well-organized and front-loaded.

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

Completeness4/5

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

For a simple tool with three parameters and an output schema, the description covers the essential usage (color format, special values). It does not mention that spreadsheet_id must be a valid ID or that sheet must exist, but the output schema exists to clarify return values. Overall, it is nearly complete with only minor gaps.

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

Parameters5/5

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

The input schema has 0% description coverage, so the description fully compensates by explaining all three parameters. For 'color', it provides concrete examples (e.g., '#FF0000') and special values ('#FFFFFF' or 'none'). This adds significant meaning beyond the bare schema types.

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

Purpose5/5

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

The description states 'Change the color of a sheet tab,' which is a specific verb and resource. This clearly distinguishes the tool from siblings like rename_sheet or move_sheet, which perform different actions.

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

Usage Guidelines2/5

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

The description provides no explicit guidance on when to use this tool versus alternatives. It does not mention prerequisites, contexts, or situations where another sibling tool would be more appropriate. Usage is only implied by the action name.

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

share_spreadsheetA
Destructive

Share a Google Spreadsheet with multiple users via email, assigning specific roles.

Args: spreadsheet_id: The ID of the spreadsheet to share. recipients: A list of dictionaries, each containing 'email_address' and 'role'. The role should be one of: 'reader', 'commenter', 'writer'. Example: [ {'email_address': 'user1@example.com', 'role': 'writer'}, {'email_address': 'user2@example.com', 'role': 'reader'} ] send_notification: Whether to send a notification email to the users. Defaults to True.

Returns: A dictionary containing lists of 'successes' and 'failures'. Each item in the lists includes the email address and the outcome.

ParametersJSON Schema
NameRequiredDescriptionDefault
spreadsheet_idYes
recipientsYes
send_notificationNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

Beyond the destructiveHint annotation, the description discloses that sharing is done via email, notifications can be sent (default true), and returns a dictionary of successes and failures. This adds useful behavioral context that the annotation alone does not provide.

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

Conciseness4/5

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

The description is well-structured with 'Args' and 'Returns' sections, making it easy to parse. It is moderately concise, but every sentence is informative; could be slightly more terse but still effective.

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

Completeness4/5

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

Given the presence of an output schema and 3 parameters, the description covers the tool's purpose, parameters with examples, and return structure. Missing details like error handling or permission requirements, but overall sufficient for a sharing tool.

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

Parameters5/5

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

With 0% schema description coverage, the description fully compensates by explaining each parameter: spreadsheet_id as ID, recipients as a list of dicts with email and role examples, and send_notification with default. This adds essential meaning beyond the raw schema.

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

Purpose5/5

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

The description clearly states the tool shares a Google Spreadsheet with multiple users via email and assigns roles. It uses a specific verb (share) and resource (spreadsheet), and there are no sibling tools with similar functionality, ensuring distinction.

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

Usage Guidelines4/5

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

The description implicitly indicates when to use this tool (when needing to share a spreadsheet with specific roles via email). No explicit alternatives are provided, but since no other sharing tool exists among siblings, the guideline is clear enough for selection.

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

sort_rangeA
Destructive

Sort a range of cells by a column.

Args: spreadsheet_id: The ID of the spreadsheet sheet: Sheet/tab name range: A1 notation range to sort (e.g., 'A1:D100') sort_column: Column letter to sort by (e.g., 'B') order: 'ASCENDING' or 'DESCENDING'

Returns: Result of the sort operation

ParametersJSON Schema
NameRequiredDescriptionDefault
spreadsheet_idYes
sheetYes
rangeYes
sort_columnYes
orderNoASCENDING

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior2/5

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

The description adds no behavioral context beyond the annotation 'destructiveHint: true'. It does not mention in-place modification, handling of headers, or impact on data validity. The annotation already indicates destructiveness, so the description fails to expand on that.

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

Conciseness5/5

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

The description is concise, structured with an Args list and Returns line. No redundant sentences; every part adds value. The main purpose is front-loaded in the first sentence.

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

Completeness4/5

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

For a simple sort operation, the description is largely complete. It covers all input parameters and notes a return value. However, it could mention whether sorting is stable or respects headers, but given the output schema existence, completeness is adequate.

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

Parameters4/5

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

With 0% schema description coverage, the description compensates by listing all parameters with brief explanations: 'sort_column: Column letter to sort by (e.g., 'B')' and 'order: 'ASCENDING' or 'DESCENDING''. This adds meaning beyond the bare schema, though format details for 'range' could be improved.

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

Purpose5/5

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

The description explicitly states 'Sort a range of cells by a column,' which clearly identifies the action (sort), resource (range of cells), and criteria (column). This distinguishes it from sibling tools like 'add_filter', 'clear_range', etc.

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

Usage Guidelines3/5

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

The description does not provide guidance on when to use sorting versus alternatives (e.g., using filters or manual reordering). It merely lists parameters, leaving the agent to infer context from the tool name and siblings.

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

update_cellsB
Destructive

Update cells in a Google Spreadsheet.

Args: spreadsheet_id: The ID of the spreadsheet (found in the URL) sheet: The name of the sheet range: Cell range in A1 notation (e.g., 'A1:C10') data: 2D array of values to update

Returns: Result of the update operation

ParametersJSON Schema
NameRequiredDescriptionDefault
spreadsheet_idYes
sheetYes
rangeYes
dataYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already mark destructiveHint=true, confirming mutation. Description adds no extra behavioral context (e.g., overwrite behavior, response format). Neutral alignment.

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

Conciseness5/5

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

Extremely concise: two sentences plus a structured args list. Every element is necessary with no redundancy.

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

Completeness3/5

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

Output description is vague ('Result of the update operation') and does not specify return structure. Given 4 required params and output schema existence, more detail on return values and behavior would improve completeness.

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

Parameters4/5

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

Description adds meaning for each parameter beyond the schema: spreadsheet_id location, sheet name, range in A1 notation, data as 2D array. Schema coverage is 0%, so description compensates well, though data format specifics are lacking.

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

Purpose4/5

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

Description states verb 'Update' and resource 'cells in a Google Spreadsheet', making the core action clear. However, it does not differentiate from sibling 'batch_update_cells', which has similar purpose.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like batch_update_cells, append_rows, or format_cells. 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.

upload_excelA
Destructive

Upload an Excel (.xlsx/.xls) or CSV file and convert it to a Google Spreadsheet.

Args: file_path: Local file path to the Excel or CSV file title: Optional title for the new spreadsheet (defaults to the filename) folder_id: Optional Google Drive folder ID to place the file in

Returns: The created spreadsheet's ID, title, and URL

ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathYes
titleNo
folder_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

Description mentions the file conversion and return values, but lacks details on file size limits, error handling, or behavior if file already exists. Annotations provide destructiveHint which is consistent.

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

Conciseness5/5

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

Very concise: one-line summary followed by clear parameter descriptions. No redundant information.

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

Completeness4/5

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

Covers main purpose, parameters, and return values. Missing details on file size limits or error scenarios, but adequate for a straightforward upload tool.

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

Parameters4/5

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

Each parameter is described with its purpose beyond the schema: file_path as local path, title as optional name, folder_id as optional Drive folder. Schema coverage is 0%, so description adds significant value.

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

Purpose5/5

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

Clearly states the tool uploads an Excel/CSV file and converts it to a Google Spreadsheet. This distinguishes it from sibling tools like create_spreadsheet (creates empty spreadsheet) and other spreadsheet manipulation tools.

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

Usage Guidelines3/5

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

No explicit guidance on when to use this tool versus alternatives like create_spreadsheet. Usage is implied but not clarified.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 40 tool updatesv0.7.2
    • First observedadd_chart
    • First observedadd_columns
    • First observedadd_comment
    • First observedadd_conditional_format
    • First observedadd_filter
    • First observedadd_pivot_table
    • First observedadd_rows
    • First observedappend_rows
    • First observedauto_resize
    • First observedbatch_update
    • First observedbatch_update_cells
    • First observedclear_range
    • First observedcopy_sheet
    • First observedcreate_sheet
    • First observedcreate_spreadsheet
    • First observeddelete_rows_columns
    • First observedduplicate_sheet
    • First observedexport_sheet
    • First observedfind_in_spreadsheet
    • First observedformat_cells
    • First observedget_comments
    • First observedget_multiple_sheet_data
    • First observedget_multiple_spreadsheet_summary
    • First observedget_revision_history
    • First observedget_sheet_data
    • First observedget_sheet_formulas
    • First observedlist_folders
    • First observedlist_sheets
    • First observedlist_spreadsheets
    • First observedmerge_cells
    • First observedmove_sheet
    • First observedprotect_range
    • First observedrename_sheet
    • First observedresolve_comment
    • First observedsearch_spreadsheets
    • First observedset_tab_color
    • First observedshare_spreadsheet
    • First observedsort_range
    • First observedupdate_cells
    • First observedupload_excel

TDQS

A3.6/5.0

Scored across 40 tools

Disambiguation4/5

Most tools have distinct purposes, but some overlap exists between append_rows and add_rows, and between multiple data retrieval functions like get_sheet_data, get_multiple_sheet_data, and get_sheet_formulas. The batch_update tool is a catch-all that could duplicate many operations, causing potential confusion.

Naming Consistency5/5

All tool names follow a consistent snake_case pattern with a verb_noun structure (e.g., add_chart, list_sheets, update_cells). The naming is predictable and easy to understand, with no mixing of conventions.

Tool Count2/5

With 40 tools, this server is significantly over-scoped for typical usage. Many tools are highly specialized (e.g., set_tab_color, merge_cells, protect_range) and could be combined or offered via the batch_update tool, making the surface area overwhelming.

Completeness4/5

The tool set is extremely comprehensive, covering nearly all common Google Sheets operations including charts, pivot tables, comments, sharing, and import/export. Minor gaps like lack of explicit conditional format deletion or multi-column sorting exist but can be addressed via batch_update.

Maintenance

ActivityInactive
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers