Skip to content

Pricing evidence: why zero isn't zero

2026-09-15 · catalog · 5 min read

A user pointed at our model list: Kimi K3 is not free. They were right, and the reason is a data-modelling mistake that's easy to make and dangerous to keep.

Where the "free" came from

Kimi Code — Moonshot's coding subscription — publishes its model catalogue with cost: { input: 0, output: 0 }. That's not a price; it's the absence of one, because usage is covered by the plan. Meanwhile a provider that simply hasn't published pricing yet also parses as zero, and a genuinely free promotional tier (…:free on a gateway) is zero as well. Three completely different situations, one number.

Our pipeline treated any zero price as free, and then computed a "blended net cost" of $0.04/1M so the free row had something to sort by. So K3 appeared at the top of the value sort, tagged FREE, cheaper than models that actually cost money. Every downstream comparison — top picks, cost-per-token, "cheapest frontier model" — inherited the lie.

The fix: evidence, not inference

What changed in the numbers

On the day we fixed it, "free" rows dropped from 543 to 75 — every remaining one has explicit evidence. 446 listings moved to "priced unknown" and stopped pretending to be $0.00/1M. And 186 rows now link to the subscription plan that actually covers them.

The lesson generalises: in observability, the dangerous number is never the missing one — it's the default. A zero that means "unknown" will quietly win every sort, every comparison, and every recommendation built on top of it. Evidence first, defaults never.

You can explore the result at token-horizon.dev/models, and ask an agent the same questions through our MCP tools (search_models, get_plans).

— The Token Horizon team