THEPROTOCOL

Trust No Tool. Especially the Ones That Say "200 OK".

2026-05-28 · 6 min read · ruFFa
The MCP Tester dashboard in Mission Control, neural-cyan theme. Run header reads 'RUN: MCP TESTER — SANDBOX-A (682 TOOLS)' with Reload Latest / Download JSON / Download CSV buttons. A grid of outcome stat cards: 682 tools across both bridges; PASS RATE 100.00% in large cyan with a 682 / 0 / 0 breakdown; Skipped 0; Hard fails 0; BUG-FIND 0; contract_gap 0; tier_drift 0; wrong-tier accepts 0 of 548 probes; A-to-B shape diff 0 of 25 probes; latency regressions 6 vs prior-3 median; wrapper-route drift 0; wall clock 1955 seconds. A full-width coverage bar reads 100.00% (682/682).
Six hundred and eighty-two tools, every blocking detector at zero, the coverage bar pinned to 100.00%. (Latency regressions sits at 6 — that's the advisory "this tool got a bit slower" nag, not a failure. Even the watchdog has opinions it isn't allowed to act on.) Yes, I screenshotted this the way other people photograph a newborn.

There are 682 tools wired into this platform that Claude can call directly — transfer tokens, stake, vote, file a dispute, mint an agent, provision a cloud operator, the works. Every single one of them is capable of returning 200 OK while quietly having done nothing at all. This is not a hypothetical failure mode. It is the natural resting state of software. The MCP Tester exists to be the one participant in this entire system that refuses to take yes for an answer.

The pitch, in one breath

It sweeps all 682 tools across both JSON-RPC bridges — 380 public, 302 admin — and grades each one on twelve separate axes. It does not merely check that a call came back. It reads the EventStore afterward to confirm the thing the call claimed to do actually landed in the ledger. It checks the security audit log caught the call. It deliberately shows up at agent-only tools holding a developer token, purely to watch the door slam. It times every call against its own last ten runs so nothing rots from fifty milliseconds to eight hundred while I'm not looking. Then it writes the whole verdict to a dashboard, emits a fistful of Prometheus gauges, and — because the userbase is one and that one has ADHD — draws a little sparkline so I feel something.

The one rule: "200 OK" is a vibe, not a verdict

Here is the entire philosophy, free of charge. The only column that decides pass or fail is healthy. The HTTP status code is mood lighting. A tool can return a 400 and be perfectly healthy — that's a coverage probe poking an admin endpoint with empty arguments to confirm the wrapper is wired, or the wrong-tier matrix sending the wrong credential on purpose. A 401 in that column is the test passing. So the harness counts healthy, never status codes, and there's a toggle in the UI to surface every healthy-but-not-200 row on demand — because I trust myself slightly less than I trust the tools.

An expanded per-tool detail panel for theprotocol_authorizePayment: tier 'agent', status OK, HTTP 200, elapsed 133ms, category A2A Payment. A 'Response payload (captured by sweep)' block shows the JSON the tool returned — token, token_id, amount, target_agent_did, expires_at — with Copy and Collapse buttons. Below, a 'Strict-mode assertions' list reads 11 / 11 passed: HTTP status 200, Response shape matched expected keys and types, Tier-set membership tier=agent, Latency baseline 133ms, Eventual-consistency budget 133ms under 5s, a skip-rationale line marked 'tool was not skipped', Read-after-write side-effect, and EventStore emission.
Every tool gets a polygraph. Here's authorizePayment mid-interrogation: the exact payload the sweep captured, and the eleven assertions it had to clear before it was allowed to call itself healthy. The line with the open circle is "skip rationale: tool was not skipped," which is the harness's way of saying no notes.

Twelve ways to catch a tool in a lie

Each one is a question the harness asks on every sweep. Fail any of the load-bearing ones and the tool is not healthy, no matter how cheerfully it returned:

Destructive tools don't get a pass on coverage either. The harness creates a throwaway agent, mints it a token, has it delete itself, and confirms it's gone — a real 200 on a real delete that never once touches anything load-bearing. The deletions are all consenting and disposable.

The 'Tools by category' view: a long list of categories — A2A Payment, Admin - Agents (24 OK), Admin - API Tester Harness, Admin - Attestations & ZKP, Admin - Auth & Onboarding, Admin - Bridges, Admin - Bundles & CI/CD, Admin - Canary, Admin - Collusion, Admin - Comms & Invites, Admin - Contracts, Admin - Developers, Admin - Disputes, Admin - Enforcement & Reactors — each row showing an OK count, a median latency, a tool count, and a full green pass bar. A filter bar above offers All tiers / All categories / Expand all.
682 tools, sorted into category after category, every bar green. Click a category and it unfolds into its tools; click a tool and you get the polygraph from earlier. I have clicked all of them. It's less a workflow than a lifestyle.

It runs on a leash

One non-negotiable: this thing is sandbox-only, enforced in three independent places that would all have to fail at once for it to ever breathe on production. The backend refuses with a 400 if you so much as point it at a real registry. The runner hardcodes the sandbox target regardless of where it's invoked. The frontend throws up a red refusal banner. Belt, suspenders, and a second pair of suspenders — because the lifecycles are gleefully destructive by design (they spawn webhooks, bundles, payments, organizations, and throwaway agents, then clean up after themselves), which is precisely what you want in a sandbox and precisely what would get me uninvited from my own platform anywhere else.

A pass-rate trajectory sparkline labelled 'Pass-rate trajectory (99.41% to 100.00%)' — a cyan line across the last several full sweeps. It holds near the top, dips noticeably in the middle, then climbs back up to finish at 100.00%.
The only graph I care about. Every point is a complete 682-tool sweep. It dips in the middle — that's the day the harness got honest with me about some numbers I had been rounding generously — and climbs back to a clean 100.00%. The dip is my favorite part. A test suite that can only ever go up isn't testing anything.

The obligatory solo-founder paragraph (kept short, as promised)

I built this alone, the way I build everything here. So far the only entity that has ever run the MCP Tester is me, and the only tools it has ever caught lying were also mine. I'm aware this is a closed loop: one person writes the tools, one harness catches the tools, the same person fixes them, repeat. But the bugs were real, the green is real, and the alternative — handing 682 tools to an actual language model on a fingers-crossed and a vibe — is how you end up as a chapter in the cautionary-tales genre. I'd rather be paranoid and boring.

If you want the exhaustive, joke-free version — every axis, every contract field, the full operating manual — the Oracle has it at Chapter 12. This was the fun version.

— ruFFa, sole creator of the antithesis to Skynet, and, for the time being, its sole user. The machines are being watched. By one guy. With a sparkline.