# Google (native) — gemma-4-31b grade card (reference provider)

generateContent — Google's own protocol · serves `gemma-4-31b-it` as gemma-4-31b · probed live 2026-07-28

This is Google's native API. Google's OpenAI-compat shim is graded separately as its own provider: google-openai.

HTML version: [https://inferencecanary.com/google/gemma-4-31b/](https://inferencecanary.com/google/gemma-4-31b/) · matrix: [https://inferencecanary.com/index.md](https://inferencecanary.com/index.md)

## Grades


| Axis | Grade | Basis |
|---|---|---|
| Harness | B− | A − 1 red − 1 yellow, per the published ladder |
| Billing | OK | Reported usage consistent with bytes on the wire. |
| Caching | Fail | A repeat 20K-token submission waits out the free tier's per-minute token quota (~46s of 429 retries) before it is served — and gemma-4 has no paid tier, so there is no quota to buy. Whether context is reused is unobservable behind the wait. Speed numbers: [https://inferencecanary.com/speed/index.md](https://inferencecanary.com/speed/index.md) |
| Faithfulness | reference | This provider is the reference implementation the battery compares against. |

## Flags

- **[red · pricing] Google sells no paid tier for gemma-4: every request is used to improve their products, and quota gates agentic work** — Google's own price sheet lists gemma-4's paid tier as "Not available" on every line — the free tier is the only tier — and carries the row "Used to improve our products: Yes" with no paid alternative. The Gemini API terms spell out what that means: content submitted to unpaid services is used to develop Google's products and machine-learning technologies, and human reviewers may read and annotate inputs and outputs. No amount of money opts gemma-4 traffic out. The free tier's per-minute token quota also gates agentic work: a 20K-token request completes in ~2 seconds, but submitting a second one waited 46–49 seconds in 429 retries before being served (measured 2026-07-28 on both Google API dialects, 3-minute retry ceiling) — and with no paid tier, there is no way to buy that wait down. Ironic footnote: the same price sheet advertises context caching "free of charge" for gemma-4, but the quota makes any cache benefit unobservable — the retry wait dwarfs it. (details: [/findings/index.md](https://inferencecanary.com/findings/index.md#google-no-paid-tier))
- **[yellow · harness] Tool results replayed out of order are mis-paired on most providers** — The chat dialect's contract is that a tool message is matched to its call by tool_call_id, in any order. After two parallel calls, replaying the results reversed swaps the data between them on these providers — the template renders by name, and these providers render positionally, dropping their own dialect's id contract. An async harness that appends results in completion order silently swaps payloads. One provider pairs correctly, proving the fix is implementable provider-side. (details: [/findings/index.md](https://inferencecanary.com/findings/index.md#tool-results-out-of-order))

