platform.lisgen.com(01) Start(02) Tools(03) Refusals(04) Auth

Measurement, as a protocol.

An MCP server over JSON-RPC 2.0. Eleven tools, one per intent, every answer carrying its uncertainty and its basis. A refusal comes back as a successful result — never an error to retry.

01

Connect

stdio for local, Streamable HTTP for remote. Protocol revision 2026-07-28.
{
  "mcpServers": {
    "lisgen": {
      "command": "lisgen-mcp",
      "args": ["--store", "~/.lisgen/record.db"]
    }
  }
}

Read lisgen://capabilities before calling anything. It states what the system can and cannot do, with the measurement behind each boundary.

02

Tools11

One per user intent, fully typed. Only the first writes.

03

A refusal is a result, not an error

The single most important thing to know before integrating.

Why

An error gets retried. A retried refusal eventually yields.

If a boundary came back as a JSON-RPC error, an agent would retry it, and a retried refusal eventually gets rephrased into something that answers. So refusals return with isError: false and the reason in the content — the model reads them as the answers they are.

Catalogue

57 documented boundaries, machine-readable.

Each carries the specific study that forbids the claim. Read lisgen://refusals and you get the whole list with reasons — so your agent can learn the limits before it hits one.

Authorisation

// asking for something the evidence forbids
{ "name": "did_it_move", "arguments": { "measurand": "biological_age_years", ... } }

// comes back as a SUCCESSFUL result
{ "isError": false,
  "structuredContent": {
    "kind": "refusal",
    "confidence": "refused",
    "refusals": ["Static clocks estimate a cross-sectional age with noise on the
      order of +/- 9 years, against interventions that move things over 3 months."] } }

04

Authorisation

OAuth 2.1 resource server. We validate tokens; we never issue them.