# Trydock Dock MCP server

Source: https://glimind.com/server/mcp-registry%2Fai.trydock%2Fdock
Registry id: `mcp-registry/ai.trydock/dock`
Status: live (checked 2026-10-27T07:01:27.085Z)

## Measurements (30 days)

- Uptime: 100%
- Checks: 5050
- Outages (90 days): 3

## Install

```json
{
  "mcpServers": {
    "trydock-dock-mcp-server": {
      "type": "http",
      "url": "https://trydock.ai/api/mcp"
    }
  }
}
```

Claude Code:

```sh
claude mcp add --transport http trydock-dock-mcp-server https://trydock.ai/api/mcp
```

## Tools (82)

- `add_column`: Append a single column to a workspace's table schema. Position is auto-computed as next-after-max so the contiguity invariant holds. Key collision (409) if a co
- `add_comment`: Post a new comment on any target in a workspace: a row, a cell, a doc text range, an html element, an entire surface, or the workspace itself. Polymorphic targe
- `add_video`: Add a video to the end of a video surface, from an https URL to an mp4, webm, mov or m4v file. A surface holds several videos (variants, cuts, a short playlist)
- `address_book`: Lists the agents you can reach — your own agents AND agents shared to you from other owners. To MESSAGE any of them, use the `message_teammate` tool (it deliver
- `append_doc_section`: Append a chunk of Markdown to the END of a workspace's doc body. Designed for crons + ingest agents that produce content in timestamped chunks (changelog update
- `bulk_create_rows`: Append many rows to a workspace's table surface in ONE call — the bulk version of create_row. Use this instead of looping create_row when ingesting more than a 
- `bulk_update_rows`: Update many existing rows in ONE call — the bulk version of update_row. Use this instead of looping update_row when changing more than a few rows (much lower la
- `check_workspace_private`: Check, on the server, whether a workspace is private to your owner right now: private, every member is your owner or one of your owner's agents, no open invite,
- `create_file_upload`: Get a one-time upload link for a file that is on YOUR machine (a PDF, image, spreadsheet, audio, archive, anything over ~3 MB), so you can put it into Dock with
- `create_row`: Append a new row to a workspace's table surface. The data field is a JSON object with column-name keys. Status column accepts: drafted, queued, sealed, active, 
- `create_support_ticket`: File a support ticket. For agents on the Dock team only: any other caller is refused. If you are not on the Dock team, email agent-support@trydock.ai with the p
- `create_surface`: Create a new surface inside a workspace. `kind` picks `table`, `doc`, `html`, `files`, or `video`. Optional `slug` (lowercase kebab-case, 3-64 chars); when omit
- `create_video_upload`: Get a one-time upload link for a video file that is on YOUR machine (one you rendered, edited or downloaded), so you can put it on a video surface. `add_video` 
- `create_webhook`: Register a new webhook endpoint on an org. The URL must be public (loopback / private ranges / cloud metadata are blocked at create-time AND re-validated by DNS
- `create_workspace`: Create a new workspace in the caller's org. Works for both user and agent callers; agent-created workspaces attribute to the agent and enroll the agent's owning
- `delete_file`: Delete a file by id. It moves to a 30-day trash, and its old link stops working immediately. Restorable during those 30 days via the REST PATCH endpoint (`PATCH
- `delete_row`: Permanently delete a row from a workspace. This action cannot be undone.
- `delete_surface`: Archive a surface (soft-delete). Rows + doc body are preserved: restore it with `update_surface` and `archived: false` (archived surfaces are listed by `list_su
- `delete_webhook`: Permanently delete a webhook endpoint. The URL stops receiving events immediately and the secret is destroyed; recreate from scratch if you need to re-add it. T
- `delete_workspace`: Archive a workspace. Soft-delete: rows, doc body, and activity history are preserved, and the workspace can be restored from the Archived filter on the Workspac
- `downgrade_plan`: ⛔ RETIRED PLAN SYSTEM — not Dock's pricing, and it does not change your human's per-person plan or credits. Schedules the caller's ORG to drop from a retired or
- `edit_video`: Make a new version of a video in a video surface. Combine any of: `remove` to take ranges OUT and keep everything else ("cut that bit", "lose the radio shot": f
- `evaluate_formula`: Evaluate a formula expression against an actual Dock workspace's columns + rows, server-side, returning the same display value the UI's HyperFormula engine woul
- `get_billing`: When your human's access stops (`yourAccess`: their trial end or plan state; the ONLY date to quote for that), plus the caller's org resource caps and usage: ac
- `get_comment_thread`: Fetch a single comment with its replies + reactions in one round trip. Pass any comment id in the thread (root or reply). Returns `{ comment, replies }` where e
- `get_doc`: Read a workspace's doc (TipTap rich-text) body. Format is negotiable via `format`: `markdown` (default — CommonMark + GFM, ready to feed to an LLM or render in 
- `get_file`: Fetch metadata + a download URL for a single file by id. The `download_url` field is a Dock URL (not a storage URL): GET it with your Dock API key and access is
- `get_html`: Read an HTML surface's body. HTML surfaces (Surface.kind="html") store mockup or full-page content as three text fields (html, css, js) rendered together inside
- `get_recent_events`: Get recent activity events for a workspace. Who did what, when. Useful for understanding what's happened since you last looked.
- `get_row`: Fetch a single row by id without listing the full table. Useful when a cue payload carries a row id and the agent only needs that one record. Returns the same r
- `get_video_transcript`: What is said in a video in a video surface, as timestamped segments. Transcribed on first use, then cached on the video until its file changes. Pass `start`/`en
- `get_workspace`: Get details about a specific workspace by its slug, including columns of its primary table surface, member count, and row count. A workspace contains one or mor
- `get_workspace_schema`: Return a table surface's column definitions so an agent knows what keys create_row/update_row will accept. Each column has `key` (the field name in row.data), `
- `list_api_keys`: List API keys. Agent callers see only the key they're authenticated with (a one-row response: id, prefix, lastUsedAt, the workspace it's bound to). User callers
- `list_capabilities`: List the provider API keys your owner has stored in their Vault (e.g. Gemini, ElevenLabs, OpenAI) so you can use them in a task. Returns `capabilities`: the exa
- `list_comments`: List comments in a workspace. Filter by `target_type` (row, cell, doc_range, html_element, surface, workspace), `target_id`, `surface` (returns every comment an
- `list_connectable_apps`: Look up which third-party apps Dock can connect (Gmail, Slack, Notion, HubSpot, Granola...), with each app's name and a short description. Use it BEFORE telling
- `list_files`: List the folder + file children of a Files surface (kind='files'). Folders sorted first by position then name; files sorted by name. Returns folders[], files[] 
- `list_my_support_tickets`: List the support tickets YOU filed (READ-ONLY) — the same tickets `create_support_ticket` creates, so you can check on one after filing it. Scoped exactly like 
- `list_recent_files`: List the 50 most recently updated files in a Files surface, sorted by `updatedAt` descending. Flat surface-wide list; ignores folder structure. Useful for an ag
- `list_rows`: List rows in a workspace's table surface. Returns rows with their data (a JSON object of column-name to value), creation time, the principal who created/updated
- `list_sheet_functions`: List the Dock Sheets formula functions an agent can use in a cell carrier. Returns the canonical name, signature, one-sentence description, category (Math/Logic
- `list_surfaces`: List the surfaces inside a workspace. A workspace can hold surfaces of any kind (see `create_surface`), in any combination, one or many of each; this tool tells
- `list_videos`: List the videos in a video surface, in play order: id, position, label, name, url, content type, size and duration. Omit `surface_slug` for the workspace's firs
- `list_webhooks`: List webhook endpoints registered on an org. Returns each webhook's id, url, subscribed events, active flag, and an 8-char `secretPreview` of the signing secret
- `list_workspace_members`: List principals with explicit access to a workspace. Returns users (id, name, email; email visible only when the caller is in the same org) and agents (id, name
- `list_workspaces`: List all workspaces the authenticated principal has access to. Returns workspace name (slug), mode (the default-view preference for the first surface), and crea
- `move_rows`: Atomically move N rows from their current sheet(s) to a target sheet inside the same workspace. Use for programmatic data migration: dropping a batch of agent-p
- `pull_capability`: Pull one provider API key your owner has vaulted, so you can use it for the task at hand (e.g. call the Gemini or ElevenLabs API). Pass `name` = the EXACT capab
- `react_to_comment`: Add or remove an emoji reaction to a comment. Reactions are per-principal: each (commentId, principalId, emoji) combination is unique. `action: 'add'` is idempo
- `remove_video`: Remove one video from a video surface. Get `video_id` from `list_videos`. Editor role required. Emits `video.updated`.
- `remove_workspace_member`: Remove a workspace member. Editor role required; owner-tier removals require an owner caller. Sole-owner removal is blocked; promote someone else first. Note: i
- `reply_to_comment`: Convenience wrapper around `add_comment` for the common reply case. Pass the parent comment id and the body; the handler reconstructs the target from the parent
- `request_connection`: Ask your owner to connect a third-party app (Gmail, Slack, Notion, Linear...) so you can use its tools. It does NOT connect anything and does NOT give you acces
- `request_limit_increase`: Ask Dock to raise an org limit (agents, workspaces, rows, or other). We record the signal on the admin side; there's no reply loop. Use this whenever you hit on
- `request_revoke_agent_key`: Ask the human owner to revoke ANOTHER agent's active API key (sibling agent). The MCP `revoke_api_key` tool is self-only by design; this is the cross-agent esca
- `request_rotate_agent_key`: Ask the human owner to rotate ANOTHER agent's active API key (mint a new one + revoke the old). Same shape as request_revoke_agent_key: returns an approval_url,
- `resolve_comment`: Mark a comment thread resolved. Idempotent: calling on an already-resolved thread returns the existing `resolvedAt` unchanged. Fires `comment.resolved`. Pair wi
- `revoke_api_key`: Revoke an API key (soft-delete via `revokedAt`). Subsequent requests with the key return 401. Agents may revoke ONLY their own key; calling this is effectively 
- `revoke_file_share`: Soft-revoke a share token minted via `share_file`. The public `/share/files/<token>` URL stops resolving immediately. Idempotent: revoking an already-revoked to
- `rotate_api_key`: Atomically mint a new API key with the same agent / workspace / scopes / name and revoke the old one. Returns the new plaintext (`key`) once; store it before di
- `rotate_webhook_secret`: Mint a fresh signing secret for a webhook. The new `secret` is returned exactly once; copy it to the receiver before the next event lands. After this call, deli
- `search`: Search across everything the caller can already touch: workspace names, row cell values, and doc sections/paragraphs. Returns ranked hits (score 0-1) with a nav
- `send_message`: Send a direct message to another agent or human in the messaging substrate. Wires through cue.dock.svc, the same path the /live UI uses, so the recipient sees t
- `share_file`: Mint a public share token for a file. Returns a `url` of the form `https://trydock.ai/share/files/<token>` that anyone (no auth) can open to view + download the
- `share_workspace`: Invite a human (by email) to a workspace at a specified role. If the email already belongs to a Dock user they're added immediately and a notification email is 
- `unresolve_comment`: Re-open a previously-resolved comment thread. Idempotent on already-unresolved comments. Fires `comment.unresolved` with `reason: 'manual'`. (Auto-unresolve on 
- `update_doc`: Replace a workspace's doc body. Takes EITHER TipTap JSON (`content`) OR Markdown (`markdown`): pass markdown when you're producing prose from scratch (CommonMar
- `update_doc_section`: Replace a single section of a workspace's doc body, identified by its heading text. The targeted edit complement to `update_doc` (full replacement) and `append_
- `update_html`: Write an HTML surface's body. Pass any of `html` / `css` / `js`; omitted fields stay unchanged. Pass empty string to clear. The surface renders in a sandboxed i
- `update_row`: Update specific fields of an existing row. Only the fields provided in `data` are updated; others are preserved. Setting `surface_slug` to a different sheet tha
- `update_surface`: Rename, reslug, reorder, restore, OR replace the column schema of a surface. Pass any subset of `name`, `new_surface_slug`, `position`, `columns`, `archived`. *
- `update_video`: Change one video in a video surface: swap its file (`url`), rename it or relabel it. Get `video_id` from `list_videos`. Omitted fields stay as they are. Editor 
- `update_webhook`: Toggle a webhook's `active` flag on or off. Inactive webhooks are skipped at delivery time (no retry queue, no log row) but the endpoint config is preserved so 
- `update_workspace`: Rename a workspace, change its slug, switch its default-view mode, or change its visibility (private | org). Pass any subset of `name`, `new_slug`, `mode`, `vis
- `update_workspace_member`: Change an existing workspace member's role. Editor role required to caller. Owner-tier transitions (promoting to or demoting from owner) require an owner caller
- `upgrade_plan`: ⛔ RETIRED PLAN SYSTEM — do not offer this as Dock's pricing. Moves the caller's org between the retired org plans, which buy resource CAPS only and are not what
- `upload_file`: Upload a file into a Files surface (kind='files'). For a file over ~3 MB, or any file on your own machine, call `create_file_upload` first: run the curl it retu
- `validate_doc_markdown`: Pre-flight check on markdown BEFORE writing it via update_doc / append_doc_section. Returns { ok, errors, warnings, parsed } with parsed counts per format type 
- `validate_formula`: Parse-check a formula expression server-side without writing anything. Returns { ok, error?, rewrittenFormula?, referencedFunctions, unknownFunctions }. Use BEF
- `validate_html`: Pre-flight check on html / css / js BEFORE writing via update_html. Returns { ok, errors, warnings, parsed } where parsed has byte counts per field and `htmlDro
- `watch_video`: Look at a video in a video surface: returns frames as images, each labelled with its time, plus what is said in that span (transcribed and cached on first use).

Measured by Glimind (https://glimind.com): MCP handshake + tool list only, no tool is ever called. CC BY 4.0.
