Spreadsheets, in the shape your LLM already wants.
basis1 parses .xlsx workbooks into a typed cell graph, a formula dependency edge list, cell-anchored images, and a certificate that it all matches what Excel would compute. One API call. No OCR, no bounding boxes, no guessing.
Building an agent? Start at /llms.txt.
Why basis1
A computation graph, not a document
Most tools treat a workbook as a document to OCR — bounding boxes, text spans, tables that are 80% right. basis1 treats it as what it is: cells, formulas, and the edges between them.
Verified against Excel
Every formula is re-evaluated and checked against Excel's own cached value. You get a certificate of trust, not just numbers you have to hope are right.
Cell-anchored media
Embedded images arrive with anchor coordinates and content hashes, interleaved with the row data around them — so a photo never shows up context-free.
Deterministic
No LLM in the parsing loop. Same workbook in, same graph out, every time — safe to run in a pipeline you don't babysit.
Quickstart
One call, no NDJSON parsing or job polling to write yourself.
# npm install @basis/parse
import { Basis } from "@basis/parse";
const basis = new Basis({ token: process.env.BASIS_TOKEN });
const records = await basis.parse("./workbook.xlsx");
LLM integration
Point an agent at basis1 directly — no SDK to wire in. There’s a hosted MCP server and machine-readable context files an agent can pull on its own.
MCP server
A hosted Model Context Protocol endpoint at /mcp. Tools for parse_workbook, submit_job, get_job, and stream_job — the whole API, exposed to any MCP client with a bearer token.
Context files
Start an agent at /llms.txt for the map, or /llms-full.txt for the whole reference inline. /openapi.yaml describes every route.
Output built for models
A typed cell graph, a formula dependency edge list, and a verification audit — already in the shape a model can reason over, so there’s no glue code between the parse and the prompt.
// add the MCP server to your agent (e.g. Claude, mcp.json)
{
"basis1": {
"type": "http",
"url": "https://api.basis1.tech/mcp",
"headers": { "Authorization": "Bearer $BASIS_TOKEN" }
}
}