Skip to main content

catqualia-ledger-mcp

An MCP server that lets an agent check a claim against a real, published falsification ledger instead of guessing.

Agents are increasingly asked to verify their own output. Most have nowhere to verify it against. This server is a concrete answer: 16,217 claims that were actually run against ground truth, each recorded with the measurement that would have refuted it, the value measured, and the verdict — including 5,837 the system refuted against its own work.

What is in the ledger

Computed from the bundled ledger.jsonl.gz at call time, never hardcoded:

parseable records 16,217
distinct checks 324
records carrying a pre-registered refutation threshold 16,194 (99.9%)
verdicts REFUTED 5,837
verdicts CONFIRMED 5,520
verdicts UNVERIFIED 4,815
checks re-run at least twice 277
verdict transitions 79
hardening / loosening 38 / 38 — net 0

The last line is the point. Re-run the checks and classify every verdict that moved: CONFIRMED -> REFUTED after a check is hardened means the instrument had been fooled and stopped being fooled (a hardening event); the reverse is a loosening event. The signed net measures whether a system's ability to catch its own false claims is improving or degrading.

It is currently zero. That is published because reporting only the +38 half would be a metric tuned to its owner — which is the exact failure the ledger exists to detect.

Install

uvx catqualia-ledger-mcp        # run without installing
# or
pip install catqualia-ledger-mcp

No dependencies. Python 3.9+. Implements MCP over stdio as newline-delimited JSON-RPC 2.0.

Configure

{
  "mcpServers": {
    "catqualia-ledger": {
      "command": "uvx",
      "args": ["catqualia-ledger-mcp"]
    }
  }
}

Tools

query_claim(query, verdict?, limit?)

Search the ledger. Returns the claim, its refutation threshold, the measured value, the method, and the verdict.

get_verdict(check?, claim?)

The recorded verdict for a named check. If a check ran more than once, all verdicts are returned in ledger order — a change between them is a ratchet event. A claim that is not in the ledger returns found: 0, never a plausible guess.

what_would_refute(query?, limit?)

The pre-registered threshold: the measurement that would have killed each claim, recorded before the outcome was known. Use it to test whether a claim is falsifiable at all, rather than whether it is currently believed.

verifier_drift_net()

The ratchet, recomputed from the ledger: re-runs, transitions, hardening, loosening, signed net, and the definition of what the number means.

citation_block(slug?)

BibTeX plus schema.org ScholarlyArticle JSON for a CatQualia publication, with the DOI resolved, so citing agents cite correctly. Call with no slug to list what is available.

Design rules this server follows

These are deliberate, and they are the reason it is worth trusting:

  • Every number is computed from the bundled ledger at call time. Nothing is cached from a summary or a blog post.
  • UNVERIFIED is returned as UNVERIFIED. It is never rounded up to a verdict, in either direction.
  • A miss returns a miss. If a claim is not in the ledger the server says so and explains that absence is not evidence either way. It does not infer.
  • The net ratchet is returned signed, including when it is zero.
  • A slug match is exact-first. Substring matching is not safe for a citation tool: "thesis" is a substring of "synthesis", which once returned the wrong DOI. Matching is exact → prefix → contains → word-boundary on title.

Licence

Code: CatQualia Open-Or-Pay Licence (COPL) v1.0 — free for research, individuals and academia with attribution; commercial use requires either opening the derivative stack or a commercial waiver. See LICENSE.

Ledger data: CatQualia Structural Isomorphism License (CSIL) v3.0 — https://catqualia.com/licensing.

Citation

@software{catqualia_ledger_mcp,
  title  = {catqualia-ledger-mcp: an MCP server for the CatQualia falsification ledger},
  author = {Betances, Christopher},
  year   = {2026},
  url    = {https://github.com/OpeningBlackBox/catqualia-ledger-mcp},
  note   = {16,217 pre-registered claims; verifier ratchet net zero}
}

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

catqualia_ledger_mcp-1.0.0.tar.gz (1.9 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

catqualia_ledger_mcp-1.0.0-py3-none-any.whl (1.9 MB view details)

Uploaded Python 3

File details

Details for the file catqualia_ledger_mcp-1.0.0.tar.gz.

File metadata

  • Download URL: catqualia_ledger_mcp-1.0.0.tar.gz
  • Upload date:
  • Size: 1.9 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: Python-urllib/3.14

File hashes

Hashes for catqualia_ledger_mcp-1.0.0.tar.gz
Algorithm Hash digest
SHA256 3d9e41a963ce82c45addba017cb9b8b5b3865774154cebfce5cc621dad8e5fea
MD5 b5f4c20a4c8f01a61833e15b235a26a7
BLAKE2b-256 869e98f5d776cf795fc668da89ea40c4263229cc6f1e6f7e3f615516cb850e06

See more details on using hashes here.

File details

Details for the file catqualia_ledger_mcp-1.0.0-py3-none-any.whl.

File metadata

File hashes

Hashes for catqualia_ledger_mcp-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 c554e75c56ca9d76c68b1213babb2f379a78782fe60ff60661825e9d0e6f35e5
MD5 5b68f1b7e20fb740ef6498d1b0b0c478
BLAKE2b-256 5f872c4555451606169dcdb047448b7121251c96e4ca300c83af387d1cdadd19

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

1.0.0 This release

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page