# Roam

Roam HQ provides APIs for secure messaging, chat, file sharing, and collaboration with enterprise-grade security and compliance features.

- **Category:** communication
- **Auth:** API_KEY, OAUTH2
- **Composio Managed App Available?** No
- **Tools:** 39
- **Triggers:** 0
- **Slug:** `ROAM`
- **Version:** 00000000_00

## Tools

### Add group members

**Slug:** `ROAM_ADD_GROUP_MEMBERS`

Add one or more group members and/or admins to an existing Roam group. Use this tool when: - You need to add new members to an existing group - You need to promote existing members to admin status - You want to bulk add multiple users to a group Access conditions: - For adding members: The group must be public in the user's Roam, or the app must be a member - For adding admins: The app must be an admin of the group Returns empty response on success (HTTP 204).

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `group` | string | Yes | The unique identifier of the group to add members to |
| `admins` | array | No | List of user IDs to add as admins to the group |
| `members` | array | No | List of user IDs to add as members to the group |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Add Reaction to Message

**Slug:** `ROAM_ADD_REACTION`

Add an emoji reaction to a message in a chat. Use this action when you want to react to a message with an emoji in a Roam chat. The action requires the message ID, chat ID, reaction name, and timestamp. Required scope: chat:send_message or chat:write Response codes: 200=success, 400=bad request, 401=invalid credentials, 405=unsupported method, 500=internal error

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `chat` | string | Yes | The unique ID of the chat containing the message. This is the chat identifier starting with C-. |
| `name` | string | Yes | The name of the reaction/emoji to add. Common values include 'smile', 'thumbsup', 'heart', etc. |
| `timestamp` | integer | Yes | Unix timestamp (in seconds) when the reaction was added. |
| `message_id` | string | Yes | The unique ID of the message to add the reaction to. This is the UUID of the message. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Group

**Slug:** `ROAM_CREATE_GROUP`

Create a group address that can be used for chat. Groups which specify an admin will operate in an "Admin only" management mode, where only admins may change settings. Otherwise, all members have that capability. Groups require at least one member or admin.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | Yes | The name of the group (max 64 characters). |
| `admins` | array | No | List of admin email addresses or IDs. Groups with admins operate in 'Admin only' management mode. |
| `members` | array | No | List of member email addresses or IDs to add to the group. |
| `private` | boolean | No | Whether the group is private. Defaults to false. |
| `description` | string | No | The description of the group (max 1024 characters). |
| `enforce_threads` | boolean | No | Whether threads are enforced in the group. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Roam SCIM Group

**Slug:** `ROAM_CREATE_ROAM_SCIM_GROUP`

Tool to create a new group in your Roam organization using SCIM 2.0. Use when you need to provision a new group for managing user access and permissions via the SCIM 2.0 protocol. The displayName is required and must be 64 characters or less.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `members` | array | No | Optional list of members to add to the group. Each member should be a dict with a 'value' field containing a Roam Person ID. |
| `schemas` | array | No | SCIM schema array. Defaults to ['urn:ietf:params:scim:schemas:core:2.0:Group'] |
| `display_name` | string | Yes | The display name of the group. Maximum 64 characters. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Roam User

**Slug:** `ROAM_CREATE_USER`

Create a new user in Roam via SCIM 2.0 protocol for automated user provisioning. Use when you need to add a new user to your Roam organization. The userName must match the primary email address exactly. The role defaults to 'User' but can be set to 'Admin' for administrative access. Note: Password attributes are not supported and will be ignored.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | object | Yes | Name object containing the user's given name and family name. |
| `role` | string ("User" | "Admin") | No | User role in Roam organization. |
| `active` | boolean | No | Whether the user account is active. Set to false to archive/deprovision the user. Defaults to true. |
| `emails` | array | Yes | List of email addresses for the user. The primary email must match userName. |
| `schemas` | array | No | SCIM schemas to include in the request. Defaults to standard User schema. |
| `userName` | string | Yes | Username for the user. Must be the user's email address and must exactly match the primary email value. |
| `externalId` | string | No | External identifier for correlation with IdP records. |
| `displayName` | string | No | Full name of the user. Note: Roam auto-generates this from givenName + familyName, so this value may be ignored. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Delete Roam Group

**Slug:** `ROAM_DELETE_GROUP`

Archive a group in Roam using SCIM 2.0 protocol. This is a soft delete operation that archives the group. Use when you need to archive a group that is no longer needed while preserving data for audit purposes. Returns 204 No Content on successful deletion.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | The unique identifier of the group to archive. This is the SCIM group ID. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Delete Roam User

**Slug:** `ROAM_DELETE_USER`

Archive a user in Roam using SCIM 2.0 protocol. This is a soft delete operation that deprovisions the user. Use when you need to remove a user from the organization while preserving their data for audit purposes. Returns 204 No Content on successful deletion.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | The unique identifier of the user to archive. This is the SCIM user ID. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Address Info

**Slug:** `ROAM_GET_ADDRESS_INFO`

Get information about a chat address, which is the name for any entity that may participate in a chat, such as a user, visitor, or bot. Use this action to retrieve details like display name, email, profile image, and other information about a specific chat address. Required scope: chat:read

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `addr` | string | Yes | The chat address to fetch information for. This is a unique identifier for entities that may participate in a chat, such as users, visitors, or bots. Format: U-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get chat history

**Slug:** `ROAM_GET_CHAT_HISTORY`

Lists messages in a chat, filtered by date range (after/before). The ordering of results depends on the filter specified: - If no parameters provided: returns most recent messages, sorted in reverse chronological order. - If 'after' is specified: results sorted in forward chronological order. In Personal mode, only chats where the authenticated user is a participant are accessible. Use this action to retrieve message history from a specific chat.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `chat` | string | Yes | The chat address (UUID) to fetch messages from. |
| `after` | string | No | The datetime to begin listing messages (UTC). Format: YYYY-MM-DD or RFC-3339 datetime. If specified, results are sorted in forward chronological order. |
| `limit` | integer | No | Number of messages to return. Default is 10, maximum is 200. |
| `before` | string | No | The datetime until which to list messages (UTC). Format: YYYY-MM-DD or RFC-3339 datetime. Defaults to 'now' if not specified. |
| `cursor` | string | No | Opaque pagination cursor from a previous response's nextCursor. Do not construct cursors manually. |
| `thread_timestamp` | integer | No | Read replies of the message with this timestamp. Use to fetch replies to a specific message. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get meeting link

**Slug:** `ROAM_GET_MEETING_LINK`

Tool to get a meeting link. Use when you need to retrieve information about a specific meeting link by its ID. Requires the 'meetinglink:read' scope.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | The unique identifier (UUID) of the meeting link to retrieve. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Roam SCIM Resource Types

**Slug:** `ROAM_GET_RESOURCE_TYPES`

Returns the list of SCIM 2.0 resource types supported by Roam. Use this action to discover what resource types are available in the Roam SCIM API. Currently returns User and Group resource types. This endpoint requires no parameters.

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get SCIM service provider config

**Slug:** `ROAM_GET_ROAM_SCIM_CONFIG`

Tool to retrieve Roam's SCIM service provider configuration. Use when you need to discover Roam's SCIM API capabilities including supported authentication schemes, bulk operations, filtering, and other service provider features. This endpoint returns the SCIM 2.0 ServiceProviderConfig resource which describes the supported features.

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get SCIM schema

**Slug:** `ROAM_GET_SCIM_SCHEMA`

Retrieves the definition of a specific SCIM 2.0 schema by its unique identifier (URN). This endpoint returns the complete schema definition including all attributes, their types, mutability, and other properties. Common schemas include: - urn:ietf:params:scim:schemas:core:2.0:User (User resource schema) - urn:ietf:params:scim:schemas:core:2.0:Group (Group resource schema) - urn:ietf:params:scim:schemas:extension:enterprise:2.0:User (Enterprise User extension) Use this to understand the structure of SCIM resources and what attributes are available.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `schemaId` | string | Yes | The unique identifier of the SCIM schema to retrieve. Common values: 'urn:ietf:params:scim:schemas:core:2.0:User' for User schema, 'urn:ietf:params:scim:schemas:core:2.0:Group' for Group schema. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get user by ID (SCIM)

**Slug:** `ROAM_GET_SCIM_USER`

Tool to retrieve a single user by their Roam Person ID using SCIM 2.0 protocol. Use when you need to get detailed information about a specific user including their name, email, active status, and role in Roam. The user ID is the SCIM user ID (Person ID) that can be obtained from user list or user creation operations. Endpoint: GET /scim/v2/Users/{id}

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | The unique identifier of the user (Roam Person ID). This is the SCIM user ID returned by the API. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Test API Connectivity

**Slug:** `ROAM_GET_TEST`

Test endpoint for API connectivity. Use this endpoint to verify that the Roam API is accessible and authentication is working correctly. Returns a confirmation message on successful connection.

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get token info

**Slug:** `ROAM_GET_TOKEN_INFO`

Retrieves information about the current Roam access token. Use this tool to: - Get the bot's chat address - Check the OAuth scopes granted to the current token - Retrieve information about the associated Roam workspace Returns the chat address, granted scopes, and Roam workspace information.

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get user info

**Slug:** `ROAM_GET_USER_INFO`

Get detailed information about a single user in your Roam workspace. Requires user:read scope. Additional scopes (user:read.email, user:read.status) needed for expanded fields.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | The User ID to look up. Format: U-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx |
| `expand` | string | No | Comma-separated list of additional fields to include. Supported values: 'status', 'available'. Requires corresponding scopes (user:read.status). |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Roam Chats

**Slug:** `ROAM_LIST_CHATS`

Lists all accessible chats, which consist of all DMs, MultiDMs, and Channels that your bot has been added to, in addition to all public channels. Supports pagination via cursor and limiting the number of results. Use this action to discover available chats before performing operations on them.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `limit` | integer | No | Number of chats to return (1-100, default: 10) |
| `cursor` | string | No | Pagination cursor from previous response to fetch the next page of results. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List group members

**Slug:** `ROAM_LIST_GROUP_MEMBERS`

List members in a group in your Roam workspace. Use this tool when: - You need to see all members of a specific group - You want to check who has access to a group - You need to paginate through large groups Access conditions: - The group must be public in the user's Roam, OR - The app must be a member of the group Required scope: groups:read Returns a list of user IDs with pagination support via nextCursor.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `group` | string | Yes | The unique identifier of the group whose members to list |
| `limit` | integer | No | Number of members to return. Minimum: 1, Maximum: 100, Default: 10 |
| `cursor` | string | No | Pagination cursor from a previous response to get the next page of results |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List SCIM Groups

**Slug:** `ROAM_LIST_GROUPS`

Returns a paginated list of groups in your Roam organization via SCIM 2.0. Use when you need to retrieve all groups in your Roam organization using the SCIM protocol. Supports pagination using startIndex and count parameters. Note: The filter parameter is currently ignored for the Groups endpoint.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `count` | integer | No | The number of resources to return in a single page. Default is 100. |
| `filter` | string | No | A SCIM filter expression. Currently ignored for Groups endpoint. |
| `startIndex` | integer | No | The 1-based index of the first result in the current page of results. Default is 1. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Roam Lobbies

**Slug:** `ROAM_LIST_LOBBIES`

Lists active lobbies in your Roam account. Returns all lobby configurations with their IDs, display names, URLs, and active status. Use this action to discover available lobbies before performing operations on them.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `handle` | string | No | Filter for lobbies with a specific handle (first path segment of the URL). |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Roam Meetings

**Slug:** `ROAM_LIST_MEETINGS`

Lists all meetings in your home Roam, filtered by date range. Supports pagination via cursor and limiting the number of results. Returns meeting details including meeting ID, room, time, and participants. Use this action to discover available meetings in your Roam workspace.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `after` | string | No | Filter for meetings that started after this date/time (UTC). Format: YYYY-MM-DD or RFC-3339 datetime. |
| `limit` | integer | No | Number of meetings to return per response. |
| `before` | string | No | Filter for meetings that started before this date/time (UTC). Format: YYYY-MM-DD or RFC-3339 datetime. Defaults to now if not specified. |
| `cursor` | string | No | Opaque cursor from a previous response to fetch the next page of results. Do not construct cursors manually. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Roam Recordings

**Slug:** `ROAM_LIST_RECORDINGS`

Tool to list all recordings in your home Roam. Use when you need to retrieve recordings with optional date range filtering (after/before) or pagination. Supports filtering by date range and paginating through large result sets.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `after` | string | No | The datetime to begin listing recordings (YYYY-MM-DD or RFC-3339 format). |
| `limit` | integer | No | The number of recordings to return per response. Default is 10, max 100. |
| `before` | string | No | The datetime until which to list recordings (YYYY-MM-DD or RFC-3339 format). |
| `cursor` | string | No | Opaque pagination cursor from a previous response's nextCursor field. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List users (SCIM)

**Slug:** `ROAM_LIST_ROAM_SCIM_USERS`

Tool to list users in your Roam organization using SCIM 2.0 protocol. Use when you need to retrieve a paginated list of users in your Roam workspace via the SCIM 2.0 API for identity provider integration. Supports pagination via startIndex and count parameters, as well as filtering by user attributes using SCIM filter expressions. Endpoint: GET /scim/v2/Users

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `count` | integer | No | The maximum number of users to return per page. Use this for pagination to control page size. |
| `filter` | string | No | A SCIM filter expression to narrow down results. For example, 'userName eq "alice@example.com"' to find a specific user. Supports filtering by userName, name, emails, and active attributes. |
| `start_index` | integer | No | The 1-based index of the first result to return. Use this for pagination to retrieve subsequent pages of results. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List SCIM Schemas

**Slug:** `ROAM_LIST_SCHEMAS`

Tool to list all SCIM 2.0 schemas supported by Roam. Use when you need to discover available SCIM resource schemas. Returns the core User and Group schemas plus Roam's custom role extension schemas.

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Roam Transcripts

**Slug:** `ROAM_LIST_TRANSCRIPTS`

Lists all transcripts in your Roam workspace, filtered by date range. Supports pagination via cursor and limiting the number of results. Returns transcript metadata (id, meetingId, start, end, participants) without full content. Use this action to discover available transcripts before retrieving detailed content.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `after` | string | No | Filter for transcripts that started after this date/time (UTC). Format: YYYY-MM-DD or RFC-3339 datetime. |
| `limit` | integer | No | Number of transcripts to return. |
| `before` | string | No | Filter for transcripts that started before this date/time (UTC). Format: YYYY-MM-DD or RFC-3339 datetime. |
| `cursor` | string | No | Opaque cursor from a previous response to fetch the next page of results. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List User Audit Log

**Slug:** `ROAM_LIST_USER_AUDIT_LOG`

Tool to get a list of user audit log entries for the account. Use when you need to retrieve audit logs for compliance and security monitoring purposes. This action requires the 'userauditlog:read' scope and organization-level access. Required parameter: date (format: YYYY-MM-DD) Optional: limit for pagination, cursor for paginating through results.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `date` | string | Yes | Date to retrieve audit logs for. Format: YYYY-MM-DD. |
| `limit` | integer | No | Number of audit log entries to return. Must be between 1 and 100. |
| `cursor` | string | No | Pagination cursor from a previous response to fetch the next page of results. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Users

**Slug:** `ROAM_LIST_USERS`

Tool to list all users in the Roam workspace. Use when you need to retrieve a list of users with optional pagination and expanded fields like status. Required scope: user:read (add user:read.email for emails, user:read.status for presence status).

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `limit` | integer | No | Number of users to return. Must be between 1 and 100. |
| `cursor` | string | No | Pagination cursor from a previous response to fetch the next page of results. |
| `expand` | string | No | Comma-separated list of additional fields to include. Supported: 'status' (requires user:read.status scope). |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Lookup user by email

**Slug:** `ROAM_LOOKUP_USER`

Look up a user in your Roam workspace by their email address. Use when you need to find a user's details including their ID, name, and profile information. Required scopes: user:read and user:read.email.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `email` | string | Yes | The email address of the user to look up. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Patch a group

**Slug:** `ROAM_PATCH_GROUP`

Partially updates a group using SCIM 2.0 protocol. Use this action to add or remove members from a group, or replace the group's display name. The PATCH operation supports 'add', 'remove', and 'replace' operations on group attributes. Example usage: - Add members: op='add', path='members', value=[{'value': '686562', 'ref': 'Users/686562'}] - Remove members: op='remove', path='members', value=[{'value': '686562'}] - Replace displayName: op='replace', path='displayName', value='New Group Name'

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | The unique identifier of the group (Roam AddressID). |
| `operations` | array | Yes | Array of SCIM PATCH operations to perform on the group. Use 'add' or 'remove' for members, 'replace' for displayName. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Patch user (SCIM)

**Slug:** `ROAM_PATCH_USER`

Partially updates a user using SCIM 2.0 protocol. Use when you need to modify specific attributes of an existing user without replacing the entire resource. Currently, Roam only supports the 'replace' operation on the 'active' attribute, which allows archiving or reactivating a user. Other operations like 'add' or account 'remove' are not supported, and 'replace' on attributes other than 'active' will fail. Example usage: - Deactivate/archive user: op='replace', path='active', value=false - Reactivate user: op='replace', path='active', value=true Endpoint: PATCH /scim/v2/Users/{id}

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | The unique identifier of the user (Roam Person ID) to update. |
| `operations` | array | Yes | Array of SCIM PATCH operations to perform on the user. Note: Roam only supports 'replace' operation on the 'active' attribute (to archive or reactivate a user). |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Post message to chat

**Slug:** `ROAM_POST_CHAT`

Post a message to a chat. Messages can be plain markdown text or rich Block Kit layouts with headers, sections, buttons, and more. Messages may be posted to a chat, a group, or addresses such as users or bots. Use syntax <@USER_ID> for mentions.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `chat` | string | Yes | A Tagged ID (chat, group, or address). Can also be an array of user addresses to create a Multi-DM. |
| `sync` | boolean | No | If true, post is performed synchronously and timestamp returned. |
| `text` | string | No | Markdown-formatted text content. Cannot be combined with blocks. Either text or blocks is required. |
| `color` | string | No | Colored vertical strip. Values: good, warning, danger, or hex (e.g., #5B3FD9). Only used with blocks. |
| `items` | array | No | Array of Item IDs (UUIDs) to attach. Cannot be combined with blocks. |
| `blocks` | array | No | Array of Block Kit block objects (header, section, context, divider, actions). Cannot be combined with text. Max 10 blocks, 8,000 bytes. |
| `markdown` | boolean | No | Defaults to true. Set false to disable markdown interpretation. |
| `thread_key` | string | No | External identifier for threading messages. Max 64 characters. Mutually exclusive with thread_timestamp. |
| `thread_timestamp` | integer | No | Reply to a specific thread. Mutually exclusive with thread_key. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Remove group members

**Slug:** `ROAM_REMOVE_GROUP_MEMBERS`

Tool to remove one or more members from a group in your Roam workspace. Use when you need to remove users from a specific group. Note: The group must be public in the user's Roam, or the app must be a member of the group to remove members. Admin role members cannot be removed yet.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `group` | string | Yes | The group address (TaggedUUID format, e.g., G-13137f22-926c-4323-baf7-9c953bdccf99) |
| `members` | array | Yes | List of member IDs to remove (TaggedUUID format, e.g., U-a86af3af-7d0b-4d4c-8392-85ffdf30881e) |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Replace Roam SCIM Group

**Slug:** `ROAM_REPLACE_GROUP`

Fully replaces a group's attributes using SCIM 2.0 protocol. Use when you need to completely replace all attributes of an existing group, including its display name and member list. This is a full update (PUT), not a partial update (PATCH). Note: Unlike PATCH which only modifies specified attributes, PUT requires sending all desired attributes. Any attributes not included will be reset to default values (e.g., members list will be replaced entirely).

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | The unique identifier of the group (Roam AddressID) to replace. |
| `members` | array | No | Optional list of members to replace the current group members. Each member should be a dict with a 'value' field containing a Roam Person ID. If not provided, existing members will be removed. |
| `schemas` | array | No | SCIM schema array. Defaults to ['urn:ietf:params:scim:schemas:core:2.0:Group'] |
| `displayName` | string | Yes | The display name of the group. Maximum 64 characters. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Replace Roam User

**Slug:** `ROAM_REPLACE_USER`

Fully replaces (updates) a user's attributes in Roam via SCIM 2.0 protocol. Use when you need to update all user attributes at once. This is a full replacement operation - all required fields must be provided. Note: This is a PUT operation that completely replaces the user. For partial updates, use the patch user operation. Password attributes are not supported and will be ignored.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | The unique identifier of the user to replace. This is the SCIM user ID. |
| `name` | object | Yes | Name object containing the user's given name and family name. |
| `role` | string ("User" | "Admin") | No | User role in Roam organization. |
| `active` | boolean | No | Whether the user account is active. Set to false to archive/deprovision the user. Defaults to true. |
| `emails` | array | Yes | List of email addresses for the user. The primary email must match userName. |
| `schemas` | array | No | SCIM schemas to include in the request. Defaults to standard User schema. |
| `userName` | string | Yes | Username for the user. Must be the user's email address and must exactly match the primary email value. |
| `externalId` | string | No | External identifier for correlation with IdP records. |
| `displayName` | string | No | Full name of the user. Note: Roam auto-generates this from givenName + familyName, so this value may be ignored. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Send message to group

**Slug:** `ROAM_SEND_MESSAGE`

Sends the given message to the specified recipients. At this time, we only support sending to a single group recipient. You can obtain the group ID on the Group Settings page.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `text` | string | Yes | The message text to send |
| `sender` | object | No | Sender info with id, name, and imageUrl fields |
| `markdown` | boolean | No | Text is markdown by default. Set to false to disable markdown interpretation |
| `recipients` | array | Yes | Array of recipient UUIDs (currently supports single group). You can obtain the group ID on the Group Settings page. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Send Typing Indicator

**Slug:** `ROAM_SEND_TYPING`

Tool to notify other chat participants that you are typing. Use when you want to show a typing indicator to one or more users in a chat conversation. This is typically used before sending a message to let recipients know you're composing a response.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `user_ids` | array | Yes | List of user IDs to notify that you are typing. These are the recipients of the typing indicator. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update a meeting link

**Slug:** `ROAM_UPDATE_MEETING_LINK`

Update settings for an existing meeting link in Roam. Use this action when you need to modify the name, start time, or end time of an existing meeting link. The meeting link ID is required to identify which meeting to update. Note: The host field cannot be updated; if provided, it must match the existing value. Returns 204 No Content on success.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | The unique identifier of the meeting link to update (UUID) |
| `end` | string | No | Meeting end time in RFC3339 format (e.g., 2024-01-15T11:00:00Z) |
| `host` | string | No | The email address of the meeting host. Cannot be updated; must match existing value if provided. |
| `name` | string | Yes | The new name for the meeting |
| `start` | string | No | Meeting start time in RFC3339 format (e.g., 2024-01-15T10:00:00Z) |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Upload File to Roam

**Slug:** `ROAM_UPLOAD_ITEM`

Upload a file to Roam so it can be sent as a chat attachment. Use when you need to upload a file, image, or document to Roam before sending it in a chat message. Returns an item ID that can be used with the chat.post endpoint. Supported file types: - Images (image/png, image/jpeg, image/gif, image/webp): Displayed inline with preview thumbnail - Other files (application/octet-stream): Download link only Maximum file size: 10 MB

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `file` | object | No | The file to upload to Roam. FileUploadable object where 'name' should be the filename (e.g., 'document.pdf', 'image.jpg'). Use this for files already stored in S3. |
| `filename` | string | No | Custom filename for the uploaded file. If not provided, the original filename from the FileUploadable object will be used. |
| `file_path` | string | No | Local file path to upload directly to Roam. Alternative to 'file' parameter. Provide the absolute path to the local file (e.g., '/tmp/document.pdf'). |
| `file_content` | string | No | File content as a string to upload directly to Roam. Alternative to 'file' parameter. Provide the text content of the file. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |
