Goose + Gemini 400 Bad Request with MCP extensions: 'only enum and date-time are supported for STRING type'
In Goose v1.0.15 on macOS Ventura with Google AI Studio Gemini models (
gemini-2.0-flash,gemini-2.5-pro-exp-03-25), enabling the Fetch extension makes every response fail with:Request failed: Request failed with status: 400 Bad Request. Message: * GenerateContentRequest.tools[0].function_declarations[0].parameters.properties[url].format: only 'enum' and 'date-time' are supported for STRING type. Anthropic and OpenAI models work fine. Is this a known bug and how do I fix it?Originally asked on GitHub: https://github.com/aaif-goose/goose/issues/1863
5 answers
Fixed: a Goose maintainer closed the issue, saying the bug was fixed in PR #3328; the thread doesn't state which release contains the fix.
The 400 happens when Goose passes an MCP extension's function declarations to Gemini and Gemini rejects them. The thread shows two different rejection messages: a
formatfield on a string property (url) where Gemini only acceptsenumanddate-time, andInvalid function namefor declarations that don't start with a letter/underscore and use only alphanumerics, underscores, dots, or dashes (max 64 chars). The reporter suspected the Gemini API is stricter about function-call types than Anthropic or OpenAI, which worked in the same setup. The same error was reported with a custom SSE-based MCP server (goose 1.0.16), mcp-atlassian (goose 1.0.17), sentry-mcp withgemini-2.5-flash, and reproduced in Google's gemini-cli (google-gemini/gemini-cli#2237), so it isn't specific to the Fetch extension or to Goose.Workaround that worked in the thread: disable the extension and Gemini responds normally again. The reporter also confirmed the same
mcp-server-fetchserver works with Gemini under Cline, so the MCP server itself isn't the problem. General advice: update to a Goose build that includes PR #3328, or keep MCP extensions disabled while using Gemini models.Did this work for you?What a GitHub user tried on GitHub (Worked)
The reporter tried the same
mcp-server-fetchMCP server with Gemini in Cline; the model responded correctly and could invoke the fetch MCP when asked, so the server itself works with Gemini in another client.Source: https://github.com/aaif-goose/goose/issues/1863 (opens external site)
Did this work for you?What @dsummersl tried on GitHub (Worked)
A user disabled the Fetch extension in Goose while using Gemini; after that Gemini responded normally again.
Source: https://github.com/aaif-goose/goose/issues/1863#issuecomment-2872614642 (opens external site)
Did this work for you?What @lxe tried on GitHub (Didn't work)
A user on Goose 1.0.16 reproduced the same 400 with a custom SSE-based MCP server; Anthropic models on the same setup worked fine.
Source: https://github.com/aaif-goose/goose/issues/1863#issuecomment-2756056653 (opens external site)
Did this work for you?What @qorpus tried on GitHub (Didn't work)
A user on Goose 1.0.17 reproduced the same 400 with mcp-atlassian and Gemini models; Claude models worked perfectly.
Source: https://github.com/aaif-goose/goose/issues/1863#issuecomment-2784751064 (opens external site)
Did this work for you?
Related questions
- How to use an OpenAI-compatible provider (Helicone, Perplexity, LiteLLM) with goose?
- Goose + GitHub Copilot: Claude models fail with 'internal server error' during goose configure
- Goose stops on API rate limits (Anthropic/Gemini 429) — built-in throttle or workaround?
- Goose GitHub Copilot provider asks for GITHUB_COPILOT_TOKEN instead of device login — what token?
- Goose 1.6.0: "Error: Unsupported operation: streaming not implemented" with Ollama