Tool selection degrades when capabilities overlap, names are vague, or the agent sees many irrelevant actions on every turn. The first fix is interface quality: clear semantic names, precise descriptions, strongly typed schemas, and non-overlapping responsibilities. The second fix is to stop exposing everything at once.
The model’s effective action space should be as small as the current task allows.
Dynamic tool scoping
Some tool selection can be deterministic. If the user is on a Salesforce opportunity page, the application may already know that Salesforce tools are relevant. If the user’s role cannot post to company-wide Slack channels, those tools should never be exposed. Dynamic selection does not have to be an LLM decision.
Semantic routing when context is ambiguous
If the request itself determines the domain, a constrained classifier can return a structured route such as {domain: salesforce}. The classification is probabilistic; code then deterministically exposes the matching capability set. Evaluate that router separately with labeled cases and a confusion matrix.
Do not force multi-intent work into one route
A request like “update the opportunity and tell the team” spans Salesforce and Slack. The architecture should support a structured multi-domain plan rather than forcing the router to choose one winner. Clarification is for genuine ambiguity, not for work that is simply composite.
When specialist agents are justified
Parallel execution is only one reason to split agents. Better reasons include materially different instructions, context, permissions, tools, models, risk profiles, or evaluation criteria. Start with one capable agent; split when specialization creates a real boundary.
Agent-as-tool versus handoff
If a specialist should perform a subtask while the parent retains conversational ownership, use an agent-as-tool pattern. If the specialist should take over the interaction and become the active owner, use a handoff. The distinction is about control and user experience, not just code organization.
PFPLabs takeaways
- Reduce effective action space. Do not make the model choose among irrelevant tools.
- Deterministic context can scope tools before any LLM routing.
- Router ≠ planner. Composite requests need multi-step plans.
- Split agents for responsibility boundaries, not novelty.
- Use evals to measure route, tool, and argument accuracy separately. Different failure layers need different fixes.
