unlob Docs
Browse documentation

Cline and Windsurf

Two editors, one config shape, one file each.

Cline

Open the MCP Servers panel from the Cline sidebar and edit the configuration — that opens cline_mcp_settings.json, whose location depends on your editor and platform, which is why going through the UI is easier than finding it.

{
  "mcpServers": {
    "unlob": {
      "type": "streamableHttp",
      "url": "https://api.unlob.com/mcp",
      "headers": { "x-api-key": "ulb_…" }
    }
  }
}

If your build does not recognise the remote form, use the bridge below.

Windsurf

~/.codeium/windsurf/mcp_config.json, reachable from Settings → Cascade → MCP Servers.

{
  "mcpServers": {
    "unlob": {
      "serverUrl": "https://api.unlob.com/mcp",
      "headers": { "x-api-key": "ulb_…" }
    }
  }
}

Windsurf has used serverUrl where most clients use url. If the server never appears, that key name is the first thing to check.

The bridge, for either

Works regardless of what the build supports:

{
  "mcpServers": {
    "unlob": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://api.unlob.com/mcp",
               "--header", "x-api-key:ulb_…"]
    }
  }
}

No space after the colon.

Both

Reload the window after editing, then check the server lists its tools. Neither editor is loud about a failed handshake — an empty tool list is what you will see, so Troubleshooting is the next stop rather than the config file.

These two move quickly. Where this page and their own documentation disagree, believe theirs, and the Inspector will tell you whether the problem is the client or the server.

One allowance, however many editors share it

If the same key is configured in both Cline and Windsurf — common on a machine where you try one and then the other — they draw on the same per-minute rate and the same monthly credits. A burst of tool calls from one does not leave the other a separate allowance. GET /account reports what is left regardless of which editor asked; see Pricing and plans for what each tier includes.

A 429 here means one of two unrelated things, and neither editor’s UI distinguishes them for you:

retry-after: 23     rate limit — safe to retry once, after that many seconds
(no header)         out of monthly credits — retrying will not help

The number is the real wait, not a constant: it is how much of the current minute is left.

Worth setting once, in whichever of the two you keep as your daily driver: tell the agent, in its custom instructions, to check for retry-after before it tries a failed call again. Rate limits and credits has the rest of the status table, including the separate case where the account itself is suspended rather than merely out of credits.

Why two config files exist for what is nearly the same server entry

Cline and Windsurf both grew out of the same fork lineage and both speak Streamable HTTP, but neither reads the other’s config file, and the key name difference — url against serverUrl — is the part that actually bites, because a config that is silently ignored looks identical to a server that is unreachable. If you keep both installed and only use one day to day, it is worth deleting the unused editor’s config entirely rather than leaving a stale, unmaintained copy of the server entry sitting there: a key rotated in one file and forgotten in the other is a live credential nobody is watching.

Neither editor currently exposes per-server logging in a place this page can point to reliably across versions, which is exactly why the Inspector is the better first stop than either editor’s own output panel when a call fails silently — it shows the JSON-RPC frame directly, independent of how either editor chooses to render or swallow it.

Both editors read the config once, on start, rather than watching the file continuously in every version — the usual reason a change “did not take” even though the file on disk is correct is that the reload above was skipped, not that the edit was wrong.

Next