describe_collections | List every collection this server has (blog, docs, tokens) and its shape — extra frontmatter fields (with real current defaults) for entry-style collections, the known token names for tokens. Discover what a collection accepts before calling create_entry/edit_entry/edit_tokens against it. | (none) |
describe_components | List purpose-built components available beyond plain HTML (e.g. video-embed) — the tag to write, its required attributes, and a real usage example. Discover these instead of guessing at a raw <iframe> or similar, which will be rejected. | (none) |
list_entries | List entries from a collection, each with its editorial status (drafting / in review / changes requested / published / archived) derived from git/PR state | collection? |
read_entry | Read an entry's content and frontmatter | slug, collection? |
create_entry | Create a new entry (allowlist-validated), commit it to the content repo | slug, html, title, date, draft?, tags?, collection?, pillar?, order?, section? |
edit_entry | Update content/frontmatter of an existing entry (allowlist-validated), commit the change | slug, html?, title?, date?, draft?, tags?, collection?, pillar?, order?, section? |
delete_entry | Remove an entry, commit the deletion | slug, collection? |
read_tokens | Read the site's current design tokens (colors, lengths) — the effective values, already merged over the built-in defaults for anything not explicitly overridden. | (none) |
edit_tokens | Change design tokens (the site palette + a few lengths) — no CSS file editing needed, generates site/styles/globals.css's custom properties at build time. Only known token names are accepted (see read_tokens for the current set); each color needs a "light" and/or "dark" value. Like any other collection, create_branch/publish_content/submit_for_review/discard_draft all work here too — pass slug: "tokens", collection: "tokens". | colors?, lengths? |
upload_image | Upload an image (base64-encoded) into an existing entry's image directory and commit it to the content repo. Reference it in the entry's HTML as <img src="<filename>" alt="...">, a bare filename — do not write <picture>/srcset/width/height, those are generated automatically at build time. | slug, filename, data, collection? |
create_branch | Start (or resume) the draft branch for an entry. Fails if another draft is already checked out for this slug — see spec §5.4 "Per-entry draft locking". | slug, collection? |
discard_draft | Discard an entry's draft without publishing, releasing the lock on it | slug, collection? |
diff | Show an entry's draft-branch changes against main (or another ref) | slug, against?, collection? |
publish_content | Publish an entry's draft — makes it live. Mode (direct git merge, or open+merge a real GitHub PR) is set by the PUBLISH_MODE env var, not per-call; either way this one call results in live content. | slug, collection? |
submit_for_review | Open a real GitHub PR for an entry's draft and stop there — for when a human review before it goes live is actually wanted, regardless of what PUBLISH_MODE defaults to. Needs MCP_PUSH_TOKEN with "Pull requests: Write" scope. | slug, collection? |
preview | Push an entry's draft branch to the content repo and get back a hosted preview URL a reviewer can open, if PREVIEW_WORKER_URL is configured — omitted otherwise (the branch still pushes either way). | slug, collection? |
revalidate | Trigger a Cloudflare Pages rebuild via its deploy hook | (none) |
deploy_status | Read the most recent Cloudflare Pages deployment's real state — closes the loop publish/revalidate open, since a deploy hook accepting a POST doesn't prove the build actually succeeded | (none) |
rollback | Revert to a previous commit — pass slug to revert just that entry, omit it to revert a whole commit repo-wide | commitHash, slug?, collection? |