ModelRig / reports / declared-vs-probed
Declared vs. probed: what 37 models' capability flags get wrong
The machine-readable capability flags the ecosystem routes on, probed against measured behavior. 29 of 37 models carry at least one discrepancy — 39 in total, in both directions. Every number on this page is computed from the live registry at render; raw per-sample records are published, CC-BY.
What “declared” means here
“Declared” here is not a provider's marketing page. It is the pinned machine-readable capability snapshot plus adapter flags — supports_response_schema, supports_web_search, supports_prompt_caching — the metadata layer that routers and gateways actually route on. That is why the gaps are expensive: a wrong flag doesn't mislead a reader, it misroutes traffic.
Better than their flags admit · 13 models
No declared schema support, yet probed conformance is high. The capability exists; the flag layer doesn't know. A router trusting the flags skips these models — and they are often the cheap ones, which is how capability-blind routing overpays.
- deepinfra/mistralai/Mistral-Small-3.2-24B-Instruct-2506 — no declared schema support, but probed conformance is 95% — capability exists undeclared
- deepinfra/meta-llama/Llama-4-Scout-17B-16E-Instruct — no declared schema support, but probed conformance is 93% — capability exists undeclared
- deepinfra/google/gemma-4-31B-it — no declared schema support, but probed conformance is 100% — capability exists undeclared
- deepinfra/Qwen/Qwen3-30B-A3B — no declared schema support, but probed conformance is 97% — capability exists undeclared
- deepinfra/openai/gpt-oss-120b — no declared schema support, but probed conformance is 99% — capability exists undeclared
- deepinfra/Qwen/Qwen3-Coder-480B-A35B-Instruct-Turbo — no declared schema support, but probed conformance is 95% — capability exists undeclared
- deepinfra/MiniMaxAI/MiniMax-M3 — no declared schema support, but probed conformance is 99% — capability exists undeclared
- deepinfra/nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B — no declared schema support, but probed conformance is 100% — capability exists undeclared
- deepinfra/moonshotai/Kimi-K2.7-Code — no declared schema support, but probed conformance is 97% — capability exists undeclared
- deepinfra/zai-org/GLM-5.2 — no declared schema support, but probed conformance is 98% — capability exists undeclared
- deepinfra/moonshotai/Kimi-K2.6 — no declared schema support, but probed conformance is 99% — capability exists undeclared
- fireworks/kimi-k3 — no declared schema support, but probed conformance is 98% — capability exists undeclared
- openai/gpt-5.5-pro — no declared schema support, but probed conformance is 100% — capability exists undeclared
Models that pass every schema fixture range from $0.082 to $52.827 per 1,000 conformant outputs on the current leaderboard — a 642× spread. Which end is your stack on?
The json_object-vs-schema gap · 6 models
Declared schema support — but every probed sample was served via json_mode coaching, with no native strict enforcement on this serving path. Valid JSON is not your schema; the rung matters, and the flag doesn't distinguish them.
- deepseek/deepseek-chat — declared supports_response_schema, but every probed sample was served via json_mode coaching — no native strict enforcement exists on this serving path (the json_object-vs-schema gap)
- deepseek/deepseek-v4-flash — declared supports_response_schema, but every probed sample was served via json_mode coaching — no native strict enforcement exists on this serving path (the json_object-vs-schema gap)
- deepseek/deepseek-reasoner — declared supports_response_schema, but every probed sample was served via json_mode coaching — no native strict enforcement exists on this serving path (the json_object-vs-schema gap)
- fireworks/gpt-oss-120b — declared supports_response_schema, but every probed sample was served via json_mode coaching — no native strict enforcement exists on this serving path (the json_object-vs-schema gap)
- deepseek/deepseek-v4-pro — declared supports_response_schema, but every probed sample was served via json_mode coaching — no native strict enforcement exists on this serving path (the json_object-vs-schema gap)
- fireworks/glm-5p2 — declared supports_response_schema, but every probed sample was served via json_mode coaching — no native strict enforcement exists on this serving path (the json_object-vs-schema gap)
Search flags that don't ground · 6 models
Declared web-search support, but probed answers carried citations well below the grounding bar. The capability may exist and simply not engage on this path — which is exactly what a router cannot know from the flag alone.
- grok/grok-4-1-fast — declared supports_web_search, but only 27% of probed answers carried citations (bar: 50%)
- grok/grok-4.3 — declared supports_web_search, but only 20% of probed answers carried citations (bar: 50%)
- grok/grok-4.5 — declared supports_web_search, but only 27% of probed answers carried citations (bar: 50%)
- openai/gpt-5.2 — declared supports_web_search, but only 7% of probed answers carried citations (bar: 50%)
- openai/gpt-5.5 — declared supports_web_search, but only 0% of probed answers carried citations (bar: 50%)
- openai/gpt-5.5-pro — declared supports_web_search, but only 0% of probed answers carried citations (bar: 50%)
Citations with no declared search · 14 models
A high share of probed answers cited URLs with no declared search flag. This does not mean the model secretly searches: either the flag layer is incomplete, or the citations are fabricated-shaped. Both readings demand verification — that is the finding.
- deepinfra/meta-llama/Llama-4-Scout-17B-16E-Instruct — no declared web-search support, but 100% of probed answers cited URLs — verify whether these are real or fabricated sources
- deepseek/deepseek-chat — no declared web-search support, but 100% of probed answers cited URLs — verify whether these are real or fabricated sources
- deepseek/deepseek-v4-flash — no declared web-search support, but 80% of probed answers cited URLs — verify whether these are real or fabricated sources
- deepinfra/meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8 — no declared web-search support, but 100% of probed answers cited URLs — verify whether these are real or fabricated sources
- deepseek/deepseek-reasoner — no declared web-search support, but 93% of probed answers cited URLs — verify whether these are real or fabricated sources
- deepinfra/Qwen/Qwen3-30B-A3B — no declared web-search support, but 87% of probed answers cited URLs — verify whether these are real or fabricated sources
- deepinfra/Qwen/Qwen3-Coder-480B-A35B-Instruct-Turbo — no declared web-search support, but 73% of probed answers cited URLs — verify whether these are real or fabricated sources
- deepinfra/MiniMaxAI/MiniMax-M3 — no declared web-search support, but 87% of probed answers cited URLs — verify whether these are real or fabricated sources
- anthropic/claude-haiku-4-5 — no declared web-search support, but 87% of probed answers cited URLs — verify whether these are real or fabricated sources
- deepinfra/zai-org/GLM-5.2 — no declared web-search support, but 60% of probed answers cited URLs — verify whether these are real or fabricated sources
- anthropic/claude-sonnet-5 — no declared web-search support, but 93% of probed answers cited URLs — verify whether these are real or fabricated sources
- fireworks/kimi-k3 — no declared web-search support, but 60% of probed answers cited URLs — verify whether these are real or fabricated sources
- anthropic/claude-opus-5 — no declared web-search support, but 93% of probed answers cited URLs — verify whether these are real or fabricated sources
- anthropic/claude-fable-5 — no declared web-search support, but 93% of probed answers cited URLs — verify whether these are real or fabricated sources
Caching flags vs. the documented opt-in path — not counted above · 6 models
Declared prompt-caching support, but a repeat-call probe on the documented opt-in path still reported zero cached tokens (the marker was sent where the provider requires one; the prefix exceeded each provider's minimum). For implicit-cache providers a zero can be within spec — implicit caching is not guaranteed — so we deliberately do not count these as discrepancies until a prime-side cache-write confirmation is in the probe. What survives either way: the flag does not mean caching is automatic.
- gemini/gemini-3.1-flash-lite — declared supports_prompt_caching, but no eligible probed repeat call on the documented caching path reported cached tokens
- anthropic/claude-haiku-4-5 — declared supports_prompt_caching, but no eligible probed repeat call on the documented caching path reported cached tokens
- gemini/gemini-3-flash-preview — declared supports_prompt_caching, but no eligible probed repeat call on the documented caching path reported cached tokens
- anthropic/claude-sonnet-5 — declared supports_prompt_caching, but no eligible probed repeat call on the documented caching path reported cached tokens
- gemini/gemini-3.1-pro-preview — declared supports_prompt_caching, but no eligible probed repeat call on the documented caching path reported cached tokens
- openai/gpt-5.5-pro — declared supports_prompt_caching, but no eligible probed repeat call on the documented caching path reported cached tokens
Method, and its limits
Method: sampled probes with 95% confidence intervals, one serving path per model per cycle, declared layer pinned with as_of stamps. The corpus is v0 and finance-weighted — read rates as corpus-wide, not domain-general. The probe suite is reproducible; rerun it before you cite it.
Rerun it yourself: every published stat ships with its raw samples. Rerun it yourself · Contribute fixtures
data as of 2026-08-19 · vintage 2026-08-19T14:18:42.501Z · live @ 41d1634
What we do about it: the gateway routes on probed capability, not declared flags — and when a cheaper model passes on your own replayed traffic, the swap ships as a pull request you review. How A/B-tested routing works →