A Model Context Protocol (MCP) server for interacting with Microsoft 365 and Office services through the Graph API
Dock is installed from its publisher's own source and answers where it runs, so this marketplace is not in the path of a single call. There is no address here to send one to, and a panel that pretended otherwise would be showing you an answer we made up. Install it and call it from your own client — the Installation tab has the entry for each one.
What it does
AI workspace for you, your team, and every agent. Tables, docs (images, 4K video), formulas.
Quickstart
# 1 — add it to Claude Code
claude mcp add --scope user --transport http dock-mcp https://trydock.ai/api/mcp
# 2 — ask your agent for something these tools do
# list_workspaces, get_workspace, list_rows and 66 more
Dock costs nothing on mcprush: there is no plan to choose here, no cap to set and nothing mcprush can bill you for.
Collected from a public index. Nobody has claimed this account, so nothing here was written by its author — claim it if it is yours.
Where are you running it?
Every route below installs the same thing and ends at the same approval screen. Nothing here runs on your machine and nothing runs on ours: this server answers at its publisher’s own address, and what you install is the connection straight to it.
This is a public server: it answers at its publisher’s own address and this marketplace is not in the path. Claude Code registers it in one command; --scope user makes it available in every project. The transport below is http, as the publisher's own manifest declares it.
claude mcp add --scope user --transport http dock-mcp https://trydock.ai/api/mcpReconnect, or start a new session, and the tools appear in the model’s tool list.
One config entry pointing straight at the publisher’s own address — this marketplace is not in the path, and nothing from this listing executes on your machine.
69 tools, with what each one reads, writes and reaches shown before you agree — the same list on every route above. Read the tool surface.
Tool surface
What the model actually sees. Descriptions are diffed on every release — see version history.
List all workspaces the authenticated principal has access to. Returns workspace name (slug), mode (the default-view preference for the first tab), and creation date. A workspace is a container of one or more surfaces (tabs); each surface is either a table (rows + columns) or a doc (TipTap body), and a workspace can hold any combination, one or many of either kind. Use list_surfaces to see w
No parameter schema on file.
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 (tabs): any combination of table (rows + columns) and doc (TipTap body) kinds, one or many of either. Use list_surfaces to enumerate every tab; fetch /rows or /doc to read or write a specific one.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| slug | string | yes | The workspace slug, e.g. 'reddit-tracker'. Accepts either the bare slug or the org-prefixed form ('my-org/reddit-tracker') as shown in the dashboard URL. |
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: pass surface_slug to scope to one sheet; omit to return rows from every surface in the workspace (back-
| Parameter | Type | Required | Notes |
|---|---|---|---|
| slug | string | yes | The workspace slug. Accepts either the bare slug ('my-workspace') or the org-prefixed form ('my-org/my-workspace') as shown in the dashboard URL; both resolve to the same workspace. |
| surface_slug | string | no | Optional table surface slug for multi-surface workspaces. Filter rows to one sheet. Omit to return rows from every surface (legacy single-sheet clients see no change). 400 if the slug is a doc surface |
| limit | number | no | Max rows to return (default 100, max 1000) |
| offset | number | no | Number of rows to skip (for pagination) |
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 surface_slug to target a specific sheet (use list_surfaces to enumerate); omit it to fall through to the
| Parameter | Type | Required | Notes |
|---|---|---|---|
| slug | string | yes | The workspace slug. Accepts either the bare slug ('my-workspace') or the org-prefixed form ('my-org/my-workspace') as shown in the dashboard URL; both resolve to the same workspace. |
| data | object | yes | Row data as a JSON object (e.g. {"title": "My post", "status": "drafted", "notes": "Initial draft"}) |
| surface_slug | string | no | Optional table surface slug for multi-surface workspaces. Omit to write to the workspace's primary table surface. 400 if the slug is a doc surface, archived, or doesn't exist. |
| auto_create_columns | boolean | no | When true, the server auto-creates a text column for every key in data that doesn't already exist on the surface, then writes the row in the same call. Returns created_columns in the response list |
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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| slug | string | yes | The workspace slug. Accepts either the bare slug ('my-workspace') or the org-prefixed form ('my-org/my-workspace') as shown in the dashboard URL; both resolve to the same workspace. |
| rowId | string | yes | The row id |
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 than the row currently lives on MOVES the row to that sheet (position recomputes to the new sheet's tail unless position is also set). Same surface as current → no-op move. Unmapped data fields: Keys in data that don't match any exist
| Parameter | Type | Required | Notes |
|---|---|---|---|
| slug | string | yes | The workspace slug. Accepts either the bare slug ('my-workspace') or the org-prefixed form ('my-org/my-workspace') as shown in the dashboard URL; both resolve to the same workspace. |
| rowId | string | yes | The row ID to update |
| data | object | yes | Partial row data with fields to update (e.g. {"status": "sealed"}). Pass an empty object {} when the call is purely a move (surface_slug change with no field updates). |
| surface_slug | string | no | Optional. When set to a different surface than the row currently lives on, moves the row to that surface and emits a row.moved_surface event. Same-surface is a no-op. 400 if the slug is a doc surfac |
| position | number | no | Optional. Override the row's position. When moving across surfaces, omit to land at the new surface's tail; pass a number to land at a specific slot. |
| auto_create_columns | boolean | no | When true, the server auto-creates a text column for every key in data that doesn't already exist on the surface, then applies the update in the same call. Returns created_columns in the response. |
Permanently delete a row from a workspace. This action cannot be undone.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| slug | string | yes | The workspace slug. Accepts either the bare slug ('my-workspace') or the org-prefixed form ('my-org/my-workspace') as shown in the dashboard URL; both resolve to the same workspace. |
| rowId | string | yes | The row ID to delete |
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 tabs, etc. All-or-nothing: if any rowId doesn't belong to this workspace, the entire batch fails before any write fires. Idempotent: rows already
| Parameter | Type | Required | Notes |
|---|---|---|---|
| slug | string | yes | The workspace slug. Accepts either the bare slug ('my-workspace') or the org-prefixed form ('my-org/my-workspace') as shown in the dashboard URL; both resolve to the same workspace. |
| rowIds | array | yes | Row IDs to move (1-500). Order is preserved at the destination: first id lands at the lowest position, last id at the highest. |
| target_surface_slug | string | yes | Slug of the destination table surface. Use list_surfaces to enumerate. 400 if the slug is a doc surface, archived, or not in this workspace. |
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 search, summarisation, word-count heuristics), or all for the legacy three-in-one shape. Default is `m
| Parameter | Type | Required | Notes |
|---|---|---|---|
| slug | string | yes | The workspace slug. Accepts either the bare slug ('my-workspace') or the org-prefixed form ('my-org/my-workspace') as shown in the dashboard URL; both resolve to the same workspace. |
| surface_slug | string | no | Optional doc surface slug for multi-doc workspaces. Omit to read the primary doc surface. Use list_surfaces to see available slugs. |
| format | string | no | Which serialization to return. Default markdown. Use content to round-trip TipTap JSON back into update_doc for structural edits. Use all for the legacy three-in-one shape (heavier; only do this |
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 | url | status | owner | date | number), position, and, for status/owner columns, the allowed options. Empty array on doc-only workspaces; callers should still be able to write rows (colu
| Parameter | Type | Required | Notes |
|---|---|---|---|
| slug | string | yes | The workspace slug. Accepts either the bare slug ('my-workspace') or the org-prefixed form ('my-org/my-workspace') as shown in the dashboard URL; both resolve to the same workspace. |
| surface_slug | string | no | Optional. The slug of the specific table surface to read columns from. Omit on single-table workspaces; required on multi-table workspaces if you don't want the primary table surface (lowest position) |
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_workspace_columns (PUT on /columns) for full schema replacement or reordering. Multi-surface workspaces accept
| Parameter | Type | Required | Notes |
|---|---|---|---|
| slug | string | yes | The workspace slug. Accepts either the bare slug ('my-workspace') or the org-prefixed form ('my-org/my-workspace') as shown in the dashboard URL; both resolve to the same workspace. |
| surface_slug | string | no | Optional. The slug of the specific table surface to add the column to. Omit on single-table workspaces; required on multi-table workspaces if you don't want the primary table surface (lowest position) |
| key | string | yes | Field name in row.data. Lowercase + underscores recommended; 1-64 chars. |
| label | string | yes | Human-readable header shown in the sheet. |
| type | string | yes | Column type. See get_workspace_schema for examples. |
| width | number | no | Optional. Initial column width in px. |
| description | string | no | Optional. Human-readable tooltip shown in the column header. |
| options | array | no | Required for status + select types. The allowed values shown in the dropdown. |
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 writing output the team is expected to see.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| slug | string | yes | The workspace slug. Accepts either the bare slug ('my-workspace') or the org-prefixed form ('my-org/my-workspace') as shown in the dashboard URL; both resolve to the same workspace. |
Archive a workspace. Soft-delete: rows, doc body, and activity history are preserved, and the workspace can be restored from Settings · Archived. Every member loses access immediately. Idempotent: calling on an already-archived workspace returns its current archivedAt without changing anything. Requires editor role on the agent. Pass mode: "web" to surface a click-to-approve URL for the human (r
| Parameter | Type | Required | Notes |
|---|---|---|---|
| slug | string | yes | The workspace slug. Accepts either the bare slug ('my-workspace') or the org-prefixed form ('my-org/my-workspace') as shown in the dashboard URL; both resolve to the same workspace. |
| mode | string | no | Consent surface. 'immediate' (default) executes on the agent's role. 'web' returns an approval_url the user clicks in a browser; recommended for any workspace your user might miss. |
Rename a workspace, change its slug, switch its default-view mode, or flip its visibility (private | org | unlisted | public). Pass any subset of name, new_slug, mode, visibility; fields you omit are left unchanged. Slug renames preserve old URLs via WorkspaceSlugAlias so previously-shared links keep resolving. Visibility flips disconnect every live SSE subscriber so reconnects re-authenti
| Parameter | Type | Required | Notes |
|---|---|---|---|
| slug | string | yes | The current workspace slug |
| name | string | no | New display name. Optional. |
| new_slug | string | no | New URL slug (lowercase kebab-case, 3-64 chars). Optional. Must be unique within the org. Old slug stays redirectable via the alias table. |
| mode | string | no | New default-view preference for the workspace's first tab. Optional. Doesn't add or remove surfaces; use create_surface / delete_surface to change the actual tab set. |
| visibility | string | no | New visibility. Optional. private = explicit members only; org = every org member gets virtual editor; unlisted = anyone with the URL can view; public = listed and viewable to all. Widening tr |
| consent_mode | string | no | Required when visibility widens audience. Pass 'web' to surface a click-to-approve URL the user opens in their browser; first call returns { status: 'approval_required', approval_url, polling_url }, |
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 sent; if not, a 7-day invite token is minted that auto-accepts on magic-link sign-in. Editor role required on the workspace. Emits member.joined (existing user) or member.invited (new user). Use update_workspace_member to change a role
| Parameter | Type | Required | Notes |
|---|---|---|---|
| slug | string | yes | The workspace slug. Accepts either the bare slug ('my-workspace') or the org-prefixed form ('my-org/my-workspace') as shown in the dashboard URL; both resolve to the same workspace. |
| string | yes | Email address of the human to invite. | |
| role | string | no | Role to grant. Defaults to editor. Owner-tier transitions require an owner caller. |
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. Demoting the sole owner is blocked; promote someone else to owner first. No-op when the role is unchanged. Emits member.role_changed with from/to roles.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| slug | string | yes | The workspace slug. Accepts either the bare slug ('my-workspace') or the org-prefixed form ('my-org/my-workspace') as shown in the dashboard URL; both resolve to the same workspace. |
| member_id | string | yes | The WorkspaceMember id to update. Get this from list_workspace_members. |
| role | string | yes | New role. |
Remove a workspace member. 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 the same org leaves them with virtual editor access via the org-membership branch. Consent-gated for agents: the FIRST call returns { status: 'confirmation_required', confi
| Parameter | Type | Required | Notes |
|---|---|---|---|
| slug | string | yes | The workspace slug. Accepts either the bare slug ('my-workspace') or the org-prefixed form ('my-org/my-workspace') as shown in the dashboard URL; both resolve to the same workspace. |
| member_id | string | yes | The WorkspaceMember id to remove. Get this from list_workspace_members. |
| confirm_token | string | no | The token returned by the first call as confirm_token. Omit on the first call; include on the second call to execute the removal. Single-use, 60s TTL. Agents only; user callers don't need this. |
Replace a workspace's doc body. Takes EITHER TipTap JSON (content) OR Markdown (markdown): pass markdown when you're producing prose from scratch (CommonMark + GFM is the format every LLM emits natively), pass TipTap JSON when you need structural edits to an existing doc (round-trip from get_doc, mutate, write back). Beyond CommonMark + GFM, the markdown layer recognizes: - ** or the org-prefixed form ('my-org/my-workspace') as shown in the dashboard URL; both resolve to the same workspace. |
| surface_slug | string | no | Optional doc surface slug for multi-doc workspaces. Omit to write the primary doc surface. Use list_surfaces to see available slugs. |
| content | object | no | TipTap document JSON: { type: 'doc', content: [ ... ] }. Use this when round-tripping from get_doc to preserve formatting. Mutually exclusive with markdown (content wins if both are passed). |
| markdown | string | no | Markdown body (CommonMark + GFM). Converted server-side to TipTap JSON via the same converter that powers PUT /api/workspaces/:slug/doc. Use this when authoring prose from scratch; no need to hand-bui |
| if_unmodified_since | string | no | Optional precondition. ISO 8601 timestamp (typically the updatedAt you read via get_doc). When set and the doc has changed since this cutoff, the write is rejected with code: -32602, message des |
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 (imageCount, videoCount, mermaidCount, mathCount, svgCount, calloutCount, crossRefCount, mentionCount, embedCount, detailsCount, headingCount, byteSize, nodeCount, depth) plus structured DocGuardError-equivalent errors (cap breaches) and no
| Parameter | Type | Required | Notes |
|---|---|---|---|
| markdown | string | yes | Markdown body to validate. Same surface as update_doc: CommonMark + GFM plus mermaid / math / callouts / svg / details / cross-refs / embeds. |
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_doc_section (append-only at the end). Use this when the agent maintains a recurring section (e.g., a 'Status' block in a launch-prep doc, an 'Outcomes' block in a meeting note) and only needs to refresh that one piece. Without it, agents a
| Parameter | Type | Required | Notes |
|---|---|---|---|
| slug | string | yes | The workspace slug. Accepts either the bare slug ('my-workspace') or the org-prefixed form ('my-org/my-workspace'). |
| surface_slug | string | no | Optional doc surface slug for multi-doc workspaces. Omit to target the primary doc surface. |
| heading | string | yes | Plain text of the heading to find (case-sensitive, trimmed). For ## Outcomes, pass Outcomes. Hash marks and surrounding whitespace are stripped from the comparison automatically by the markdown co |
| markdown | string | yes | FULL replacement markdown for the section, including the heading line if you want to keep / rename / restructure it. Empty string deletes the 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 (any publicly-reachable HTTPS URL), lone video URLs (.mp4/.webm/.mov/.mkv/.m4v → native `<vide
| Parameter | Type | Required | Notes |
|---|---|---|---|
| slug | string | yes | The workspace slug. Accepts either the bare slug ('my-workspace') or the org-prefixed form ('my-org/my-workspace') as shown in the dashboard URL; both resolve to the same workspace. |
| surface_slug | string | no | Optional doc surface slug for multi-doc workspaces. Omit to append to the primary doc surface. |
| markdown | string | yes | Markdown chunk to append (CommonMark + GFM). Becomes one or more new blocks at the end of the existing doc. |
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; pass it to target a specific tab. Empty (never-written) html surfaces return { html:"", css:"", js:""
| Parameter | Type | Required | Notes |
|---|---|---|---|
| slug | string | yes | The workspace slug. Accepts bare or org-prefixed form. |
| surface_slug | string | no | Optional html surface slug. Omit to read the primary html surface. |
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 iframe on a separate origin (render.trydock.ai) with no access to Dock cookies, storage, or parent DOM — you have free rein inside that boundary. Use any web technology the browser supports: external CDN fonts and CSS (Google Fonts, Tailwi
| Parameter | Type | Required | Notes |
|---|---|---|---|
| slug | string | yes | The workspace slug. |
| surface_slug | string | no | Optional html surface slug. Omit to write the primary html surface. |
| html | string | no | HTML body. Sanitized server-side (smells stripped, but <script> and <link> allowed at v2 — load any CDN, write inline scripts, dynamic DOM). Use validate_html first for a pre-flight check. |
| css | string | no | CSS source. Applied inside the sandbox iframe. At v2 you can also <link rel="stylesheet"> external stylesheets from any HTTPS CDN — useful for Tailwind CDN, Google Fonts, icon kits. |
| js | string | no | JS source. Stored alongside html/css; at v2 you'll typically inline <script> in the html field instead (same execution context, fewer round-trips). 200 KB cap (matches the top-level update_html de |
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 dropped (true if the sanitizer would strip anything from html). Errors cover cap breaches (html_too_large, css_too_large, js_too_large, total_too_large) and sanitizer rejection (html_sanitize_rejected, html_sanitize_empty). At v2 th
| Parameter | Type | Required | Notes |
|---|---|---|---|
| html | string | no | HTML to validate (optional). |
| css | string | no | CSS to validate (optional). |
| js | string | no | JS to validate (optional). |
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 → a Notes tab (for prose), table → a Sheet tab (for records), html → a Mockup tab (sandboxed HTML p
| Parameter | Type | Required | Notes |
|---|---|---|---|
| name | string | yes | The workspace name. Required. Used to derive a slug if you don't pass one. |
| slug | string | no | Optional URL-friendly slug (lowercase, kebab-case, 3-64 chars). Auto-derived from name if omitted; if the derived slug collides within your org, a -N suffix is appended. |
| mode | string | no | Kind of the seeded primary surface — choose by what you're about to write. doc mints a Notes tab: use it for PROSE (briefs, notes, summaries, drafts, status reports). table mints a Sheet tab: use |
| initial_markdown | string | no | Optional Markdown body to seed the workspace's doc surface on create. CommonMark + GFM (tables, task lists, strikethrough). When provided AND mode is omitted, mode defaults to 'doc'. Skips the empty d |
Get recent activity events for a workspace. Who did what, when. Useful for understanding what's happened since you last looked.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| slug | string | yes | The workspace slug. Accepts either the bare slug ('my-workspace') or the org-prefixed form ('my-org/my-workspace') as shown in the dashboard URL; both resolve to the same workspace. |
| limit | number | no | Max events to return (default 20) |
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 navigable URL per hit so the agent can open the exact row or doc section. Access-gated; never returns hits from workspaces the caller can't open. Use when the user references something by keyword ("find my launch-plan workspace", "which row me
| Parameter | Type | Required | Notes |
|---|---|---|---|
| q | string | yes | Search query. Case-insensitive substring match. |
| kind | string | no | Narrow to one surface. 'all' (default) searches workspace names + row cells + doc sections. 'workspace' is fastest when the user is naming something, 'row' targets table data, 'doc-section' targets he |
| limit | number | no | Max hits to return (default 20, max 100). |
| offset | number | no | Hits to skip for pagination (default 0). |
Get 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. Both humans and agents can call this. Use before upgrade_plan to check whether you're actually
No parameter schema on file.
Move 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). The bill doesn't change as you add agents. If the org has no card on file, returns a Stripe Checkout URL for the human. If a card exists, a live plan switch (Pro ↔ Scale) is consent-gated. Two consent surfa
| Parameter | Type | Required | Notes |
|---|---|---|---|
| plan | string | no | Target plan. Defaults to 'pro'. |
| mode | string | no | Consent surface. 'chat' (default) uses the in-chat confirm_token round-trip. 'web' returns an approval_url the user clicks in a browser. Use 'web' if you're headless or your user prefers a click-to-ap |
| confirm_token | string | no | Chat-mode only. The token returned by the first call as confirm_token. Omit on the first call; include on the second call to execute the plan flip. Single-use, 60s TTL, bound to {org, caller, operat |
Schedule a downgrade to Free at the end of the current billing period. The org keeps its current plan (Pro or Scale) and paid limits until the period ends. No-op when already on Free. Consent-gated. Two consent surfaces, you pick via mode: (1) chat (default): FIRST call returns { status: 'confirmation_required', confirm_token, message, expires_in }; surface to your user and re-call within 60s
| Parameter | Type | Required | Notes |
|---|---|---|---|
| mode | string | no | Consent surface. 'chat' (default) uses the in-chat confirm_token round-trip. 'web' returns an approval_url the user clicks in a browser. |
| confirm_token | string | no | Chat-mode only. The token returned by the first call as confirm_token. Omit on the first call; include on the second call to execute the scheduled downgrade. Single-use, 60s TTL. |
Ask Dock to raise a plan limit (agents, workspaces, rows, or other). We record the signal on the admin side; there's no reply loop. Use this when you hit a cap you can't resolve with upgrade_plan (e.g. you're already Pro but need a custom limit).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| kind | string | yes | Which limit to raise |
| desiredValue | number | no | Optional: the specific limit you'd like |
| reason | string | no | Optional: 1-2 sentences on the use case |
List the surfaces (tabs) inside a workspace. A workspace can hold any combination of table (rows + columns) and doc (TipTap body) surfaces, one or many of either kind; 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 tab strip. Archived surfaces are hidden by default; pass archived: true to include them.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| slug | string | yes | The workspace slug. Accepts either the bare slug ('my-workspace') or the org-prefixed form ('my-org/my-workspace') as shown in the dashboard URL; both resolve to the same workspace. |
| archived | boolean | no | Include archived surfaces too. Default false (live tabs only). |
Create a new surface (tab) inside a workspace. kind picks table, doc, html, or files. Optional slug (lowercase kebab-case, 3-64 chars); when omitted the server slugifies name and appends a numeric suffix on collision. Optional columns overrides the default Title/Status/Notes triple for table kinds; ignored for doc and html. html surfaces start with an empty body — write con
| Parameter | Type | Required | Notes |
|---|---|---|---|
| slug | string | yes | The workspace slug. Accepts either the bare slug ('my-workspace') or the org-prefixed form ('my-org/my-workspace') as shown in the dashboard URL; both resolve to the same workspace. |
| kind | string | yes | Surface kind. table for rows + columns, doc for TipTap body, html for a sandboxed HTML mockup tab, files for uploaded files + folders. |
| name | string | yes | Display name shown on the tab. 1-64 chars. |
| surface_slug | string | no | Optional URL-friendly slug for the surface (lowercase kebab-case, 3-64 chars). Auto-derived from name when omitted. |
| columns | array | no | Optional initial columns for table kind. Same shape as get_workspace_schema returns. Defaults to Title/Status/Notes when omitted. |
Rename, reslug, reorder, OR replace the column schema of a surface. Pass any subset of name, new_surface_slug, position, columns. Position is 0-based and is normalised across siblings so positions stay contiguous. Editor role required. Emits surface.updated. Column schema (columns): table surfaces only. Pass a full ColumnDef[] to REPLACE the existing schema atomically (no per-colu
| Parameter | Type | Required | Notes |
|---|---|---|---|
| slug | string | yes | The workspace slug. Accepts either the bare slug ('my-workspace') or the org-prefixed form ('my-org/my-workspace') as shown in the dashboard URL; both resolve to the same workspace. |
| surface_slug | string | yes | The current slug of the surface to update. |
| name | string | no | New display name. 1-64 chars. |
| new_surface_slug | string | no | New slug for the surface (lowercase kebab-case, 3-64 chars). Must be unique within the workspace. |
| position | number | no | 0-based index in the tab strip. Other surfaces shift to keep positions contiguous. |
| columns | array | no | Optional. Full replacement ColumnDef[] for the surface's table schema. Table surfaces only — doc/html surfaces 400 with a table-only error. Each item: `{ key, label, type, position, width?, hidden?, d |
Archive a surface (soft-delete). Rows + doc body are preserved for restore. Idempotent: calling on an already-archived surface returns its current archivedAt unchanged. Cannot archive the only live surface in a workspace; create another first. Editor role required. Emits surface.archived.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| slug | string | yes | The workspace slug. Accepts either the bare slug ('my-workspace') or the org-prefixed form ('my-org/my-workspace') as shown in the dashboard URL; both resolve to the same workspace. |
| surface_slug | string | yes | The slug of the surface to archive. |
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 time.
No parameter schema on file.
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 discarding the response. Subsequent requests with the OLD key return 401, so swap creds before retrying. Agents may rotate ONLY their own key (omit id to default to it); users may rotate any key they own. Use this for routine credential hyg
| Parameter | Type | Required | Notes |
|---|---|---|---|
| id | string | no | API key id to rotate. Omit when called by an agent; defaults to the agent's own current key. Required for user callers to disambiguate when more than one key exists. |
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 a self-destruct, the response itself completes but the very next request will fail. Users may revoke any key they own. To swap creds without going dark in the gap, use rotate_api_key instead.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| id | string | no | API key id to revoke. Omit when called by an agent; defaults to the agent's own current 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 agent's owner to click; poll polling_url for the result. Approval gate: the approving user must be the ta
| Parameter | Type | Required | Notes |
|---|---|---|---|
| target_agent_id | string | yes | The id of the sibling agent whose key should be revoked. Get from list_workspace_members or list_workspaces; every member row carries the agent id. |
| reason | string | no | 1-2 sentences on why you're asking. Surfaces verbatim on the consent card so the owner knows what they're saying yes to. Capped at 500 chars. |
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. The new key plaintext is INTENTIONALLY not returned to the requesting agent; the plaintext is surfaced only to the human owner via Settings → Agents, who hands it to the target agent out of band.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| target_agent_id | string | yes | The id of the sibling agent whose key should be rotated. |
| reason | string | no | 1-2 sentences on why. Surfaces on the consent card. Capped at 500 chars. |
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 before adding or removing endpoints.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| org_slug | string | yes | Org slug. The webhook collection is org-scoped, not workspace-scoped; one URL receives events from every workspace in the org. |
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.* / doc.*; an empty array means "none" so always pass at least one. Returns the signing secret exactly on
| Parameter | Type | Required | Notes |
|---|---|---|---|
| org_slug | string | yes | Org slug |
| url | string | yes | Public HTTPS URL to POST events to. Loopback (127.0.0.0/8, ::1), RFC1918 private ranges, link-local, and cloud-metadata addresses (169.254.169.254, etc.) are rejected. Max 2048 chars. |
| events | array | yes | Event kinds to subscribe to. Pick from: row.created, row.updated, row.deleted, row.sealed, comment.added, comment.deleted, member.invited, member.joined, member.removed, member.role_changed, workspace |
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 flipping back is one call. Use to silence a noisy receiver during maintenance without losing its URL + secret + event subscription.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| org_slug | string | yes | Org slug |
| webhook_id | string | yes | Webhook id (from list_webhooks) |
| active | boolean | yes | true to enable delivery, false to silence. |
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, deliveries are signed with the new secret only; receivers still validating against the old one will reject (401) until updated. Use after a suspected leak or as part of routine rotation hygiene.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| org_slug | string | yes | Org slug |
| webhook_id | string | yes | Webhook id (from list_webhooks) |
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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| org_slug | string | yes | Org slug |
| webhook_id | string | yes | Webhook id (from list_webhooks) |
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 this message in their drawer (and, once they have a Dock-connected agent worker running, their agent harness's inbox). Address format is <agent_slug>@<user_slug>: flint@socrates targets the flint agent owned by user socrates; `self@<
| Parameter | Type | Required | Notes |
|---|---|---|---|
| to | string | yes | Recipient address in the form <agent_slug>@<user_slug>. Examples: flint@socrates (agent), self@govind (human's self-agent — use to DM a person directly). You may also pass an agent's stable id ( |
| body | string | yes | Message text. Plain string, 1-32000 chars. @<slug> mentions inside the body CC the named agent on the message. |
| replyTo | string | no | Optional cue message id to thread under. When set, the recipient's drawer renders this as a reply with an inline parent-preview. Get the id from a prior send_message response or from the recipient's |
| send_at | string | no | Optional ISO-8601 UTC timestamp to schedule the message for future delivery (e.g. 2026-06-04T15:00:00Z). Omit to send now. A past timestamp is treated as send-now. Honored only where scheduled send |
File a support ticket. Mirrors to a GitHub issue in Dock's support repo and shows up in the user's dashboard at /settings/support. Use this for bugs (you hit an error), feature requests (Dock is missing something), billing (Stripe/subscription), questions (how do I X), or anything else. Prefer request_limit_increase when the user is simply hitting a plan cap.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| kind | string | yes | Ticket category. |
| title | string | yes | Short headline (3-200 chars). Be specific: 'Table view loses focus on cell edit' beats 'broken'. |
| body | string | yes | Detailed description (5-10000 chars). For bugs: include what you did, what happened, what you expected. For feature requests: the use case. |
| context | object | no | Optional structured metadata echoed into the GitHub issue (workspace slug, URL, error trace, etc). |
| attachmentUrls | array | no | Optional list of screenshot/attachment URLs to embed in the issue. URLs must be hosted on the Dock blob store; mint them via POST /api/support/upload first. Max 4. |
List support tickets (READ-ONLY) from Dock's support repo. These are the SAME tickets create_support_ticket files, so the list reflects ALL tickets — whether routed through chat or filed directly via the support API/form. Built for a support engineer's queue. Newest first. Filter by state ('open' = the live queue (default), 'closed', or 'all') and cap with limit (1-100, default 30). Each entry
| Parameter | Type | Required | Notes |
|---|---|---|---|
| state | string | no | Which tickets to list. Default 'open' (the live queue). |
| limit | number | no | Max tickets to return, 1-100. Default 30. |
Read ONE support ticket by its number (as shown in list_support_tickets), including the full body/description. Read-only, scoped to Dock's support repo. Returns not-found for a number that isn't a support ticket.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| number | number | yes | The ticket number from list_support_tickets. |
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 formula via update_row / create_row so you only reference functions that actually exist (no #NAME? errors).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| category | string | no | Optional category filter. |
| slice | string | no | Optional rollout-slice filter. |
| name | string | no | Optional case-insensitive substring filter; matches function name, description, and signature. |
Parse-check a formula expression server-side without writing anything. Returns { ok, error?, rewrittenFormula?, referencedFunctions, unknownFunctions }. Use BEFORE update_row / create_row when the formula references functions or syntax you're not 100% sure of: a =SUMIFS(...) with the wrong arg order or a misspelled =AVERAG(...) will round-trip into the cell as a stored carrier with no value, a
| Parameter | Type | Required | Notes |
|---|---|---|---|
| formula | string | yes | Formula expression to validate, including the leading '='. Example: '=SUMIF(B2:B10, ">0")'. Max 4000 chars. |
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 no cell references. IN-WORKSPACE (pass workspace_slug, optionally at) — loads the workspace's grid
| Parameter | Type | Required | Notes |
|---|---|---|---|
| formula | string | yes | Formula expression including '='. Max 4000 chars. |
| workspace_slug | string | no | Optional workspace slug. Pass to evaluate against the workspace's actual rows + columns. Accepts bare or org-prefixed form. |
| at | object | no | Optional anchor cell (only used with workspace_slug). The formula evaluates as if pasted into this cell; relative references resolve against it. Omit to anchor at the workspace's first cell. |
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 server flattens nested replies to single depth and auto-unresolves a resolved parent). Mentions are an arra
| Parameter | Type | Required | Notes |
|---|---|---|---|
| slug | string | yes | The workspace slug ('my-workspace' or 'my-org/my-workspace'). |
| target | object | yes | Polymorphic target. Shapes: { type: 'row', rowId: '<cuid>' } { type: 'cell', rowId: '<cuid>', columnKey: '<key>' } { type: 'doc_range', surfaceSlug: '<slug>', anchor: { fr |
| body | string | yes | Comment body (plain text or markdown). 1-5000 chars. |
| parentId | string | no | Optional parent comment id. When passed, this comment becomes a reply in the thread. Nested replies flatten to single-depth (reply-to-reply re-points at the root). Re-opens a resolved parent. |
| mentions | array | no | Optional [{ kind, id, label }] mentions. Each mention's principal must have workspace access. Fires inbox + email + webhook fan-out for newly-mentioned recipients only. |
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 tab'), status (open | resolved | all, default open), mentioning_me: true for comments that @-mention the caller, or author: <principalId> for comments by a specifi
| Parameter | Type | Required | Notes |
|---|---|---|---|
| slug | string | yes | The workspace slug. |
| target_type | string | no | Filter by comment target type. |
| target_id | string | no | Filter by exact target id. For cells the id is <rowId>:<columnKey>; for doc_range/html_element/surface it's the Surface cuid. Combine with target_type for unambiguous filtering. |
| surface | string | no | Surface slug filter. Returns every comment anchored anywhere inside this surface (doc_range / html_element / surface scope, plus row + cell comments on rows that live on the surface). 404 silently if |
| status | string | no | Resolution state filter. Default open. |
| mentioning_me | boolean | no | When true, only return comments that @-mention the calling principal. Equivalent to REST ?mentioning=me. |
| author | string | no | Filter by author principal id. Useful for 'comments by Argus on this workspace' agent loops. |
| limit | number | no | Max results (1-200, default 50). |
| offset | number | no | Number of comments to skip for pagination. |
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 parentId and needs full context before composing a reply.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| comment_id | string | yes | Comment id (any node in the thread). |
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 a resolved parent. Same threading rules as add_comment: nested replies flatten to single depth, so rep
| Parameter | Type | Required | Notes |
|---|---|---|---|
| comment_id | string | yes | Parent comment id. Reply is posted as a child of this thread; if the parent itself is a reply, the new comment re-points to the thread root. |
| body | string | yes | Reply body (1-5000 chars). |
| mentions | array | no | Optional [{ kind, id, label }] mentions on the reply. Same validation + fan-out rules as add_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 for.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| comment_id | string | yes | Comment id to resolve (use the thread root, resolving a reply targets the reply itself, not the thread). |
Re-open a previously-resolved comment thread. Idempotent on already-unresolved comments. Fires comment.unresolved with reason: 'manual'. (Auto-unresolve on reply fires the same event with reason: 'reply' and is handled by add_comment / reply_to_comment.)
| Parameter | Type | Required | Notes |
|---|---|---|---|
| comment_id | string | yes | Comment id to re-open. |
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 / comment.reaction_removed. Use this for lightweight agent acknowledgement (👍 on a request before reading, 👀 to ma
| Parameter | Type | Required | Notes |
|---|---|---|---|
| comment_id | string | yes | Comment to react to. |
| emoji | string | yes | Emoji character (e.g. '👍', '✅', '🚀'). |
| action | string | no | Whether to add or remove the reaction. Default add. |
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 descend into a sub-folder. Gated behind FILES_SURFACE_ENABLED + per-user allowlist (in beta on socrat
| Parameter | Type | Required | Notes |
|---|---|---|---|
| slug | string | yes | The workspace slug. Accepts either the bare slug or the org-prefixed form ('my-org/my-workspace') as shown in the dashboard URL. |
| surface_slug | string | yes | Files-kind surface slug within the workspace. Use list_surfaces to enumerate; the Files surface kind is 'files'. |
| parent_folder_id | string | no | Folder id to descend into. Omit (or pass null) for the surface root. |
Fetch metadata + a download URL for a single file by id. The download_url field is a direct Vercel Blob URL valid until the file is hard-deleted (Phase 5; Phase 6 wires a files.trydock.ai signed-URL minter with 5-min TTL + auth re-check). Useful for an agent reading file contents server-side (HTTP GET the URL) or surfacing a download link in a reply. Gated behind FILES_SURFACE_ENABLED + per-user
| Parameter | Type | Required | Notes |
|---|---|---|---|
| slug | string | yes | The workspace slug. Accepts either the bare slug or the org-prefixed form ('my-org/my-workspace') as shown in the dashboard URL. |
| file_id | string | yes | The file cuid (from list_files). Surface + workspace are derived from the file row, so no surface_slug arg is needed. |
Soft-delete a file by id. Moves to a 30-day trash window before the cleanup cron hard-deletes + refunds the storage quota. Restorable via the REST PATCH endpoint (PATCH /api/workspaces/{slug}/files/{id} body: {restore:true}); a PATCH-equivalent MCP tool ships in Phase 6. Editor role required. Gated behind FILES_SURFACE_ENABLED + per-user allowlist.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| slug | string | yes | The workspace slug. Accepts either the bare slug or the org-prefixed form ('my-org/my-workspace') as shown in the dashboard URL. |
| file_id | string | yes | The file cuid (from list_files). |
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 file. The token is 32 random bytes (~256 bits of entropy) so guessing is infeasible. Revoke later with revoke_file_share. Editor role required. Gated behind FILES_SURFACE_ENABLED + per-user allowlist. Use when a workflow needs to hand th
| Parameter | Type | Required | Notes |
|---|---|---|---|
| slug | string | yes | The workspace slug. Accepts either the bare slug or the org-prefixed form ('my-org/my-workspace') as shown in the dashboard URL. |
| file_id | string | yes | The file cuid (from list_files). |
Soft-revoke a share token minted via share_file. The public /share/files/<token> URL stops resolving immediately. Idempotent: revoking an already-revoked token returns alreadyRevoked: true without error. Editor role required. Gated behind FILES_SURFACE_ENABLED + per-user allowlist.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| slug | string | yes | The workspace slug. |
| file_id | string | yes | The file cuid. |
| token_id | string | yes | The share token id returned by share_file (NOT the url token). Same id appears in the list_file_shares response. |
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 view. Gated behind FILES_SURFACE_ENABLED + per-user allowlist.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| slug | string | yes | The workspace slug. Accepts either the bare slug or the org-prefixed form ('my-org/my-workspace') as shown in the dashboard URL. |
| surface_slug | string | yes | Files-kind surface slug within the workspace. |
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 three identity fields, and it matters which you use: • name — the agent's DISPLAY NAME, for reading
No parameter schema on file.
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 exact NAMES of the keys your owner has vaulted. Pass one of these names verbatim to pull_capability — do NOT guess or normalize it (a key may be vaulted as "Gemini", not "GEMINI_API_KEY"). Names only, never secrets, so this is safe to call f
No parameter schema on file.
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 capability name from list_capabilities (a mismatched name fails the same way a missing key does — re-check the list first if it fails). The secret is returned to you directly and securely; USE it in the API call, and NEVER echo, log, quote, or
| Parameter | Type | Required | Notes |
|---|---|---|---|
| name | string | yes | The exact capability name as shown by list_capabilities (e.g. "Gemini"). 2–64 chars, letters/digits/._:- only. |
Ask your owner to connect a third-party app (Gmail, Slack, Notion, Linear...) so you can use its tools. This SHOWS THEM A CARD to approve — it does NOT connect anything and does NOT give you access. Call it when a task needs an app you cannot currently reach, then tell the user plainly that you have asked. Do not call it repeatedly for the same app in one conversation; one ask is enough, and the a
| Parameter | Type | Required | Notes |
|---|---|---|---|
| toolkit_slug | string | yes | The app to request, e.g. 'gmail', 'slack', 'notion', 'linear'. Must be one Dock offers; anything else is refused. |
| reason | string | no | One short sentence on why you need it, shown to the user on the card. Be concrete: 'to read the thread you asked me to summarise' beats 'to help you'. |
- Every tool — any call limit is its publisher’s, not ours
- No card, and mcprush charges nothing for it
- Runs at its publisher’s own address — this marketplace is not in the path
- Nothing to cap, because mcprush bills nothing
What counts against your monthly calls
| Tool | Unit | Calls used | Out of the allowance |
|---|
Nothing here is billable: mcprush charges nothing to install Dock or to call it, at any volume.
Two independent axes, because powerful and malicious are different questions. The grade is threat only. The capability level is blast radius, and it is never a penalty on the grade — it is priced as one subtract-only term in the score, where you can see it.
This listing is an address its publisher runs, and you connect to it directly — this marketplace is not in the path. The scanner reads packages and public source, and an address is neither. So there is no grade — not a withheld one, an unmeasured one.
Release history
This is an address its publisher runs: which release it serves is theirs to choose, so there is nothing here to pin. The history below is for reading; the current release on file is 1.1.0.
No release note was published with this version.
One review per account, from a signed-in account that does not publish this listing. Nothing else is asked — you can say what you think before you install it. Publishers can reply once per review, and a review can be edited or deleted by whoever wrote it.
Any signed-in account that does not publish Dock can review it, once — before installing it or after. A review from an account that has installed it is marked as one.
Nobody has reviewed this listing. The rating on the card is the mean of the reviews written here and nothing else, so there is no rating until somebody writes the first — which takes a signed-in account that does not publish it, and nothing else.