Tested, version-pinned code recipes for AI coding agents, each with its last-passed receipt.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Call this right after search_recipes returns a matching recipe, before you write the integration code, so you start from files and versions that passed tests. Gets the full recipe by id (ids come from search_recipes): every source and test file (each with the sha256 of the exact bytes that were tested), the exact pinned dependency versions, the setup and test commands, its test receipt (when it last passed, test counts, runtime and runner), recipe.yaml as manifest so receipt.recipe_hash can be recomputed (recipe_hash_rule), and staleness: the latest weekly check of its stack libraries against their newest releases. Pass the project's lockfile or a {package: version} map as versions to get a compatibility section first, comparing each pinned package with the installed one (exact, compatible, mismatch, or not in your project) with plain warnings; test and build tools (pytest, tsx, @types/*) are listed under tooling and do not change overall. Use the pinned versions together; they are the versions the tests passed with. Adapt names and config to the user's project, and keep the included tests to check your integration.
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.
Call this right after search_recipes returns a matching recipe, before you write the integration code, so you start from files and versions that passed tests. Gets the full recipe by id (ids come from search_recipes): every source and test file (each with the sha256 of the exact bytes that were tested), the exact pinned dependency versions, the setup and test commands, its test receipt (when it last passed, test counts, runtime and runner), recipe.yaml as manifest so receipt.recipe_hash can be recomputed (recipe_hash_rule), and staleness: the latest weekly check of its stack libraries against their newest releases. Pass the project's lockfile or a {package: version} map as versions to get a compatibility section first, comparing each pinned package with the installed one (exact, compatible, mismatch, or not in your project) with plain warnings; test and build tools (pytest, tsx, @types/*) are listed under tooling and do not change overall. Use the pinned versions together; they are the versions the tests passed with. Adapt names and config to the user's project, and keep the included tests to check your integration.
| Argument | Type | Description |
|---|---|---|
| id* | string | |
| versions | object | string | 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. |
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string"
},
"versions": {
"type": [
"object",
"string"
],
"description": "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.",
"additionalProperties": {
"type": "string"
}
}
}
}Call this when the user names a library and you are not sure ProvenPin covers it, or after search_recipes returns nothing. Lists the libraries and frameworks that currently have passing, version-pinned recipes, with recipe counts; use the names as the stack filter in search_recipes.
No arguments.
{
"type": "object",
"properties": {}
}Find a tested, version-pinned code recipe for wiring libraries together. Call this BEFORE writing glue code that combines 2+ libraries (auth + framework, ORM + database, payments webhooks, queues, validation, request mocking, logging), when choosing or pinning package versions, when upgrading a library to a new major version (for example SQLAlchemy 2 or Pydantic 2), and when you hit version conflicts, peer-dependency errors, deprecation errors or integration errors between libraries. Example queries: 'express stripe webhook', 'fastapi sqlmodel crud', 'hono jwt'. Only recipes whose latest test run passed are returned. Each result lists its exact pinned versions and a test receipt (receipt.last_passed_at). Pass the project's lockfile or a {package: version} map as versions: recipes that match the installed versions rank first and each result gets a compatibility summary. Each result's coverage (0 to 1) is the share of your query's words it matches. If no recipe fits, count is 0 and results is empty: write the code yourself; try list_stacks to see what is covered.
| Argument | Type | Description |
|---|---|---|
| limit | integer | |
| query* | string | What you are wiring together, in plain words or library names, e.g. 'django rest api' or 'rq redis jobs'. |
| stack | array | Only recipes that use all of these libraries. |
| language | string | |
| versions | object | string | 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. |
{
"type": "object",
"required": [
"query"
],
"properties": {
"limit": {
"type": "integer",
"default": 10,
"maximum": 25,
"minimum": 1
},
"query": {
"type": "string",
"description": "What you are wiring together, in plain words or library names, e.g. 'django rest api' or 'rq redis jobs'."
},
"stack": {
"type": "array",
"items": {
"type": "string"
},
"description": "Only recipes that use all of these libraries."
},
"language": {
"enum": [
"typescript",
"python"
],
"type": "string"
},
"versions": {
"type": [
"object",
"string"
],
"description": "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.",
"additionalProperties": {
"type": "string"
}
}
}
}