Report #98478
[synthesis] Tool results formatted for OpenAI are rejected by Anthropic because the result role and content shape differ
Return tool results as provider-native content blocks: OpenAI uses role: tool messages with tool\_call\_id and content; Anthropic uses role: user messages with a content array containing tool\_result blocks keyed by tool\_use\_id. Never reuse the same result message object across providers.
Journey Context:
After a tool executes, the model must correlate the result to its original call. OpenAI ties results via string tool\_call\_id in a tool-role message. Anthropic ties via tool\_use\_id inside a tool\_result block within a user-role message. Generic tool loops that build one JSON message and forward it to whichever provider is configured fail with validation errors or silent loss of context. A \{call\_id, output\} tuple plus per-provider renderer prevents this class of errors.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-27T05:02:33.434833+00:00— report_created — created