Skip to main content
Glama
basis1: Excel engine for AI agents (formulas, recalculation, audit)

basis1: Excel engine for AI agents (formulas, recalculation, audit)

Official

Parse workbook

parse_workbook
Read-only

Parse an .xlsx workbook in one call and return full semantic NDJSON covering every cell value, formula, and dependency edge; use it to read a whole file without opening a session.

Instructions

Parse an .xlsx workbook in one call and return its full semantic NDJSON: one JSON record per line (workbook_meta, sheet, cell, edge, image, image_summary, audit), covering every cell's value and formula and the formula dependency edges. Use it to read a whole file without opening a session; large files are handed to an async job and awaited for you. To start a parse without waiting, use submit_job; to read a few cells or edit, use create_session; to compare two files, use diff_workbooks. Pass exactly one of path, url or base64 (up to 20 MB). The file is uploaded to the Basis API, and each call counts against the API key's parse quota (quota_exceeded once it is used up). webhook_url, if set, also gets an HMAC-signed POST when the parse finishes.

Input Schema

NameRequiredDescriptionDefault
urlNoURL to fetch the .xlsx file from
pathNoLocal filesystem path to an .xlsx file (read on this machine, then uploaded)
base64NoBase64-encoded .xlsx file bytes
webhook_urlNohttps URL that gets an HMAC-signed POST with the job's status when the parse finishes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changedv0.3.2
    • changedInput schema / properties / webhook_url / description
      Previous value: -"HMAC-signed POST here when the parse completes"New value: +"https URL that gets an HMAC-signed POST with the job's status when the parse finishes"
  2. First observedv0.3.1

TDQS

A4.8/5.0
Behavior5/5

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

Goes well beyond the readOnlyHint/openWorldHint annotations: the file is uploaded to the Basis API, each call consumes the API key's parse quota with quota_exceeded on exhaustion, large files are transparently handed to an async job and awaited, and webhook_url triggers an HMAC-signed POST. The 20 MB ceiling and quota behavior are exactly the operational traits an agent cannot infer from structured fields.

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?

Dense but front-loaded: what it returns first, then when to use it, then sibling alternatives, then input constraints and quota behavior. It is one long paragraph, and the webhook clause slightly repeats the schema's webhook_url description, but virtually every sentence 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?

There is no output schema, yet the description summarizes the return shape (NDJSON, one record per line, named record types, values plus formulas plus dependency edges). Combined with the quota, async, and webhook behavior, nothing an agent needs to call this 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 coverage is already 100%, so the per-parameter descriptions carry the basics. The description still adds real constraint semantics the schema lacks: exactly one of path, url or base64 must be supplied (the schema declares no oneOf and no required fields), plus the 20 MB size limit and the fact that path is read locally then uploaded.

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 (parse an .xlsx workbook) and immediately enumerates the returned NDJSON record types (workbook_meta, sheet, cell, edge, image, image_summary, audit). This makes it trivially distinguishable from session-oriented siblings like create_session and from diff_workbooks.

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?

Explicitly routes the agent: use this for whole-file reads without a session, submit_job to start without waiting, create_session to read a few cells or edit, diff_workbooks to compare two files. Both the when and the when-not are named with the sibling that handles each alternative.

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