Machine-readable

Static JSON. No keys. No router.

These files are generated at build time and served as static assets. There is no query API, no account or query endpoint. Hosting providers may retain ordinary access logs. A verdict without a lens, as-of date, and licence line is a bug.

Licence, per field

Vendor prices are facts the vendor published. LMArena Elo is used under CC BY 4.0 from the official dataset. Artificial Analysis figures are not published here: we have no redistribution licence, so they inform what we check and never what you read. They are in no file on this site — not the catalogue, not the dominance JSON, not an export.

LMArena Elo under CC BY 4.0 from the official dataset. This file does not contain Artificial Analysis scores. We do not grant a sublicence to redistribute Artificial Analysis figures.

Endpoints

URLWhat it isProvenance
/data/catalogue.jsonLean board payload (prices, scores, facets).Mixed per field: vendor prices plus LMArena Elo under CC BY 4.0. No AA scores.
/data/plans.jsonSubscription plans, published caps only.Hand-researched. Unverified quotas are not numbers.
/data/frontier.jsonCurrent undominated set on lmarena, workload balanced.LMArena + vendor prices. No AA scores.
/data/dominance/<fileSlug>.jsonOne model’s verdict: frontier, dominated, dominated-with-tradeoff, unrated, or unpriced. File slug is the model slug with / and : replaced by __.LMArena + vendor prices. Losses named when the cheaper row is not a superset.
/data/series/price-at-floor.jsonCheapest model at pinned Arena Elo floors, per snapshot date. Absence is null.LMArena. Floors are append-only.
/data/models/<fileSlug>.jsonFull model record for drill-in pages.Field-level. Do not treat the whole file as one licence.

How to read a verdict

  1. Unrated is not zero and is not on the frontier.
  2. A cheaper model that drops image input, context, max output, tools, or reasoning is a trade, not an upgrade.
  3. Do not blend Artificial Analysis and LMArena into one number.
  4. Name the asOf date from the file when you cite it.
  5. This is not a router. It does not execute inference.

CLI — npx undominated-check

Read-only. Fetches the published dominance JSON for one model, prints the verdict with lens, workload and as-of date, and exits. No key, no account, no recomputation.

npx undominated-check google/gemini-3.7-flash
npx undominated-check openai/gpt-5.2 --exit-code --json
npx undominated-check --frontier --local static/data

Under --exit-code, unrated is not the same exit as dominated. Package: packages/undominated-check (MIT, zero dependencies).

Inspect and retain the evidence

Download the permitted normalized inputs, source attribution, publication manifest and calculation source together. This preserves the evidence behind this snapshot; it does not recreate the original benchmark experiments or a historical runtime.

Download research bundle · SHA-256 checksum · Offline verifier

node verify-research-bundle.mjs undominated-research.json.gz

Requires Node.js 22 or later. The verifier checks hashes without running the bundled source. Integrity is separate from source accuracy. Arena attribution travels with the download; inspect each input's source and licence before reuse.

Contract version 1. A breaking change is a new version directory, never an in-place edit. Generate with npm run data:dominance. For the OpenRouter routing question — computed seller counts, illustrative break-even, no invented direct price — see OpenRouter or direct.

Evidence & Ask