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.json.gzCompact search index (gzip) — one record per error, all repos.
/data/repos.jsonRepoEntry[] — the list of analyzed repos.
/data/repos/{owner}/{name}.jsonFull ErrorEntry[] for one repo.

Current dataset

{
  "schemaVersion": 2,
  "datasetVersion": "2026-09-15T18:17:12.389Z",
  "counts": {
    "repos": 1915,
    "errors": 428202,
    "infoPages": 184,
    "sitePublishedRepos": 1677
  },
  "files": {
    "index": {
      "path": "/data/index.json.gz",
      "bytes": 25364899,
      "sha256": "121718b66a9e4de29b7e2c6cd4af5afd14928c4a4255dc64516b295aaefc2855",
      "encoding": "gzip",
      "rawBytes": 146615803,
      "rawSha256": "f23b09abb736727f61da5d100529f67d7bcd24f9f1786ad02b43e54e6f0df755"
    },
    "repos": {
      "path": "/data/repos.json",
      "bytes": 718045,
      "sha256": "328c0b7c17843b6dde28f247b670a8ba5331efc01f201bb94cf40d996269a4c2"
    },
    "published": {
      "path": "/data/published.json",
      "bytes": 35842,
      "sha256": "7bf5fc76701c7dd468f8bf2f2bc3670449f45b19fab454773b91a70edb139107"
    },
    "tags": {
      "path": "/data/tags.json",
      "bytes": 4566922,
      "sha256": "f62751a5a6db143dd851735851c9e8c1dcae7798bed834517fc858be1373225a"
    },
    "searchSummary": {
      "path": "/data/search/summary.json",
      "bytes": 73,
      "sha256": "388a107ecb4a14d5b1befc499ea3f3d1972acd218db7fe5e0e91e976bb59c2bf"
    }
  }
}

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