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: *.

EndpointPurpose
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/reposAnalyzed repositories with error counts.
GET /api/tagsBackground 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

PathPurpose
/data/manifest.jsonFreshness poll target. Tiny. MCP checks this first.
/data/index-{n}.json.gzCompact search index (gzip), split into parts of at most 20 MiB — one record per error, all repos. manifest.json lists every part.
/data/repos.jsonRepoEntry[] — the list of analyzed repos.
/data/repos/{owner}/{name}.jsonFull 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