Integration

Roam HQ integration

Roam HQ is a virtual office with chat, meetings and events. Post, stream, schedule, edit and search chat messages and reactions, upload files, manage groups, folders and Guest Badges, read meetings with their AI summaries, transcripts and participants, ask questions about a meeting, create meeting and calendar links, run On-Air events with guests and attendance, set members' absences, status bubbles and external activities, and subscribe webhooks. Every tool needs a scope on the API client, named in its description. Rate limit: bursts of 10 requests, then 1 per second; a personal access token also has 1,000 requests a day. Not exposed: the daily message archive export (a JSON Lines file of all messages), revoking the connected token, SCIM user provisioning (another base path and token), the v0 API and the deprecated legacy routes. Authentication is a bearer token: an organization API key from Roam Administration, Developer, or a personal access token from User Settings, Developer.

Ask it in chat

Say what should happen.
The workflow builds itself.

When this happens, do that in Roam HQ.Built from the 91 Roam HQ tools below, on the connection you add once.

What you can do with Roam HQ

Each of these is one operation on one endpoint, available both as a workflow step and as a tool an AI agent can call on its own. Nothing bundles several operations into one action, so what a run did stays readable afterwards.

Each badge shows the default agent permission of an endpoint (allowed: an agent calls it without asking; ask first: you are asked before an agent calls it, when the agent or chat asks permission for sensitive actions; never: no agent may call it), which every user can change endpoint by endpoint in their credential settings.

Most endpoints run on the free plan. A few, mainly the ones that publish on your behalf, need a paid plan.

Group, 6 operations

  • archive_groupArchive groupPOSTAgents: ask firstArchives a group by id, removing it from active use. The app must be an admin of the group. Scope group:write.
  • create_groupCreate groupPOSTAgents: ask firstCreates a group chat with a name and at least one member (user id or email with role member or admin); an unknown email is invited. With an admin, only admins may change settings. Scope group:write.
  • get_groupGet groupGETAgents: ask firstReturns one group by id or by name (first match): chatId, name, type, access mode, management mode, threaded mode and creation date. Pass exactly one of id or name. Scope group:read.
  • join_groupJoin groupPOSTAgents: ask firstJoins a public group as the calling identity (an organization token adds the app bot, a personal token adds the owner). Private groups cannot be joined; joining twice changes nothing. Scope group:write.
  • list_groupsList groupsGETAgents: ask firstLists the non-archived groups the token can see with id, name, description, type, access mode and creation date. Filter by name (query) and type; 50 per page by default. Scope group:read.
  • rename_groupRename groupPOSTAgents: ask firstRenames a group by id. The app must be an admin of the group. Scope group:write.

Message, 6 operations

  • delete_messageDelete messagePOSTAgents: ask firstDeletes a message this app's bot posted, identified by chatId and timestamp (and threadTimestamp for a thread reply). Deleting an already deleted message succeeds. Scope chat:send_message or chat:write.
  • list_messagesList messagesGETAgents: ask firstLists the messages (text, voice, poll) of one chat given by chatId, groupId or userIds, newest first by default, filtered by after/before. Message content is personal data. Scope chat:history; an organization bot must be in the chat.
  • search_messagesSearch messagesPOSTAgents: ask firstSearches the messages the token can read by text, group, sender or participant emails, date, chat type and content (mention or item), most relevant or newest first. With no filter it returns the latest messages. Personal data. Scope chat:history.
  • send_ephemeral_messageSend ephemeral messagePOSTAgents: ask firstPosts a message only one member of a chat sees (marked 'Only you can see this'), for a private bot answer in a shared chat. userId must be a member of the chat. Scope chat:send_message or chat:write.
  • send_messageSend messagePOSTAgents: ask firstPosts a message that people in the chat see: markdown text, Block Kit blocks or a poll, to exactly one of chatId, groupId or userIds (DM). Can thread, reply or schedule with sendAt. Scope chat:send_message or chat:write.
  • update_messageUpdate messagePOSTAgents: ask firstReplaces the content of a message this app's bot posted (identified by chatId and timestamp) with new markdown text, attachments or Block Kit blocks. Personal tokens edit only their own personal bot's messages. Scope chat:send_message or chat:write.

Folder, 5 operations

  • create_folderCreate folderPOSTAgents: ask firstCreates a folder for meetings and Magicasts, visible only to its members. With an organization token give ownerId (the member who becomes its admin); with a personal token the owner becomes admin. Scope folders:write.
  • delete_folderDelete folderPOSTAgents: ask firstDeletes a folder: members lose the access it gave them; the meetings and Magicasts in it are not deleted. Personal tokens need the admin role on it. Scope folders:write.
  • get_folderGet folderGETAgents: ask firstReturns one folder by id: name, item count, creation time and, with a personal token, your role (admin or viewer). Scope folders:read.
  • list_foldersList foldersGETAgents: ask firstLists folders of meetings and Magicasts, newest first, with id, name, item count and creation time (and your role with a personal token). Scope folders:read.
  • rename_folderRename folderPOSTAgents: ask firstRenames a folder. Personal tokens need the admin role on it; organization tokens can rename any folder. Scope folders:write.

Onair event, 5 operations

  • cancel_onair_eventCancel onair eventPOSTAgents: ask firstCancels an On-Air event. This cannot be undone. Scope onair:write.
  • create_onair_eventCreate onair eventPOSTAgents: ask firstCreates an On-Air event (a public event page with RSVPs) with title, start, end, time zone and the calendar host's email, a member who manages invites and reminders. Returns its page and join URLs. Scope onair:write.
  • get_onair_eventGet onair eventGETAgents: ask firstReturns one On-Air event: title, description, slug, start, end, time zone, event page and join URLs, SEO, auto-admit and RSVP settings, and display hosts. Scope onair:read.
  • list_onair_eventsList onair eventsGETAgents: ask firstLists the organization's On-Air events, most recent start first, with their settings and page and join URLs; 50 per page by default. Scope onair:read.
  • update_onair_eventUpdate onair eventPOSTAgents: ask firstUpdates an On-Air event: only the fields sent change. Leave a field out to keep its current value. Can change times, settings, calendar host and display hosts. Scope onair:write.

Onair guest, 5 operations

  • add_onair_guestsAdd onair guestsPOSTAgents: ask firstAdds guests (email, optional name, phone and RSVP status, invited by default) to an On-Air event. Guests set to going or maybe receive calendar invites and reminders. Scope onair:write.
  • get_onair_guestGet onair guestGETAgents: ask firstReturns one On-Air guest: event, email, name, phone, RSVP status and when it was created and updated. Personal data. Scope onair:read.
  • list_onair_guestsList onair guestsGETAgents: ask firstLists the guests of an On-Air event, most recently added first, with email, name, phone and RSVP status; filter by status. Personal data. 100 per page by default. Scope onair:read.
  • remove_onair_guestRemove onair guestPOSTAgents: ask firstRemoves a guest from an On-Air event by guest id. Scope onair:write.
  • update_onair_guest_rsvpUpdate onair guest rsvpPOSTAgents: ask firstChanges an On-Air guest's RSVP status (invited, going, maybe or notGoing). A guest going or maybe receives calendar invites and reminders. Scope onair:write.

Guest badge, 4 operations

  • create_guest_badgeCreate guest badgePOSTAgents: ask firstGrants a Guest Badge so an email outside the workspace can visit a host in Roam, and sends that person an invitation. Repeating it for the same host and email returns the existing badge. Scope guest:write.
  • list_guest_badgesList guest badgesGETAgents: ask firstLists issued Guest Badges (guest email, guest user id, host, visit permission, acknowledged), all the workspace's with an organization token or your own with a personal one. Personal data. Scope guest:read.
  • revoke_guest_badgeRevoke guest badgePOSTAgents: ask firstRevokes the Guest Badge granted to an email (all of one host's alias rows together), removing that guest's access. revoked is false when no grant matched. Scope guest:write.
  • update_guest_badgeUpdate guest badgePOSTAgents: ask firstTurns a guest's permission to visit the host on the map on or off. hostUserId is needed when several hosts granted that email. Scope guest:write.

Meeting, 4 operations

  • ask_meetingAsk meetingPOSTAgents: ask firstAsks a question about one meeting's transcript and returns Roam's AI answer as text in response; the answer can repeat what people said (personal data). Scope meetings:read.
  • get_meetingGet meetingGETAgents: ask firstReturns one meeting: title, start and end, host, participants (up to maxParticipants), AI summary, action items and chapters. Participant names and emails are personal data. Scope meetings:read (user:read for participants).
  • list_meetingsList meetingsGETAgents: ask firstLists meetings newest first: id, title, start, participant count, video status and host. expand adds the AI summary, action items or chapters. Personal data. Scope meetings:read; organization tokens see every meeting only with admin:meetings:read.
  • search_meetingsSearch meetingsGETAgents: ask firstSearches meeting transcripts and summaries with AI and returns matching meetings with highlighted summary and transcript passages, plus the filters it inferred. Personal data. Personal access tokens only. Scope meetings:read.

Folder item, 3 operations

  • add_folder_contentsAdd folder contentsPOSTAgents: ask firstFiles up to 100 meetings and Magicasts into a folder, so every folder member can read them (info, transcript, summary). Filing an item already there changes nothing. Scope folders:write.
  • list_folder_contentsList folder contentsGETAgents: ask firstLists the meetings and Magicasts filed in a folder, newest first, each with type, id, when it was added and its metadata. Filter by type (meeting or magicast) and by after/before. Scope folders:read.
  • remove_folder_contentsRemove folder contentsPOSTAgents: ask firstRemoves up to 100 meetings and Magicasts from a folder; they are not deleted, but members lose the access the folder gave them. Scope folders:write.

Folder member, 3 operations

  • add_folder_membersAdd folder membersPOSTAgents: ask firstAdds up to 100 people to a folder with one role (admin or viewer), or changes their role, which grants them access to everything filed in it. Demoting the last admin answers 409. Scope folders:write.
  • list_folder_membersList folder membersGETAgents: ask firstLists everyone in a folder with their role (admin or viewer), all in one response; resolve the user ids with get_user or list_users. Scope folders:read.
  • remove_folder_membersRemove folder membersPOSTAgents: ask firstRemoves up to 100 people from a folder; they lose the access it gave them. Removing the last admin answers 409 (add another admin first). Scope folders:write.

Group member, 3 operations

  • add_group_membersAdd group membersPOSTAgents: ask firstAdds members to a group, each by user id or email with role member or admin. The app must be in the group or the group must be public. An unknown email gets no Guest Badge. Scope group:write.
  • list_group_membersList group membersGETAgents: ask firstLists the members of a group with their role; resolve the user ids with get_user or list_users. The app must be in the group or the group must be public. Scope group:read.
  • remove_group_membersRemove group membersPOSTAgents: ask firstRemoves members from a group by user id or email. Members with the admin role cannot be removed this way. The app must be in the group or the group must be public. Scope group:write.

Meeting link, 3 operations

  • create_meeting_linkCreate meeting linkPOSTAgents: ask firstCreates a Roam meeting link with a name, optional start and end and the host (a member's email, required with an organization token) and returns its id and url. Scope meeting:write or meetinglink:write.
  • get_meeting_linkGet meeting linkPOSTAgents: ask firstReturns a meeting link by id: name, host email, start, end, url and whether guests must confirm their email. Personal tokens read only links they host. Scope meetinglink:read.
  • update_meeting_linkUpdate meeting linkPOSTAgents: ask firstUpdates a meeting link's name, host, start, end or email confirmation rule. name is required: read the link with get_meeting_link and send its current name back if it does not change. Scope meetinglink:write.

Message stream, 3 operations

  • append_message_streamAppend message streamPOSTAgents: ask firstAppends a chunk of text to an open streaming message (from start_message_stream); recipients see it fill in live. Call it as often as needed, then stop_message_stream. Scope chat:send_message or chat:write.
  • start_message_streamStart message streamPOSTAgents: ask firstOpens a streaming message in one of chatId, groupId or userIds and posts its first text; people watch it fill in live. Returns streamId for append_message_stream and stop_message_stream. Scope chat:send_message or chat:write.
  • stop_message_streamStop message streamPOSTAgents: ask firstFinalizes an open streaming message into one persisted chat message, optionally appending a last text, and returns its timestamp. Scope chat:send_message or chat:write.

Reaction, 3 operations

  • add_reactionAdd reactionPOSTAgents: ask firstAdds an emoji reaction (by name, such as thumbs_up or heart) to a message, by chatId and timestamp (plus threadTimestamp for a thread reply). The bot or token owner must be in the chat. Scope chat:send_message or chat:write.
  • list_reactionsList reactionsGETAgents: ask firstLists the reactions on one message grouped by emoji (name, count, user ids), with poll votes per option in pollVotes. Identify the message by chatId and timestamp. Scope chat:history.
  • remove_reactionRemove reactionPOSTAgents: ask firstRemoves a reaction this app added to a message, identified by chatId, timestamp and the reaction name (and threadTimestamp for a thread reply). Scope chat:send_message or chat:write.

Status bubble, 3 operations

  • clear_user_status_bubbleClear user status bubblePOSTAgents: ask firstClears a member's thought bubble, including one written by the app or another integration. Succeeds when none is set. Scope user:write.statusBubble.
  • get_user_status_bubbleGet user status bubbleGETAgents: ask firstReturns a member's current thought bubble (text and expiresAt), or an empty statusBubble when none is live. Scope user:read.statusBubble.
  • set_user_status_bubbleSet user status bubblePOSTAgents: ask firstReplaces a member's thought bubble on the Roam map with 1 to 20 characters of text, for 5 minutes to 24 hours (24 hours when ttlSeconds is left out). Teammates see it. Scope user:write.statusBubble.

User activity, 3 operations

  • clear_user_activityClear user activityPOSTAgents: ask firstEnds an external activity this integration set on a member (by userId and externalId). Succeeds when it is missing or already expired. Scope user:write.activity.
  • list_user_activitiesList user activitiesGETAgents: ask firstLists every live external activity on a member's seat, from all integrations, newest first: externalId, badge display, dnd, startedAt and expiresAt. Scope user:read.activity.
  • set_user_activitySet user activityPOSTAgents: ask firstShows an external activity on a member's seat (an emoji badge, a tooltip title and optional glow), optionally with Do Not Disturb on their office, for up to 60 minutes. Teammates see it. Scope user:write.activity.

Webhook, 3 operations

  • list_webhooksList webhooksGETAgents: ask firstLists this API client's webhook subscriptions (made with subscribe_webhook or in Roam Administration) with event, url, filter, creation time, last success and pause state. Scope webhook:read.
  • subscribe_webhookSubscribe webhookPOSTAgents: ask firstSubscribes an HTTPS url to a Roam event (chat.message, meeting.ended...), or updates the filter of the same event and url. The url must answer 2xx within 3 seconds; it is not probed first. Scope webhook:write.
  • unsubscribe_webhookUnsubscribe webhookPOSTAgents: ask firstDeletes a webhook subscription by its id (from list_webhooks or subscribe_webhook); its url stops receiving events. Scope webhook:write.

Calendar event, 2 operations

  • create_calendar_eventCreate calendar eventPOSTAgents: ask firstCreates an event with a Roam meeting link on the host's connected calendar (Google, Microsoft) and emails the attendees an invitation. Supports all-day and recurring (rrule) events. Scope calendar:write.
  • list_calendar_eventsList calendar eventsGETAgents: ask firstLists the token owner's events from all connected calendars for a date range (7 days from today by default): title, times, location, invitees with response, organizer and Roam meeting link. Personal data. Personal tokens only, scope calendar:read.

Magicast, 2 operations

  • get_magicastGet magicastGETAgents: ask firstReturns one Magicast: name, owner, duration, video status, a signed video download URL when ready, the share URL if one exists, chapters and transcript cues. Personal data. Scope magicast:read.
  • list_magicastsList magicastsGETAgents: ask firstLists Magicasts (recorded video messages), newest first by default, with id, name, creation time, owner and cover image. Use get_magicast for the transcript and video. Personal data. Scope magicast:read.

Message link, 2 operations

  • create_message_linkCreate message linkPOSTAgents: ask firstCreates a shareable Roam link that opens a given chat message: name the chat with exactly one of chatId, groupId or userIds and the message by its timestamp (threadTimestamp for a thread reply). Scope chat:history.
  • resolve_message_linkResolve message linkPOSTAgents: ask firstResolves a Roam chat deep link (https://ro.am/r/#/d/...) to the message it points at. readable tells whether the token may read it; when true the full message is returned (personal data). Scope chat:history.

Scheduled message, 2 operations

  • cancel_scheduled_messageCancel scheduled messagePOSTAgents: ask firstCancels a pending scheduled message so it is never delivered. Only the bot identity that scheduled it can cancel it; get the id from list_scheduled_messages. Scope chat:send_message or chat:write.
  • list_scheduled_messagesList scheduled messagesGETAgents: ask firstLists messages scheduled with send_message (sendAt) that have not been sent yet, soonest first, with scheduledMessageId, chatId, sendAt and text. Only this credential's bot identity's schedule is visible. Scope chat:send_message or chat:write.

User, 2 operations

  • get_userGet userGETAgents: ask firstReturns one person or bot by id, or a workspace member by email (scope user:read.email): name, image, email, type, guest and admin flags, job title, location. Personal data. Scope user:read.
  • list_usersList usersGETAgents: ask firstLists the active members of the workspace (name, image, email with user:read.email, admin and guest flags, job title, location), or resolves up to 100 given ids in order. Personal data. Scope user:read.

User status, 2 operations

  • clear_user_statusClear user statusPOSTAgents: ask firstRemoves a member's Will Return Today or Out of Roam absence, whoever set it. Succeeds when nothing is set. Scope user:write.status (not needed with a personal access token).
  • set_user_statusSet user statusPOSTAgents: ask firstSets a member's Will Return Today or Out of Roam absence (return time and reason), replacing any existing one; teammates see it in Roam. For HR absences such as vacation. Scope user:write.status (not needed with a personal access token).

Asset, 1 operation

  • create_assetCreate assetPOSTAgents: ask firstRegisters a file and returns upload instructions: send the bytes in one POST to uploadUrl with every header of uploadHeaders, then use assetId (send_message, post_story) or imageUrl (avatar). Scope item:write for files.

Audit log, 1 operation

  • list_user_audit_logList user audit logGETAgents: ask firstReturns the workspace's user audit log entries for one UTC day (date): timestamp, event type, the person's name and email, platform and event data. Personal data. Scope userauditlog:read.

Chat, 1 operation

  • list_chatsList chatsGETAgents: ask firstLists the chats the token can see (DMs, multi-DMs, groups, all-hands Roam groups, meeting chats) with id, type, name and groupId; a personal token gets its inbox order with unread, muted and preview data. Personal data. Scope chat:read.

Conversation, 1 operation

  • list_conversationsList conversationsGETAgents: ask firstLists meetings held in Roam rooms with place, room, start and end, and participants (name, email, seconds present). Personal data. Organization tokens need admin:meetings:read; personal tokens see their own. Scope meetings:read.

File, 1 operation

  • upload_fileUpload filePOSTAgents: ask firstUploads a file (10 MB at most) as an attachment item and returns its id for send_message items. The file is sent as application/octet-stream, so it shows as a download link without inline preview. Scope item:write.

Link preview, 1 operation

  • unfurl_linksUnfurl linksPOSTAgents: ask firstAttaches the app's own preview cards to links in an existing message; each key must be a URL present in the message on one of the app's registered unfurl domains. All entries are checked first. Organization tokens only, scope links:write.

Lobby, 1 operation

  • list_lobbiesList lobbiesGETAgents: ask firstLists the account's active lobbies (booking pages at ro.am/handle or ro.am/handle/slug) with id, slug, display name, url and handle; optionally only those of one handle. Not paginated. Scope lobby:read.

Lobby booking, 1 operation

  • list_lobby_bookingsList lobby bookingsGETAgents: ask firstLists the bookings of one lobby: start, end, status, time zone, notes, hosts, invitees (names, emails), form responses and meeting link. Personal data. Filter by after/before. Scope lobby:read.

Magicast share link, 1 operation

  • get_magicast_share_linkGet magicast share linkPOSTAgents: ask firstReturns the shareable player URL of a Magicast, creating it on the first call (later calls return the same URL). Anyone given the link can watch it. Scope magicast:read.

Meeting participant, 1 operation

  • list_meeting_participantsList meeting participantsGETAgents: ask firstLists every participant of a meeting (type, id, name, email with user:read.email) with the total count, 50 per page by default (200 at most). Personal data. Scopes meetings:read and user:read.

Meeting share link, 1 operation

  • get_meeting_share_linkGet meeting share linkPOSTAgents: ask firstReturns the shareable URL of a meeting, creating it on the first call (later calls return the same URL). Anyone given the link can open the meeting. Scope meetings:read.

Meeting transcript, 1 operation

  • get_meeting_transcriptGet meeting transcriptGETAgents: ask firstReturns a meeting's transcript as cues: speakerId, text, and start and end offsets. What people said is personal data. Scope meetings:read.

Onair attendance, 1 operation

  • list_onair_attendanceList onair attendanceGETAgents: ask firstReturns an On-Air event's attendance report: each guest's email, name, phone, RSVP status, join start and minutes attended and custom form answers, then attendees without RSVP. Personal data. Scope onair:read.

Story, 1 operation

  • post_storyPost storyPOSTAgents: ask firstPosts a photo or video story that teammates see above your profile picture for 24 hours, from a processed asset created with create_asset (purpose story). Personal tokens only; posted as the token owner. Scope chat:send_message or chat:write.

Token, 1 operation

  • get_token_infoGet token infoGETAgents: ask firstReturns what the connected token is: the user and bot it acts as, the client id, its granted scopes and the Roam workspace. Use it to check which scopes a call needs before trying it.

Typing indicator, 1 operation

  • send_typing_indicatorSend typing indicatorPOSTAgents: ask firstShows '(bot name) is typing...' to people who have the chat open, for 6 seconds; send it again every 5 seconds to keep it visible. Target one of chatId, groupId or userIds. Scope chat:send_message or chat:write.

Webhook delivery, 1 operation

  • list_failed_webhook_deliveriesList failed webhook deliveriesGETAgents: ask firstLists recent failed webhook delivery attempts of this API client, newest first: webhook, event, url, status code (0 on a timeout), error and the endpoint's response. Successful deliveries are never recorded. Scope webhook:read.

Use Roam HQ from Claude Code, Cursor or Codex

Connect Roam HQ in LiveContext, create an API key in Settings, then add the LiveContext MCP server to your client. Its Roam HQ operations become tools the client can call, next to every other integration you connected.

Claude Code
claude mcp add --transport http livecontext https://livecontext.ai/mcp --header "X-API-Key: YOUR_API_KEY"
Codex (~/.codex/config.toml)
[mcp_servers.livecontext]
url = "https://livecontext.ai/mcp"

[mcp_servers.livecontext.http_headers]
"X-API-Key" = "YOUR_API_KEY"
Cursor, Claude Desktop and other JSON configs
{
  "mcpServers": {
    "livecontext": {
      "type": "http",
      "url": "https://livecontext.ai/mcp",
      "headers": {
        "X-API-Key": "YOUR_API_KEY"
      }
    }
  }
}

Set up the MCP server step by step

How to connect Roam HQ

  1. Create your workspace

    Sign up free. Nothing to install.

  2. Connect Roam HQ once

    Add your Roam HQ connection in Settings. Every tool from this integration reuses it, and secrets are encrypted at rest and visible only to you.

  3. Describe the job in chat

    The workflow builds itself in front of you and picks the endpoints it needs. Drag the steps yourself on the canvas whenever you would rather be explicit.

Roam HQ integration FAQ

What can you do with the Roam HQ integration?

LiveContext exposes 91 operations on Roam HQ, covering group, message, folder and onair event.

Popular integrations

Browse the whole catalog