에이전트당 도구 수
4~5개가 최적이며, 18개 이상이면 선택의 신뢰도가 떨어집니다
에이전트당 도구 수은(는) CoddyKit의 무료 Claude Architect 강의입니다. 이것은 4개 중 1번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Claude Architect 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Claude Architect 강의에는 총 4개의 강의가 포함되어 있습니다.
이 강의의 일부는 아직 번역되지 않았으며 영어로 표시됩니다.
The Selection Problem
When you give an agent a set of tools, the model has to do something subtle on every turn: read all the tool descriptions and pick the right one for the current step.
This is a selection task. The more options you add, the harder that choice becomes. A focused toolset keeps selection sharp; an overloaded one makes the model hesitate, mis-route, or grab the wrong tool.
This lesson answers a deceptively simple question: how many tools should one agent hold?
The Rule of Thumb
The practical sweet spot is 4-5 tools per agent. At this size the model can reliably reason about which tool fits each step.
As the count climbs, selection reliability degrades. By around 18+ tools on a single agent, the model starts confusing similar options and choosing poorly. More tools does NOT mean more capability — past a point it means less reliable capability.
- 4-5 tools → optimal selection
- 18+ tools → degraded selection reliability
A Well-Scoped Agent
Here is a support agent with a tight, role-scoped toolset. Four tools, each with a clear job: verify the customer, look up their order, process a refund, and escalate to a human.
The model never has to wonder which of twenty near-identical tools to call. Each one maps to a distinct intent.
tools = [
{"name": "get_customer", "description": "...", "input_schema": {...}},
{"name": "lookup_order", "description": "...", "input_schema": {...}},
{"name": "process_refund", "description": "...", "input_schema": {...}},
{"name": "escalate_to_human", "description": "...", "input_schema": {...}},
]
response = client.messages.create(
model="claude-sonnet-4-5",
max_tokens=1024,
system="You are a support agent. Verify identity before any refund.",
tools=tools,
messages=messages,
)Descriptions Do the Selecting
An important nuance: the model selects tools primarily from their descriptions, not their names. A good description states the tool's purpose, its return values, input formats with examples, edge cases, and applicability boundaries.
This is why tool count and tool quality interact. Even 5 tools will mis-route if their descriptions overlap or are ambiguous. The more tools you pile on, the more likely two of them sound alike, and the more selection errors you get.
{
"name": "lookup_order",
"description": "Retrieve a single order by its order ID. "
"Input: order_id (string, e.g. 'ORD-10482'). "
"Returns: items, status, total, and ship date. "
"Use AFTER get_customer confirms identity. "
"Does NOT search by email — use lookup_order, not find_orders.",
"input_schema": {
"type": "object",
"properties": {"order_id": {"type": "string"}},
"required": ["order_id"],
},
}What Too Many Tools Looks Like
Imagine cramming an entire department onto one agent: customer tools, order tools, billing tools, inventory tools, shipping tools, analytics tools... twenty-plus entries in one tools array.
Now several of them sound similar — lookup_order, find_orders, get_order_history, search_purchases. The model has to disambiguate on every turn, and its accuracy drops. Too many tools per agent is a recognized anti-pattern, right alongside ambiguous descriptions.
Scope Tools to the Role
The fix is not to make descriptions ever longer — it is to scope tools to the role. Ask: what is THIS agent's job, and what is the minimum set of tools it needs to do it?
A refund agent needs identity, order, refund, and escalation tools. It does not need inventory forecasting or marketing analytics. Trimming irrelevant tools removes distractors and sharpens every remaining selection.
Split With Multi-Agent Architecture
When a task genuinely needs many capabilities, you do not put them all on one agent. You use a hub-and-spoke multi-agent design: a coordinator decomposes the work and delegates to specialized subagents, each with its own narrow toolset.
Twenty tools spread across four subagents (5 each) selects far more reliably than twenty tools on one agent. Remember: subagents do NOT inherit the coordinator's history, so each subagent prompt must carry its own context explicitly.
research_agent = AgentDefinition(
name="research_agent",
description="Searches sources and extracts findings.",
system_prompt="You gather and cite evidence for a sub-question.",
allowed_tools=["web_search", "fetch_page", "extract_quote"],
)
verify_agent = AgentDefinition(
name="verify_agent",
description="Cross-checks claims against sources.",
system_prompt="You validate claims and flag conflicts.",
allowed_tools=["fetch_page", "compare_sources", "flag_conflict"],
)Least Privilege Per Subagent
Splitting tools across subagents brings a bonus: least privilege. Each AgentDefinition declares only the allowed_tools it actually needs.
A read-only research subagent never gets a process_refund or delete tool, so it cannot misfire one. Smaller, role-scoped toolsets are both more reliable (better selection) and more secure (narrower blast radius). One coordinator rule to remember: the coordinator's allowedTools must include "Task" so it can delegate.
Tools vs. Resources in MCP
Not everything an agent needs has to be a Tool. In MCP, server primitives split into three kinds:
- Tools — actions the model invokes
- Resources — read-only data/context like schemas or catalogs
- Prompts — reusable templates
If the model just needs to read a schema or a product catalog, expose it as a Resource, not a Tool. That keeps your tools array lean and reserved for genuine actions — another lever for staying near 4-5 actionable tools.
Built-in Tools Are Already Scoped
Claude Code's built-in toolset is a good model of disciplined scoping. Each tool has one crisp job:
Glob— find files by pattern (e.g.**/*.test.tsx)Grep— search file contentsRead/Write/Edit— load, create, precisely change filesBash— run shell commands
None of them overlap. The model composes them in an incremental flow — Grep entry points, Read files, Grep usages, Read consumers — rather than choosing among redundant options.
# Incremental investigation with non-overlapping tools
Grep "createOrder" # find entry points
Read src/orders/api.ts # load the file
Grep "api.createOrder" # find usages
Read src/checkout/page.ts # load consumersA Practical Allocation Checklist
Before shipping an agent, run this check:
- Is the toolset near 4-5 tools, and well under 18?
- Does each tool map to a distinct intent with a non-overlapping description?
- Are read-only needs modeled as Resources, not Tools?
- If you need more capabilities, can you split into subagents with least-privilege toolsets?
If you are stretching one agent past a dozen tools, that is the signal to decompose — not to write longer descriptions.
Quick Check: Tool Allocation
Apply the rule to a real design decision.
Recap: How Many Tools Per Agent
Key takeaways:
- 4-5 tools per agent is optimal; reliability degrades as you climb, and 18+ tools noticeably hurts selection.
- The model selects from descriptions, so overlapping or ambiguous tools cause misrouting even at small counts.
- Scope tools to the role — trim distractors instead of writing longer descriptions.
- Need more capability? Split into subagents (hub-and-spoke) with least-privilege toolsets; pass context explicitly since subagents don't inherit history.
- Model read-only needs as MCP Resources, not Tools, to keep the
toolsarray lean.
자주 묻는 질문
“에이전트당 도구 수” 강의는 무료인가요?
네 — “에이전트당 도구 수” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Claude Architect 강의 전체를 잠금 해제할 수 있습니다. Claude Architect 강의에는 총 4개의 강의가 포함되어 있습니다.
“에이전트당 도구 수”에서 뭘 배우나요?
4~5개가 최적이며, 18개 이상이면 선택의 신뢰도가 떨어집니다 브라우저에서 직접 실행하는 실습 코드로 Claude Architect을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Claude Architect을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Claude Architect은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 1번째 강의입니다.
“에이전트당 도구 수” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Claude Architect 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Claude Architect 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.