State the outcome
Define a concrete result before or after an action, with an explicit subject and deadline if needed.
Outcome verification for AI agents
Postcondition declares the intended result, observes the outside world through constrained read-only verifiers, and returns an honest verdict: satisfied, violated, or unknown.
npx -y postcondition-mcp serve
“Version 0.1.0 is visible in the public npm registry.”
receipt e72168e33d153f69…
The missing step
A successful tool response proves that a call returned. Postcondition asks for a separate, observable statement about the world after the action.
Define a concrete result before or after an action, with an explicit subject and deadline if needed.
Postcondition does not become another orchestrator. Your existing MCP tool, CI job, human, or script performs the work.
A narrow verifier reads file, HTTP, Git, or npm state without executing arbitrary shell commands.
Satisfied, violated, or unknown — with evidence class, digest, timestamp, and a link to the previous receipt.
Live public observation
This browser demo reads npm's public registry directly and compares the observed version with the expected one. The installable product adds durable contracts, evidence classes, SQLite persistence, and a receipt chain.
Constrained verification surface
The built-in verifier set is intentionally small. Every unsupported or unreachable condition resolves to unknown instead of manufactured success.
Existence, absence, size, SHA-256, contained text, and JSON pointer equality.
Status, text, and JSON values with redirect, timeout, response-size, and private-network guards.
Branch, clean tree, HEAD, tag, and local remote-tracking containment through fixed argument sets.
Published versions and dist-tags observed through the registry's public API.
Human or agent statements stay labelled and are never upgraded to external proof.
Evidence honesty
| Evidence class | Meaning |
|---|---|
| externally_observed | A remote HTTP or npm endpoint was read independently. |
| configured_verifier | A constrained local file or Git check ran. |
| manual_attestation | A human supplied the result. |
| self_attestation | An agent supplied its own result. |
One coherent trust stack
Postcondition grew from a repeated design principle across Christian Bucher's Soul and Miguel systems: autonomy should carry evidence, permission boundaries, corrections, and observable outcomes. The public repository is a clean implementation — not an export of personal memory or private session logs.