> ## Documentation Index
> Fetch the complete documentation index at: https://docs.flowla.com/llms.txt
> Use this file to discover all available pages before exploring further.

# MCP Tools

> Complete reference for all Flowla MCP tools and their parameters.

All tool names use `snake_case`. Optional fields can be omitted entirely.

***

## Rooms

<AccordionGroup>
  <Accordion title="list_rooms">
    Returns a paginated list of rooms with engagement metrics.

    | Field           | Type   | Required | Description                                                      |
    | --------------- | ------ | -------- | ---------------------------------------------------------------- |
    | `page`          | number |          | Page number (default: 1)                                         |
    | `limit`         | number |          | Results per page (default: 10)                                   |
    | `sortBy`        | string |          | `createdAt` · `updatedAt` · `totalEngagements` · `lastEngagedAt` |
    | `sortDirection` | string |          | `ASC` or `DESC` (default: `DESC`)                                |

    **Response includes:** `id`, `title`, `userId`, `companyId`, `totalEngagements`, `lastEngagedAt`, `totalViews`, `totalUniqueViews`, `engagements` breakdown, and design fields.
  </Accordion>

  <Accordion title="create_room">
    Creates a new room. Resolve the company and owner first — call `list_companies` and `list_users` before this tool.

    | Field              | Type    | Required | Description                                                          |
    | ------------------ | ------- | -------- | -------------------------------------------------------------------- |
    | `title`            | string  |          | Room display title                                                   |
    | `description`      | string  |          | Optional description                                                 |
    | `templateId`       | string  |          | Create from a template                                               |
    | `duplicateFromId`  | string  |          | Duplicate an existing room                                           |
    | `companyId`        | string  |          | Associated company ID                                                |
    | `userId`           | string  |          | Room owner user ID                                                   |
    | `statusId`         | string  |          | Initial status                                                       |
    | `labelId`          | string  |          | Label to apply                                                       |
    | `email`            | string  |          | Primary contact email                                                |
    | `hsDealId`         | string  |          | HubSpot deal ID                                                      |
    | `sfOpportunityId`  | string  |          | Salesforce opportunity ID                                            |
    | `attioDealId`      | string  |          | Attio deal ID                                                        |
    | `coverTitle`       | string  |          | Cover page title                                                     |
    | `coverDescription` | string  |          | Cover page description                                               |
    | `coverDisabled`    | boolean |          | Hide the cover page                                                  |
    | `themeColor`       | string  |          | Background color (hex, e.g. `#FF5500`)                               |
    | `navColor`         | string  |          | Nav bar color (hex, `"flow-org-color"`, or `"target-company-color"`) |
  </Accordion>

  <Accordion title="get_room_analytics">
    Returns engagement data for a room: progress, assignees, and section/step viewership.

    | Field | Type   | Required | Description |
    | ----- | ------ | -------- | ----------- |
    | `id`  | string | ✓        | Room ID     |
  </Accordion>

  <Accordion title="update_room">
    Updates room properties. All fields optional.

    | Field              | Type    | Required | Description               |
    | ------------------ | ------- | -------- | ------------------------- |
    | `id`               | string  | ✓        | Room to update            |
    | `title`            | string  |          | New title                 |
    | `description`      | string  |          | New description           |
    | `statusId`         | string  |          | New status                |
    | `userId`           | string  |          | New owner                 |
    | `companyId`        | string  |          | New associated company    |
    | `hsDealId`         | string  |          | HubSpot deal ID           |
    | `sfOpportunityId`  | string  |          | Salesforce opportunity ID |
    | `attioDealId`      | string  |          | Attio deal ID             |
    | `coverTitle`       | string  |          | Cover page title          |
    | `coverDescription` | string  |          | Cover page description    |
    | `coverDisabled`    | boolean |          | Hide the cover page       |
    | `themeColor`       | string  |          | Background color (hex)    |
    | `navColor`         | string  |          | Nav bar color             |
  </Accordion>
</AccordionGroup>

***

## Sections

<AccordionGroup>
  <Accordion title="list_sections">
    | Field    | Type   | Required | Description                |
    | -------- | ------ | -------- | -------------------------- |
    | `roomId` | string | ✓        | Room to list sections from |
  </Accordion>

  <Accordion title="create_sections">
    | Field      | Type   | Required | Description                           |
    | ---------- | ------ | -------- | ------------------------------------- |
    | `roomId`   | string | ✓        | Room to add sections to               |
    | `sections` | array  | ✓        | Array of `{ title, access? }` objects |

    `access` options: `visible` (default) · `restricted` · `locked` · `hidden`
  </Accordion>

  <Accordion title="update_section">
    | Field    | Type   | Required | Description       |
    | -------- | ------ | -------- | ----------------- |
    | `id`     | string | ✓        | Section to update |
    | `title`  | string |          | New title         |
    | `access` | string |          | New access level  |
  </Accordion>

  <Accordion title="delete_section">
    Permanently deletes the section and all its pages, groups, and blocks.

    | Field | Type   | Required | Description       |
    | ----- | ------ | -------- | ----------------- |
    | `id`  | string | ✓        | Section to delete |
  </Accordion>
</AccordionGroup>

***

## Pages

<AccordionGroup>
  <Accordion title="list_pages">
    | Field       | Type   | Required | Description                |
    | ----------- | ------ | -------- | -------------------------- |
    | `sectionId` | string | ✓        | Section to list pages from |
  </Accordion>

  <Accordion title="create_pages">
    | Field       | Type   | Required | Description                           |
    | ----------- | ------ | -------- | ------------------------------------- |
    | `sectionId` | string | ✓        | Section to add pages to               |
    | `pages`     | array  | ✓        | Array of `{ title, access? }` objects |
  </Accordion>

  <Accordion title="update_page">
    | Field    | Type   | Required | Description      |
    | -------- | ------ | -------- | ---------------- |
    | `id`     | string | ✓        | Page to update   |
    | `title`  | string |          | New title        |
    | `access` | string |          | New access level |
  </Accordion>

  <Accordion title="delete_page">
    | Field | Type   | Required | Description    |
    | ----- | ------ | -------- | -------------- |
    | `id`  | string | ✓        | Page to delete |
  </Accordion>
</AccordionGroup>

***

## Groups

<AccordionGroup>
  <Accordion title="list_groups">
    | Field    | Type   | Required | Description              |
    | -------- | ------ | -------- | ------------------------ |
    | `pageId` | string | ✓        | Page to list groups from |
  </Accordion>

  <Accordion title="create_groups">
    | Field    | Type   | Required | Description                   |
    | -------- | ------ | -------- | ----------------------------- |
    | `pageId` | string | ✓        | Page to add groups to         |
    | `groups` | array  | ✓        | Array of `{ title? }` objects |
  </Accordion>

  <Accordion title="update_group">
    | Field    | Type   | Required | Description               |
    | -------- | ------ | -------- | ------------------------- |
    | `id`     | string | ✓        | Group to update           |
    | `pageId` | string | ✓        | Page the group belongs to |
    | `title`  | string |          | New title                 |
  </Accordion>

  <Accordion title="delete_group">
    Deletes the group and all its blocks.

    | Field    | Type   | Required | Description               |
    | -------- | ------ | -------- | ------------------------- |
    | `id`     | string | ✓        | Group to delete           |
    | `pageId` | string | ✓        | Page the group belongs to |
  </Accordion>
</AccordionGroup>

***

## Blocks

<AccordionGroup>
  <Accordion title="list_blocks">
    | Field     | Type   | Required | Description               |
    | --------- | ------ | -------- | ------------------------- |
    | `pageId`  | string | ✓        | Page containing the group |
    | `groupId` | string |          | Filter by group           |
  </Accordion>

  <Accordion title="create_blocks">
    Adds blocks to a group. Each element of `columns` is a vertical stack; multiple elements appear side by side.

    | Field     | Type   | Required | Description                                       |
    | --------- | ------ | -------- | ------------------------------------------------- |
    | `pageId`  | string | ✓        | Page the group belongs to                         |
    | `groupId` | string |          | Group to add blocks to                            |
    | `columns` | array  | ✓        | Array of `{ blocks: [{ type, content?, url? }] }` |

    **Block types:** `text` · `image` · `embed` · `link` · `pdf` · `action-plan`

    * `text`: `content` field accepts **Markdown** (headings, bold, lists, tables, etc.)
    * `image` / `pdf`: provide any public `url` — the file is fetched and stored automatically
    * `embed` / `link`: provide `url`
    * `action-plan`: no extra fields needed; use `create_action_items` to add tasks

    ```json Single column theme={null}
    {
      "pageId": "<page_id>",
      "columns": [{ "blocks": [{ "type": "text", "content": "## Hello\n\nWelcome!" }] }]
    }
    ```

    ```json Two side-by-side columns theme={null}
    {
      "pageId": "<page_id>",
      "columns": [
        { "blocks": [{ "type": "text", "content": "Left" }] },
        { "blocks": [{ "type": "image", "url": "https://example.com/img.png" }] }
      ]
    }
    ```
  </Accordion>

  <Accordion title="update_block">
    | Field     | Type   | Required | Description                                          |
    | --------- | ------ | -------- | ---------------------------------------------------- |
    | `id`      | string | ✓        | Block to update                                      |
    | `pageId`  | string | ✓        | Page the block belongs to                            |
    | `content` | string |          | New text (for `text` blocks; accepts Markdown)       |
    | `url`     | string |          | New URL (for `image`, `embed`, `link`, `pdf` blocks) |
  </Accordion>

  <Accordion title="delete_block">
    | Field    | Type   | Required | Description               |
    | -------- | ------ | -------- | ------------------------- |
    | `id`     | string | ✓        | Block to delete           |
    | `pageId` | string | ✓        | Page the block belongs to |
  </Accordion>
</AccordionGroup>

***

## Action items

<AccordionGroup>
  <Accordion title="list_action_items">
    | Field     | Type   | Required | Description               |
    | --------- | ------ | -------- | ------------------------- |
    | `pageId`  | string | ✓        | Page containing the block |
    | `blockId` | string | ✓        | Action-plan block ID      |
  </Accordion>

  <Accordion title="create_action_items">
    | Field     | Type   | Required | Description                       |
    | --------- | ------ | -------- | --------------------------------- |
    | `pageId`  | string | ✓        | Page containing the block         |
    | `blockId` | string | ✓        | Action-plan block to add items to |
    | `items`   | array  | ✓        | Array of action item objects      |

    **Item fields:** `title` (required), `description`, `status`, `dueDate`, `startDate`, `internal`, `assignees` (email array)
  </Accordion>

  <Accordion title="update_action_item">
    All fields optional. `assignees` replaces the full list.

    | Field         | Type      | Required | Description                                   |
    | ------------- | --------- | -------- | --------------------------------------------- |
    | `id`          | string    | ✓        | Action item to update                         |
    | `title`       | string    |          |                                               |
    | `description` | string    |          |                                               |
    | `status`      | string    |          | `todo` · `in_progress` · `done` · `cancelled` |
    | `dueDate`     | string    |          | ISO 8601                                      |
    | `startDate`   | string    |          | ISO 8601                                      |
    | `internal`    | boolean   |          | Hide from buyers                              |
    | `assignees`   | string\[] |          | Emails — replaces current list                |
  </Accordion>

  <Accordion title="delete_action_item">
    | Field | Type   | Required | Description           |
    | ----- | ------ | -------- | --------------------- |
    | `id`  | string | ✓        | Action item to delete |
  </Accordion>
</AccordionGroup>

***

## Workflows & webhooks

<AccordionGroup>
  <Accordion title="trigger_workflow">
    Triggers a configured automation.

    | Field        | Type   | Required | Description                              |
    | ------------ | ------ | -------- | ---------------------------------------- |
    | `workflowId` | string | ✓        | Workflow to trigger                      |
    | `data`       | object |          | Key-value payload passed to the workflow |
  </Accordion>
</AccordionGroup>

***

## Lookups

<AccordionGroup>
  <Accordion title="list_templates">
    | Field    | Type   | Required | Description                 |
    | -------- | ------ | -------- | --------------------------- |
    | `source` | string |          | `org` (default) or `public` |
    | `page`   | number |          |                             |
    | `limit`  | number |          |                             |
  </Accordion>

  <Accordion title="list_companies">
    Searches by name or domain.

    | Field     | Type   | Required | Description                                    |
    | --------- | ------ | -------- | ---------------------------------------------- |
    | `keyword` | string |          | Name or domain (e.g. `"Acme"` or `"acme.com"`) |
    | `page`    | number |          |                                                |
    | `limit`   | number |          |                                                |
  </Accordion>

  <Accordion title="create_company">
    | Field     | Type   | Required | Description                       |
    | --------- | ------ | -------- | --------------------------------- |
    | `domain`  | string | ✓        | Company domain (e.g. `acme.com`)  |
    | `name`    | string |          | Display name (defaults to domain) |
    | `website` | string |          | Full website URL                  |
  </Accordion>

  <Accordion title="list_users">
    Returns active users in the organization. Use returned IDs as `userId` when creating rooms.

    *(No parameters)*
  </Accordion>

  <Accordion title="list_statuses">
    Returns room statuses. Each result has `id`, `title`, and `defaultStatus`.

    *(No parameters)*
  </Accordion>

  <Accordion title="list_labels">
    *(No parameters)*
  </Accordion>
</AccordionGroup>
