From e6e8d9a24897e4c9ef08b72df20fabbf8ef27f38 Mon Sep 17 00:00:00 2001 From: Allan Almeida Date: Sun, 19 Apr 2026 19:45:01 -0300 Subject: [PATCH] feat: add OPENCLAUDE_DISABLE_STRICT_TOOLS env var to opt out of strict MCP tool schema normalization (#770) When set, disables strict schema normalization for non-Gemini providers. Useful for OpenAI-compatible endpoints that reject MCP tools with complex optional params (e.g. list[dict]) with "Extra required key ... supplied" errors. --- src/services/api/openaiShim.ts | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/services/api/openaiShim.ts b/src/services/api/openaiShim.ts index c263a093..5fde76e6 100644 --- a/src/services/api/openaiShim.ts +++ b/src/services/api/openaiShim.ts @@ -607,7 +607,10 @@ function convertTools( function: { name: t.name, description: t.description ?? '', - parameters: normalizeSchemaForOpenAI(schema, !isGemini), + parameters: normalizeSchemaForOpenAI( + schema, + !isGemini && !isEnvTruthy(process.env.OPENCLAUDE_DISABLE_STRICT_TOOLS), + ), }, } }) @@ -1657,7 +1660,7 @@ class OpenAIShimMessages { } catch (error) { throwClassifiedTransportError(error, responsesUrl) } - + if (responsesResponse.ok) { return responsesResponse }