basis1

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" }
  }
}