Skip to main content
Glama

gws-mcp__sheets_format_table

Destructive

Make a spreadsheet table readable in one call: column widths, wrapped and top-aligned cells, a styled and frozen header row, and hairline borders. This is the pass to run on ANY sheet a person is going to open. Values written through sheets_update and sheets_append carry no formatting at all, and the untouched default is columns 100px wide with every long cell truncated to a slit, so a sheet with entirely correct data is routinely unreadable and the reader never learns there was more text. Applies everything as one atomic batch. Use sheets_format_range for specific styling on top, or instead of this when you do not want the whole opinionated pass.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "spreadsheet_id": "<spreadsheet_id>",
      "range": "<range>"
    },
    "name": "gws-mcp__sheets_format_table"
  }
}

Input Schema

NameRequiredDescriptionDefault
wrapNoDefault true: wrap and top-align the body so rows grow to fit their content. Row heights are deliberately never set, because a fixed height overrides auto-fit and re-clips the text wrapping just unclipped.
rangeYesThe table: a bare tab name for the whole tab, or A1 notation like "TabName!A1:E60" naming a tab the spreadsheet actually has. Include the header row.
bandedNoDefault false. Tint alternating body rows.
accountNoOptional email address of the connected account to use (e.g. 'user@gmail.com'). If omitted, the default account is used.
trim_gridNoDefault false. DELETES the rows and columns outside the range, which is what makes a sheet look authored rather than dumped. Destructive and opt-in, and it needs a fully bounded range so there is an end to trim from.
header_rowsNoHow many rows at the top of the range are headers. Default 1. Use 0 for a table with no header, which skips both the header styling and the freeze.
column_widthsNoPixel widths, left to right, e.g. [250, 400, 400]. Columns you do not name get default_width. This is the single highest-value change on any sheet with prose in it.
default_widthNoWidth for columns not named in column_widths. Default 200.
freeze_headerNoDefault true: keep the header rows visible while scrolling. Only rows are ever frozen, never columns, because a frozen column makes merging across it illegal and would take an entire later batch down with it.
spreadsheet_idYesThe spreadsheet ID

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.4/5.0
Behavior4/5

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

Beyond the annotations it discloses that everything is applied as one atomic batch, that trim_grid permanently DELETES rows and columns outside the range and is opt-in, and that row heights are deliberately never set and columns never frozen (with reasons). The destructiveHint=true annotation is corroborated rather than merely repeated, though the description does not address auth or the account parameter's fallback behavior.

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

Conciseness4/5

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

Front-loads the one-call purpose, then the motivating problem, then the alternative. Every sentence carries weight, though the middle explanation of truncated cells is slightly longer than strictly needed to route the agent.

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 10-parameter mutation tool with no output schema, the description covers the destructive option, atomicity, defaults, header handling, and the sibling alternative. An agent has enough to decide when to call it and what the risky flag does before invoking.

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

Parameters3/5

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

Schema description coverage is 100% and the schema already explains wrap, trim_grid, header_rows, column_widths, default_width and freeze_header in detail. The description largely restates those fields at a high level rather than adding new meaning, so the high-coverage baseline of 3 applies.

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

Purpose5/5

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

States a specific verb and outcome ("Make a spreadsheet table readable in one call") and enumerates exactly what the pass applies: column widths, wrapping/top-alignment, styled frozen header, hairline borders. It explicitly distinguishes itself from the sibling sheets_format_range, so an agent can choose without opening either schema.

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?

Gives an explicit when-to-use rule ("the pass to run on ANY sheet a person is going to open") with a concrete motivation (values from sheets_update/sheets_append carry no formatting; default 100px columns truncate text). It also names the alternative and the condition for choosing it: sheets_format_range for targeted styling on top, or instead of this when the opinionated pass is unwanted.

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.