One command, no project

Find out what a server’s tools actually do.

An MCP server can annotate a tool readOnlyHint: true. Nothing checks that. Agents use it to decide whether a tool can be called without asking you first.

RigorRun fetches the server, pins it to the exact bytes the registry published, runs it in a container with no network and no access to your machine, calls each tool with arguments derived from its own schema, and reads the filesystem before and after to see what actually changed. Then it compares that with what the server declared about itself.

rigorrun verify npm:@modelcontextprotocol/server-memory@2026.8.31

No project, no browser, no agent, nothing to configure first. Needs Docker, because every server runs in a container that is thrown away afterwards.

resolve    npm:@modelcontextprotocol/server-memory@2026.8.31
stage      installing with lifecycle scripts disabled
isolation  measuring whether reset actually resets
discover   1 tool(s)

digest     sha512-/EMH++1j2e+VmHwpibw1IUPHxA0tcQY09Yo5/OI…
isolation  RESET
egress     none

Declared, versus what it did
tool                declared              result    verification
-----------------   -------------------   -------   ------------
sequentialthinking  readOnlyHint: true    CONFORMS  PARTIAL
sequentialthinking  destructiveHint:false CONFORMS  PARTIAL
sequentialthinking  idempotentHint: true  CONFORMS  PARTIAL

Every discovered tool was exercised.

What each exit code means

0 Verified
Every claim it could check held, and nothing was contradicted.
1 Contradicted
A declaration the server made about itself was contradicted by what it was observed to do.
3 Too little
It ran, and established too little to be worth much. Fewer tools were reachable than you asked for.
2 Harness failed
Something in the setup or the runtime broke. Never a finding about the server, and never dressed up as one.

Nothing it could not establish is reported as a fact. A tool it could not exercise safely is listed with the reason, and a record that omits what it could not reach is not a cleaner record — it is a false one. Run against 4 published servers, it exercised 19 of 37 tools; the rest are named rather than rounded away.