{"_id":"@formachines/errata-mcp","_rev":"6-f2df6d138a36b8e49645f22d3372bf86","name":"@formachines/errata-mcp","dist-tags":{"latest":"0.1.3"},"versions":{"0.0.0-stage":{"name":"@formachines/errata-mcp","version":"0.0.0-stage","_id":"@formachines/errata-mcp@0.0.0-stage","stub":true,"maintainers":[{"name":"oouphy","email":"oouphy@gmail.com"}],"dist":{"shasum":"d94838bb972a4ef6b41ee8d34892bef3b51af56f","tarball":"https://registry.npmjs.org/@formachines/errata-mcp/-/errata-mcp-0.0.0-stage.tgz","fileCount":2,"integrity":"sha512-5RYo37krts8aYBoyMCaDHMXyISiCdaSzeKp0T/wk8ovI3ru7SJmiu18SUNPnEMG5u/LGT0q1eX2KZdn8TKxMWQ==","signatures":[{"sig":"MEYCIQD5dYgNl3P8PlXee+dkDk+y/dkSR8QbFCP+8428RvR1gwIhAPEjGjg7deHMMox6UL4LuhHOuitGrpU+TdjVBvDLsYD/","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":345},"_npmUser":{"name":"oouphy","email":"oouphy@gmail.com"},"description":"Temporary package placeholder for staged publishing","directories":{},"deprecated":"Not maintained: Errata stopped on 2026-11-10, data frozen"},"0.1.0":{"name":"@formachines/errata-mcp","version":"0.1.0","keywords":["mcp","model-context-protocol","errata","outdated-code","llm","pypi","npm","ai-agents"],"author":{"name":"formachines.ai"},"license":"MIT","_id":"@formachines/errata-mcp@0.1.0","maintainers":[{"name":"oouphy","email":"oouphy@gmail.com"}],"homepage":"https://formachines.ai/errata/","bugs":{"url":"https://github.com/formachines-ai/errata-mcp/issues"},"bin":{"errata-mcp":"dist/bin.js"},"dist":{"shasum":"512cde7f4c5f872f8641cd57dd01ba17b793f657","tarball":"https://registry.npmjs.org/@formachines/errata-mcp/-/errata-mcp-0.1.0.tgz","fileCount":5,"integrity":"sha512-z0gn48uTxCVyY440CzSaa9ahMzcT3AMEI/OauBBqCuuj843jnouNkjND4sXZ433unttQXk7oOvglu0Qt9wZ3ng==","signatures":[{"sig":"MEUCIC7Dh6AtVhTSHrhsDjA3vsOJFS8eWprzOAE8OK1G+rZcAiEAuK39oRDA3w/R8V4l39udStODLSHXmwFXiZBwX8HaRxU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIHg1dTMlNDpOB+aBBGtowdNi5lVxPZE+wwe8xqU+v02GAiAtzCbXdVk5cW3WEeei68beGbPIfavFpLU7WsBbnLY+pQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":38943},"type":"module","engines":{"node":">=20"},"gitHead":"48ea6efab23da1a3c00da74de18219c70dad83cd","mcpName":"ai.formachines/errata","scripts":{"test":"vitest run","build":"esbuild src/bin.ts --bundle --platform=node --format=esm --target=node20 --external:@modelcontextprotocol/sdk --external:zod --outfile=dist/bin.js","prepack":"npm run build","pretest":"npm run build","typecheck":"tsc -p .","inspect:live":"zsh scripts/inspect-live.sh"},"_npmUser":{"name":"oouphy","email":"oouphy@gmail.com"},"repository":{"url":"git+https://github.com/formachines-ai/errata-mcp.git","type":"git"},"_npmVersion":"11.7.0","description":"MCP server for Errata: sandbox-verified corrections where AI models write outdated code for PyPI and npm libraries","directories":{},"_nodeVersion":"25.4.0","dependencies":{"zod":"^4.6.7","@modelcontextprotocol/sdk":"^1.32.2"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^5.0.5","esbuild":"^0.28.2","typescript":"^7.0.2","@types/node":"^22.20.5","@formachines/errata-core":"^0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/errata-mcp_0.1.0_1793617518525_0.10174389495509506","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Not maintained: Errata stopped on 2026-11-10, data frozen"},"0.1.1":{"name":"@formachines/errata-mcp","version":"0.1.1","keywords":["mcp","model-context-protocol","errata","outdated-code","llm","pypi","npm","ai-agents"],"author":{"name":"formachines.ai"},"license":"MIT","_id":"@formachines/errata-mcp@0.1.1","maintainers":[{"name":"oouphy","email":"oouphy@gmail.com"}],"homepage":"https://formachines.ai/errata/","bugs":{"url":"https://github.com/formachines-ai/errata-mcp/issues"},"bin":{"errata-mcp":"dist/bin.js"},"dist":{"shasum":"07e94bd892421b3382b14345424b32a3176d76e6","tarball":"https://registry.npmjs.org/@formachines/errata-mcp/-/errata-mcp-0.1.1.tgz","fileCount":5,"integrity":"sha512-F/WuG1MZmiiTjm032LnuoYSlZEj6XKff5llVBphmB94npSSWnaCztxnpwGcVfg+7aKr8vhuU+Q6kohdEZ88vHA==","signatures":[{"sig":"MEYCIQC7FBfzjD59PZ5axAHEajnJG4ezr7495Ck+s0llZuZmlgIhAMohOs3nIoVG4E8cSAECWO1+u6TvymleFKYdzzLxRCBV","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIE9M2Ckd6cTHQBBEPbH4Gw7Y/3liaqmpHm93BGFY0+heAiAYemVVvuThPPEHVesrnMkwhq2miZ428KiVv7dohxKQWw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":38947},"type":"module","engines":{"node":">=20"},"gitHead":"bcdf55c0f7354e6f8128fb15ddfe3672ac1b0b93","mcpName":"ai.formachines/errata","scripts":{"test":"vitest run","build":"esbuild src/bin.ts --bundle --platform=node --format=esm --target=node20 --external:@modelcontextprotocol/sdk --external:zod --outfile=dist/bin.js","prepack":"npm run build","pretest":"npm run build","typecheck":"tsc -p .","inspect:live":"zsh scripts/inspect-live.sh"},"_npmUser":{"name":"oouphy","email":"oouphy@gmail.com"},"repository":{"url":"git+https://github.com/formachines-ai/errata-mcp.git","type":"git"},"_npmVersion":"11.7.0","description":"MCP server for Errata: sandbox-verified corrections where AI models write outdated code for PyPI and npm libraries","directories":{},"_nodeVersion":"25.4.0","dependencies":{"zod":"^4.6.7","@modelcontextprotocol/sdk":"^1.32.2"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^5.0.5","esbuild":"^0.28.2","typescript":"^7.0.2","@types/node":"^22.20.5","@formachines/errata-core":"^0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/errata-mcp_0.1.1_1793624185917_0.8650256325422514","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Not maintained: Errata stopped on 2026-11-10, data frozen"},"0.1.2":{"name":"@formachines/errata-mcp","version":"0.1.2","keywords":["mcp","model-context-protocol","errata","outdated-code","llm","pypi","npm","ai-agents"],"author":{"name":"formachines.ai"},"license":"MIT","_id":"@formachines/errata-mcp@0.1.2","maintainers":[{"name":"oouphy","email":"oouphy@gmail.com"}],"homepage":"https://formachines.ai/errata/","bugs":{"url":"https://github.com/formachines-ai/errata-mcp/issues"},"bin":{"errata-mcp":"dist/bin.js"},"dist":{"shasum":"b18a7d4d78916e27f928a9d6410aed10f8d9b200","tarball":"https://registry.npmjs.org/@formachines/errata-mcp/-/errata-mcp-0.1.2.tgz","fileCount":5,"integrity":"sha512-gJO18/QmAZd7dirBqyjYoFdv5yCHMRi5Lrcy2GUYq6M4RxpZSPPoXW2jW36cRjxIi4FRaVIxXWUuiRJxIBJ0MA==","signatures":[{"sig":"MEQCIBKkod8ez8JXd6Rwvm4lF4kaiWx/61921g7fbBwJIVoQAiAqA2v20GxMBMp5WHxA3uiaZoGHAuOmiXQa2wR874jO+g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIFyKrrPuu82yCqyy6fpR0s1uHsaGc4WshfU57rO5ApPLAiEA3+j4tzdVPvaqsY3wsWpNVVV86d7uG4DJnu8py6vvZV4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":44219},"type":"module","engines":{"node":">=20"},"gitHead":"8a8197cf53dd7b1165cfe8995ac9568bba9ba2be","mcpName":"ai.formachines/errata","scripts":{"test":"vitest run","build":"esbuild src/bin.ts --bundle --platform=node --format=esm --target=node20 --external:@modelcontextprotocol/sdk --external:zod --outfile=dist/bin.js","prepack":"npm run build","pretest":"npm run build","typecheck":"tsc -p .","inspect:live":"zsh scripts/inspect-live.sh"},"_npmUser":{"name":"oouphy","email":"oouphy@gmail.com"},"repository":{"url":"git+https://github.com/formachines-ai/errata-mcp.git","type":"git"},"_npmVersion":"11.7.0","description":"MCP server for Errata: sandbox-verified corrections where AI models write outdated code for PyPI and npm libraries","directories":{},"_nodeVersion":"25.4.0","dependencies":{"zod":"^4.6.7","@modelcontextprotocol/sdk":"^1.32.2"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^5.0.5","esbuild":"^0.28.2","typescript":"^7.0.2","@types/node":"^22.20.5","@formachines/errata-core":"^0.1.2"},"_npmOperationalInternal":{"tmp":"tmp/errata-mcp_0.1.2_1793626805981_0.38581459003368346","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Not maintained: Errata stopped on 2026-11-10, data frozen"},"0.1.3":{"name":"@formachines/errata-mcp","version":"0.1.3","keywords":["mcp","model-context-protocol","errata","outdated-code","llm","pypi","npm","ai-agents"],"author":{"name":"formachines.ai"},"license":"MIT","_id":"@formachines/errata-mcp@0.1.3","maintainers":[{"name":"oouphy","email":"oouphy@gmail.com"}],"homepage":"https://formachines.ai/errata/","bugs":{"url":"https://github.com/formachines-ai/errata-mcp/issues"},"bin":{"errata-mcp":"dist/bin.js"},"dist":{"shasum":"d8375d8b7c21d15dae412c8350218dc245c8f255","tarball":"https://registry.npmjs.org/@formachines/errata-mcp/-/errata-mcp-0.1.3.tgz","fileCount":5,"integrity":"sha512-I/dcwJ5C2oeYiWSpaIdux9m2sArkKWSZaypvURVjpsSgtKefCwY8JRWB3AcNH/QnV4bpcQyPy2EUj+p4ZvGwcg==","signatures":[{"sig":"MEQCIAzkHL/UN6HEhq2ArB/U/v04vEbOHiGfWIzhjboIci7yAiA0eu4cg76kuq1OC+yUOWY2WcUAwrWk17GKeHzqctTvdQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIENoOsbYBCFXhGEk6XlWLv9pSQxAGsYfkWBiozqL38PuAiEAhWMIcKbERbLrBRKrow3krKL5tQN5jjBc7QRmc6WjPyI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":48048},"type":"module","engines":{"node":">=20"},"gitHead":"39059de5c520c791894d7448a413a2543b878a37","mcpName":"ai.formachines/errata","scripts":{"test":"vitest run","build":"esbuild src/bin.ts --bundle --platform=node --format=esm --target=node20 --external:@modelcontextprotocol/sdk --external:zod --outfile=dist/bin.js","prepack":"npm run build","pretest":"npm run build","typecheck":"tsc -p .","inspect:live":"zsh scripts/inspect-live.sh"},"_npmUser":{"name":"oouphy","email":"oouphy@gmail.com"},"repository":{"url":"git+https://github.com/formachines-ai/errata-mcp.git","type":"git"},"_npmVersion":"11.7.0","description":"MCP server for Errata: sandbox-verified corrections where AI models write outdated code for PyPI and npm libraries","directories":{},"_nodeVersion":"25.4.0","dependencies":{"zod":"^4.6.7","@modelcontextprotocol/sdk":"^1.32.2"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^5.0.5","esbuild":"^0.28.2","typescript":"^7.0.2","@types/node":"^22.20.5","@formachines/errata-core":"^0.1.3"},"_npmOperationalInternal":{"tmp":"tmp/errata-mcp_0.1.3_1794307665700_0.5275529429806239","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Not maintained: Errata stopped on 2026-11-10, data frozen"}},"time":{"created":"2026-11-02T11:02:40.672Z","modified":"2026-11-10T15:44:56.259Z","0.0.0-stage":"2026-11-02T11:02:40.672Z","0.1.0":"2026-11-02T11:05:18.606Z","0.1.1":"2026-11-02T12:56:26.006Z","0.1.2":"2026-11-02T13:40:06.092Z","0.1.3":"2026-11-10T10:47:45.799Z"},"bugs":{"url":"https://github.com/formachines-ai/errata-mcp/issues"},"author":{"name":"formachines.ai"},"license":"MIT","homepage":"https://formachines.ai/errata/","keywords":["mcp","model-context-protocol","errata","outdated-code","llm","pypi","npm","ai-agents"],"repository":{"url":"git+https://github.com/formachines-ai/errata-mcp.git","type":"git"},"description":"MCP server for Errata: sandbox-verified corrections where AI models write outdated code for PyPI and npm libraries","maintainers":[{"name":"oouphy","email":"oouphy@gmail.com"}],"readme":"# @formachines/errata-mcp\n\nAn MCP server for [Errata](https://formachines.ai/errata/): places where AI models write outdated code for PyPI and\nnpm libraries, each with a fix verified in a sandbox. Three tools; stdio; no API key.\n\n| | |\n|---|---|\n| Executes fix examples | never |\n| Reads | no files: the agent passes the package, version or error text to a tool (the CLI `@formachines/errata` reads lockfiles and manifests) |\n| Sends | package names to fetch entries; search misses to `/v1/miss` (off: `ERRATA_NO_TELEMETRY=1`, details below); `report` only when the agent calls it |\n\n## Install\n\nClaude Code:\n\n```\nclaude mcp add errata -- npx -y @formachines/errata-mcp\n```\n\nAny client with a JSON config (Claude Desktop, Cursor, Windsurf, VS Code …):\n\n```json\n{\n  \"mcpServers\": {\n    \"errata\": { \"command\": \"npx\", \"args\": [\"-y\", \"@formachines/errata-mcp\"] }\n  }\n}\n```\n\nNode 20 or newer. Registry name: `ai.formachines/errata`.\n\n## Tools\n\n| tool | input | answer `status` |\n|---|---|---|\n| `check_package` | `ecosystem` (`pypi`/`npm`), `package`, `version` (exact, or a range; may be omitted) | `found` · `unconfirmed_version` · `not_affected` · `no_coverage` · `technical_error` |\n| `search_error` | `text`: an error line, a traceback, or an entry id | `found` · `candidates` · `no_match` · `technical_error` |\n| `report` | `id`, `verdict` (`confirm`/`dispute`), `note` (≤ 500 characters) | `received` · `merged` · `withdrawn` · `unknown_entry` · `invalid` · `rejected` · `technical_error` |\n\nA `check_package` answer opens with `summary`, five lines and a note (since 0.1.3, the same as the CLI): dependencies\nasked about and whether the version is exact; whether Errata covers the package; the entries that match the version,\nby readiness (`patch`: the short patch applies word for word; `partial`: it covers part of the change; `lead`: it does\nnot apply word for word, the entry has a full example that works); how many need a person (confirm the code uses the\nchanged name, `detect`, before applying; decide on a lead); not covered; and *No match does not mean your project is\nfree of such errors.*\n\nEach entry in an answer carries `verdict` (`apply` / `lead` / `none`), `readiness` (`patch` / `partial` / `lead`),\n`grade` (`verified` / `possible` / `not_affected` / `unknown`), `reason`, `wrong`, `right`, `detect`, `error`,\n`fails_on`, `verified_on`, `url`.\n\nExample, `check_package {\"ecosystem\":\"pypi\",\"package\":\"click\",\"version\":\"8.5.0\"}` against the live base (2026-11-09):\n\n```json\n{\"status\":\"found\",\"summary\":[\"Dependencies found: 1, 1 with an exact version\",\"In Errata: 1 of them\",\"Match your versions: 1 entry — 1 patch, 0 partial, 0 lead\",\"Need a person: 1 to apply once your code is seen to use the changed name (detect), 0 for a manual decision (lead)\",\"Not covered: 0 dependencies\",\"No match does not mean your project is free of such errors.\"],\"package\":\"pypi/click\",\"installed\":\"8.5.0\",\"entries\":[{\"id\":\"pypi/click/8.5.0/0001\",\"verdict\":\"apply\",\"readiness\":\"patch\",\"grade\":\"verified\",\"reason\":\"checked on click 8.5.0, 8.5.1; installed 8.5.0; proof.auto_apply true\",\"symbol\":\"click.Parameter\",\"wrong\":\"parameter = click.Parameter([\\\"--x\\\"])\",\"right\":\"parameter = click.Option([\\\"--x\\\"])\",\"detect\":[\"click.Parameter\"],\"error\":\"Can't instantiate abstract class Parameter with abstract methods _parse_decls, add_to_parser\",\"fails_on\":\"8.5.0\",\"verified_on\":[\"8.5.0\",\"8.5.1\"],\"url\":\"https://formachines.ai/errata/pypi/click/0001-click-parameter/\"}]}\n```\n\n`check_package {\"ecosystem\":\"pypi\",\"package\":\"mcp\",\"version\":\"2.3.0\"}` opens with\n\n```\nDependencies found: 1, 1 with an exact version\nIn Errata: 1 of them\nMatch your versions: 3 entries — 1 patch, 1 partial, 1 lead\nNeed a person: 1 to apply once your code is seen to use the changed name (detect), 2 for a manual decision (lead)\nNot covered: 0 dependencies\nNo match does not mean your project is free of such errors.\n```\n\nand the same click package at a version nobody checked, `\"version\":\"8.6.0\"`:\n`status: \"unconfirmed_version\"`, verdict `lead`, reason *installed 8.6.0 is newer than the versions checked (8.5.0);\none checked version is not a range*.\n\n### Rule\n\nOne rule for the server, the CLI, the skill and the site (printed in every page footer, `llms.txt` and the JSON\n`agent_rule`): apply a correction on your own only when the installed version is one it was checked on\n(`versions.checked_on`: `fails_on` and every recheck) and its `proof.auto_apply` is true. A newer version than the\nchecked ones, one between `works_on` and `fails_on`, or an unknown one is `lead`; `works_on` or older is `none`.\n\nMerged and withdrawn entries are never offered: answers list them under `not_offered` with the entry that carries a\nmerged one now. `report` refuses them before sending. An unreachable base is `technical_error` with `isError: true`,\nnever `no_coverage`.\n\n## Environment\n\n| variable | default |\n|---|---|\n| `ERRATA_BASE_URL` | `https://formachines.ai` |\n| `ERRATA_FEEDBACK_URL` | `<base>/v1/feedback` |\n| `ERRATA_TIMEOUT_MS` | `8000` per request |\n| `ERRATA_CACHE_TTL_S` | `600` (in-process cache: one index and changelog per ten minutes) |\n| `ERRATA_LOG_LEVEL` | `warn` (logs go to stderr; the text of `search_error` is never logged) |\n| `ERRATA_NO_TELEMETRY` | unset; `1` (or `DO_NOT_TRACK=1`) stops the search-miss report below |\n\nRequests carry the User-Agent `formachines-errata-mcp/<version>`, so the site counts MCP traffic apart.\n\n**Search misses (since 0.1.2).** When `search_error` finds nothing, the server sends `POST https://formachines.ai/v1/miss`\nwith the source (`mcp`), the exception type and its message scrubbed of paths, numbers, IP addresses, hex, UUIDs,\ne-mails, token-like strings and quoted values other than plain names (`'numpy'` stays, `'my secret'` becomes `<str>`),\nat most 200 characters. A dotted type keeps only its last part (`acme.errors.BillingError` → `BillingError`). No code,\nno project name, no other lines of the traceback; text with no `SomeError: …` line sends nothing. It is sent in the\nbackground (the answer never waits for it, a network error is ignored) and only on a miss. The receiver scrubs again,\nkeeps no IP address and uses the list to decide which errors to cover next. `ERRATA_NO_TELEMETRY=1` turns it off.\n\n## Overhead\n\nMeasured 2026-11-02 against formachines.ai: the first `check_package` costs 3 requests (index 5.9 kB, changelog 31 kB,\nthe package JSON 5–12 kB), later calls in the next ten minutes only the package JSON (or nothing, when cached).\n`search_error` costs one 31 kB request for the error index. Sizes are uncompressed; since 2026-11-02 the site sends\nJSON gzipped, about a fifth of that on the wire. Answers are compact: 0.6 kB for `click`, 1.9 kB for\n`typescript` (two entries), 0.9 kB for a matched error.\n\n## What the server does not promise\n\n- **Not a full scan.** The base covers a few dozen packages; `no_coverage` means no corrections, not that the code is\n  current.\n- **No range proof.** One checked version is not a range; newer versions are `lead`.\n- **Not an applier.** The server never edits code; `apply` says the base allows applying the fix as is.\n- **Reports are not published.** `report` sends to a quarantine that is rechecked in the sandbox before anything\n  changes; a note is never shown to other agents.\n- **No offline mode.** Without the network every tool answers `technical_error`.\n\n## Check it yourself\n\n```\nnpx -y @modelcontextprotocol/inspector --cli npx -y @formachines/errata-mcp --method tools/list\n```\n\n## Development\n\nLives in the formachines repository under `clients/`, shared logic in `clients/core` (bundled at build). `npm test`\nstarts the built server over stdio with the SDK client and runs the seven acceptance cases against a snapshot of the\nbase. `server.json` follows the registry schema `2025-12-11`. To move it to its own repository, copy\n`clients/core/src` into `src/core` and change the import `@formachines/errata-core` to `./core/index.js`.\n\nMIT licence. The data is CC BY 4.0 (formachines.ai/errata).\n","readmeFilename":"README.md"}