Skip to main content
TaskForge 3.0: your AI can read your tasks.
← What's new

Lint a task line, check vault health, and outdent from an agent

Shipped in version 3.0.0

The taskforge CLI has always had a few commands the MCP server didn't. If your agent only spoke MCP, it couldn't check a line before writing it, couldn't tell you why a vault wasn't resolving, and couldn't promote a subtask a level up. It had to guess or ask you to run a terminal. Three new MCP tools close that gap. Each one runs the exact same code the matching CLI command does, so the answer is identical whichever surface you use.

lint_task

Pass a candidate line, like - [ ] Ship v2 📅 2026-07-15, and it runs this vault's real parser over it, the same parser the app uses on load. It reports one finding per problem: a status symbol this vault doesn't recognize, an emoji date token typed into a Dataview-only vault where it won't read back as a field, or a line whose title is empty once the metadata is stripped. Use it before add_task so a mis-typed line gets caught up front instead of landing wrong.

You can also pass paths to lint whole vault files. Each path is confined to the vault root, so the tool can't be steered into reading a file outside it.

doctor

Call it with no arguments and it reports what's actually wrong with the vault: whether TaskForge/Settings/dialect.json and TaskForge/Settings/spaces.json are present and where they came from, whether the vault root is really writable (it does a create-then- delete probe, not a permissions guess), and whether spaces.json is missing, unparseable, or written by a newer app than this build understands. When a tool returns a vault-resolution error, doctor is the first thing to run: the warnings say exactly what to fix.

outdent_task

update_task can reparent a task under a named parent or promote it straight to the root. It can't do the relative move, "up one level". outdent_task does: it makes the task a sibling of its current parent and clamps at the root if it's already top-level. Inline tasks carry their own subtree; task file tasks get their parent wikilink rewritten. Pass dry_run: true to see the result without writing, and chain if_hash from get_task for a safe concurrent edit.

Where they run

Like the rest of the MCP server, these run on your machine over stdin/stdout, against the vault folder you point at. No account, no network. The full tool and resource reference lives at taskforge.md/mcp; the same three operations are taskforge lint, taskforge doctor, and taskforge outdent on the CLI.