vault_read
Read markdown files from an Obsidian vault. Supports pagination via heading, line range, chunk, or tail sections, with automatic outline for large files.
Instructions
Read the contents of a markdown file from the vault. Supports pagination: read a single section by heading, last N lines, last N heading-level sections, chunk number, or line range. Files exceeding ~80k characters auto-redirect to peek data (file structure/outline) unless a pagination param or force=true is specified. Paths in this tool's output are formatted as markdown links [vault-relative-path.md](obsidian://...) so users can Cmd/Ctrl-click to open in Obsidian. Preserve the link form when relaying paths to the user; pass only the bracket text (e.g. 01-Projects/Foo/note.md) to other vault tools' path arguments, never the full markdown link.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Path relative to vault root (supports short names, e.g. 'devlog') | |
| tail | No | Return the last N lines of the file. Frontmatter is always prepended. | |
| chunk | No | Read a specific chunk of the file (1-indexed). Each chunk is ~80k characters. Use vault_peek to see total chunks. | |
| force | No | Bypass auto-redirect for large files. WARNING: only use when full content is essential, as large files degrade model performance. Hard-capped at ~400k chars (~100k tokens). | |
| lines | No | Read a range of lines from the file (1-indexed, inclusive). | |
| heading | No | Read only the section under this heading (exact match, case-sensitive). Returns heading line + content until next same-or-higher-level heading. | |
| section_level | No | Heading level for tail_sections (1=`#`, 2=`##`, etc). Default: 2. | |
| tail_sections | No | Return the last N sections at the specified heading level. Frontmatter is always prepended. |