Dataset contract
The product is structured data. The site is the distribution channel. Everything below is served as immutable static JSON at https://errors.standardbeagle.com/data/… — CORS-enabled, so browsers and third-party tools can fetch it directly.
Search API
A thin edge function wraps the same tiered matching the MCP server uses (exact code → derived pattern → fuzzy). All responses are JSON with Access-Control-Allow-Origin: *.
| Endpoint | Purpose |
|---|---|
GET /api/search?q=<message> | Scored matches for a raw error message. Optional repo=owner/name, limit (max 25). |
GET /api/errors/{id} | Full ErrorEntry record by id. |
GET /api/repos | Analyzed repositories with error counts. |
GET /api/tags | Background error families with record and repo counts, and the article covering each. ?uncovered=1 returns only the families with no article yet, largest first; ?minErrors=n and ?limit=n narrow the list. |
curl "https://errors.standardbeagle.com/api/search?q=Request+failed+with+status+code+404"
Prefer bulk or offline consumption? Skip the API — download the dataset files below and query locally; that is exactly what the MCP server does.
Files
| Path | Purpose |
|---|---|
/data/manifest.json | Freshness poll target. Tiny. MCP checks this first. |
/data/index-{n}.json.gz | Compact search index (gzip), split into parts of at most 20 MiB — one record per error, all repos. manifest.json lists every part. |
/data/repos.json | RepoEntry[] — the list of analyzed repos. |
/data/repos/{owner}/{name}.json | Full ErrorEntry[] for one repo. |
Current dataset
{
"schemaVersion": 2,
"datasetVersion": "2026-09-23T08:17:48.524Z",
"counts": {
"repos": 2311,
"errors": 504328,
"infoPages": 184,
"sitePublishedRepos": 1949
},
"files": {
"index-1": {
"path": "/data/index-1.json.gz",
"bytes": 15072791,
"sha256": "179883d59c036bb0dfd619440bae1abf675428526540a04a28e7d9070eed2b6b",
"encoding": "gzip",
"rawBytes": 86964763,
"rawSha256": "04c8d3b952e9b657058305a49cfab664aae0304ff6f596048f9d9477722551ed"
},
"index-2": {
"path": "/data/index-2.json.gz",
"bytes": 15530955,
"sha256": "ff5e49286dc49c09bf39c2a4efaed320e8a1bd98b03775c4acdadb7d27b39f6c",
"encoding": "gzip",
"rawBytes": 87425065,
"rawSha256": "8a2c672033b42518ee07b353ba3dd295a81a05d3fe30307cbff325e7dfce872c"
},
"repos": {
"path": "/data/repos.json",
"bytes": 859091,
"sha256": "13e313bd43dc7693643b3c3291eb1da8681ffa4f25503d414d6639ccbd8d6d96"
},
"published": {
"path": "/data/published.json",
"bytes": 42372,
"sha256": "c74fcdbcb6297b9fcb8dceb1d5c6ab217713b5fe5a3f1acda67f1f1700a10842"
},
"sitemapShards": {
"path": "/data/sitemap-shards.json",
"bytes": 47742,
"sha256": "8eab99e7b7670c976022f66ef66a706200ba41c7292ad7d92b02f2a92e9caba4"
},
"tags": {
"path": "/data/tags.json",
"bytes": 4574550,
"sha256": "f3af7b5fff449e5e4a8f340849281d0359213f7b95c9aa01be93219ed9ade60e"
},
"searchSummary": {
"path": "/data/search/summary.json",
"bytes": 73,
"sha256": "de15557dbac3d8a77bda92a6164e4c729bf35710aa547c5d057dba57ebe6e86e"
}
}
} Schema
JSON Schema (Draft-07): /schema.json. TypeScript types: @errlookup/schema. Every record validates on write, on read (build), and on download (MCP). Fail fast; never silently coerce.
Cache headers
/data/manifest.json Cache-Control: public, max-age=300 /data/* Cache-Control: public, max-age=86400, stale-while-revalidate=604800