MCP tools
All fourteen tools, their scope, and what each one does.
MCP tools
Section titled “MCP tools”Fourteen tools in three scopes.
Reading
Section titled “Reading”docs_treedocs:readList every page path, as the branch would look if committed now: published content plus your staged changes. Pass no branch to see published content.
docs_readdocs:readRead one page as its source Markdown, including any change staged on the branch.
Always read before writing. This is what stops an agent overwriting its own
uncommitted edits. The source is not what a reader sees: {{name}} is a
variable, and a snippet is an include.
docs_searchdocs:readFind pages by their words. Ranked, not semantic and not substring.
Every word you give has to appear, so search content words rather than a
sentence: webhook retries, not how do I configure retries for webhooks.
Small misspellings are tolerated.
docs_logdocs:readCommit history, newest first, optionally for one page. Each line ends with where
that revision came from: editor, api, import, rollback, or git for a
commit pushed outside Staleless.
docs_diffdocs:readUnified diff of everything staged on a branch. Show this to a human and let them
read it before calling docs_commit.
docs_stageddocs:readList what is staged on a branch and not yet committed.
docs_lintdocs:readCheck the branch: frontmatter schema, canonical formatting, dead internal links,
duplicate or missing navigation entries, and orphan pages. docs_commit runs
this and refuses on any non-formatting problem.
Staging
Section titled “Staging”Nothing in this group creates a git object.
docs_branchdocs:writeCreate or select a change request, anchored to the current published head. One
branch per topic, named draft/<who>/<slug>.
docs_writedocs:writeStage a page create or update. This does not commit.
Content is normalised to canonical Markdown as it is stored, so what you stage is exactly what gets committed.
docs_movedocs:writeStage a page move or rename. Update nav.yaml and add a redirect in the same
branch, or docs_commit will refuse.
docs_deletedocs:writeStage a page deletion. Remove it from nav.yaml in the same branch, or
docs_commit will refuse.
docs_unstagedocs:writeDiscard one staged change. The published content is untouched.
Committing
Section titled “Committing”docs_commitdocs:commitTurn everything staged on the branch into one real git commit.
Runs docs_lint first and refuses if it reports a content problem. Fails if
somebody else moved the branch: re-read, restage, retry. Does not publish.
docs_pushdocs:commitPush the branch and open or update its pull request, then return the link for a human to review.
Merging is deliberately not available to a machine.
Site files are content too
Section titled “Site files are content too”nav.yaml, variables.yaml, search.yaml, redirects.yaml, glossary.yaml
and style.yaml are read and written by the same tools. They are YAML rather
than prose, so they are not put through the Markdown canonicaliser.
Warning
Never write a site file by pasting Markdown-formatted YAML. Indentation matters, and a tuning file nobody can parse is ignored silently so that it cannot break search.