About proof-layer
proof-layer provides pre-action governance receipts for AI agent actions. Its local MCP server evaluates proposed actions, while signed, hash-chained receipts can be verified offline with a separate verifier.
Key features
- 01Pre-execution action evaluation
- 02Signed execution verdicts
- 03Hash-chained audit receipts
- 04Offline receipt verification
- 05MCP tools for agent hosts
Use cases
- 01Checking an agent action before it runs
- 02Recording decisions for an audit trail
- 03Verifying receipt bundles without an API call
MCP support
The `@proof-layer/mcp` package is an MCP server for Claude Desktop, Cursor, Cline, and other MCP-aware hosts. It provides eight tools for governance workflows.
Configuration
Local server config is the same for every client. Copy it into your client’s MCP config file.
npx -y @proof-layer/mcpPROOF_LAYER_API_KEYSecretYour Proof Layer API key from https://prooflayer.world999labs.com/dashboard/keysPROOF_LAYER_API_URLOverride the default API endpoint (default: https://prooflayer.world999labs.com)PROOF_LAYER_TELEMETRYSet to 'off' to disable anonymous usage telemetry (default: on)Local servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.
Tools
8Saved tool list · updated 2w ago
| Parameter | Type | Required | Description |
|---|---|---|---|
| agent_id | string | Yes | Identifier for the AI agent making the proposal |
| parameters | object | No | Action-specific parameters as a JSON object |
| action_type | string | Yes | Semantic name for the action (e.g. 'send_email', 'delete_record', 'make_payment') |
| idempotency_key | string | No | Optional unique key — same key returns the cached receipt |
| guardian_timeout_policy | enum | No | What to do if the Guardian times out. Default: fail_closed (block the action)fail_closed | fail_open |
Details
From the project READMEProof Layer
Cryptographic governance receipts for AI agents. Issued before the agent acts. Ed25519-signed. Hash-chained. Verifiable offline.
Built by WORLD999_LABS. Published on npm under
@proof-layer/*. The legacy@veridocs/*package names continue to resolve and forward to the new ones.
What this repo contains
This is the public half of Proof Layer — the parts you install and run on your own machine:
| Package | What it does | npm |
|---|---|---|
@proof-layer/mcp | MCP server for Claude Desktop, Cursor, Cline, and any MCP-aware host | |
@proof-layer/verify | Standalone offline verifier — zero dependencies, audits any receipt bundle with just our public key |
The kernel (governance engine, Gauntlet adversary/judge pipeline, billing, dashboard) is closed-source and runs at prooflayer.world999labs.com. Open-source clients + closed-source server is the same pattern Stripe, Resend, and Vercel use — you get full transparency on what runs locally and what data leaves your machine, while the proprietary server logic stays protected.
Quick start
npx -y @proof-layer/mcp@latest
Drop into Claude Desktop's claude_desktop_config.json:
{
"mcpServers": {
"proof-layer": {
"command": "npx",
"args": ["-y", "@proof-layer/mcp@latest"],
"env": {
"PROOF_LAYER_API_KEY": "pl_live_...",
"PROOF_LAYER_API_URL": "https://prooflayer.world999labs.com"
}
}
}
}
Restart Claude. Eight pl_* tools appear in the picker. Get an API key at prooflayer.world999labs.com.
Migrating from
@veridocs/mcp? No code changes required. The legacy package name continues to resolve, the legacyvd_*tool names continue to work alongsidepl_*, and existingVERIDOCS_API_KEY/VERIDOCS_API_URLenvironment variables are still accepted. You can switch the package name and env-var names on your own schedule.
Why pre-execution governance?
Most "AI safety" tools run after the model has acted — toxicity filters, output classifiers, post-hoc audit logs. By the time the alarm fires, the agent has already sent the email, merged the PR, or executed the trade.
Proof Layer flips this:
- Agent proposes an action (e.g. "send wire transfer for $50,000")
- Proof Layer evaluates → returns signed verdict:
EXECUTE/BLOCK/REVIEW/SHADOW - Receipt is written to a hash-chained, Ed25519-signed audit trail
- Anyone with our public key can verify the entire chain offline — no trust in our infra required
A broken hash chain = tampering, immediately visible. A missing receipt = the agent acted without permission.
Verifying receipts offline
Receipts are designed to outlive us. Here's how to verify a bundle without ever calling our API:
import { verifyBundle } from "@proof-layer/verify";
import fs from "fs";
const bundle = fs.readFileSync("./receipts.ndjson", "utf8");
const publicKey = fs.readFileSync("./prooflayer-public-key.pem", "utf8");
const result = verifyBundle(bundle, publicKey);
console.log(result);
// { pass: 147, fail: 0, total: 147, chainBroken: false }
Public key is published at prooflayer.world999labs.com/v1/public-key and rotates on a published schedule.
Resources
- 🌐 Homepage: https://prooflayer.world999labs.com
- 🎬 Live demo (no signup): https://prooflayer.world999labs.com/demo
- 📖 MCP docs: packages/mcp/README.md
- 🔒 Privacy policy: PRIVACY.md
- 🐛 Report issues: GitHub Issues
- 💬 Support: [email protected]
License
MIT — see LICENSE.
The kernel and dashboard are proprietary and not included in this repo. The MCP server, verifier, and all client SDKs published under @proof-layer/* (and the legacy @veridocs/* names) are MIT-licensed.
Contributing
Pull requests, issues, and feedback welcome. See CONTRIBUTING.md.
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.