Point an MCP client such as Claude Code, Claude Desktop, or Cursor at the gateway, and it can call every tool your token allows, in any workspace you belong to.
The gateway speaks MCP over HTTP at:
https://universalchatbot.com/mcp
One address serves every workspace you belong to. The workspace is named on each call, not in the address, so a single connection can work across all of them.
You need to create an access token before connecting.
Every request carries your token as a bearer header:
Authorization: Bearer <your-token>
A missing or invalid token is refused. The client only ever sees the tools your token's scopes allow.
Add the server from the command line:
claude mcp add --transport http universal-chatbot \
https://universalchatbot.com/mcp \
--header "Authorization: Bearer <your-token>"
Check it connected:
claude mcp list
The row should read universal-chatbot ... ✓ Connected. Start a new session and the tools appear as universal-chatbot tools.
Desktop clients reach a remote server through mcp-remote, which carries the token header for you. Add this to the client's MCP config:
{
"mcpServers": {
"universal-chatbot": {
"command": "npx",
"args": [
"mcp-remote",
"https://universalchatbot.com/mcp",
"--header",
"Authorization: Bearer ${UCB_TOKEN}"
],
"env": { "UCB_TOKEN": "<your-token>" }
}
}
}
Restart the client and the tools become available in a new chat.
Every tool except workspaces.list takes a workspace argument: the subdomain of the workspace to act in, the same slug you see in the dashboard address. Ask the agent to call workspaces.list first. It returns each workspace you can reach, the role you hold there, and what this token may do in it. From then on the agent passes the subdomain on each call, and can move between workspaces without reconnecting.
A call that names no workspace, or one the token cannot reach, fails with a workspace error rather than running somewhere else.
workspaces.list shows the scopes that actually apply in each.