# Direct provider observations and marketplace coverage

These are dated source observations, not a claim to cover the inference market. The downloadable catalogue keeps the provider's model IDs. We have not matched those IDs to benchmark identities, called the endpoints, or established equivalent behaviour across providers.

## Source observations

- **NanoGPT:** the unauthenticated [detailed model feed](https://nano-gpt.com/api/v1/models?detailed=true). Its [documentation](https://docs.nano-gpt.com/api-reference/endpoint/models) specifies USD per million tokens for `pricing.prompt` and `pricing.completion`. Authentication can change pricing and visibility. The website API host may differ from the direct API host. Model IDs include aliases and routing choices; they are not a count of distinct model weights. We omit scheduled effective pricing, audio/video-dependent billing, non-text decision outputs, and records without both text token rates. Their source facts and exclusion reasons remain retained.
- **Chutes:** the [public model feed](https://llm.chutes.ai/v1/models), read against its [per-million-token pricing page](https://chutes.ai/pricing). We require `price.input.usd` and `price.output.usd` to agree with `pricing.prompt` and `pricing.completion`. Context, modalities, and quantisation remain exactly the provider's declarations where present. Missing values remain unknown. Cache prices and the original pricing structures are retained; they do not imply that a request will receive a cache discount.
- **Scaleway:** the embedded factual catalogue in the [official Generative APIs page](https://www.scaleway.com/en/generative-apis/), with [model documentation](https://www.scaleway.com/en/docs/generative-apis/reference-content/supported-models/). Money is decoded as `units + nanos / 1,000,000,000` from explicitly labelled EUR per-million-token fields. Only chat models with both rates are admitted. Each region and standard/batch delivery is a separate observation. Embeddings and audio metering are excluded. These EUR records are source-currency research, excluded from the site's USD leaderboard comparison. No exchange rate is invented.

No source feed is treated as an independent benchmark or a security review. No new source changes the accepted model/offer catalogue. A base token quote does not establish long-context charges, reasoning-token usage, minimum commitments, taxes, payment fees, availability, or total task cost. Alternate service tiers remain metadata unless the source provides a separate parsed rate.

## What verification means

Each source has its fetch time, original response SHA-256, and a hash of a compact factual projection. The projection retains pricing structures, units, model identifiers, capabilities, and relevant conditions. It excludes vendor descriptions and benchmark scores. Public output contains pricing facts and original-source links, not copies of complete vendor websites.

The normaliser rejects missing or changed currency/units, negative/non-numeric rates, contradictory Chutes rates, duplicate IDs, malformed token limits, unreviewed NanoGPT price fields, and incomplete or approximate Scaleway quotes. It records deliberate scope exclusions separately. Unknown precision stays unknown.

The normal build verifies the retained factual files and replays extraction offline. It is **not a fresh fetch** and does not claim that a retained price remains available. Full response custody is kept in the dated research artifact directory; `verify-raw` separately checks the hashes and independently reproduces the factual projection from those response bytes.

## Coverage research

The coverage population is the repository's published **standard** model rows. Delivery variants do not enlarge the denominator. Only published seller rows with finite non-negative input and output rates count as offers. Models without offers are reported separately. We count seller owners using the site's canonical seller policy, so Google and Google AI Studio are one seller.

For every covered model, the replay counts endpoint rows, distinct sellers, declared/unknown precision rows, and whether at least two sellers publish exactly the same precision label. Matching precision is only a coverage signal. It is not proof that context, modalities, latency, cache terms, or model output quality are equivalent, and it does not establish a saving.

The downloaded coverage JSON includes each model's contribution and hashes of its accepted source files. It contains no quality scores, Artificial Analysis values, or inferred quality rankings. The direct-source catalogue and the marketplace coverage population are separate datasets and must not be added together as distinct model or seller counts.

## Replay in the source workspace

```sh
node scripts/provider-expansion.mjs verify
node scripts/provider-expansion.mjs build
node --test scripts/provider-expansion.test.mjs
```

With the full captured responses available:

```sh
node scripts/provider-expansion.mjs verify-raw research/artifacts/2026-10-07-resource-expansion/pricing-research
```

Download [source observations](https://undominated.ai/data/provider-expansion/catalogue.json) and [marketplace coverage](https://undominated.ai/data/provider-expansion/coverage.json). These commands require the project source and retained factual files; the two JSON downloads alone are not a standalone executable research package.
