Reference

MCP server

Dock speaks the Model Context Protocol over HTTPS. Any MCP-capable client can add Dock as a remote connector with OAuth 2.1 + Dynamic Client Registration. No manual config.

Endpoint

https://trydock.ai/api/mcp

OAuth metadata lives at the standard well-known paths:

  • /.well-known/oauth-authorization-server
  • /.well-known/oauth-protected-resource

Adding Dock to a client

Claude.ai (Chat web + Projects)

  1. Settings → Connectors → Add custom connector
  2. Paste https://trydock.ai/api/mcp
  3. Click Connect. Approve in the Dock consent screen.
  4. Done. The agent can now call Dock tools in every Chat and Project.

Claude Code (remote MCP)

mcp.json / settings.jsonjson
{
  "mcpServers": {
    "dock": {
      "url": "https://trydock.ai/api/mcp",
      "auth": { "type": "bearer", "token": "dk_..." }
    }
  }
}

Claude Desktop, Cursor, Windsurf, Zed, Cline, Continue (local stdio)

Most desktop agents still prefer local stdio MCP. Use the official bridge @go-dock/mcp — a thin Node process that forwards stdio JSON-RPC to Dock's hosted HTTPS endpoint. Same auth (Bearer API key), same 8 tools, no OAuth dance.

Works for Claude Desktop, Cursor, Windsurf, Clinejson
{
  "mcpServers": {
    "dock": {
      "command": "npx",
      "args": ["-y", "@go-dock/mcp"],
      "env": {
        "DOCK_API_KEY": "dk_..."
      }
    }
  }
}

Per-client config file paths + Zed/Continue variants live in the bridge repo: go-dock/mcp/configs. Schemas for all 8 tools are in go-dock/mcp/schemas — audit them before installing.

Agent frameworks (LangChain, Mastra, CrewAI…)

Each framework has its own MCP adapter. Point it at https://trydock.ai/api/mcp with a Bearer token, or spawn npx -y @go-dock/mcp as a stdio transport if the framework expects local MCP.

Tools

list_workspaces
List every workspace this agent can access.
Arguments
{}
get_workspace
Fetch a workspace by slug, with columns and member count.
Arguments
{ "slug": "content-pipeline" }
list_rows
List rows, optionally filtered or paginated.
Arguments
{ "slug": "content-pipeline", "limit": 50 }
create_row
Append a row. Returns the new row id.
Arguments
{ "slug": "content-pipeline", "data": { "title": "...", "status": "drafted" } }
update_row
Partial-merge update. Only the fields you send are changed.
Arguments
{ "slug": "content-pipeline", "id": "row_01HX...", "data": { "status": "sealed" } }
delete_row
Delete a row by id.
Arguments
{ "slug": "content-pipeline", "id": "row_01HX..." }
create_workspace
Create a new workspace on the fly.
Arguments
{ "name": "New", "slug": "new", "mode": "table" }
get_recent_events
Read the last N events for a workspace. Useful for catch-up.
Arguments
{ "slug": "content-pipeline", "limit": 50 }

Protocol notes

  • Transport: HTTP JSON-RPC (one request per call, no streaming).
  • Auth: OAuth 2.1 with PKCE + Dynamic Client Registration for interactive clients. Bearer tokens (dk_...) for headless / programmatic clients.
  • Errors follow the JSON-RPC error spec. An x-request-id header is also returned for cross-ref with server logs.
  • MCP tool responses mirror the REST endpoint shapes. A row returned from create_row is byte-for-byte the same as POST /rows.

Manual JSON-RPC example

curl: list toolsbash
curl -X POST https://trydock.ai/api/mcp \
  -H "Authorization: Bearer dk_..." \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
curl: call a toolbash
curl -X POST https://trydock.ai/api/mcp \
  -H "Authorization: Bearer dk_..." \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc":"2.0","id":2,"method":"tools/call",
    "params":{ "name":"create_row",
      "arguments":{"slug":"content-pipeline",
        "data":{"title":"Via MCP","status":"drafted"}}}
  }'

Related: Connecting agents guide · REST reference