Fewer tools, better calls: the function menu you overloaded

A team handed the model many overlapping tools and watched call accuracy fall as it picked the wrong one.

Fewer tools, better calls: the function menu you overloaded

A staff engineer building an internal operations agent told me its reliability had gotten worse as the agent got more capable. Every time a team asked for a new action, he added a tool. The agent grew to a couple dozen functions. Somewhere along the way the model started calling the wrong ones. It would pick a search tool when it needed the lookup tool, or use the general updater when a specific one existed. The agent could do more than ever and got the choice wrong more than ever.

More tools make the choice harder, not easier

The intuition that adding tools makes the agent more capable is half right. Each tool is a new thing the agent can do. But every tool you add is also a new option the model has to choose against on every turn, and choosing is where the failures live. With a handful of clearly distinct tools, the right choice is usually obvious. With two dozen, several of which overlap, the model faces a genuinely confusing menu, and confusion shows up as wrong picks.

His set had grown organically, which meant it had grown messy. There was a tool to search records and another to find a record, and the difference between them was not clear even to him without thinking. There were three ways to update something, split by a distinction that made sense to the team who requested them and not to a model reading their descriptions cold. Every overlap was a coin flip the model could lose.

Overlap is what actually poisons the calls

The problem was not the raw number of tools so much as the overlap between them. Twenty tools that each do something clearly different are manageable. Twenty tools where five of them could plausibly handle the same request force the model to guess which one you meant, and it guesses wrong a meaningful share of the time. Ambiguity in the menu becomes error in the calls.

When he pulled the failing traces, almost none were the model being incapable. They were the model choosing reasonably among options that were too similar to tell apart. Given a search tool and a find tool with overlapping descriptions, picking the wrong one is not a mistake so much as a bet on an unclear distinction. The fix was not a better model. It was a clearer menu.

Trim and separate the tool set

Reliability came from making the set smaller and each tool distinct.

  • Cut tools that overlap. Where two functions do nearly the same thing, merge them or remove one. Every overlap you eliminate is a wrong choice you prevent.
  • Make each tool do one clear thing. A tool with a sharp, single purpose is easy for the model to select correctly. A catch-all is easy to misfire.
  • Separate them in their descriptions. When two tools have to coexist, spell out the boundary between them so the model knows exactly when each applies.
  • Expose only what the current task needs. You do not have to show the model every tool at once. Narrowing the set to what a given task could plausibly need shrinks the room for a wrong pick.

He ended with fewer tools than he started, each one distinct, and the wrong-tool calls mostly disappeared. The agent could technically do a little less in one step and got what it did right far more often.

How we approach it at Density Labs

In the AI Opportunity Assessment, our fixed two-week engagement priced at $2,500, we look at the tool set as a design surface rather than a pile of capabilities. When call accuracy is low, the cause is often a menu that grew overlapping and ambiguous, and the fix is to trim and sharpen it rather than to reach for a bigger model. A smaller, well-separated set of tools produces more reliable calls than a large one where several options blur together.

Reliability comes from a clear menu. Cut the overlap and the model stops guessing.