# Tools Exposed Over MCP

Which Agenvoy tools a connected agent sees, and how new tools appear without a restart.

## Exposed tools

| Tool | Purpose |
|---|---|
| `script_*` / `ext_*` | User-created, bundled and extension script tools (auto-discovered from disk). `api_*` tools were Removed in v1.3.2; leftover `.json` files are not loaded |
| `tool_generate_guide` | Return the tool build contract. It starts from `public_api_list`: a fitting API is called directly, and a script tool is built only when none fits or a user-supplied API needs a key. `script_tool_generate_guide` still answers as an unlisted alias |
| `public_api_list` | Built-in since v1.3.2 (was `api_public_api_list`). Without `category`, the category names; with one, each keyless API's name, description, HTTPS flag and docs URL |
| `edit_tool` | Create or overwrite a tool file (`mode=write`), string-replace a fix inside one (`mode=patch`), or trash an obsolete one (`mode=remove`); `tag` is `json` (tool.json) or `script` (script.py) |
| `test_tool` | Run a script tool in sandbox with sample input |
| `store_secret` | Capture a credential via masked input and write it straight to the keychain |
| `list_tools` | List all tools exposed by the server |

Bridged tools (`public_api_list`, `edit_tool`, `test_tool`, `store_secret`) are shared with Agenvoy's internal runtime — same handler, same schema, dispatched through `toolRegister`. No duplicate implementation.

## Hot reload

The server watches tool directories via `fsnotify`. When a tool is created, modified, or deleted, the server automatically rescans and sends `notifications/tools/list_changed` — the client refreshes its tool list without reconnecting. The watched directories are `tools/script/`, `<workDir>/.config/agenvoy/tools/script/` and `tools/.extension/script/`; watching the `api/` directories was Removed in v1.3.2.
