PluginBench
MCP Server
Active
MIT

Bilig WorkPaper MCP Server

io.github.proompteng/bilig-workpaper

Headless workbook runtime for Node.js: set inputs, recalculate formulas, read outputs, persist JSON—no Excel or browser needed.

What is the Bilig WorkPaper MCP server?

The Bilig WorkPaper MCP server is a TypeScript-native, headless workbook runtime that lets you manage spreadsheet-like models in Node.js services and AI agents. It supports formula recalculation, cell editing, JSON persistence, and verified restore workflows without requiring Excel or a visual spreadsheet application.

Bilig provides a formula-backed workbook model for pricing, quotes, forecasts, and validation workflows. You can set cell inputs, recalculate dependent formulas, read computed outputs, export to JSON, and restore state—all in code. It's designed for services, tests, and AI agents that need workbook-shaped logic without a spreadsheet UI.

How to install Bilig WorkPaper

Copy-paste configuration for popular MCP clients.

transport: stdio
Config generated by PluginBench — verify against the source before use.
~/Library/Application Support/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "bilig-workpaper": {
      "command": "npx",
      "args": [
        "-y",
        "@bilig/workpaper"
      ]
    }
  }
}

Tools & capabilities

Tools this server exposes to the agent.

  • list_sheets — List all sheets in the WorkPaper
  • read_range — Read a range of cells from a sheet
  • read_cell — Read a single cell value
  • set_cell_contents — Set the contents of a cell
  • set_cell_contents_and_readback — Set cell contents and immediately read back computed values
  • get_cell_display_value — Get the display value of a cell
  • export_workpaper_document — Export the WorkPaper to JSON format
  • validate_formula — Validate a formula for correctness

Use cases

  • Build pricing or quote approval workflows that recalculate formulas when inputs change
  • Run forecast or budget models in Node.js services without Excel dependencies
  • Create formula-backed validation rules and audit trails with JSON persistence
  • Enable AI agents to edit workbook cells and verify results before committing changes
  • Test spreadsheet logic in automated test suites with before/after verification

Bilig WorkPaper MCP server FAQ

What is the Bilig WorkPaper MCP server?

It's a headless workbook runtime that lets you manage spreadsheet models in Node.js. You can set cell inputs, recalculate formulas, read outputs, and persist state to JSON—all without Excel or a browser.

Is Bilig free?

Yes, Bilig is open-source under the MIT license.

How do I install it in Cursor or Claude?

Install via npm: `npm install @bilig/workpaper`. For MCP integration, use the local stdio path `bilig-workpaper-mcp --workpaper ./pricing.workpaper.json` or the hosted endpoint `https://bilig.proompteng.ai/mcp` for stateless discovery.

Does it require authentication?

No authentication is required. The local stdio server manages your WorkPaper JSON file directly. The hosted endpoint is stateless and intended only for connector discovery.

What formulas does Bilig support?

Bilig supports standard spreadsheet formulas. Check the compatibility report for unsupported functions, external links, macros, or volatile formulas in your workbook.

Can I import and export Excel files?

Yes, Bilig can import and export `.xlsx` files. However, cached formula values in Excel files are diagnostics only—always verify against a freshly recalculated workbook when correctness matters.

README (reference)

Source of truth, from the repository.

Bilig

CI npm Node.js OpenSSF Scorecard License: MIT

Keep the workbook model. Run the rule in Node.

Bilig is a TypeScript-native, headless WorkPaper runtime for Node.js services, tests, and AI agents. Set inputs, recalculate formulas, read computed outputs, persist WorkPaper JSON, restore it, and verify the result—without driving Excel or a browser grid.

Docs · Quick start · TypeScript API · MCP · Examples · Discussions

<p align="center"> <img src="docs/assets/bilig-hero-workbook-api.png" alt="A WorkPaper input edit recalculating a formula, then surviving JSON restore" /> </p>

[!NOTE] Bilig is a headless workbook runtime, not a visual spreadsheet app or a claim of full Excel compatibility. If an .xlsx file is your contract, start with the compatibility report.

Quick Start

Prove the published package before installing it:

npm exec --yes --package @bilig/workpaper@latest -- bilig-evaluate --door workpaper-service --json

The evaluator edits Inputs!B2, recalculates Summary!B2, saves the WorkPaper, restores it, and compares the restored value:

{
  "schemaVersion": "bilig-evaluator.v1",
  "door": "workpaper-service",
  "evidence": {
    "editedCell": "Inputs!B2",
    "dependentCell": "Summary!B2",
    "before": 24000,
    "after": 38400,
    "afterRestore": 38400
  },
  "verified": true
}

verified: true means the write, formula readback, JSON export, and restored readback all passed. It is stronger evidence than a successful write call.

Use It From TypeScript

npm install @bilig/workpaper
import { buildA1WorkPaper } from "@bilig/workpaper";

const pricing = buildA1WorkPaper({
  Inputs: [
    ["Metric", "Value"],
    ["Units", 20],
    ["Price", 1200],
  ],
  Summary: [
    ["Metric", "Value"],
    ["Revenue", "=Inputs!B2*Inputs!B3"],
  ],
});

const proof = pricing.editAndReadback("Inputs!B2", 32, {
  readbackRange: "Summary!B2",
});

console.log(proof.afterReadback.displayValues[0]?.[0]); // 38400
console.log(proof.verified); // true

pricing.dispose();

For ordinary operations, use set(), setMany(), readMany(), display(), and saveJson(). Use editManyAndReadback() when multiple inputs must be committed and verified as one edit. The complete public API is documented in packages/workpaper/README.md.

The lifecycle is deliberately small:

inputs → formula recalculation → typed readback → JSON persistence → restore verification

Why Bilig

CapabilityWhat it gives you
Workbook-shaped modelsSheets, A1 addresses, formulas, ranges, and named expressions without a spreadsheet UI.
Verified mutationsBefore/after computed values plus persistence and restore checks.
Service-owned statePortable WorkPaper JSON for routes, queues, tests, tools, and audit trails.
Agent-safe toolsNarrow read/write tools with exact cells, computed readback, and writable-sheet boundaries.
Explicit file boundariesSeparate XLSX import, export, risk inspection, and Excel-oracle workflows.

Use Bilig for pricing, quote approval, payouts, forecasts, validation rules, formula-backed workflows, and tests where a service or tool should own the model. Choose a spreadsheet application or hosted spreadsheet API when you need visual editing, collaboration, macros, interactive pivots or charts, or desktop fidelity.

Agents And MCP

Agents should first ask which system owns state, then run the smallest matching proof. For a tool host or MCP client:

npm exec --yes --package @bilig/workpaper@latest -- bilig-agent-start --json
npm exec --yes --package @bilig/workpaper@latest -- bilig-evaluate --door agent-mcp --json

The MCP evaluator proves tool discovery, mutation, recalculated readback, JSON export, disk persistence, process restart, and restored readback. For a local, writable WorkPaper:

npm exec --yes --package @bilig/workpaper@latest -- bilig-workpaper-mcp --workpaper ./pricing.workpaper.json --init-demo-workpaper --writable

Use that local stdio path for private or persistent project state. The hosted https://bilig.proompteng.ai/mcp endpoint is request-local and only intended for stateless connector discovery and smoke tests; do not send private workbook data to it.

The server exposes list_sheets, read_range, read_cell, set_cell_contents, set_cell_contents_and_readback, get_cell_display_value, export_workpaper_document, and validate_formula. It also publishes MCP resources and prompts so capable hosts can discover the workflow before editing cells.

Machine-readable entry points:

NeedEntry point
A compact routing carddocs/agent-start.txt
A concise model indexdocs/llms.txt
Full agent documentationdocs/llms-full.txt
Installation contextdocs/llms-install.md
Structured capabilitiesdocs/agent.json
Reusable skillskills/bilig-workpaper/SKILL.md
Proof and host matrixdocs/agent-adoption-kit.md

The published package also carries AGENTS.md and SKILL.md, so an agent can discover the same proof contract from node_modules. Install or inspect the public skill with either source:

npx --yes skills@latest add https://bilig.proompteng.ai --list
npx --yes skills@latest add proompteng/bilig --skill bilig-workpaper --list
<details> <summary>Host-specific project files</summary>

Use the agent rule chooser or the host handoff prompt. The repository includes CLAUDE.md, .claude/skills/bilig-workpaper/SKILL.md, .claude/commands/bilig-workpaper-proof.md, .cursor/rules/bilig-workpaper.mdc, .devin/rules/bilig-workpaper.md, .windsurf/rules/bilig-workpaper.md, .clinerules/bilig-workpaper.md, .continue/rules/bilig-workpaper.md, .zed/settings.json, opencode.jsonc, and .opencode/agents/bilig-workpaper.md.

</details>

Integration Recipes After The Proof

Run an evaluator first, then use the recipe owned by your host:

  • OpenAI Agents SDK: direct tools, MCPServerStdio, and MCPServerStreamableHttp.
  • OpenAI Responses API: function-call readback with explicit before/after evidence.
  • Vercel AI SDK: generateText() and streamText() tool loops.
  • Open WebUI: local or hosted MCP discovery.
  • n8n: the @bilig/n8n-nodes-workpaper community node.

Choose An Evaluation Path

Your state ownerStart hereEvidence to require
TypeScript applicationnpm install @bilig/workpaperdirect A1 API and focused application tests
Node service, route, queue, or testbilig-evaluate --door workpaper-service --jsonedit, recalculation, JSON export, restore, verified: true
MCP client or tool hostbilig-evaluate --door agent-mcp --jsondiscovery, readback, disk persistence, restart
Imported .xlsx is the contractworkbook-compatibility-report workbook.xlsx --jsonunsupported formulas and workbook risk reasons for that file
Cached .xlsx values look stalexlsx-cache-doctor workbook.xlsx --jsonstale-cache diagnosis, recalculation, and readback for that file

The workbook-compatibility and xlsx-cache evaluator doors use bundled demo workbooks to smoke-test the published package; they do not inspect your file. Do not treat any evaluator as proof of desktop Excel parity.

Examples And Deeper Guides

Start with one maintained example, not the whole monorepo:

Useful decision guides:

<details> <summary>Runnable integration and diagnostic commands</summary>
pnpm --dir examples/headless-workpaper run agent:ai-sdk-generate-text
pnpm --dir examples/headless-workpaper run agent:ai-sdk-stream-text
pnpm --dir examples/headless-workpaper run agent:openai-responses
pnpm --dir examples/headless-workpaper run agent:mcp-xlsx-risk-preflight
pnpm --dir examples/serverless-workpaper-api run hono-route
pnpm --dir examples/serverless-workpaper-api run next-server-action
pnpm --dir examples/serverless-workpaper-api run next-server-action-formdata

The AI SDK generateText() smoke lives at ai-sdk-generate-text-tool-smoke.ts. The OpenAI example is documented in openai-responses-workpaper-tool-call.

For a reduced formula or import bug:

npm exec --yes --package @bilig/workpaper@latest -- bilig-formula-clinic ./reduced.xlsx --cells "Summary!B7,Inputs!B2"
</details>

XLSX And Excel Compatibility

Bilig can import and export workbook files, but cached formula values inside an .xlsx are diagnostics—not an accuracy oracle. Inspect the file before trusting it:

npm exec --yes --package @bilig/xlsx-formula-recalc@latest -- bilig-evaluate --door workbook-compatibility --json
npm exec --yes --package @bilig/xlsx-formula-recalc@latest -- workbook-compatibility-report workbook.xlsx --json
npm exec --yes --package @bilig/xlsx-formula-recalc@latest -- xlsx-cache-doctor workbook.xlsx --json

The first command is a package smoke test over a bundled demo. The next two inspect the named file. The compatibility report identifies unsupported functions, external links, macros, pivots, volatile formulas, and other risks; it does not certify Excel compatibility. When correctness matters, compare against a workbook freshly recalculated by Excel. See the compatibility limits and Excel oracle walkthrough.

Packages And Repository Map

PathRole
packages/workpaperRecommended @bilig/workpaper API, evaluators, AI SDK adapter, MCP server, and XLSX boundary.
packages/headlessLower-level WorkPaper runtime and integration primitives.
packages/xlsx-formula-recalcReal-file compatibility and stale-cache diagnostics.
packages/formulaFormula parser, binder, compiler, and evaluator.
packages/coreWorkbook state, mutations, snapshots, and scheduling.
apps/webBrowser spreadsheet shell.
apps/biligFull-stack runtime, APIs, and static site host.

The public package requires Node.js >=22. Local monorepo development uses Node.js 24+, Bun, and pnpm@10.32.1.

Published releases include npm registry signatures and provenance attestations:

npm view @bilig/workpaper version dist.attestations dist.signatures --json
npm audit signatures

Development

Choose one long-running development server:

pnpm dev:web
pnpm dev:web-local

Install and validate the repository with:

pnpm install
pnpm build
pnpm lint
pnpm typecheck
pnpm test
pnpm run ci

Architecture lives in docs/architecture.md. Read CONTRIBUTING.md before opening a pull request; first-time contributors can start with the new contributor guide and starter issues. All participation follows the CODE_OF_CONDUCT.md.

Support And Security

If Bilig fits one of your services or agent workflows, star the repository to follow releases and help other Node developers find it. Tell us what proof or formula is still missing.

License

MIT

Related MCP servers

Live odds, cross-book +EV and graded player-prop results across 27 books. Hosted endpoint included.

1
TypeScript
MIT
View repository →

Minimal Jira Cloud MCP server: broad reads, a narrow 3-tool write surface, optional read-only mode.

0
Python
MIT
View repository →
SQSQL Safe MCP logo

Minimal, read-only, PII-safe MCP server for SQL databases.

0
Python
MIT
View repository →

Enables coding agents to coordinate edits, reviews, and escalations without file locking conflicts

The Oura v2 API as an MCP server. Paginates, fixes the date range, warns when data is missing.

0
Python
MIT
View repository →
MYMythxEngine logo

MythxEngine

Maintained

Tabletop RPG engine over MCP: dice, combat, stress, clocks, world generation, four bundled worlds

2
TypeScript
MIT
View repository →