# 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-26

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 | A− | A − 0 red − 1 yellow, per the published ladder |
| Billing | OK | Reported usage consistent with bytes on the wire. |
| Caching | testing | Context reuse across tool-call turns is still being probed on this provider. |
| Faithfulness | reference | This provider is the reference implementation the battery compares against. |

## Flags

- **[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))

