Productivity
trydock.ai
Manages workspace and row data in a collaborative table surface, enabling listing, creation, and retrieval of rows and workspace details.
ENDPOINT 1
https://trydock.ai/api/mcp
MCP server metadata
- Name
- dock
- Version
- 1.0.0
You are connected to Dock, a shared cloud workspace for humans and AI agents. # Mental model A workspace is a container of one or more surfaces (tabs). Each surface is either a `doc` (TipTap rich-text body) or a `table` (typed rows + columns). A workspace can hold any combination, one or many of either kind — one doc, one table, two docs and a table, etc. There is no rule that every workspace contains both. `mode` on the workspace just picks which tab opens first; it does not restrict what surfaces exist. # Pick the right surface - Prose (briefs, summaries, retros, status reports, anything you'd write as paragraphs and headings) → `doc`. Use `update_doc(markdown=...)` for full replacement, `append_doc_section(markdown=...)` for append-only at the end, or `update_doc_section(heading, markdown)` to refresh just one section in the middle. Never hand-build ProseMirror JSON. - Records with shared columns (tasks, leads, ingest output, anything tabular) → `table`. Use `create_row` / `update_row`. The bias to avoid: shredding prose into single-column rows because rows feel easier. Pick the shape that fits the content. # Rich content in docs Doc bodies accept the full friendly format set via markdown. Pick the right syntax for the content shape: - **Diagrams** → ```mermaid` fenced block. 15 sub-types covered by one library: flowchart, sequence, gantt, ER, state, class, mindmap, timeline, pie, quadrant, sankey, XY-chart, packet, block, journey. Diagram source is text; agents emit it natively. - **Math** → `$x$` (inline) or `$$x$$` (block). LaTeX, KaTeX-rendered. Use this instead of typesetting math in code blocks or as plain text. - **Callouts** → `> [!NOTE]` / `[!TIP]` / `[!IMPORTANT]` / `[!WARNING]` / `[!CAUTION]`. GFM-standard, identical to GitHub's renderer. - **Custom diagrams (escape hatch)** → ```svg` fenced block. Universal fallback for anything Mermaid doesn't model (geometry, decorative figures, custom layouts). Scripts and event handlers are stripped at write time, so write whatever SVG markup you need without worrying about XSS — the gate is applied for you. - **Collapsible sections** → `<details><summary>title</summary>\nbody...\n</details>`. Native disclosure widget; useful for FAQ-style content or long appendix material. - **Cross-references** → `[[slug]]` (whole workspace), `[[slug#tab]]` (specific surface), `[[slug#row-id]]` (specific row), `[[org/slug]]` (org-prefixed), `[[slug|display]]` (custom label). Each cross-ref creates a Backlink row, so the target's "referenced from" sidebar widget shows this doc. Targets the reader can't see render as plain text (no info leak). Use cross-refs liberally — they're how you build the workspace knowledge graph. - **External embeds** → paste a URL on its own line from a safelisted provider: YouTube, Vimeo, Loom, Figma, CodePen, GitHub gists. The URL becomes a sandboxed iframe. URLs not on the safelist stay as plain links — there's no auto-promotion to iframe outside the safelist. Per-format caps: max 50 Mermaid diagrams (30 KB source), max 500 math expressions (8 KB source), max 50 SVG blocks (100 KB source post-sanitize), max 200 cross-refs per doc, max 20 embeds per doc. Cap breaches return DocGuardError with the specific dimension. Trim and retry. **Pre-flight check**: `validate_doc_markdown(markdown=...)` parses your markdown and returns { ok, errors, warnings, parsed } with counts per format type — no writes, no side effects. Use this when iterating on rich-format markdown to catch cap breaches, syntax errors, and unresolved cross-refs BEFORE burning a real write. Tips: - Prefer Mermaid over hand-written ASCII art or images for any standard diagram type. Mermaid renders to SVG (zoom-friendly on mobile, indexable for search), round-trips cleanly through `get_doc`, and the agent reading the doc back gets the source verbatim. - Use the ```svg` escape hatch ONLY when Mermaid doesn't fit (custom geometry, decorative figures). Always include a `<title>` element inside the SVG for screen readers. - Wrap long appendix material or rare-path branches in `<details>` so the doc reads compactly by default but the full content is one click away. # You can edit anything, anytime Nothing in Dock is write-once. Reach for the right tool whenever state is wrong: - Rows: `update_row` (partial merge), `delete_row` - Doc bodies: `update_doc` (replace whole body), `append_doc_section` (append at end), `update_doc_section(heading, markdown)` (replace one section in the middle without disturbing the rest — heading-keyed, doesn't race with concurrent edits to other sections) - Workspace metadata: `update_workspace` (rename, mode, visibility) - Tabs: `create_surface`, `update_surface`, `delete_surface` — workspaces are not frozen with their starting tabs, grow them when the work needs another - Members: `share_workspace`, `update_workspace_member`, `remove_workspace_member` # Subscribe to changes, don't poll `create_webhook` registers an HMAC-signed endpoint that fires on every row, doc, member, and workspace mutation. Use this to wake up on state changes instead of polling on a timer. Manage with `list_webhooks` / `update_webhook` / `rotate_webhook_secret` / `delete_webhook`. # Self-manage org settings You can drive billing and credentials directly. Don't tell users to "go to settings" for things you can do yourself: - Plans: `get_billing`, `upgrade_plan`, `downgrade_plan`, `request_limit_increase`. Plan changes are consent-gated; you pick the surface via `mode`. Default `mode: "chat"`: first call returns a `confirm_token` + summary you surface in chat; second call (within 60s, passing the token) flips the plan. Or pass `mode: "web"`: first call returns an `approval_url` you print in chat; user clicks, approves in browser, you poll `polling_url` for the result. Use web mode if you're headless or your user prefers a click-to-approve flow. - Credentials: `rotate_api_key`, `revoke_api_key` (your own key only). - Support: `create_support_ticket` instead of "email support" (Dock has no support email). # Bootstrap a key for sibling agents If a teammate agent or a chat-only agent (no MCP, no terminal) needs to onboard onto Dock, point them at the click-to-approve flow at `POST /api/agent-bootstrap/start`: they pass an `agent_name` (and optional `workspace_slug`), surface the returned `approval_url` to the user, and poll `polling_url` every ~3s. When the user clicks Approve in their browser, the next poll returns `{ status: "approved", api_key, agent_id, workspace_slug }`. Same security model as `gh auth login` — single-click consent, single-use 5-min token, no terminal required. Docs: `/docs/agent-prompt#bootstrap`. # Slug form Workspace slugs accept two forms: bare (`my-workspace`) or org-prefixed (`my-org/my-workspace`). Both resolve to the same workspace. The dashboard URL shows the org-prefixed form; pass whichever you have. # Multi-tab workspaces `list_surfaces(slug)` enumerates the tabs inside a workspace. Pass `surface_slug` on doc/row tools to address a specific tab; omit it to fall through to the workspace's primary surface of that kind. # Discovery - `list_workspaces` for everything you can access. - `search(q, kind?)` when the user names something fuzzily, faster than listing + filtering. - `get_recent_events(slug)` when picking up a workspace after time away. # When you hit an error Every error response carries an `x-request-id`. Include it as context when you `create_support_ticket`. Cap errors include `details.upgrade` (in-plan upgrades) or `details.increase` (past-Scale asks); call the named tool, don't escalate to a human.
Known tools 69
get_workspaceGet details about a specific workspace by its slug, including columns of its primary table surface, member count, and row count.
Inferred read-onlymove_rowsAtomically move N rows from their current sheet(s) to a target sheet inside the same workspace.
Inferred read-onlyget_workspace_schemaReturn a table surface's column definitions so an agent knows what keys create_row/update_row will accept.
Inferred read-onlyupdate_workspaceRename a workspace, change its slug, switch its default-view mode, or flip its visibility (private | org | unlisted | public).
Inferred read-onlyvalidate_doc_markdownPre-flight check on markdown BEFORE writing it via update_doc / append_doc_section.
Inferred read-onlyupdate_doc_sectionReplace a single section of a workspace's doc body, identified by its heading text.
Inferred read-onlyappend_doc_sectionAppend a chunk of Markdown to the END of a workspace's doc body.
Inferred read-onlysearchSearch across everything the caller can already touch: workspace names, row cell values, and doc sections/paragraphs.
Inferred read-onlyget_billingGet the caller's org billing summary: current plan (free, pro, or scale), active counts and caps for every gated resource (agents, members, workspaces, rows per workspace, API calls per month, webhooks per month, messages per month bundle), monthly price in cents, card on file if any, next invoice date.
Potential side effectsupgrade_planMove the caller's org to Pro ($19/mo flat, 10 agents, 20 members, 200 workspaces, 5k rows per workspace) or Scale ($49/mo flat, 30 agents, 60 members, 1,000 workspaces, 50k rows per workspace).
Inferred read-onlydowngrade_planSchedule a downgrade to Free at the end of the current billing period.
Inferred read-onlyrequest_limit_increaseAsk Dock to raise a plan limit (agents, workspaces, rows, or other).
Inferred read-onlyrotate_api_keyAtomically mint a new API key with the same agent / workspace / scopes / name and revoke the old one.
Inferred read-onlyrequest_revoke_agent_keyAsk the human owner to revoke ANOTHER agent's active API key (sibling agent).
Inferred read-onlyrequest_rotate_agent_keyAsk the human owner to rotate ANOTHER agent's active API key (mint a new one + revoke the old).
Inferred read-onlysend_messageSend a direct message to another agent or human in the messaging substrate.
Potential side effectsget_support_ticketRead ONE support ticket by its number (as shown in list_support_tickets), including the full body/description.
Inferred read-onlylist_sheet_functionsList the Dock Sheets formula functions an agent can use in a cell carrier.
Inferred read-onlyvalidate_formulaParse-check a formula expression server-side without writing anything.
Inferred read-onlyevaluate_formulaEvaluate 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.
Inferred read-onlyadd_commentPost 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.
Potential side effectsget_comment_threadFetch a single comment with its replies + reactions in one round trip.
Inferred read-onlyreply_to_commentConvenience wrapper around `add_comment` for the common reply case.
Inferred read-onlylist_recent_filesList the 50 most recently updated files in a Files surface, sorted by `updatedAt` descending.
Inferred read-onlyaddress_bookLists the agents you can reach — your own agents AND agents shared to you from other owners.
Inferred read-onlylist_capabilitiesList the provider API keys your owner has stored in their Vault (e.
Inferred read-onlypull_capabilityPull one provider API key your owner has vaulted, so you can use it for the task at hand (e.
Inferred read-onlyrequest_connectionAsk your owner to connect a third-party app (Gmail, Slack, Notion, Linear.
Potential side effectsCONNECT WITH APPROVAL
Client installation
Review this server and its permissions before adding it. Secret placeholders must be set locally.
Codex
~/.codex/config.toml
[mcp_servers.dock]
url = "https://trydock.ai/api/mcp"
enabled = true
Claude Code
.mcp.json
{
"mcpServers": {
"dock": {
"type": "http",
"url": "https://trydock.ai/api/mcp"
}
}
}
Claude Desktop
Settings → Connectors → Add custom connector
Name: dock
Remote MCP URL: https://trydock.ai/api/mcp
Add this remote URL as a custom connector in Claude Desktop. Availability depends on the user plan and workspace policy.
Cursor
.cursor/mcp.json
{
"mcpServers": {
"dock": {
"url": "https://trydock.ai/api/mcp"
}
}
}
Visual Studio Code
.vscode/mcp.json
Add to Visual Studio Code{
"servers": {
"dock": {
"type": "http",
"url": "https://trydock.ai/api/mcp"
}
}
}
Generic MCP
Client-specific MCP configuration
{
"name": "dock",
"transport": "streamable-http",
"url": "https://trydock.ai/api/mcp"
}
MCP Inspector
Run the official MCP Inspector locally and enter the indexed Streamable HTTP endpoint.
TRUST AND VERIFICATION EVIDENCE
Trust Data Available
BuiltWith Trust API v2 evidence for trydock.ai was fetched 2026-08-24T00:24:54.489Z and is being refreshed.
trydock.ai is assessed as Neutral: No suspicious signals found, but no strong positive signal either
Evidence is source-attributed and does not guarantee that a third-party server is safe. Risk labels are conservative metadata heuristics.