Semantic tool search with embeddings for scalable tool discovery. Enables on-demand tool loading to reduce context usage by 90%+ for large tool libraries.
Scanned 6/10/2026
Install via CLI
openskills install majiayu000/claude-skill-registry---
name: tool-search
description: Semantic tool search with embeddings for scalable tool discovery. Enables on-demand tool loading to reduce context usage by 90%+ for large tool libraries.
version: 1.0
model: sonnet
invoked_by: both
user_invocable: true
tools: [Read, Write, Grep, Glob]
best_practices:
- Use for tool libraries with 10+ tools
- Keep 3-5 most-used tools always loaded
- Use clear, descriptive tool names
- Add system prompt guidance
error_handling: graceful
streaming: supported
---
**References (archive):** [SCAFFOLD_SKILLS_ARCHIVE_MAP.md](../../docs/SCAFFOLD_SKILLS_ARCHIVE_MAP.md) — embedding/semantic tool discovery from everything-claude-code backend-patterns, tdd-workflow.
# Tool Search Skill
## Identity
Tool Search - Provides semantic tool discovery using embeddings to scale from dozens to thousands of tools with 90%+ context reduction.
## Capabilities
- **Semantic Tool Search**: Find relevant tools based on task context
- **Embedding-Based Matching**: Use embeddings for accurate tool discovery
- **On-Demand Loading**: Load tools only when needed
- **Context Efficiency**: 90%+ reduction in tool definition tokens
## The Problem
Traditional tool loading:
- All tools loaded upfront
- 58 tools = ~55K tokens
- Context fills quickly
- Hard to scale beyond ~100 tools
## The Solution
Tool Search with Embeddings:
- Only Tool Search Tool loaded initially (~500 tokens)
- Tools discovered on-demand via semantic search
- 3-5 relevant tools loaded per search (~3K tokens)
- Total: ~8.7K tokens vs. ~77K traditional (85% reduction)
## How It Works
1. **Initial State**: Only Tool Search Tool + critical tools loaded
2. **Tool Discovery**: Agent searches for tools based on task
3. **Semantic Matching**: Embeddings match tools to task context
4. **Tool Expansion**: Matching tools expanded into full definitions
5. **Tool Use**: Agent uses discovered tools
## Configuration
### MCP Configuration (`.claude/.mcp.json`)
```json
{
"betaFeatures": ["advanced-tool-use-2025-11-20"],
"toolSearch": {
"enabled": true,
"autoEnableThreshold": 20,
"defaultDeferLoading": true
},
"mcpServers": {
"repo": {
"deferLoading": true,
"alwaysLoadTools": ["search_code", "read_file"]
},
"github": {
"deferLoading": true,
"alwaysLoadTools": ["create_pull_request", "get_issue"]
}
}
}
```
### Always Load Critical Tools
Keep 3-5 most-used tools always loaded:
- Core file operations: `read_file`, `write_file`, `search_code`
- Essential integrations: `create_pull_request`, `get_issue`
- Frequently used: `take_screenshot`, `navigate_page`
## Usage Patterns
### When to Use Tool Search
**Most Beneficial When**:
- Tool definitions consuming >10K tokens
- Tool library has 10+ tools
- Experiencing tool selection accuracy issues
- Building MCP-powered systems with multiple servers
**Less Beneficial When**:
- Small tool library (<10 tools)
- All tools used frequently in every session
- Tool definitions are compact
### Tool Discovery
**Agent Workflow**:
1. Agent needs capability (e.g., "create a pull request")
2. Agent searches: "github pull request creation"
3. Tool Search returns: `create_pull_request` tool
4. Tool expanded into full definition
5. Agent uses tool
**Example**:
```
User: "Create a pull request for my changes"
Agent searches: "github pull request creation"
Tool Search finds: create_pull_request tool
Tool loaded and used
```
## Best Practices
### 1. Clear Tool Names and Descriptions
**Good**:
```json
{
"name": "search_customer_orders",
"description": "Search for customer orders by date range, status, or total amount. Returns order details including items, shipping, and payment info."
}
```
**Bad**:
```json
{
"name": "query_db_orders",
"description": "Execute order query"
}
```
### 2. System Prompt Guidance
Add guidance in agent prompts:
```
You have access to tools for Slack messaging, Google Drive file management,
Jira ticket tracking, and GitHub repository operations. Use the tool search
to find specific capabilities when needed.
```
### 3. Keep Critical Tools Always Loaded
Don't defer loading for:
- Core file operations
- Essential integrations
- Frequently used tools
### 4. Monitor Tool Usage
Track which tools are discovered:
- Most searched tools
- Tool discovery patterns
- Context savings achieved
## Implementation
### Embedding-Based Tool Search
The tool search uses embeddings to match tools to queries:
1. **Tool Indexing**: Create embeddings for all tool definitions
2. **Query Embedding**: Create embedding for user query
3. **Similarity Search**: Find tools with similar embeddings
4. **Tool Expansion**: Load matching tools into context
### Tool Search Tool
The Tool Search Tool itself:
- Searches tool library semantically
- Returns relevant tools based on query
- Expands tools into full definitions
- Maintains tool index
## Benefits
### Context Efficiency
- **85% reduction** in tool definition tokens
- **52.5% total context** (down from 87%)
- **Within optimal range** (60-70% target)
### Improved Accuracy
- **11% improvement** in tool selection accuracy
- **79.5% → 88.1%** (Opus 4.5)
- Better tool matching for complex queries
### Scalability
- Scales to **thousands of tools**
- No context limit concerns
- Dynamic tool discovery
## Examples
### Example 1: GitHub Operations
```
User: "Create a pull request"
Agent workflow:
1. Searches: "github pull request creation"
2. Tool Search finds: create_pull_request tool
3. Tool loaded (3K tokens)
4. Agent uses tool
5. Total context: ~8.7K tokens (vs. 55K traditional)
```
### Example 2: File Operations
```
User: "Search for authentication code"
Agent workflow:
1. Searches: "code search file operations"
2. Tool Search finds: search_code, read_file tools
3. Tools loaded (5K tokens)
4. Agent uses tools
```
### Example 3: Multiple Integrations
```
User: "Check Slack messages and create Jira ticket"
Agent workflow:
1. Searches: "slack message reading"
2. Tool Search finds: read_slack_message tool
3. Searches: "jira ticket creation"
4. Tool Search finds: create_jira_ticket tool
5. Both tools loaded (6K tokens total)
```
## Integration
### With MCP Servers
Tool search works with MCP servers:
- GitHub MCP: 35 tools → 3-5 loaded on-demand
- Slack MCP: 11 tools → 2-3 loaded on-demand
- Custom MCPs: Any number of tools → Loaded as needed
### With Agent System
All agents benefit from tool search:
- Reduced context usage
- Better tool selection
- Scalable tool libraries
## Troubleshooting
### Tools Not Found
- Check tool names and descriptions are clear
- Verify tool search is enabled
- Review search queries
- Check tool index is up to date
### Context Still High
- Verify deferLoading is enabled
- Check alwaysLoadTools list (should be minimal)
- Review tool definitions (may be too verbose)
- Monitor actual tool usage
### Tool Selection Issues
- Improve tool descriptions
- Add more context to search queries
- Review tool naming conventions
- Check embedding quality
## Integration with Programmatic Tool Calling (PTC)
Tool Search works excellently with Programmatic Tool Calling:
1. **Tool Search** finds relevant tools (on-demand loading)
2. **PTC** orchestrates tools efficiently (reduced context)
3. **Result**: Optimal tool usage with minimal token consumption
**Example Workflow**:
```python
# Tool Search finds tools
tools = search_tools("github issue management")
# PTC orchestrates multiple tool calls
team = await get_team_members("engineering")
issues = await asyncio.gather(*[
get_issue(member["github_username"]) for member in team
])
# Only final results in context, not all intermediate data
```
See [PTC Patterns Guide](../docs/PTC_PATTERNS.md) for comprehensive PTC documentation.
## Related Documentation
- [Advanced Tool Use](../docs/ADVANCED_TOOL_USE.md) - Comprehensive tool use guide
- [PTC Patterns](../docs/PTC_PATTERNS.md) - Programmatic Tool Calling patterns
- [Context Optimization](../docs/CONTEXT_OPTIMIZATION.md) - Context management
## References
- [Tool Search with Embeddings Cookbook](https://github.com/anthropics/anthropic-cookbook/tree/main/tool_use/tool_search_with_embeddings.ipynb)
- [Programmatic Tool Calling Cookbook](https://github.com/anthropics/anthropic-cookbook/tree/main/tool_use/programmatic_tool_calling_ptc.ipynb)
- [Advanced Tool Use Documentation](https://docs.claude.com/en/docs/agents-and-tools/advanced-tool-use)
<examples>
<usage_example>
**Example Commands**:
```bash
# Search for git-related tools
node .claude/tools/tool_search.mjs --query "git"
# Search for database tools
node .claude/tools/tool_search.mjs --query "database" --limit 3
# Search for testing tools
node .claude/tools/tool_search.mjs --query "testing"
```
</usage_example>
</examples>
## Memory Protocol (MANDATORY)
**Before starting:**
Read `.claude/context/memory/learnings.md`
**After completing:**
- New pattern -> `.claude/context/memory/learnings.md`
- Issue found -> `.claude/context/memory/issues.md`
- Decision made -> `.claude/context/memory/decisions.md`
> ASSUME INTERRUPTION: If it's not in memory, it didn't happen.
No comments yet. Be the first to comment!