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.
UNVERIFIEDis returned asUNVERIFIED. 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.
Related records
- Thesis — https://catqualia.com/thesis · DOI 10.5281/zenodo.22752082
- Definitions of the terminology — https://catqualia.com/definitions
- Full ledger — https://catqualia.com/ledger
- 135 dated defensive publications — DOI 10.5281/zenodo.22751107
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3d9e41a963ce82c45addba017cb9b8b5b3865774154cebfce5cc621dad8e5fea
|
|
| MD5 |
b5f4c20a4c8f01a61833e15b235a26a7
|
|
| BLAKE2b-256 |
869e98f5d776cf795fc668da89ea40c4263229cc6f1e6f7e3f615516cb850e06
|
File details
Details for the file catqualia_ledger_mcp-1.0.0-py3-none-any.whl.
File metadata
- Download URL: catqualia_ledger_mcp-1.0.0-py3-none-any.whl
- Upload date:
- Size: 1.9 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
Python-urllib/3.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c554e75c56ca9d76c68b1213babb2f379a78782fe60ff60661825e9d0e6f35e5
|
|
| MD5 |
5b68f1b7e20fb740ef6498d1b0b0c478
|
|
| BLAKE2b-256 |
5f872c4555451606169dcdb047448b7121251c96e4ca300c83af387d1cdadd19
|