Skip to main content
HTTP status: 400

Error message

tool_use_id(s) refer to server-resolved calls (no caller output expected): {ids}

When this error occurs

Each tool call the model emits is routed by the shape of its wire name:
  • Dash-prefixed ({alias}-{tool}) → MCP-resolved. The platform calls the MCP server inline and persists the result. These calls never appear in pending_tool_calls.
  • Dash-free ({tool}) → caller-declared. The run pauses at requires_action and the caller posts the output as tool_outputs on the next run.
This error means a tool_outputs[].tool_use_id references an assistant turn block whose name contains a dash — an MCP call the platform already settled. There’s nothing for the caller to contribute.

How to fix

Filter your tool_outputs to only the ids whose corresponding name in the prior requires_action response is dash-free. The pending_tool_calls list from GET /agents/runs/{id} already excludes MCP-resolved ids — copy from there rather than re-deriving from the message stream.