# Tools
URL: /en-US/docs/agent/tools

Tools the agent can call. Some appear only when the model, slot, or mode qualifies.



These tools operate on the workspace you opened. Ask mode can read and search; it cannot create, edit, delete, apply patches, run `shell`, or generate images or videos.

| Tool              | Role                                                                                                                                                            |
| ----------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `read_file`       | Read a file, or read images and videos                                                                                                                          |
| `create_file`     | Create a file                                                                                                                                                   |
| `edit_file`       | Edit an existing file                                                                                                                                           |
| `delete_file`     | Delete a file                                                                                                                                                   |
| `apply_patch`     | Exposed when the model and transport are eligible (for example an OpenAI-provider GPT model); replaces `create_file` / `edit_file` / `delete_file` on that path |
| `glob`            | Find paths by glob (respects `.gitignore`)                                                                                                                      |
| `grep`            | Search file contents (respects `.gitignore`)                                                                                                                    |
| `ls`              | List one directory, not recursive. Path must be absolute                                                                                                        |
| `shell`           | Run a command with `reason` and `command`. Ask mode cannot call it                                                                                              |
| `web_fetch`       | Fetch an `http` or `https` URL and return Markdown. A host tool, not provider search                                                                            |
| `generate_image`  | Exposed after you assign an image model in **Settings → Models**. Generates one image. Ask mode cannot call it                                                  |
| `generate_video`  | Exposed after you assign a video model in **Settings → Models**. Generates a short video. Ask mode cannot call it                                               |
| `get_diagnostics` | Exposed when a language server is ready. Pass paths; returns errors and warnings. Ask mode can use it                                                           |
| `ask_questions`   | Structured questions; the turn waits until you answer. See [Ask questions](./ask-questions.mdx)                                                                 |
| `subagent`        | Delegate a scoped task to a child session. See [Subagents](./subagents.mdx)                                                                                     |
| `create_plan`     | Plan mode only. Writes `plans/{name}.md`. See [Modes](./modes.mdx)                                                                                              |
| `todo_list`       | List todos for the current session                                                                                                                              |
| `todo_write`      | Replace the full todo list for the current session                                                                                                              |
| `finish_task`     | Exposed only when [Loop](./loop.mdx) is on. Marks the current task complete                                                                                     |
| `dream_list`      | When [Dreams](../customize/dreams.mdx) is available on Desktop, list non-expired summaries for the current workspace and branch                                 |
| `dream_read`      | Read one full dream by id. Write tools belong to the background collector, not the conversation                                                                 |

Edits and deletes wait for [approval](./approvals.mdx) on the default level. `shell` waits too.

Configured [MCP](../customize/mcp.mdx) servers and extensions add more tools to the same list.

## Provider Tools [#provider-tools]

Providers can expose their own tools — web search, code interpreters, and similar. Which tools exist comes from the connected provider's declaration in [config.json](../config.mdx) (written by the connect wizard), not from a built-in Spirit tool: a provider that declares no tools exposes none.

Depending on the declaration, a call either runs inside the upstream request or is executed by Spirit over plain HTTP and written back as the tool result. Either way it renders like an MCP tool call, and the runtime never second-guesses the declared parameters.

The **Provider Tools** toggle in **Settings → Agents** (`agents.providerTools.enabled`, on by default) gates all of them at once. The per-house list of declared tools is in [Providers](../providers.mdx).
