Learn · Tool design & MCP · CCAR-F task 2.3
Distributing tools and tool_choice
Give each agent only the tools its role needs, constrain generic tools, and use tool_choice when a step must happen.
Key ideas
- Too many tools degrade selection: the guide contrasts 18 tools with 4-5.
- Scope tools per role; agents misuse tools that are outside their job.
- Give a narrowly scoped tool (such as read_source) instead of the full toolset when an agent needs one capability.
- Constrain generic tools: load_document that validates URLs instead of open-ended fetch_url.
- tool_choice: auto (default), any, tool + name, none; force the first step when order matters.
- Current flagship models reject any and tool with a 400; use auto with strict: true or structured outputs.
- disable_parallel_tool_use: true, set inside tool_choice, limits Claude to one tool call per turn.
Worked example: An insurance claims pipeline
Intake, assessment and payout agents all shared one 16-tool list, and the assessment agent sometimes triggered payments. Giving each agent only its role's tools (intake: read_claim, request_documents; assessment: read_claim, policy_lookup; payout: issue_payment behind an approval check) removed the misuse and made tool choice easier.
Exam traps
- Giving every agent every tool 'for flexibility'.
- Fixing a latency problem by over-provisioning the synthesis agent with all search tools.
- Assuming tool_choice any or tool works on every model; current flagships return 400.
- Using an open-ended fetch tool where a validated, purpose-specific one would do.
Official docs
Practise CCAR-F questions · Next lesson: MCP servers in Claude Code and agents