Gemini 3.0 Flash not able to respond after executing tool calls such as booking appointments

Hi,

My Voice Agent have recently been updated to Gemini 3.0 Flash, having previously used the Gemini 2.5 Flash model. All of a sudden, the agent will not respond after booking appointments in Google Calendar (using Cal. com). This agent is created on Retell AI platform, however I suspect the problem lies with the Gemini 3.0 Flash model as it works fine on the 2.5 Flash model. My question is: Does anyone have the same problem, or does anyone know what could be the reason for this issue?

Any response is highly appreciated!

Hi @Ol96 ,

Thanks for reaching out to us. Are you seeing any specific errors with Gemini 3.0 Flash in your logs ?

Hi,

There is no error message in the call logs. Everything seems to be working fine, however somehow the agent forgets to respond. Maybe it thinks the job is done and the call is over, or perhaps there is something wrong with the response format from Cal. Seems strange when 2.5 Flash is working fine with the exact same prompt and setup.

@Sonali_Kumari1 please see my reply above

Facing the same issue, after tool call the agent stops responding when token stream mode is turned on.

After the tool call, its just giving the stop event that I can see in the ADK web UI

It responds when the token stream mode is turned off though.

@Ol96 Could you please provide the JSON response from your logs when the call happens?

Hi @Kartik_Saxena , Could you please verify if thought_signature field is being passed back to the API along with the tool result? gemini-3-pro-preview and gemini-3-flash-preview relies on the thought_signature to process the tool’s output correctly in the next turn.

Hi,

Below is the summary in json format. I actually do see there is an error code 400. Missing thought signature. Can you tell me about this, and how to fix? Appreciate your response!

{
“call_id”: “call_34b96f97740f0c7627301659521”,
“events”: [
{
“timestamp”: “2026-01-03T11:50:49.533”,
“type”: “call_start”
},
{
“timestamp”: “2026-01-03T11:51:08.506”,
“type”: “tool_call”,
“tool”: “check_availability_undersokelse”,
“arguments”: {
“start_time”: “2026-01-05T00:00:00”,
“end_time”: “2026-01-11T23:59:00”,
“execution_message”: “Please give me a moment while I check the calendar.”
}
},
{
“timestamp”: “2026-01-03T11:51:09.267”,
“type”: “tool_result”,
“tool”: “check_availability_undersokelse”,
“result”: {
“availability_for_selected_time”: [
{
“date”: “2026-01-05”,
“availability_range”: [“08:00–20:00”]
},
{
“date”: “2026-01-06”,
“availability_range”: [“08:00–20:00”]
},
{
“date”: “2026-01-07”,
“availability_range”: [“08:00–20:00”]
},
{
“date”: “2026-01-08”,
“availability_range”: [“08:00–12:00”, “14:00–16:00”]
},
{
“date”: “2026-01-09”,
“availability_range”: [“08:00–16:00”]
}
]
}
},
{
“timestamp”: “2026-01-03T11:52:13.994”,
“type”: “tool_call”,
“tool”: “book_appointment_undersokelse”,
“arguments”: {
“name”: “Adrian Tate”,
“email”: “adrian@example.com”,
“attendeePhoneNumber”: “+4794281242”,
“title”: “Examination – Adrian Tate”,
“time”: “2026-01-05T08:00:00”,
“execution_message”: “I will book the appointment for you now. One moment please.”
}
},
{
“timestamp”: “2026-01-03T11:52:13.996”,
“type”: “tool_call”,
“tool”: “extract_user_details”,
“arguments”: null
},
{
“timestamp”: “2026-01-03T11:52:13.996”,
“type”: “tool_result”,
“tool”: “extract_user_details”,
“result”: {
“status”: “dynamic variables extracted successfully”,
“variables”: {
“name”: “Adrian Tate”,
“service”: “Examination”,
“time”: “05.01.2026 - 08:00”,
“phonenumber”: 94281242,
“info”: “No additional information provided.”
}
}
},
{
“timestamp”: “2026-01-03T11:52:16.696”,
“type”: “tool_result”,
“tool”: “book_appointment_undersokelse”,
“result”: {
“status”: “Successfully booked an appointment.”
}
},
{
“timestamp”: “2026-01-03T11:52:17.585”,
“type”: “error”,
“source”: “LLM”,
“error”: {
“code”: 400,
“status”: “INVALID_ARGUMENT”,
“message”: “Function call default_api:extract_user_details is missing required thought_signature
}
},
{
“timestamp”: “2026-01-03T11:52:21.119”,
“type”: “error”,
“source”: “LLM”,
“error”: {
“code”: 400,
“status”: “INVALID_ARGUMENT”,
“message”: “Same error repeated – no valid LLM response returned”
}
},
{
“timestamp”: “2026-01-03T11:52:27.555”,
“type”: “error”,
“source”: “LLM”,
“error”: {
“code”: 400,
“status”: “INVALID_ARGUMENT”,
“message”: “Same error repeated – no valid LLM response returned”
}
},
{
“timestamp”: “2026-01-03T11:52:33.861”,
“type”: “call_end”
}
]
}

Hi @Ol96 ,

Thanks for sharing the full JSON response. The error message indicates that tool”: “extract_user_details” is missing required field thought_signature but it received “arguments”: null . As per the official documentation, When using Gemini 3 models, you must pass back thought signatures during function calling, otherwise you will get a validation error (4xx status code).

Please verify the JSON schema for the extract_user_details function. Ensure that thought_signature is correctly described and handle the Null Arguments. At least pass an object {} containing the required fields.

Please refer to this documentation on Thought Signatures for more details: https://ai.google.dev/gemini-api/docs/thought-signatures#function-calling