What this is
The complete catalogue of tools the ComStack MCP Server exposes to AI assistants. Tool availability is filtered per caller role — a viewer won’t see manager-only tools, and those tools won’t appear in tools/list.
How it works
Each tool carries MCP ToolAnnotations that tell clients what kind of approval UI to show:
readOnlyHint: true — read-only; clients can call without an approval prompt.
destructiveHint: true — modifies state in a hard-to-reverse way; clients show an approval prompt with arguments visible.
destructiveHint: false + idempotentHint: false — additive write (e.g. create-page); safe to call but not idempotent.
Annotations are advisory — the server enforces auth, role checks, project_name echo, and the confirmation-token flow regardless.
When to use it
Consult this page to understand which tools are available for a given role, what annotations they carry, and what approval flow the client will use.
The Role column shows the minimum role required.
Identity and project access
| Tool | Role | Type | Description |
|---|
whoami | any | read | Show signed-in identity. |
list-my-projects | any | read | List accessible projects with your role on each. |
create-project | any | write | Create a new project from a project template. |
get-guide | any | read | Agent guide, metadata schema, Lighthouse checklist. |
report-feedback | any | write | File a bug or improvement suggestion. |
Project state
| Tool | Role | Type | Description |
|---|
get-project-state | viewer | read | Full snapshot: pages by status, templates, locales, translation mode, next_action per page. |
get-page-content | viewer | read | Fetch one page including status, audience, and next_action. |
list-pages | viewer | read | Filter pages by status, audience, template, or language. |
search-docs | viewer | read | Ranked keyword search across pages. |
list-project-doc-templates | viewer | read | Page templates available in this project. |
Page editing
| Tool | Role | Type | Description |
|---|
create-page | editor | write | Create a new draft page. Validates all fields at once and rejects path and slug collisions. |
update-page | editor | destructive | Edit an existing page. Live pages become a new draft; the live URL stays up until publish. |
Approvals and translation
| Tool | Role | Type | Description |
|---|
approve-page | manager | idempotent | Approve a draft. Full validation runs; translations start automatically. Page moves to ready when all locale variants land. |
translate-page | manager | idempotent | Retry the platform translation fan-out for an approved or ready page. |
submit-page-translation | editor | idempotent | Supply one locale’s translation for an approved source page (client translation mode). |
Publishing
| Tool | Role | Type | Description |
|---|
publish | manager | read | Dry run: build the manifest of due READY pages with per-page diff and a confirmation token (5-min TTL). |
publish-confirm | manager | destructive | Deploy: use the token to promote ready pages to live. Async — poll publish-status for results. |
publish-status | viewer | read | Poll async publish progress; returns published_urls when complete. |
list-publish-history | viewer | read | Recent publishes with revert window. |
revert-publish | manager | destructive | Roll back the last publish within 1 hour. Requires project_name. |
Page management
| Tool | Role | Type | Description |
|---|
delete-page | manager | destructive | Hard delete (no undo). Requires project_name. |
set-page-status | manager | destructive | Archive, restore, or revert a page. Requires project_name. |
set-page-audience | manager | destructive | Set who can see a page: public, agents, members, or internal. Applied to the whole canonical slug group. Requires project_name. |
Site configuration
| Tool | Role | Type | Description |
|---|
update-theme | manager | destructive | Set colours, fonts, and CSS for the knowledge site. |
update-design | manager | destructive | Theme the live site and custom pages (accent set, palette, fonts, colour scheme). |
update-website-settings | manager | destructive | Set the published website country list and toggle the module. Requires project_name. |
update-advanced-settings | manager | destructive | Update advanced project settings including translation mode. |
update-live-agent-settings | manager | destructive | Configure live voice agent settings. |
update-legal-settings | manager | destructive | Update legal and compliance settings. |
update-chrome-ingest-settings | manager | destructive | Configure Chrome Extension ingest settings. |
update-custom-pages-settings | manager | destructive | Configure the custom pages module settings. |
GitHub sync
| Tool | Role | Type | Description |
|---|
connect-github | manager | destructive | Save repo, branch, and docs folder. Requires project_name. |
pull-and-publish | manager | destructive | Full-replace sync from GitHub. Requires confirm: "REPLACE_ALL_DOCS" and project_name. |
get-github-config | member | read | Current GitHub connection state. |
update-github-sync | manager | destructive | Update GitHub sync settings. |
Navigation
| Tool | Role | Type | Description |
|---|
list-sidebar-groups | member | read | List the project’s sidebar groups. |
get-sidebar-group | member | read | Fetch one sidebar group. |
create-sidebar-group | manager | write | Create a new sidebar group. Requires project_name. |
update-sidebar-group | manager | destructive | Edit a group’s label, order, icon, or visibility. Requires project_name. |
delete-sidebar-group | manager | destructive | Delete a group. Requires project_name. Fails if pages reference it. |
reorder-sidebar-groups | manager | destructive | Replace the full sidebar group ordering. Requires project_name. |
reorder-pages-in-group | manager | destructive | Bulk-set page order inside a group. Requires project_name. |
list-header-nav-items | member | read | List top-nav items sorted by order. |
create-header-nav-item | manager | write | Create a top-nav item. Max 10 per project. Requires project_name. |
update-header-nav-item | manager | destructive | Edit a top-nav item’s label, URL, icon, or visibility. Requires project_name. |
delete-header-nav-item | manager | destructive | Delete a top-nav item. Requires project_name. |
reorder-header-nav-items | manager | destructive | Replace the full top-nav ordering. Requires project_name. |
Custom pages and media
| Tool | Role | Type | Description |
|---|
upload-custom-page | editor | destructive | Upload a custom (vibe-coded) page. Replaces the full body_source. Extracts translatable strings. |
upload-media | editor | write | Upload an image or video; returns an optimised delivery URL. |
Account and usage
| Tool | Role | Type | Description |
|---|
get-usage-report | any | read | Account usage totals and per-module breakdown. |
get-credit-balance | any | read | Available credits, balance, reserved, frozen flag. |
list-api-keys | any | read | API keys on the project. |
generate-api-key | manager | write | Generate a new API key. |
revoke-api-key | manager | destructive | Revoke an API key. |
repair-translations | manager | destructive | Backfill missing locale siblings. Requires project_name. Dry-run mode available. |
lookup-company | any | read | Look up a company. External-facing — open world. |
Page templates (admin)
| Tool | Role | Type | Description |
|---|
list-doc-templates | any | read | All page templates on the platform. |
get-doc-template | any | read | Field schema, metadata example, markdown template, and slug examples. |
create-doc-template | admin | write | Create a new page template. |
update-doc-template | admin | destructive | Update an existing page template. |
delete-doc-template | admin | destructive | Soft-delete a page template. |
list-project-templates | admin | read | Project templates on the platform. |
get-project-template | admin | read | Fetch one project template. |
create-project-template | admin | write | Create a new project template. |
update-project-template | admin | destructive | Update a project template. |
delete-project-template | admin | destructive | Soft-delete a project template. |
assign-project-template | admin | destructive | Add a page template to a project’s available templates. |
unassign-project-template | admin | destructive | Remove a page template from a project. |
Flows and steps
| Tool | Role | Type | Description |
|---|
list-flows | viewer | read | List all flows in a project. |
get-flow | viewer | read | Fetch one flow. |
create-flow | editor | write | Create a new flow. |
update-flow | editor | destructive | Update a flow. |
delete-flow | manager | destructive | Delete a flow. |
list-steps | viewer | read | List steps in a flow. |
get-step | viewer | read | Fetch one step. |
add-step | editor | write | Add a step to a flow. |
update-step | editor | destructive | Update a step. |
remove-step | manager | destructive | Remove a step. |
list-step-types | viewer | read | Available step types. |
Example
Checking what tools are available for your role:
Call get-project-state — the next_action on each page row tells you the next step and whether your role can perform it (next_action_allowed and next_action_min_role). The tools/list response is pre-filtered for your role, so any tool absent from the list is beyond your current role on this project.
Common errors
| Error | Cause | Fix |
|---|
Tool absent from tools/list | Below required role for that tool | Use a higher-role account or ask a manager |
403 project_name mismatch | project_name doesn’t match stored name | Call get-project-state first |
| Validation error on write | Missing required template fields | The error response lists all issues at once with fix strings |