-
Notifications
You must be signed in to change notification settings - Fork 508
Open
Description
Bug Description
When using MCP tools with the CreateModelResponseQuery API, the library throws a DecodingError when processing MCP tool call events.
Error Details
valueNotFound(OpenAI.Components.Schemas.OutputItem, Swift.DecodingError.Context(codingPath: [CodingKeys(stringValue: "item", intValue: nil)], debugDescription: "The anyOf structure did not decode into any child schema."))
Cannot initialize _TypePayload from invalid String value mcp_call
Root Cause
The server sends OutputItem with type "mcp_call" (with underscore), but the OutputItem decoder in ResponseOutputItemDoneEvent fails to decode this properly.
Steps to Reproduce
- Configure an MCP tool using
Tool.mcpTool() - Send a query using
CreateModelResponseQuerywith the MCP tool - When the model invokes the MCP tool, the stream processing fails with a DecodingError
Expected Behavior
The library should properly decode MCP tool call events without throwing errors.
Code Example
let mcpTool = Tool.mcpTool(
Components.Schemas.MCPTool(
_type: .mcp,
serverLabel: "playwright-mcp",
serverUrl: "https://example.com/mcp",
headers: Components.Schemas.MCPTool.HeadersPayload(additionalProperties: ["Authorization": "Bearer token"]),
allowedTools: .case1(["browser_navigate"]),
requireApproval: .case2(.never)
)
)
let query = CreateModelResponseQuery(
input: .inputItemList(inputItems),
model: "gpt-5-2025-08-07",
stream: true,
tools: [mcpTool]
)
let stream: AsyncThrowingStream<ResponseStreamEvent, Error> = client.responses.createResponseStreaming(query: query)
// This fails when MCP tool is called
for try await event in stream {
// Processing fails with DecodingError
}Environment
- Library Version: Latest main branch
- Swift Version: 5.x
- Platform: iOS
- Xcode Version: Latest
Workaround
Currently catching and ignoring the DecodingError allows the stream to continue, but this is not ideal as it may hide other legitimate errors.
Metadata
Metadata
Assignees
Labels
No labels