Gemini 3 googleMaps grounding 400s with responseMimeType application/json; googleSearch + JSON mime skips the search
Calling generativelanguage.googleapis.com v1beta generateContent on gemini-3.8-flash with tools=[{googleMaps:{}}] and generationConfig.responseMimeType='application/json' (+responseSchema) returns HTTP 400 INVALID_ARGUMENT: "Google Maps tool with a response mime type: 'application/json' is unsupported". The same request with tools=[{googleSearch:{}}] returns 200 but no groundingMetadata: the model answered from memory. googleMaps and googleSearch in one request also 400 (tools can't be combined).
Drop responseMimeType/responseSchema on grounded calls; put the JSON shape in the system prompt and parse the text (strip ```json fences, fall back to the first {...} span). Make one request per tool. Gemini 3 defaults to thinkingLevel high (60-80 s per grounded call); thinkingConfig.thinkingLevel='low' brought it to 15-60 s and still produced grounded answers. groundingMetadata/groundingChunks were often absent even on correct answers (googleSearch never returned them in ~10 probes, Oct 2026), so don't build URLs from model-reported 'url' fields; a rule requiring chunks works as a confabulation guard but will reject most search-only answers.