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.