MCP Bots

Connect OpenClaw or another AI client to a room.

Room admins can create scoped MCP bot tokens. A connected AI client can read the room context and post messages as a clearly marked bot.

OpenClaw MCP Docs

Room scoped

A token minted for one room cannot access another room.

Realtime posting

Bot messages are inserted as chat messages and appear through existing realtime updates.

Clearly marked

MCP bot senders use a bot icon and badge in the message stream.

Setup

Create the room token first.

The token is shown once. Store it like a secret because it gives the connected bot permission to read room context and send room messages.

1

Open a room as an admin.

2

Tap the room title to open settings.

3

Find MCP bots, enter a bot name, and press Create.

4

Save the endpoint and bearer token immediately.

5

Paste them into OpenClaw or another MCP client.

Generic MCP Client

Use Streamable HTTP.

Replace the room slug and bearer token with the values created in room settings. For remote clients, configure the transport as Streamable HTTP instead of stdio.

{
  "mcpServers": {
    "cht-so-room": {
      "type": "http",
      "transport": "streamable-http",
      "url": "https://cht.so/api/mcp/YOUR_ROOM_SLUG",
      "headers": {
        "Authorization": "Bearer cht_mcp_REPLACE_WITH_TOKEN"
      }
    }
  }
}

OpenClaw

Register cht.so as an outbound MCP server.

OpenClaw documents two MCP roles: `serve` makes OpenClaw itself an MCP server, while `set`, `list`, `show`, and `unset` manage outbound server definitions for OpenClaw-managed runtimes. For cht.so, use the outbound registry path.

openclaw mcp set cht-so-room '{
  "url": "https://cht.so/api/mcp/YOUR_ROOM_SLUG",
  "transport": "streamable-http",
  "headers": {
    "Authorization": "Bearer cht_mcp_REPLACE_WITH_TOKEN"
  },
  "connectionTimeoutMs": 10000
}'
openclaw mcp list
openclaw mcp show cht-so-room --json
OpenClaw stores this definition in its config. Its docs note that the registry commands do not prove the remote server is reachable immediately; the runtime adapter decides which transport shape it supports when it runs.

get_room_context

Reads room details, active guests, recent messages, announcements, and resource summaries as JSON.

mark_messages_received

Stores delivery receipts for messages the bot has received without marking them read.

list_users

Lists room guests with display names, @mention handles, active status, and guest IDs for assignments.

send_message

Posts a realtime chat message as the bot guest. @mentions use the same mention notification path as normal chat.

send_image_message

Imports a public image URL or base64 image payload, stores it in the room album bucket, and posts it as a chat image.

create_shared_list

Adds shared list items to the room, optionally assigning each item to one or more guest IDs returned by list_users.

create_poll

Creates a poll with 2 to 6 options and shows it in the chat stream.

create_agenda_item

Adds an agenda event with date/time, optional location, and reminder timing.

create_note

Creates pinned room notes for longer-form planning details.

create_announcement

Adds a high-signal announcement to the room.

create_car_trip

Creates car and rideshare coordination cards with seats, departure time, addresses, and passengers.

create_flight

Adds flight cards with flight number, date, route hints, and passenger guest IDs.

create_split_expense

Creates group expenses with even, amount, or percentage shares.

create_music_playlist

Creates a music playlist and can add an initial YouTube or YouTube Music track.

Quick smoke test

List the tools directly with curl.

curl -s https://cht.so/api/mcp/YOUR_ROOM_SLUG \
  -H "Authorization: Bearer cht_mcp_REPLACE_WITH_TOKEN" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

Security notes

  • Create one token per AI client.
  • Revoke unused or leaked tokens.
  • Do not paste room tokens into public prompts or shared logs.
  • Deleting a room removes bot token records with the rest of the room data.