mcpField
D
docmost

docmost

github.com/dapiProductivity385 installsUpdated 33w ago
Repository

About docmost

A CLI skill that lets AI agents manage Docmost workspaces and content through the Docmost API. It provides entity-action commands and predictable JSON responses for tasks such as page editing, search, access control, and import or export.

Key features

  1. 01Manage workspaces, spaces, and members
  2. 02Create, edit, and organize pages
  3. 03Search pages and inspect history
  4. 04Manage invites, groups, and sharing
  5. 05Import, export, and transfer files

Use cases

  1. 01Create or update Docmost documentation
  2. 02Find pages and review change history
  3. 03Adjust workspace or space access
  4. 04Import or export documentation and attachments

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/dapi/docmost-cli --skill docmost

After installing, type/docmostin Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with SKILL.md.

.envrc
.env.test.example
docker-compose.test.yml
README.md
LICENSE
.gitignore
CLAUDE.md
mcp_config_example.json
mise.toml
package-lock.json
package.json
.claude/
pr-review-loop-report.local.md
settings.local.json
.github/workflows/
ci.yml
docs/plans/
2026-02-27-skill-md-plan.md
2026-03-03-agent-friendly-output-design.md
2026-02-27-cli-full-crud-expansion-plan.md
2026-02-27-skill-md-design.md
2026-02-27-cli-full-crud-expansion-design.md
2026-03-07-integration-tests-plan.md
2026-03-07-integration-tests-design.md
scripts/
wait-for-docmost.sh
src/__tests__/
cli-utils.test.ts
filters.test.ts
discovery.test.ts
envelope.test.ts
src/__tests__/integration/
comment.test.ts
discovery.test.ts
file.test.ts
src/__tests__/integration/helpers/
run-cli.ts

Details

From the project README

docmost

Docmost CLI skill for AI agents.

Install

Install this skill from GitHub:

npx skills add dapi/docmost-cli --skill docmost --agent '*' -g -y

Install CLI:

npm install -g github:dapi/docmost-cli

Set environment variables (recommended):

export DOCMOST_API_URL=https://docs.example.com/api
export DOCMOST_TOKEN=<token>
# or login with email/password:
export DOCMOST_EMAIL=<email>
export DOCMOST_PASSWORD=<password>

Quick check:

docmost workspace-public --format json

Command Naming: entity-action (NOT action-entity)

All commands use entity-action format: page-update, space-create, comment-delete. NEVER use update-page, create-space, delete-comment — these commands do not exist and will fail.

Execution Rules

  • No pre-flight checks. Run the needed command directly. If docmost is not found, install it (npm install -g github:dapi/docmost-cli) and retry.
  • All --format json output wrapped in envelope: { "ok": true, "data": ... } for success, { "ok": false, "error": ... } for errors.
  • Prefer --format json for agent workflows.
  • Use --format table when user explicitly wants human-readable tabular output.
  • --format text is supported only by:
    • page-info (returns markdown content)
    • page-history-detail (returns markdown content)
    • invite-link (returns raw link)
  • Prefer environment variables for credentials; avoid --password in command history/process list.
  • Auth precedence: --token > DOCMOST_TOKEN > --email/--password > DOCMOST_EMAIL/DOCMOST_PASSWORD.
  • Use global pagination controls for list/history commands:
    • --limit <n> (1..100, default 100)
    • --max-items <n> (stop after N total records)
  • For markdown/prose content (page-update, comment-create, comment-update), use:
    • literal string, @path/to/file.md, or - (stdin)
  • Binary export/download commands write bytes to stdout unless --output is provided:
    • page-export, space-export, file-download
  • Use --quiet when only exit status matters.

Output Format

All --format json responses use a predictable envelope:

Success (single object)
{ "ok": true, "data": { "id": "abc", "title": "Runbook" } }
Success (list)
{ "ok": true, "data": [{ "id": "abc" }], "meta": { "count": 2, "hasMore": false } }
Error (stderr)
{ "ok": false, "error": { "code": "NOT_FOUND", "message": "Page not found", "details": null } }
Parsing rules for agents
  • Always check ok field first
  • For lists: items in data array, check meta.hasMore for pagination
  • For mutations: created/updated object returned in data
  • Errors include typed code: AUTH_ERROR, NOT_FOUND, VALIDATION_ERROR, NETWORK_ERROR, INTERNAL_ERROR
  • Exit codes: 0=success, 1=internal, 2=auth, 3=not_found, 4=validation, 5=network
  • Use docmost commands to discover all available commands and their options

Core Command Patterns

Discovery
docmost commands                          # list all commands with options as JSON
Workspace + Members
docmost workspace-info --format json
docmost workspace-public --format json
docmost workspace-update --name "Docs" --description "Team docs" --format json
docmost workspace-update --enforce-sso true --enforce-mfa true --format json

docmost member-list --format table
docmost member-role --user-id <userId> --role admin --format json
docmost member-remove --user-id <userId> --format json
Users
docmost user-me --format json
docmost user-update --name "Alice" --locale en --page-edit-mode edit --full-page-width true --format json
Spaces
docmost space-list --format table
docmost space-info --space-id <spaceId> --format json

docmost space-create --name "Engineering" --slug engineering --description "Tech docs" --format json
docmost space-update --space-id <spaceId> --name "Platform" --format json
docmost space-delete --space-id <spaceId> --format json

docmost space-member-list --space-id <spaceId> --format table
docmost space-member-add --space-id <spaceId> --role writer --user-ids "u1,u2" --format json
docmost space-member-add --space-id <spaceId> --role reader --group-ids "g1,g2" --format json
docmost space-member-remove --space-id <spaceId> --user-id <userId> --format json
docmost space-member-role --space-id <spaceId> --group-id <groupId> --role admin --format json

docmost space-export --space-id <spaceId> --export-format markdown --output ./space.zip --format json
docmost space-export --space-id <spaceId> --export-format html --include-attachments > ./space.zip
Pages
docmost page-list --format table
docmost page-list --space-id <spaceId> --format table

docmost page-info --page-id <pageId> --format json
docmost page-info --page-id <pageId> --format text

docmost page-create --space-id <spaceId> --title "Runbook" --icon "book" --format json
docmost page-create --space-id <spaceId> --title "Child" --parent-page-id <parentId> --format json

docmost page-update --page-id <pageId> --title "Runbook v2" --format json
docmost page-update --page-id <pageId> --content @./content.md --format json
echo "# Updated" | docmost page-update --page-id <pageId> --content - --format json

docmost page-move --page-id <pageId> --parent-page-id <parentId> --position a00000 --format json
docmost page-move --page-id <pageId> --root --format json
docmost page-move-to-space --page-id <pageId> --space-id <targetSpaceId> --format json

docmost page-delete --page-id <pageId> --format json
docmost page-delete --page-id <pageId> --permanently-delete --format json
docmost page-delete-bulk --page-ids "id1,id2,id3" --format json

docmost page-restore --page-id <pageId> --format json
docmost page-trash --space-id <spaceId> --format table
docmost page-duplicate --page-id <pageId> --format json
docmost page-duplicate --page-id <pageId> --space-id <targetSpaceId> --format json

docmost page-breadcrumbs --page-id <pageId> --format table
docmost page-tree --space-id <spaceId> --format json
docmost page-tree --page-id <pageId> --format json

docmost page-history --page-id <pageId> --limit 50 --max-items 200 --format table
docmost page-history-detail --history-id <historyId> --format json
docmost page-history-detail --history-id <historyId> --format text
Page Import/Export
docmost page-export --page-id <pageId> --export-format markdown --output ./page.zip
docmost page-export --page-id <pageId> --export-format html --include-children --include-attachments > ./page.zip

docmost page-import --file ./page.md --space-id <spaceId> --format json
docmost page-import-zip --file ./notion.zip --space-id <spaceId> --source notion --format json

page-import-zip --source supports: generic, notion, confluence.

Search
docmost search --query "onboarding" --format table
docmost search --query "oauth" --space-id <spaceId> --creator-id <userId> --format json

docmost search-suggest --query "auth" --format json
docmost search-suggest --query "auth" --space-id <spaceId> --include-pages --include-groups --max-results 20 --format json
Invites
docmost invite-list --format table
docmost invite-info --invitation-id <inviteId> --format json

docmost invite-create --emails "[email protected],[email protected]" --role member --format json
docmost invite-create --emails "[email protected]" --role admin --group-ids "g1,g2" --format json

docmost invite-revoke --invitation-id <inviteId> --format json
docmost invite-resend --invitation-id <inviteId> --format json
docmost invite-link --invitation-id <inviteId> --format text
Groups
docmost group-list --format table
docmost group-info --group-id <groupId> --format json

docmost group-create --name "Tech Writers" --description "Docs team" --format json
docmost group-create --name "Maintainers" --user-ids "u1,u2" --format json

docmost group-update --group-id <groupId> --name "Platform Writers" --format json
docmost group-delete --group-id <groupId> --format json

docmost group-member-list --group-id <groupId> --format table
docmost group-member-add --group-id <groupId> --user-ids "u1,u2" --format json
docmost group-member-remove --group-id <groupId> --user-id <userId> --format json
Comments
docmost comment-list --page-id <pageId> --format table
docmost comment-info --comment-id <commentId> --format json

docmost comment-create --page-id <pageId> --content @./comment.md --format json
docmost comment-create --page-id <pageId> --content "Please clarify" --selection "Auth flow" --format json
docmost comment-create --page-id <pageId> --content "Reply text" --parent-comment-id <commentId> --format json

docmost comment-update --comment-id <commentId> --content "Updated comment" --format json
docmost comment-delete --comment-id <commentId> --format json
Shares
docmost share-list --format table
docmost share-info --share-id <shareId> --format json
docmost share-for-page --page-id <pageId> --format json

docmost share-create --page-id <pageId> --include-subpages true --search-indexing false --format json
docmost share-update --share-id <shareId> --include-subpages false --format json
docmost share-delete --share-id <shareId> --format json
Files
docmost file-upload --file ./diagram.png --page-id <pageId> --format json
docmost file-upload --file ./diagram-v2.png --page-id <pageId> --attachment-id <attachmentId> --format json

docmost file-download --file-id <fileId> --file-name diagram.png --output ./diagram.png
docmost file-download --file-id <fileId> --file-name report.pdf > ./report.pdf

Agent Workflows

Page CRUD (recommended default)

For requests like "create/update/move/delete doc page":

  1. Resolve workspace and target space:
    • docmost workspace-info --format json → check .ok, use .data
    • docmost space-list --format json → iterate .data[], check .meta.hasMore
  2. Inspect existing pages:
    • docmost page-list --space-id <spaceId> --format json → iterate .data[]
  3. Read source page when modifying:
    • docmost page-info --page-id <pageId> --format text
  4. Apply mutation:
    • page-create / page-update / page-move / page-delete → check .ok, get .data.id
  5. Verify:
    • docmost page-info --page-id <pageId> --format json → check .ok
Search + History Investigation

For requests like "find where this was documented" or "who changed this":

  1. docmost search --query "..." --format table
  2. docmost page-info --page-id <pageId> --format text
  3. docmost page-history --page-id <pageId> --format table
  4. docmost page-history-detail --history-id <historyId> --format text
Access Control

For requests like "add/remove access":

  1. Workspace level:
    • member-list, member-role, member-remove, invite-*
  2. Space level:
    • space-member-list, space-member-add, space-member-remove, space-member-role
  3. Public page sharing:
    • share-for-page, share-create, share-update, share-delete
Export/Import and Attachments
  1. Export content: page-export / space-export
  2. Import content: page-import / page-import-zip
  3. Attach files: file-upload
  4. Download files: file-download

Request Semantics

  • "мой workspace / моё пространство" -> docmost workspace-info
  • "spaces / разделы" -> docmost space-list
  • "pages / страницы" -> docmost page-list
  • "найди / search" -> docmost search --query "..."
  • "история изменений" -> docmost page-history
  • "удалённые страницы / корзина" -> docmost page-trash
  • "доступ / access" -> member-* / space-member-* / share-*

Trigger Examples

Should trigger
  • "создай страницу в Docmost"
  • "обнови страницу runbook"
  • "найди в вики всё про oauth"
  • "покажи историю изменений этой страницы"
  • "восстанови удалённую страницу"
  • "перенеси страницу в другой space"
  • "экспортни space в markdown"
  • "добавь пользователя в space как reader"
  • "создай публичный share для страницы"
  • "upload файл на страницу"
  • "list all Docmost spaces"
  • "invite new users to workspace"
  • "change member role to admin"
  • "import Notion zip into Docmost"
  • "покажи дерево страниц"
  • "продублируй страницу"
Should not trigger
  • Editing local markdown files without Docmost API interaction
  • Git/GitHub operations
  • Slack/Telegram/email messaging tasks
  • Non-Docmost web scraping or browser automation

Comments

Markdown supported