List Tasks
vault_list_tasksFilters checkbox tasks across the whole vault by status, date, folder, heading, priority, or tag; returns note path, line, heading, and full metadata for locating each task.
Instructions
List checkbox tasks across the whole vault with structured filters β the Tasks-plugin data model over MCP. Both task metadata formats are indexed: emoji signifiers (π due, β³ scheduled, π« start, β created, β done, β cancelled, πΊβ«πΌπ½β¬ priority, π recurrence, π/β dependencies) and Dataview inline fields ([due:: 2026-07-04], [priority:: high], ...). Every result carries its attribution β note path, folder, line number, and the nearest heading when the task sits under one (the lane on a Kanban board) β so no follow-up reads are needed to locate a task. Task lines inside fenced code blocks and %% %% comment blocks are not indexed.
Example: vault_list_tasks({ due: { before: "2026-07-04" } }) β overdue triage; the default status (not_done) and sort (due ascending) make this the "what's overdue?" call Example: vault_list_tasks({ path: "Code Projects/vault-cortex/TASKS.md", heading: ["Active", "Up Next", "Waiting On"], sort_by: "position" }) β actionable Kanban lanes in board order; position is the natural sort for boards (file path then line number, preserving card arrangement) Example: vault_list_tasks({ folder: "Code Projects/vault-cortex" }) β all open tasks across a project tree (TASKS.md + task-notes/ subdirectories); folder is a recursive prefix match Example: vault_list_tasks({ status: "done", done: { after: "2026-06-26" } }) β what got completed this week Example: vault_list_tasks({ top_level_only: true, path: "TASKS.md" }) β board cards only, excluding checklist sub-items
When to use: Any vault-wide task triage question β "what's overdue?", "what's open per project?", "what did I finish this week?" β in one call instead of per-board reads. Prefer vault_read_note (heading mode) to read one specific board lane verbatim. Prefer vault_search for full-text queries over note content.
Parameters:
status: a single value or an array of values, OR-combined (default "not_done"). Values: "not_done" (todo + in_progress, excludes done AND cancelled), "todo", "in_progress", "done", "cancelled", "all". Virtual values expand in arrays: ["not_done", "done"] matches todo + in_progress + done.
due / scheduled / start / done / created / cancelled: date filters, each { before, on, after } in YYYY-MM-DD β before/after are exclusive, on is exact. A date filter only matches tasks that HAVE that date.
priority: array of "highest" | "high" | "medium" | "low" | "lowest" | "none", OR-combined ("none" = tasks with no priority signifier).
folder: recursive note-path prefix. tag: bare inline-task-tag name; a parent tag matches children. heading: exact heading text or array of headings, case-sensitive, OR-combined. path: one note, must end in ".md".
top_level_only: boolean (default false). When true, only top-level tasks (depth 0) are returned β excludes indented sub-tasks and checklist items.
sort_by: "due" (default) | "scheduled" | "start" | "created" | "done" | "priority" | "note_mtime" | "position". "position" sorts by file path then line number β the natural order for Kanban boards.
limit: max results (default 50). The total field always reports the full match count.
Errors:
A malformed or calendar-invalid date filter throws with remediation text ("Use YYYY-MM-DD")
path without the ".md" extension is rejected
No matches returns { total: 0, tasks: [] }, not an error
Returns: JSON { total, tasks }. Every task carries path, line, status, status_char, description, folder, depth (0 for top-level, 1+ for sub-tasks), is_kanban_task, depends_on, and tags (the arrays are [] when empty). Every other field appears only when the task has it: heading (nearest heading above the task), created/scheduled/start/due/done/cancelled dates, priority, recurrence, on_completion, task_id, block_id, parent_block_id (sub-tasks whose parent carries a ^block-id), done_lanes (Kanban boards only).
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| due | No | Due date (π / [due:: ]) bounds | |
| tag | No | Inline task tag, bare name without "#"; parent tags match children | |
| done | No | Done date (β / [completion:: ]) bounds | |
| path | No | Restrict to one note (vault-relative path ending ".md") | |
| limit | No | Max results (default 50); total always reports the full match count | |
| start | No | Start date (π« / [start:: ]) bounds | |
| folder | No | Restrict to a note-path prefix (e.g. "Code Projects/vault-cortex") | |
| status | No | Status filter, OR-combined (default "not_done" = todo + in_progress, excluding done and cancelled). Virtual values expand in arrays: "not_done" adds todo + in_progress, "all" includes every status. | |
| created | No | Created date (β / [created:: ]) bounds | |
| heading | No | Exact heading text or array of headings, OR-combined, case-sensitive (e.g. "Active" or ["Active", "Up Next"]) | |
| sort_by | No | Sort key (default "due"). Date sorts cascade through related fields when the primary is absent; each fallback uses its own natural direction. "position" sorts by file path then line number β the natural order for Kanban boards. | |
| priority | No | Priority levels, OR-combined; "none" selects tasks with no priority signifier | |
| cancelled | No | Cancelled date (β / [cancelled:: ]) bounds | |
| scheduled | No | Scheduled date (β³ / [scheduled:: ]) bounds | |
| sort_direction | No | Sort direction. Default per field: "asc" for due/scheduled/priority/position, "desc" for start/created/done/note_mtime. Within a date cascade, each fallback uses its own default; an explicit value overrides all fields uniformly. | |
| top_level_only | No | When true, only top-level tasks (depth 0) are returned β excludes indented sub-tasks and checklist items. Default false. |