McpStamp Spreadsheets
Server Details
Read, filter, group and write XLSX, CSV, TSV and JSON data, and convert between the formats.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- theluckystrike/mcp-servers
- GitHub Stars
- 0
TDQS
Scored across 13 tools
Each tool has a fairly distinct role: load/unload manage storage, info/files describe the workbook, read pages rows, query filters/aggregates, stats does whole-column summaries, find searches cells. There is still some overlap between sheet_query (aggregate/sort) and sheet_stats (sum/mean/median), and sheet_read vs sheet_query boundaries require reading carefully, but descriptions give explicit guidance. Minor confusion only.
A clear <domain>_<action> convention is used throughout (sheet_load, sheet_read, sheet_query, sheet_write, sheet_convert, sheet_add_column, license_activate, license_status). A few names are noun-only (sheet_info, sheet_stats, sheet_files), which is a small deviation but still highly predictable.
Thirteen tools is well within a sensible scope, and each earns its place: one pair for licensing, a few for file storage lifecycle, and the rest for spreadsheet operations. No obviously redundant or filler tools.
The surface covers the full read/write lifecycle: load, inspect, read, query, stats, search, convert, write, add computed column, list and unload. Gaps exist for row-level update/delete, joining or merging multiple loaded sheets, and renaming, which agents must work around via rewrite/convert.
Available Tools
13 toolslicense_activateActivate licenseAInspect
Turn Pro on for this connection with key, an MCPL1.. issued at checkout for this server or the bundle. Data under your token stays; a wrong or expired key changes nothing. license_status confirms it.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | License key from checkout, MCPL1.<payload>.<signature> |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is not read-only and not destructive, and the description adds useful behavioral detail: existing data under the token stays, and a wrong or expired key changes nothing. This goes beyond the annotation hints by explaining failure semantics and safety of the operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no filler. It front-loads the core action, then gives the key format and safety guarantees, and closes with the verification tool. Every sentence contributes essential information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter activation tool with annotations covering the safety profile, the description is complete: it states what the tool does, what input is needed, what happens on failure, and how to confirm success. There is no missing critical information for an agent to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents the key parameter and its format with 100% coverage. The description adds meaning by specifying that the key must be issued at checkout for this server or the bundle, which clarifies validity requirements not present in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: it 'turns Pro on' for the connection using a license key. It also distinguishes itself from the sibling license_status tool by saying license_status confirms the activation. This leaves no ambiguity about what the tool accomplishes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for use: the key must be an MCPL1.<payload>.<signature> issued at checkout for this server or the bundle. It does not explicitly list exclusions or alternative tools, but it does reference license_status as the confirmation path, giving the agent a sense of the workflow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
license_statusLicense statusARead-onlyIdempotentInspect
Report this endpoint's licence state for your token as JSON: the product, the tier free or pro, why it is not Pro, and the checkout URL. Call it to explain a free-tier refusal. No arguments, nothing changes.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint. The description adds useful context beyond annotations by specifying the JSON response contents and stating 'nothing changes,' reinforcing the read-only nature of the call.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences cover output, purpose, usage context, and side-effect guarantee. Every sentence earns its place and the most important information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description sufficiently describes the return value. With no parameters, annotations covering safety, and a clear use case, nothing essential is missing for an agent to invoke this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero parameters and the schema already fully documents that fact. The description explicitly says 'No arguments,' which is accurate and reinforces the schema without needing further elaboration.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description begins with a specific verb ('Report') and a precise resource ('this endpoint's licence state for your token'), and enumerates the exact output fields: product, tier, reason, and checkout URL. This clearly distinguishes it from sibling tools like license_activate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to call it: 'Call it to explain a free-tier refusal.' This is clear contextual guidance, though it does not name alternatives or explicitly state 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.
sheet_add_columnAdd a columnAInspect
Call this tool to add a computed column and save the result to a NEW file; the source is never modified unless out_path points at it. Returns the new file path, the row count and a preview of the first rows.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name of the new column. It must not already exist on the sheet | |
| path | Yes | Path to the source .xlsx/.xlsm/.xlsb/.ods/.csv/.tsv file (~ is expanded); it is never modified | |
| sheet | No | Sheet name; default is the first sheet | |
| values | No | Explicit values, one per data row, instead of a formula. Missing entries are left blank | |
| formula | No | Expression over the columns of each row, in the same expression language as sheet_query, e.g. "[Qty] * [Unit Price]" or '[Country] = "PL"'. Give either formula or values | |
| decimals | No | Round numeric formula results to this many decimals. Default: the widest decimal count of the columns the formula reads, capped at 2 when they all hold 2 or fewer (money in, money out); otherwise no rounding beyond float cleanup | |
| out_path | No | Output file; default <source>-plus-<column>.<same ext>. The source file is left untouched unless this points at it |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds valuable behavioral context beyond the annotations by explaining that the source file is never modified unless out_path points at it, and by summarizing the return value. It also clarifies the tool creates a new file, which is important given readOnlyHint is false and destructiveHint is false.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no fluff: it front-loads the tool's purpose and key safety behavior, then lists the return values. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is complete for selecting and invoking this tool, especially paired with a fully documented schema. It explains what the tool does, where results go, what safety guarantee applies, and what the caller receives in return.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameter meanings. The description does not add per-parameter semantics beyond the schema, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: add a computed column and save the result to a new file. It also distinguishes the tool's core behavior from siblings by emphasizing that the source remains untouched unless out_path points at it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context for when to call this tool: to add a computed column and produce a new file. It does not explicitly name alternatives or exclusion conditions, but the intended use is unmistakable from the first sentence.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sheet_convertConvert fileAInspect
Call this tool to convert a sheet between excel (xlsx), csv and json. Writes a new file next to the source unless out_path is given; the source is never modified. Returns the new file path with its row and column counts.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | Target format; the default out_path takes this as its extension | |
| path | Yes | Path to the source .xlsx/.xlsm/.xlsb/.ods/.csv/.tsv file (~ is expanded); it is never modified | |
| sheet | No | Sheet to convert; default is the first sheet. Only that one sheet is written | |
| out_path | No | Where to write; default is the source name with the new extension, next to the source. It must differ from the source path |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already convey readOnlyHint=false and destructiveHint=false, establishing this as a non-destructive write. The description adds valuable context beyond those flags: it writes a new file next to the source by default, guarantees 'the source is never modified', and discloses the return payload (new file path with row and column counts). This is consistent with the annotations and enriches them with concrete behavior an agent needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences with no waste: purpose first, then side-effect behavior, then return value. Each sentence carries distinct information (what it does, where output goes, what comes back), and the canonical 'Call this tool to...' opener front-loads the decision-relevant purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly compensates by explaining the return value (new file path plus row and column counts). Combined with 100% schema parameter coverage and consistent annotations, an agent has what it needs to invoke correctly. The only minor gap is the unstated relationship to the sheet_load/sheet_unload workflow — it does not say whether the source file must be loaded in the workspace first.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four parameters (path, to, sheet, out_path) are already well-documented in the schema. The description adds no parameter-level semantics beyond what the schema states — the 'source is never modified' claim and out_path default behavior are both already present in the schema's parameter descriptions. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence states a specific verb and resource — 'convert a sheet between excel (xlsx), csv and json' — which clearly differentiates this tool from siblings like sheet_read, sheet_write, sheet_load, and sheet_add_column. An agent can immediately tell this is a format-conversion tool, not a read/write/query operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Call this tool to convert a sheet between excel (xlsx), csv and json' provides an explicit trigger condition for when to invoke it. However, it does not name alternatives or state when NOT to use it (e.g., no mention that in-place editing should use sheet_write). The context is clear but lacks explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sheet_filesList loaded sheetsARead-onlyIdempotentInspect
List the sheets loaded for this token, with their sizes and the storage left under the 2 MB cap.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive, closed-world behavior, so the bar is lower; the description still adds the per-token scope and the 2 MB storage-cap context an agent needs to interpret results. It stops short of describing pagination or result ordering, but little else is needed for a zero-argument listing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; scope, contents, and the capacity constraint all appear immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With annotations covering the safety profile and no output schema present, the description carries the return-shape burden and does so (sizes, remaining space under the cap). Only minor gaps remain, such as ordering or how the cap is reported.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes no parameters, so there is nothing to disambiguate; baseline 4 applies. No parameter discussion is expected or missing.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (list) and resource (sheets loaded for this token), plus the returned fields (sizes, remaining storage under the 2 MB cap). This clearly separates it from siblings like sheet_info or sheet_stats that target a single sheet or aggregate statistics.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'loaded for this token' scoping implies when it applies, but there is no explicit guidance on when to prefer it over sheet_info, sheet_stats, or sheet_find. Usage is inferable rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sheet_findFind textAInspect
Call this tool to search every cell of a spreadsheet or CSV for text; built-in file readers cannot parse spreadsheets. Matching is case insensitive. Returns cell addresses with a preview of the row each hit is on.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Path to the .xlsx/.xlsm/.xlsb/.ods/.csv/.tsv file (~ is expanded) | |
| text | Yes | Text to look for; matched case insensitively anywhere inside a cell. Up to 200 hits are returned | |
| sheet | No | Sheet name; default searches every sheet |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds useful behavioral details beyond the annotations: matching is case insensitive, and it returns cell addresses with a row preview. Since annotations provide no positive safety signal and the tool is a search operation, this is reasonably transparent, though it could have explicitly stated it does not modify the file.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences and front-loads the core purpose with 'Call this tool to search every cell...' followed by a brief rationale and key behavioral details. Every sentence adds value and there is no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple search tool with full schema coverage, the description adequately explains return shape (cell addresses with row preview) and matching behavior. It is slightly incomplete in that it does not describe error conditions or explicitly confirm no side effects, but these are minor for this operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the input schema fully documents all three parameters. The description adds high-level behavior but does not materially extend parameter-level meaning beyond what the schema already provides, meriting the baseline score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action: 'search every cell of a spreadsheet or CSV for text.' This clearly distinguishes the tool from siblings like sheet_read and sheet_query, which read or query structured data rather than doing a raw cell-by-cell text search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context for when to use the tool: when searching spreadsheets for text, noting that 'built-in file readers cannot parse spreadsheets.' It does not explicitly name alternative sibling tools or state when not to use it, so it misses the top tier of explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sheet_infoSpreadsheet overviewAInspect
Call this tool for any spreadsheet or CSV file path; built-in file readers cannot parse spreadsheets and must not be used for them. Start here: sheet names, size, header row, column types and samples.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Path to the .xlsx/.xlsm/.xlsb/.ods/.csv/.tsv file (~ is expanded) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With all annotations false, the description carries the full burden and does list the return content (sheet names, size, header row, column types, samples). However, it says nothing about whether the tool modifies anything, requires special permissions, or how it handles invalid paths, so behavioral disclosure is only partial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no filler. The routing instruction and the prohibition on built-in readers come first, followed by a compact list of the output's contents, making it easy for an agent to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter info tool with no output schema, the description adequately states what the agent will get. It could be more complete by noting that the tool is read-only or what happens on missing/invalid files, but those are minor gaps given the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single path parameter is 100% covered by the input schema, including accepted extensions and tilde expansion. The description only restates 'any spreadsheet or CSV file path', adding no syntax, formatting, or usage details beyond the schema, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly defines the tool as a spreadsheet/CSV overview entry point, stating exactly what it returns: sheet names, size, header row, column types, and samples. It distinguishes itself from built-in file readers, but does not explicitly route between sibling sheet_* tools, so it falls just short of full sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly says to call this tool for any spreadsheet or CSV file path and forbids using built-in readers for them, which is a strong when-to-use/when-not-to-use rule. It also positions the tool as 'start here', but it does not give explicit conditions for preferring siblings like sheet_read or sheet_stats over this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sheet_loadLoad a sheet into this sessionADestructiveIdempotentInspect
Upload data to work on. This hosted endpoint has no filesystem, so instead of a file path you send the data once with sheet_load and then pass its name as path to sheet_info, sheet_read, sheet_query, sheet_stats, sheet_find, sheet_add_column, sheet_convert and sheet_write. Give exactly one of csv (raw text, comma or tab separated), xlsx_base64 (a base64-encoded .xlsx workbook) or url. url: fetch a public file instead of pasting base64 (recommended above about 10 KB): the url is fetched here with a 10 second timeout, at most 3 redirects, public http(s) hosts only, and a 2 MB cap, and a fetched file is stored as an .xlsx when it carries the PK zip header and as delimited text otherwise. Loaded sheets are kept for your token and survive between calls; the total is capped at 2 MB per token. Files the other tools write come back as a download link that is valid for one hour.
| Name | Required | Description | Default |
|---|---|---|---|
| csv | No | Raw CSV or TSV text, including the header row | |
| url | No | url: fetch a public file instead of pasting base64 (recommended above about 10 KB). Public http(s) only; private, link-local and this endpoint's own zone are refused | |
| name | Yes | Name to refer to this data by: 1-64 characters of letters, digits, underscore or dash, e.g. "sales" or "sales.csv" | |
| xlsx_base64 | No | Base64-encoded .xlsx workbook |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Rich disclosure beyond the annotations: 2 MB per-token storage cap, sheet persistence across calls, url fetch behavior (10s timeout, max 3 redirects, public http(s) only, 2 MB cap, PK-zip-header sniffing to decide xlsx vs delimited text), and the one-hour download link for outputs. Gaps: destructiveHint=true is never explained (what happens if `name` collides with an already loaded sheet), and the description describes fetching arbitrary public hosts while openWorldHint is declared false, a tension worth surfacing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded, which is good, but the second sentence is a single run-on that crams url policy, mime detection, token storage limits, and download-link lifetime into one breath. The content mostly earns its place; the packaging could be broken into shorter statements for faster scanning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a stateful, no-filesystem ingestion tool with no output schema, the description covers everything an agent needs: how to supply data, how to reference it later, storage limits, network constraints, and how written files come back. Nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 real semantics the schema cannot express: the three data-source parameters are mutually exclusive ("give exactly one of"), and url is preferred over base64 above ~10 KB. It reinforces rather than duplicates the schema on the format specifics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific action (upload data into this session) on a specific resource, and immediately clarifies the session-scoped model: send data once, then refer to it by name as `path` in the eight named sibling tools. An agent can distinguish sheet_load from sheet_read/sheet_write 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says to give exactly one of csv, xlsx_base64, or url, and gives the decision rule for url (recommended above about 10 KB) versus pasting base64. It also names the downstream tools that consume the loaded name, so the when-to-use and what-next are both spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sheet_queryFilter, group and sort rowsAInspect
Call this tool for any spreadsheet or CSV file path; built-in file readers cannot parse spreadsheets and must not be used for them. Filter, group, aggregate and sort in one call; never hand sums over sheet_read rows.
| Name | Required | Description | Default |
|---|---|---|---|
| as | No | ||
| path | Yes | Path to the .xlsx or .csv file | |
| sort | No | Sort column; may be an aggregate alias such as total_units | |
| limit | No | Default 100 | |
| sheet | No | ||
| where | No | Filter, e.g. [Qty] >= 5 AND ([Status] = "open" OR [Status] = "new") | |
| select | No | Column names to return; default all (with group_by, defaults to the group columns plus the aggregates) | |
| group_by | No | Group rows by these columns before aggregating, e.g. ["Rep"] or ["Region","Rep"] | |
| aggregate | No | Aggregates per group, e.g. [{"col":"Units","fn":"sum","as":"total_units"}]. Defaults to a row count when group_by is given. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are present but sparse, and the description adds workflow-level behavior (everything in one call, no need to read rows and aggregate manually). However it says nothing about side effects, output size/pagination beyond the schema's limit default, or cost, and it does not resolve the surprising readOnlyHint=false/idempotentHint=false flags for what is functionally a query operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero filler. The first sentence is front-loaded with the routing instruction (when to use this tool and which tools to avoid), and the second packs the operation set plus a do-not-workaround rule. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 9 parameters including nested objects and no output schema, the description covers selection/routing well but is silent on return shape, pagination behavior at the 100-row default, and error/edge cases (missing sheet, bad column). Given the annotations carry some safety signal, it is adequate but not complete for a parameter-heavy tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 78% and the schema already carries rich per-parameter detail (where-clause syntax example, group_by examples, aggregate alias semantics, limit default). The description restates the capabilities at a high level but adds no syntax or interaction detail (e.g. how select interacts with group_by) beyond what the schema provides, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a concrete capability set — filter, group, aggregate, sort — over a concrete resource (any spreadsheet or CSV file path), and the title reinforces the row-level scope. It also implicitly separates itself from the generic row reader via 'never hand sums over sheet_read rows', so an agent can identify the right tool without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit positive and negative routing: call this for any spreadsheet/CSV path, do NOT use the built-in file readers because they cannot parse spreadsheets, and do the aggregation here rather than summing sheet_read rows. Both the when-to-use and the when-not-to-use cases are stated with the alternative named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sheet_readRead rowsARead-onlyIdempotentInspect
Call this tool for any spreadsheet or CSV file path; built-in file readers cannot parse spreadsheets and must not be used for them. Reads rows as a table, JSON or CSV; page with limit/offset or an A1 range.
| Name | Required | Description | Default |
|---|---|---|---|
| as | No | Output format, default table | |
| path | Yes | ||
| limit | No | Rows to return, default 100 | |
| range | No | A1 range such as A1:D50; overrides limit/offset | |
| sheet | No | Sheet name; defaults to the first sheet | |
| offset | No | Rows to skip, default 0 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool as read-only, idempotent, and non-destructive, so the description does not need to repeat safety traits. It adds useful behavioral context by explaining raw row reading, supported output formats, and pagination via limit/offset or an A1 range.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two tightly packed sentences: the first provides the critical routing rule, and the second summarizes output formats and pagination options. Every sentence contributes value with no repetition or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read tool with no output schema, the description gives enough to understand what it returns (rows as table, JSON, or CSV) and how to page through results. It does not specify the exact returned JSON/table shape or mention the sheet parameter, but the high-quality schema fills most of that gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is high at 83%, and the schema already documents as, limit, range, sheet, and offset with defaults and override behavior. The description mostly echoes these concepts without adding meaningful new parameter semantics beyond clarifying that path refers to spreadsheet/CSV files.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb and resource: it reads rows from spreadsheet or CSV file paths and supports table, JSON, or CSV output. It distinguishes itself from built-in file readers, though it does not explicitly differentiate from sibling sheet tools such as sheet_query or sheet_load.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an explicit when-to-use rule ('Call this tool for any spreadsheet or CSV file path') and an explicit when-not-to-use rule for built-in file readers, which cannot parse spreadsheets. This is direct routing guidance with a named alternative class of functionality.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sheet_statsColumn statisticsAInspect
Call this tool for any spreadsheet or CSV file path; built-in file readers cannot parse spreadsheets and must not be used for them. Whole-column statistics: count, empty, distinct, min, max, sum, mean, median.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| sheet | No | ||
| columns | No | Limit to these columns; default all |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description lists the statistics returned, providing some output expectation, but it does not state whether the operation is read-only, how errors like missing files are handled, or the response format. Annotations are all false, so they provide no safety or side-effect context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences carry the full message with no filler; the usage directive is front-loaded and the statistic list is compact. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Core purpose and output statistics are clear, but the definition is incomplete for an agent: it lacks sheet parameter semantics, output format, and read-only/side-effect guarantees. No output schema exists, so the description should carry more of this burden.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 33%, and the description only adds meaning to path by allowing spreadsheet or CSV paths; columns already has a schema description. The optional sheet parameter is never explained, and no guidance is given about how it applies to CSV files.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies a specific operation: computing whole-column statistics (count, empty, distinct, min, max, sum, mean, median) for spreadsheet or CSV paths. It distinguishes the tool from built-in file readers, but it does not explicitly differentiate it from sibling sheet_* tools like sheet_read or sheet_query.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly says to call this tool for any spreadsheet or CSV file path and states that built-in file readers cannot parse spreadsheets and must not be used. This is clear usage context, though it does not discuss when to prefer sheet_query/sheet_read or when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sheet_unloadDelete a loaded sheetBDestructiveInspect
Delete one sheet loaded for this token, freeing its space under the 2 MB cap.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, readOnlyHint=false, and idempotentHint=false, so the safety profile is covered. The description adds useful quota context ('freeing its space under the 2 MB cap'), but omits whether the source file is affected and whether unloading an unloaded sheet errors — both relevant for a non-idempotent destructive call.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the action, scope, and side effect are all in one clause sequence. Nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter destructive tool with no output schema, the description covers the action and the quota benefit but leaves the identifier semantics and missing-sheet behavior undefined. Annotations cover safety, so the gaps are not fatal, but the definition is only minimally sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the single parameter 'name' is undocumented in the schema. The description never explains what 'name' is — the sheet name as given to sheet_load, a path, a case-sensitive key, or a 70-char identifier — so it fails to compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Delete one sheet loaded for this token'), and the 'loaded for this token' qualifier scopes it to the session context, which distinguishes it in spirit from sheet_load. It does not name the inverse sibling (sheet_load) or the file-level tools, so differentiation is implied rather than explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to unload versus simply leaving a sheet loaded, no mention of the corresponding sheet_load tool, and no note on what happens if the name is not currently loaded. The agent must infer usage entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sheet_writeWrite rowsAInspect
Call this tool to write rows to an xlsx, csv, tsv or json file; the extension of out_path picks the format. mode is new_file, append or overwrite. Other sheets are kept. Free: 500 rows per file.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | Yes | new_file writes a brand new file and refuses to clobber an existing one; append adds the rows under the existing data; overwrite replaces the file contents | |
| path | Yes | Source file for append/overwrite, or the intended file for new_file (~ is expanded) | |
| rows | Yes | Array of objects, whose keys become the headers, or an array of arrays with the header row first | |
| sheet | No | Sheet to write; default is the first sheet of the source, or "Sheet1" for a new file. Other sheets of an existing workbook are kept unchanged | |
| out_path | No | Where to write; default is a new file next to the source for new_file, or the source itself for append/overwrite. The output format follows this extension: .xlsx, .csv, .tsv or .json. An extension is required |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already signal a mutating, non-idempotent, non-open-world operation, so the description does not need to restate that. It adds useful behavioral detail beyond the annotations: "Other sheets are kept" clarifies side effects on existing workbooks, and "Free: 500 rows per file" discloses a quota constraint. No contradiction with the annotations is present.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three short sentences with no filler. It front-loads the core action, then packs the most decision-relevant facts—format selection, modes, preservation of other sheets, and row quota—into compact follow-up statements.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 5-parameter write tool with a rich schema and no output schema, the description provides the key operational context: supported formats, mode choices, non-destructive effect on other sheets, and file-size limits. It does not describe the return value or error behavior, but the schema covers parameter semantics sufficiently for an agent to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with detailed explanations for path, rows, mode, sheet, and out_path. The description mostly summarizes the mode enum and format selection rather than adding new meaning, so the baseline of 3 is appropriate; it does not need to compensate for schema gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: "write rows to an xlsx, csv, tsv or json file." It also clarifies that the output format is chosen by the extension of out_path, which distinguishes it from sibling read/query/convert tools. The name and title align tightly with this described behavior.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description opens with "Call this tool to write rows," which gives a clear general context for when the tool applies. However, it does not name alternatives, state when not to use it, or explain how it differs from sibling tools like sheet_load, sheet_convert, or sheet_add_column. Usage is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
13 tool updates
- First observed
license_activate - First observed
license_status - First observed
sheet_add_column - First observed
sheet_convert - First observed
sheet_files - First observed
sheet_find - First observed
sheet_info - First observed
sheet_load - First observed
sheet_query - First observed
sheet_read - First observed
sheet_stats - First observed
sheet_unload - First observed
sheet_write
Related MCP Connectors
Convert and clean tables: CSV, JSON, dedupe, stats. Free.
Excel analytics: inspect, query (JSON rows), charts, and JSON-to-xlsx workbook writing.
Open, inspect, filter, edit and convert xlsx and csv files from your AI chat. Processing is local.
Open, inspect, filter, edit and convert xlsx and csv files from your AI chat. Processing is local.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceRead and filter Excel, CSV, ODS, SQLite, Parquet and MTSV files — or a folder — as plain text1MIT
- AlicenseNot gradedqualityDmaintenanceEnables efficient reading, analyzing, and querying of Excel, CSV, and JSON files with support for chunked processing, column/field filtering, and streaming for large datasets. Supports multiple transport protocols (stdio, HTTP, SSE) for flexible integration.39 npm4ISC
- AlicenseAqualityCmaintenanceConverts, aligns, reshapes, and inspects tabular data across Markdown, CSV, TSV, JSON, and HTML with CJK-aware alignment and deterministic transformations, entirely offline and without file access.4MIT
- AlicenseNot gradedqualityCmaintenanceEnables exploring and querying structured data (JSON, JSONL, CSV, TSV) via shape, read, find, and diff operations, with bounded resource usage.5 npmMIT
Glama MCP Gateway
Add one secure layer between your agents and this server.