search_tools(query) to find relevant tools by description, and call_tool(tool_name, arguments) to invoke them. The LLM never sees your full tool list.
Setup
Requires
sentence-transformers. Install separately: pip install sentence-transformersHow It Works
The key difference: instead of seeing all 100+ tools upfront, the LLM searches for what it needs. This is like a developer searching an API reference instead of reading the entire docs.What the LLM Sees
Only two tools ever appear in the tool list:Configuration
| Option | Default | Description |
|---|---|---|
max_results | 5 | Number of search results returned per query |
model | BAAI/bge-large-en-v1.5 | SentenceTransformer model for embeddings |
When to Use
Good fit:- Large APIs with 100+ tools
- Tools with clear, descriptive names and docstrings
- Exploration-heavy use cases (“what can this server do?”)
- Small APIs (Plain is simpler)
- Strict ordering requirements (use stages)
- Latency-sensitive apps (embedding adds ~50ms per search)