fix: MCP tool compatibility with OpenAI strict mode #255
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
Fixes MCP tools (like
mcp-server-fetch) failing with OpenAI providers due to strict mode schema validation.Problem
OpenAI defaults to
strict=truefor function tools, which enforces:formatfields (e.g.,"format": "uri"is rejected)requiredarrayMCP tools use standard JSON Schema conventions where optional parameters with defaults are NOT in
required. This caused errors like:Solution
Set
strict=falsefor MCP tools, which bypasses OpenAI's strict mode validation and allows standard JSON Schema conventions.This is the minimal fix - we intentionally don't strip
formatfields from schemas becausestrict=falsemakes OpenAI accept them as-is.Changes
strictparameter toToolclass constructorstrict=falsefor MCP tools inTool.from_mcp()rm_param_titles()properly recursive (fixes latent bug with nested schemas)Testing
ChatOpenAI,ChatOpenAICompletions, andChatAnthropicmcp-server-fetchRelated