Use this when an agent is about to drive a spreadsheet UI by screenshots or clicks. The narrower contract is better: list workbook tools, write one input cell, read the dependent formula output, export WorkPaper JSON, restart from the persisted file, and return proof.
npm exec --package @bilig/workpaper@latest -- bilig-mcp-challenge --json
The current challenge prints this shape:
{
"transport": "stdio-json-rpc",
"serverName": "bilig-headless-workpaper",
"tools": [
"list_sheets",
"read_range",
"read_cell",
"set_cell_contents",
"get_cell_display_value",
"export_workpaper_document",
"validate_formula"
],
"editedCell": "Inputs!B3",
"dependentCell": "Summary!B3",
"before": 60000,
"after": 96000,
"afterRestart": 96000,
"displayValue": "96000",
"persistence": {
"persisted": true,
"serializedBytes": 1162
},
"checks": {
"listedFileBackedTools": true,
"listedResourcesAndPrompts": true,
"formulaValidationPassed": true,
"dependentCellChanged": true,
"persistedToDisk": true,
"exportContainsWorkPaperDocument": true,
"restartReadbackMatchesAfter": true,
"displayValueRead": true
},
"verified": true,
"star": "https://github.com/proompteng/bilig/stargazers",
"watchReleases": "https://github.com/proompteng/bilig/subscription",
"adoptionBlocker": "https://github.com/proompteng/bilig/discussions/new?category=general"
}
The exact byte count can change. The invariants are dependentCellChanged,
persistedToDisk, restartReadbackMatchesAfter, and verified: true.
This does not prove arbitrary workbook compatibility, macros, pivots, charts, external links, unsupported formulas, or desktop Excel parity. It proves the agent tool contract: no screenshot truth, no blind write-only success, and no missing persistence proof.