Skip to main content
Glama

Update Spreadsheet

update_spreadsheet
Destructive

Write data to a range in an existing Google Sheet. The range must reference a tab that already exists (e.g. 'Overview!A1' requires an 'Overview' tab). Errors with 'Unable to parse range' if the tab name is unknown — call add_sheet_tab first to create new tabs. Values are stored EXACTLY AS GIVEN by default, so '=B1+B2' is saved as text and does not calculate; pass value_input_option='USER_ENTERED' to write real formulas. The result carries formula_notice when cells starting with '=' were stored as text.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
rangeYesA1 notation range e.g. 'Sheet1!A1:C10'
data_jsonYesJSON-encoded 2D array of cell values
clear_firstNoIf true clear the range before writing. Defaults to false.
spreadsheet_idYesThe spreadsheet ID
value_input_optionNoHow to interpret the values. 'RAW' (default) stores every value exactly as given, so '=B1+B2' is stored as the literal text and does NOT compute. 'USER_ENTERED' parses values the way typing them would, so formulas evaluate and dates are recognised. Use USER_ENTERED when the sheet is meant to calculate.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
statusYesAlways 'ok' — a failure arrives as an error
updated_rowsYesRows changed
updated_cellsYesCells changed
updated_rangeYesThe fully-qualified range Google wrote, including the tab name. Compare this against the tab you intended — a range with no tab prefix goes to the FIRST sheet.
formula_noticeNoPresent only when cells beginning with '=' were written as literal text because value_input_option was RAW. Those cells will NOT compute. Rewrite the range with value_input_option='USER_ENTERED' if formulas were intended.
spreadsheet_idYesThe spreadsheet that was written
updated_columnsYesColumns changed

Schema Changelog

Changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. First observed

TDQS

A4.9/5.0
Behavior5/5

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

Annotations establish destructiveHint=true and readOnlyHint=false, but the description goes much further: it discloses that values are stored EXACTLY AS GIVEN by default, that '=B1+B2' becomes literal text unless USER_ENTERED is used, that an error 'Unable to parse range' occurs for unknown tabs, and that the result carries formula_notice. These are non-obvious behavioral details that materially affect invocation and interpretation.

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?

Every sentence earns its place: purpose, a key prerequisite with an example, failure mode with a routing instruction, the important exact-storage caveat with the fix, and a note about the result payload. The most critical constraints are front-loaded, and there is no filler or repetition of schema content.

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 destructive write operation, the description covers the core prerequisites, the error path, the behavioral nuance around formulas, the alternative for creating tabs, and the formula_notice in the result. An output schema exists, so return-value documentation is not the description's burden. Nothing essential is missing for correct tool selection and invocation.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds meaningful context beyond the schema: it gives a concrete tab-name example for range, explicitly connects the range requirement to the add_sheet_tab sibling, and reinforces the formula-storage distinction. This elevates the parameter documentation beyond what the schema alone provides, though not to a 5 given the schema is already thorough.

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 opens with a specific verb and resource: 'Write data to a range in an existing Google Sheet.' It clearly distinguishes this from siblings like update_document and update_presentation by targeting spreadsheets, and it implies the sheet must already exist, which differentiates it from create_spreadsheet. The purpose is immediately understandable and unambiguous.

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

Usage Guidelines5/5

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

The description gives explicit when-to-use guidance: it states the sheet must already exist, names the failure mode for unknown tabs, and directly instructs the agent to 'call add_sheet_tab first' when creating new tabs. It also tells when to choose value_input_option='USER_ENTERED' instead of the default RAW behavior. This is exemplary routing guidance.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources