bots.st/dock
Dock
Manage workspace tables, docs, videos
2051 ms
answered our call
- State
- Answered
- Protocol
- MCP 2025-06-18
- Tools listed
- 84
- Answered
- 3 of the last 3 calls
How to reach it
- MCP, HTTP
https://trydock.ai/api/mcp
What it can do
| Tool | What it says it does |
|---|---|
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 column with the same key already exists. Editor role required. Use this for per-column additions; use get_workspace_schema + update_surface… |
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 target shape mirrors the REST POST /api/workspaces/:slug/comments. For threading, pass `parentId` to hang the new comment as a reply (the… |
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) that people flip through; give each a short `label` like "Variant B" so they can tell them apart. Create the surface first with… |
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 delivers AND wakes the recipient). Do NOT use send_message for an agent — that path does not wake them and the message can strand. Each entry has… |
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 updates, daily standups, batch summaries). Same markdown surface as update_doc: supports CommonMark, GFM, **`` inline images** (an… |
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 few rows (lower latency + token cost). Pass `rows` as an array of `{ data: {...} }` objects, each `data` a column-name → value map (same… |
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 latency + token cost for sheet edits). Pass `updates` as an array of `{ id, data }`: `id` is the row id (from list_rows / get_row), `data`… |
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, no active file share link. Call it BEFORE writing anything owner-private (Voice profile, Second Brain, personal notes) and before every… |
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 without a public host. Returns a ready `curl` command: run it with your file path in place of `<path to your file>`; its JSON response has a… |
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, blocked. Works on any workspace; columns auto-seed on the first row if the table surface is empty. Multi-surface workspaces accept… |
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 problem yourself if you have your own email address (send_email on cloud, email_owner on desktop); otherwise ask your human to (they can… |
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 omitted the server slugifies `name` and appends a numeric suffix on collision. Optional `columns` sets a `table`'s starting columns; without… |
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` needs an https URL, and inline base64 is unreliable for video, so use this instead. Returns a ready `curl` command: run it with your file… |
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 at delivery-time). Events array filters which event kinds the endpoint receives: pick from row.* / comment.* / member.* / workspace.* /… |
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 user as a co-owner so the human sees it in their dashboard. The new workspace is seeded with one primary surface matching `mode`: `doc` →… |
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 /api/workspaces/{slug}/files/{id} body: {restore:true}`); after that the cleanup deletes it for good and refunds the storage quota. If… |
delete_file_upload | Delete a staged upload right away: pass the `url` a `create_file_upload` link returned, with the same workspace `slug`. Use it to revoke a staged `url` that was shared by mistake, or one you no longer need. Only a `url` from a `create_file_upload` link for this workspace is accepted; anything else… |
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_surfaces archived: true`). Idempotent: calling on an already-archived surface returns its current archivedAt unchanged. Cannot archive the… |
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. To pause without losing config, use update_webhook with active:false instead. |
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 Workspaces page. Every member loses access immediately. Idempotent: calling on an already-archived workspace returns its current archivedAt… |
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 org plan (Pro or Scale, which only set resource caps) to Free at the end of the current billing period; the org keeps those caps until then… |
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": find the exact start and end with watch_video first); `keep` to keep ONLY one span and drop the rest ("just give me 0:10 to 0:20")… |
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 would render. Two modes: STANDALONE (omit `workspace_slug`) — evaluates against an empty grid; useful for `=SUM(1, 2, 3)` or any formula with… |
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: active counts and caps for agents, members, workspaces, rows per workspace, API calls, webhooks, and the message bundle, plus card-on-file… |
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 each entry includes aggregated reactions (`emoji`, `count`, `mine`). Use this when an agent receives a `comment.added` webhook with a… |
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 a non-ProseMirror surface), `content` (TipTap JSON, round-trippable into update_doc for structural edits), `text` (plain text, best for… |
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 re-checked on every request. Useful for an agent reading file contents server-side (HTTP GET the URL) or surfacing a download link in a… |
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 a sandboxed iframe. Use `list_surfaces` to enumerate html surfaces in a workspace. Omit `surface_slug` to read the primary html surface… |
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 row shape as list_rows. |
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`/`end` for a span. Viewer role required. |
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 more surfaces of any kind, in any combination. Use `list_surfaces` to enumerate every surface, then that surface's own tools (`list_rows`… |
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), `label` (human-readable), `type` (text | longtext | number | status | person | date | url | checkbox | select), `position`, and, for… |
invite_to_org | Invite someone to an organization (the team). Provide an email to invite a specific person (if they already have a Dock account they're added immediately; otherwise a magic-link invite is emailed), or omit the email to create a shareable open-link invite. Optionally set role (admin or member… |
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 (cookie session) see every key for every agent they own. Plaintext is never returned; the key body is shown only once at create/rotate… |
list_capabilities | List the provider API keys and site passwords your owner has stored in their Vault (e.g. Gemini, ElevenLabs, OpenAI, LINKEDIN_PASSWORD) so you can use them in a task. Returns `capabilities`: the exact NAMES of the keys your owner has vaulted. Pass one of these names verbatim to `pull_capability` —… |
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 anchored to any element of one surface, useful for 'open threads on this surface'), `status` (open | resolved | all, default open)… |
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 anyone that Dock does or does not have an app, and when someone asks 'do you have X?' or 'what can I connect for CRM?'. It only reads: it… |
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[] with cuids agents can pass to `get_file` / `delete_file`. `parent_folder_id` defaults to null (= root of the surface); pass a folder id to… |
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 the dashboard at /settings/support: you see tickets you filed yourself, and — if you are a human caller — tickets filed by agents you own… |
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 agent answering 'what changed lately' or 'show me yesterday's uploads' without paging through the folder tree. Folders are omitted from this… |
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 each row, AND the row's `surface_slug` (the sheet it lives on). Empty array if no rows have been added yet. Multi-surface workspaces… |
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/Text/Date/Lookup/Predicates), rollout slice (v1/v2/v3/v4), and at least one worked example per function. Use this before writing a… |
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 you exactly what it has. Each surface has its own slug used in surface-scoped tool calls. Order matches the on-screen surface order… |
list_videos | List the videos in a video surface, in play order: id, position, label, name, url (the file), content type, size, duration and `link`, the Dock link that opens THAT video. When you point someone at a video, share its `link`, not the surface link: the surface opens on its first video. Omit… |
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 (full secret is only returned at create / rotate-secret time). Any org member (user or agent) can list. Use to audit what's subscribed… |
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, brandKey) along with their role (owner | editor | commenter | viewer). Used by agents to verify a workspace is actually shared before… |
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 creation date. A workspace is a container of one or more surfaces of any kind (see `create_surface`), in any combination, one or many of each… |
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-produced drafts onto the right sheet, reorganizing content across LinkedIn / Twitter / Substack sheets, etc. All-or-nothing: if any rowId… |
pull_capability | Pull one provider API key or site password your owner has vaulted, so you can use it for the task at hand (e.g. call the Gemini or ElevenLabs API, or type a LINKEDIN_PASSWORD into LinkedIn's sign-in form). Pass `name` = the EXACT capability name from `list_capabilities` (a mismatched name fails… |
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 idempotent (re-adding the same emoji is a no-op); `action: 'remove'` deletes the row if present. Fires `comment.reaction_added` /… |
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, or revoke a pending invite by passing its invite id as `member_id`. Editor role required; owner-tier removals require an owner caller. Sole-owner removal is blocked; promote someone else first. Note: if the workspace visibility is `org`, removing an explicit member of… |
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 (no need for the agent to remember whether the parent was a row, cell, doc_range, html_element, surface, or workspace comment). Re-opens… |
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 access — it reports the state and tells you what to ask for. Call it when a task needs an app you cannot currently reach, then tell the user… |
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 one of those caps. The Pro/Scale org plans are retired: never offer one as the fix, even when a cap error names it. |
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 escalation path. Returns { status: 'approval_required', approval_url, polling_url, expires_in }: print approval_url in chat for the target… |
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, requires the target agent's owner to click. On approval the old key stops working at once. The new key's plaintext is INTENTIONALLY not… |
resolve_comment | Mark a comment thread resolved. Idempotent: calling on an already-resolved thread returns the existing `resolvedAt` unchanged. Fires `comment.resolved`. Pair with `unresolve_comment` for the reverse. Used by agents to close a feedback thread once they've iterated on the change the reviewer asked… |
And 24 more tools.
In its maker's words
AI workspace for you, your team, and every agent. Tables, docs (images, 4K video), formulas.
- Website
- trydock.ai
- Source
- github.com/try-dock-ai/mcp
- Publisher
- trydock.ai
- Listed from
- the official MCP Registry as
ai.trydock/dock - Version
- 1.1.0, updated 15 May 2026
- Kinds of work
- Documents and files, Data and databases, Browser and automation
The domain it lives on
- trydock.ai
- registered 18 Apr 2026 (7 months ago), at GoDaddy.com, LLC, its home page is a working site
From our own crawl of domain names: registry records and the home page as our crawler last saw it.
Every call we made
| When | What happened | Time |
|---|---|---|
| Answered | 2051 ms | |
| Answered | 3084 ms | |
| Answered | 767 ms |
Next door
Is this your bot? Claim its address to add a verified badge and keep the listing current.