# Bilig WorkPaper (remote · bilig.proompteng.ai)

Formula-backed WorkPaper tools for workbook readback, input edits, and JSON persistence.

- Trust score: 76/100 (medium)
- Change this week: +5
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- remote · `bilig.proompteng.ai`: 76/100 (this document), [markdown](https://verifymcp.io/servers/proompteng-bilig-workpaper/bilig.md), [page](https://verifymcp.io/servers/proompteng-bilig-workpaper/bilig)
- npm · `@bilig/workpaper`: 48/100, [markdown](https://verifymcp.io/servers/proompteng-bilig-workpaper/bilig-workpaper.md), [page](https://verifymcp.io/servers/proompteng-bilig-workpaper/bilig-workpaper)

## Channel facts

- Endpoint: `https://bilig.proompteng.ai/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `0.164.11`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-03.

- **Endpoint Security**: 74/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - No authorisation is required to call this server. Every tool declares its destructiveHint and none is destructive, so open access doesn't expose one.
  - HTTPS is enforced; there's no plaintext access path.
  - HSTS check failed: the Strict-Transport-Security header is absent.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 88/100
  - 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (excellent).
  - Tool/resource definitions use about 832 tokens (~69/item across 12 items; 8 tools + 4 resources), lean.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 27/100
  - Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
  - Structured output schemas are declared (100% of tools); any adoption earns full credit.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### Claude

```bash
claude mcp add --transport http proompteng-bilig-workpaper https://bilig.proompteng.ai/mcp
```

### Codex

```toml
[mcp_servers.proompteng-bilig-workpaper]
url = "https://bilig.proompteng.ai/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "proompteng-bilig-workpaper": {
      "type": "remote",
      "url": "https://bilig.proompteng.ai/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add proompteng-bilig-workpaper --url https://bilig.proompteng.ai/mcp --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  proompteng-bilig-workpaper:
    url: "https://bilig.proompteng.ai/mcp"
```

### Other

```json
{
  "mcpServers": {
    "proompteng-bilig-workpaper": {
      "type": "http",
      "url": "https://bilig.proompteng.ai/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-02 (score 76, +1)

No change was recorded against any check on this day. Stability & Change Management went from 20 to 23. That category is still filling its 30-day observation window: 6 days of observed history at the previous scan, 7 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-31 (score 75, +2)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-30 (score 73, 0)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-29 (score 73, +1)

No change was recorded against any check on this day. Stability & Change Management went from 7 to 10. That category is still filling its 30-day observation window: 2 days of observed history at the previous scan, 3 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-28 (score 72, +1)

No change was recorded against any check on this day. Stability & Change Management went from 3 to 7. That category is still filling its 30-day observation window: 1 days of observed history at the previous scan, 2 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-27 (score 71, 0)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-26 (score 71)

First indexed and scored.

## MCP tools (8)

### `list_sheets` (~36 tokens)

List WorkPaper Sheets

Discover sheet names and used dimensions before reading or editing a WorkPaper. Returns metadata only; use read_range or read_cell for values.

Output parameters:

- `sheets` (array)
- `sourcePath` (string): Absolute JSON file path when the server was started with --workpaper.
- `writable` (boolean): Whether set_cell_contents persists edits back to the source JSON file.

### `read_range` (~88 tokens)

Read WorkPaper Range

Read calculated values plus serialized formulas/inputs for an A1 range. Use for audit readback after edits; use read_cell for one address.

Input parameters:

- `range` (string, required): A1 range such as Summary!A1:B5. If omitted from the range, pass sheetName separately.
- `sheetName` (string): Default sheet name when range omits a sheet name, for example Summary.

Output parameters:

- `range` (string): Canonical A1 range including the sheet name.
- `serialized` (array): Two-dimensional array of raw serialized cell contents, including formulas.
- `values` (array): Two-dimensional array of evaluated cell values.

### `read_cell` (~65 tokens)

Read WorkPaper Cell

Read one cell with calculated value, display text, formula text, formula diagnostics, and serialized content. Use after set_cell_contents to verify readback.

Input parameters:

- `address` (string, required): Single A1 cell address such as B3.
- `sheetName` (string, required): Existing sheet name.

Output parameters:

- `address` (string): Canonical sheet-qualified A1 address.
- `displayValue` (string): Formatted value as a user would see it.
- `formula`: Formula text without losing the original calculated value context, or null for literal cells.
- `formulaDiagnostics` (array): Structured formula diagnostics. Empty when the cell has no formula error.
- `serialized`: Raw serialized cell content; formulas are strings that start with =.
- `value`: Calculated cell value.

### `set_cell_contents` (~149 tokens)

Set WorkPaper Cell Contents

Write raw content to one cell and recalculate dependents in memory only. Start with --writable when the edit should persist to JSON.

Input parameters:

- `address` (string, required): Single A1 cell address such as B3. Ranges are not accepted.
- `sheetName` (string, required): Existing sheet name, for example Inputs.
- `value` (string, required): Raw cell content. Formula strings must start with =; plain strings are stored as literals. Strict MCP hosts such as Semantic Kernel require a single parameter type, so pass evaluated numbers/booleans…

Output parameters:

- `after` (object)
- `before` (object)
- `checks` (object)
- `editedCell` (string): Canonical sheet-qualified address that was edited.
- `persistence` (object)
- `restored` (object)

### `set_cell_contents_and_readback` (~222 tokens)

Set WorkPaper Cell Contents And Read Back

Write raw content to one cell, recalculate dependents, read a dependent range in the same tool call, and return persistence proof. Use this for stateless MCP clients such as hosted Open WebUI integrations.

Input parameters:

- `address` (string, required): Single A1 cell address to edit, such as B3. Ranges are not accepted.
- `readbackRange` (string, required): Dependent A1 range to read before and after the edit, for example Summary!A1:B5.
- `readbackSheetName` (string): Default sheet name when readbackRange omits a sheet name.
- `sheetName` (string, required): Existing sheet name for the cell to edit, for example Inputs.
- `value` (string, required): Raw cell content. Formula strings must start with =; plain strings are stored as literals. Strict MCP hosts require a single parameter type, so pass evaluated numbers/booleans as formulas such as =0.…

Output parameters:

- `after` (object)
- `afterReadback` (object)
- `before` (object)
- `beforeReadback` (object)
- `checks` (object)
- `editedCell` (string): Canonical sheet-qualified address that was edited.
- `persistence` (object)
- `readbackRange` (string): Canonical sheet-qualified range read before and after the edit.
- `restoredReadback` (object)

### `get_cell_display_value` (~63 tokens)

Get WorkPaper Cell Display Value

Return the formatted display string for one cell. Use when an agent needs what a user would see, not the raw numeric value.

Input parameters:

- `address` (string, required): Single A1 cell address such as B3.
- `sheetName` (string, required): Existing sheet name.

Output parameters:

- `address` (string)
- `displayValue` (string)

### `export_workpaper_document` (~56 tokens)

Export WorkPaper Document

Export the current WorkPaper JSON document for persistence, review, or handoff to another agent. Does not write files by itself.

Input parameters:

- `includeConfig` (boolean): Include workbook configuration metadata in the exported JSON. Defaults to true.

Output parameters:

- `document` (object): Persisted WorkPaper JSON document.
- `serializedBytes` (number)
- `sourcePath` (string)

### `validate_formula` (~63 tokens)

Validate WorkPaper Formula

Validate formula syntax with the WorkPaper parser before writing it to a cell. This checks syntax only; use set_cell_contents plus readback to evaluate.

Input parameters:

- `formula` (string, required): Formula string including the leading =, for example =SUM(Inputs!B2:B4).

Output parameters:

- `formula` (string)
- `valid` (boolean)

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/proompteng-bilig-workpaper/bilig#diagnostics

## Score history

- 2026-08-03: 76
- 2026-08-02: 76
- 2026-08-01: 75
- 2026-07-31: 75
- 2026-07-30: 73
- 2026-07-29: 73
- 2026-07-28: 72
- 2026-07-27: 71
- 2026-07-26: 71

## Links

- Remote endpoint: https://bilig.proompteng.ai/mcp
- Repository: https://github.com/proompteng/bilig
- Changelog RSS feed: https://verifymcp.io/servers/proompteng-bilig-workpaper/bilig/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/proompteng-bilig-workpaper/bilig/changelog.json
- HTML version of this page: https://verifymcp.io/servers/proompteng-bilig-workpaper/bilig
