✓ PASS
pydantic-ai 2.61.0
tools.parallel-calls · gemini
Requirements
| Id | Level | Status | Evidence |
|---|---|---|---|
| calls-reported | MUST | SATISFIED | tool_calls[0] id="call_120847", name="get_weather", args={"city": "São Paulo"}, parsed=true; truth id="call_120847", name="get_weather", args={"city": "São Paulo"}, parsed=true; tool_calls[1] id="call_120848", name="get_weather", args={"city": "Zürich"}, parsed=true; truth id="call_120848", name="get_weather", args={"city": "Zürich"}, parsed=true |
What the provider sent
- Finish
- tool_calls
- Raw finish
- STOP
- Text
null
- Tool calls
[ { "arguments": { "city": "São Paulo" }, "arguments_parsed_ok": true, "arguments_raw": "{\"city\":\"São Paulo\"}", "id": "call_120847", "name": "get_weather" }, { "arguments": { "city": "Zürich" }, "arguments_parsed_ok": true, "arguments_raw": "{\"city\":\"Zürich\"}", "id": "call_120848", "name": "get_weather" } ]- Usage
{ "alternatives": {}, "cached_input": null, "input": 69, "output": 34, "raw": { "candidatesTokenCount": 34, "promptTokenCount": 69, "promptTokensDetails": [ { "modality": "TEXT", "tokenCount": 69 } ], "serviceTier": "standard", "totalTokenCount": 103 }, "reasoning": null, "total": 103 }- Stream completed
null
- Error
null
Wire excerpt
status: 200
content-type: application/json; charset=UTF-8
body (json):
{
"candidates": [
{
"content": {
"parts": [
{
"functionCall": {
"name": "get_weather",
"args": {
"city": "São Paulo"
},
"id": "call_120847"
},
"thoughtSignature": "EmAKXgFpFH0TucStVhN+6mgGthmi4ZTSeXOraFjbeCmsoaavB5dIA0B5vGZy5k0Pzv8P83Tu07mHaNUyxKlTdDTX4/jln5bEXkbPUr0u5/9V2FRkpP2krwRNuCvFaArPNjk="
},
{
"functionCall": {
"name": "get_weather",
"args": {
"city": "Zürich"
},
"id": "call_120848"
}
}
],
"role": "model"
},
"finishReason": "STOP",
"index": 0,
"finishMessage": "Model generated function call(s)."
}
],
"usageMetadata": {
"promptTokenCount": 69,
"candidatesTokenCount": 34,
"totalTokenCount": 103,
"promptTokensDetails": [
{
"modality": "TEXT",
"tokenCount": 69
}
],
"serviceTier": "standard"
},
"modelVersion": "gemini-3.5-flash-lite",
"responseId": "jQTOasLtM62a9MoPzJKqyAg"
}What the library reported
- Outcome
- returned
- Finish
{ "raw": "STOP", "source": "ModelResponse.finish_reason", "surface": "primary", "value": "stop" }- Text
- Value
null
- Surface
- absent
- Tool calls
[ { "arguments": { "city": "São Paulo" }, "arguments_parsed_ok": true, "arguments_raw": "{\"city\":\"São Paulo\"}", "id": "call_120847", "name": "get_weather" }, { "arguments": { "city": "Zürich" }, "arguments_parsed_ok": true, "arguments_raw": "{\"city\":\"Zürich\"}", "id": "call_120848", "name": "get_weather" } ]- Usage
{ "cached_input": 0, "input": 69, "output": 34, "reasoning": 0, "surface": { "cached_input": "primary", "input": "primary", "output": "primary", "reasoning": "primary", "total": "primary" }, "total": 103 }- Stream
{ "chunks_seen": null, "completed": null, "used": false }- Error
null
- Unsupported reason
null
Full observation JSON
{
"elapsed_ms": 307.4843334034085,
"error": null,
"finish": {
"raw": "STOP",
"source": "ModelResponse.finish_reason",
"surface": "primary",
"value": "stop"
},
"format": "wiretruth.observation/v1",
"library": {
"api": "Agent.run",
"language": "python",
"name": "pydantic-ai",
"version": "2.61.0"
},
"notes": [],
"outcome": "returned",
"stream": {
"chunks_seen": null,
"completed": null,
"used": false
},
"structured": {
"attempted": false,
"returned_as_success": false,
"value": null
},
"text": {
"surface": "absent",
"value": null
},
"tool_calls": [
{
"arguments": {
"city": "São Paulo"
},
"arguments_parsed_ok": true,
"arguments_raw": "{\"city\":\"São Paulo\"}",
"id": "call_120847",
"name": "get_weather"
},
{
"arguments": {
"city": "Zürich"
},
"arguments_parsed_ok": true,
"arguments_raw": "{\"city\":\"Zürich\"}",
"id": "call_120848",
"name": "get_weather"
}
],
"unsupported_reason": null,
"usage": {
"cached_input": 0,
"input": 69,
"output": 34,
"reasoning": 0,
"surface": {
"cached_input": "primary",
"input": "primary",
"output": "primary",
"reasoning": "primary",
"total": "primary"
},
"total": 103
}
}Fixture
recorded gemini/tools.parallel-calls
| Provenance | Value |
|---|---|
| Recorded at | 2026-10-13T10:14:37Z |
| Requested model | gemini-3.5-flash-lite |
| Returned model | gemini-3.5-flash-lite |
| CI run | https://github.com/kartsan03/wiretruth/actions/runs/38381941285 |
Reproduce
wiretruth serve gemini/tools.parallel-callsPlain-library snippet from the shim manifest.
GoogleModel(model, provider=GoogleProvider(base_url=WIRETRUTH_BASE_URL_GEMINI, api_key=WIRETRUTH_API_KEY)); host rootUpstream
No matching upstream report.
History
| Version | Grade |
|---|---|
| 2.61.0 | ✓ PASS |
| 2.56.0 | ✓ PASS |