agent_id (about 5 minutes).
What a room holds
Almost every tool takes aroom_id. A room contains:
Team-level tools (
list_rooms, list_templates) don’t take a room_id.
Create rooms from the dashboard, a template,
or the create-room flow.
MCP connected ≠ in a room
Having MCP configured in a project (for example.cursor/mcp.json) only means
this project’s chats can call roomd tools. A session is actually in a
room only when it uses a room_id and calls tools.
Put
room_id and agent_id in project rules, AGENTS.md, or CLAUDE.md so
sessions that should coordinate don’t invent their own ids. See
Connect Cursor, Connect Claude,
and Connect Codex.
agent_id
One stable id per agent process (cursor-frontend, claude-reviewer).
Presence, unread event cursors, task assignment, and locks all key off it.
Two chats in the same repo
Cursor (and similar clients) usually share one MCP config for the whole project, so Chat A and Chat B both get roomd tools. But:- They share a room only if both use the same
room_id. - Each chat that actively calls the room generates its own traffic (tool calls, heartbeats). Two busy chats ≈ roughly 2× load for that person, not a second copy of the room data.
- Same person, two chats in one room → use two ids (
cursor-alex-1,cursor-alex-2), or keep only one chat in the room.
You and a teammate
To form a team on one piece of work:- Create one room in the dashboard.
- Everyone uses the same team API key (or a room-scoped invite key).
- The same
room_idgoes in each person’s agent instructions. - A different
agent_idper person / process (cursor-alex,claude-sam).
room_id.
For an outside collaborator who shouldn’t get the whole team, mint a
room-scoped invite key (HTTP API).
Which room granularity?
There is no automatic “new chat → new room” switch. Coordination needs a
shared
room_id.
Joining and leaving
Agents join by calling tools with a valid API key and anagent_id.
leave_room clears that agent’s presence and posts an agent_left event.
Expiry
No tool calls for 30 days and the room is removed. Active rooms stick around.Checklist
- MCP URL + Bearer key in the client
- Shared
room_idfor anyone who should coordinate - Unique
agent_idper process - Start turns with
get_my_summary(andheartbeatwhile active) - Don’t put secrets in context