About ProvenPin
ProvenPin is a hosted recipe service for coding agents, with tested, version-pinned examples for multiple libraries. Each recipe includes its latest test receipt, and only recipes currently passing are served.
Key features
- 01Search tested code recipes
- 02Pin exact library versions
- 03Run recipe tests in isolation
- 04Track last-passed receipts
- 05Retest after library releases
Use cases
- 01Find a tested Next.js Stripe webhook recipe
- 02Give coding agents version-pinned examples
- 03Check whether a recipe still passes
- 04Browse recipes by stack or language
MCP support
The hosted MCP server provides `search_recipes`, `get_recipe` and `list_stacks`. It serves recipes that are currently passing and requires no API key or signup.
Configuration
Remote servers need no local install. Pick your client, then copy the config or install in one click.
https://mcp.provenpin.com/mcpclaude mcp add --transport http provenpin-provenpin https://mcp.provenpin.com/mcp{"mcpServers":{"provenpin-provenpin":{"type":"http","url":"https://mcp.provenpin.com/mcp"}}}Open in Cursor{"servers":{"provenpin-provenpin":{"type":"http","url":"https://mcp.provenpin.com/mcp"}}}Open in VS Code{"mcpServers":{"provenpin-provenpin":{"type":"http","url":"https://mcp.provenpin.com/mcp"}}}{"mcpServers":{"provenpin-provenpin":{"serverUrl":"https://mcp.provenpin.com/mcp"}}}Run commands in a terminal; paste JSON into the client’s MCP config and restart. Servers that need sign-in will prompt on first connect.
Tools
3| Parameter | Type | Required | Description |
|---|---|---|---|
| limit | integer | No | |
| query | string | Yes | What you are wiring together, in plain words or library names, e.g. 'django rest api' or 'rq redis jobs'. |
| stack | array | No | Only recipes that use all of these libraries. |
| language | enum | No | typescript | python |
| versions | object|string | No | Optional but recommended: the versions in the user's project, so results are checked against them. Either a map like {"next": "15.2.0", "zod": "3.23.8"} or the raw text of package.json, package-lock.json, pnpm-lock.yaml, yarn.lock, requirements.txt, poetry.lock or uv.lock (max 200KB). Used only for this call, never stored. |
Details
From the project README
Website · Free models · Outside test · Install · Receipts feed
ProvenPin
Tested, version-pinned, multi-library code recipes built to help free and cheap AI models write working code, served over MCP.
Every recipe pins exact versions, runs its own tests in a clean environment, and carries a receipt with the time it last passed. Recipes are re-tested automatically when any of their libraries ships a new release. The MCP server only serves recipes that are currently passing.
Install
ProvenPin is a hosted MCP server. No API key, no signup.
Endpoint: https://mcp.provenpin.com/mcp
Claude Code
claude mcp add --transport http provenpin https://mcp.provenpin.com/mcp
Add --scope user to load it in every project, not just the current one.
Cursor (~/.cursor/mcp.json)
{ "mcpServers": { "provenpin": { "url": "https://mcp.provenpin.com/mcp" } } }
Cursor one-click install link (open it on a machine with Cursor installed):
cursor://anysphere.cursor-deeplink/mcp/install?name=provenpin&config=eyJ1cmwiOiJodHRwczovL21jcC5wcm92ZW5waW4uY29tL21jcCJ9
OpenCode (opencode.json in the project root)
{ "$schema": "https://opencode.ai/config.json", "mcp": { "provenpin": { "type": "remote", "url": "https://mcp.provenpin.com/mcp", "enabled": true } } }
VS Code (.vscode/mcp.json)
{ "servers": { "provenpin": { "type": "http", "url": "https://mcp.provenpin.com/mcp" } } }
Windsurf (~/.codeium/windsurf/mcp_config.json)
{ "mcpServers": { "provenpin": { "serverUrl": "https://mcp.provenpin.com/mcp" } } }
Cline (MCP settings)
{ "mcpServers": { "provenpin": { "type": "streamableHttp", "url": "https://mcp.provenpin.com/mcp" } } }
Then ask your agent something like "find a tested recipe for a Next.js Stripe webhook".
MCP tools
| tool | what it does |
|---|---|
search_recipes | find passing recipes by plain words, stack filter or language |
get_recipe | full files, pinned versions, setup and test commands, and the receipt |
list_stacks | libraries that have tested recipes, with counts |
recipes/ one folder per recipe (see SPEC.md)
runner/ validate, run tests in isolation, write receipts, release check, build index
receipts/ real test receipts (JSON)
index/ built index.json served by the MCP server
server/ MCP server (TypeScript, Cloudflare Workers, local dev mode)
.github/ CI: matrix per recipe, scheduled + on demand, release-triggered re-tests
Run locally (Node 22+, Python 3.13 and uv for Python recipes)
npm install
npm run validate # check manifests and pins
npm run test:recipes # run every recipe, write receipts
node runner/run.mjs hono-zod-validator # run one
node runner/typecheck.mjs hono-zod-validator # tsc --noEmit on a TypeScript recipe (CI runs it on touched recipes)
npm run affected # recipes with newer upstream releases
npm run build:index # build index/index.json
npm test # runner unit tests
cd server && npm install
npm test # MCP server unit tests
npm run dev # http://localhost:8787/mcp
Connect a client to the local server, for example in Claude Code:
claude mcp add --transport http provenpin http://localhost:8787/mcp
Pro API keys (groundwork, off by default): the free tier needs no key. When PROVENPIN_PRO_ENABLED is "true", a valid Authorization: Bearer <key> header marks the caller as Pro. Keys come from the PROVENPIN_API_KEYS secret or the PRO_KEYS KV namespace (entries key:<sha256 of key>). Usage events record only the tier (free or pro), never the key.
Receipts feed
https://mcp.provenpin.com/receipts.json (also index/receipts.json, rebuilt with the index) lists every recipe:
| Field | Meaning |
|---|---|
id, language | Recipe id and language |
pinned | Exact versions the recipe was tested with |
runtime | Runtime of the last test run, for example node v22.23.3 |
status | passed, failed, setup_failed, invalid, stale (code changed since the last run) or untested |
last_passed_at | When the tests last passed on the pinned versions (UTC) |
run_url | GitHub Actions run that produced the current receipt |
staleness | Weekly re-test with stack libraries bumped to latest: status (current, passes_on_latest, breaks_on_latest, deprecated_upstream (every stable release of a stack library is deprecated on npm), error or unchecked), checked_at, latest versions tried, run_url |
The staleness check (.github/workflows/staleness.yml) runs weekly in a temp copy. It never edits a recipe or its receipt, and it lists recipes that break on latest in one GitHub issue.
Deploy your own
- Push this repo to a GitHub account for the brand.
- In Cloudflare: create an API token with "Edit Cloudflare Workers", add
CLOUDFLARE_API_TOKENandCLOUDFLARE_ACCOUNT_IDas repo secrets, set repo variableDEPLOY_ENABLED=true. cd server && npx wrangler deploy(or let CI do it), then routemcp.<domain>to the worker.
License
MIT. See 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.