Errata

ai.formachinesPublished by formachines.aiv0.1.2Updated Nov 7, 2026

Sandbox-verified fixes where AI models write outdated code for PyPI and npm libraries

VerifiedSTDIODesktop onlyAI & ML

Overview

Errata's local MCP server, published by formachines.ai; no sign-in required; STDIO; 3 tools.

No AI overview yet: these facts come from the registry entry and the server itself.

Publisher
formachines.ai

Installation

In SourceWeft

  1. Open Errata in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

@formachines/errata-mcp

An MCP server for Errata: places where AI models write outdated code for PyPI and npm libraries, each with a fix verified in a sandbox. Three tools; stdio; no API key.

Install

Claude Code:

claude mcp add errata -- npx -y @formachines/errata-mcp

Any client with a JSON config (Claude Desktop, Cursor, Windsurf, VS Code …):

json
{  "mcpServers": {    "errata": { "command": "npx", "args": ["-y", "@formachines/errata-mcp"] }  }}

Node 20 or newer. Registry name: ai.formachines/errata.

Tools

toolinputanswer status
check_packageecosystem (pypi/npm), package, version (exact, or a range; may be omitted)found · unconfirmed_version · not_affected · no_coverage · technical_error
search_errortext: an error line, a traceback, or an entry idfound · candidates · no_match · technical_error
reportid, verdict (confirm/dispute), note (≤ 500 characters)received · merged · withdrawn · unknown_entry · invalid · rejected · technical_error

Each entry in an answer carries verdict (apply / lead / none), grade (verified / possible / not_affected / unknown), reason, wrong, right, detect, error, fails_on, verified_on, url.

Example, check_package {"ecosystem":"pypi","package":"click","version":"8.5.0"} against the live base:

json
{"status":"found","package":"pypi/click","installed":"8.5.0","entries":[{"id":"pypi/click/8.5.0/0001","verdict":"apply","grade":"verified","reason":"checked on click 8.5.0; 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"],"url":"https://formachines.ai/errata/pypi/click/0001-click-parameter/"}]}

and the same package at a version nobody checked, "version":"8.6.0": status: "unconfirmed_version", verdict lead, reason installed 8.6.0 is newer than the versions checked (8.5.0); one checked version is not a range.

Rule

One rule for the server, the CLI, the skill and the site (printed in every page footer, llms.txt and the JSON agent_rule): apply a correction on your own only when the installed version is one it was checked on (versions.checked_on: fails_on and every recheck) and its proof.auto_apply is true. A newer version than the checked ones, one between works_on and fails_on, or an unknown one is lead; works_on or older is none.

Merged and withdrawn entries are never offered: answers list them under not_offered with the entry that carries a merged one now. report refuses them before sending. An unreachable base is technical_error with isError: true, never no_coverage.

Environment

variabledefault
ERRATA_BASE_URLhttps://formachines.ai
ERRATA_FEEDBACK_URL<base>/v1/feedback
ERRATA_TIMEOUT_MS8000 per request
ERRATA_CACHE_TTL_S600 (in-process cache: one index and changelog per ten minutes)
ERRATA_LOG_LEVELwarn (logs go to stderr; the text of search_error is never logged)
ERRATA_NO_TELEMETRYunset; 1 (or DO_NOT_TRACK=1) stops the search-miss report below

Requests carry the User-Agent formachines-errata-mcp/<version>, so the site counts MCP traffic apart.

Search misses (since 0.1.2). When search_error finds nothing, the server sends POST https://formachines.ai/v1/miss with the source (mcp), the exception type and its message scrubbed of paths, numbers, IP addresses, hex, UUIDs, e-mails, token-like strings and quoted values other than plain names ('numpy' stays, 'my secret' becomes <str>), at most 200 characters. A dotted type keeps only its last part (acme.errors.BillingError → BillingError). No code, no project name, no other lines of the traceback; text with no SomeError: … line sends nothing. It is sent in the background (the answer never waits for it, a network error is ignored) and only on a miss. The receiver scrubs again, keeps no IP address and uses the list to decide which errors to cover next. ERRATA_NO_TELEMETRY=1 turns it off.

Overhead

Measured 2026-11-02 against formachines.ai: the first check_package costs 3 requests (index 5.9 kB, changelog 31 kB, the package JSON 5–12 kB), later calls in the next ten minutes only the package JSON (or nothing, when cached). search_error costs one 31 kB request for the error index. Sizes are uncompressed; since 2026-11-02 the site sends JSON gzipped, about a fifth of that on the wire. Answers are compact: 0.6 kB for click, 1.9 kB for typescript (two entries), 0.9 kB for a matched error.

What the server does not promise

  • Not a full scan. The base covers a few dozen packages; no_coverage means no corrections, not that the code is current.
  • No range proof. One checked version is not a range; newer versions are lead.
  • Not an applier. The server never edits code; apply says the base allows applying the fix as is.
  • Reports are not published. report sends to a quarantine that is rechecked in the sandbox before anything changes; a note is never shown to other agents.
  • No offline mode. Without the network every tool answers technical_error.

Check it yourself

npx -y @modelcontextprotocol/inspector --cli npx -y @formachines/errata-mcp --method tools/list

Development

npm installnpm testnpm run typechecknpm pack

src/core is shared with errata-cli and kept identical in both. Tests run against a snapshot of formachines.ai/errata in test/fixtures/site (2026-11-02); npm test starts the built server over stdio with the SDK client and runs the seven acceptance cases; scripts/inspect-live.sh repeats them with MCP Inspector against the live base. server.json follows the registry schema 2025-12-11.

MIT licence. The data is CC BY 4.0 (formachines.ai/errata).

Source: README.md at commit bb7af41

Tools

3

check_package

Check a package version

Corrections for a PyPI or npm package where AI models write outdated code, each verified in a sandbox, with verdict apply / lead / none for the installed version and the reason. Apply on your own only verdict apply (checked on the installed version, proof.auto_apply true); show a lead to the user, a newer version than the checked ones included.

Parameterspackagerequiredversionecosystemrequired

search_error

Search by error text

Find corrections by an error message or traceback line (ImportError, AttributeError, TypeError …) or by an entry id. Returns the matching error signatures and their entries. On no match it sends the error type and a scrubbed message (no code, paths, numbers or quoted values) to formachines.ai so missing errors get covered; ERRATA_NO_TELEMETRY=1 turns that off.

Parameterstextrequired

report

Report whether a correction worked

Send confirm (the fix worked) or dispute (it did not) for an entry id. Reports are quarantined and rechecked in the sandbox before anything changes.

Parametersidrequirednoteverdictrequired

Version history

1
  1. v0.1.2LatestNov 3, 2026

Score

90% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts
  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts