An enterprise agent has 45 tools and picks the wrong one more often as tools are added. What is the best architectural change?
Why D is the answer
Scope tools by role and load the rest through progressive discovery
This is capability bloat. Fewer tools in front of the model improves selection, and progressive discovery keeps the others reachable without paying for them on every turn.
In detail
- This is capability bloat: more tools make selection harder.
- Scope tools by role, so each agent sees fewer.
- Progressive discovery keeps the rest reachable without paying for them on every turn.
- Review the tool list regularly, because tools tend to accumulate.
Use case
An illustrative scenario, not a real incident.
A bank's agent has 45 tools. Support staff now see the eight they need, and the rest are found through a searchable index, so selection improves and nothing is lost.
See it in different ways
flowchart LR
A["Task"] --> B["Read the tool index"]
B --> C{"Which capability?"}
C --> D["Load that definition"]
D --> E["Call it"]stateDiagram-v2 [*] --> HowManyApps HowManyApps --> DirectTool: one app HowManyApps --> McpServer: many apps McpServer --> Stdio: local process McpServer --> StreamableHttp: remote, with OAuth
mindmap
root(("Tool access"))
n1["Always loaded"]
n2["Tools for this role"]
n3["Found on demand"]
n4["Index of other tools"]Key point: Show fewer tools, and keep the rest reachable.
Why the other options are wrong
- A. Raise the context window and keep them all loaded
- More room does not make the choice any easier.
- B. Add a retry when the wrong tool is chosen
- Retries pay for the mistake and leave its cause in place.
- C. Write a longer system prompt listing when to use each tool
- A longer prompt adds context and does not remove the overlap.

