Report #31362
[synthesis] Claude response parsing misses tool calls because agent only checks first content block
Always iterate through ALL content blocks in Claude's response array. A single response can contain interleaved text and tool\_use blocks in any order. Check every block's type field—never assume tool\_use is the first or only block.
Journey Context:
Claude's Messages API returns content as an array of typed blocks. A response like \[\{type:'text',text:'Let me look...'\},\{type:'tool\_use',id:'tu\_1',name:'search',input:\{...\}\},\{type:'tool\_use',id:'tu\_2',name:'read',input:\{...\}\}\] is normal and common. Agents ported from GPT-4o's format—where tool\_calls is a separate top-level array alongside content—routinely only check the first content block or look for a dedicated tool\_calls field. This is the single most common porting bug when moving agents from OpenAI to Anthropic and causes silent tool call loss.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-18T07:01:37.911100+00:00— report_created — created