Claimcheck
FreeNot checkedAn MCP server that settles a claim about code instead of asserting it — runs a test with and without the fix it guards
About
An MCP server that settles a claim about code instead of asserting it — runs a test with and without the fix it guards
README
MIT licensed · An MCP server that settles a claim about code instead of asserting it.
Built for the Alexa+ track of the Amazon Build, Ship, Shape hackathon as a self-hosted MCP server over Streamable HTTP.
The problem it addresses
An assistant answering questions about code can say "this is fixed" or "these tests cover it" without either being true. The failure is not a crash — it is a confident sentence nobody checked.
The specific trap: a test that passes proves nothing unless it can also fail. A test that passes both with and without the change it supposedly guards is decoration, and it is the most common way a "verified" claim turns out to be empty.
claimcheck gives a model a way to run that second experiment.
Tools
verify_guard(fixed_code, broken_code, test_code)
Runs the test twice — against the code with the fix and against the same code without it — and reports which of five things is true:
| verdict | meaning |
|---|---|
KILLED |
passes with the fix, fails without it → a real guard |
DECORATIVE |
passes both ways → cannot detect the bug it claims to cover |
BROKEN_TEST |
fails even with the fix → the claim or the test is wrong |
NO_ASSERTIONS |
the test has no assert, so passing is meaningless |
REJECTED |
input refused (see reason) |
check_claim_shape(claim)
Turns a vague claim into something measurable, or reports that this server cannot settle it. It
deliberately recognises a closed set of shapes — a tool that claims to check anything checks
nothing. "3x faster" returns checkable_here: false with the reason: a timed comparison needs a
baseline and run-to-run variance measured before any difference is believed, and this server does
not measure time.
evidence_digest(label, measurement)
Hashes a measurement so a later answer can be checked against it, because a summary of a result drifts from the result.
Verified end to end
Every number below was produced by running it, over real HTTP, not by local function calls.
protocol negotiated : 2025-11-25 # the spec version the track requires
server_info.name : claimcheck
list_tools : verify_guard, check_claim_shape, evidence_digest
verify_guard(assert clamp(7) == 7) -> DECORATIVE with_fix=True without_fix=True
verify_guard(assert clamp(-5) == 0) -> KILLED with_fix=True without_fix=False
The SDK's LATEST_PROTOCOL_VERSION is 2026-07-28; the negotiated version on the wire is
2025-11-25, which is what the track specifies.
All five verdict branches were exercised: KILLED, DECORATIVE, BROKEN_TEST, NO_ASSERTIONS,
REJECTED.
Run it
Install it:
pip install . # or: pip install dist/claimcheck-0.1.0-py3-none-any.whl
claimcheck streamable-http # serves on http://127.0.0.1:8000/mcp
claimcheck stdio # for a local MCP client
Or run it straight from the checkout, which takes the identical code path:
pip install mcp
python server.py streamable-http
Connect with any MCP client:
import asyncio, json
from mcp.client.streamable_http import streamable_http_client
from mcp.client.session import ClientSession
async def main():
async with streamable_http_client("http://127.0.0.1:8000/mcp") as (r, w):
async with ClientSession(r, w) as s:
await s.initialize()
res = await s.call_tool("verify_guard", {
"fixed_code": "def clamp(n):\n if n < 0:\n return 0\n return n\n",
"broken_code": "def clamp(n):\n return n\n",
"test_code": "assert clamp(-5) == 0",
})
print(json.loads(res.content[0].text)["verdict"]) # KILLED
asyncio.run(main())
Safety boundary
This is not a sandbox and does not pretend to be one. It runs snippets you hand it, so it refuses the constructs that would let a "test" reach outside the snippet — at which point the pass/fail signal would no longer be about the code under test:
- static AST rejection of
os,sys,subprocess,socket,shutil,pathlib,requests,httpimports; - rejection of
eval,exec,compile,__import__,opencalls; - 20,000-character source limit, 4,000-character output cap;
- no shell execution, no network access.
Run it against code you are willing to execute.
Architecture
MCP client (Alexa+ / any MCP host)
│ Streamable HTTP, protocol 2025-11-25
▼
┌─────────────────────────────────────────┐
│ MCPServer("claimcheck") │
│ │
│ verify_guard ──┐ │
│ check_claim_shape ─┼─→ _reject_unsafe │ static AST gate
│ evidence_digest ───┘ │ │
│ ▼ │
│ _run(source) │ fresh namespace,
│ │ │ stdout/stderr captured
│ ▼ │
│ RunResult{ok, error, │
│ assertions_run} │
└─────────────────────────────────────────┘
│
▼
two runs compared → verdict
The two-run comparison is the whole design. One run tells you a test passed; only the second tells you whether that meant anything.
Licence
MIT — see LICENSE.
Installing Claimcheck
This server has no published package — it is built from source. Open the repository and follow its README.
▸ github.com/tzh476/claimcheckFAQ
Is Claimcheck MCP free?
Yes, Claimcheck MCP is free — one-click install via Unyly at no cost.
Does Claimcheck need an API key?
No, Claimcheck runs without API keys or environment variables.
Is Claimcheck hosted or self-hosted?
Self-hosted: the server runs locally on your machine via the install command above.
How do I install Claimcheck in Claude Desktop, Claude Code or Cursor?
Open Claimcheck on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.
Related MCPs
GitHub
PRs, issues, code search, CI status
by GitHubFilesystem
Secure file operations with configurable access controls.
Memory
Knowledge graph-based persistent memory system.
Template MCP Server
A CLI tool to create a new Model Context Protocol server project with TypeScript support, dual transport options, and an extensible structure
by mcpdotdirectAmap Maps Mcp Server
MCP server for using the AMap Maps API
by duxiaohuiSupabase
Database, auth and storage
by SupabaseEverything
Reference / test server with prompts, resources, and tools.
Git
Tools to read, search, and manipulate Git repositories.
Sequential Thinking
Dynamic and reflective problem-solving through thought sequences.
Time
Time and timezone conversion capabilities.
Compare Claimcheck with
Not sure what to pick?
Find your stack in 60 seconds
Author?
Embed badge for your README
Browse similar
All development MCPs
