Design tools that agents can use effectively, including when to reduce tool complexity.
This skill covers the principles and patterns for designing tool interfaces that language model agents can discover, understand, and use correctly. Unlike traditional APIs designed for developers, agent tools must account for how models reason about intent and generate calls from natural language.
The skill includes both additive guidance (how to design good tools) and reductive guidance (when fewer tools outperform sophisticated architectures).
tool-design/
├── SKILL.md # Main skill instructions
├── README.md # This file
├── references/
│ ├── best_practices.md # Detailed design guidelines
│ └── architectural_reduction.md # Case study on tool minimalism
└── scripts/
└── description_generator.py # Tool description utilities
If a human engineer cannot definitively say which tool should be used in a given situation, an agent cannot be expected to do better. Prefer single comprehensive tools over multiple narrow tools with overlapping functionality.
The consolidation principle taken to its logical extreme. Production evidence shows that reducing from 17 specialized tools to 2 primitive tools (bash command execution + SQL) achieved:
- 3.5x faster execution
- 37% fewer tokens
- 100% success rate (up from 80%)
The file system agent pattern uses standard Unix utilities (grep, cat, find, ls) instead of custom exploration tools.
Tool descriptions are prompt engineering that shapes agent behavior. Effective descriptions answer:
- What does the tool do?
- When should it be used?
- What inputs does it accept?
- What does it return?
- Creating new tools for agent systems
- Debugging tool-related failures
- Optimizing existing tool sets
- Evaluating whether to add or remove tools
- Standardizing tool conventions
def get_customer(customer_id: str, format: str = "concise"):
"""
Retrieve customer information by ID.
Use when:
- User asks about specific customer details
- Need customer context for decision-making
Args:
customer_id: Format "CUST-######" (e.g., "CUST-000001")
format: "concise" for key fields, "detailed" for complete record
Returns:
Customer object with requested fields
Errors:
NOT_FOUND: Customer ID not found
INVALID_FORMAT: ID must match CUST-###### pattern
"""def search(query):
"""Search the database."""
passProblems: vague name, missing parameters, no return description, no usage context, no error handling.
- Write descriptions that answer what, when, and what returns
- Use consolidation to reduce ambiguity
- Implement response format options for token efficiency
- Design error messages for agent recovery
- Question whether each tool enables or constrains the model
- Prefer primitive, general-purpose tools over specialized wrappers
- Invest in documentation quality over tooling sophistication
- Build minimal architectures that benefit from model improvements
context-fundamentals- How tools interact with contextmulti-agent-patterns- Specialized tools per agentevaluation- Evaluating tool effectiveness
- SKILL.md - Full skill instructions
- Best Practices - Detailed guidelines
- Architectural Reduction Case Study - Production evidence
- Created: 2025-12-20
- Last Updated: 2025-12-23
- Version: 1.1.0