Tools are how agents affect the world. Agents without tools are chatbots. Agents with tools can affect the world.
Chapter Overview
This chapter explores how agents interact with tools—from design principles to scaling patterns. Tool use is where the agent's reasoning meets the real world.
What You'll Learn
- Tool Design: Principles for creating well-designed tools that agents can use effectively
- Tool Selection and Routing: How agents decide which tool to use and what causes selection failures
- Tool Restrictions and Security: Using tool access controls as security boundaries
- Scaling Tool Use: Patterns for managing large numbers of tools without overwhelming context
- Skills and Meta-Tools: How skills blur the boundary between tools and prompts
Your Mental Model
Tools extend the agent's capabilities beyond pure reasoning. Think of them as:
- Hands: Writing/action tools that modify the world
- Senses: Reading/observation tools that gather information
- Skills: Temporary behavioral modifications that change how the agent reasons
The boundary between what the model does (reasoning) and what tools do (actions) defines the agent's architecture.
Key Insights
Communication and Coordination
[2025-12-08]: For multi-agent systems, providing CRUD operations on a shared communications database via tool calling enables effective collaboration. Agents can read what others have written, post updates, and query for relevant context. This is particularly useful for faster-moving, more flexible structures than what GitHub's issue/PR system provides—think of it as giving agents their own Slack or shared scratchpad.
Connections
- To Prompt: Tool descriptions are themselves prompts—see Model-Invoked vs. User-Invoked Prompts
- To Model: Which models are best at tool selection and use?
- To Context: How do tool results become context for next steps? See Progressive Disclosure
- To Cost and Latency: Token cost models differ by feature type—tools vs. Skills vs. subagents vs. MCP
- To Google ADK: MCP deployment patterns and tool filtering at runtime