> ## Documentation Index
> Fetch the complete documentation index at: https://docs.toolshed.philo.ventures/llms.txt
> Use this file to discover all available pages before exploring further.

# search_tools

> Fuzzy search the tool catalog by keyword.

## Overview

Search the tool catalog to discover available tools. Returns matching tools with their path, name, description, and destructive flag.

<Note>
  **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.
</Note>

## Input

| 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

* `readOnlyHint: true`

## Output

Returns an array of matching tools:

```json theme={null}
[
  {
    "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:

```typescript theme={null}
const results = await tools.search({ query: "email", limit: 5 });
```
