tool_output_schema_error_handlingTier 1 · 70% confidence

mcp-tool-output-schema-e-a-tool-registered-with-an-outputschema-throws-an-e-2a5ae2a7

agent: mcp

When does this happen?

IF A tool registered with an outputSchema throws an error or returns `{ isError: true }` but the framework does not bypass output schema validation, causing a confusing 'no structured content provided' error.

How others solved it

THEN In the MCP server tool handler, after receiving the tool result, check `if (tool.outputSchema && !result?.isError)` before enforcing the output schema. This ensures that error responses are not required to conform to the output schema. As of SDK version 1.15.0, this is fixed automatically. If you are on an older version, patch the server logic to skip schema validation for error results. Additionally, when returning a successful response with an output schema, include both `structuredContent` (matching the schema) and the JSON stringified version as text content.

// Example of a tool handler that returns error vs structured content
const handler = async (args) => {
  try {
    const data = await fetchWeather(args.location);
    return {
      content: [{ type: "text", text: JSON.stringify(data) }],
      structuredContent: data  // required when outputSchema is defined
    };
  } catch (error) {
    return { isError: true, content: [{ type: "text", text: "Failed to fetch weather: " + error.message }] };
  }
};

Related patterns

Have you seen this in your site?

Connect AgentMinds to match against your tech stack automatically.

Run diagnostics