Blog · 2026-09-05

Error lookup for your coding agent

An agent that hits an unfamiliar error string from a dependency has two options: guess from the wording, or go read the code that raised it. ErrLookup does the second one ahead of time, for 1,530 libraries, and hands the answer back with the commit-pinned permalink attached.

What a lookup returns

Ask the public API for a message you have never seen before:

curl -s "https://errors.standardbeagle.com/api/search?q=maximum%20call%20stack%20size%20exceeded&limit=1"

The top match is Hugo's template recursion guard, and the record behind it explains the mechanism — a hard nesting threshold of 999 enforced in ExecuteWithContextAndKey — then lists the fixes in order, starting with tracing the include chain of the template named in the message. The githubUrl field points at the analyzed line range in the exact commit the explanation was written from.

The dataset today

Repositories analyzed1,530
Error records309,555
Records with a source permalink at the analyzed commit100%
Records with at least one solution96.2%
Records with 200+ characters of explanation90.2%

The permalink column is what makes the rest usable. Analysis here is AI-assisted, so a record is a hypothesis with a citation stapled to it, and the citation is what lets you reject a bad one in seconds. How the scanner works covers the extraction pipeline in detail.

Wiring it into an agent

The MCP server is on npm and needs no key:

{
  "mcpServers": {
    "errlookup": {
      "command": "npx",
      "args": ["-y", "@standardbeagle/errlookup-mcp"]
    }
  }
}

It exposes search_error, get_error, list_repos and refresh_dataset. A lookup pulls only the slice of the published index it touches and caches it under ~/.cache/errlookup/, so the first answer costs about a second and a repeated one is served from memory with no network at all. Error strings pulled from your production logs stay on the machine; ERRLOOKUP_OFFLINE=1 pins that behavior, and refresh_dataset with full: true puts the whole dataset on disk for a machine that will be offline.

If you prefer HTTP, the same data is behind /api/search?q=, /api/errors/{id} and /api/repos. Both are documented on the dataset contract page.

Where it falls short

Roughly 4% of records have no solution attached yet and roughly 10% carry a short explanation. Most of those date from a stretch in mid-August when a model provider's quota kept collapsing mid-run; they heal as repositories are rescanned.

Coverage follows the corpus, which is weighted toward widely used libraries. For code that will never be in it, the pipeline is a local CLI and the dataset is static files: run it against your own repositories and serve the output from any internal host.