ShipReceipt MCP Server
Provides tools to create, run, and verify deterministic delivery receipts for completion claims, enabling reviewers to check freshness and correctness of evidence.
README
ShipReceipt
A receipt for every “done.” ShipReceipt turns a delivery claim into fresh, machine-checkable local evidence: the claim, safe deterministic probes, captured output, exit codes, relevant file hashes, and a portable report.
Tests tell you what ran. ShipReceipt tells a reviewer which exact completion claim those tests support—and when later changes mean that proof is no longer fresh.
Why it exists
Coding agents are good at confident summaries. Reviewers need a tighter contract:
“The release marker is valid.”
↓
claim + files + executable argv + captured evidence + file hashes
↓
verified / contradicted / unverified / stale
If a relevant file changes after a probe runs, ShipReceipt marks the claim stale. It does not leave yesterday’s green check pretending to prove today’s tree.
Quickstart
Requires Node 20+ and npm.
npm install
npm run build
# Create a receipt in the current repository
node packages/cli/dist/index.js init
# Record a narrow claim. Everything after -- is executable plus argv, never a shell string.
node packages/cli/dist/index.js claim "The unit suite passes." \
--file packages/core/src/core.ts -- node --test
# Direct CLI execution needs an explicit approval flag; previously allowlisted contracts can re-run without it.
node packages/cli/dist/index.js run clm_yourclaim --approve
node packages/cli/dist/index.js status
node packages/cli/dist/index.js export --format html --out shipreceipt-report.html
See the full state machine in 10 seconds
npm run smoke
The smoke fixture creates a passing claim, a failing claim, then modifies the passing claim’s tracked file. Its final status contains stale and contradicted; it also exports a static HTML report.
For the browser demo:
npm run build --workspace=@shipreceipt/web
npx serve packages/web/dist -l 4173
The dashboard’s buttons run an in-browser fixture only. To use the same UI against a real local receipt, start its local-only reader after building:
npm run live --workspace=@shipreceipt/web -- --root /path/to/repository
It serves packages/web/dist and a local /receipt.json status endpoint; it never executes probes. The hosted static demo never executes commands or reads a visitor’s filesystem.
CLI
| Command | Purpose |
|---|---|
init [--root path] |
Create .shipreceipt/receipt.json. |
claim "text" --file path -- executable argv |
Add a claim and a deterministic probe. |
allow <id> |
Allowlist a claim’s full probe contract for later local re-runs. |
run <id> --approve |
Execute its probes with limits and capture evidence. |
status |
Print the current state for every claim. |
| `export --format json | html --out file` |
demo [--root path] |
Build the bundled contradiction/staleness scenario. |
--root is supported on every command. A probe’s command is stored as an executable and argv array. There is no shell interpolation or shell: true path. run needs an explicit --approve, unless the full probe contract (argv, cwd, timeout, expected exit, files, and allowed environment names) was previously recorded with allow.
Receipt states
| State | Meaning |
|---|---|
unverified |
No complete probe evidence exists. |
verified |
Every probe exited with its expected code and current file hashes match evidence. |
contradicted |
A probe failed, timed out, or exited unexpectedly. |
stale |
Relevant file hashes no longer match those recorded at probe time. |
Codex plugin and MCP
The repository includes a repo-local marketplace at .agents/plugins/marketplace.json and an installable plugin in plugins/shipreceipt.
Build first, then add the repository marketplace and install the plugin:
codex plugin marketplace add /path/to/shipreceipt
codex plugin add shipreceipt@shipreceipt-marketplace
The plugin carries a self-contained bundled stdio MCP server and exposes five deterministic tools:
shipreceipt_initshipreceipt_claimshipreceipt_run(runs only contracts already allowlisted through the local CLI)shipreceipt_statusshipreceipt_report
The skill at plugins/shipreceipt/skills/shipreceipt/SKILL.md instructs Codex to use narrow claims, explain intended execution, and cite a receipt ID/status rather than claim success from prose. MCP callers cannot self-approve execution: after a claim is recorded, the user must inspect and allowlist its full probe contract through the local shipreceipt allow <id> CLI command before shipreceipt_run can execute it. npm run build refreshes the plugin-local MCP bundle before installation.

You can smoke the server directly using newline-delimited JSON-RPC:
printf '%s\n' '{"jsonrpc":"2.0","id":1,"method":"initialize"}' | node packages/mcp/dist/index.js
Architecture
Codex skill / CLI / MCP
│
▼
@shipreceipt/core
schemas · safe runner · hash snapshots · receipt store
│
▼
.shipreceipt/receipt.json ──► status / HTML report / local dashboard
The core library owns schemas, hashing, persistence, status calculation, redaction, and command execution. The CLI and MCP server are thin adapters. The web dashboard is static and uses a bundled demo state; it can be hosted without credentials. See architecture notes and decisions.
Safety and threat model
ShipReceipt is local-first, but running a probe is still code execution. The runner:
- requires explicit approval in the CLI and MCP interface;
- stores commands as executable plus argv and sets
shell: false; - restricts probe working directories to the receipt root;
- uses a default 30-second timeout capped at two minutes;
- caps each stdout/stderr stream at 64 KiB;
- forwards no environment variables unless named in the probe allowlist, except the minimal inherited
PATHneeded to locate an executable; - applies best-effort redaction to common token/key, authorization, cookie, URL-credential, cloud-key, and private-key forms before storing output.
The receipt’s hashes and chain are tamper-evident only within a documented threat model. Before status, export, or execution, ShipReceipt verifies event linkage, every current claim/evidence binding, evidence hashes, and probe contracts; an integrity failure fails closed rather than reporting a green claim. Someone who can rewrite the receipt and all local files can still rewrite its history. Hashes prove consistency of what ShipReceipt recorded; they do not establish identity, remote provenance, or a secure audit trail. Do not put secrets in commands, claims, or files. See security notes.
Deployment
vercel.json builds and serves packages/web/dist as a static site. It has no server code and no command-execution endpoint. For another static host, run npm run build --workspace=@shipreceipt/web and publish that same directory.
Development and verification
npm install
npm run lint
npm run typecheck
npm test
npm run build
npm run smoke
npm run plugin:check
Build Week / Codex disclosure
This is an OpenAI Build Week 2026 submission. GPT-5.6 in a persistent Codex session accelerated implementation: workspace setup, TypeScript core/CLI/MCP/dashboard code, tests, fixture, documentation drafts, and verification iteration. Human product decisions defined the problem, local-first evidence model, safety boundaries, visual direction, project scope, and final review criteria. No OpenAI API key is required: GPT-5.6 runs in the authenticated Codex host, while ShipReceipt itself is deterministic local tooling. See the public Codex build trace.
License
MIT. See LICENSE.
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。
