Skip to main content
Glama

gws-mcp__sheets_format_range

Destructive

Set fonts, colours, wrapping, alignment, padding, number formats and merges on spreadsheet cells. Takes a LIST of formatting instructions and applies all of them in one atomic call, so a whole formatting pass is one tool call rather than one call per range. Colours are ordinary hex (#RRGGBB) and are converted for you. Only the properties you actually set are touched; anything you leave out keeps whatever the cell already had. If you want a table to simply look readable, use sheets_format_table instead, which does the whole standard pass. For anything not covered here (borders, banding, protected ranges) use sheets_batch_update.

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>",
      "formats": "<formats>"
    },
    "name": "gws-mcp__sheets_format_range"
  }
}

Input Schema

NameRequiredDescriptionDefault
accountNoOptional email address of the connected account to use (e.g. 'user@gmail.com'). If omitted, the default account is used.
formatsYesOne or more formatting instructions, each applied to one or more ranges. Every field except "ranges" is optional and only the ones you set are changed. Fields: ranges (array of A1 strings, required, e.g. ["TabName!A1:D1", "TabName!A20:D20"]), bold (boolean), italic (boolean), strikethrough (boolean), font_family (string, e.g. "Inter"), font_size (number), text_color ("#RRGGBB"), background_color ("#RRGGBB"), horizontal_align (LEFT|CENTER|RIGHT), vertical_align (TOP|MIDDLE|BOTTOM), wrap (OVERFLOW|CLIP|WRAP), number_format (a pattern string such as "#,##0.00", "yyyy-mm-dd" or "0.0%"), padding ({top,right,bottom,left} in pixels), merge (boolean, merges each named range into a single cell). Example: [{"ranges":["TabName!A1:D1"],"bold":true,"background_color":"#F1F1F1"},{"ranges":["TabName!A2:D99"],"wrap":"WRAP"}]
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?

Annotations only declare readOnlyHint=false and destructiveHint=true; the description adds genuinely new behavioral context — all instructions are applied atomically, only explicitly set properties are touched, omitted properties are preserved, and hex colours are converted server-side. The one gap is that it never warns that merge collapses a range into a single cell and can discard the non-anchor values, which is the main destructive path behind the destructiveHint.

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?

Front-loaded with the verb and resource, then the batching rationale, then the two fallback routes. Every sentence earns its place: the atomicity note prevents per-range call loops, and the two sibling references prevent misrouting, with no filler or restatement of the name.

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 3-parameter, no-output-schema mutation tool this covers purpose, alternatives, and partial-update semantics well. Minor omissions remain: it does not say what the call returns on success or note the merge data-loss caveat implied by destructiveHint=true.

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

Parameters3/5

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

Schema coverage is 100% and the formats schema already documents every field, the A1 range format, and a full example, so the description carries little of the parameter burden. It adds some meaning beyond the schema — that the colour hex is converted for the caller and that the list is applied atomically with unset fields left untouched — but repeats no field-level detail that would help an agent construct a valid formats entry.

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 ("Set") plus a precise resource ("spreadsheet cells") and enumerates the property families it covers (fonts, colours, wrapping, alignment, padding, number formats, merges). It also distinguishes itself from two named siblings, so an agent can pick it without opening any 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?

Explicit routing is given in both directions: use sheets_format_table when the goal is simply a readable table, and sheets_batch_update for anything outside this tool's scope (borders, banding, protected ranges). It also explains the batching idiom (one atomic call instead of one call per range), which is the main reason to choose it over repeated calls.

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.