[mdbase-tasknotes](https://github.com/callumalpass/mdbase-tasknotes) (`mtn`) is a standalone command-line tool for managing TaskNotes tasks directly on markdown files. It uses [mdbase](https://mdbase.dev) to read and write task files and [tasknotes-nlp-core](https://github.com/callumalpass/tasknotes-nlp-core) for natural language parsing.
TaskNotes ships with [tasknotes-cli](https://github.com/callumalpass/tasknotes-cli) (`tn`), which communicates with the Obsidian plugin over its HTTP API. `mdbase-tasknotes` operates directly on the markdown files instead.
The plugin generates `mdbase.yaml` and `_types/task.md` automatically — `mtn` reads these to understand your task schema, including your custom statuses and priorities.
### Creating a standalone collection
To create a new collection without Obsidian:
```bash
mtn init ~/tasks
mtn config --set collectionPath=~/tasks
```
This generates `mdbase.yaml`, `_types/task.md`, and a `tasks/` folder with sensible defaults (statuses: open, in-progress, done, cancelled; priorities: low, normal, high, urgent).
## Creating tasks
Create tasks using natural language. Tags, contexts, projects, dates, priorities, and recurrence are extracted automatically:
The NLP parser reads your collection's status and priority enum values from `_types/task.md`, so any custom values you define there are automatically recognized.
## Querying tasks
### List tasks
```bash
# Default: open tasks ordered by due date
mtn list
# Filter by status, priority, or tag
mtn list --status in-progress
mtn list --priority high
mtn list --tag work
# Show overdue tasks
mtn list --overdue
# Raw mdbase where expression
mtn list --where 'due < "2026-03-01" && priority == "urgent"'
# JSON output for scripting
mtn list --json
```
### Show task detail
```bash
mtn show "Buy groceries"
mtn show tasks/Buy\ groceries.md
```
Tasks can be referenced by title or file path. Title matching tries exact match first, then substring.
### Search
Full-text search across titles, body content, tags, contexts, and projects:
```bash
mtn search quarterly
```
## Updating tasks
### Complete a task
```bash
mtn complete "Buy groceries"
```
Sets status to `done` and records the completion date.