Skip to main content
Glama
dbett4

regulated-reporting-mcp

by dbett4

workiva_format_cells

Apply cell formatting to Workiva table ranges, including fill colors and borders, using batch operations for efficient updates.

Instructions

Format cells via POST /content/tables/{tableId}/cells/edit (v2026).

table_id here is the sheet's OPAQUE content-table TOKEN (sheet.table.table — a long base64-ish string), NOT a 32-hex UUID. The legacy UUID path 404s on v2026. Colors are RGB objects {red, green, blue} with integer channels 0–255.

⚠️ v2026 PERSISTENCE (live-verified 2026-05-31 with before/after readback): NOT every op that returns 202 actually applies. On this cells/edit endpoint:

  • setCellsProperties (fillColor) — ✅ PERSISTS. Use this for cell fill.

  • setCellsBorders — borders (use NO_BORDER to clear; dedupe per edge).

  • formatCells (font/bold/color) — ⚠️ returns 202 but does NOT persist on v2026. For font/bold/size use the SEPARATE platform path: POST /spreadsheets/{ss}/sheets/{sid}/update with applyFormats.textFormat (fontFamily/fontSize/bold) — NOT exposed by this tool; call via api_request.

  • valueFormat / dataValidation / conditionalFormat — NO proven REST route on v2026 (UI-only); cells/edit returns 400 MalformedValue for DV/CF. A 202 from this tool is acceptance, NOT proof of apply — read the cell properties back to confirm.

Args: table_id: The opaque content-table token (from describe_workbook / get_sheet → table.table) operations: Array of format operations. Recommended types: - setCellsProperties (PERSISTS): {"type":"setCellsProperties","setCellsProperties":{"ranges":[...],"fillColor":{"red":230,"green":240,"blue":255}}} - setCellsBorders: {"type":"setCellsBorders","setCellsBorders":{"ranges":[...],"bottom":{"color":{"red":0,"green":0,"blue":0},"style":"single","weight":1}}} - formatCells (⚠️ 202 but no-persist on v2026 — see note): {"type":"formatCells","formatCells":{"ranges":[...],"color":{...},"fontFamily":"Arial","bold":true}}

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
table_idYes
operationsYes

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
resultYes
Behavior5/5

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

With no annotations, the description carries full responsibility and delivers exceptionally: it discloses the 202 false-acceptance pitfall, names exactly which operations persist, recommends readback verification, and documents error cases (400 for DV/CF). It also clarifies the table_id token format vs UUID, preventing common misuse.

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?

Although lengthy, every sentence serves a purpose. It opens with the endpoint and key caveat, then systematically details persistence status, parameter formats, and JSON examples. Warnings and clarifications are clearly labeled (⚠️), and the structure helps the agent quickly extract critical behavioral facts without padding.

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 complexity of the endpoint and the lack of annotations, the description covers all necessary context: parameter semantics, persistence expectations, alternatives for unsupported formatting, error behavior, and verification advice. The existence of an output schema further reduces the need to describe return values, so completeness is high.

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 coverage is 0%, so the description must explain both parameters. It does so thoroughly: table_id is described as an opaque content-table token (not a 32-hex UUID), and operations includes concrete JSON examples for setCellsProperties and setCellsBorders, plus a note about formatCells. This exceeds what the bare schema (just names) provides.

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 formats cells via a specific endpoint, and contextually distinguishes itself from siblings like workiva_write_cells (cell values) and workiva_read_cells (cell reading). It also specifies the scope (cell properties, borders, formats) and notes when to use a different path for font/bold/size, making its purpose 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 provides explicit when-to-use guidance, including which operations actually persist (setCellsProperties, setCellsBorders) and which don't (formatCells on v2026), with a clear recommendation to use api_request for font/bold/size. It also lists unsupported operations (valueFormat, dataValidation, conditionalFormat) and their error behavior, effectively telling the agent when to avoid this tool.

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

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/dbett4/regulated-reporting-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server