I stopped letting one agent do everything and my tool calls got way less cursed
Description and use
<p>I realized I was asking one poor model to do four jobs badly.</p> <ol> <li>Plan the task</li> <li>Pick the right tool</li> <li>Recover from failures</li> <li>Write a clean final answer like nothing exploded</li> </ol> <p>That setup looks great in a demo.</p> <p>In production, it’s how you get a Slack bot that says “done” after failing on step two.</p> <p>I’ve seen the same failure pattern in n8n, LangChain, OpenAI function-calling loops, and custom Python agents:</p> <ul> <li>one giant GPT node with access to everything</li> <li>retries handled by vibes</li> <li>broken API responses treated
Problem
<p>I realized I was asking one poor model to do four jobs badly.</p> <ol> <li>Plan the task</li> <li>Pick the right tool</li> <li>Recover from failures</li> <li>Write a clean final answer like nothing exploded</li> </ol> <p>That setup looks great in a demo.</p> <p>In production, it’s how you get a Slack bot that says “done” after failing on step two.</p> <p>I’ve seen the same failure pattern in n8n, LangChain, OpenAI function-calling loops, and custom Python agents:</p> <ul> <li>one giant GPT node with access to everything</li> <li>retries handled by vibes</li> <li>broken API responses treated
Outcome
<p>I realized I was asking one poor model to do four jobs badly.</p> <ol> <li>Plan the task</li> <li>Pick the right tool</li> <li>Recover from failures</li> <li>Write a clean final answer like nothing exploded</li> </ol> <p>That setup looks great in a demo.</p> <p>In production, it’s how you get a Slack bot that says “done” after failing on step two.</p> <p>I’ve seen the same failure pattern in n8n, LangChain, OpenAI function-calling loops, and custom Python agents:</p> <ul> <li>one giant GPT node with access to everything</li> <li>retries handled by vibes</li> <li>broken API responses treated
Evidence
I stopped letting one agent do everything and my tool calls got way less cursed
- Record date: 2026-10-02T15:55:48.126Z