Skip to main content
Glama

append_rows

Append rows to the end of Excel worksheet data or extend a named Excel table, copying formats from the row above, with a dry run by default to preview changes.

Instructions

Append rows after the last data row (or to the bottom of an Excel table). DRY RUN BY DEFAULT.

rows: list of rows, each a list of values using the same coercion rules as set_cells ('=...' formula, leading quote = literal text, ISO dates, null = empty cell). table: name of an Excel table on the sheet to extend (its range grows with the new rows). If the last data row belongs to a table and table= is omitted, the call is refused so rows are not left outside the table. Tables with a totals row are refused. Number formats and styles are copied from the row above. Rows start in the first used column. Refused if the space below is not empty. Warns when data validation or conditional formatting ranges end at the old last row and will not cover the new rows. output/overwrite/allow_loss work as in set_cells.

Input Schema

NameRequiredDescriptionDefault
pathYes
rowsYes
sheetYes
tableNo
outputNo
dry_runNo
overwriteNo
allow_lossNo

Output Schema

NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.5/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and does so well: dry run is the default, number formats and styles are copied from the row above, rows start in the first used column, table ranges grow, and the call warns when data validation or conditional formatting ranges will not cover new rows. These are exactly the side effects an agent must know before invoking a mutation.

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-loaded with the core action and the dry-run warning, then organized as compact per-parameter notes with no filler sentences. The 'work as in set_cells' line offloads detail to a sibling rather than explaining it, which is efficient but leaves a small gap.

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?

An output schema exists, so return values need not be explained, and the description covers the behavioral risks of a mutation tool thoroughly. Remaining gaps are the meaning of path (does the workbook need to exist?) and sheet, plus what a dry run actually returns.

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 coverage is 0% across 8 parameters, so the description must compensate. It explains the tricky ones in depth: rows coercion rules (formula, leading quote, ISO dates, null = empty cell), table semantics plus failure conditions, dry_run via 'DRY RUN BY DEFAULT', and output/overwrite/allow_loss by reference to set_cells. It never describes path or sheet, and the cross-reference to set_cells assumes knowledge of that sibling's parameters.

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 target: 'Append rows after the last data row (or to the bottom of an Excel table).' The scope, the insertion point, and the table-extending alternative are all named, so it is distinguishable from set_cells, which it explicitly references for shared semantics.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete conditions and refusal cases: refuses when the last data row belongs to a table and table= is omitted, refuses tables with a totals row, refuses if the space below is not empty. It does not draw an explicit 'use append_rows instead of set_cells when…' contrast, but the append-at-end framing makes the choice reasonably clear.

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