Overview
Search the tool catalog to discover available tools. Returns matching tools with their path, name, description, and destructive flag.
HTTP transport filters by connected providers. On the remote MCP endpoint (/api/mcp/:token), the catalog search_tools searches against is the per-user available set — only tools whose authProvider is currently connected (or that need no auth) are visible. The stdio transport (toolshed serve) searches the full catalog regardless. If a user expects to find a tool that’s missing, the underlying provider probably isn’t connected in the Toolshed dashboard.
| Parameter | Type | Required | Default | Description |
|---|
query | string | Yes | — | Search query matched against tool path, name, and description |
limit | integer | No | 10 | Maximum number of results to return |
Annotations
Output
Returns an array of matching tools:
[
{
"path": "github.issues.list",
"name": "List Issues",
"description": "List issues in a GitHub repository, optionally filtered by state and labels.",
"destructive": false
},
{
"path": "github.issues.create",
"name": "Create Issue",
"description": "Create a new issue in a GitHub repository.",
"destructive": true
}
]
Search algorithm
The search uses weighted fuzzy matching across multiple fields:
| Field | Weight |
|---|
| Tool path | 12 |
| Tool name | 10 |
| Description | 5 |
| Exact segment match | +8 bonus |
Multiple search tokens use AND semantics — all tokens must match for a result to be included.
Also available in sandbox
Inside run scripts, the same search is available as:
const results = await tools.search({ query: "email", limit: 5 });