# MCP tools

| Tool | Cost | What it does |
| --- | --- | --- |
| `search` | cheap | Full-text and, when on, meaning search over the index. Filters: `folder`, `status`, `tag`, `kind`, `area`, `path_prefix`, `since`, `include_archive`, `include_superseded`, `limit`. |
| `context` | cheap | The session-start bundle for a `path` and `repo`; `format: "json"` answers it as data. |
| `backlog` | cheap | The backlog by priority then age, filtered by `area` and `priority`. |
| `list_files` | cheap | Paths only. |
| `whoami` | cheap | The account a connection signs in as and whether it may write. |
| `read_file` | moderate | One note, prefixed with `etag: <version>`. A superseded note carries a warning callout. |
| `lint` | moderate | Reads every note and reports drift. |
| `write_file` | write | Validates against the schema and refuses the write if it does not hold. Stamps `updated`, fills `date`. `expected_etag` makes the write conditional; `"*"` creates a note that must not exist yet. Only `.md` notes outside dot-folders are written. |
| `append_file` | write | Appends and bumps `updated`; the note must exist and still satisfy the schema. |
| `set_status` | write | Changes a note's status, with `priority` and `source` for the backlog. |
| `close` | write | Finishes a note and moves it into the archive. |
| `backlog_add` | write | Files a backlog note. |
| `log_append` | write | One dated line in the repo log, with the commits and the branch. |
| `move_file` | write | Moves or renames a note; it must satisfy the schema at the destination. |
| `delete_file` | write | Deletes for good. Prefer `close`. |
| `init` | write | Sets up a vault without a schema: the schema of the `preset` it is given and the Bases views. On a vault with a schema it only writes the missing views. |
| `obsidian_access` | write | Server only. Mints the WebDAV password for [Obsidian's Remotely Save](/docs/main/how-to/obsidian.md) and shows it once. |

On S3, a conditional `write_file` sends its condition with the PUT; see [Storage](/docs/main/install/storage.md#the-bucket).

The `init` tool sets up only a vault without a schema, so an MCP client cannot change the rules that check its own writes.

A server also serves `claim`, `release`, `snapshot`, `changelog`, `lint_and_park` and `view` to a machine signed in with [`login`](/docs/main/how-to/sign-in-a-machine.md), for the [task, log and snapshot commands](/docs/main/reference/agent-commands.md), `changelog`, `lint --write --park-stale` and the terminal output of the [command line](/docs/main/reference/command-line.md) that run through it. Connectors and keys made on a vault's page never see them.

Over HTTP, a connection carries `vault:read` or `vault:read vault:write`. A write tool called on a read-only connection fails with an error saying so, rather than half-writing.

[Lifecycle](/docs/main/explanation/lifecycle.md) explains how `close`, `set_status`, `backlog_add` and `log_append` work together.
