Skip to main content
Glama

check_formulas

Audit spreadsheet formulas structurally without calculating: detect broken references, #NAME? errors, circular references, inconsistent patterns, hardcoded numbers, and volatile functions, grouped by issue type.

Instructions

Audit formulas structurally (nothing is calculated). Reports: broken references (#REF! or a missing sheet), unknown names (#NAME?), cells currently showing error values, circular references reachable through direct cell/range references, formulas that differ from the pattern (R1C1) of the formulas directly above AND below them in the same column, typed numbers sitting inside a column of formulas, hardcoded numbers inside arithmetic (e.g. =A2*1.18), and volatile functions (NOW, TODAY, RAND, OFFSET, INDIRECT ...). Results are grouped per kind and capped by max_issues. Use sheet= to check one sheet.

Input Schema

NameRequiredDescriptionDefault
pathYes
sheetNo
max_issuesNo

Output Schema

NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.2/5.0
Behavior4/5

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

No annotations are supplied, so the description carries the full burden, and it does substantial work: 'nothing is calculated' signals pure read-only analysis with no side effects, and it discloses that results are grouped per kind and truncated by max_issues. It stops short of stating error conditions (e.g. non-xlsx files) or whether issues are deduplicated.

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 lead sentence states the action and the crucial non-calculation caveat first, then the long list of detections follows. The parenthetical examples are dense but each clarifies a category; the enumeration is lengthy yet nearly every item earns its place.

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 three-parameter read-only audit tool with an output schema already documenting the return shape, the description covers what is detected, the scope control, and the result cap. Nothing essential to invoking it correctly is missing.

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 must compensate, and it does for two of three parameters: sheet= restricts scope to one sheet and max_issues caps results per kind. The path parameter is left implicit, but its meaning is self-evident from the other file-based siblings.

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 resource ('Audit formulas structurally') and immediately scopes it with 'nothing is calculated', which distinguishes it from read_range or find_cells. The enumeration of detected problem classes makes the tool's domain unmistakable.

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 when to use it (structural formula auditing rather than value inspection) and adds one concrete usage hint, 'Use sheet= to check one sheet', but never explicitly contrasts it with siblings like find_cells or read_range, nor states 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.