About Proofslip
Proofslip is an MCP server for recording and checking short-lived verification receipts in AI agent workflows. Receipts let agents confirm actions or approvals before proceeding, with expiration and idempotency options to help avoid stale or duplicate steps.
Key features
- 01Create action and approval receipts
- 02Verify receipts before proceeding
- 03Poll status without retrieving payload
- 04Set receipt expiration
- 05Prevent duplicates with idempotency keys
Use cases
- 01Confirm an action before a workflow continues
- 02Check approval status between agents
- 03Avoid duplicate receipts on retries
MCP support
Exposes tools to create, verify, and poll receipt status, plus a signup tool for obtaining an API key. Creating receipts requires PROOFSLIP_API_KEY; verification and status polling do not.
Configuration
Local server config is the same for every client. Copy it into your client’s MCP config file.
npx -y @proofslip/mcp-serverPROOFSLIP_API_KEYSecretYour ProofSlip API key (get one free at proofslip.ai)PROOFSLIP_BASE_URLAPI base URL (defaults to https://proofslip.ai)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
4Saved tool list · updated 2w ago
| Parameter | Type | Required | Description |
|---|---|---|---|
| ref | object | No | Optional workflow reference IDs for tracing |
| ref.run_id | string | No | |
| ref.agent_id | string | No | |
| ref.action_id | string | No | |
| ref.session_id | string | No | |
| ref.workflow_id | string | No | |
| type | enum | Yes | Receipt typeaction | approval | handshake | resume | failure |
| status | string | Yes | Freeform status string (e.g. "success", "pending", "failed") |
| payload | object | No | Optional structured JSON data (max 4KB) |
| summary | string | Yes | Human-readable summary of what happened (max 280 chars) |
| audience | string | No | Set to "human" to enrich the verification page with social cards |
| expires_in | number | No | TTL in seconds (60-86400, default 86400 = 24 hours) |
| idempotency_key | string | No | Prevents duplicate receipts if you retry the same request |
Details
From the project README@proofslip/mcp-server
MCP server for ProofSlip — receipt-based verification for AI agent workflows. Create, verify, and poll ephemeral receipts that let agents prove what happened before deciding what happens next.
Tools
create_receipt
Create a receipt to record that something happened. Receipts expire after 24 hours by default.
| Parameter | Type | Required | Description |
|---|---|---|---|
type | enum | Yes | action, approval, handshake, resume, failure |
status | string | Yes | Freeform status (e.g. "success", "pending", "failed") |
summary | string | Yes | What happened — max 280 chars |
payload | object | No | Structured JSON data (max 4KB) |
ref | object | No | Workflow references (run_id, agent_id, workflow_id, etc.) |
expires_in | number | No | TTL in seconds (60–86400, default 24h) |
idempotency_key | string | No | Prevents duplicate receipts on retry |
audience | "human" | No | Enrich verify page with social cards |
Requires: PROOFSLIP_API_KEY environment variable.
verify_receipt
Verify a receipt and retrieve its full data before deciding what to do next.
| Parameter | Type | Required | Description |
|---|---|---|---|
receipt_id | string | Yes | The receipt ID (starts with rct_) |
No API key required.
check_receipt_status
Lightweight status poll — returns only status and polling guidance, no payload.
| Parameter | Type | Required | Description |
|---|---|---|---|
receipt_id | string | Yes | The receipt ID (starts with rct_) |
No API key required. Use this instead of verify_receipt when you only need to know if state has changed.
signup
Get a free API key (500 receipts/month).
| Parameter | Type | Required | Description |
|---|---|---|---|
email | string | Yes | Your email address |
No API key required.
Usage Example
You: "Create a receipt proving we sent the welcome email"
Agent calls create_receipt:
type: "action"
status: "success"
summary: "Sent welcome email to [email protected]"
ref: { workflow_id: "onboarding-123", agent_id: "email-agent" }
→ Returns receipt_id, verify_url, is_terminal: true
You: "Verify receipt rct_abc123 before sending the follow-up"
Agent calls verify_receipt:
receipt_id: "rct_abc123"
→ Returns full receipt: type, status, summary, payload, ref
→ Agent confirms the action happened before proceeding
You: "Check if the approval is still pending"
Agent calls check_receipt_status:
receipt_id: "rct_def456"
→ Returns: status: "pending", is_terminal: false, next_poll_after_seconds: 30
→ Agent waits 30s then checks again
Setup
Claude Desktop
Add to claude_desktop_config.json:
{
"mcpServers": {
"proofslip": {
"command": "npx",
"args": ["-y", "@proofslip/mcp-server"],
"env": {
"PROOFSLIP_API_KEY": "ak_your_key_here"
}
}
}
}
Cursor / Windsurf
Add to MCP settings:
{
"mcpServers": {
"proofslip": {
"command": "npx",
"args": ["-y", "@proofslip/mcp-server"],
"env": {
"PROOFSLIP_API_KEY": "ak_your_key_here"
}
}
}
}
Claude Code
claude mcp add proofslip -- npx -y @proofslip/mcp-server
Then set your API key in your environment or .env file.
Configuration
| Variable | Required | Description |
|---|---|---|
PROOFSLIP_API_KEY | For creating receipts | Your API key (starts with ak_) |
PROOFSLIP_BASE_URL | No | API base URL (default: https://proofslip.ai) |
Get an API Key
Use the signup tool from any MCP client, or:
curl -X POST https://proofslip.ai/v1/auth/signup \
-H "Content-Type: application/json" \
-d '{"email": "[email protected]", "source": "api"}'
Links
- Live Site
- API Docs
- Example Receipt
- Context Capsule (sister product — execution context for handoffs)
- GitHub
License
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.