SheetXL for Servers

Put spreadsheets to work
in the back office.

Pricing models, reports and reconciliations, run by your services, your schedules and your agents. No rewrite, no screen. In Node, on your servers.

agent · sheetxl mcp
Four jobs

Four jobs it does on day one.

The spreadsheet logic you already have, running where your code runs.

A model as an API

Load a pricing or rating workbook once and serve requests against it. A request is a write and a read; the model stores one formula per range, so each one is cheap.

app.post("/quote", async (req, res) => {
  model.getRange("Inputs!B2").setValue(req.body.volume);
  res.json({ quote: model.getRange("Quote!B10").getValue() });
});

A calc server for your app

The grid in the browser stays light; the server recalculates. Same engine both sides, same results.

const wb = await WorkbookIO.read("budget.xlsx");
wb.getRange("Inputs!B2:B9").setValues(req.body.inputs);
res.json(wb.getRange("Summary!B2:F20").getValues());

Reports at scale

Fill a template with data, recalculate, export xlsx. Scheduled, in a queue, in a container.

npx sheetxl -f fill-report.ts template.xlsx --out report-2026-11.xlsx -- --month 2026-11

Import and audit

Read any workbook, walk precedents and dependents, find errors and write back. The agent tools do this one file at a time; the server does it in bulk.

npx sheetxl -e "wb.getWorksheet().getRegions('anomalies')" upload.xlsx
MCP, library, CLI, automation

Four ways to run it.

One engine. Give it to an agent, call it from your code, run it from a shell, or schedule a script.

MCP server

The engine as tools for an agent: sessions, commits, undo and an audit log.

An agent pipeline. A nightly job with a model in the loop.

npx -y @sheetxl/mcp

Library

The engine in your Node process.

A service, a handler, a worker.

npm install @sheetxl/sdk @sheetxl/io

CLI

The engine from a shell. Query, convert, script.

Cron, CI, a Dockerfile, a one-off.

npx sheetxl book.xlsx --out book.csv

Automation

A TypeScript script that takes a workbook and arguments and returns the changed workbook. Run it from the CLI, a schedule, or your own code.

The same transform, in many places.

npx sheetxl -f transform.ts book.xlsx --save
Runner.run(wb, args, { target: "transform.ts" }) // from @sheetxl/runner
Agents

Agents in the back office.

The MCP server and the CLI run on the same engine, so an agent pipeline can call what a person uses in the grid.

Nightly, an agent reconciles a ledger against a bank export and flags the differences in a workbook. In the morning a person reviews it in VS Code, with every change the agent made listed beside the cells it touched.
Excel-compatible, verified

The answers Excel gives, without Excel.

Deterministic. No Excel install, no LibreOffice, no network call in the loop.

545+
functions checked against Excel
< 0.4 s
to fill and calculate a 1,047,000-formula model
~1 s
to save it, in 160 MB of memory
xlsx · csv · parquet
in and out; formulas, names, formats, charts and pivots survive
Node 22+
containers, serverless, air-gapped
0
Excel installs, LibreOffice processes or network calls

Figures measured on the reference model, October 2026. Memory and timing vary with the workbook.

Trust

Deterministic. Local. Reversible.

An engine you can put in a production path, because every run is repeatable, nothing leaves your infrastructure, and every change is on the record.

Deterministic

Same inputs, same outputs, every run. No Excel install, no LibreOffice, no network call in the loop.

Local to your infrastructure

No phone-home. The key is verified on your server. Containers, serverless and air-gapped all work.

Reversible and auditable

Every change a script makes is listed in the action log, so a job's output can be audited and a bad run traced to the cell.

Excel-grade, verified

545+ functions checked against Excel. Dates, percents and errors are typed values, so what you read is what Excel would show.

Operations

Built to be run, not demoed.

  • Runs anywhere Node runs: containers, serverless, air-gapped.
  • No phone-home. The key is verified on your server.
  • Deterministic. No Excel install, no LibreOffice, no network.
  • A million formulas filled and calculated in under half a second, saved in about a second.
  • 160 MB for the reference model; one formula per range, not one per cell.
  • An action log: every change a script makes is listed, so a job's output can be audited.
Compared

One engine, three layers.

A component for your app, a library for your server, a plugin for the agent you already run. Most spreadsheet vendors cover one layer.

In your appA spreadsheet UI you embedOn your serverA calculation library for NodeWith your agentA plugin for the agent you already run
SheetXL
Univer
GRID
SpreadJS——
SheetJS Pro——
HyperFormula——
Coherent Spark—Their server—
Handsontable———
AG Grid———
Shortcut——Their agent
Tracelight——Their agent

Checked November 2026 against each vendor's public product and pricing pages. A check means a supported product for that layer that runs where you run. "Their server" and "Their agent" mean the vendor does it inside their own product: on their servers, or with their AI, not yours.

Pricing

One price per app.

Apps pay per app. Trying it is free, and your files are never hostage.

$4,495per app per year
  • 10 developer licenses included
  • Evaluation is free, for as long as you need
  • Files always open, edit and save, on every tier, forever
  • Same price as SheetXL for Apps; the two together are two app licenses
See pricing

Startups: $999 the first year.

Many apps or many runtimes: enterprise terms, talk to us.

Run your spreadsheets where your code runs.

Pick a path: paste the prompt into your agent, install the library, or run the CLI.

Paste into Claude Code, Codex, Cursor or any agent that can run a shell.

Install SheetXL skills: npx -y skills add sheetxl/skills -g --all
Then build a small Node service that loads pricing-model.xlsx, sets Inputs!B2 from each request and returns Quote!B10. Save nothing. Use the SheetXL skill's node-app reference.