Connect
openclaw logo

OpenClaw

Dock plugs into OpenClaw as a remote MCP server. Drop one block into ~/.openclaw/openclaw.json, restart the gateway, and your OpenClaw agents can read and write Dock workspaces alongside everything else they do.

Client
OpenClaw
Open-source coding agent. Config at ~/.openclaw/openclaw.json.
HTTP JSON-RPC (streamable-http)
Dock MCP
trydock.ai/api/mcp
37 tools · OAuth 2.1 + DCR · Bearer
Auth path
1
Mint a dk_ key in Dock Settings → API keys.
2
Paste it as Authorization: Bearer dk_… in the client config.
3
Client calls Dock MCP directly on every request.

Prerequisites

  • OpenClaw installed and its gateway running. Check with openclaw --version. See docs.openclaw.ai if you don't have it yet.
  • A Dock account and at least one workspace. Dock is invite-only during beta. request an invite if you need one.

Step 1. Mint a Dock API key

OpenClaw uses Bearer-token auth for remote MCP servers. Mint a scoped dk_ key from the Dock dashboard (Settings → API keys → Create key) or from the Dock CLI:

Mint a dk_ key for OpenClawbash
npx -y @trydock/cli key new --name "OpenClaw · Vega" --workspace launch-plan

# → dk_c914f1c6...   (shown once)

Save the secret. The same key unlocks every tool call OpenClaw makes to Dock.

Step 2. Edit openclaw.json

Config file
~/.openclaw/openclaw.json
Reload
Restart the OpenClaw gateway (openclaw gateway restart) after saving. The gateway reloads mcpServers on startup only.
Alternative
Skip hand-editing: ask your OpenClaw agent to run the mcporter skill with the prompt "add Dock as a remote MCP server". It writes the JSON and reloads for you.

Open the config and drop Dock into the mcpServers object. If the file doesn't exist yet, create it with the structure below.

~/.openclaw/openclaw.jsonjson
{
  "mcpServers": {
    "dock": {
      "url": "https://trydock.ai/api/mcp",
      "transport": "streamable-http",
      "headers": {
        "Authorization": "Bearer dk_c914f1c6..."
      }
    }
  }
}

Prefer an env-var indirection (so the secret doesn't sit in a file)?

Indirect via env varjson
{
  "mcpServers": {
    "dock": {
      "url": "https://trydock.ai/api/mcp",
      "transport": "streamable-http",
      "headers": {
        "Authorization": "Bearer ${DOCK_API_KEY}"
      }
    }
  }
}

Export DOCK_API_KEY in the shell that launches the gateway and OpenClaw interpolates it on load.

Step 3. Restart the gateway

$ openclaw gateway restart

◐ Stopping openclaw-gateway...
◐ Reloading ~/.openclaw/openclaw.json...
✓ Loaded 4 MCP servers (filesystem, github, dock, playwright)
✓ openclaw-gateway running on ws://127.0.0.1:18789

Step 4. Verify

Start an OpenClaw session and list the available MCP servers:

$ openclaw

You: /mcp list

OpenClaw:
  filesystem       4 tools   (local stdio)
  github           8 tools   (local stdio)
  dock             63 tools  (remote streamable-http)
  playwright       6 tools   (local stdio)

You: using dock, list my workspaces

OpenClaw: [calls list_workspaces]
  Found 3 workspaces:
    content-pipeline   247 rows   last edit 4m ago
    research-queue     204 rows   last edit 12m ago
    product-brief      doc        last edit 30s ago

Troubleshooting

Symptom
Fix
/mcp list doesn't show dock
The gateway didn't reload. Run openclaw gateway restart, check the output for a JSON parse error pointing at openclaw.json. A trailing comma is the usual culprit.
Dock loads but every call returns 401
The Bearer header didn't interpolate. If you used ${DOCK_API_KEY}, make sure the variable is exported in the shell that launched openclaw gateway (not just your interactive shell). Export it, restart the gateway.
Tools show but return Workspace not found
The key you minted was scoped to a different workspace. Mint a new key scoped to the workspace you're addressing, or make the agent pass the full {org}/{workspace} path.
Connection drops intermittently
Dock is up (status.trydock.ai) but your network is flaky. OpenClaw's gateway auto-retries transient MCP errors. Persistent drops usually mean a corporate proxy is terminating long-lived HTTPS connections. Ask your IT team to allowlist trydock.ai.

Why this matters

OpenClaw's mcporter skill lets every OpenClaw agent manage its own toolbelt in natural language. Once Dock is wired into the gateway, an agent can add, remove, and call Dock tools by name without you touching the config again. You can even ask one OpenClaw agent to teach another the Dock workflow:

Example prompttext
Use the dock MCP to find my 5 oldest "drafted" rows in
content-pipeline, then ask Argus to take them over.
Seal each row as you finish and post a summary in the
brief doc.

That single prompt touches list_rows, update_row, and the doc endpoint, and OpenClaw coordinates the handoff between agents without extra glue. Dock is the durable state; OpenClaw is the conductor.

Frequently asked questions

How do I connect Dock to OpenClaw?
Add Dock as a remote MCP server in OpenClaw. Either let OpenClaw's OAuth 2.1 + DCR flow handle auth (recommended; no credential ceremony), or paste a scoped Dock `dk_` API key in OpenClaw's MCP config under the `Authorization: Bearer dk_…` header.
Does OpenClaw work with Dock's MCP server?
Yes. Dock exposes 43 MCP tools at `https://trydock.ai/api/mcp` over HTTP transport with OAuth 2.1 + DCR and Bearer-token auth. Any MCP-spec-compliant client, including OpenClaw, discovers them via the standard `tools/list` handshake. Learn more →
How do I limit which Dock workspaces OpenClaw can write to?
When you mint the `dk_` key for OpenClaw in Settings → API keys, pick the workspace from the dropdown. The key returns 403 on every other workspace regardless of what the prompt asks. To scope across multiple, mint multiple keys or add the agent as an explicit member of each. Learn more →
How do I see what OpenClaw did in my Dock workspace?
Open the workspace in your browser. Every row OpenClaw created or updated is stamped with the agent's identity (orb + name) in the createdBy / updatedBy field. The workspace activity feed shows every action chronologically. Learn more →
How do I undo a row OpenClaw wrote to Dock?
Open the row, click the kebab menu, choose Delete (soft-delete preserves history). For bulk reverts use the activity feed to find the agent's session and delete its rows in batch. To prevent future writes, revoke OpenClaw's `dk_` key in Settings → API keys.
Can multiple OpenClaw sessions share state through Dock?
Yes. Every OpenClaw session reads and writes the same workspace, so handoffs across machines or across long-running multi-session workflows just work. The Dock workspace IS the shared state; no separate message bus required.
Does OpenClaw need OAuth or a dk_ API key for Dock?
Either works. OAuth 2.1 + DCR is the recommended path: OpenClaw hits Dock's discovery endpoint at `/.well-known/oauth-authorization-server` and auto-registers as a client. The `dk_` Bearer token path is fine for owned-code agents and CI scripts; pick whichever fits your stack. Learn more →
What is OpenClaw and how does it use Dock?
OpenClaw is an open-source Claude-Code-like coding agent that supports MCP servers natively. Connect Dock via OpenClaw's `--mcp` flag pointing at `https://trydock.ai/api/mcp` with your Bearer token.
How do I run OpenClaw with Dock without leaking credentials?
Export `DOCK_API_KEY=dk_...` in your shell, then `openclaw --mcp dock=https://trydock.ai/api/mcp --mcp-header "dock:Authorization=Bearer $DOCK_API_KEY"`. The key never lands in OpenClaw's config file or your shell history.
Can OpenClaw and Claude Code share state through the same Dock workspace?
Yes. Both agents authenticate as separate signed agents (each with its own `dk_` key), so attribution is preserved per agent. They see each other's writes via Dock's real-time SSE stream.
Updated