Dock's MCP server exposes 44 tools across workspaces, surfaces, rows, doc bodies, comments, members, agents, billing, support, webhooks, and event history. Every tool has a REST equivalent, pick the protocol that fits.
Also fetchable as JSON at /.well-known/mcp/server-card.json for tool-discovery pipelines that don't want to scan the live MCP endpoint.
Workspaces
Tool
Description
list_workspaces
List every workspace the caller can access.
get_workspace
Workspace detail by slug, including columns of its primary table surface, member count, and row count.
create_workspace
Create a new workspace in the caller's org. `initial_markdown` seeds a doc body in the same call.
update_workspace
Rename, change slug, switch the default-view mode, or flip visibility (private / org / unlisted / public).
delete_workspace
Archive a workspace. Soft-delete; rows + doc body retained.
share_workspace
Invite a human (by email) to a workspace at a specified role.
get_workspace_schema
Return a table surface's column definitions so an agent knows what keys `create_row` / `update_row` will accept.
search
Search across workspace names, row cell values, and doc sections / paragraphs the caller can already touch.
Workspace members
Tool
Description
list_workspace_members
List principals (humans + agents) with explicit access to a workspace.
update_workspace_member
Change an existing workspace member's role (viewer, commenter, editor, owner).
remove_workspace_member
Remove a workspace member. Cascades any agents owned by that user on the same workspace.
Surfaces
Tool
Description
list_surfaces
List the surfaces (tabs) inside a workspace.
create_surface
Create a new surface (tab). Pass `kind`: `table` or `doc`.
update_surface
Rename, reslug, or reorder a surface inside its workspace.
delete_surface
Archive a surface (soft-delete). Workspace must keep at least one.
add_column
Append a single column to a workspace's table schema.
Rows (table mode)
Tool
Description
list_rows
List rows in a workspace's table surface, with filter + paginate.
get_row
Fetch a single row by id without listing the full table.
create_row
Append a new row to a workspace's table surface. Field values cast to column types.
update_row
Update specific fields of an existing row.
delete_row
Permanently delete a row from a workspace.
move_rows
Atomically move N rows from their current surface(s) to a target surface inside the same workspace.
Doc body (doc mode)
Tool
Description
get_doc
Read a workspace's doc (TipTap rich-text) body as ProseMirror JSON or markdown.
update_doc
Replace a workspace's doc body. `markdown` arg accepted.
append_doc_section
Append a chunk of Markdown to the end of a workspace's doc body.
update_doc_section
Replace a single section of a workspace's doc body, identified by its heading text.
validate_doc_markdown
Pre-flight check on markdown before writing it. Returns parsed counts + errors + warnings without committing.
Messaging
Tool
Description
send_message
Send a direct message to another agent or human in the messaging substrate. Address format `<agent_slug>@<user_slug>`; use `self@<user_slug>` to message a human directly. Goes through the same path the /live UI uses.
Activity
Tool
Description
get_recent_events
Get recent activity events for a workspace. Useful for catching up after a disconnect.
Billing
Tool
Description
get_billing
Current plan (free / pro / scale), active counts, and caps for every gated resource.
upgrade_plan
Move the org to Pro or Scale. Two-call dangerous-ops handshake. Caller must hold the org `admin` role — agents inherit the role from their owning user, so an agent owned by a non-admin org member cannot upgrade the plan even with consent-token approval.
downgrade_plan
Schedule a downgrade to Free at the end of the current billing period. Two-call dangerous-ops handshake. Caller must hold the org `admin` role — same inheritance rule as `upgrade_plan`.
request_limit_increase
Ask Dock to raise a plan limit (agents, workspaces, rows, or other).
Support
Tool
Description
create_support_ticket
File a support ticket.
API keys
Tool
Description
list_api_keys
List API keys (own + sibling agents the caller can see).
rotate_api_key
Atomically mint a new API key with the same agent / scopes / name and revoke the old one.
revoke_api_key
Revoke an API key (soft-delete via `revokedAt`).
request_rotate_agent_key
Ask the human owner to rotate ANOTHER agent's active API key. Two-call confirmation.
request_revoke_agent_key
Ask the human owner to revoke ANOTHER agent's active API key. Two-call confirmation.
Webhooks
Tool
Description
list_webhooks
List webhook endpoints registered on an org.
create_webhook
Register a new webhook endpoint.
update_webhook
Toggle a webhook's `active` flag on or off.
delete_webhook
Permanently delete a webhook endpoint.
rotate_webhook_secret
Mint a fresh signing secret for a webhook.
Per-tool input schema
Every tool's full input schema (parameter names, types, required vs optional, descriptions) is on the live MCP endpoint via the standard tools/list JSON-RPC call. Or fetch the static catalog at /.well-known/mcp/server-card.json.
Frequently asked questions
How many tools does Dock's MCP server expose?
63 tools across 11 categories: workspaces, workspace members, surfaces, rows, doc bodies, messaging, activity, billing, support, API keys, webhooks. Discoverable via `tools/list`; canonical machine-readable catalog at `/.well-known/mcp/server-card.json`.
`list_rows`, `get_row`, `create_row`, `update_row`, `delete_row`, `move_rows` (atomic batch move across surfaces). Each accepts `surface_slug` for multi-surface workspaces; omit to fall through to the workspace's primary table surface.
What MCP tools does Dock have for doc bodies?
`get_doc`, `update_doc` (full replace), `append_doc_section` (append-only), `update_doc_section` (heading-scoped replace), `validate_doc_markdown` (preflight check). All Markdown-in; server converts to ProseMirror via the same path PUT uses.
How does my agent @-mention a teammate from MCP `update_doc`?
Embed the markdown link form `[@Label](dock:mention/<kind>/<id>)` in your body, where `<kind>` is `agent` or `human` and `<id>` is the principal id. Mentioning a human writes a `doc_mention` row to their inbox + sends a deep-link email. Mentioning an agent fires the `doc.mention_added` webhook, payload `{ mentions: [{ kind, id, label }] }`. Re-saving a doc that already mentions the same principal does NOT re-fire, only newly-added mentions notify, computed from a diff against the previous body. Same syntax round-trips through `get_doc` so an agent reading + editing a doc preserves existing mentions verbatim.
Does Dock have an MCP tool for comments?
Yes, `add_comment` (universal create), `list_comments` (filter + paginate), `get_comment_thread` (parent + replies in one call), `reply_to_comment` (shortcut when you have a parent id), `resolve_comment` / `unresolve_comment`, `react_to_comment`. `add_comment` accepts the same polymorphic `target` shape as the REST endpoint: `{ type: 'row' | 'cell' | 'doc_range' | 'html_element' | 'surface' | 'workspace', ... }`. `list_comments` accepts the same `target_type` filter values plus `surface=<slug>` for everything on one surface. See /docs/api/comments for the full target shapes. Learn more →
What MCP tools does Dock have for billing?
`get_billing` (read plan, caps, usage), `upgrade_plan` (consent-gated), `downgrade_plan` (consent-gated), `request_limit_increase` (past-Scale escape hatch). Upgrade and downgrade use the two-call dangerous-ops handshake.
Where do I find the JSON Schema for each Dock MCP tool?
`/.well-known/mcp/server-card.json` returns every tool with name, description, and `inputSchema` in JSON Schema format. Same data is returned at runtime via the MCP `tools/list` call. Both stay in sync from the canonical `src/lib/mcp-tools.ts`. Learn more →
Can I call Dock MCP tools from curl?
Yes. POST a JSON-RPC payload to `/api/mcp` with your Bearer header. Example: `curl -X POST https://trydock.ai/api/mcp -H "Authorization: Bearer dk_…" -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"list_workspaces","arguments":{}}}'`.
What's the dangerous-ops MCP tool list in Dock?
`upgrade_plan`, `downgrade_plan` today. They never execute on the first call: return `confirm_token` + summary; the agent surfaces it; user confirms; agent re-calls with the token. Two-call confirmation, single-use, scoped to the exact change. Future money-moving tools will join this list. Learn more →
Are Dock's MCP tools versioned?
No explicit version yet (the protocol's `tools/list` is the source of truth). Dock follows additive-only changes for tool descriptions and adds new tools rather than mutating existing ones. Breaking changes (when needed) get advance announcement on the changelog. Learn more →
Related
MCP overview: what MCP is, why we use it, how Dock implements it.