# Apps Source: https://docs.unleashx.ai/api-reference/apps Connect and manage external apps App APIs are coming soon. # Overview Source: https://docs.unleashx.ai/api-reference/audience The Audience API lets you **build and manage reusable, channel-agnostic contact lists**. An audience is a named list of contacts — a mobile number plus any custom columns (called input variables) — uploaded or entered once and then tagged to one or more campaigns (calling, WhatsApp, etc.) without re-uploading the same data. * Use **Create Audience** to build a new audience from a file upload and/or a JSON contact list, or to append more contacts to an existing one. * Use **Update Audience** to rename or describe an audience, or soft-delete it. * Use **List Audiences** to retrieve the paginated list of audiences in the workspace. * Use **Audience Summary List** for a lightweight, unpaginated list (for dropdowns/pickers). * Use **Audience Details** to fetch a single audience's metadata. * Use **List Audience Contacts** to page through the contacts inside an audience. * Use **Export Audience Contacts** to download an audience's contacts (and call history) as an Excel file. * Use **Delete Audience Contacts** to soft-delete one or more contacts by ID. * Use **Download Audience Template** to download a blank Excel template matching an agent's, an audience's, or a chosen set of columns. ## Related endpoints * [Create Audience](/api-reference/audience/create-audience) * [Update Audience](/api-reference/audience/update-audience) * [List Audiences](/api-reference/audience/list-audiences) * [Audience Summary List](/api-reference/audience/audience-summary-list) * [Audience Details](/api-reference/audience/audience-details) * [List Audience Contacts](/api-reference/audience/list-audience-contacts) * [Export Audience Contacts](/api-reference/audience/export-audience-contacts) * [Delete Audience Contacts](/api-reference/audience/delete-audience-contacts) * [Download Audience Template](/api-reference/audience/download-audience-template) # Audience Details Source: https://docs.unleashx.ai/api-reference/audience/audience-details api-reference/openapi.json GET /audience/details Retrieve a single audience's metadata, including its input variables with data types resolved from the input-variable registry. Use this endpoint to **retrieve a single audience's metadata**. ## Endpoint **GET** `/audience/details` **Authentication:** Required (workspace auth) ## Query Parameters | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ------------------- | | `audience_id` | number | Yes | Audience identifier | ## Response ```json theme={null} { "id": 55, "audience_name": "VIP Customers", "description": "High value customers", "source": 1, "source_file": null, "input_variables": [ { "key": "mobile_no", "type": "phone" }, { "key": "name", "type": "name" } ], "tags": ["vip", "renewal"], "total_contacts": 320, "status": 1, "created_date": "10 Dec, 2025 14:30", "updated_date": "2 hours ago" } ``` | Field | Type | Description | | ----------------- | ------ | -------------------------------------------------------------------------------------------------------------------------------------------- | | `source` | number | `1` = CSV/Bulk Upload, `2` = Manual | | `input_variables` | array | Each of the audience's saved variable keys with its data type resolved from the input-variable registry (defaults to `string` if not found). | | `status` | number | See [Audience Status Codes](#audience-status-codes) | | `updated_date` | string | Relative time (e.g. `2 hours ago`) | ## Audience Status Codes | Code | Status | | ---- | -------- | | `0` | Inactive | | `1` | Active | | `2` | Deleted | ## Error Cases | Error | Cause | | ------------------------- | ----------------------------------------------------------------------------- | | `Audience Id is missing.` | `audience_id` not provided | | `Audience not found` | `audience_id` doesn't belong to the caller's company/workspace, or is deleted | ## Example cURL ```bash theme={null} curl -X GET "https://www.tryunleashx.com/api/v1/global/audience/details?audience_id=55" \ -H "token: " ``` # Audience Summary List Source: https://docs.unleashx.ai/api-reference/audience/audience-summary-list api-reference/openapi.json GET /audience/summary-list Retrieve a lightweight, unpaginated list of audiences in the workspace (id, name, variable count, contact count) for dropdowns and pickers. Use this endpoint to **retrieve a lightweight, unpaginated list of audiences** in the workspace — for dropdowns and pickers. ## Endpoint **GET** `/audience/summary-list` **Authentication:** Required (workspace auth) ## Query Parameters None. ## Response ```json theme={null} [ { "id": 55, "audience_name": "VIP Customers", "ID": 55, "OBJECT_NAME": "VIP Customers", "variable_count": 2, "contact_count": 320 } ] ``` | Field | Type | Description | | ------------------------------- | ------ | --------------------------------------------------------------------------------------------------------------------------------------------------- | | `id` / `ID` | number | Audience ID. Both keys are returned so the same response also works with generic `selectdynamic` picker components (which read `ID`/`OBJECT_NAME`). | | `audience_name` / `OBJECT_NAME` | string | Audience name. | | `variable_count` | number | Number of input variables saved on the audience. | | `contact_count` | number | Total contacts in the audience. | ## Behavior * Not paginated — returns every non-deleted audience in the workspace. * Ordered by `CREATED_DATE` descending. ## Example cURL ```bash theme={null} curl -X GET https://www.tryunleashx.com/api/v1/global/audience/summary-list \ -H "token: " ``` # Create Audience Source: https://docs.unleashx.ai/api-reference/audience/create-audience api-reference/openapi.json POST /audience/create Create a new audience from an uploaded file and/or a JSON contacts array (pass audience_name), or append contacts to an existing audience (pass audience_id). Rows are collected from the uploaded file and/or the contacts array; rows without a usable mobile number are skipped, and every campaign/segment already connected to the audience is synced with the newly added contacts. Use this endpoint to **create a new audience, or append contacts to an existing one**, from an uploaded file and/or a JSON contact list. ## Endpoint **POST** `/audience/create` **Content-Type:** `multipart/form-data` (file upload) or `application/json` (JSON contacts only) **Authentication:** Required (workspace auth) ## Two Modes * **Create new audience** — pass `audience_name` (+ file and/or `contacts`). Columns are taken from the uploaded file's header row (or the first 50 JSON `contacts` rows) when no `input_variables` are passed. * **Append to an existing audience** — pass `audience_id` (+ file and/or `contacts`) to add more contacts into that audience. At least one contact row (file or `contacts`) is required. ## Request Body ### Create new audience ```json theme={null} { "audience_name": "VIP Customers", "description": "High value customers", "tags": ["vip", "renewal"], "input_variables": [12, 15], "contacts": [ { "mobile_no": "+12025550123", "name": "John Doe" }, { "mobile_no": "+12025550456", "name": "Jane Smith" } ] } ``` ### Append contacts to an existing audience ```json theme={null} { "audience_id": 55, "contacts": [ { "mobile_no": "+12025550789", "name": "Alex Kim" } ] } ``` | Field | Type | Required | Description | | ----------------- | -------------------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `audience_name` | string | Yes\* | Name of the new audience. Required when `audience_id` is not provided. Must be unique within the workspace. | | `audience_id` | number | Yes\* | ID of an existing audience to append contacts to. When provided, switches to append mode and `audience_name` is not required. | | `description` | string | No | Free-text description. Ignored in append mode. | | `source` | number | No | `1` = CSV/Bulk Upload, `2` = Manual. Forced to `1` whenever a file is uploaded, regardless of what's passed. Defaults to `2` when omitted and no file is uploaded. Ignored in append mode. | | `input_variables` | array | No | Input-variable registry IDs to use as this audience's columns, **or** an array of variable key strings directly (e.g. `["mobile_no","name"]`). Also accepted as `variable_id` / `variable_ids`. Ignored in append mode. | | `tags` | array | No | Free-form tags. Accepts an array, a JSON-string array, or a comma-separated string. Ignored in append mode. | | `is_global` | boolean | No | `1` = usable by any agent (default). `0` = agent-specific. Defaults to `0` when `agent_id` is passed without `is_global`. Ignored in append mode. | | `agent_id` | number | No | Agent this audience is scoped to. Implies `is_global = 0` unless `is_global` is explicitly set. Ignored in append mode. | | `contacts` | array \| JSON string | No | Contact rows as a JSON array of objects (each object's keys become/must match the audience's columns). Combines with an uploaded file if both are given. | | `audience` | file | No | CSV/Excel file of contact rows — the multipart field name must be `audience`. The file's header row supplies the column names. At least one of the file or `contacts` is required in append mode. | ## Response ### New audience created ```json theme={null} { "message": "Audience created successfully", "data": { "id": 55, "audience_name": "VIP Customers", "total_contacts": 2, "input_variables": ["mobile_no", "name"] } } ``` ### Contacts appended ```json theme={null} { "message": "Contacts added to audience successfully", "data": { "id": 55, "audience_name": "VIP Customers", "total_contacts": 3 } } ``` ## Behavior * Rows are pulled from the uploaded file (multipart field `audience`) and/or the JSON `contacts` array and merged into one list before insert; large files insert in 500-row chunks. * If `input_variables` (or `variable_id`/`variable_ids`) were explicitly selected and a file is uploaded, the file's header row must contain a column for every selected variable — values may be left blank, but the column must exist. * Appending contacts additionally requires the file to include a column for every one of the target audience's existing input variables. * A row without a usable phone/mobile value is skipped; if every row is skipped, the request fails rather than silently creating an empty audience. * New contacts are automatically synced into any campaign (or segment) already connected to the audience. ## Error Cases | Error | Cause | | --------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | | `Audience Name is missing.` | `audience_name` not provided when creating a new audience | | `Audience name already exists in this workspace` | `audience_name` already used by another (non-deleted) audience in the workspace | | `Audience not found` | `audience_id` (append mode) doesn't belong to the caller's company/workspace, or is deleted | | `No contacts provided` | Append mode called with no file and no `contacts` rows | | `No valid contacts found — make sure the file has a phone/mobile column with values` | None of the rows had a usable mobile number | | `The uploaded file is empty — add at least one contact with a phone/mobile number` | Uploaded file parsed to zero rows (new audience mode) | | `Your file must include a column for every input variable in this audience. Column(s) "..." ... missing.` | Upload is missing one or more of the required input-variable columns | ## Example cURL ### JSON contacts only ```bash theme={null} curl -X POST https://www.tryunleashx.com/api/v1/global/audience/create \ -H "Content-Type: application/json" \ -H "token: " \ -d '{ "audience_name": "VIP Customers", "description": "High value customers", "contacts": [ { "mobile_no": "+12025550123", "name": "John Doe" }, { "mobile_no": "+12025550456", "name": "Jane Smith" } ] }' ``` ### File upload ```bash theme={null} curl -X POST https://www.tryunleashx.com/api/v1/global/audience/create \ -H "token: " \ -F "audience_name=VIP Customers" \ -F "audience=@contacts.xlsx" ``` # Delete Audience Contacts Source: https://docs.unleashx.ai/api-reference/audience/delete-audience-contacts api-reference/openapi.json POST /audience/delete-contacts Soft-delete one or more contacts by contact ID, scoped to the caller's company/workspace. No audience_id is required; every affected audience's contact count is resynced. Use this endpoint to **soft-delete one or more contacts** by contact ID. ## Endpoint **POST** `/audience/delete-contacts` **Content-Type:** `application/json` **Authentication:** Required (workspace auth) ## Request Body ```json theme={null} { "contact_id": [101, 102, 103] } ``` | Field | Type | Required | Description | | ------------- | --------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | | `contact_id` | number \| array | Yes\* | Contact ID(s) to delete. Accepts a single ID, an array, a JSON-string array (e.g. `"[101,102]"`), or a comma-separated string (e.g. `"101,102"`). | | `contact_ids` | number \| array | Yes\* | Alias for `contact_id`. Either field is accepted. | ## Response ```json theme={null} { "message": "Contacts deleted successfully", "data": { "deleted": 3 } } ``` ## Behavior * **Soft delete** — sets the contact's status to deleted; records are not removed from the database. * Scoped to the caller's company and workspace only — no `audience_id` is needed, and contact IDs outside the caller's scope, or already deleted, are silently skipped. * Every audience whose contacts were affected has its denormalized contact count resynced. * Any pending dial rows for the deleted contacts are halted immediately (they will not be called even if already queued). ## Error Cases | Error | Cause | | ------------------------ | ------------------------------------------------------------------------ | | `contact_id is required` | Neither `contact_id` nor `contact_ids` resolved to at least one valid ID | ## Example cURL ```bash theme={null} curl -X POST https://www.tryunleashx.com/api/v1/global/audience/delete-contacts \ -H "Content-Type: application/json" \ -H "token: " \ -d '{ "contact_id": [101, 102, 103] }' ``` # Download Audience Template Source: https://docs.unleashx.ai/api-reference/audience/download-audience-template api-reference/openapi.json GET /audience/download-template Download a blank Excel (.xlsx) template whose columns are derived from an agent's metadata input fields, an existing audience's saved input variables, or explicitly chosen input-variable IDs. mobile_no must be among the resolved columns. Use this endpoint to **download a blank Excel template** whose columns match an agent's, an existing audience's, or a chosen set of input variables — ready to fill in and upload via [Create Audience](/api-reference/audience/create-audience). ## Endpoint **GET** `/audience/download-template` **Authentication:** Required (workspace auth) ## Query Parameters | Parameter | Type | Required | Description | | --------------- | --------------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `agent_id` | number | No | Derive columns from this agent's configured metadata input fields. `mobile_no` is force-added as the first column if the agent's fields don't already include it. | | `audience_id` | number | No | Derive columns from an existing audience's saved input variables. | | `variable_id` | number \| array | No | Input-variable registry ID(s) to use as columns, in the order given. Accepts **multiple** IDs — see below. Also accepted as `variable_ids`. | | `audience_name` | string | No | Overrides the downloaded file's base name. Defaults to the audience's name (`audience_id` mode) or `audience_template`. | Only one source is used to resolve columns — `agent_id` is checked first, then `audience_id`, then `variable_id`/`variable_ids`. ### Passing multiple `variable_id`s Any of these forms work — the resulting columns follow the order the IDs were given in: * Repeat the param: `?variable_id=12&variable_id=15` * Comma-separated string: `?variable_id=12,15` * JSON-encoded array: `?variable_id=%5B12%2C15%5D` (i.e. `[12,15]`, URL-encoded) ## Response Returns a downloadable **Excel file** (`.xlsx`). * **Content-Type:** `application/vnd.openxmlformats-officedocument.spreadsheetml.sheet` * **Filename:** `.xlsx` (sanitized; falls back to `audience_template.xlsx`) ### Template Columns One column per resolved variable key, in the order resolved. `mobile_no` must be among them (see Error Cases). ## Behavior * Duplicate keys (case-insensitive) are removed while preserving the first occurrence's order. * When using `variable_id`/`variable_ids`, only variables owned by the caller's workspace or global System variables resolve; unmatched IDs are silently dropped. ## Error Cases | Error | Cause | | --------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------ | | `Audience not found` | `audience_id` doesn't belong to the caller's company/workspace, or is deleted | | `mobile_no is required — please include the mobile_no variable` | The resolved column set (via `audience_id` or `variable_id`/`variable_ids`) doesn't include a `mobile_no` variable | ## Example cURL ### From an existing audience ```bash theme={null} curl -X GET "https://www.tryunleashx.com/api/v1/global/audience/download-template?audience_id=55" \ -H "token: " \ --output audience_template.xlsx ``` ### From multiple chosen input variables ```bash theme={null} curl -X GET "https://www.tryunleashx.com/api/v1/global/audience/download-template?variable_id=12&variable_id=15" \ -H "token: " \ --output audience_template.xlsx ``` # Export Audience Contacts Source: https://docs.unleashx.ai/api-reference/audience/export-audience-contacts api-reference/openapi.json GET /audience/contacts/export Export an audience's contacts, and call history if the audience has been dialed by a campaign, as a binary Excel (.xlsx) file. Use this endpoint to **export an audience's contacts (and call history, if any) as an Excel file** (.xlsx). ## Endpoint **GET** `/audience/contacts/export` **Authentication:** Required (workspace auth) ## Query Parameters | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ------------------- | | `audience_id` | number | Yes | Audience identifier | ## Response Returns an Excel file (`.xlsx`) with up to two sheets: | Sheet | Contents | | ------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `Audience Contacts` | `Mobile No` plus one column per input variable (dynamic, derived from the audience's saved variables and the contacts' own data) | | `Call History` | Only included when this audience has been dialed by at least one campaign — `Mobile`, `Campaign ID`, `Call ID`, `Attempt`, `Call Status`, `Duration`, `Time`, `Agent Name`, `Disposition`, `Recording URL` | ## Notes * The response is a binary Excel file stream, not JSON. * Set your HTTP client to handle binary/file responses. * Only active (non-deleted) contacts are included in the `Audience Contacts` sheet. * If phone number masking is enabled for the workspace, mobile numbers are masked in both sheets. * `Recording URL` links are signed (time-limited) at export time. ## Error Cases | Error | Cause | | ------------------------- | ----------------------------------------------------------------------------- | | `Audience Id is missing.` | `audience_id` not provided | | `Audience not found` | `audience_id` doesn't belong to the caller's company/workspace, or is deleted | ## Example cURL ```bash theme={null} curl -X GET "https://www.tryunleashx.com/api/v1/global/audience/contacts/export?audience_id=55" \ -H "token: " \ -o audience_contacts.xlsx ``` # List Audience Contacts Source: https://docs.unleashx.ai/api-reference/audience/list-audience-contacts api-reference/openapi.json GET /audience/contacts Retrieve a paginated list of contacts inside an audience. Use this endpoint to **retrieve a paginated list of contacts inside an audience**. ## Endpoint **GET** `/audience/contacts` **Authentication:** Required (workspace auth) ## Query Parameters | Parameter | Type | Required | Description | | ------------- | ------ | -------- | --------------------------------------------------------------------------------- | | `audience_id` | number | Yes | Audience identifier | | `page` | number | No | Page number (default: `1`) | | `limit` | number | No | Records per page (default: `10`) | | `search` | string | No | Partial mobile number search (LIKE). `mobile_no` is accepted as a fallback alias. | ## Response ```json theme={null} { "datalist": [ { "id": 101, "mobile_no": "+12025550123", "name": "John Doe", "created_date": "10 Dec, 2025" } ], "pagination": { "totalRecords": 320, "totalPages": 32, "currentPage": 1, "limit": 10 } } ``` ## Behavior * If the workspace has phone number masking enabled, `mobile_no` is returned masked. * Dynamic columns (one per input variable, e.g. `name` above) are built from the audience's saved input variables plus any extra keys found on the contact rows themselves — mobile/phone alias columns are skipped since `mobile_no` already has its own column. * Results are ordered by contact `ID` descending. ## Error Cases | Error | Cause | | ------------------------- | ----------------------------------------------------------------------------- | | `Audience Id is missing.` | `audience_id` not provided | | `Audience not found` | `audience_id` doesn't belong to the caller's company/workspace, or is deleted | ## Example cURL ```bash theme={null} curl -X GET "https://www.tryunleashx.com/api/v1/global/audience/contacts?audience_id=55&page=1&limit=10" \ -H "token: " ``` # List Audiences Source: https://docs.unleashx.ai/api-reference/audience/list-audiences api-reference/openapi.json GET /audience/list Retrieve a paginated list of audiences in the workspace, including each audience's variables, connected campaigns, and contact counts. Use this endpoint to **retrieve a paginated list of audiences** in the workspace, with each audience's variables, connected campaigns, and contact counts. ## Endpoint **GET** `/audience/list` **Authentication:** Required (workspace auth) ## Query Parameters | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------------------------------------------------------------------------- | | `page` | number | No | Page number (default: `1`) | | `limit` | number | No | Records per page (default: `10`) | | `search` | string | No | Partial match against `audience_name` | | `status` | number | No | Filter by status: `1` = Active, `0` = Inactive. See [Audience Status Codes](#audience-status-codes). | ## Audience Status Codes | Code | Status | | ---- | -------- | | `0` | Inactive | | `1` | Active | Deleted audiences (`STATUS = 2`) are always excluded from the list. ## Response ```json theme={null} { "datalist": [ { "id": 55, "audience_name": "VIP Customers", "description": "High value customers", "tags": ["vip", "renewal"], "variables": [ { "key": "mobile_no", "type": "phone" }, { "key": "name", "type": "name" } ], "campaign": [ { "id": 42, "name": "Renewal Reminder" } ], "contacts": 320, "status": "Active", "show_edit": 1, "show_delete": 0, "delete_description": "The audience is linked to 1 active campaign. First remove it from the campaign to delete.", "created_by": "Jane Admin", "updated_by": "Jane Admin", "updated_on": "10 Dec, 2025" } ], "pagination": { "totalRecords": 1, "totalPages": 1, "currentPage": 1, "limit": 10 } } ``` | Field | Type | Description | | --------------------------- | ------------ | --------------------------------------------------------------------------------------------------------------------------------------------------- | | `variables` | array | Only the input variables saved on this audience, as `{ key, type }` — `type` is resolved from the input-variable registry (defaults to `string`). | | `campaign` | array | Campaigns this audience is currently connected to, as `{ id, name }`. | | `show_edit` / `show_delete` | number (0/1) | Whether the edit/delete action is allowed. Editing (rename) is always allowed; delete is `0` when the audience is connected to any active campaign. | | `delete_description` | string | Reason delete is locked (empty string when allowed). | ## Behavior * Results are ordered by `CREATED_DATE` descending. * An audience connected to one or more active (non-deleted) campaigns cannot be deleted — only renamed/edited. ## Example cURL ```bash theme={null} curl -X GET "https://www.tryunleashx.com/api/v1/global/audience/list?page=1&limit=10&search=vip" \ -H "token: " ``` # Update Audience Source: https://docs.unleashx.ai/api-reference/audience/update-audience api-reference/openapi.json POST /audience/update Rename or describe an existing audience, or soft-delete it by passing status: 2. Use this endpoint to **rename or describe an existing audience, or soft-delete it**. ## Endpoint **POST** `/audience/update` **Content-Type:** `application/json` **Authentication:** Required (workspace auth) ## Request Body ### Rename / describe ```json theme={null} { "audience_id": 55, "audience_name": "VIP Customers 2026", "description": "Updated description" } ``` ### Soft-delete ```json theme={null} { "audience_id": 55, "status": 2 } ``` | Field | Type | Required | Description | | --------------- | ------ | -------- | -------------------------------------------------------------------------------------------- | | `audience_id` | number | Yes | ID of the audience to update | | `audience_name` | string | No | New name. Must be unique within the workspace. Ignored when `status` is `2`. | | `description` | string | No | New description | | `status` | number | No | Set to `2` to soft-delete the audience. See [Audience Status Codes](#audience-status-codes). | ## Audience Status Codes | Code | Status | | ---- | -------- | | `0` | Inactive | | `1` | Active | | `2` | Deleted | ## Response ```json theme={null} { "message": "Audience updated successfully", "data": { "id": 55 } } ``` When `status: 2` is passed: ```json theme={null} { "message": "Audience deleted successfully", "data": { "id": 55 } } ``` ## Error Cases | Error | Cause | | ------------------------------------------------ | ------------------------------------------------------------------------------------- | | `Audience Id is missing.` | `audience_id` not provided | | `Audience not found` | `audience_id` doesn't belong to the caller's company/workspace, or is already deleted | | `Audience name already exists in this workspace` | `audience_name` clashes with another (non-deleted) audience in the workspace | ## Example cURL ```bash theme={null} curl -X POST https://www.tryunleashx.com/api/v1/global/audience/update \ -H "Content-Type: application/json" \ -H "token: " \ -d '{ "audience_id": 55, "audience_name": "VIP Customers 2026" }' ``` # Authentication Source: https://docs.unleashx.ai/api-reference/authentication All UnleashX API endpoints require authentication using a token in the request header. ## Using Your API Token Include your API token in the `token` header for all authenticated requests: ```bash theme={null} curl -X POST https://www.tryunleashx.com/api/v1/global/verify \ -H "Content-Type: application/json" \ -H "token: your_api_token_here" \ -d '{}' ``` ## Getting Your API Token ### UnleashX Portal 1. Sign in to the UnleashX portal at `https://www.tryunleashx.com/login`. 2. Open **Profile & Settings** → **API Key** (or **API Key** under your profile). 3. Click **Generate API Token** (or **Create API Key**). Copy the generated token value. 4. Store the token securely. Treat it like a password — do not share or check it into source control. Notes: * Tokens generated in the portal are persistent and do not expire by default (rotate them if compromised). * Use the `token` header when calling APIs (some endpoints also accept `api_access_token`). Successful response (example): ```json theme={null} { "message": "API token generated successfully", "token": "your_api_token_here" } ``` Use that returned value as your API token (`token` header) for subsequent API calls. ### Verify Token API Use this API to validate an API token. It is typically used by clients or middleware to ensure the token is valid before making protected requests. * **Endpoint:** `POST /api/v1/global/verify` * **Headers:** `token` (string, required) — the API token to validate * **Content-Type:** `application/json` * **Description:** Validates the provided API token. Returns `200 OK` when the token is valid; returns `401 Unauthorized` when the token is invalid or expired. # Call History Source: https://docs.unleashx.ai/api-reference/call-logs api-reference/openapi.json GET /agents/call-history Retrieve a summarized call history grouped by agent. The endpoint returns one row per agent with totals (calls, successful calls, duration) and representative phone numbers for the agent's calls. ## API Endpoint **GET** `/api/v1/global/agents/call-history` **Content-Type:** `application/json` **Authentication:** Required (API token validated by middleware `apiauth.verifyToken`). Provide token via header `token` or `api_access_token`. ## Query Parameters / Request Body This endpoint accepts parameters either as query parameters (GET) or as JSON in the request body (middleware maps `req.data`). | Parameter | Type | Required | Description | | ----------------- | ------------- | -------- | ---------------------------------------------------------------------------------------------------- | | `page` | integer | No | Pagination page number. Defaults to env `DEFAULT_PAGE`. | | `limit` | integer | No | Number of items per page. Defaults to env `DEFAULT_PAGE_LIMIT`. | | `fromdate` | string | No | Start date for range (e.g. `2025-01-01` or datetime). Defaults to 1 month ago if omitted. | | `todate` | string | No | End date for range. Defaults to now if omitted. (Code enforces a reasonable max window, \~3 months.) | | `agent_id` | integer | No | Filter results to a specific agent. | | `calling_number` | string | No | Partial match filter for calling number. | | `provider_number` | string | No | Filter by provider number. | | `status` | string/number | No | Filter by call/execution status (e.g. `completed`, `failed`). | Additional filters supported by the underlying summary/list endpoints may also be honored: `sentiment`, `disposition`, `emotion`, `transcript`, `audio_url`, etc. However this endpoint forces grouping by `agent_id`. ## Available Filters (from code) The controller and underlying `agentController` support a set of filters you can pass as query parameters or in the request body. Below are the most useful filters observed in the implementation: | Filter | Type | Description | | --------------------- | -------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `agent_id` | integer | Filter results to a specific agent (`AGENT_ID`). | | `calling_number` | string | Partial-match filter against `CALLING_NUMBER` (uses SQL LIKE). | | `provider_number` | string | Exact match against `PROVIDER_NUMBER`. | | `status` | string/integer | Filters by execution `STATUS` in summary (and `CALL_STATUS` in per-call list endpoints). Common values: `completed`, `failed`, `running` (depends on your workspace data). | | `fromdate` / `todate` | string | Date or datetime range. Controller defaults to last 1 month when omitted; code enforces a maximum reasonable window (\~3 months). | | `page` | integer | Pagination page. | | `limit` | integer | Page size / limit. | | `audio_url` | string | Pass `available` to return calls with an audio file (`FILE_PATH` is not null), or any other value to look for missing files. | | `transcript` | string | Pass `available` to return calls with `TRANSCRIPT` present, or `unavailable` for missing transcripts. | | `sentiment` | string | Filter by `OVERALL_SENTIMENT` recorded in the execution (if voice analysis ran). | | `disposition` | string | Comma-separated dispositions; controller splits and applies `IN` filter on `DISPOSITION`. | | `emotion` | string | Filter by `DETECTED_EMOTION`. | | `input_data` | string | Partial-match (`LIKE`) against `INPUT_DATA`. | | `cost_breakdown` | string | Partial-match (`LIKE`) against `COST_BREAKDOWN` or inside `RETURN_DATA`. | | `duration` | string | For per-call list: expects a range like `min-max` to filter `TOTAL_DURATION`. (Used in `getAgentExecutionList`.) | Notes: * The `getCallHistory` endpoint specifically calls the summary function with `group_by = 'agent_id'`, so grouping is enforced even if other `group_by` values exist in the summary helper. * Some filters have slightly different column names between the summary and the per-call list endpoints (`STATUS` vs `CALL_STATUS`); prefer using `status` for the summary endpoint and `CALL_STATUS` when calling the per-call list directly if you need exact behavior. * `disposition` accepts comma-separated values and will be converted into an `IN` filter in SQL. * For precise per-call data (transcripts, audio URLs, cost breakdown), use the per-call endpoint `agentController.getAgentExecutionList` and apply the same filters. ## Example Request ```bash theme={null} curl -X GET "https://www.tryunleashx.com/api/v1/global/agents/call-history?page=1&limit=10&fromdate=2025-01-01&todate=2025-01-31" \ -H "token: YOUR_API_TOKEN" \ -H "Content-Type: application/json" ``` ## Successful Response (200) Top-level response follows the project's standard wrapper in many endpoints. The important `data` structure (simplified) is shown below. ```json theme={null} { "datalist": [ { "agent_id": 123, "agent_name": "Support Agent A", "total_calls": "12", "success_calls": "10", "failed_calls": "2", "total_duration": "3h:12m:5s", "call_from": "+14045551234", "call_to": "+919876543210" }, { "agent_id": 456, "agent_name": "Sales Agent B", "total_calls": "8", "success_calls": "7", "failed_calls": "1", "total_duration": "1h:45m:0s", "call_from": "+14045559876", "call_to": "+919112223334" } ], "pagination": { "totalRecords": 2, "totalPages": 1, "currentPage": 1, "limit": 10 }, "total_calls": 20, "successful_calls": 17, "total_duration": "4h:57m:5s" } ``` ### Response Fields | Field | Type | Description | | | --------------------------- | ------- | ---------------------------------------------------------------------- | ------------------------------------------------------ | | `datalist` | array | Array of agent summary objects (one per agent). | | | `datalist[].agent_id` | integer | Agent ID (group value). | | | `datalist[].agent_name` | string | Agent display name (if available). | | | `datalist[].total_calls` | number | string | Total calls for that agent in the range. | | `datalist[].success_calls` | number | string | Successful (completed) calls count. | | `datalist[].failed_calls` | number | string | Failed calls count. | | `datalist[].total_duration` | string | Formatted duration for that agent: `Xh:Ym:Zs`. | | | `datalist[].call_from` | string | null | Representative provider number (one sample per agent). | | `datalist[].call_to` | string | null | Representative calling number (one sample per agent). | | `pagination` | object | Pagination info: `totalRecords`, `totalPages`, `currentPage`, `limit`. | | | `total_calls` | integer | Overall total calls across returned agent groups. | | | `successful_calls` | integer | Overall successful calls across returned agent groups. | | | `total_duration` | string | Overall duration formatted `Xh:Ym:Zs`. | | ## Error Responses ### 400 - Bad Request **Status Code:** `400 Bad Request` ```json theme={null} { "error": true, "code": 400, "message": "Invalid date range or parameters", "data": {} } ``` Common error messages: * `Invalid date range or parameters` * `fromdate / todate format invalid` ### 401 - Authentication Error **Status Code:** `401 Unauthorized` ```json theme={null} { "error": true, "code": 401, "message": "Invalid Auth Key or Session Expired", "data": {} } ``` ### 404 - Not Found **Status Code:** `404 Not Found` ```json theme={null} { "error": true, "code": 404, "message": "No call history found for the given filters", "data": {} } ``` ### 500 - Server Error **Status Code:** `500 Internal Server Error` ```json theme={null} { "error": true, "code": 500, "message": "Internal server error", "data": {} } ``` ## Pagination Results are paginated. Use `page` and `limit` to page through results. Pagination metadata is returned in the `pagination` object. For large datasets, prefer narrow date ranges (≤ 3 months). ## Important Notes 1. **Grouping:** This endpoint is implemented by calling `getAgentExecutionSummary` with `group_by=agent_id`, so responses are grouped by agent. 2. **Representative numbers:** `call_from` and `call_to` are taken from one representative execution (latest with non-null numbers) per agent — use `getAgentExecutionList` for full per-call records. 3. **Date ranges:** Defaults to last 1 month if `fromdate`/`todate` are not provided. The code enforces a reasonable maximum range (\~3 months) for performance. 4. **Pagination defaults:** Values come from environment variables `DEFAULT_PAGE` and `DEFAULT_PAGE_LIMIT` if not provided. ## Example: Use agent\_id to fetch one agent's summary ```bash theme={null} curl -X GET "https://www.tryunleashx.com/api/v1/global/agents/call-history?agent_id=123&fromdate=2025-01-01&todate=2025-01-31" \ -H "token: YOUR_API_TOKEN" ``` ## Example Requests (filters) Below are cURL examples that demonstrate how to call the endpoint using the various filters supported by the code. You can use GET query parameters or POST JSON bodies (middleware maps `req.data`). ### 1) Get summary for a specific agent (GET) ```bash theme={null} curl -X GET "https://www.tryunleashx.com/api/v1/global/agents/call-history?agent_id=123&fromdate=2025-01-01&todate=2025-01-31&page=1&limit=10" \ -H "token: YOUR_API_TOKEN" ``` ### 2) Get summary for a specific agent (POST) ```bash theme={null} curl -X POST "https://www.tryunleashx.com/api/v1/global/agents/call-history" \ -H "Content-Type: application/json" \ -H "token: YOUR_API_TOKEN" \ -d '{ "agent_id": 123, "fromdate": "2025-01-01", "todate": "2025-01-31", "page": 1, "limit": 10 }' ``` ### 3) Filter by calling\_number (partial match) ```bash theme={null} curl -X GET "https://www.tryunleashx.com/api/v1/global/agents/call-history?calling_number=91234&page=1&limit=10" \ -H "token: YOUR_API_TOKEN" ``` ### 4) Filter by provider\_number (exact match) ```bash theme={null} curl -X GET "https://www.tryunleashx.com/api/v1/global/agents/call-history?provider_number=+14045551234&page=1" \ -H "token: YOUR_API_TOKEN" ``` ### 5) Filter by status (e.g., completed) ```bash theme={null} curl -X GET "https://www.tryunleashx.com/api/v1/global/agents/call-history?status=completed&fromdate=2025-01-01&todate=2025-01-31" \ -H "token: YOUR_API_TOKEN" ``` ### 6) Filter for calls that have audio available ```bash theme={null} curl -X GET "https://www.tryunleashx.com/api/v1/global/agents/call-history?audio_url=available&fromdate=2025-01-01&todate=2025-01-31" \ -H "token: YOUR_API_TOKEN" ``` ### 7) Filter for calls with transcript available ```bash theme={null} curl -X GET "https://www.tryunleashx.com/api/v1/global/agents/call-history?transcript=available&fromdate=2025-01-01&todate=2025-01-31" \ -H "token: YOUR_API_TOKEN" ``` ### 8) Filter by sentiment or emotion ```bash theme={null} curl -X GET "https://www.tryunleashx.com/api/v1/global/agents/call-history?sentiment=positive&emotion=happy&fromdate=2025-01-01&todate=2025-01-31" \ -H "token: YOUR_API_TOKEN" ``` ### 9) Filter by disposition (comma-separated) ```bash theme={null} curl -X GET "https://www.tryunleashx.com/api/v1/global/agents/call-history?disposition=resolved,followup&fromdate=2025-01-01&todate=2025-01-31" \ -H "token: YOUR_API_TOKEN" ``` ### 10) Filter by input\_data partial match ```bash theme={null} curl -X GET "https://www.tryunleashx.com/api/v1/global/agents/call-history?input_data=order&page=1" \ -H "token: YOUR_API_TOKEN" ``` ### 11) Filter by cost\_breakdown (partial match) ```bash theme={null} curl -X GET "https://www.tryunleashx.com/api/v1/global/agents/call-history?cost_breakdown=google_tts&page=1" \ -H "token: YOUR_API_TOKEN" ``` ### 12) Duration range (per-call list; example for reference) ```bash theme={null} curl -X GET "https://www.tryunleashx.com/api/v1/global/agents/call-history?duration=30-300&page=1" \ -H "token: YOUR_API_TOKEN" ``` ### 13) Combined filters (example) ```bash theme={null} curl -X GET "https://www.tryunleashx.com/api/v1/global/agents/call-history?agent_id=123&calling_number=91234&status=completed&fromdate=2025-01-01&todate=2025-01-31&page=1&limit=20" \ -H "token: YOUR_API_TOKEN" ``` ### 14) POST example with multiple filters (combined) ```bash theme={null} curl -X POST "https://www.tryunleashx.com/api/v1/global/agents/call-history" \ -H "Content-Type: application/json" \ -H "token: YOUR_API_TOKEN" \ -d '{ "agent_id": 123, "calling_number": "91234", "status": "completed", "fromdate": "2025-01-01", "todate": "2025-01-31", "page": 1, "limit": 20 }' ``` Notes: * Use GET for simple queries and POST when your client prefers JSON bodies or needs to send complex filters. * Some filters (like `duration`) are more relevant to the per-call list endpoint; the summary groups by agent but accepts the filter (the underlying query logic differs slightly). ## Related Endpoints * `/api/v1/global/agents/get` — Get agent metadata and configuration. * `/api/v1/global/agents/call` — Initiate an agent call. * `agentController.getAgentExecutionList` — Use this endpoint for row-level per-call details (call-level list, transcripts, audio URLs). *** # Call Cost Source: https://docs.unleashx.ai/api-reference/call-logs/call-cost api-reference/openapi.json GET /transactions/calling-list-with-transaction Retrieve call execution records joined with transaction/cost metadata. This global API mirrors the internal `/api/agent/agent-executions/list` behavior and returns a `transactions` array with headers and pagination metadata. ## API Endpoint **GET** `/api/v1/global/transactions/calling-list-with-transaction` **Content-Type:** `application/json` **Authentication:** Required (API token validated by middleware `apiauth.verifyToken`). Provide token via header `token` or `api_access_token`. ## Query Parameters / Request Body | Parameter | Type | Required | Description | | ------------- | ------- | -------- | ------------------------------------------------------------------ | | `agent_id` | string | No | Comma-separated agent IDs to filter (e.g., `962` or `962,963`). | | `call_status` | string | No | Comma-separated call statuses to filter (mapped to `CALL_STATUS`). | | `fromdate` | string | No | Start date/time (e.g., `2025-01-01` or ISO datetime). | | `todate` | string | No | End date/time. | | `search` | string | No | Search string applied to `TRACK_ID` and `CALLING_NUMBER`. | | `page` | integer | No | Page number (default 1). | | `limit` | integer | No | Page size (default 10). | ## Example Requests ### Basic - get first page for an agent ```bash theme={null} curl -X GET "https://www.tryunleashx.com/api/v1/global/transactions/calling-list-with-transaction?agent_id=962&page=1&limit=20" \ -H "token: YOUR_API_TOKEN" ``` ### Filter by call status and date range ```bash theme={null} curl -X GET "https://www.tryunleashx.com/api/v1/global/transactions/calling-list-with-transaction?agent_id=962&call_status=completed&fromdate=2025-01-01&todate=2025-01-31" \ -H "token: YOUR_API_TOKEN" ``` ### Search by calling number or track id ```bash theme={null} curl -X GET "https://www.tryunleashx.com/api/v1/global/transactions/calling-list-with-transaction?agent_id=962&search=91234" \ -H "token: YOUR_API_TOKEN" ``` ### POST example (if you prefer JSON body) ```bash theme={null} curl -X POST "https://www.tryunleashx.com/api/v1/global/transactions/calling-list-with-transaction" \ -H "Content-Type: application/json" \ -H "token: YOUR_API_TOKEN" \ -d '{ "agent_id": "962", "call_status": "completed", "fromdate": "2025-01-01", "todate": "2025-01-31", "page": 1, "limit": 20 }' ``` ## Successful Response (200) The response contains `headers`, `transactions` (array), and `pagination` metadata: ```json theme={null} { "headers": [ { "key": "track_id", "label": "Call ID", "type": "number", "clickable": true }, ... ], "transactions": [ { "calling_number": "+919876543210", "provider_number": "+14045551234", "status": "completed", "track_id": "abc123", "call_id": "call-xyz", "total_duration": 185, "detected_emotion": null, "transcript": "Customer said ...", "comments": "test comment", "call_status": "completed", "disposition": "resolved", "overall_sentiment": "positive", "error_message": null, "cost_breakdown": null, "voice_call_analysis": null, "tts_cost": "0.00", "llm_cost": "0.00", "stt_cost": "0.00", "infra_cost": "0.00", "analysis_cost": "0.00", "agent_name": "Support Agent A", "agent_icon": null, "agent_id": 962, "id": 12345, "total_cost": "0.00", "created_at": "15 Jan 2025, 10:12 AM", "CALL_JSON": "{...}" } ], "pagination": { "totalRecords": 100, "currentPage": 1, "limit": 20, "totalPages": 5, "has_next": true, "has_prev": false } } ``` ## Notes * `agent_id` accepts comma-separated values and is applied as an `IN` filter. * `call_status` accepts comma-separated values and is applied as an `IN` filter against `CALL_STATUS`. * `search` performs a LIKE search on `TRACK_ID` and `CALLING_NUMBER`. * `total_duration` is returned as raw seconds; controller does not format this field here (use UI to format as needed). * The endpoint returns `headers` to help front-end table rendering and `transactions` array for rows. ## Error Responses * `400 Bad Request` for invalid params. * `401 Unauthorized` for auth failures. * `500 Internal Server Error` for server errors. *** # Call Summary(Agent Wise) Source: https://docs.unleashx.ai/api-reference/call-logs/call-summary api-reference/openapi.json GET /agents/executions/list Retrieve per-call records (executions) for agents. This endpoint returns detailed call-level records (transcripts, audio paths, durations, dispositions, etc.) and supports multiple filters. ## API Endpoint **GET** `/api/v1/global/agents/executions/list` **Content-Type:** `application/json` **Authentication:** Required (API token validated by middleware `apiauth.verifyToken`). Provide token via header `token` or `api_access_token`. ## Query Parameters | Parameter | Type | Required | Description | | ----------------- | -------------- | -------- | ------------------------------------------------------------------------------------------------ | | `agent_id` | integer | No | Filter records for a specific agent. | | `calling_number` | string | No | Partial-match against `CALLING_NUMBER` (uses SQL LIKE). | | `provider_number` | string | No | Exact match against `PROVIDER_NUMBER`. | | `status` | string/integer | No | Filter by execution `STATUS` (or `CALL_STATUS` in some places). Examples: `completed`, `failed`. | | `fromdate` | string | No | Start date (e.g. `2025-01-01` or datetime). Defaults to 1 month back if omitted. | | `todate` | string | No | End date. Defaults to now if omitted. | | `page` | integer | No | Page number (used with `limit` to paginate results). | | `limit` | integer | No | Page size / limit. | | `audio_url` | string | No | Use `available` to return records that have an audio file (`FILE_PATH` present). | | `transcript` | string | No | Use `available` to return records that have `TRANSCRIPT` present. | | `sentiment` | string | No | Filter by `OVERALL_SENTIMENT` (if voice analysis available). | | `disposition` | string | No | Comma-separated dispositions; will be applied as SQL IN filter. | | `emotion` | string | No | Filter by `DETECTED_EMOTION`. | | `input_data` | string | No | Partial-match (`LIKE`) against `INPUT_DATA`. | | `cost_breakdown` | string | No | Partial-match (`LIKE`) against `COST_BREAKDOWN` or within `RETURN_DATA`. | | `duration` | string | No | Range filter (e.g., `30-300`) for `TOTAL_DURATION` (per-call list). | > Note: The handler accepts parameters from `req.query` (GET). The underlying implementation also supports similar filters for POST bodies in the agent controller, but this global route is exposed as GET. ## Example Requests ### Get executions for an agent (GET) ```bash theme={null} curl -X GET "https://www.tryunleashx.com/api/v1/global/agents/executions/list?agent_id=962&page=1&limit=50&fromdate=2025-01-01&todate=2025-01-31" \ -H "token: YOUR_API_TOKEN" ``` ### Filter by calling number (partial) ```bash theme={null} curl -X GET "https://www.tryunleashx.com/api/v1/global/agents/executions/list?agent_id=962&calling_number=91234&page=1&limit=20" \ -H "token: YOUR_API_TOKEN" ``` ### Filter by audio availability and transcript ```bash theme={null} curl -X GET "https://www.tryunleashx.com/api/v1/global/agents/executions/list?agent_id=962&audio_url=available&transcript=available" \ -H "token: YOUR_API_TOKEN" ``` ### Filter by disposition and sentiment ```bash theme={null} curl -X GET "https://www.tryunleashx.com/api/v1/global/agents/executions/list?agent_id=962&disposition=resolved,followup&sentiment=positive" \ -H "token: YOUR_API_TOKEN" ``` ## Successful Response (200) Returns an object with `datalist` containing call execution records. Each record includes many fields; the key fields are listed below. The controller formats durations and dates (e.g., `total_duration` as `1h:2m:3s`, `date`, `time`). ```json theme={null} { "datalist": [ { "ID": 98765, "AGENT_ID": 962, "agent_name": "Support Agent A", "CALLING_NUMBER": "+919876543210", "PROVIDER_NUMBER": "+14045551234", "STATUS": "completed", "CALL_STATUS": "completed", "TOTAL_DURATION": 185, // raw seconds in DB (in code returned as TOTAL_DURATION but formatted) "total_duration": "3m:5s", // formatted string added by controller "CREATED_AT": "2025-01-15T10:12:34Z", "date": "15 Jan, 2025", "time": "10:12", "TRANSCRIPT": "Customer said ...", "FILE_PATH": "https://storage.example.com/recordings/..", "DISPOSITION": "resolved", "SUMMARY": "Call summary text", "RETURN_DATA": { /* trimmed, filtered in response */ }, "INPUT_DATA": { /* request metadata */ }, "COST_BREAKDOWN": [ /* formatted cost items */ ], "VOICE_CALL_ANALYSIS": { /* optional analysis */ }, "VOICE_QUALITY_FEEDBACK": 1, "workflow_name": "Support Flow", "workflow_type": "IVR" } ] } ``` ### Field Notes * `total_duration` is formatted by the controller as `Xh:Ym:Zs` or `Mm:Ss` style for readability (the DB stores seconds). * `RETURN_DATA` is filtered to remove some internal fields; `cost_breakdown` may be moved into `RETURN_DATA.cost_breakdown` if present. * `FILE_PATH` is the URL to audio recording (if available). * `TRANSCRIPT` may be null or empty if speech-to-text was not produced. * `VOICE_QUALITY_FEEDBACK` is a numeric rating stored for voice analysis (e.g., upvote/downvote). * `agent_name` is provided via join with agent details when available. ## Pagination * The endpoint accepts `page` and `limit` to paginate results. The controller applies `limit` and `offset` when querying. * Note: the current implementation returns only `datalist` (array) and does not include pagination metadata (`totalRecords`, `totalPages`) in the response. Use `page` and `limit` to page through results. ## Error Responses ### 400 Bad Request ```json theme={null} { "error": true, "code": 400, "message": "Invalid parameters", "data": {} } ``` ### 401 Unauthorized ```json theme={null} { "error": true, "code": 401, "message": "Invalid Auth Key or Session Expired", "data": {} } ``` ### 500 Internal Server Error ```json theme={null} { "error": true, "code": 500, "message": "Internal server error", "data": {} } ``` ## Important Notes & Recommendations * Use narrow date ranges (≤ 3 months) for faster queries. The underlying controller defaults to 1 month if `fromdate`/`todate` are omitted. * For more aggregate/grouped metrics use `/api/v1/global/agents/call-history` (agent-level summary). * For export of conversational data (Excel), the system provides a separate endpoint (`downloadConversationalData`) which streams an XLSX. * If you need pagination metadata added to the response, we can update the controller to include `totalRecords` and `totalPages`. *** # Overview Source: https://docs.unleashx.ai/api-reference/campaigns The Campaigns API lets you **create, update, and soft-delete** outbound calling campaigns. * Use **Create Campaign** to define a new campaign. * Use **Update Campaign** to modify or soft-delete an existing campaign. ## Related endpoints * [Create Campaign](/api-reference/campaigns/create-campaign) * [Update Campaign](/api-reference/campaigns/update-campaign) # Attach Campaign Sources Source: https://docs.unleashx.ai/api-reference/campaigns/attach-campaign-sources api-reference/openapi.json POST /campaign/attach-sources Connect Audiences and/or Segments to a campaign. Only the links are stored in campaign_audience_sources; no contacts are copied at attach time — connected contacts are materialized in the background. Use this endpoint to **connect Audiences and/or Segments to a campaign**. Only the links are stored — no contacts are copied at attach time; connected contacts are materialized in the background. ## Endpoint **POST** `/campaign/attach-sources` **Content-Type:** `application/json` **Authentication:** Required (workspace auth) ## Request Body ```json theme={null} { "campaign_id": 42, "audience_ids": [101, 102], "segment_ids": [55] } ``` | Field | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------------------------------------------------------------ | | `campaign_id` | number | Yes | Campaign identifier | | `audience_ids` | array | No | Audience IDs to attach. At least one of `audience_ids` or `segment_ids` is required. | | `segment_ids` | array | No | Segment IDs to attach. At least one of `audience_ids` or `segment_ids` is required. | ## Response ```json theme={null} { "message": "Sources connected to campaign successfully", "data": { "audience_ids": [101, 102], "segment_ids": [55], "total": 3 } } ``` | Field | Type | Description | | ------------------- | ------ | ----------------------------------------------------- | | `message` | string | Confirmation message | | `data.audience_ids` | array | Deduplicated, numeric audience IDs that were attached | | `data.segment_ids` | array | Deduplicated, numeric segment IDs that were attached | | `data.total` | number | Total number of source links created/updated | ## Behavior * Both `audience_ids` and `segment_ids` are deduplicated and coerced to numbers; non-numeric or zero values are dropped. * Each ID is verified to belong to the caller's company **and** workspace, and to not be soft-deleted. Any ID that doesn't resolve fails the whole request. * If the campaign's agent has required input fields (from its latest flow), every attached audience — and every attached segment's parent audience — must already contain those input variables. Otherwise the attach is blocked, since the agent would otherwise dial contacts missing the data it needs. * **Idempotent:** re-attaching a source that was previously detached reactivates it instead of creating a duplicate link. * Attaching a source immediately queues contact materialization in the background; it does not block on that work completing. ## Error Cases | Error | Cause | | ----------------------------------------------------------- | -------------------------------------------------------------------------------------------- | | `Campaign not found` | Invalid `campaign_id`, or it doesn't belong to the caller's company/workspace | | `Pass at least one audience_ids or segment_ids` | Both `audience_ids` and `segment_ids` are empty after filtering | | `Audience not found in this workspace: ` | One or more `audience_ids` don't belong to the caller's company/workspace, or are deleted | | `Segment not found in this workspace: ` | One or more `segment_ids` don't belong to the caller's company/workspace, or are deleted | | `Audience "" is missing agent input fields: ` | An attached audience lacks input variables required by the campaign's agent | | `Segment "" is missing agent input fields: ` | An attached segment's parent audience lacks input variables required by the campaign's agent | ## Example cURL ```bash theme={null} curl -X POST https://www.tryunleashx.com/api/v1/global/campaign/attach-sources \ -H "Content-Type: application/json" \ -H "token: " \ -d '{ "campaign_id": 42, "audience_ids": [101, 102], "segment_ids": [55] }' ``` # Download Audience Format Source: https://docs.unleashx.ai/api-reference/campaigns/audience-format api-reference/openapi.json GET /audience-format Download an Excel (.xlsx) template for uploading audience data to a campaign. Columns are dynamically generated based on the agent's metadata input fields. Use this endpoint to **download an Excel template** for uploading audience data to a campaign. ## Endpoint **GET** `/audience-format` **Authentication:** Required (workspace auth) ## Query Parameters | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ------------------- | | `campaign_id` | number | Yes | Campaign identifier | ## Response Returns a downloadable **Excel file** (`.xlsx`). * **Content-Type:** `application/vnd.openxmlformats-officedocument.spreadsheetml.sheet` * **Filename:** `audience_format_.xlsx` ### Template Columns The Excel file always includes `mobile_no` as the first column. Additional columns are dynamically generated based on the **agent's configured metadata input fields**. | Column | Description | | ---------------- | ------------------------------------------------------- | | `mobile_no` | Phone number in E.164 format (e.g. `+12025550123`) | | `` | Additional fields defined in the agent's metadata input | ## Notes * The campaign must have an agent assigned. If no agent is linked, the request returns an error. * Fill the template and upload it when creating or updating a campaign via the `audience` field. ## Error Cases | Error | Cause | | --------------------------------------------------------- | ---------------------------------------- | | `Campaign not exist Or Agent is not assigned to campaign` | Invalid `campaign_id` or no agent linked | ## Example cURL ```bash theme={null} curl -X GET "https://www.tryunleashx.com/api/v1/global/audience-format?campaign_id=42" \ -H "Authorization: " \ --output audience_template.xlsx ``` # Audience List Source: https://docs.unleashx.ai/api-reference/campaigns/audience-list api-reference/openapi.json GET /audience-list Retrieve a paginated list of audience records for a campaign. Use this endpoint to **retrieve a paginated list of audience records** for a campaign, with optional filters and two response modes. ## Endpoint **GET** `/audience-list` **Authentication:** Required (workspace auth) ## Query Parameters | Parameter | Type | Required | Description | | -------------- | --------------- | -------- | ---------------------------------------------------------------- | | `campaign_id` | number | Yes | Campaign identifier | | `page` | number | No | Page number (default: `1`) | | `limit` | number | No | Records per page (default: `10`) | | `mobile_no` | string | No | Partial mobile number search (LIKE) | | `status` | number \| array | No | Audience status filter (see codes below) | | `call_status` | string \| array | No | Filter by call status | | `first_status` | string \| array | No | Filter by first call status | | `last_status` | string \| array | No | Filter by last call status | | `attempt` | number \| array | No | Filter by number of attempts made | | `is_new` | boolean | No | If `true`, returns simplified audience format (default: `false`) | ## Audience Status Codes | Code | Status | | ---- | --------- | | `0` | Fresh | | `1` | Completed | | `2` | Halted | | `3` | Inqueue | ## Response (is\_new=false — default) ```json theme={null} { "datalist": [ { "id": 101, "mobile_no": "+12025550123", "input_data": { "name": "John Doe", "plan": "premium" }, "total_attempt": "2/3", "duration": "2m 30s", "last_attempt": "2025-12-10 14:30:00", "last_disposition": "Interested", "last_call_status": "COMPLETED", "status": "Completed", "updated_by": "Jane Admin" } ], "headers": [ { "key": "mobile_no", "label": "Mobile Number" }, { "key": "input_data", "label": "Input Data" }, { "key": "status", "label": "Lead Status" }, { "key": "total_attempt", "label": "Attempt" }, { "key": "last_call_status", "label": "Call Status" }, { "key": "duration", "label": "Duration" }, { "key": "last_disposition", "label": "Disposition" }, { "key": "last_attempt", "label": "Last Attempt" }, { "key": "updated_by", "label": "Modified By" } ], "pagination": { "totalRecords": 500, "totalPages": 50, "currentPage": 1, "limit": 10 } } ``` ## Response (is\_new=true — simplified) ```json theme={null} { "datalist": [ { "id": 101, "mobile_no": "+12025550123", "name": "John Doe", "plan": "premium" } ], "headers": [ { "key": "mobile_no", "label": "Mobile Number" }, { "key": "name", "label": "Name" }, { "key": "plan", "label": "Plan" } ], "metadata": [ { "key": "mobile_no", "label": "Mobile Number" }, { "key": "name", "label": "Name" } ], "pagination": { "totalRecords": 500, "totalPages": 50, "currentPage": 1, "limit": 10 } } ``` ## Example cURL ```bash theme={null} curl -X GET "https://www.tryunleashx.com/api/v1/global/audience-list?campaign_id=42&page=1&limit=10" \ -H "Authorization: " ``` # Campaign Audience Stats Source: https://docs.unleashx.ai/api-reference/campaigns/campaign-audience-stats api-reference/openapi.json GET /campaign-audience-stats Get aggregated call statistics for a campaign's audience. Use this endpoint to **get aggregated call statistics** for a campaign's audience. ## Endpoint **GET** `/campaign-audience-stats` **Authentication:** Required (workspace auth) ## Query Parameters | Parameter | Type | Required | Description | | -------------- | --------------- | -------- | --------------------------------------- | | `campaign_id` | number | Yes | Campaign identifier | | `mobile_no` | string | No | Filter by mobile number (partial match) | | `status` | number \| array | No | Audience status filter | | `call_status` | string \| array | No | Call status filter | | `first_status` | string \| array | No | First call status filter | | `last_status` | string \| array | No | Last call status filter | | `attempt` | number \| array | No | Attempt count filter | ## Response ```json theme={null} { "total_audience": 500, "coverage": 84.50, "total_attempt": 720, "total_duration": 18540, "successful_calls": 423 } ``` | Field | Type | Description | | ------------------ | ------ | ------------------------------------------------------------------------ | | `total_audience` | number | Total number of audience records matching filters | | `coverage` | number | Percentage of successful calls out of total attempts (2 decimal places) | | `total_attempt` | number | Sum of all call attempts made | | `total_duration` | number | Total call duration in **seconds** | | `successful_calls` | number | Calls with status: `AGENT_ENDED`, `USER_ENDED`, `COMPLETED`, or `ANSWER` | ## Notes * `coverage` = `(successful_calls / total_attempt) * 100`, rounded to 2 decimal places. * Returns `0` for all fields if no matching records are found. * Same filters as the [Audience List](/api-reference/campaigns/audience-list) endpoint can be applied to narrow stats. ## Example cURL ```bash theme={null} curl -X GET "https://www.tryunleashx.com/api/v1/global/campaign-audience-stats?campaign_id=42" \ -H "Authorization: " ``` # Campaign Connected Contacts Source: https://docs.unleashx.ai/api-reference/campaigns/campaign-connected-contacts api-reference/openapi.json GET /campaign/contacts-list Retrieve a paginated list of contacts from every Audience and Segment currently connected to a campaign. Use this endpoint to **retrieve a paginated list of contacts** from every Audience and Segment currently connected to a campaign (via [Attach Campaign Sources](/api-reference/campaigns/attach-campaign-sources)). ## Endpoint **GET** `/campaign/contacts-list` **Authentication:** Required (workspace auth) ## Query Parameters | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ----------------------------------- | | `campaign_id` | number | Yes | Campaign identifier | | `page` | number | No | Page number (default: `1`) | | `limit` | number | No | Records per page (default: `10`) | | `mobile_no` | string | No | Partial mobile number search (LIKE) | ## Response ```json theme={null} { "datalist": [ { "id": 101, "source_name": "VIP Customers", "type": "Audience", "mobile_no": "+12025550123", "input_data": { "name": "John Doe", "plan": "premium" }, "lead_status": "Completed", "attempt": "2/3", "call_status": "COMPLETED", "duration": "2m 30s", "disposition": "Interested", "last_attempt": "10 Dec, 2025 14:30", "modified_by": "Jane Admin" } ], "pagination": { "totalRecords": 200, "totalPages": 20, "currentPage": 1, "limit": 10 } } ``` | Field | Type | Description | | -------------- | ------ | ------------------------------------------------------------------------------------------------- | | `id` | number | Contact ID | | `source_name` | string | Name of the connected Audience or Segment this row came from | | `type` | string | `Audience` or `Segment` | | `mobile_no` | string | Contact's mobile number (masked if phone number masking is enabled for the company) | | `input_data` | object | Contact's input variable values | | `lead_status` | string | `Fresh`, `Completed`, `Halted`, or `Inqueue`. Empty string if the contact hasn't been dialed yet. | | `attempt` | string | `"/"`. Empty string if not yet dialed. | | `call_status` | string | Last raw call status. Empty string if not yet dialed. | | `duration` | string | Total call duration, formatted like `2m 30s`. Empty string if not yet dialed. | | `disposition` | string | Last call disposition. Empty string if not yet dialed. | | `last_attempt` | string | Last attempt timestamp, formatted `d M, Y H:i`. Empty string if not yet dialed. | | `modified_by` | string | Full name of the user who last updated the call record. Empty string if not yet dialed. | ## Behavior * Expands each source connected to the campaign into its contacts — a campaign connected to 2 audiences of 100 contacts each returns 200 rows. * One row per `(source, contact)` pair: a contact present in more than one connected source appears once per source. * Only sources with an active link (not detached) are included. * Call-related fields (`lead_status`, `attempt`, `call_status`, `duration`, `disposition`, `last_attempt`, `modified_by`) are left-joined from the dial queue and stay blank until the contact is dialed. ## Error Cases | Error | Cause | | -------------------- | ----------------------------------------------------------------------------- | | `Campaign not found` | Invalid `campaign_id`, or it doesn't belong to the caller's company/workspace | ## Example cURL ```bash theme={null} curl -X GET "https://www.tryunleashx.com/api/v1/global/campaign/contacts-list?campaign_id=42&page=1&limit=10" \ -H "token: " ``` # Campaign Consumption Source: https://docs.unleashx.ai/api-reference/campaigns/campaign-consumption api-reference/openapi.json GET /campaign-consumption Per-campaign calls, talk time and cost across the whole company. Campaigns with no calls in the selected window are still returned, at zero. Retrieve **per-campaign call volume, talk time and cost** across your company. Unlike [List Campaigns](/api-reference/campaigns/campaign-list), this endpoint is not limited to the token's workspace — a company-level token can report on every workspace at once, or narrow to specific workspaces and campaigns. ## API Endpoint **GET** `/api/v1/global/campaign-consumption` **Base URL:** `https://www.tryunleashx.com` **Authentication:** Required (Token header: `token` or `api_access_token`) ## Query Parameters All parameters are optional. | Parameter | Type | Required | Description | | -------------- | ---------------- | -------- | -------------------------------------------------------------------------------------------------- | | `workspace_id` | integer \| array | No | Restrict to one or more workspaces. Accepts `287`, `287,288` or `[287,288]` | | `campaign_id` | integer \| array | No | Restrict to one or more campaigns. Accepts `202`, `202,203` or `[202,203]` | | `filter` | string | No | Date-range shorthand applied to the calls. See table below. Defaults to **today** | | `fromDate` | date | No | Custom range start (`YYYY-MM-DD`). Used only when `filter` is omitted; send together with `toDate` | | `toDate` | date | No | Custom range end (`YYYY-MM-DD`). Used only when `filter` is omitted; send together with `fromDate` | | `page` | integer | No | Page number (default: `1`) | | `limit` | integer | No | Records per page (default: `10`) | ### Date Range Filters | `filter` value | Range covered | | ------------------------------- | ------------------------------ | | `today` (or `day`) | Today, 00:00:00 – 23:59:59 | | `yesterday` (or `previous_day`) | The previous calendar day | | `week` | Current week, Monday – Sunday | | `last_week` (or `lastweek`) | Previous week, Monday – Sunday | | `month` | Current calendar month | | `last_month` (or `lastmonth`) | Previous calendar month | | `last_7_days` (or `last7days`) | Rolling 7 days including today | If neither `filter` nor a valid `fromDate` / `toDate` pair is supplied, the range falls back to **today**. An unparseable custom range also falls back to today rather than returning an error. ## Success Response **Status Code:** `200 OK` ```json theme={null} { "error": false, "code": 200, "message": "", "timestamp": 1769243432947, "data": { "consumption": [ { "campaign_id": 202, "campaign_name": "Renewal Reminder", "campaign_status": 1, "workspace_id": 287, "workspace_name": "Support", "total_calls": 1240, "total_duration": "38h:12m:5s", "total_cost": "$186.40" }, { "campaign_id": 205, "campaign_name": "Winback July", "campaign_status": 4, "workspace_id": 287, "workspace_name": "Support", "total_calls": 0, "total_duration": "0h:0m:0s", "total_cost": "$0.00" } ], "totals": { "total_campaigns": 2, "total_calls": 1240, "total_duration": "38h:12m:5s", "total_cost": "$186.40" }, "date_range": { "from": "2026-08-01 00:00:00", "to": "2026-08-31 23:59:59" }, "pagination": { "totalRecords": 2, "totalPages": 1, "currentPage": 1, "limit": 10 } } } ``` ## Response Fields ### Consumption Object | Field | Type | Description | | ----------------- | ------- | ------------------------------------------------------------------------------------------------- | | `campaign_id` | integer | Campaign ID | | `campaign_name` | string | Campaign name | | `campaign_status` | integer | Numeric status: `0` draft, `1` inprogress, `2` hold, `3` pause, `4` force\_completed, `5` deleted | | `workspace_id` | integer | Workspace the campaign belongs to | | `workspace_name` | string | Workspace name | | `total_calls` | integer | Number of calls in the selected date range | | `total_duration` | string | Talk time formatted as `1h:2m:14s` | | `total_cost` | string | Actual cost, prefixed with the company's currency symbol | ### Totals Object Grand totals across **every** matching campaign, not just the current page — so page 2 reports the same totals as page 1. | Field | Type | Description | | ----------------- | ------- | ----------------------------------- | | `total_campaigns` | integer | Number of matching campaigns | | `total_calls` | integer | Calls across all matching campaigns | | `total_duration` | string | Combined talk time | | `total_cost` | string | Combined cost with currency symbol | ### Date Range Object | Field | Type | Description | | ------ | ------ | -------------------------------------------- | | `from` | string | Resolved range start (`YYYY-MM-DD HH:mm:ss`) | | `to` | string | Resolved range end (`YYYY-MM-DD HH:mm:ss`) | ### Pagination Object | Field | Type | Description | | -------------- | ------- | ---------------------------------- | | `totalRecords` | integer | Total number of matching campaigns | | `totalPages` | integer | Total number of pages | | `currentPage` | integer | Current page number | | `limit` | integer | Records per page | ## Notes * **Campaigns with no calls are still returned, at zero.** The date range filters the calls, not the campaigns, so a campaign that was idle in the window appears with `total_calls: 0` instead of disappearing from the report. * Results are ordered by `total_cost` descending, then by campaign ID descending. * Cost comes from the actual charged call cost, not an estimate. * Filtering is always restricted to the token's company, so a `workspace_id` from another company returns no records. Use [List Workspaces](/api-reference/workspaces/workspace-list) to look up valid ids. ## Example cURL ### Monthly consumption for one campaign in one workspace ```bash theme={null} curl -X GET "https://www.tryunleashx.com/api/v1/global/campaign-consumption?campaign_id=202&filter=month&workspace_id=287" \ -H "token: " ``` ### All campaigns across the company for the last 7 days ```bash theme={null} curl -X GET "https://www.tryunleashx.com/api/v1/global/campaign-consumption?filter=last_7_days&limit=50" \ -H "token: " ``` ### Custom date range across two workspaces ```bash theme={null} curl -X GET "https://www.tryunleashx.com/api/v1/global/campaign-consumption?workspace_id=[287,293]&fromDate=2026-07-01&toDate=2026-07-31" \ -H "token: " ``` ## Related Operations * [List Campaigns](/api-reference/campaigns/campaign-list) — campaign metadata and progress * [Campaign Details](/api-reference/campaigns/campaign-details) — full configuration of one campaign * [List Workspaces](/api-reference/workspaces/workspace-list) — look up `workspace_id` values # Campaign Details Source: https://docs.unleashx.ai/api-reference/campaigns/campaign-details api-reference/openapi.json GET /campaign-details/{campaign_id} Retrieve full details of a specific campaign including knowledge base items. Use this endpoint to **retrieve full details of a specific campaign**, including its knowledge base items. ## Endpoint **GET** `/campaign-details/:campaign_id` **Authentication:** Required (workspace auth) ## Path Parameters | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ------------------ | | `campaign_id` | number | Yes | ID of the campaign | ## Response ```json theme={null} { "ID": 42, "AGENT_ID": 123, "CAMPAIGN_NAME": "Winter Sale Campaign", "START_DATE": "1 Dec, 2025", "END_DATE": "31 Dec, 2025", "CAMPAIGN_STATUS": 1, "CAMPAIGN_STATUS_NAME": "Inprogress", "MAX_RETRY": 3, "MAX_DELAY": { "min": 5, "max": 30, "unit": "minutes" }, "CONDITIONS": { "max_daily_calls": 500, "time_window": { "start": "09:00", "end": "18:00", "timezone": "America/New_York" } }, "AGENT_NAME": "Sales Agent", "UPDATED_DATE": "2 days ago", "campaign_knowledge_base": [ { "ID": 1, "KNOWLEDGEBASE_NAME": "faq.pdf", "KNOWLEDGEBASE_TYPE": 1, "KNOWLEDGEBASE_LOCATION": "https://your-bucket.s3.amazonaws.com/faq.pdf" } ], "link_knowledge_base": [ { "ID": 2, "KNOWLEDGEBASE_NAME": "Support Articles", "KNOWLEDGEBASE_TYPE": 2, "KNOWLEDGEBASE_LOCATION": "https://docs.yourdomain.com/support" } ] } ``` ### Knowledge Base Types | Type | Description | | ---- | -------------------------------------------- | | `1` | File (PDF, document) — URL is an AWS S3 link | | `2` | Link (web URL) | ## Example cURL ```bash theme={null} curl -X GET "https://www.tryunleashx.com/api/v1/global/campaign-details/42" \ -H "Authorization: " ``` # Force Complete Campaign Source: https://docs.unleashx.ai/api-reference/campaigns/campaign-force-completed api-reference/openapi.json POST /campaign-force-completed Force complete a running campaign immediately, halting all pending audience calls. Use this endpoint to **force complete a running campaign** immediately, halting all pending audience calls. ## Endpoint **POST** `/campaign-force-completed` **Content-Type:** `application/json` **Authentication:** Required (workspace auth) ## Request Body ```json theme={null} { "campaign_id": 42, "campaign_status": "force_completed" } ``` | Field | Type | Required | Description | | ----------------- | ------ | -------- | -------------------------------------------- | | `campaign_id` | number | Yes | ID of the campaign to update | | `campaign_status` | string | Yes | Target status as a string (see values below) | ## Campaign Status Values | Value | Description | | ----------------- | ------------------------------------------------------------------- | | `draft` | Campaign is in draft state | | `inprogress` | Campaign is actively running | | `hold` | Campaign is on hold | | `pause` | Campaign is paused | | `force_completed` | Immediately halts all pending calls and marks campaign as completed | | `deleted` | Marks the campaign as deleted | ## Response ```json theme={null} { "message": "Campaign force completed successfully" } ``` ## Behavior * Maps the string `campaign_status` to its internal numeric code before processing. * When set to `force_completed`: all audience records with status `fresh` or `inqueue` are immediately set to `halted`. * This action is **irreversible** — the campaign cannot be resumed after force completion. ## Example cURL ```bash theme={null} curl -X POST https://www.tryunleashx.com/api/v1/global/campaign-force-completed \ -H "Content-Type: application/json" \ -H "Authorization: " \ -d '{ "campaign_id": 42, "campaign_status": "force_completed" }' ``` # List Campaigns Source: https://docs.unleashx.ai/api-reference/campaigns/campaign-list api-reference/openapi.json GET /campaign-list Retrieve a paginated list of campaigns with optional filters. Use this endpoint to **retrieve a paginated list of campaigns** with optional filters. ## API Endpoint **GET** `/api/v1/global/campaign-list` **Base URL:** `https://www.tryunleashx.com` **Authentication:** Required (Token header: `token` or `api_access_token`) ## Query Parameters | Parameter | Type | Required | Description | | ----------------- | ---------------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `page` | integer | No | Page number (default: `1`) | | `limit` | integer | No | Records per page (default: `10`) | | `agent_id` | integer \| array | No | Filter by agent ID(s). Accepts `5` or a JSON array `[5,9]` | | `campaign_name` | string | No | Partial name search (LIKE) | | `campaign_status` | string \| array | No | Filter by status. Valid values: `draft`, `inprogress`, `hold`, `pause`, `force_completed`, `deleted`. Accepts a JSON array such as `["draft","inprogress"]`. Defaults to all except `deleted`. | | `workspace_id` | integer \| array | No | Workspace scope override. Accepts a single id (`293`) or a JSON array (`[293,294]`). When omitted, only the token's own workspace is listed. | ### Workspace Scope By default the list is scoped to the workspace the API token belongs to. Passing `workspace_id` overrides that, which is how a company-level token reads another workspace's campaigns: * `?workspace_id=293` — campaigns of workspace 293 only * `?workspace_id=[293,294]` — campaigns of both workspaces The scope is always restricted to the token's own company, so a `workspace_id` belonging to another company returns no records. Use [List Workspaces](/api-reference/workspaces/workspace-list) to discover the ids you can pass here. ## Campaign Status Values | Status | Numeric value | Description | | ----------------- | ------------- | ---------------------------- | | `draft` | `0` | Campaign is in draft mode | | `inprogress` | `1` | Campaign is actively running | | `hold` | `2` | Campaign is on hold | | `pause` | `3` | Campaign is paused | | `force_completed` | `4` | Campaign was force completed | | `deleted` | `5` | Campaign has been deleted | ## Success Response **Status Code:** `200 OK` ```json theme={null} { "error": false, "code": 200, "message": "", "timestamp": 1769243432947, "data": { "campaigns": [ { "id": 42, "campaign_name": "Winter Sale Campaign", "is_published": 1, "is_legacy": 0, "agent_id": 18, "agent_name": "Sales Agent", "workspace_id": 293, "workspace_name": "Growth Team", "start_end_date": "1 Dec - 31 Dec", "max_retry": 3, "max_delay": "5m - 30m", "total_audience": 500, "progress": "120/500", "has_audience": true, "has_fresh_inqueue_audience": true, "campaign_status_name": "Inprogress", "campaign_status": 1, "last_updated": "2 days ago" } ], "pagination": { "totalRecords": 25, "totalPages": 3, "currentPage": 1, "limit": 10 } } } ``` ## Response Fields ### Campaign Object | Field | Type | Description | | ---------------------------- | -------------- | ---------------------------------------------------------------------------------- | | `id` | integer | Campaign ID | | `campaign_name` | string | Campaign name | | `is_published` | integer | `1` when the campaign has been published | | `is_legacy` | integer | `1` when the campaign uses the legacy audience model | | `agent_id` | integer | ID of the voice agent running the campaign | | `agent_name` | string | Name of the voice agent | | `workspace_id` | integer | Workspace the campaign belongs to | | `workspace_name` | string | Workspace name | | `start_end_date` | string or null | Schedule window, e.g. `"1 Dec - 31 Dec"` | | `max_retry` | integer | Configured re-attempts | | `max_delay` | string or null | Delay / condition between attempts | | `total_audience` | integer | Contacts connected to the campaign | | `progress` | string | Formatted as `called/total` | | `has_audience` | boolean | `true` when the campaign has any audience | | `has_fresh_inqueue_audience` | boolean | `true` when contacts are still waiting to be dialed | | `campaign_status_name` | string | Human-readable status (see table above), or `Completed` when `end_date` has passed | | `campaign_status` | integer | Numeric status value | | `last_updated` | string or null | Relative last-modified time, e.g. `"2 days ago"` | ### Pagination Object | Field | Type | Description | | -------------- | ------- | ---------------------------------- | | `totalRecords` | integer | Total number of matching campaigns | | `totalPages` | integer | Total number of pages | | `currentPage` | integer | Current page number | | `limit` | integer | Records per page | ## Notes * `campaign_status` defaults to all statuses except `deleted`. * A campaign is automatically labeled **Completed** in `campaign_status_name` if its `end_date` has passed. The numeric `campaign_status` is unchanged. * `progress` is formatted as `called/total` audience count. * `workspace_id` / `workspace_name` are returned only for API-token (global) requests. * Results are ordered by creation date, newest first. ## Example cURL ### Campaigns of the token's own workspace ```bash theme={null} curl -X GET "https://www.tryunleashx.com/api/v1/global/campaign-list?page=1&limit=10&campaign_status=inprogress" \ -H "token: " ``` ### Campaigns of a specific workspace ```bash theme={null} curl -X GET "https://www.tryunleashx.com/api/v1/global/campaign-list?workspace_id=293" \ -H "token: " ``` ### Campaigns across multiple workspaces ```bash theme={null} curl -X GET "https://www.tryunleashx.com/api/v1/global/campaign-list?workspace_id=[293,294]&limit=50" \ -H "token: " ``` # Campaign Summary List Source: https://docs.unleashx.ai/api-reference/campaigns/campaign-summary-list api-reference/openapi.json GET /summary-list Retrieve a lightweight list of campaigns (id + label) in the caller's workspace, for use in dropdowns and pickers. No pagination. Use this endpoint to **retrieve a lightweight list of campaigns** (id + label) in the caller's workspace, for use in dropdowns and pickers. No pagination. ## Endpoint **GET** `/summary-list` **Authentication:** Required (workspace auth) This endpoint takes no query parameters. It returns every campaign belonging to the token's company and workspace, ordered by most recently created first. ## Response ```json theme={null} [ { "id": 42, "label": "Diwali Outreach 2025", "agent_id": 7 }, { "id": 41, "label": "Renewal Reminders", "agent_id": null } ] ``` | Field | Type | Description | | ---------- | -------------- | -------------------------------------------- | | `id` | number | Campaign identifier | | `label` | string | Campaign name (empty string if not set) | | `agent_id` | number \| null | Voice agent attached to the campaign, if any | ## Example cURL ```bash theme={null} curl -X GET "https://www.tryunleashx.com/api/v1/global/summary-list" \ -H "token: " ``` # Create Campaign Source: https://docs.unleashx.ai/api-reference/campaigns/create-campaign api-reference/openapi.json POST /create-campaign Create a new outbound campaign. Use this endpoint to **create a new campaign**. ## Endpoint **POST** `/create-campaign` **Content-Type:** `application/json` **Authentication:** Required (workspace auth) ## Request Body ```json theme={null} { "agent_id": 123, "campaign_name": "Winter Sale Campaign", "description": "Outbound calls to promote winter offers", "start_date": "2025-12-01", "end_date": "2025-12-31", "max_retry": 3, "max_delay": "{\"d\":1,\"h\":2,\"m\":30}" } ``` ### Notes * All fields (`agent_id`, `campaign_name`, `description`, `start_date`, `end_date`, `max_retry`) are **required**. * `campaign_name` **must be unique** within a workspace. * `max_retry` cannot be greater than **50**. * `max_delay` is **required** when `max_retry` is greater than **1**. It must be passed as a **JSON string** (not an object) with keys `d` (days), `h` (hours), and `m` (minutes) as numbers. Example: `"{\"d\":1,\"h\":2,\"m\":30}"`. * `start_date` and `end_date` must be in **`YYYY-MM-DD`** format (e.g., `"2025-12-01"`). ## Example cURL ```bash theme={null} curl -X POST https://www.tryunleashx.com/api/v1/global/create-campaign \ -H "Content-Type: application/json" \ -H "Authorization: " \ -d '{ "agent_id": 123, "campaign_name": "Winter Sale Campaign", "description": "Outbound calls to promote winter offers", "start_date": "2025-12-01", "end_date": "2025-12-31", "max_retry": 3, "max_delay": "{\"d\":1,\"h\":2,\"m\":30}" }' ``` # Delete Audience Source: https://docs.unleashx.ai/api-reference/campaigns/delete-audience api-reference/openapi.json POST /delete-audience Permanently delete audience records from a campaign. This action is irreversible. Use this endpoint to **permanently delete audience records** from a campaign. ## Endpoint **POST** `/delete-audience` **Content-Type:** `application/json` **Authentication:** Required (workspace auth) ## Request Body ### Delete specific audience ```json theme={null} { "campaign_id": 42, "audience": [101, 102, 103] } ``` ### Delete all audience (draft campaigns only) ```json theme={null} { "campaign_id": 42, "delete_all": true } ``` | Field | Type | Required | Description | | ------------- | ------- | -------- | ---------------------------------------------------------------------------------------------------------- | | `campaign_id` | number | Yes | Campaign identifier | | `audience` | array | No | Array of audience record IDs to delete. Required when `delete_all` is not `true`. | | `delete_all` | boolean | No | Set to `true` to delete all audience for this campaign. Only allowed when campaign is in **draft** status. | ## Response ```json theme={null} { "message": "Audience deleted successfully" } ``` When using `delete_all`: ```json theme={null} { "message": "All audience deleted successfully" } ``` ## Behavior * **Hard deletes** audience records — this action is **irreversible**. * When `delete_all` is `true`, all audience for the campaign are deleted. This is only allowed when the campaign is in **draft** status. * When `delete_all` is not set, `audience` array is required. * Only deletes records belonging to the specified campaign, company, and workspace. ## Error Cases | Error | Cause | | ----------------------------------------------------------------------- | ------------------------------------------------------------------ | | `Campaign not exist` | Invalid `campaign_id` | | `Audience array is required` | `audience` is empty or not provided (when `delete_all` is not set) | | `All audience can only be deleted when the campaign is in draft status` | `delete_all` is `true` but campaign is not in draft status | ## Example cURL ```bash theme={null} curl -X POST https://www.tryunleashx.com/api/v1/global/delete-audience \ -H "Content-Type: application/json" \ -H "token: " \ -d '{ "campaign_id": 42, "delete_all": true }' ``` # Export Campaign Audience Data Source: https://docs.unleashx.ai/api-reference/campaigns/export-campaign-audience-data api-reference/openapi.json GET /export-campaign-audience-data Export campaign audience data as an Excel (.xlsx) file with optional filters. Columns include dynamic fields based on agent metadata. Use this endpoint to **export campaign audience data as an Excel file** (.xlsx) with optional filters. ## Endpoint **GET** `/export-campaign-audience-data` **Authentication:** Required (workspace auth) ## Query Parameters | Parameter | Type | Required | Description | | -------------- | --------------- | -------- | ----------------------------------------- | | `campaign_id` | number | **Yes** | Campaign identifier | | `mobile_no` | string | No | Partial mobile number search (LIKE) | | `status` | string \| array | No | Audience status filter (see values below) | | `call_status` | string \| array | No | Filter by call status | | `first_status` | string \| array | No | Filter by first call status | | `last_status` | string \| array | No | Filter by last call status | | `attempt` | number \| array | No | Filter by number of attempts made | | `date_range` | string | No | Date range filter | ## Audience Status Values | Status | Description | | ----------- | -------------------- | | `fresh` | Not yet called | | `completed` | Call completed | | `halted` | Call halted | | `inqueue` | In queue for calling | ## Response Returns an Excel file (`.xlsx`) with the following columns: | Column | Description | | ----------------- | -------------------------------------------- | | ID | Audience record identifier | | Mobile No | Audience mobile number | | *Dynamic Columns* | Columns based on agent metadata input fields | | Status | Audience status label | | Attempt | Attempts made vs max retry (e.g., `2/3`) | | Call Status | Last call status | | Duration | Total call duration | | Disposition | Last disposition | | Modified By | User who last modified | | Updated Date | Last update date | ## Notes * The response is a binary Excel file stream, not JSON. * Set your HTTP client to handle binary/file responses. * Dynamic columns are derived from the agent's metadata input configuration. * The `campaign_id` must belong to the authenticated company and workspace. * Date filter applies to `CREATED_DATE` of the audience record. ## Example cURL ```bash theme={null} curl -X GET "https://www.tryunleashx.com/api/v1/global/export-campaign-audience-data?campaign_id=42&status=completed" \ -H "token: " \ -o campaign_audience.xlsx ``` # Export Campaign Data Source: https://docs.unleashx.ai/api-reference/campaigns/export-campaign-data api-reference/openapi.json GET /export-campaign-data Export campaign data as an Excel (.xlsx) file with optional filters. Use this endpoint to **export campaign data as an Excel file** (.xlsx) with optional filters. ## Endpoint **GET** `/export-campaign-data` **Authentication:** Required (workspace auth) ## Query Parameters | Parameter | Type | Required | Description | | ----------------- | --------------- | -------- | --------------------------------------------------- | | `agent_id` | number \| array | No | Filter by agent ID(s) | | `campaign_name` | string | No | Partial name search (LIKE) | | `campaign_status` | string \| array | No | Filter by status. Defaults to all except `deleted`. | | `date_range` | string | No | Date range filter | ## Campaign Status Values | Status | Description | | ----------------- | ---------------------------- | | `draft` | Campaign is in draft mode | | `inprogress` | Campaign is actively running | | `hold` | Campaign is on hold | | `pause` | Campaign is paused | | `force_completed` | Campaign was force completed | ## Response Returns an Excel file (`.xlsx`) with the following columns: | Column | Description | | --------------- | ----------------------------- | | ID | Campaign identifier | | Campaign Name | Name of the campaign | | Description | Campaign description | | Agent Name | Associated agent name | | Start Date | Campaign start date | | End Date | Campaign end date | | Status | Campaign status label | | Max Retry | Maximum retry attempts | | Max Delay | Delay between retries | | Total Audience | Total audience count | | Called Audience | Number of audiences called | | Created By | User who created the campaign | | Created Date | Campaign creation date | | Updated Date | Last update date | ## Notes * The response is a binary Excel file stream, not JSON. * Set your HTTP client to handle binary/file responses. * If no `campaign_status` is provided, all statuses except `deleted` are included. * Date filter applies to `CREATED_DATE` of the campaign. ## Example cURL ```bash theme={null} curl -X GET "https://www.tryunleashx.com/api/v1/global/export-campaign-data?campaign_status=inprogress&agent_id=5" \ -H "token: " \ -o campaign_data.xlsx ``` # Update Campaign Source: https://docs.unleashx.ai/api-reference/campaigns/update-campaign api-reference/openapi.json POST /update-campaign Update an existing campaign. Use this endpoint to **update an existing campaign**. ## Endpoint **POST** `/update-campaign` **Content-Type:** `application/json` **Authentication:** Required (workspace auth) ## Request Body To update a campaign, send its `id` and any fields you want to change. ```json theme={null} { "id": 42, "agent_id": 123, "campaign_name": "Winter Sale Campaign - Updated", "description": "Updated description for winter offer campaign", "start_date": "2025-12-05", "end_date": "2026-01-05", "max_retry": 5, "max_delay": "{\"d\":1,\"h\":2,\"m\":30}", "campaign_status": "inprogress", "conditions": [ { "rules": [ { "field": "status", "operator": "==", "value": "active" }, { "field": "region", "operator": "==", "value": "US" } ] }, { "join": "OR", "rules": [ { "field": "priority", "operator": "==", "value": "high" } ] } ] } ``` ### Notes * `id` is **required** — it identifies the campaign to update. * Only the fields you send are updated. * `campaign_status` accepts a string value: `draft`, `inprogress`, `hold`, or `pause`. * `max_delay` must be passed as a **JSON string** with keys `d` (days), `h` (hours), and `m` (minutes) as numbers. * `start_date` and `end_date` must be in **`YYYY-MM-DD`** format (e.g., `"2025-12-05"`). * `max_retry` cannot be greater than **50**. ### Conditions Format The `conditions` field accepts an **array of groups**. Each group contains `rules` that are evaluated together. **Structure:** | Field | Type | Required | Description | | ------- | ------ | -------- | ------------------------------------------------------------------------------------------------ | | `join` | string | No | `"OR"` or `"AND"` — how this group connects with the previous group. Omit for the first group. | | `rules` | array | Yes | Array of condition rules within this group. Rules within a group are always joined with **AND**. | **Each rule:** | Field | Type | Required | Description | | ---------- | ------ | -------- | --------------------------------------------------------------- | | `field` | string | Yes | The field name to evaluate (from agent's metadata input fields) | | `operator` | string | Yes | One of the allowed operators (see table below) | | `value` | string | Yes | The value to match against | **Allowed operators:** | Operator | Description | | ------------ | ------------------------------- | | `==` | Equals (case-insensitive) | | `!=` | Not equals | | `>` | Greater than (numeric) | | `>=` | Greater than or equal (numeric) | | `<` | Less than (numeric) | | `<=` | Less than or equal (numeric) | | `contains` | Value contains the substring | | `startsWith` | Value starts with the string | | `endsWith` | Value ends with the string | **Logic:** * Rules **within the same group** are joined with **AND**. * **Groups** are joined with each other using the `join` field (`"OR"` or `"AND"`). **Example — single condition:** ```json theme={null} "conditions": [ { "rules": [ { "field": "status", "operator": "==", "value": "active" } ] } ] ``` This means: **status == "active"** **Example — multiple conditions with AND (same group):** ```json theme={null} "conditions": [ { "rules": [ { "field": "status", "operator": "==", "value": "active" }, { "field": "region", "operator": "==", "value": "US" } ] } ] ``` This means: **status == "active" AND region == "US"** **Example — two groups with OR:** ```json theme={null} "conditions": [ { "rules": [ { "field": "status", "operator": "==", "value": "active" }, { "field": "region", "operator": "==", "value": "US" } ] }, { "join": "OR", "rules": [ { "field": "priority", "operator": "==", "value": "high" } ] } ] ``` This means: **(status == "active" AND region == "US") OR (priority == "high")** **To clear conditions**, send `"conditions": null`. ## Example cURL ```bash theme={null} curl -X POST https://www.tryunleashx.com/api/v1/global/update-campaign \ -H "Content-Type: application/json" \ -H "token: " \ -d '{ "id": 42, "campaign_name": "Winter Sale Campaign - Updated", "start_date": "2025-12-05", "end_date": "2026-01-05", "max_retry": 5, "max_delay": "{\"d\":1,\"h\":2,\"m\":30}", "campaign_status": "inprogress", "conditions": [ { "rules": [ { "field": "status", "operator": "==", "value": "active" } ] } ] }' ``` # Update Knowledge Base Status Source: https://docs.unleashx.ai/api-reference/campaigns/update-knowledgebase-status api-reference/openapi.json POST /update-knowledgebase-status Update the status of a knowledge base item linked to a campaign. Resets the trained state, requiring re-training. Use this endpoint to **update the status of a knowledge base item** linked to a campaign. ## Endpoint **POST** `/update-knowledgebase-status` **Content-Type:** `application/json` **Authentication:** Required (workspace auth) ## Request Body ```json theme={null} { "knowledge_base_id": 7, "status": "active" } ``` | Field | Type | Required | Description | | ------------------- | ------ | -------- | ------------------------------- | | `knowledge_base_id` | number | Yes | ID of the knowledge base record | | `status` | string | Yes | `active` or `inactive` | ## Response ```json theme={null} { "message": "Knowledge base status updated successfully", "data": { "id": 7, "name": "faq.pdf", "status": 1 } } ``` ## Behavior * Updates the knowledge base `STATUS` and resets `TRAINED` to `0` (untrained), requiring re-training. * Validates that the knowledge base record exists and is not deleted. * Validates that the associated agent exists and is not deleted. ## Error Cases | Error | Cause | | ---------------------------- | ------------------------------------------------ | | `Knowledge base not found` | Invalid `knowledge_base_id` or record is deleted | | `Associated agent not found` | The linked agent has been removed | ## Example cURL ```bash theme={null} curl -X POST https://www.tryunleashx.com/api/v1/global/update-knowledgebase-status \ -H "Content-Type: application/json" \ -H "token: " \ -d '{ "knowledge_base_id": 7, "status": "active" }' ``` # Overview Source: https://docs.unleashx.ai/api-reference/chatbots Build and manage chat agents and conversations Chatbot APIs are coming soon. # Get Click-to-Dial History Source: https://docs.unleashx.ai/api-reference/click-to-dial/call-history api-reference/openapi.json GET /click-to-dial/history Retrieve the click-to-dial call history for your workspace, ordered by most recent first. Each entry includes a link to the call recording once the call has completed and the recording has been processed. ## API Endpoint **GET** `/api/v1/global/click-to-dial/history` **Content-Type:** `application/json` **Authentication:** Required (Token header: `token` or `api_access_token`) ## Query Parameters | Parameter | Type | Required | Description | | --------- | ------- | -------- | ---------------------------------------------- | | `app_id` | integer | No | Return only calls triggered with this `app_id` | | `page` | integer | No | Page number, starting at 1. Defaults to `1` | | `limit` | integer | No | Number of records per page. Defaults to `20` | ## Success Response **Status Code:** `200 OK` ```json theme={null} { "data": [ { "call_id": "call_app_1a2b3c4d5e6f", "created_date": "2026-07-14 11:32:05", "recording": "https://recordings.example.com/call_app_1a2b3c4d5e6f.mp3", "caller_number": "+919812345678", "callee_number": "9876543210", "display_number": "+918068001234" }, { "call_id": "call_app_9f8e7d6c5b4a", "created_date": "2026-07-14 10:15:41", "recording": null, "caller_number": "+919812345678", "callee_number": "9123456789", "display_number": "+918068001234" } ], "pagination": { "page": 1, "limit": 20, "total": 42, "total_pages": 3 } } ``` ## Response Fields ### Call History Entry | Field | Type | Description | | ---------------- | -------------- | ----------------------------------------------------------------------------------------------------------------------------------- | | `call_id` | string | Unique identifier of the call, matching the `call_id` returned by the [trigger endpoint](/api-reference/click-to-dial/trigger-call) | | `created_date` | string | Timestamp when the call was triggered (`YYYY-MM-DD HH:mm:ss`) | | `recording` | string \| null | URL of the call recording, or `null` if not yet available | | `caller_number` | string | The agent's own phone number (`user_number` at trigger time) | | `callee_number` | string | The customer number that was dialled (`client_number` at trigger time) | | `display_number` | string | The DID shown to the customer as the caller ID (`did_number` at trigger time) | ### Pagination | Field | Type | Description | | ------------- | ------- | ---------------------------- | | `page` | integer | Current page number | | `limit` | integer | Records per page | | `total` | integer | Total number of call records | | `total_pages` | integer | Total number of pages | ## Error Responses All errors are returned in a common envelope. Always check the `error` field of the response body. ### 401 Unauthorized ```json theme={null} { "error": true, "code": 401, "message": "Invalid Auth Key or Session Expired", "data": {} } ``` ## Example Requests ### Get call history (paginated) ```bash theme={null} curl -X GET "https://www.tryunleashx.com/api/v1/global/click-to-dial/history?page=1&limit=20" \ -H "token: YOUR_API_TOKEN" ``` ### Filter by app ```bash theme={null} curl -X GET "https://www.tryunleashx.com/api/v1/global/click-to-dial/history?app_id=123&page=1&limit=20" \ -H "token: YOUR_API_TOKEN" ``` ## Important Notes ### Call Recordings * The `recording` field is `null` while a call is still in progress or if no recording was captured * Poll this endpoint after the call ends to fetch the recording URL ### Pagination * Results are ordered by most recent first * Use `page` and `limit` to page through results; `pagination.total_pages` tells you how many pages are available # Get Click-to-Call Live Status Source: https://docs.unleashx.ai/api-reference/click-to-dial/live-status api-reference/openapi.json GET /c2c-live-status/{call_id} Check the real-time status of one or more click-to-call (C2C) calls that were started with the [Click-to-Dial API](/api-reference/click-to-dial/trigger-call). Use it to poll a call you just triggered, or to pull a rolled-up view of every click-to-call made by your workspace on a given day. ## API Endpoint ``` GET /api/v1/global/c2c-live-status/{call_id} ``` `{call_id}` is optional. Two distinct modes are supported depending on whether it's supplied: | Mode | When to use | Path | | ----------------- | ------------------------------------------------------------------------------------------------ | ---------------------------------------------- | | Single call | You have a specific `call_id` (returned when the call was triggered) and want its current status | `GET /api/v1/global/c2c-live-status/{call_id}` | | Bulk / date range | You want the status of every click-to-call made by your workspace over a day or range of days | `GET /api/v1/global/c2c-live-status` | **Content-Type:** `application/json` **Authentication:** Required (Token header: `token` or `api_access_token`) The token determines which company/workspace the request is scoped to — you cannot query calls belonging to another workspace. ## Single Call: `GET /c2c-live-status/{call_id}` Returns the live status of exactly one call. ### Path Parameter | Field | Type | Required | Description | | --------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------- | | `call_id` | string | Yes | The call identifier returned by the [Click-to-Dial trigger API](/api-reference/click-to-dial/trigger-call) | ### Success Response **Status Code:** `200 OK` ```json theme={null} { "error": false, "code": 200, "message": "", "timestamp": 1787031005485, "data": { "call_id": "call_app_cdf948429945", "success": true, "status": { "status": "found", "live_status": { "timeline": [ { "status": "queued", "label": "queued", "leg": 1, "at": "2026-08-12T07:30:34.893432+00:00" }, { "status": "dialled", "label": "dialled", "leg": 1, "at": "2026-08-12T07:30:37.007706+00:00" }, { "status": "Ringing", "label": "ringing", "leg": 1, "at": "2026-08-12T07:30:39.032847+00:00" }, { "status": "answered", "label": "answered", "leg": 1, "at": "2026-08-12T07:31:05.119845+00:00" }, { "status": "Ringing", "label": "ringing", "leg": 2, "at": "2026-08-12T07:31:05.119845+00:00" } ], "last_polled_at": "2026-08-12T07:31:13.214900+00:00" }, "second_leg_connected": true, "call_status": "user-ended", "keep_polling": false } } } ``` ### Response Fields | Field | Type | Description | | -------------- | ------- | -------------------------------------------------------------------------------------------------------------------------- | | `data.call_id` | string | Echoes the call id you asked about | | `data.success` | boolean | `true` if a live status could be fetched for this call, `false` if the lookup failed (e.g. unknown/expired call id) | | `data.status` | object | The live status payload for the call, present only when `success` is `true`. Always check `data.success` before reading it | | `data.error` | string | A short error description, present only when `success` is `false` | ### `data.status` Fields | Field | Type | Description | | ---------------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `status` | string | Lookup status for the call record, e.g. `found` | | `live_status.timeline` | array | Ordered list of status events for the call, oldest first. Each entry has `status` (raw label, e.g. `queued`, `dialled`, `Ringing`, `answered`), `label` (normalized label), `leg` (`1` for the customer leg, `2` for the agent leg), and `at` (ISO 8601 timestamp) | | `live_status.last_polled_at` | string | Timestamp this status was last refreshed from the telephony provider | | `second_leg_connected` | boolean | Whether the agent leg (leg 2) has connected | | `call_status` | string | Current high-level call status, e.g. `user-ended` | | `keep_polling` | boolean | Whether the client should continue polling this `call_id` for further updates. `false` once the call has reached a terminal state | The exact set of `status`/`label` values that can appear in `live_status.timeline` and `call_status` may grow over time as new call states are added — don't hardcode an exhaustive list; use `keep_polling` to decide when to stop polling. ### Failure Example ```json theme={null} { "error": false, "code": 200, "message": "", "timestamp": 1755500000000, "data": { "call_id": "call_app_1a2b3c4d5e6f", "success": false, "error": "Call not found" } } ``` A lookup failure for an unknown call still comes back as HTTP 200 with `success: false` inside `data` — it is not a top-level API error. Always branch on `data.success`, not on the HTTP status code, when reading the result. ## Bulk / Date Range: `GET /c2c-live-status` Omit `call_id` to get the live status of every click-to-call made by your workspace within a date range. Defaults to **today** if no range is given. ### Query Parameters | Field | Type | Required | Description | | ---------- | ------------------- | -------- | ----------------------------------------------------------------------- | | `fromdate` | date (`YYYY-MM-DD`) | No | Start of the range. Defaults to today | | `todate` | date (`YYYY-MM-DD`) | No | End of the range. Defaults to `fromdate` (i.e. a single day) if omitted | `fromDate` / `toDate` (camelCase) are also accepted as aliases. ### Success Response **Status Code:** `200 OK` ```json theme={null} { "error": false, "code": 200, "message": "", "timestamp": 1755500000000, "data": { "from_date": "2026-08-18", "to_date": "2026-08-18", "count": 2, "data": [ { "call_id": "call_app_cdf948429945", "success": true, "status": { "status": "found", "live_status": { "timeline": [ { "status": "queued", "label": "queued", "leg": 1, "at": "2026-08-12T07:30:34.893432+00:00" }, { "status": "answered", "label": "answered", "leg": 1, "at": "2026-08-12T07:31:05.119845+00:00" } ], "last_polled_at": "2026-08-12T07:31:13.214900+00:00" }, "second_leg_connected": true, "call_status": "user-ended", "keep_polling": false } }, { "call_id": "call_app_2b3c4d5e6f7a", "success": false, "error": "Call not found" } ] } } ``` ### Response Fields | Field | Type | Description | | ---------------- | ------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `data.from_date` | string | The resolved start date actually applied (after defaulting) | | `data.to_date` | string | The resolved end date actually applied (after defaulting) | | `data.count` | integer | Number of calls found in that range for your workspace | | `data.data` | array | Array of per-call status entries, newest call first. Each entry has the same shape as the single-call response's `data` object (`call_id`, `success`, and either `status` or `error`) — see [`data.status` Fields](#data-status-fields) above | Only calls that were triggered via the Click-to-Dial trigger API for your workspace are included — this does not cover calls made through other channels (e.g. AI voice agent calling). ## Error Responses All errors are returned in a common envelope. Always check the `error` field of the response body. ### 401 Unauthorized ```json theme={null} { "error": true, "code": 401, "message": "Invalid Auth Key or Session Expired", "data": {} } ``` ### 400 Bad Request ```json theme={null} { "error": true, "code": 400, "message": "Invalid fromdate", "data": {} } ``` | Cause | HTTP Status | | ----------------------------------- | ----------- | | Missing or invalid API access token | 401 | | Malformed `fromdate`/`todate` value | 400 | Per-call lookup failures (unknown call id, upstream timeout, etc.) do **not** raise an HTTP error — they surface as `success: false` within the relevant entry, as shown above. ## Example Requests ### Poll a single call ```bash theme={null} curl -X GET "https://www.tryunleashx.com/api/v1/global/c2c-live-status/call_app_1a2b3c4d5e6f" \ -H "token: YOUR_API_TOKEN" ``` ### Get today's activity ```bash theme={null} curl -X GET "https://www.tryunleashx.com/api/v1/global/c2c-live-status" \ -H "token: YOUR_API_TOKEN" ``` ### Get activity over a date range ```bash theme={null} curl -X GET "https://www.tryunleashx.com/api/v1/global/c2c-live-status?fromdate=2026-08-01&todate=2026-08-18" \ -H "token: YOUR_API_TOKEN" ``` ## Typical Flow 1. Trigger a call with the [Click-to-Dial API](/api-reference/click-to-dial/trigger-call) and capture the returned `call_id` 2. Poll `GET /c2c-live-status/{call_id}` until the call reaches a terminal state, or 3. Periodically call `GET /c2c-live-status` (no `call_id`) to get a snapshot of all of today's click-to-call activity, e.g. for a dashboard ## Important Notes ### Status Payload * `data.status.live_status.timeline` gives you the full history of the call across both legs — `leg: 1` is the customer, `leg: 2` is the agent * Use `data.status.keep_polling` to decide when to stop polling, rather than matching on specific `call_status`/timeline label values, since new statuses may be added over time * Always check `data.success` before reading `data.status` ### Scope * The token determines which workspace's calls are visible; you cannot query calls belonging to another workspace * The bulk endpoint only returns calls triggered via the Click-to-Dial trigger API — it does not include calls made through other channels such as AI voice agent calling ### Date Ranges * If `fromdate` and `todate` are both omitted, the range defaults to today * If only `fromdate` is supplied, `todate` defaults to the same day # Trigger Click-to-Dial Call Source: https://docs.unleashx.ai/api-reference/click-to-dial/trigger-call api-reference/openapi.json POST /click-to-dial Initiate an outbound click-to-dial call that connects a customer's number to your agent's phone. The system first rings the customer's phone (`client_number`) and, once answered, bridges the call to the agent (`user_number`). The customer sees the `did_number` as the incoming caller ID. ## API Endpoint **POST** `/api/v1/global/click-to-dial` **Content-Type:** `application/json` **Authentication:** Required (Token header: `token` or `api_access_token`) ## Request Body ```json theme={null} { "client_number": "+919876543210", "user_number": "+919812345678", "did_number": "+918068001234", "app_id": 123, "object_id": 456, "submitted_id": "SUB001", "slug": "phone" } ``` ## Required Fields | Field | Type | Description | | --------------- | ------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `client_number` | string | The customer's phone number to dial (the callee). This number is rung first. Country code prefixes are normalized automatically, e.g. `+919876543210` and `9876543210` are treated as the same number | | `user_number` | string | The calling agent's own phone number. The call is bridged to this number once the customer answers | | `did_number` | string | The DID to display as the caller ID. Must be an active DID owned by your workspace | ## Optional Fields | Field | Type | Description | | -------------- | ------- | ------------------------------------------------------------------------------------------- | | `app_id` | integer | ID of the app to associate this call with, used for tracking and for filtering call history | | `object_id` | integer | ID of the record/object this call relates to (tracking metadata) | | `submitted_id` | string | Submission identifier to associate with this call (tracking metadata) | | `slug` | string | Field slug to associate with the dialled number (tracking metadata) | ## Success Response **Status Code:** `200 OK` ```json theme={null} { "data": { "call_id": "call_app_1a2b3c4d5e6f", "client_number": "9876543210", "caller_id": "+918068001234", "user_number": "+919812345678" }, "message": "Call dialled successfully" } ``` ## Response Fields | Field | Type | Description | | --------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `call_id` | string | Unique identifier for this call. Use it to correlate the call with entries returned by the [call history endpoint](/api-reference/click-to-dial/call-history) | | `client_number` | string | The normalized customer number that was dialled | | `caller_id` | string | The DID displayed to the customer as the caller ID | | `user_number` | string | The agent number the call was bridged to | ## Error Responses All errors are returned in a common envelope. Always check the `error` field of the response body. ### 422 Unprocessable Entity ```json theme={null} { "error": true, "code": 422, "message": "This number does not belong to your account, kindly buy it", "data": {} } ``` | Message | Cause | | ------------------------------------------------------------ | -------------------------------------------------------------------------------------------- | | `Invalid client number` | `client_number` is empty or not a valid phone number | | `Invalid user number` | `user_number` is empty | | `Invalid DID number` | `did_number` is empty | | `This number does not belong to your account, kindly buy it` | The `did_number` is not an active DID on your workspace. Purchase the DID or use one you own | | `Failed to dial the call` | The telephony provider could not place the call. Retry, or contact support if it persists | ### 401 Unauthorized ```json theme={null} { "error": true, "code": 401, "message": "Invalid Auth Key or Session Expired", "data": {} } ``` ## Example Request ```bash theme={null} curl -X POST "https://www.tryunleashx.com/api/v1/global/click-to-dial" \ -H "Content-Type: application/json" \ -H "token: YOUR_API_TOKEN" \ -d '{ "client_number": "+919876543210", "user_number": "+919812345678", "did_number": "+918068001234" }' ``` ## Important Notes ### DID Ownership * The `did_number` must be a DID (phone number) that is already purchased and active on your workspace * Calls with a DID you do not own are rejected with `This number does not belong to your account, kindly buy it` ### Call Flow 1. The customer's phone (`client_number`) rings first 2. Once the customer answers, the call is bridged to the agent (`user_number`) 3. The customer sees the `did_number` as the incoming caller ID ### Phone Number Format * Country code prefixes are normalized automatically, so `+919876543210` and `9876543210` are treated as the same number * It is still recommended to include the country code with the `+` prefix ### Call Tracking * Store the `call_id` returned in the response for tracking purposes * Use the optional `app_id`, `object_id`, `submitted_id`, and `slug` fields to attach tracking metadata to the call * Calls triggered with an `app_id` can later be filtered in the [call history endpoint](/api-reference/click-to-dial/call-history) # Evaluation Source: https://docs.unleashx.ai/api-reference/evaluation Evaluate voice agent and call quality Evaluation APIs are coming soon. # Overview Source: https://docs.unleashx.ai/api-reference/forms Collect and manage structured form inputs Form APIs are coming soon. # Overview Source: https://docs.unleashx.ai/api-reference/input-variables The Input Variables API lets you **manage the workspace-level registry of variable keys** — CSV column names and template tokens (e.g. `mobile_no`, `name`, `plan`) that audiences and agent prompts reference. Variables are either **System** (predefined, read-only, shared across every workspace) or **User Defined** (created per workspace). * Use **Create Input Variable** to add a new User Defined variable. * Use **List Input Variables** to retrieve the paginated registry, including where each variable is used. * Use **Update Input Variable** to modify or soft-delete an existing User Defined variable. ## Related endpoints * [Create Input Variable](/api-reference/input-variables/create-input-variable) * [List Input Variables](/api-reference/input-variables/list-input-variables) * [Update Input Variable](/api-reference/input-variables/update-input-variable) # Create Input Variable Source: https://docs.unleashx.ai/api-reference/input-variables/create-input-variable api-reference/openapi.json POST /input-variable/create Create a new User Defined input variable in the workspace's registry. The variable key must be unique across the workspace's own variables and the global System variables. Use this endpoint to **create a new User Defined input variable** in the workspace's registry. ## Endpoint **POST** `/input-variable/create` **Content-Type:** `application/json` **Authentication:** Required (workspace auth) ## Request Body ```json theme={null} { "variable_key": "customer_plan", "type": "string", "description": "Subscription plan name" } ``` | Field | Type | Required | Description | | -------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------- | | `variable_key` | string | Yes | Unique key for the variable. Letters, numbers and underscore only, and must start with a letter or underscore. | | `type` | string | Yes | Data type of the variable. One of: `string`, `number`, `date`, `email`, `phone`, `name`, `amount`, `address`, `pincode`, `no_type`. | | `description` | string | No | Human-readable description of the variable. | ## Response ```json theme={null} { "message": "Input variable added successfully", "data": { "id": 57, "variable_key": "customer_plan", "type": "string" } } ``` ## Behavior * The new variable is always created as **User Defined** (`IS_SYSTEM = 0`) and active (`STATUS = 1`). * `variable_key` must be unique across **both** the workspace's own variables and the global System variables — a key already used by either is rejected. * `type` is normalized to lowercase and validated against the allowed list before saving. ## Error Cases | Error | Cause | | ----------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------- | | `Variable Key may contain only letters, numbers and underscore, and must start with a letter or underscore` | `variable_key` fails the token format check | | `Type must be one of: string, number, date, email, phone, name, amount, address, pincode, no_type` | `type` is not one of the allowed values | | `This variable already exists as a system variable` | `variable_key` matches an existing System variable | | `This variable already exists in this workspace` | `variable_key` matches an existing User Defined variable in this workspace | ## Example cURL ```bash theme={null} curl -X POST https://www.tryunleashx.com/api/v1/global/input-variable/create \ -H "Content-Type: application/json" \ -H "token: " \ -d '{ "variable_key": "customer_plan", "type": "string", "description": "Subscription plan name" }' ``` # List Input Variables Source: https://docs.unleashx.ai/api-reference/input-variables/list-input-variables api-reference/openapi.json GET /input-variable/list Retrieve a paginated list of input variables for the workspace (System + User Defined), including where each variable is currently used and whether it can be edited or deleted. Use this endpoint to **retrieve a paginated list of input variables** for the workspace, including where each variable is currently used. ## Endpoint **GET** `/input-variable/list` **Authentication:** Required (workspace auth) ## Query Parameters | Parameter | Type | Required | Description | | ------------ | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `page` | number | No | Page number (default: `1`) | | `limit` | number | No | Records per page (default: `10`) | | `search` | string | No | Partial match against `variable_key` | | `source` | string | No | `system` or `user` — filter by variable origin | | `type` | string | No | One or more data types, comma-separated (e.g. `string,name`). See [Variable Types](#variable-types). | | `agent_type` | number | No | Agent type the list is being requested for: `2` (Chat), `3` (Voice), `4` (General). Hides System variables that don't apply to that agent type (see Behavior). | ## Variable Types | Value | | --------- | | `string` | | `number` | | `date` | | `email` | | `phone` | | `name` | | `amount` | | `address` | | `pincode` | | `no_type` | ## Response ```json theme={null} { "datalist": [ { "id": 1, "variable_key": "mobile_no", "type": "phone", "description": "Contact mobile number", "source": "System", "is_required": 1, "is_disabled": 0, "used_in": [], "show_edit": 0, "show_delete": 0, "update_description": "System variables cannot be updated.", "delete_description": "System variables cannot be deleted.", "updated_by": "", "updated_on": "" }, { "id": 57, "variable_key": "customer_plan", "type": "string", "description": "Subscription plan name", "source": "User Defined", "is_required": 0, "is_disabled": 0, "used_in": [ { "id": 8, "name": "Renewal Agent", "type": "agent" }, { "id": 21, "name": "Q4 Leads", "type": "audience" } ], "show_edit": 0, "show_delete": 0, "update_description": "The input variable is linked to 1 active agent and 1 active audience. First remove it from the agents and audiences to update.", "delete_description": "The input variable is linked to 1 active agent and 1 active audience. First remove it from the agents and audiences to delete.", "updated_by": "Jane Admin", "updated_on": "10 Dec, 2025" } ], "pagination": { "totalRecords": 24, "totalPages": 3, "currentPage": 1, "limit": 10 } } ``` | Field | Type | Description | | ------------------------------------------- | ------------ | ------------------------------------------------------------------------------------------------------------------------------------------- | | `used_in` | array | Every agent and audience currently referencing the variable, as `{ id, name, type }` where `type` is `agent` or `audience`. | | `show_edit` / `show_delete` | number (0/1) | Whether the edit/delete action is allowed for this row. Always `0` for System variables and for any variable currently listed in `used_in`. | | `update_description` / `delete_description` | string | Human-readable reason the action is locked (empty string when allowed). | ## Behavior * Returns the workspace's own User Defined variables **plus** the global System variables (`COMPANY_ID = 0`, `WORKSPACE_ID = 0`), so built-in variables show up in every workspace's list. * Results are sorted System variables first, then User Defined, both by ascending ID. * `agent_type` filters out System variables that don't apply to that agent type. Currently `mobile_no` is excluded when `agent_type` is `2` (Chat) or `4` (General) — Voice agents (`3`) keep it. * `used_in` is computed by scanning every non-deleted audience's saved variable keys and every non-deleted agent flow's `metadata_input` declarations, so it reflects live usage at request time. * A variable can only be edited or deleted when it is **User Defined** and **not** referenced by any agent or audience — otherwise `show_edit`/`show_delete` are `0` and the corresponding `*_description` field explains why. ## Example cURL ```bash theme={null} curl -X GET "https://www.tryunleashx.com/api/v1/global/input-variable/list?page=1&limit=10&source=user" \ -H "token: " ``` # Update Input Variable Source: https://docs.unleashx.ai/api-reference/input-variables/update-input-variable api-reference/openapi.json POST /input-variable/update Update a User Defined input variable's type/description, or soft-delete it by passing status = 2. System variables cannot be modified, and deleting a variable that is still in use by an agent or audience is blocked. Use this endpoint to **update or soft-delete a User Defined input variable**. ## Endpoint **POST** `/input-variable/update` **Content-Type:** `application/json` **Authentication:** Required (workspace auth) ## Request Body ### Update fields ```json theme={null} { "variable_id": 57, "type": "amount", "description": "Updated description" } ``` ### Soft-delete a variable ```json theme={null} { "variable_id": 57, "status": 2 } ``` | Field | Type | Required | Description | | -------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------- | | `variable_id` | number | Yes | ID of the input variable to update | | `variable_key` | string | No | Accepted but ignored — the key is immutable and is never changed (see Behavior). | | `type` | string | No | New data type. One of: `string`, `number`, `date`, `email`, `phone`, `name`, `amount`, `address`, `pincode`, `no_type`. | | `description` | string | No | New description | | `status` | number | No | `0` (inactive), `1` (active), or `2` (**deleted** — soft-deletes the variable) | ## Response ```json theme={null} { "message": "Input variable updated successfully", "data": { "id": 57 } } ``` When `status: 2` is sent: ```json theme={null} { "message": "Input variable deleted successfully", "data": { "id": 57 } } ``` ## Behavior * Only **User Defined** variables can be updated — System variables always fail with `System variables cannot be modified`. * `variable_key` is accepted in the request but is **immutable** and never applied — renaming a key would break every audience and agent that references it. * Passing `status: 2` **soft-deletes** the variable (`STATUS` is set to `2`; it no longer appears in [List Input Variables](/api-reference/input-variables/list-input-variables)). Deleting is blocked while the variable is referenced by any agent or audience. * Editing `type` and/or `description` **is allowed even while the variable is in use**. The change is propagated into every agent flow that references the variable by key — the matching `metadata_input` entry's `type`/`data_type` and `description` are updated in place. Audiences store variable keys only (no type/description), so they need no propagation. * Only the fields you send are applied; omitted fields are left unchanged. ## Error Cases | Error | Cause | | ----------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | | `Input variable not found` | `variable_id` is invalid, belongs to another workspace, or is already deleted | | `System variables cannot be modified` | The target variable has `IS_SYSTEM = 1` | | `Type must be one of: string, number, date, email, phone, name, amount, address, pincode, no_type` | `type` is not one of the allowed values | | `The input variable is linked to active agent(s) and/or active audience(s). First remove it from the agents/audiences to delete.` | `status: 2` sent while the variable is still referenced by an agent or audience | ## Example cURL ```bash theme={null} curl -X POST https://www.tryunleashx.com/api/v1/global/input-variable/update \ -H "Content-Type: application/json" \ -H "token: " \ -d '{ "variable_id": 57, "type": "amount", "description": "Updated description" }' ``` # API Introduction Source: https://docs.unleashx.ai/api-reference/introduction Build powerful voice AI applications with UnleashX APIs # UnleashX API Documentation Welcome to the UnleashX API! Our comprehensive API enables you to build sophisticated voice AI applications, manage conversational agents, and integrate human-like conversations into your workflows. ## What is UnleashX? UnleashX is a platform for building, deploying, and managing AI-powered voice agents and workflows. Our APIs provide everything you need to build intelligent voice applications at scale. ## Key Features * **Voice AI Agents**: Create and manage agents for natural conversations * **Phone & Chat Integration**: Make/receive calls, build chatbots * **API Control**: Automate calls, control voice agents via API * **Workflow Automation**: Design complex workflow automations * **Analytics & Reporting**: Track usage and performance ## Getting Started To get started you need to log in to the UnleashX portal: * Visit the portal at `https://www.tryunleashx.com/login` and sign in with your account. * After signing in, open **Profile & Settings** → **API Key** and generate a persistent API token (this is the value you will pass in the `token` header). For full authentication instructions and examples (token usage, generation, and verification), see the Authentication guide: `/api-reference/authentication`. Auth and user/workspace management sit under **Auth & User**, and are shared across every section below. ## API Reference sections Each area below has its own tab in the top navigation, with the full list of endpoints, requests, and responses. Voice agents, Campaigns, Audience, Click to Call, and Activity Logs. Evaluate voice agent and call quality. Orchestrate multi-step agent actions and automations. Build and manage chat agents and conversations. Forms and Apps for collecting and connecting structured data. LLM, voice, and transcriber providers, plus MCP server integrations. ## Base URL All API requests should use: ``` https://www.tryunleashx.com/api/v1/global ``` ## API Design * **RESTful Design**: Consistent, resource-oriented URLs * **JSON Format**: Accepts and returns `application/json` * **Standard HTTP**: Uses HTTP verbs and status codes * **Token Auth**: API requests require a valid `token` header (your API token) ## Example: Agent Creation (Authenticated) ```bash theme={null} curl -X POST https://www.tryunleashx.com/api/agent/createagentorupdate \ -H "Content-Type: application/json" \ -H "token: 359b83f4...your_api_token_here" \ -d '{ "basic_details": { "agent_name": "My Agent", "description": "A helpful assistant", "agent_type": 1 } }' ``` ## Error Handling The API uses standard HTTP status codes: * `200` - Success * `201` - Created * `400` - Bad Request * `401` - Unauthorized (invalid/expired token) * `404` - Not Found * `429` - Rate Limited * `500` - Server Error ## Support For help, contact: **[cs@unleashx.ai](mailto:cs@unleashx.ai)** # List Phone Numbers Source: https://docs.unleashx.ai/api-reference/phone-numbers/list-phone-numbers api-reference/openapi.json GET /list-phone-numbers Retrieve a list of all available phone numbers from various telephony providers. This endpoint returns phone numbers grouped by provider, allowing you to manage and assign numbers to your voice agents. ## API Endpoint **GET** `/api/v1/global/list-phone-numbers` **Content-Type:** `application/json` **Authentication:** Required (Token header: `token` or `api_access_token`) ## Query Parameters | Parameter | Type | Required | Description | | ---------- | ------ | -------- | ------------------------------------------------------------------------------------- | | `provider` | string | No | Filter by specific provider. Supported values: `san`, `ozonetell`, `twilio`, `exotel` | ## Response ### Success Response **Status Code:** `200 OK` ```json theme={null} { "error": false, "code": 200, "message": "", "timestamp": 1769244619292, "data": { "providers": { "San Software": [ { "number": "+9180********", "label_name": null, "number_purpose": null }, { "number": "+9180********", "label_name": null, "number_purpose": null }, { "number": "+9180********", "label_name": "Sales Team", "number_purpose": "TEST" } ], "Ozonetell": [ { "number": "+9180********", "label_name": null, "number_purpose": null } ], "Twilio": [ { "number": "+120********", "label_name": "Customer Support", "number_purpose": "PRODUCTION" } ], "Exotel": [ { "number": "+9198********", "label_name": "Marketing", "number_purpose": "OUTBOUND" } ] } } } ``` ### Response Fields | Field | Type | Description | | ---------------- | ------- | -------------------------------------- | | `error` | boolean | Indicates if there was an error | | `code` | integer | HTTP status code | | `message` | string | Success or error message | | `timestamp` | integer | Unix timestamp in milliseconds | | `data` | object | Response data object | | `data.providers` | object | Phone numbers grouped by provider name | ### Phone Number Object Fields | Field | Type | Description | | ------------ | ------ | -------------------------------------------------- | | `number` | string | Phone number in E.164 format (e.g., +918062810341) | | `label_name` | string | Custom label assigned to the number (nullable) | ### Common Number Purpose Values | Purpose | Description | | ------------ | ------------------------------------- | | `TEST` | Number used for testing purposes | | `PRODUCTION` | Number used in production environment | ## Error Responses ### 401 - Authentication Error **Status Code:** `401 Unauthorized` ```json theme={null} { "error": true, "code": 401, "message": "Invalid Auth Key or Session Expired", "data": {} } ``` ### 404 - No Numbers Found **Status Code:** `404 Not Found` ```json theme={null} { "error": true, "code": 404, "message": "No phone numbers found", "data": {} } ``` ### 500 - Server Error **Status Code:** `500 Internal Server Error` ```json theme={null} { "error": true, "code": 500, "message": "Internal server error", "data": {} } ``` ## Supported Providers | Provider | Key | Description | | ------------ | ---------- | ----------------------------------------- | | San Software | `san` | San Software telephony platform | | Ozonetel | `ozonetel` | Ozonetel cloud communication platform | | Twilio | `twilio` | Global cloud communications platform | | Exotel | `exotel` | Leading cloud telephony provider in India | ## Important Notes 1. **Phone Number Format**: Phone numbers are returned in **E.164 format** (e.g., +918062810341) 2. **Provider Grouping**: Numbers are **grouped by provider** for easy organization 3. **Label Management**: `label_name` can be used to identify numbers by custom names 4. **Available Numbers**: Numbers without a `number_purpose` are typically available for new assignments 5. **Provider Setup**: Some providers may require additional setup before numbers can be used 6. **Permissions**: Ensure you have proper permissions and provider configurations before using numbers 7. **Rate Limits**: API calls are subject to rate limiting based on your plan ## Related Endpoints * [Attach Phone Number](/api-reference/voice-ai/attach-phone-number) - Assign phone numbers to voice agents * [Create Voice Agent](/api-reference/voice-ai/create-voice-agent) - Create a new voice agent * [Update Voice Agent](/api-reference/voice-ai/update-voice-agent) - Update agent configuration # Overview Source: https://docs.unleashx.ai/api-reference/segment The Segment API lets you **create and manage Segments** — a Segment is a dynamic, filtered view of one Audience (a saved filter condition evaluated over that audience's contacts), or a static snapshot of a Campaign's dialed contacts filtered the same way. * Use **Create Segment** to build a segment from an audience's contacts or a campaign's dial results. * Use **Preview Segment** to test filter conditions against an audience before saving. * Use **List Segments** to retrieve the paginated Segment tab. * Use **Segment Summary List** to get a lightweight id/name/count list for dropdowns. * Use **Segment Details** to retrieve one segment's full configuration. * Use **Update Segment** to modify a segment, or soft-delete it. * Use **List Segment Contacts** to retrieve a segment's contact list. * Use **Export Segment Contacts** to download a segment's contacts as an Excel file. ## Related endpoints * [Create Segment](/api-reference/segment/create-segment) * [Preview Segment](/api-reference/segment/preview-segment) * [List Segments](/api-reference/segment/list-segments) * [Segment Summary List](/api-reference/segment/segment-summary-list) * [Segment Details](/api-reference/segment/segment-details) * [Update Segment](/api-reference/segment/update-segment) * [List Segment Contacts](/api-reference/segment/list-segment-contacts) * [Export Segment Contacts](/api-reference/segment/export-segment-contacts) # Create Segment Source: https://docs.unleashx.ai/api-reference/segment/create-segment api-reference/openapi.json POST /segment/create Create a Segment — a saved filter over either an audience's contacts (source_type=audience, SOURCE_TYPE=1) or a campaign's dial results (source_type=campaign, SOURCE_TYPE=2). Matching contacts are evaluated immediately and materialized into the segment's contact mapping. Use this endpoint to **create a Segment** from an audience's contacts or a campaign's dial results, filtered by a set of conditions. ## Endpoint **POST** `/segment/create` **Content-Type:** `application/json` **Authentication:** Required (workspace auth) ## Request Body ### Create from an Audience (`source_type: "audience"`) ```json theme={null} { "segment_name": "Mumbai Premium", "source_type": "audience", "audience_id": 12, "description": "Premium plan contacts in Mumbai", "tags": ["premium", "mumbai"], "filter_conditions": { "CONDITIONLIST": { "1": { "1": { "1": { "CONDITION": "city", "OPRATER": "=", "VALUE_MATCH": "Mumbai" }, "2": { "CONDITION": "plan", "OPRATER": "contains", "VALUE_MATCH": "premium" } } } } } } ``` ### Create from a Campaign (`source_type: "campaign"`) ```json theme={null} { "segment_name": "Interested - Q1 Outreach", "source_type": "campaign", "campaign_id": 42, "filter_conditions": { "CONDITIONLIST": { "1": { "1": { "1": { "CONDITION": "last_disposition", "OPRATER": "=", "VALUE_MATCH": "Interested" } } } } } } ``` | Field | Type | Required | Description | | ---------------------------------------- | ------ | ------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `segment_name` | string | Yes | Name for the segment. Must be unique within the workspace (among non-deleted segments). | | `source_type` | string | Yes | What to build the segment from: `audience` or `campaign`. | | `audience_id` | number | Yes, when `source_type` is `audience` | ID of the audience to filter. Must belong to the caller's company/workspace. | | `campaign_id` | number | Yes, when `source_type` is `campaign` | ID of the campaign whose dialed contacts to filter. Must belong to the caller's company/workspace. | | `description` | string | No | Free-text description. | | `filter_conditions` (alias `conditions`) | object | No | Filter tree in **CONDITIONLIST format** (see below). Omitted or empty → the segment matches every contact of the source. Accepts a JSON object or a JSON-stringified object. | | `tags` | array | No | Tags for the segment. Accepts a real array, a JSON-stringified array, or a comma-separated string. | ## Filter Conditions Format (CONDITIONLIST) `filter_conditions` (or its alias `conditions`) is stored and evaluated **as received**, in the same nested tree format used by the product's condition builder elsewhere (e.g. workflow branching): ``` { "CONDITIONLIST": { "": { "": { "": { "CONDITION": "", "OPRATER": "", "VALUE_MATCH": "" } } } } } ``` * `CONDITIONLIST` contains numbered **branches**; each branch contains numbered **groups**; each group contains numbered **conditions**. The numbers themselves are arbitrary strings — only the nesting position matters. * Conditions within one **group** are AND'ed together. A contact matches the segment if **any** group in **any** branch has all of its conditions pass (OR of ANDs). * Supported `OPRATER` values: `=`, `==`, `===`, `!=`, `!==`, `>`, `>=`, `<`, `<=`, `contains`, `startsWith`, `endsWith`, `like`, plus the literal `true`/`false` shorthand. * An empty group (no conditions) is skipped; an entirely empty/absent `filter_conditions` matches **every** contact of the source. * For `source_type: "audience"`, `CONDITION` field names are matched against each contact's saved input fields (its `input_data`). * For `source_type: "campaign"`, in addition to the dial row's input fields, these computed fields are also available: `status`, `status_label`, `first_status`, `call_status`, `last_status`, `last_disposition`, `total_attempt`, `total_duration`, `followup_count`, `mobile_no`. This is a different shape from the `conditions` array used by [Preview Segment](/api-reference/segment/preview-segment) and [Update Segment](/api-reference/segment/update-segment) (`[{ field, operator, value }]`). Updating a segment's filters through Update Segment rewrites `filter_conditions` into that flat shape, replacing whatever CONDITIONLIST tree was stored at creation. ## Response ```json theme={null} { "message": "Segment created successfully", "data": { "id": 501, "segment_name": "Mumbai Premium", "total_contacts": 128 } } ``` ## Behavior * `segment_name` uniqueness is checked across the whole workspace (non-deleted segments), regardless of source type. * **Audience source** (`SOURCE_TYPE = 1`): every active contact of the audience is evaluated against the filter now; matches are written into the segment's contact mapping (used later by List/Export Segment Contacts and by any campaign the segment is attached to). * **Campaign source** (`SOURCE_TYPE = 2`): the campaign's dial rows (`campaign_audience_details`) are evaluated instead — each row's call-outcome fields merged with its input data. Only dial rows already linked to an `audience_contacts` row are eligible; matched contacts are de-duplicated and mapped with their own resolved source audience (a campaign can span multiple audiences, so the segment's own `audience_id` is left `null`). * `total_contacts` on the created segment is the count of matched contacts at creation time (cached). * If at least one contact matched, the "On Segment Upload" workflow trigger fires for the workspace (failures here are logged but don't fail the request). ## Error Cases | Error | Cause | | --------------------------------------------------------- | ----------------------------------------------------------------------------- | | `Segment Name is required` | `segment_name` missing | | `Source Type is required` | `source_type` missing | | `Invalid source type (expected 'audience' or 'campaign')` | `source_type` is not `audience` or `campaign` | | `Segment name already exists in this workspace` | `segment_name` already used by a non-deleted segment in the workspace | | `Audience Id is required` | `source_type` is `audience` but `audience_id` missing | | `Audience not found` | `audience_id` doesn't belong to the caller's company/workspace, or is deleted | | `Campaign Id is required` | `source_type` is `campaign` but `campaign_id` missing | | `Campaign not found` | `campaign_id` doesn't belong to the caller's company/workspace | ## Example cURL ```bash theme={null} curl -X POST https://www.tryunleashx.com/api/v1/global/segment/create \ -H "Content-Type: application/json" \ -H "token: " \ -d '{ "segment_name": "Mumbai Premium", "source_type": "audience", "audience_id": 12, "filter_conditions": { "CONDITIONLIST": { "1": { "1": { "1": { "CONDITION": "city", "OPRATER": "=", "VALUE_MATCH": "Mumbai" } } } } } }' ``` # Export Segment Contacts Source: https://docs.unleashx.ai/api-reference/segment/export-segment-contacts api-reference/openapi.json GET /segment/contacts/export Export a segment's contacts as an Excel (.xlsx) file. Includes a Call History sheet when the segment has been dialed by a campaign. Use this endpoint to **export a segment's contacts as an Excel file** (`.xlsx`), including its call history when the segment has been dialed. ## Endpoint **GET** `/segment/contacts/export` **Authentication:** Required (workspace auth) ## Query Parameters | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------ | | `segment_id` | number | Yes | Segment identifier | ## Response Returns an Excel file (`.xlsx`) with one or two sheets: | Sheet | When present | Columns | | ------------------ | -------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- | | `Segment Contacts` | Always | Mobile No, plus one column per input variable saved on the parent audience (and any extra input keys found on the contacts) | | `Call History` | Only if this segment has been dialed by a campaign | Mobile, Campaign ID, Call ID, Attempt (e.g. `2/3`), Call Status, Duration, Time, Agent Name, Disposition, Recording URL | ## Notes * The response is a binary Excel file stream, not JSON — set your HTTP client to handle binary/file responses. * The download filename is the segment's name, sanitized to safe filename characters, e.g. `mumbai_premium.xlsx`. * `Segment Contacts` rows come from the segment's materialized contact mapping (`segment_contacts`), the same set used by [List Segment Contacts](/api-reference/segment/list-segment-contacts) — not a live re-evaluation of the filter. * `Call History` rows come from dial rows created **from this segment** (`campaign_audience_details` where `SOURCE_TYPE = 2` and `SOURCE_ID` = the segment), across every campaign the segment has ever been attached to, joined to each call attempt in `agent_executions`. * Recording URLs are signed just before being written to the sheet (the underlying files are stored privately). * Both sheets mask mobile numbers when the workspace's company has phone number masking enabled. ## Error Cases | Error | Cause | | ------------------------ | ---------------------------------------------------------------------------- | | `Segment Id is required` | `segment_id` missing | | `Segment not found` | `segment_id` doesn't belong to the caller's company/workspace, or is deleted | ## Example cURL ```bash theme={null} curl -X GET "https://www.tryunleashx.com/api/v1/global/segment/contacts/export?segment_id=501" \ -H "token: " \ -o segment_contacts.xlsx ``` # List Segment Contacts Source: https://docs.unleashx.ai/api-reference/segment/list-segment-contacts api-reference/openapi.json GET /segment/contacts Retrieve a paginated list of a segment's materialized contacts (the mapping created at segment-build time), with optional mobile number search. Use this endpoint to **retrieve a paginated list of a segment's contacts** — the materialized contact mapping created when the segment was built, not a live re-evaluation of its filter. ## Endpoint **GET** `/segment/contacts` **Authentication:** Required (workspace auth) ## Query Parameters | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ----------------------------------- | | `segment_id` | number | Yes | Segment identifier | | `page` | number | No | Page number (default: `1`) | | `limit` | number | No | Records per page (default: `10`) | | `search` | string | No | Partial mobile number search (LIKE) | ## Response ```json theme={null} { "datalist": [ { "id": 1001, "mobile_no": "+12025550123", "plan": "premium", "city": "Mumbai" } ], "pagination": { "totalRecords": 128, "totalPages": 13, "currentPage": 1, "limit": 10 } } ``` ## Behavior * Reads the segment's materialized contact mapping (`segment_contacts`, status = active) joined to the underlying audience contacts — the exact set a connected campaign would dial. The segment's filter is **not** re-evaluated here. * Dynamic columns come from the parent audience's saved input variables (stable order), plus any extra input keys found on this page's contacts. Phone-number aliases (`mobile_no`, `mobile`, `phone`, `phone_no`, `phone_number`) are skipped since `mobile_no` already has its own column. * `mobile_no` is masked when the workspace's company has phone number masking enabled. * As a side effect, the segment's cached `total_contacts` is refreshed to match the live count of materialized contacts if it had drifted. ## Error Cases | Error | Cause | | ------------------------ | ---------------------------------------------------------------------------- | | `Segment Id is required` | `segment_id` missing | | `Segment not found` | `segment_id` doesn't belong to the caller's company/workspace, or is deleted | ## Example cURL ```bash theme={null} curl -X GET "https://www.tryunleashx.com/api/v1/global/segment/contacts?segment_id=501&page=1&limit=10" \ -H "token: " ``` # List Segments Source: https://docs.unleashx.ai/api-reference/segment/list-segments api-reference/openapi.json GET /segment/list Retrieve a paginated list of segments for the caller's workspace, with optional name search and status filter. Use this endpoint to **retrieve a paginated list of segments** for the Segment tab, with optional search and status filters. ## Endpoint **GET** `/segment/list` **Authentication:** Required (workspace auth) ## Query Parameters | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------- | | `page` | number | No | Page number (default: `1`) | | `limit` | number | No | Records per page (default: `10`) | | `search` | string | No | Partial match on `segment_name` (LIKE) | | `status` | number | No | Filter by segment status: `0` (Inactive) or `1` (Active). Deleted segments (`2`) are always excluded, so passing `status=2` returns no rows. | ## Response ```json theme={null} { "datalist": [ { "id": 501, "segment_name": "Mumbai Premium", "tags": ["premium", "mumbai"], "baselist": "Audience - Delhi NCR Leads", "filters": 2, "conditions": [ { "field": "city", "operator": "=", "value": "Mumbai" }, { "field": "plan", "operator": "contains", "value": "premium" } ], "campaign": [ { "id": 42, "name": "Q1 Outreach" } ], "contacts": 128, "status": "Active", "show_edit": 1, "show_delete": 0, "delete_description": "The segment is linked to 1 active campaign. First remove it from the campaign to delete.", "updated_by": "Jane Admin", "updated_on": "10 Dec, 2025" } ], "pagination": { "totalRecords": 24, "totalPages": 3, "currentPage": 1, "limit": 10 } } ``` | Field | Description | | ------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `baselist` | What the segment was built from: `Audience - ` or `Campaign - ` | | `filters` | Number of flattened leaf conditions in the segment's filter | | `conditions` | Flattened `[{ field, operator, value }]` list, parsed from the segment's stored filter | | `campaign` | Campaigns this segment is currently connected to (via Attach Campaign Sources) | | `show_delete` | `0` while the segment is connected to at least one campaign (deleting would affect a running campaign); `1` otherwise. Edit is always allowed (`show_edit` is always `1`). | `conditions`/`filters` are parsed assuming the segment's stored filter is in the CONDITIONLIST tree format written by [Create Segment](/api-reference/segment/create-segment). A segment whose filter was subsequently changed via [Update Segment](/api-reference/segment/update-segment) (which stores a flat `{ field, operator, value }` array instead) will show `filters: 0` and an empty `conditions` array here, even though its filter is still applied when contacts are (re-)evaluated. ## Example cURL ```bash theme={null} curl -X GET "https://www.tryunleashx.com/api/v1/global/segment/list?page=1&limit=10&status=1" \ -H "token: " ``` # Preview Segment Source: https://docs.unleashx.ai/api-reference/segment/preview-segment api-reference/openapi.json POST /segment/preview Evaluate candidate filter conditions against an audience's active contacts without saving a segment. Returns the match count, percentage, and a sample of matching contacts. Use this endpoint to **test filter conditions against an audience's contacts without saving a segment** — powers the "Preview Contacts" step of the Create Segment modal. ## Endpoint **POST** `/segment/preview` **Content-Type:** `application/json` **Authentication:** Required (workspace auth) ## Request Body ```json theme={null} { "audience_id": 12, "match_type": "all", "conditions": [ { "field": "plan", "operator": "is", "value": "premium" }, { "field": "city", "operator": "contains", "value": "Mumbai" } ], "sample_limit": 20 } ``` | Field | Type | Required | Description | | ---------------------------------------- | ------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------- | | `audience_id` | number | Yes | Audience to preview against. Must belong to the caller's company/workspace. | | `conditions` (alias `filter_conditions`) | array | No | Filter conditions, each `{ field, operator, value }` (flat format — see below). Omitted/empty → matches every contact of the audience. | | `match_type` | string | No | `all` (AND across conditions, default) or `any` (OR across conditions). | | `sample_limit` | number | No | Max number of sample contacts to return (default `20`). | ## Filter Condition Operators `operator` must be one of: | Operator | Meaning | | -------------- | ---------------------------------------------------- | | `is` | Equals (case-insensitive) | | `is_not` | Not equals | | `contains` | Substring match | | `not_contains` | Substring does not match | | `starts_with` | Field starts with value | | `ends_with` | Field ends with value | | `is_empty` | Field is empty | | `is_not_empty` | Field is not empty | | `in` | Field is one of a comma-separated list of values | | `not_in` | Field is not one of a comma-separated list of values | | `gt` | Numeric greater-than | | `lt` | Numeric less-than | This flat `{ field, operator, value }` format is different from the CONDITIONLIST tree accepted by [Create Segment](/api-reference/segment/create-segment)'s `filter_conditions`. Passing a CONDITIONLIST payload here will not be understood — it is read as `{ conditions: [...] }` and, having no `conditions` array of its own, is treated as an empty filter (matches everything). ## Response ```json theme={null} { "size": 128, "baselist_size": 500, "percentage": 25.6, "sample": [ { "id": 1001, "mobile_no": "+12025550123", "input_field": { "plan": "premium", "city": "Mumbai" } } ] } ``` | Field | Description | | --------------- | ----------------------------------------------------------------------------------------------------------- | | `size` | Number of contacts matching the filter | | `baselist_size` | Total active contacts in the audience | | `percentage` | `size / baselist_size * 100`, rounded to 2 decimals (`0` when the audience is empty) | | `sample` | Up to `sample_limit` matching contacts, each with `id`, `mobile_no`, and `input_field` (its raw input data) | ## Behavior * Nothing is persisted — this endpoint only evaluates the filter. * Only active (non-soft-deleted) audience contacts are considered. * `mobile_no` in the sample is masked when the workspace's company has phone number masking enabled. ## Error Cases | Error | Cause | | ------------------------- | ----------------------------------------------------------------------------- | | `Audience Id is required` | `audience_id` missing | | `Audience not found` | `audience_id` doesn't belong to the caller's company/workspace, or is deleted | ## Example cURL ```bash theme={null} curl -X POST https://www.tryunleashx.com/api/v1/global/segment/preview \ -H "Content-Type: application/json" \ -H "token: " \ -d '{ "audience_id": 12, "match_type": "all", "conditions": [ { "field": "plan", "operator": "is", "value": "premium" } ] }' ``` # Segment Details Source: https://docs.unleashx.ai/api-reference/segment/segment-details api-reference/openapi.json GET /segment/details Retrieve one segment's full configuration, including its parsed filter conditions and parent audience. Use this endpoint to **retrieve one segment's full configuration**, including its parsed filter conditions and parent audience. ## Endpoint **GET** `/segment/details` **Authentication:** Required (workspace auth) ## Query Parameters | Parameter | Type | Required | Description | | ------------ | ------ | -------- | ------------------ | | `segment_id` | number | Yes | Segment identifier | ## Response ```json theme={null} { "id": 501, "segment_name": "Mumbai Premium", "description": "Premium plan contacts in Mumbai", "audience_id": 12, "audience_name": "Delhi NCR Leads", "match_type": "all", "filter_conditions": [ { "field": "plan", "operator": "is", "value": "premium" } ], "tags": ["premium", "mumbai"], "total_contacts": 128, "status": 1, "updated_date": "2 days ago" } ``` | Field | Description | | ------------------------------- | ---------------------------------------------------------------------------------------------------- | | `audience_id` / `audience_name` | The segment's source audience (`null` / empty for campaign-sourced segments) | | `match_type` | `all` or `any` | | `filter_conditions` | Flat `[{ field, operator, value }]` list | | `status` | Numeric segment status: `0` = Inactive, `1` = Active (deleted segments can't be fetched — see below) | | `updated_date` | Relative, human-readable string (e.g. `"2 days ago"`) | `filter_conditions` is only populated when the segment's stored filter is in the flat `{ field, operator, value }` shape written by [Update Segment](/api-reference/segment/update-segment). A segment that has never been updated since [Create Segment](/api-reference/segment/create-segment) stores its filter as a CONDITIONLIST tree instead, which this endpoint doesn't parse — for such segments `filter_conditions` is returned as an empty array even though the segment does have a filter applied. ## Error Cases | Error | Cause | | ------------------------ | ---------------------------------------------------------------------------- | | `Segment Id is required` | `segment_id` missing | | `Segment not found` | `segment_id` doesn't belong to the caller's company/workspace, or is deleted | ## Example cURL ```bash theme={null} curl -X GET "https://www.tryunleashx.com/api/v1/global/segment/details?segment_id=501" \ -H "token: " ``` # Segment Summary List Source: https://docs.unleashx.ai/api-reference/segment/segment-summary-list api-reference/openapi.json GET /segment/summary-list Retrieve a lightweight, unpaginated list of every non-deleted segment in the workspace (id, name, variable count, contact count) for use in dropdowns and pickers. Use this endpoint to **retrieve a lightweight, unpaginated list of segments** — id, name, and contact/variable counts — for use in dropdowns and pickers (e.g. attaching a segment to a campaign, or a workflow's `selectdynamic` field). ## Endpoint **GET** `/segment/summary-list` **Authentication:** Required (workspace auth) This endpoint has no query parameters — it always returns every non-deleted segment in the caller's workspace. ## Response ```json theme={null} [ { "id": 501, "segment_name": "Mumbai Premium", "ID": 501, "OBJECT_NAME": "Mumbai Premium", "variable_count": 4, "contact_count": 128 } ] ``` | Field | Description | | --------------------- | --------------------------------------------------------------------------------------------------------------------------------- | | `id` / `segment_name` | Segment identifier and name | | `ID` / `OBJECT_NAME` | Same values, duplicated under these keys so this list can double as a generic `selectdynamic` picker | | `variable_count` | Number of input variables saved on the segment's parent audience (`0` for campaign-sourced segments, which have no `audience_id`) | | `contact_count` | Cached `total_contacts` on the segment | ## Example cURL ```bash theme={null} curl -X GET https://www.tryunleashx.com/api/v1/global/segment/summary-list \ -H "token: " ``` # Update Segment Source: https://docs.unleashx.ai/api-reference/segment/update-segment api-reference/openapi.json POST /segment/update Update a segment's name, description, audience, filters, tags, or status. Passing status=2 soft-deletes the segment. Use this endpoint to **update a segment's name, description, audience, filters, tags, or status**. Passing `status: 2` soft-deletes the segment. ## Endpoint **POST** `/segment/update` **Content-Type:** `application/json` **Authentication:** Required (workspace auth) ## Request Body ### Update fields ```json theme={null} { "segment_id": 501, "segment_name": "Mumbai Premium (VIP)", "description": "Updated description", "audience_id": 12, "match_type": "any", "conditions": [ { "field": "plan", "operator": "is", "value": "premium" }, { "field": "plan", "operator": "is", "value": "vip" } ], "tags": ["premium", "vip"] } ``` ### Soft-delete ```json theme={null} { "segment_id": 501, "status": 2 } ``` | Field | Type | Required | Description | | ---------------------------------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------- | | `segment_id` | number | Yes | Segment identifier | | `segment_name` | string | No | New name. Must be unique within the workspace (among non-deleted segments, excluding this one). | | `description` | string | No | New description | | `audience_id` | number | No | Re-scope the segment to a different audience. Must belong to the caller's company/workspace. | | `conditions` (alias `filter_conditions`) | array | No | New filter, flat format `[{ field, operator, value }]` — see [Preview Segment](/api-reference/segment/preview-segment) for the operator list. | | `match_type` | string | No | `all` or `any`. Only takes effect together with (or after) `conditions`/`filter_conditions`. | | `tags` | array | No | Replaces the segment's tags. Accepts a real array, a JSON-stringified array, or a comma-separated string. | | `status` | number | No | `0` = Inactive, `1` = Active, `2` = Deleted (soft-delete). Any other value is ignored. | ## Response ```json theme={null} { "message": "Segment updated successfully", "data": { "id": 501, "total_contacts": 140 } } ``` When `status: 2` is passed: ```json theme={null} { "message": "Segment deleted successfully", "data": { "id": 501, "total_contacts": 128 } } ``` ## Behavior * `segment_id` must be an existing, non-deleted segment owned by the caller's company/workspace — you cannot use this endpoint to "undelete" a segment. * Renaming checks name-uniqueness against other non-deleted segments in the workspace (skipped while soft-deleting). * Changing `audience_id` re-validates ownership of the new audience via the same check used by [Create Segment](/api-reference/segment/create-segment) and [Preview Segment](/api-reference/segment/preview-segment). * Sending `conditions`/`filter_conditions` or `match_type` re-parses and stores the filter in the **flat** `{ match_type, conditions: [...] }` shape — this replaces (and is a different shape from) the CONDITIONLIST tree that Create Segment writes. * When the audience or filter actually changed (and the request isn't a delete), `total_contacts` is recomputed by evaluating the new filter against the (possibly new) audience's contacts in memory. Recomputing `total_contacts` here only updates the cached count — it does **not** re-materialize the segment's underlying contact mapping. [List Segment Contacts](/api-reference/segment/list-segment-contacts), [Export Segment Contacts](/api-reference/segment/export-segment-contacts), and any campaign already attached to this segment keep dialing/reading the contact set that was materialized at Create Segment time, until the segment is deleted and a new one is created in its place. ## Error Cases | Error | Cause | | ----------------------------------------------- | ------------------------------------------------------------------------------------ | | `Segment Id is required` | `segment_id` missing | | `Segment not found` | `segment_id` doesn't belong to the caller's company/workspace, or is already deleted | | `Segment name already exists in this workspace` | `segment_name` collides with another non-deleted segment | | `Audience not found` | `audience_id` doesn't belong to the caller's company/workspace, or is deleted | ## Example cURL ```bash theme={null} curl -X POST https://www.tryunleashx.com/api/v1/global/segment/update \ -H "Content-Type: application/json" \ -H "token: " \ -d '{ "segment_id": 501, "status": 2 }' ``` # Get Token by Customer ID Source: https://docs.unleashx.ai/api-reference/users/get-token-by-customerid api-reference/openapi.json POST /users/gettokenbycustomerid Generate an API token for an onboarded customer using their customer_salt (Customer ID). Use this endpoint to **generate an API token** for an onboarded customer using their `customer_salt` (Customer ID). ## Endpoint **POST** `/users/gettokenbycustomerid` **Content-Type:** `application/json` **Authentication:** Required (API token) ## Request Body ```json theme={null} { "customer_id": "048372910564", "name": "My API Token", "expiration_days": 30 } ``` ### Parameters | Parameter | Type | Required | Description | | ----------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `customer_id` | string | Yes | The 12-digit customer identifier returned from the [Onboard User](/api-reference/users/onboard-user) endpoint. Also accepts `customerid` or `customer_salt`. | | `name` | string | No | A friendly name for the token. | | `expiration_days` | number | No | Number of days until the token expires. If omitted, the token does not expire. | ### Notes * The `customer_id` must belong to an **active, non-blocked** user. * The user must have at least one **active workspace**. * If `expiration_days` is provided, it must be a **positive integer**. * Each call generates a **new token** — previous tokens are not revoked. ## Success Response ```json theme={null} { "message": "API token generated successfully", "customerid": "048372910564", "customer_api_key": "a1b2c3d4e5f6...generated_token_hex", "name": "My API Token", "expires": 1743033600 } ``` ### Response Fields | Field | Type | Description | | ------------------ | ----------- | ------------------------------------------------------------------ | | `customerid` | string | The customer identifier used in the request. | | `customer_api_key` | string | The newly generated API token. | | `name` | string/null | The token name, if provided. | | `expires` | number/null | Unix timestamp when the token expires, or `null` if no expiration. | ## Error Responses | Error | Description | | ------------------------- | ----------------------------------------------------------- | | `CUSTOMER_ID_NOT_FOUND` | No active user found with the given customer ID. | | `WORKSPACE_NOT_FOUND` | The user does not have an active workspace. | | `INVALID_EXPIRATION_DAYS` | The `expiration_days` value is not a valid positive number. | ## Example cURL ```bash theme={null} curl -X POST https://www.tryunleashx.com/api/v1/global/users/gettokenbycustomerid \ -H "Content-Type: application/json" \ -H "Authorization: " \ -d '{ "customer_id": "048372910564", "name": "My API Token", "expiration_days": 30 }' ``` # Onboard User Source: https://docs.unleashx.ai/api-reference/users/onboard-user api-reference/openapi.json POST /users/onboard Onboard a new user/customer into the portal. Creates a complete account setup including registration, company, user, and workspace in a single API call. Use this endpoint to **onboard a new user/customer** into the portal. This creates a complete account setup including registration, company, user, and workspace in a single API call. ## Endpoint **POST** `/users/onboard` **Content-Type:** `application/json` **Authentication:** Required (API token) ## Request Body ```json theme={null} { "email_id": "john@example.com", "first_name": "John", "last_name": "Doe", "company_name": "Acme Corp" } ``` ### Parameters | Parameter | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------------------------------------- | | `email_id` | string | Yes | Email address of the user to onboard. Also accepts `email`. | | `first_name` | string | Yes | First name of the user. Also accepts `firstName`. | | `last_name` | string | Yes | Last name of the user. Also accepts `lastName`. | | `company_name` | string | Yes | Company name for the new account. Also accepts `companyName`. | ### Notes * All four fields are **required**. * The `email_id` must not already be registered in the system. * The `company_name` must be **unique** — it cannot match an existing company. * The email domain is validated against restricted domains. If the domain is restricted, the request will be rejected. * A unique 12-digit `customer_salt` is auto-generated and returned in the response. This can be used later to generate API tokens via the [Get Token by Customer ID](/api-reference/users/get-token-by-customerid) endpoint. * The onboarded user is created as an **Admin** with a default workspace and **20 free minutes**. ## Success Response ```json theme={null} { "message": "User onboarded successfully", "data": { "registration_id": 101, "user_id": 55, "company_id": 12, "workspace_id": 8, "customer_salt": "048372910564" } } ``` ### Response Fields | Field | Type | Description | | ----------------- | ------ | --------------------------------------------------------------------- | | `registration_id` | number | ID of the registration record created. | | `user_id` | number | ID of the newly created user. | | `company_id` | number | ID of the newly created company. | | `workspace_id` | number | ID of the default workspace created for the user. | | `customer_salt` | string | Unique 12-digit customer identifier. Use this to generate API tokens. | ## Error Responses | Error | Description | | ----------------------------------- | ------------------------------------------------ | | `EMAIL_ALREADY_REGISTERED` | The email is already associated with an account. | | `WORKFLOW_NAME_ALREADY_REGISTERED` | The company name is already taken. | | `COMPANY_DOMAIN_ALREADY_REGISTERED` | The email domain is already registered. | ## Example cURL ```bash theme={null} curl -X POST https://www.tryunleashx.com/api/v1/global/users/onboard \ -H "Content-Type: application/json" \ -H "Authorization: " \ -d '{ "email_id": "john@example.com", "first_name": "John", "last_name": "Doe", "company_name": "Acme Corp" }' ``` # Voice AI Source: https://docs.unleashx.ai/api-reference/voice-ai Build, run, and analyze AI-powered voice calling at scale The Voice AI APIs let you build, launch, and analyze AI-powered outbound and inbound voice calling. Create voice agents, target them at audiences through campaigns, trigger one-off calls, and evaluate call quality from a single set of endpoints. Create and manage voice agents, phone numbers, voices, and call logs. Run outbound calling campaigns against an audience or segment. Build contact lists, segments, and input variables for your campaigns. Trigger a call on demand and track its live status. ## Authentication All Voice AI endpoints require a valid API token. See [Authentication](/api-reference/authentication) for how to generate and pass your token. # Attach Phone Number Source: https://docs.unleashx.ai/api-reference/voice-ai/attach-phone-number api-reference/openapi.json POST /attach-phone-numbers Attach or assign phone numbers to voice agents to enable inbound and outbound calling capabilities. This endpoint allows you to connect phone numbers from various telephony providers to your voice agents. ## API Endpoint **Endpoint:** `POST /api/agent/attach-phone-number` **Content-Type:** `application/json` **Authentication:** Required (Token header: `token` or `api_access_token`) ## Request Body ```json theme={null} { "agent_id": "agent_abc123xyz", "provider": "san", "numbers": ["+918062810341"] } ``` ## Request Parameters | Parameter | Type | Required | Description | | ---------- | ------ | -------- | --------------------------------------------------------------------------------------- | | `agent_id` | string | Yes | Unique identifier of the voice agent | | `provider` | string | Yes | Telephony provider name (see supported providers below) | | `numbers` | array | Yes | Phone numbers in E.164 format (e.g., `["+918062810341"]`). Provide one or more numbers. | ## Supported Providers | Provider | Value | Description | | ------------ | ----------- | ----------------------------------------- | | San Software | `san` | San Software telephony platform | | Ozonetell | `ozonetell` | Ozonetell cloud communication platform | | Twilio | `twilio` | Global cloud communications platform | | Exotel | `exotel` | Leading cloud telephony provider in India | | Telnyx | `telnyx` | Global carrier network provider | | Vonage | `vonage` | Cloud communications platform | | Plivo | `plivo` | Cloud communications platform | | Bandwidth | `bandwidth` | Enterprise communications platform | ## Request Examples ### cURL ```bash theme={null} # Attach San Software number to agent curl -X POST "https://www.tryunleashx.com/api/agent/attach-phone-number" \ -H "Content-Type: application/json" \ -H "token: YOUR_AUTH_TOKEN" \ -d '{ "agent_id": "agent_abc123xyz", "provider": "san", "numbers": ["+918062810341"] }' # Attach Twilio number to agent curl -X POST "https://www.tryunleashx.com/api/agent/attach-phone-number" \ -H "Content-Type: application/json" \ -H "token: YOUR_AUTH_TOKEN" \ -d '{ "agent_id": "agent_abc123xyz", "provider": "twilio", "numbers": ["+12025551234"] }' # Attach Exotel number to agent curl -X POST "https://www.tryunleashx.com/api/agent/attach-phone-number" \ -H "Content-Type: application/json" \ -H "token: YOUR_AUTH_TOKEN" \ -d '{ "agent_id": "agent_abc123xyz", "provider": "exotel", "numbers": ["+919876543210"] }' ``` ### PHP ```php theme={null} "agent_abc123xyz", "provider" => "san", "numbers" => ["+918062810341"] ]; $options = [ 'http' => [ 'header' => "Content-Type: application/json\r\n" . "token: YOUR_AUTH_TOKEN\r\n", 'method' => 'POST', 'content' => json_encode($data) ] ]; $context = stream_context_create($options); $result = file_get_contents($url, false, $context); $response = json_decode($result); print_r($response); ?> ``` ## Response ### Success Response **Status Code:** `200 OK` ```json theme={null} { "error": false, "code": 200, "message": "Phone number attached successfully", "timestamp": 1769244619292, "data": { "agent_id": "agent_abc123xyz", "phone_numbers": ["+918062810341"], "provider": "san", "attached_at": "2026-01-24T10:30:19Z", "status": "active" } } ``` ### Response Fields | Field | Type | Description | | -------------------- | ------- | ------------------------------------------------------------ | | `error` | boolean | Indicates if there was an error (false for success) | | `code` | integer | HTTP status code | | `message` | string | Success or error message | | `timestamp` | integer | Unix timestamp in milliseconds | | `data` | object | Response data object | | `data.agent_id` | string | ID of the agent | | `data.phone_numbers` | array | Attached phone numbers in E.164 format | | `data.provider` | string | Telephony provider | | `data.attached_at` | string | ISO 8601 timestamp of attachment | | `data.status` | string | Status of the phone number (`active`, `pending`, `inactive`) | ## Error Responses ### 400 - Bad Request **Status Code:** `400 Bad Request` ```json theme={null} { "error": true, "code": 400, "message": "Invalid phone number format. Use E.164 format (e.g., +918062810341)", "data": {} } ``` **Common error messages:** * `"Agent ID is required"` * `"Provider is required"` * `"Phone number(s) are required"` * `"Invalid phone number format. Use E.164 format"` * `"Phone number is already attached to another agent"` * `"Provider not configured for your account"` ### 401 - Authentication Error **Status Code:** `401 Unauthorized` ```json theme={null} { "error": true, "code": 401, "message": "Invalid Auth Key or Session Expired", "data": {} } ``` ### 404 - Agent Not Found **Status Code:** `404 Not Found` ```json theme={null} { "error": true, "code": 404, "message": "Agent not found", "data": {} } ``` ### 409 - Conflict **Status Code:** `409 Conflict` ```json theme={null} { "error": true, "code": 409, "message": "Phone number already attached to agent: agent_xyz789abc", "data": { "existing_agent_id": "agent_xyz789abc", "phone_number": "+918062810341" } } ``` ### 422 - Validation Error **Status Code:** `422 Unprocessable Entity` ```json theme={null} { "error": true, "code": 422, "message": "Invalid provider. Supported providers: san, ozonetell, twilio, exotel, telnyx, vonage", "data": {} } ``` ### 500 - Server Error **Status Code:** `500 Internal Server Error` ```json theme={null} { "error": true, "code": 500, "message": "Internal server error", "data": {} } ``` ## Phone Number Format Phone numbers **must** be in **E.164 format**: | Format | Example | Description | | --------- | ------------------ | ------------------------------------------------------------ | | E.164 | `+918062810341` | International format with + prefix, country code, and number | | ❌ Invalid | `918062810341` | Missing + prefix | | ❌ Invalid | `(918) 062-810341` | Contains special characters | | ❌ Invalid | `+91 8062 810341` | Contains spaces | ### E.164 Format Examples by Country | Country | Country Code | Example | | -------------- | ------------ | --------------- | | India | +91 | `+918062810341` | | United States | +1 | `+12025551234` | | United Kingdom | +44 | `+442012345678` | | Australia | +61 | `+61212345678` | | Canada | +1 | `+14165551234` | | Singapore | +65 | `+6512345678` | | UAE | +971 | `+971501234567` | ## Usage Examples Examples are provided above for cURL and PHP. Client library code examples (JavaScript/Python) have been removed — use the cURL examples as the canonical requests (send `numbers` as an array of E.164 strings). ## Important Notes 1. **Phone Number Format**: Always use E.164 format with the `+` prefix, country code, and number without spaces or special characters. 2. **Provider Configuration**: Ensure the telephony provider is properly configured in your account before attaching numbers. 3. **Number Availability**: Use the [List Phone Numbers API](/api-reference/phone-numbers/list-phone-numbers) to check available numbers before attaching. 4. **One Number, One Agent**: A phone number can only be attached to one agent at a time. Attempting to attach an already-used number will result in a 409 Conflict error. 5. **Multiple Numbers**: You can attach multiple phone numbers to a single agent for load balancing or regional coverage. 6. **Number Purpose**: Numbers with specific purposes (TEST, PRODUCTION) should be used accordingly to avoid mixing test and production traffic. 7. **Detaching Numbers**: To detach a number and attach it to a different agent, first detach it from the current agent or use the update agent endpoint. 8. **Inbound Calls**: Once attached, the phone number will route inbound calls to the specified agent automatically. 9. **Webhooks**: Ensure your agent has proper webhook configurations to handle call events. 10. **Provider Limits**: Some providers may have limits on the number of concurrent calls per number. Check your provider's documentation. ## Workflow Integration ### Complete Agent Setup with Phone Number ```javascript theme={null} // 1. Create Agent const createAgent = async () => { const response = await fetch('https://www.tryunleashx.com/api/agents', { method: 'POST', headers: { 'Content-Type': 'application/json', 'authorization': 'YOUR_API_KEY' }, body: JSON.stringify({ agent_name: 'Support Agent', prompt: 'You are a helpful support agent.', voice: { provider: 'elevenlabs', voice_id: 'RXe6OFmxoC0nlSWpuCDy' } }) }); return await response.json(); }; // 2. Attach Phone Number const attachPhone = async (agentId) => { const response = await fetch('https://www.tryunleashx.com/api/agent/attach-phone-number', { method: 'POST', headers: { 'Content-Type': 'application/json', 'token': 'YOUR_AUTH_TOKEN' }, body: JSON.stringify({ agent_id: agentId, provider: 'san', phone_number: '+918062810341' }) }); return await response.json(); }; // 3. Complete setup const setupAgent = async () => { const agent = await createAgent(); console.log('Agent created:', agent.id); const attachment = await attachPhone(agent.id); console.log('Phone attached:', attachment.data.phone_number); console.log('Agent is ready to receive calls!'); }; setupAgent(); ``` ## Related Endpoints * [List Phone Numbers](/api-reference/phone-numbers/list-phone-numbers) - Get available phone numbers * [Create Voice Agent](/api-reference/voice-ai/create-voice-agent) - Create a new voice agent * [Update Voice Agent](/api-reference/voice-ai/update-voice-agent) - Update agent configuration * [List Voice Agents](/api-reference/voice-ai/list-voice-agents) - View all agents * [Make Call](/api-reference/voice-ai/make-call) - Make outbound calls with your agent # Create Voice Agent Source: https://docs.unleashx.ai/api-reference/voice-ai/create-voice-agent api-reference/openapi.json POST /create-agent The Create Voice Agent API allows you to create and configure AI voice agents with comprehensive settings including voice configuration, speech-to-text, LLM selection, and advanced call handling features. ## API Endpoint **POST** `/create-agent` **Content-Type:** `application/json` **Authentication:** Required (Token parameter) ## Request Body ```json theme={null} { "agent_name": "Customer Support Agent", "description": "Handles customer inquiries and support requests", "prompt": "You are a helpful customer support agent. Answer questions politely and professionally.", "timezone": "America/New_York", "greeting": "Hello! Thank you for calling. How can I assist you today?", "session_data_webhook": "https://www.tryunleashx.com/webhooks/session-data", "voice": { "provider": "elevenlabs", "voice_id": "RXe6OFmxoC0nlSWpuCDy", "model": "eleven_turbo_v2_5", "settings": { "stability": 0.5, "voice_style": 1, "speed": 1.0, "speaker_boost": true, "similarity_boost": 0.75, "tone": "professional", "style": "classic", "instruction_sensitivity": "medium" } }, "speech_to_text": { "provider": "deepgram", "model": "nova-2", "language": "english" }, "llm": { "llm": "openai", "model": "gpt-4o" }, "configurations": { "confidence_threshold": 0.8, "do_not_call_detection": true, "agent_terminate_call": { "enabled": true, "instruction": "End the call politely when the conversation is complete", "message": "Thank you for calling. Have a great day!" }, "inactivity_handling": { "enabled": true, "idle_time": 30, "message": "Are you still there? Let me know if you need any help." }, "interruption": { "enabled": true, "value": 3 }, "voicemail": { "enabled": true, "message": "Hello, this is a message from Customer Support. Please call us back at your convenience." } } } ``` ## Required Fields | Field | Type | Description | | ------------ | ------ | -------------------------------------------------------------------------------------- | | `agent_name` | string | Name of the voice agent (required) | | `prompt` | string | System prompt/instructions that define the agent's behavior and personality (required) | The `voice` object is optional — include it to configure TTS provider, voice ID, and voice settings. ## Optional Fields ### Basic Information | Field | Type | Description | Default | | ---------------------- | ------ | ------------------------------------------------------------------------------------------- | ------------ | | `description` | string | Description of the agent's purpose | Empty string | | `timezone` | string | Timezone for the agent (e.g., "America/New\_York", "Europe/London") | UTC | | `greeting` | string | The agent's first message when the call starts | None | | `session_data_webhook` | string | Webhook URL to receive end-of-session data | None | | `status` | number | `1` = Active/Published, `3` = Draft. Pass `1` to publish the agent immediately on creation. | `3` (Draft) | New agents are created in **Draft** (`status: 3`) by default — they exist but can't yet place or receive calls. Publish the agent afterward (or immediately with `status: 1` above) using [Update Voice Agent](/api-reference/voice-ai/update-voice-agent) with just `agent_id` + `status: 1`. Publishing a voice agent requires at least one active, workspace-owned phone number attached first — see [Attach Phone Number](/api-reference/voice-ai/attach-phone-number). ## Voice Configuration The `voice` object is **optional** and, if provided, contains the following properties: | Property | Type | Required | Description | | ---------- | ------ | -------- | ------------------------------------------------------------ | | `provider` | string | No | Voice provider: `elevenlabs`, `openai`, `deepgram`, `sarvam` | | `voice_id` | string | Yes | Unique identifier for the voice | | `model` | string | No | TTS model to use (see Voice Models below) | | `settings` | object | No | Voice settings configuration (see Voice Settings below) | ### Voice Providers | Provider | Value | Description | | ------------ | ------------ | -------------------------------------------------------------------------------- | | ElevenLabs | `elevenlabs` | High-quality AI voice synthesis with natural-sounding voices and emotional range | | OpenAI | `openai` | Advanced text-to-speech with multiple voice options | | Deepgram | `deepgram` | Real-time speech recognition and voice synthesis | | Sarvam | `sarvam` | Multilingual voice synthesis optimized for Indian languages | | Cartesia | `cartesia` | Low-latency, expressive real-time voice synthesis | | Amazon Polly | `polly` | AWS text-to-speech with neural and generative voices | | Smallest | `smallest` | Fast, low-latency voice synthesis | | Soniox | `soniox` | Real-time text-to-speech | | Azure | `azure` | Microsoft Azure neural text-to-speech | ### Voice Models #### ElevenLabs Models | Model | Value | Description | | --------------- | ------------------------ | ------------------------------------------------------ | | Turbo v2.5 | `eleven_turbo_v2_5` | Latest high-speed model with low latency (Recommended) | | Multilingual v2 | `eleven_multilingual_v2` | High-quality multilingual voice synthesis | | Flash v2.5 | `eleven_flash_v2_5` | Ultra-low-latency model | | Monolingual v1 | `eleven_monolingual_v1` | English-only optimized model | #### OpenAI Models | Model | Value | Description | | -------- | ---------- | ----------------------------------- | | TTS 1 | `tts-1` | Standard quality, faster generation | | TTS 1 HD | `tts-1-hd` | High definition, better quality | #### Sarvam Models | Model | Value | Description | | --------- | ----------- | ------------------------------------------------- | | Bulbul v3 | `bulbul:v3` | Multilingual voice optimized for Indian languages | #### Cartesia Models | Model | Value | Description | | ------- | --------- | --------------------------------------- | | Sonic 3 | `sonic-3` | Low-latency, expressive voice synthesis | #### Amazon Polly Models | Model | Value | Description | | ---------- | ------------ | ----------------------------------- | | Generative | `generative` | Most natural, expressive AWS voices | | Neural | `neural` | Neural text-to-speech | | Longform | `longform` | Optimized for long-form content | | Standard | `standard` | Standard text-to-speech | #### Smallest Models | Model | Value | Description | | -------------- | ---------------- | ------------------------ | | Lightning v3.1 | `lightning-v3.1` | Latest low-latency model | | Lightning v2 | `lightning-v2` | Low-latency model | | Pulse | `pulse` | Fast voice synthesis | #### Soniox Models | Model | Value | Description | | --------- | ----------- | ------------------------ | | TTS RT v1 | `tts-rt-v1` | Real-time text-to-speech | #### Azure Models | Model | Value | Description | | ----- | ------- | ------------------------------------- | | Azure | `azure` | Microsoft Azure neural text-to-speech | ### Voice Settings The `settings` object contains fine-tuning parameters for voice output: | Property | Type | Range | Description | Default | | ------------------------- | ------- | ---------- | ------------------------------------------------------------------------- | --------- | | `stability` | number | 0.0 - 1.0 | Controls voice consistency. Higher = more stable, Lower = more expressive | 0.5 | | `voice_style` | number | 0 - 100 | Style intensity for the voice | 0 | | `speed` | number | 0.5 - 2.0 | Speech speed multiplier | 1.0 | | `speaker_boost` | boolean | true/false | Enhances speaker characteristics | true | | `similarity_boost` | number | 0.0 - 1.0 | How closely to match original voice | 0.75 | | `tone` | string | - | Voice tone: `professional`, `friendly`, `neutral`, `enthusiastic` | None | | `style` | string | - | Speaking style: `classic`, `conversational`, `narrative` | `classic` | | `instruction_sensitivity` | string | - | How strictly to follow instructions: `low`, `medium`, `high` | `medium` | ## Speech-to-Text Configuration The `speech_to_text` object configures the transcription service. Use full language names (not codes) for the `language` field — for example `english`, `hindi`, `multi`, `spanish`, etc. Supported values include: * `english`, `hindi`, `multi`, `albanian`, `arabic`, `armenian`, `azerbaijani`, `belarusian`, `bengali`, `bosnian`, `bulgarian`, `catalan`, `chinese`, `croatian`, `czech`, `danish`, `dutch`, `english_australia`, `english_india`, `english_new_zealand`, `english_uk`, `english_us`, `english_spanish`, `estonian`, `finnish`, `french`, `galician`, `georgian`, `german`, `german_switzerland`, `greek`, `gujarati`, `haitian_creole`, `hausa`, `hebrew`, `afrikaans`, `hungarian`, `icelandic`, `indonesian`, `italian`, `japanese`, `javanese`, `kannada`, `kazakh`, `khmer`, `korean`, `latvian`, `lithuanian`, `macedonian`, `malay`, `malayalam`, `maori`, `marathi`, `nepali`, `norwegian`, `persian`, `polish`, `portuguese`, `portuguese_brazil`, `punjabi`, `romanian`, `russian`, `serbian`, `shona`, `slovak`, `slovenian`, `somali`, `spanish`, `spanish_latin_america`, `sundanese`, `swahili`, `swedish`, `tagalog`, `tamil`, `tajik`, `telugu`, `thai`, `tswana`, `turkish`, `ukrainian`, `urdu`, `vietnamese`, `welsh`. The `speech_to_text` object configures the transcription service: | Property | Type | Required | Description | | ---------- | ------ | -------- | ----------------------------------- | | `provider` | string | Yes | STT provider (see providers below) | | `model` | string | Yes | Model to use (see models below) | | `language` | string | Yes | Language name (see languages above) | ### STT Providers and Models #### Deepgram (Provider: `deepgram`) | Model | Value | Description | Use Case | | ------------------------ | ------------------------- | ------------------------------- | --------------------------------- | | Nova 2 | `nova-2` | General purpose model | Default choice for most use cases | | Nova 2 General | `nova-2-general` | General purpose transcription | Versatile transcription | | Nova 2 Meeting | `nova-2-meeting` | Optimized for meetings | Conference calls, meetings | | Nova 2 Phone Call | `nova-2-phonecall` | Optimized for phone calls | Phone conversations (Recommended) | | Nova 2 Finance | `nova-2-finance` | Optimized for finance | Banking, financial services | | Nova 2 Conversational AI | `nova-2-conversationalai` | Optimized for conversational AI | AI assistants, chatbots | | Nova 2 Video | `nova-2-video` | Optimized for video | Video content transcription | | Nova 2 Medical | `nova-2-medical` | Optimized for medical | Healthcare conversations | | Nova 2 Drivethru | `nova-2-drivethru` | Optimized for drive-thru | Drive-thru scenarios | | Nova 2 Automotive | `nova-2-automotive` | Optimized for automotive | Car environments | | Nova 2 Legal | `nova-2-legal` | Optimized for legal | Legal conversations | | Nova 2 Government | `nova-2-government` | Optimized for government | Government services | | Nova 2 Enterprise | `nova-2-enterprise` | Optimized for enterprise | Enterprise applications | | Nova 3 | `nova-3` | Latest general purpose model | Most accurate, latest technology | #### Gladia (Provider: `gladia`) | Model | Value | Description | | ------ | -------- | ---------------------------------------- | | Gladia | `gladia` | High-accuracy multilingual transcription | #### Sarvam (Provider: `sarvam`) | Model | Value | Description | | --------- | ----------- | ---------------------------------- | | Sarvam | `sarvam` | Optimized for Indian languages | | Saaras v3 | `saaras:v3` | Latest multilingual speech-to-text | #### ElevenLabs (Provider: `elevenLabs`) | Model | Value | Description | | ------------------ | -------------------- | ------------------------------------ | | Scribe v2 Realtime | `scribe_v2_realtime` | Real-time multilingual transcription | #### Cartesia (Provider: `cartesia`) | Model | Value | Description | | ----------- | ------------- | ----------------------------------- | | Ink Whisper | `ink-whisper` | Low-latency real-time transcription | #### Soniox (Provider: `soniox`) | Model | Value | Description | | --------- | ----------- | ------------------------------- | | STT RT v5 | `stt-rt-v5` | Latest real-time speech-to-text | | STT RT v4 | `stt-rt-v4` | Real-time speech-to-text | #### Azure (Provider: `azure`) | Model | Value | Description | | ----- | ------- | ------------------------------ | | Azure | `azure` | Microsoft Azure speech-to-text | ## LLM Configuration The `llm` object configures the language model: | Property | Type | Required | Description | | -------- | ------ | -------- | --------------------------------------------------------------------- | | `llm` | string | Yes | LLM **provider name** (e.g. `openai`, `anthropic`, `Gemini`, `azure`) | | `model` | string | Yes | Model **Value** from that provider (e.g. `gpt-4o`) | ### Available LLM Models Pass the **provider name** in `llm.llm` (e.g. `openai`) and the model's **Value** in `llm.model` (e.g. `gpt-4o`). Each group below shows its provider name in the heading. #### OpenAI Models (Provider: `openai`) | Model | Value | Description | Use Case | | ------------- | --------------- | ------------------------------- | --------------------------------------------- | | GPT-4o | `gpt-4o` | Most capable model, multimodal | Complex reasoning, best quality (Recommended) | | GPT-4o Mini | `gpt-4o-mini` | Smaller, faster, cost-effective | Fast responses, simpler tasks | | GPT-4 Turbo | `gpt-4-turbo` | High performance GPT-4 | Advanced reasoning | | GPT-4.1 | `gpt-4.1` | Latest GPT-4 variant | Enhanced capabilities | | GPT-4.1 Mini | `gpt-4.1-mini` | Compact GPT-4.1 | Efficient processing | | GPT-4.1 Nano | `gpt-4.1-nano` | Ultra-fast GPT-4.1 | Ultra-low latency | | GPT-3.5 Turbo | `gpt-3.5-turbo` | Fast and cost-effective | Simple conversations | | GPT-5.4 | `gpt-5.4` | Latest flagship model | Highest quality reasoning | | GPT-5.4 Mini | `gpt-5.4-mini` | Compact GPT-5.4 | Fast, cost-effective | #### OpenAI Realtime Models | Model | Value | Description | | -------------------- | ------------------------------ | --------------------------- | | GPT-4o Realtime | `gpt-4o-realtime-preview` | Real-time audio processing | | GPT-4o Mini Realtime | `gpt-4o-mini-realtime-preview` | Faster real-time processing | #### Meta LLaMA Models | Model | Value | Description | Use Case | | -------------- | ---------------- | --------------------- | ------------------------------ | | LLaMA 3.1 405B | `llama-3-1-405b` | Largest, most capable | Complex tasks, high accuracy | | LLaMA 3.1 70B | `llama-3-1-70b` | Balanced performance | Good quality, reasonable speed | | LLaMA 3.1 8B | `llama-3-1-8b` | Fast and efficient | Quick responses | | LLaMA 3 70B | `llama-3-70b` | Previous generation | Reliable performance | #### Mistral Models | Model | Value | Description | | ------------------ | -------------------- | ------------------------------- | | Mistral Large 2407 | `mistral-large-2407` | High-performance European model | #### Other Models | Model | Value | Description | | --------------------- | ----------------------- | ------------------------ | | L3.1 70B Euryale v2.2 | `l3.1-70b-euryale-v2.2` | Fine-tuned LLaMA variant | | DeepSeek v3 | `deepseek-v3` | Advanced reasoning model | #### Anthropic Models (Provider: `anthropic`) | Model | Value | Description | | ----------------- | --------------------------- | ---------------------------------------- | | Claude Opus 4.8 | `claude-opus-4-8` | Most capable Claude model | | Claude Opus 4.7 | `claude-opus-4-7` | High-capability reasoning | | Claude Opus 4.6 | `claude-opus-4-6` | High-capability reasoning | | Claude Opus 4.5 | `claude-opus-4-5` | High-capability reasoning | | Claude Opus 4.1 | `claude-opus-4-1-20250805` | Opus 4.1 | | Claude Opus 4.2 | `claude-opus-4-20250514` | Opus 4 | | Claude Sonnet 4.6 | `claude-sonnet-4-6` | Balanced speed and quality (Recommended) | | Claude Sonnet 4.5 | `claude-sonnet-4-5` | Balanced speed and quality | | Claude Sonnet 4.0 | `claude-sonnet-4-0` | Sonnet 4 | | Claude Haiku 4.5 | `claude-haiku-4-5` | Fast, cost-effective | | Claude Haiku 3.5 | `claude-haiku-3-5-20241022` | Fast, cost-effective | #### Google Gemini Models (Provider: `Gemini`) | Model | Value | Description | | ----------------------------- | ------------------------------- | ----------------------------- | | Gemini 3.1 Pro Preview | `gemini-3.1-pro-preview` | Latest high-capability Gemini | | Gemini 3.1 Flash Lite Preview | `gemini-3.1-flash-lite-preview` | Fast, lightweight | | Gemini 3 Flash Preview | `gemini-3-flash-preview` | Fast Gemini 3 | | Gemini 2.5 Pro | `gemini-2.5-pro` | High-capability reasoning | | Gemini 2.5 Flash | `gemini-2.5-flash` | Fast, balanced | | Gemini 2.5 Flash Lite | `gemini-2.5-flash-lite` | Lightweight, low latency | #### Azure OpenAI Models (Provider: `azure`) | Model | Value | Description | | ----------- | ------------- | ------------------------ | | GPT-4o | `gpt-4o` | Azure-hosted GPT-4o | | GPT-4o Mini | `gpt-4o-mini` | Azure-hosted GPT-4o Mini | | GPT-5 Mini | `gpt-5-mini` | Azure-hosted GPT-5 Mini | #### Sarvam Models (Provider: `sarvam`) | Model | Value | Description | | ----------- | ------------- | --------------------------------------------- | | Sarvam 105B | `sarvam-105b` | Large multilingual model for Indian languages | | Sarvam 30B | `sarvam-30b` | Efficient multilingual model | #### AWS Bedrock Models (Provider: `bedrock`) | Model | Value | Description | | ------------- | ------------------------- | ---------------------------------- | | Qwen3 VL 235B | `qwen.qwen3-vl-235b-a22b` | Large multimodal model via Bedrock | | GPT-OSS 120B | `openai.gpt-oss-120b-1:0` | Open-weight GPT model via Bedrock | #### Cerebras Models (Provider: `cerebras`) | Model | Value | Description | | ------------------- | -------------------------------- | ---------------------------- | | ZAI GLM 4.6 | `zai-glm-4.6` | High-throughput hosted model | | Qwen3 235B Instruct | `qwen-3-235b-a22b-instruct-2507` | Large instruct model | | GPT-OSS 120B | `gpt-oss-120b` | Open-weight GPT model | #### Grok Models (Provider: `grok`) | Model | Value | Description | | ----- | ------ | -------------- | | Grok | `grok` | xAI Grok model | ## Configurations The `configurations` object contains advanced call handling settings: ### Confidence Threshold | Property | Type | Range | Description | Default | | ---------------------- | ------ | --------- | ----------------------------------------- | ------- | | `confidence_threshold` | number | 0.0 - 1.0 | Minimum confidence for speech recognition | 0.8 | ### Do Not Call Detection | Property | Type | Description | Default | | ----------------------- | ------- | ------------------------------------------- | ------- | | `do_not_call_detection` | boolean | Detect and respect "do not call" indicators | false | ### Agent Terminate Call Configuration for when the agent can end calls autonomously: | Property | Type | Description | Default | | ------------- | ------- | ---------------------------------- | ------- | | `enabled` | boolean | Allow agent to terminate calls | false | | `instruction` | string | Instructions for when to end calls | None | | `message` | string | Message to say before ending call | None | **Example:** ```json theme={null} { "enabled": true, "instruction": "End the call when the customer says goodbye or has no more questions", "message": "Thank you for calling. Have a great day!" } ``` ### Inactivity Handling Configuration for handling user inactivity: | Property | Type | Description | Default | | ----------- | ------- | ------------------------------------------- | ------- | | `enabled` | boolean | Enable inactivity detection | false | | `idle_time` | number | Seconds of silence before prompting (5-120) | 30 | | `message` | string | Message to say after idle time | None | **Example:** ```json theme={null} { "enabled": true, "idle_time": 30, "message": "Are you still there? Let me know if you need any help." } ``` ### Interruption Settings Configuration for handling user interruptions: | Property | Type | Description | Default | | --------- | ------- | ------------------------------------------------------- | ------- | | `enabled` | boolean | Allow users to interrupt the agent | true | | `value` | number | Interruption sensitivity (1-5, higher = more sensitive) | 3 | **Sensitivity Levels:** * `1` - Very low (agent rarely gets interrupted) * `2` - Low * `3` - Medium (Recommended) * `4` - High * `5` - Very high (agent easily interrupted) ### Voicemail Handling Configuration for voicemail detection and handling: | Property | Type | Description | Default | | --------- | ------- | -------------------------------------- | ------- | | `enabled` | boolean | Enable voicemail detection | false | | `message` | string | Message to leave if voicemail detected | None | **Example:** ```json theme={null} { "enabled": true, "message": "Hello, this is Customer Support calling. Please call us back at 1-800-123-4567. Thank you!" } ``` ## Response ### Success Response **Status Code:** `200 OK` ```json theme={null} { "id": "agent_abc123xyz", "agent_name": "Customer Support Agent", "config": { "prompt": "You are a helpful customer support agent...", "voice": { "provider": "elevenlabs", "voice_id": "RXe6OFmxoC0nlSWpuCDy", "model": "eleven_turbo_v2_5" }, "speech_to_text": { "provider": "deepgram", "model": "nova-2", "language": "english" }, "llm": { "llm": "gpt-4o", "model": "gpt-4o" } }, "created_at": 1706745600 } ``` ### Error Responses #### 400 - Bad Request ```json theme={null} { "detail": "Invalid request body. Missing required field: agent_name" } ``` **Common causes:** * Missing required fields (`agent_name`, `prompt`, or `voice`) * Invalid data types * Invalid provider or model values #### 401 - Unauthorized ```json theme={null} { "detail": "Invalid authentication credentials" } ``` **Common causes:** * Missing `authorization` header or `token` parameter * Invalid or expired API key * Insufficient permissions #### 422 - Validation Error ```json theme={null} { "detail": [ { "loc": ["body", "voice", "provider"], "msg": "Invalid voice provider. Must be one of: elevenlabs, openai, deepgram, sarvam", "type": "value_error" } ] } ``` **Common causes:** * Invalid enum values (provider, model names) * Out of range values (stability, speed, confidence\_threshold) * Invalid format (timezone, language codes) #### 500 - Internal Server Error ```json theme={null} { "detail": "Internal server error" } ``` ## Example Requests ### Minimal Request ```bash theme={null} curl -X POST https://api.yourdomain.com/create-agent \ -H "Content-Type: application/json" \ -H "token: your_api_key_here" \ -d '{ "agent_name": "Simple Agent", "prompt": "You are a helpful assistant.", "voice": { "provider": "elevenlabs", "voice_id": "RXe6OFmxoC0nlSWpuCDy" } }' ``` ### Complete Request with All Features ```bash theme={null} curl -X POST https://api.yourdomain.com/create-agent \ -H "Content-Type: application/json" \ -H "token: your_api_key_here" \ -d '{ "agent_name": "Advanced Support Agent", "description": "Full-featured customer support agent", "prompt": "You are an experienced customer support agent. Be helpful, professional, and empathetic.", "timezone": "America/New_York", "greeting": "Hello! Thank you for calling. How can I help you today?", "session_data_webhook": "https://www.tryunleashx.com/webhooks/session-data", "voice": { "provider": "elevenlabs", "voice_id": "RXe6OFmxoC0nlSWpuCDy", "model": "eleven_turbo_v2_5", "settings": { "stability": 0.5, "voice_style": 1, "speed": 1.0, "speaker_boost": true, "similarity_boost": 0.75, "tone": "professional", "style": "conversational", "instruction_sensitivity": "medium" } }, "speech_to_text": { "provider": "deepgram", "model": "nova-2-phonecall", "language": "english" }, "llm": { "llm": "gpt-4o", "model": "gpt-4o" }, "configurations": { "confidence_threshold": 0.8, "do_not_call_detection": true, "agent_terminate_call": { "enabled": true, "instruction": "End call politely when conversation is complete", "message": "Thank you for calling. Have a great day!" }, "inactivity_handling": { "enabled": true, "idle_time": 30, "message": "Are you still there? Let me know if you need help." }, "interruption": { "enabled": true, "value": 3 }, "voicemail": { "enabled": true, "message": "Hello, this is Customer Support. Please call us back. Thank you!" } } }' ``` ## Important Notes 1. **Required Fields**: Only `agent_name` and `prompt` are required. The `voice` object is optional — include `voice` (with `provider` and `voice_id`) when you want to configure TTS for the agent. All other fields are optional. 2. **Voice IDs**: Get available voice IDs from the [List Voices API](/api-reference/voice-ai/list-voices). 3. **Webhooks**: If you provide a `session_data_webhook`, ensure your endpoint can handle POST requests with session data. 4. **Timezones**: Use standard timezone strings (e.g., "America/New\_York", "Europe/London", "Asia/Tokyo"). 5. **Language Names**: Use full language names (e.g., `english`, `hindi`, `spanish`) or region-specific variants (e.g., `english_us`, `english_uk`) as shown in the Speech-to-Text section above. 6. **Model Compatibility**: Ensure the voice model is compatible with your chosen provider. For example, `eleven_turbo_v2_5` only works with ElevenLabs. 7. **Rate Limits**: API calls are subject to rate limiting based on your plan. See [pricing documentation](/pricing/call-pricing) for details. 8. **Testing**: After creating an agent, test it thoroughly before using in production. Use the [Make Call API](/api-reference/voice-ai/make-call) to test your agent. 9. Attaching phone numbers is necessary to place calls via agents 10. **Draft by default**: new agents are created with `status: 3` (Draft) unless you pass `status: 1`. A draft agent cannot place or receive calls until it's published — see [Update Voice Agent](/api-reference/voice-ai/update-voice-agent#status). ## Related Endpoints * [List Voices](/api-reference/voice-ai/list-voices) - Get available voice IDs * [Update Voice Agent](/api-reference/voice-ai/update-voice-agent) - Modify agent settings, or publish/unpublish/delete via `status` * [List Voice Agents](/api-reference/voice-ai/list-voice-agents) - View all agents * [Delete Voice Agent](/api-reference/voice-ai/delete-voice-agent) - Remove an agent * [Make Call](/api-reference/voice-ai/make-call) - Test your agent with a call # Delete Voice Agent Source: https://docs.unleashx.ai/api-reference/voice-ai/delete-voice-agent api-reference/openapi.json POST /delete-agent # Delete Voice Agent API This documentation explains how to delete a voice agent using the API. ## Endpoint **POST** `/api/v1/global/agents/delete` ## Authentication Include your API token in the request header: ``` token: ``` or ``` api_access_token: ``` ## Request Body ```json theme={null} { "agent_id": 123 } ``` ## Query Parameters (Alternative) You can also pass `agent_id` as a query parameter: ``` POST /api/v1/global/agents/delete?agent_id=123 ``` ## Required Fields | Field | Type | Description | | ---------- | ------- | ------------------------- | | `agent_id` | integer | ID of the agent to delete | ## Success Response **Status Code:** `200 OK` ```json theme={null} { "success": true, "message": "Voice agent deleted successfully", "data": { "agent_id": 123 } } ``` ## Error Responses ### 400 Bad Request ```json theme={null} { "error": true, "message": "Agent ID is required" } ``` ### 401 Unauthorized ```json theme={null} { "error": true, "message": "Invalid Auth Key or Session Expired" } ``` ### 404 Not Found ```json theme={null} { "error": true, "message": "Agent not found" } ``` ## Example Request ### Using Request Body ```bash theme={null} curl -X POST https://www.tryunleashx.com/api/v1/global/agents/delete \ -H "Content-Type: application/json" \ -H "token: your_api_token_here" \ -d '{ "agent_id": 123 }' ``` ### Using Query Parameter ```bash theme={null} curl -X POST "https://www.tryunleashx.com/api/v1/global/agents/delete?agent_id=123" \ -H "Content-Type: application/json" \ -H "token: your_api_token_here" ``` ## Notes * Deleting an agent is a permanent action. The agent will be marked as deleted and cannot be recovered. * The agent must exist and belong to your workspace. * Once deleted, the agent cannot be used for making calls. # Get Agent Details by ID Source: https://docs.unleashx.ai/api-reference/voice-ai/get-agent-by-id api-reference/openapi.json GET /agents/get-by-id Full agent details for a single agent, including configuration, connected tools, knowledgebases, denied words, creator info, active campaigns, and execution stats. # Get Agent Details by ID Returns the full details of a single agent — basic details, configuration, knowledge base, tools, phone numbers, dispositions, denials, creator, guardrails, metadata config, and campaign info. Unlike [List Voice Agents](/api-reference/voice-ai/list-voice-agents), which returns a simplified agent object, this endpoint returns everything the agent builder UI uses to render an agent. ## Endpoint **GET** `/api/v1/global/agents/get-by-id` ## Authentication Include your API token in the request header: ``` token: ``` or ``` api_access_token: ``` ## Query Parameters | Field | Type | Required | Description | | ---------- | ------- | -------- | --------------------------- | | `agent_id` | integer | Yes | ID of the agent to retrieve | ## Success Response **Status Code:** `200 OK` The response mirrors what the agent builder UI uses to render an agent — it is **not** the simplified field set returned by [List Voice Agents](/api-reference/voice-ai/list-voice-agents). Every field name is lower snake\_case (already normalized from the raw DB columns). ```json theme={null} { "error": false, "code": 200, "message": "", "timestamp": 1767638299411, "data": { "basic_details": { "id": 1919, "workspace_id": 180, "agent_name": "Sales Assistant", "description": null, "category": 1, "category_description": { "id": 1, "label": "Sales", "textColor": "#8B1538", "backgroundColor": "#FFE5EC" }, "purpose": 1, "purpose_description": { "id": 1, "label": "Automate repetitive tasks" }, "agent_type": 3, "agent_type_description": { "id": 3, "label": "Telephony" }, "agent_prompt": "## Identity & Purpose\n...", "agent_privacy": 0, "status": 3, "voice_id": "KYiVPerWcenyBTIvWbfY", "agent_token": "", "voice_provider": 8, "transcriber_provider": 14, "calling_type": 1, "company_id": 159, "created_on": "2026-08-20T18:33:41.000Z", "updated_on": "2026-08-24T16:57:24.000Z" }, "configuration": { "id": 987, "agent_id": 1919, "context_awareness": 0, "temperature": 0.7, "tts_model": 1, "stt_model": 2, "call_recording": 1, "inactivity_handling_time": 10, "max_call_duration": 10, "voice_config": { "speed": "1", "stability": "0.7" }, "transcript_status": 1, "skills": [], "nudges": [], "trigger": "workflow" }, "knowledge_base": { "agent_id": 1919, "files": [], "links": [], "pages": [], "tools": [], "sub_agents": [] }, "tools": { "tools": [], "subagents": [], "integrated_custom_events": { "toolHttpRequest": [] }, "denials": { "denied_words": [], "denied_topics": [] } }, "phone_numbers": [], "dispositions": [], "dispositions_config": { "disposition_provider": null, "disposition_model": null }, "denials": { "denied_words": [], "denied_topics": [] }, "creator": { "user_id": 193, "first_name": "Jane", "last_name": "Doe", "email": "jane@example.com", "full_name": "Jane Doe" }, "guardrails": { "id": null, "agent_id": 1919, "hate_enabled": 1, "insult_enabled": 1, "violence_enabled": 1, "sexual_enabled": 1, "misconduct_enabled": 1, "prompt_attack_enabled": 1, "relevance_deviation_level": 1, "knowledge_boundary_deviation_level": 1 }, "metadata_config": { "metadata_input": [ { "key": "mobile_no", "type": "phone", "description": "Mobile No" } ], "metadata_output": [], "metadata_output_provider": "gemini", "metadata_output_model": "gemini-2.5-flash" }, "last_modified": "", "voice_analysis": false, "campaign_count": 0, "campaigns": [], "is_campaign_on_hold": false, "is_draft": true, "is_audience": false, "webhook_url": null } } ``` ### Top-level `data` fields | Field | Description | | --------------------- | ----------------------------------------------------------------------------------------------------------------------- | | `basic_details` | Core agent record — name, prompt, voice/transcriber providers, status, agent\_token, timestamps | | `configuration` | Call/behavior configuration — temperature, TTS/STT models, voicemail/inactivity handling, voice\_config, skills, nudges | | `knowledge_base` | Attached knowledgebase files, links, pages, tools, and sub-agents | | `tools` | Connected integrations/tools, sub-agents, HTTP custom events, and denials (duplicated under `denials` too) | | `phone_numbers` | Calling numbers currently attached to the agent | | `dispositions` | Configured call dispositions | | `dispositions_config` | Disposition analysis provider/model | | `denials` | Denied words and denied topics | | `creator` | User who created the agent | | `guardrails` | Safety guardrail toggles (hate/insult/violence/sexual/misconduct/prompt-attack) and deviation levels | | `metadata_config` | Configured metadata input/output fields and the output extraction provider/model | | `last_modified` | Human-readable "time ago" string for the most recent update, or `""` | | `voice_analysis` | Whether voice analysis is enabled for the workspace | | `campaign_count` | Number of active (non-hold) campaigns using this agent | | `campaigns` | Active campaigns using this agent | | `is_campaign_on_hold` | Whether any campaign using this agent is on hold | | `is_draft` | Whether the agent has no non-draft campaigns yet | | `is_audience` | Whether any campaign using this agent has an audience attached | | `webhook_url` | Agent's webhook URL, if generated | ## Error Responses ### 400 Bad Request — missing `agent_id` ```json theme={null} { "error": true, "message": "Agent ID is missing." } ``` ### 401 Unauthorized ```json theme={null} { "error": true, "message": "Invalid Auth Key or Session Expired" } ``` ### 404 Not Found ```json theme={null} { "error": true, "message": "Agent not found" } ``` ## Example Request ```bash theme={null} curl -X GET "https://www.tryunleashx.com/api/v1/global/agents/get-by-id?agent_id=123" \ -H "token: your_api_token_here" ``` ## Notes * `agent_id` is required — this endpoint never returns a list. * The agent must belong to your workspace; deleted agents (`STATUS = 2`) are not returned. * For a lightweight response (e.g. for dropdowns or simple lookups), use [List Voice Agents](/api-reference/voice-ai/list-voice-agents) with `agent_id` instead. # List Voice Agents Source: https://docs.unleashx.ai/api-reference/voice-ai/list-voice-agents api-reference/openapi.json GET /agents/get # Get Voice Agent API This documentation explains how to retrieve details of voice agents using the API. ## Endpoint **GET** `/api/v1/global/agents/get` or **POST** `/api/v1/global/agents/get` ## Authentication Include your API token in the request header: ``` token: ``` or ``` api_access_token: ``` ## Request Body (for POST) ### Get Specific Agent ```json theme={null} { "agent_id": 123 } ``` ### Get All Agents ```json theme={null} {} ``` ### Get Agents by Type ```json theme={null} { "agent_type": 3 } ``` ### Get Specific Agent with Type Filter ```json theme={null} { "agent_id": 123, "agent_type": 3 } ``` ## Query Parameters (for GET) ### Get Specific Agent ``` ?agent_id=123 ``` ### Get All Agents ``` (no parameters) ``` ### Get Agents by Type ``` ?agent_type=3 ``` ### Get Specific Agent with Type Filter ``` ?agent_id=123&agent_type=3 ``` ## Optional Fields | Field | Type | Description | | ------------ | ------- | ---------------------------------------------------------------- | | `agent_id` | integer | ID of the agent to retrieve. If not provided, returns all agents | | `agent_type` | integer | Filter by agent type. See Agent Types below | ## Agent Types | ID | Type | Description | | -- | --------- | ----------------------------------------- | | 2 | Chat | Chat-based agents | | 3 | Telephony | Voice/telephony agents (for making calls) | | 4 | General | General purpose agents | **Note:** For voice/telephony agents that can make calls, use `agent_type: 3`. ## Calling Types **Important:** The `calling_type` field in the response indicates whether the agent is configured for outbound or inbound calls. | ID | Type | Description | | ---- | ------------ | --------------------------------------------------------------------------------------------- | | 1 | **Outbound** | Agent makes calls to customers. The agent initiates calls to phone numbers. | | 2 | **Inbound** | Agent receives calls from customers. Customers call your phone numbers and the agent answers. | | null | **Not Set** | Calling type is not configured for this agent. | **Note:** * `calling_type: 1` means the agent is configured for outbound calling (making calls) * `calling_type: 2` means the agent is configured for inbound calling (receiving calls) * `calling_type: null` means the calling type is not configured ## Success Response ### Single Agent Response (when agent\_id is provided) **Status Code:** `200 OK` ```json theme={null} { "error": false, "code": 200, "message": "Voice agent retrieved successfully", "timestamp": 1767638299411, "data": { "success": true, "message": "Voice agent retrieved successfully", "data": { "agent_id": 1048, "agent_name": "Test Agent", "description": "Test description", "status": 3, "agent_type": 3, "voice_id": "KYiVPerWcenyBTIvWbfY", "voice_provider": 1, "transcriber_provider": null, "calling_type": null, "created_on": "2026-01-01T07:44:46.000Z", "updated_on": "2026-01-01T07:44:46.000Z" } } } ``` ### Multiple Agents Response (when agent\_id is not provided) **Status Code:** `200 OK` ```json theme={null} { "error": false, "code": 200, "message": "Voice agents retrieved successfully", "timestamp": 1767638262719, "data": { "success": true, "total": 35, "data": [ { "agent_id": 1049, "agent_name": "Flow Test", "description": "", "status": 3, "agent_type": 3, "voice_id": "KYiVPerWcenyBTIvWbfY", "voice_provider": 1, "transcriber_provider": null, "calling_type": null, "created_on": "2026-01-02T14:13:19.000Z", "updated_on": "2026-01-02T14:13:19.000Z" }, { "agent_id": 1048, "agent_name": "Test Agent", "description": "", "status": 3, "agent_type": 3, "voice_id": "KYiVPerWcenyBTIvWbfY", "voice_provider": 1, "transcriber_provider": null, "calling_type": null, "created_on": "2026-01-01T07:44:46.000Z", "updated_on": "2026-01-01T07:44:46.000Z" } ] } } ``` ## Response Fields | Field | Type | Description | | ---------------------- | --------------- | --------------------------------------------------------------------- | | `agent_id` | integer | Unique identifier for the agent | | `agent_name` | string | Name of the agent | | `description` | string | Description of the agent (can be empty string) | | `status` | integer | Agent status: 1 = Active, 3 = Inactive, 2 = Deleted | | `agent_type` | integer | Type of agent: 2 = Chat, 3 = Telephony, 4 = General | | `voice_id` | string | Voice ID being used (can be a string identifier) | | `voice_provider` | integer | Voice provider ID (see Create Agent docs for options) | | `transcriber_provider` | integer \| null | Speech-to-text provider ID (can be null) | | `calling_type` | integer \| null | Calling type (see Calling Types below). Can be null if not configured | | `created_on` | string | Creation timestamp (ISO 8601 format) | | `updated_on` | string | Last update timestamp (ISO 8601 format) | **Note:** * `transcriber_provider` and `calling_type` can be `null` if not configured * `voice_id` is typically a string identifier, not an integer * Timestamps are in ISO 8601 format (e.g., "2026-01-01T07:44:46.000Z") ## Error Responses ### 400 Bad Request ```json theme={null} { "error": true, "message": "Agent ID is required" } ``` ### 401 Unauthorized ```json theme={null} { "error": true, "message": "Invalid Auth Key or Session Expired" } ``` ### 404 Not Found ```json theme={null} { "error": true, "message": "Agent not found" } ``` ## Example Requests ### Get Specific Agent (GET) ```bash theme={null} curl -X GET "https://www.tryunleashx.com/api/v1/global/agents/get?agent_id=123" \ -H "token: your_api_token_here" ``` ### Get Specific Agent (POST) ```bash theme={null} curl -X POST https://www.tryunleashx.com/api/v1/global/agents/get \ -H "Content-Type: application/json" \ -H "token: your_api_token_here" \ -d '{ "agent_id": 123 }' ``` ### Get All Agents (GET) ```bash theme={null} curl -X GET "https://www.tryunleashx.com/api/v1/global/agents/get" \ -H "token: your_api_token_here" ``` ### Get All Agents (POST) ```bash theme={null} curl -X POST https://www.tryunleashx.com/api/v1/global/agents/get \ -H "Content-Type: application/json" \ -H "token: your_api_token_here" \ -d '{}' ``` ### Get All Telephony Agents (GET) ```bash theme={null} curl -X GET "https://www.tryunleashx.com/api/v1/global/agents/get?agent_type=3" \ -H "token: your_api_token_here" ``` ### Get All Telephony Agents (POST) ```bash theme={null} curl -X POST https://www.tryunleashx.com/api/v1/global/agents/get \ -H "Content-Type: application/json" \ -H "token: your_api_token_here" \ -d '{ "agent_type": 3 }' ``` ### Get All Chat Agents (POST) ```bash theme={null} curl -X POST https://www.tryunleashx.com/api/v1/global/agents/get \ -H "Content-Type: application/json" \ -H "token: your_api_token_here" \ -d '{ "agent_type": 2 }' ``` ### Get All General Agents (POST) ```bash theme={null} curl -X POST https://www.tryunleashx.com/api/v1/global/agents/get \ -H "Content-Type: application/json" \ -H "token: your_api_token_here" \ -d '{ "agent_type": 4 }' ``` ## Notes * If `agent_id` is provided, returns details of that specific agent. * If `agent_id` is not provided, returns a list of all agents. * If `agent_type` is provided, filters agents by type (2 = Chat, 3 = Telephony, 4 = General). * The `agent_type` filter only applies when getting all agents (not when getting a specific agent by ID). * The agents must belong to your workspace. * Deleted agents (status = 2) will not be returned. * Use the `status` field to check if the agent is active before making calls. * For making calls, use agents with `agent_type: 3` (Telephony). * Response includes a wrapper with `error`, `code`, `message`, `timestamp`, and `data` fields. * The actual agent data is nested in `data.data` for single agent, or `data.data` array for multiple agents. # List Voices Source: https://docs.unleashx.ai/api-reference/voice-ai/list-voices api-reference/openapi.json GET /voice-list Retrieve a list of all available voices from various voice providers for your voice agents. This endpoint supports multiple voice providers including ElevenLabs, OpenAI, Deepgram, Sarvam, and others. ## API Endpoint **Endpoint:** `GET /api/voice-list` **Authentication:** Required (Token header: `token` or `api_access_token`) ## Query Parameters | Parameter | Type | Required | Description | | ------------ | ------- | -------- | ----------------------------------------------------------------------------------- | | `provider` | string | Yes | Voice provider name. Supported values: `elevenlabs`, `openai`, `deepgram`, `sarvam` | | `page_token` | string | No | Token for pagination to retrieve the next page of results | | `limit` | integer | No | Number of voices to return per page (default varies by provider) | ```json theme={null} { "error": false, "code": 200, "message": "Voices fetched successfully for provider: elevenlabs", "timestamp": 1769243432947, "data": { "provider_id": "1", "provider_name": "elevenlabs", "total_count": 152, "next_page_token": "aHBwNEozVnFOZldBVU9PMGQxVXN8QjE4aWZwOUlOVk4zU0UyUm9vcEE=", "has_more": true, "voices": [ { "id": "s3I1dCXC0u6BYPeTyp1u", "title": "Srivi - Calm, Supportive and Clear", "category": "professional", "description": "Srivi - Professional BFSI Customer Care Voice - Srivi's voice is professional, clear, and reassuring – perfect for BFSI customer support in Tamil.", "url": "https://storage.googleapis.com/eleven-public-prod/database/workspace/ed9b05e6324c457685490352e9a1ec90/voices/s3I1dCXC0u6BYPeTyp1u/zqKmGomJkmpmwDWuG2tH.mp3", "language": "ta", "age": "middle_aged", "gender": "female", "image": null }, { "id": "hpp4J3VqNfWAUOO0d1Us", "title": "Bella - Professional, Bright, Warm", "category": "premade", "description": "This voice is warm, bright, and professional, characterized by a Standard American accent and a polished, narrative quality.", "url": "https://storage.googleapis.com/eleven-public-prod/premade/voices/hpp4J3VqNfWAUOO0d1Us/dab0f5ba-3aa4-48a8-9fad-f138fea1126d.mp3", "language": "en", "age": "middle_aged", "gender": "female", "image": null } ] } } ``` ### Response Fields | Field | Type | Description | | ---------------------- | ------- | -------------------------------------------------------- | | `error` | boolean | Indicates if there was an error | | `code` | integer | HTTP status code | | `message` | string | Success or error message | | `timestamp` | integer | Unix timestamp in milliseconds | | `data` | object | Response data object | | `data.provider_id` | string | Unique identifier for the provider | | `data.provider_name` | string | Name of the voice provider | | `data.total_count` | integer | Total number of available voices | | `data.next_page_token` | string | Token for fetching the next page (null if no more pages) | | `data.has_more` | boolean | Indicates if more voices are available | | `data.voices` | array | Array of voice objects | ### Voice Object Fields | Field | Type | Description | | ------------- | ------ | ------------------------------------------------------- | | `id` | string | Unique voice identifier (use this when creating agents) | | `title` | string | Display name of the voice | | `category` | string | Voice category (`professional`, `premade`, etc.) | | `description` | string | Detailed description of the voice characteristics | | `url` | string | Sample audio URL to preview the voice | | `language` | string | Language code (e.g., `en`, `ta`, `ar`, `hi`) | | `age` | string | Age category (`young`, `middle_aged`, `old`) | | `gender` | string | Gender (`male`, `female`, `neutral`) | | `image` | string | Profile image URL (may be null) | ## Error Responses ### 400 - Bad Request **Status Code:** `400 Bad Request` ```json theme={null} { "error": true, "code": 400, "message": "Provider parameter is required", "data": {} } ``` ### 401 - Authentication Error **Status Code:** `401 Unauthorized` ```json theme={null} { "error": true, "code": 401, "message": "Invalid Auth Key or Session Expired", "data": {} } ``` ### 404 - Provider Not Found **Status Code:** `404 Not Found` ```json theme={null} { "error": true, "code": 404, "message": "Provider not found", "data": {} } ``` ### 500 - Server Error **Status Code:** `500 Internal Server Error` ```json theme={null} { "error": true, "code": 500, "message": "Internal server error", "data": {} } ``` ## Pagination When `has_more` is `true`, use the `next_page_token` value in your next request to fetch the next page of voices: ```bash theme={null} curl -X GET "https://www.tryunleashx.com/api/voice-list?provider=elevenlabs&page_token=YOUR_NEXT_PAGE_TOKEN" \ -H "token: YOUR_AUTH_TOKEN" ``` ## Supported Providers | Provider | ID | Description | | ---------- | ------------ | -------------------------------------------------- | | ElevenLabs | `elevenlabs` | High-quality AI voices with emotional range | | OpenAI | `openai` | OpenAI's text-to-speech voices | | Deepgram | `deepgram` | Fast, accurate voice synthesis | | Sarvam | `sarvam` | Multilingual voices optimized for Indian languages | ## Usage Notes * Use the `id` field from the voice object when creating or updating agents with the `voice_id` parameter * Preview voices using the `url` field before selecting one for your agent * Filter voices by `language`, `gender`, or `age` in your application logic * The `category` field helps identify voice types (`professional` for business use, `premade` for general purpose) * Some providers may have rate limits on voice listing; implement caching when possible ## Example: Using Voice ID in Agent Creation After fetching voices, use the voice `id` when creating an agent: ```bash theme={null} curl -X POST "https://www.tryunleashx.com/api/agent/createagentorupdate" \ -H "token: YOUR_AUTH_TOKEN" \ -F "basic_details[agent_name]=My Agent" \ -F "basic_details[voice_id]=s3I1dCXC0u6BYPeTyp1u" \ -F "basic_details[voice_provider]=1" ``` # Make Call Source: https://docs.unleashx.ai/api-reference/voice-ai/make-call api-reference/openapi.json POST /agents/call # Make Call API This documentation explains how to initiate a call using a voice agent. ## Endpoint **POST** `/api/v1/global/agents/call` ## Authentication Include your API token in the request header: ``` token: ``` or ``` api_access_token: ``` ## Request Body ```json theme={null} { "agent_id": 123, "phone_number": "+1234567890", "metadata": { "customer_id": "CUST001", "call_reason": "Follow-up", "order_id": "ORD123" } } ``` ## Required Fields | Field | Type | Description | | -------------- | ------- | ------------------------------------------------------------------------------------- | | `agent_id` | integer | ID of the agent to use for the call | | `phone_number` | string | Phone number to call. Must include country code with `+` prefix (e.g., `+1234567890`) | ## Optional Fields | Field | Type | Description | | ---------- | ------ | --------------------------------------------------------------------------------- | | `metadata` | object | Additional metadata to pass with the call. Can include any custom key-value pairs | ## Success Response **Status Code:** `200 OK` ```json theme={null} { "success": true, "message": "Call initiated successfully", "data": { "execution_id": "550e8400-e29b-41d4-a716-446655440000", "agent_id": 123, "phone_number": "+1234567890", "call_status": "initiated" } } ``` ## Response Fields | Field | Type | Description | | -------------- | ------- | --------------------------------------------------------------------- | | `execution_id` | string | Unique identifier for this call execution. Use this to track the call | | `agent_id` | integer | ID of the agent used for the call | | `phone_number` | string | Phone number that was called | | `call_status` | string | Status of the call ("initiated") | ## Error Responses ### 400 Bad Request ```json theme={null} { "error": true, "message": "Phone Number is required" } ``` or ```json theme={null} { "error": true, "message": "Agent ID is required" } ``` ### 401 Unauthorized ```json theme={null} { "error": true, "message": "Invalid Auth Key or Session Expired" } ``` ### 404 Not Found ```json theme={null} { "error": true, "message": "Agent not found or not active" } ``` ### 422 Unprocessable Entity ```json theme={null} { "error": true, "message": "Validation error message" } ``` ## Example Request ```bash theme={null} curl -X POST https://www.tryunleashx.com/api/v1/global/agents/call \ -H "Content-Type: application/json" \ -H "token: your_api_token_here" \ -d '{ "agent_id": 123, "phone_number": "+1234567890", "metadata": { "customer_id": "CUST001", "call_reason": "Follow-up" } }' ``` ## Important Notes ### Phone Number Format * **Required:** Phone numbers must include country code with `+` prefix * **Correct:** `+1234567890`, `+919876543210` * **Incorrect:** `1234567890`, `919876543210` (missing `+`) The API will automatically add the `+` prefix if it's missing, but it's recommended to include it. ### Agent Requirements * The agent must be **active** (status = 1) to make calls * Only voice agents (agent\_type = 3) can be used for calls * The agent must belong to your workspace * For outbound calls (making calls to customers), the agent should have `calling_type: 1` * For inbound calls (receiving calls), the agent should have `calling_type: 2` ### Calling Types | ID | Type | Description | | -- | ------------ | ----------------------------------------------------------------------------------------------------------- | | 1 | **Outbound** | Agent makes calls to customers. Use this when you want the agent to initiate calls to phone numbers. | | 2 | **Inbound** | Agent receives calls from customers. Use this when customers call your phone numbers and the agent answers. | **Note:** When making calls using this API, ensure the agent's `calling_type` is set to `1` (Outbound) for outbound calling scenarios. ### Execution ID * Store the `execution_id` returned in the response for tracking purposes * This ID can be used to query call status and details later ### Metadata * The `metadata` field is optional but useful for passing context * Common use cases: * Customer information * Order details * Call reason/purpose * Custom tracking IDs * Metadata will be available during the call for the agent to reference ## Best Practices 1. **Validate Phone Numbers**: Ensure phone numbers are in correct format before making the call 2. **Check Agent Status**: Verify the agent is active before initiating calls 3. **Store Execution IDs**: Keep track of execution IDs for call monitoring and analytics 4. **Use Metadata**: Pass relevant context in metadata for better call handling 5. **Error Handling**: Implement proper error handling for failed call attempts 6. **Rate Limiting**: Be mindful of rate limits when making multiple calls ## Common Issues ### Issue: "Agent not found or not active" * **Solution**: Verify the agent exists and has status = 1 (active). Use the Get Agent API to check status. ### Issue: "Phone Number is required" * **Solution**: Ensure `phone_number` is included in the request body. ### Issue: Invalid phone number format * **Solution**: Ensure phone number includes country code with `+` prefix (e.g., `+1234567890`). # Update Voice Agent Source: https://docs.unleashx.ai/api-reference/voice-ai/update-voice-agent api-reference/openapi.json POST /create-agent The Update Voice Agent API uses the same request/response shape as Create Voice Agent, but you must include `agent_id` to identify which agent to update. Only `agent_id` is required — include any other fields you want to change, including `status` to draft, publish, or delete the agent. ## API Endpoint **POST** `/api/v1/global/create-agent` **Content-Type:** `application/json` **Authentication:** Required (Token header: `token`) ## Request Body ```json theme={null} { "agent_id": 123, "agent_name": "Updated Support Agent", "description": "Updated description", "prompt": "Updated prompt/instructions", "timezone": "Asia/Kolkata", "greeting": "Hello and welcome", "session_data_webhook": "https://www.tryunleashx.com/webhooks/session-data", "voice": { "provider": "elevenlabs", "voice_id": "RXe6OFmxoC0nlSWpuCDy", "model": "eleven_turbo_v2_5", "settings": { "stability": 0.5, "voice_style": 1, "speed": 1.0 } }, "speech_to_text": { "provider": "deepgram", "model": "nova-2", "language": "english" }, "llm": { "llm": "gpt-4o", "model": "gpt-4o" }, "configurations": { "confidence_threshold": 0.8, "do_not_call_detection": true } } ``` ## Required Fields | Field | Type | Description | | ---------- | ------- | ------------------------------------ | | `agent_id` | integer | ID of the agent to update (required) | ## Optional Fields All other fields follow the same definitions as the Create Voice Agent API — include only the fields you want to update. | Field | Type | Description | | -------- | ------ | -------------------------------------------------------------------------------------------- | | `status` | number | `1` = Active/Published, `2` = Deleted, `3` = Draft/Unpublished. See [Status](#status) below. | ## Status Pass `status` on its own (just `agent_id` + `status`) to draft, publish, or delete the agent without touching anything else: ```json theme={null} { "agent_id": 123, "status": 1 } ``` | Code | Meaning | | ---- | --------------------------------------------------------------------------------- | | `1` | **Publish** — the agent can place and receive calls | | `2` | **Delete** (soft delete) — also releases every phone number assigned to the agent | | `3` | **Unpublish** — moves the agent back to Draft | New agents are created in Draft (`status: 3`) by default — see [Create Voice Agent](/api-reference/voice-ai/create-voice-agent). Publishing (`status: 1`) a **voice** agent (`AGENT_TYPE = 3`) requires it to already have at least one **active, workspace-owned** phone number attached — see [Attach Phone Number](/api-reference/voice-ai/attach-phone-number). Numbers from a shared/global provider don't count. ## Response ### Success Response **Status Code:** `200 OK` ```json theme={null} { "success": true, "message": "Voice agent updated successfully", "data": { "agent_id": 123, "agent_name": "Updated Support Agent" } } ``` ### Error Responses #### 400 Bad Request ```json theme={null} { "error": true, "message": "Agent ID is required" } ``` Also returned for status changes: | Message | Cause | | ---------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | | `Invalid status value` | `status` isn't `1`, `2`, or `3` | | `Add at least 1 phone number to your agent` | `status: 1` on a voice agent with no active phone number attached | | `Cannot publish agent with global provider phone numbers. Please use workspace-owned phone numbers.` | `status: 1` but the agent's only attached number(s) belong to a shared/global provider | #### 401 Unauthorized ```json theme={null} { "error": true, "message": "Invalid Auth Key or Session Expired" } ``` #### 404 Not Found ```json theme={null} { "error": true, "message": "Agent not found" } ``` #### 422 Unprocessable Entity ```json theme={null} { "error": true, "message": "Validation error message" } ``` ## Example Requests ```bash theme={null} # Update agent using agent_id in request body curl -X POST https://www.tryunleashx.com/api/v1/global/create-agent \ -H "Content-Type: application/json" \ -H "token: your_api_token_here" \ -d '{ "agent_id": 123, "agent_name": "Updated Support Agent", "prompt": "You are an updated helpful support agent.", "voice": { "provider": "elevenlabs", "voice_id": "RXe6OFmxoC0nlSWpuCDy" } }' ``` ```bash theme={null} # Or using agent_id as query parameter curl -X POST "https://www.tryunleashx.com/api/v1/global/create-agent?agent_id=123" \ -H "Content-Type: application/json" \ -H "token: your_api_token_here" \ -d '{ "agent_name": "Updated Support Agent", "prompt": "You are an updated helpful support agent." }' ``` ```bash theme={null} # Publish the agent (status only, no other fields changed) curl -X POST https://www.tryunleashx.com/api/v1/global/create-agent \ -H "Content-Type: application/json" \ -H "token: your_api_token_here" \ -d '{ "agent_id": 123, "status": 1 }' ``` ## Notes * Only include fields you want to update; omitted fields will remain unchanged. * The agent must exist and belong to your workspace. * For available options for `voice.provider`, `speech_to_text.provider`, `speech_to_text.language`, `llm` models, and `tts_model`, refer to the Create Voice Agent API documentation. * The `agent_id` can be provided either in the request body or as a query parameter. * `status` can be sent alone or alongside other field changes — see [Status](#status) above. # Overview Source: https://docs.unleashx.ai/api-reference/workflows Orchestrate multi-step agent actions and automations Workflow APIs are coming soon. # Create Workspace Source: https://docs.unleashx.ai/api-reference/workspaces/create-workspace api-reference/openapi.json POST /create-workspace Create a workspace under the API token's company. Delegates to the same internal logic as /api/company/create-workspace, so the two entry points can never drift. Create a new workspace under your API token's company. This delegates to the same internal controller used by the company-side `/api/company/create-workspace` endpoint, so both entry points always stay in sync. ## API Endpoint **POST** `/api/v1/global/create-workspace` **Base URL:** `https://www.tryunleashx.com` **Authentication:** Required (Token header: `token` or `api_access_token`) ## Request Body | Field | Type | Required | Description | | ---------------- | ------ | -------- | ------------------------------------------------------------------------------------------ | | `workspace_name` | string | Yes | Name for the new workspace. Must be unique among active workspaces in the token's company. | ## Success Response **Status Code:** `200 OK` ```json theme={null} { "error": false, "code": 200, "message": "", "timestamp": 1769243432947, "data": { "message": "WORKSPACE_CREATED_SUCCESSFULLY", "data": { "WORKSPACE_ID": 301, "WORKSPACE_NAME": "Growth Team", "COMPANY_ID": 42, "OWNER_ID": 7, "CONCURRENCY": 5, "WORKSPACE_STATUS": 1 } } } ``` ## Response Fields | Field | Type | Description | | ------------------ | ------- | ------------------------------------------------ | | `WORKSPACE_ID` | integer | Unique identifier of the newly created workspace | | `WORKSPACE_NAME` | string | Name of the workspace | | `COMPANY_ID` | integer | Company the workspace belongs to | | `OWNER_ID` | integer | User who created the workspace | | `CONCURRENCY` | integer | Default concurrent-call limit for the workspace | | `WORKSPACE_STATUS` | integer | `1` = active | ## Access Control The token resolves to a user and a company; the workspace is always created under that company. Creating a workspace also seeds its default settings, adds the creator (and the company owner, if different) as a workspace admin, seeds the creator's domain whitelist entry, and triggers the same `workspace_created` notification email as the company-side endpoint. ## Errors | Status | Message | Cause | | ------ | ------------------------------- | ----------------------------------------------------------------- | | `422` | `WORKSPACE_NAME_ALREADY_EXISTS` | An active workspace with this name already exists for the company | ## Example cURL ```bash theme={null} curl -X POST "https://www.tryunleashx.com/api/v1/global/create-workspace" \ -H "token: " \ -H "Content-Type: application/json" \ -d '{ "workspace_name": "Growth Team" }' ``` ## Related Operations * [List Workspaces](/api-reference/workspaces/workspace-list) — fetch the newly created `workspace_id` # List Workspaces (API Token) Source: https://docs.unleashx.ai/api-reference/workspaces/workspace-list api-reference/openapi.json GET /workspace-list Retrieve the workspaces available to the API token's owner. Use the returned workspace_id values with workspace-scoped endpoints such as /campaign-list and /campaign-consumption. Retrieve the workspaces available to your API token. This is the lookup endpoint for `workspace_id` values used by workspace-scoped endpoints such as [List Campaigns](/api-reference/campaigns/campaign-list) and [Campaign Consumption](/api-reference/campaigns/campaign-consumption). The response is intentionally trimmed to the three fields an API consumer needs — id, name and status. Owner, members, whitelisted domains and branding settings are internal UI data and are not returned here. ## API Endpoint **GET** `/api/v1/global/workspace-list` **Base URL:** `https://www.tryunleashx.com` **Authentication:** Required (Token header: `token` or `api_access_token`) ## Query Parameters All parameters are optional. | Parameter | Type | Required | Default | Description | | --------- | ------- | -------- | ------- | ---------------------------------------------- | | `page` | integer | No | `1` | Page number, starting at 1 | | `limit` | integer | No | `10` | Records per page | | `name` | string | No | - | Partial workspace-name search (LIKE) | | `status` | integer | No | `1` | Workspace status. `1` = active, `0` = inactive | ## Success Response **Status Code:** `200 OK` ```json theme={null} { "error": false, "code": 200, "message": "", "timestamp": 1769243432947, "data": { "workspaces": [ { "workspace_id": 293, "workspace_name": "Growth Team", "status": "Active" }, { "workspace_id": 287, "workspace_name": "Support", "status": "Active" } ], "pagination": { "totalRecords": 2, "currentPage": 1, "limit": 10, "totalPages": 1 } } } ``` ## Response Fields ### Workspace Object | Field | Type | Description | | ---------------- | ------- | ---------------------------------------------------------------------------- | | `workspace_id` | integer | Unique identifier of the workspace — pass this to workspace-scoped endpoints | | `workspace_name` | string | Name of the workspace | | `status` | string | `Active` or `Inactive` | ### Pagination Object | Field | Type | Description | | -------------- | ------- | ----------------------------------- | | `totalRecords` | integer | Total number of matching workspaces | | `currentPage` | integer | Current page number | | `limit` | integer | Records per page | | `totalPages` | integer | Total number of pages available | ## Access Control Only workspaces the API token's owner is an active member of are returned. The token itself resolves to a user and a company; workspaces belonging to another company are never listed, so a `workspace_id` obtained here is always safe to pass to the campaign endpoints. ## Example cURL ### List all workspaces ```bash theme={null} curl -X GET "https://www.tryunleashx.com/api/v1/global/workspace-list" \ -H "token: " ``` ### Search workspaces by name ```bash theme={null} curl -X GET "https://www.tryunleashx.com/api/v1/global/workspace-list?name=growth" \ -H "token: " ``` ### Page through a large list ```bash theme={null} curl -X GET "https://www.tryunleashx.com/api/v1/global/workspace-list?page=2&limit=50" \ -H "token: " ``` ## Notes * Results are sorted by creation date, newest first. * `status` is a label, not the numeric column — filter with the numeric `status` parameter (`1` / `0`) but read the string back. * Pagination values fall back to `0` when there are no matching records. ## Related Operations * [List Campaigns](/api-reference/campaigns/campaign-list) — accepts `workspace_id` * [Campaign Consumption](/api-reference/campaigns/campaign-consumption) — accepts `workspace_id` # Changelog Source: https://docs.unleashx.ai/changelog/releases Stay up to date with the latest UnleashX updates and improvements # Changelog Welcome to the UnleashX changelog! Here you'll find all the latest updates, new features, improvements, and bug fixes. ## Recent Updates ### Version 1.2.0 - December 2024 #### 🚀 New Features * **Enhanced Voice AI Agents**: Improved conversation flow and response accuracy * **New API Endpoints**: Added comprehensive API support for Workflows, Users, and Workspaces * **Advanced Analytics**: Better call tracking and performance metrics * **Multilingual Support**: Expanded language support for voice agents #### 🔧 Improvements * **API Performance**: 40% faster response times for API calls * **Documentation**: Completely redesigned documentation with interactive API playground * **Dashboard UI**: Enhanced user interface with better navigation * **Error Handling**: Improved error messages and debugging capabilities #### 🐛 Bug Fixes * Fixed voice synthesis issues with certain languages * Resolved API timeout problems for large batch operations * Corrected billing calculation for international calls * Fixed dashboard loading issues on mobile devices ### Version 1.1.0 - November 2024 #### 🚀 New Features * **Chatbot Integration**: Added support for text-based conversational agents * **Form Builder**: New form creation and management capabilities * **Workflow Automation**: Advanced workflow management system * **Team Collaboration**: Enhanced workspace and user management #### 🔧 Improvements * **API Documentation**: Interactive API reference with try-it functionality * **Call Quality**: Improved audio quality for voice calls * **Security**: Enhanced authentication and data protection * **Scalability**: Better handling of high-volume call operations ### Version 1.0.0 - October 2024 #### 🎉 Initial Release * **Voice AI Agents**: Core voice agent functionality * **Phone Integration**: Support for making and receiving calls * **API Access**: RESTful API for all platform features * **Dashboard**: Web-based management interface * **Documentation**: Comprehensive guides and API reference *** ## How to Stay Updated * **Subscribe to Updates**: Get notified about new releases via email * **Follow our Blog**: Read detailed announcements on our blog * **Join our Community**: Connect with other users and get early access to features * **API Versioning**: We maintain backward compatibility for API changes ## Reporting Issues Found a bug or have a feature request? We'd love to hear from you: * **GitHub Issues**: Report bugs and request features * **Support Email**: Contact us at [cs@unleashx.ai](mailto:cs@unleashx.ai) * **Community Forum**: Discuss with other users *** *Last updated: December 2024* # Agent Evaluation Source: https://docs.unleashx.ai/faqs/agent-evaluation Automated call quality assurance and scoring for AI voice agents on UnleashX. Agent Evaluation transforms call quality assurance from a reactive, manual process into a continuous, automated intelligence layer across every customer interaction. Organisations deploying AI voice agents at scale face a fundamental quality assurance challenge: how do you maintain consistent standards, meet regulatory obligations, and drive continuous agent improvement when call volumes exceed the capacity of human reviewers? Agent Evaluation addresses this directly. It scores every call, immediately after it ends, against a configurable set of quality criteria. Results are available in real time. No sampling. No lag. No reviewer bias. ## Key Capabilities * Automated scoring of 100% of calls against configurable quality criteria * Composite scoring with weighted criteria to reflect business priorities * Independent threshold configuration per criterion and per evaluation * Real-time Dashboard with agent performance trends and criteria health The business case for automated call evaluation is grounded in four strategic outcomes: quality at scale, risk reduction, operational efficiency, and customer experience consistency. ### Quality at Scale Traditional quality assurance processes evaluate between 2 and 5 percent of call volume. This sampling rate is insufficient to detect systemic issues, identify individual agent performance trends, or provide meaningful coaching data. Agent Evaluation scores every call, providing a complete and statistically reliable view of quality across the entire agent population. Organisations that transition from sampled QA to 100% automated evaluation typically identify coaching opportunities three to four times faster, because patterns become visible across full call populations rather than small samples. ### Compliance and Risk Management Regulated industries require evidence that compliance obligations are being met on every customer interaction. Agent Evaluation provides a complete, timestamped audit record of every call scored against compliance criteria including identity verification, privacy handling, and accurate information disclosure. ### Operational Efficiency By automating the scoring process, quality assurance teams can redirect their time from listening to calls toward higher-value activities: analysing trends, designing coaching programmes, refining evaluation criteria, and working directly with agents on improvement. ### Consistent Customer Experience When quality standards are enforced by configuration rather than by individual reviewer judgment, the customer experience is more consistent. Every agent, on every call, is held to the same objective standard. This is particularly valuable in large deployments where multiple agent versions, multiple evaluations, and multiple teams are operating simultaneously. | | Traditional Manual QA | Agent Evaluation | | ----------- | -------------------------------------------------- | ---------------------------------------------------------- | | Coverage | 2 to 5% of calls reviewed | 100% of calls scored automatically | | Visibility | Patterns only visible in sampled data | Aggregate trends visible in real time across 100% of calls | | Speed | Results available in days or weeks | Results available immediately after each call | | Consistency | Inconsistent standards across reviewers and shifts | Identical rubric applied uniformly to every call | | Effort | Significant supervisor time investment | Fully automated with no human scoring required | *** ## 3. Use Cases Agent Evaluation is purpose-built for enterprise teams operating AI voice agents in customer-facing roles. The following use cases represent the most common deployment patterns. ### Continuous Quality Assurance Deploy a standing evaluation for each voice agent in production. Every call is scored the moment it ends, and results are immediately visible in the Dashboard. Quality leadership can monitor composite score trends daily, identify declining performance early, and respond before issues affect customer satisfaction metrics. This use case replaces the traditional weekly or monthly QA cycle with a continuous real-time signal. Teams typically configure one evaluation per agent, with criteria and thresholds aligned to their internal quality standards. ### Regulatory Compliance Monitoring Configure evaluations with compliance-specific criteria such as Privacy Compliance, No Misrepresentation, and No Offensive Content. Assign high weights to these criteria to ensure they drive the composite score. Every call is checked automatically, providing a complete audit trail for regulatory review. ### Agent Performance Benchmarking Run the same evaluation template across multiple agent versions or agent populations to compare performance objectively. Composite scores and per-criterion breakdowns provide a standardised basis for benchmarking that is not affected by reviewer subjectivity or sampling variance. Use the Agent filter on the Dashboard to compare individual agent performance within the same evaluation, or create separate evaluation templates to apply different standards to different agent roles. ### Targeted Coaching and Development Use evaluation results to structure coaching conversations. When an agent scores below the configured threshold on a specific criterion, the scoring rationale and transcript evidence provide a concrete, objective basis for feedback. This removes subjectivity from the coaching process and enables coaching conversations to be focused on specific, documented behaviours. ### New Agent Validation Evaluate newly deployed agent versions from their first call without requiring human oversight. Monitor composite score trends in the early deployment period and compare performance against established agent benchmarks to determine whether additional tuning is required before broader rollout. ### Multi-Market Quality Standards Create separate evaluation templates for different markets, regions, or compliance contexts. Each template can apply different criteria, different weights, and different thresholds to reflect the quality standards that apply in each context. A single agent can be evaluated against multiple templates simultaneously. *** ## 4. How Agent Evaluation Works Agent Evaluation operates as a fully automated pipeline. Once an evaluation is configured and activated, no manual intervention is required for calls to be scored and results to be surfaced. ### Evaluation Pipeline 1. The voice agent completes a customer call and the recording is captured by the platform. 2. The recording is transmitted to the configured transcription provider, which converts audio to text. 3. The transcript is passed to the evaluator model along with the system prompt, evaluation criteria, and scoring rubrics. 4. The evaluator model scores each criterion independently, producing a score from 0 to 100 for each. 5. Criterion scores are combined using their configured weights to produce a composite call score visible in the Dashboard and Activities log. The evaluator model is entirely independent of the voice agent. It functions as an objective, automated reviewer that reads the transcript and applies the scoring rubric configured by the administrator. It has no access to the live call and no ability to influence agent behaviour. ### Composite Score Calculation Each call receives a composite score representing overall call quality. The composite score is calculated as the weighted average of all criterion scores for that call. **Example**: An evaluation has three criteria with weights of 50, 30, and 20. The criterion scores for a specific call are 88, 71, and 52. The composite score is calculated as (88 multiplied by 50, plus 71 multiplied by 30, plus 52 multiplied by 20), divided by the total weight of 100. This produces a composite score of **76**. ### Criterion-Level Scoring Each criterion is scored on a scale of 0 to 100. Criterion scores are entirely independent of each other. A high score on one criterion does not influence the score on another. The only relationship between criterion scores is their weighted contribution to the composite score. *** ## 5. Dashboard The Dashboard provides executive-level visibility into call quality, agent performance, and criteria health. It is designed to surface actionable insights without requiring users to navigate individual call records. ### Filters | Filter | Options and Default | | ---------- | ------------------------------------------------------------- | | Date Range | Today \| Last 7 Days (default) \| This Month \| Last 3 Months | | Agent | All agents or a specific voice agent | All metrics on the Dashboard update dynamically when filters are changed. Selecting a specific agent narrows all metrics to that agent's call population only. ### Call Overview Two summary cards provide the top-line quality signal for the selected period: | Metric | Definition | Operational Significance | | ------------------- | ----------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- | | Total Calls | Number of calls evaluated in the selected period | Confirms evaluation coverage. A lower-than-expected count may indicate a paused evaluation or a recording integration issue. | | Avg Composite Score | Weighted average composite score across all evaluated calls | The primary quality indicator. A declining trend over consecutive periods signals a systemic performance issue requiring investigation. | ### Criteria Performance Table The Criteria Performance table is the most operationally significant section of the Dashboard. It shows how each criterion is performing across all evaluated calls in the selected period, sorted from highest to lowest average score. | Column | Description | | ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | Rank | Criteria ordered by average score. The lowest-ranked criterion represents the most significant quality gap in the current period. | | Criterion | The quality dimension being measured. | | Avg Score | Average score for this criterion across all evaluated calls in the selected period. | | Distribution Bar | A colour-coded bar showing the proportion of calls scoring in the Pass band (green), Review band (amber), and Fail band (red) for this criterion. Provides a signal on consistency as well as average performance. | A criterion with a high average score alongside a significant red band in the distribution bar indicates an inconsistency problem rather than a training gap. The agent performs well in most cases but fails in specific scenarios. This pattern often points to edge cases or specific call types that require targeted attention, rather than broad retraining. ### Agent Performance Panels Two panels provide agent-level context: * **Top Performing** displays the three agents with the highest average composite scores for the selected period. Each row is clickable and navigates to Activities filtered to that agent. * **Needs Attention** displays agents with the lowest average composite scores. These agents represent the priority coaching queue. Each row is clickable and navigates to Activities filtered to that agent. Every element of the Dashboard is interactive. Clicking a KPI card, a row in the Criteria table, or an agent in either panel navigates directly to the Activities tab with the corresponding filter applied. This reduces the time from insight to investigation to a single click. *** ## 6. Activities The Activities tab is the complete operational record of every call processed by Agent Evaluation. It provides call-level detail, filtering, and access to per-criterion scoring breakdowns for individual calls. ### Call Table | Column | Description | | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------- | | Call ID | Unique identifier for the call. Click to open the call detail drawer. A flag icon appears when no agent audio is detected in the recording. | | Agent | The voice agent that handled the call. | | Evaluation | The evaluation template applied to this call. | | Score | The composite score for this call, displayed as a colour-coded badge. | | Sentiment | Detected customer sentiment: Positive, Neutral, or Negative. | | Duration | Length of the call recording. | | Timestamp | Date and time the evaluation was completed. | | Status | Pass, Review, Fail, or Skipped. See section 6.3 for definitions. | | Actions | View Details opens the call detail drawer. Copy Call ID copies the identifier to the clipboard. | ### Call Status Definitions | Status | Definition | Recommended Action | | ----------- | ----------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **Pass** | Composite score meets the configured quality standard | No immediate action required. Monitor for trend changes over time. | | **Review** | Composite score falls in the borderline band between pass and fail thresholds | Recommend human review of the call detail. Open the criteria breakdown to identify which dimensions are underperforming. | | **Fail** | Composite score falls below the configured minimum threshold | Prioritise for agent coaching. Use the per-criterion breakdown to identify specific improvement areas with transcript evidence. | | **Skipped** | Call duration was below the configured minimum threshold | No quality action required. Skipped calls are excluded from all scoring calculations. Review the skip threshold configuration if the volume of skipped calls is unexpectedly high. | ### Call Detail Drawer Selecting any Call ID opens a side panel with the complete evaluation record for that call: * Composite score with status classification. * Call metadata including duration, detected sentiment, and evaluation timestamp. * Per-criterion breakdown showing the individual score for each criterion, with a progress bar indicating where the score sits relative to the configured pass and fail thresholds. * Flagged status indicator when the call has been manually flagged for human review. ### No Agent Audio Indicator When no agent audio is detected in a call recording, a flag indicator appears next to the Call ID. This signals a potential recording or integration issue rather than an agent performance concern. Calls with this indicator should be investigated. ### Manual Recording Upload To evaluate recordings that were not automatically captured through the integration: 1. Select **Upload Recordings** from the Activities toolbar. 2. Select the evaluation template to apply to the recordings. 3. Upload the recording file. Supported formats are ZIP, MP4, WAV, and MP3 with a maximum file size of 50 MB. 4. Select **Upload and Evaluate**. Results will appear in the Activities table once processing is complete. *** ## 7. Configuration The Configuration tab is the central management interface for evaluation templates. Administrators create, modify, activate, and archive evaluation templates from this view. ### Evaluation Table | Column | Description | | --------- | ------------------------------------------------------------------------------------------------ | | Name | The evaluation template name and its system-assigned unique identifier. | | Agent | The voice agent assigned to this evaluation template. | | LLM Model | The evaluator model configured to score transcripts for this evaluation. | | Criteria | The number of quality criteria defined in this evaluation template. | | Calls Run | The cumulative count of calls scored by this evaluation template since activation. | | Status | Active indicates the evaluation is currently scoring new calls. Paused indicates it is inactive. | ### Template Actions | Action | Behaviour | | -------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- | | Edit | Opens the setup wizard to modify any aspect of the evaluation template. The Voice Agent field is locked while the evaluation is Active. | | Start or Pause | Activates or deactivates the evaluation. A paused evaluation does not score new calls. All historical results and configuration are preserved. | | Archive | Removes the template from the active list. Archived templates are not deleted. All historical scoring data remains accessible. | The Voice Agent assigned to an evaluation template cannot be changed while the template is set to Active. Administrators must pause the evaluation before modifying the agent assignment. This constraint ensures that scoring continuity is maintained for active call populations. *** ## 8. Creating an Evaluation Select **Create Evaluation** in the Configuration tab to launch the three-step configuration wizard. Each step must be completed and validated before progression to the next. ### Step 1: Setup **Evaluation Name** — Assign a name that clearly communicates the purpose and scope of the evaluation. Recommended naming conventions include agent role, quality focus, and period. Examples: `Customer Support Quality Q2 2026` or `Outbound Sales Compliance EMEA`. **Voice Agent** — Select the voice agent whose calls this evaluation will score. All calls completed by the selected agent will be evaluated automatically once the evaluation is activated. The Voice Agent field is locked once the evaluation is set to Active. To reassign an evaluation to a different agent, the evaluation must first be paused. **Call Settings** — Two settings control call inclusion in the evaluation: * **Include Past Call Recordings** determines whether historical recordings are scored. When disabled (the default), only calls made after the evaluation is activated are scored. When enabled, all existing recordings for the assigned agent are also scored. * **Skip Calls Shorter Than** defines the minimum call duration for evaluation eligibility. Calls below this threshold are classified as Skipped and excluded from all calculations. The default value is 10 seconds. **Evaluator Model** — Select the language model that will read transcripts and score each criterion. A primary model and a fallback model must both be specified. The fallback model is invoked automatically in the event of primary model unavailability. The transcription provider converts audio recordings to text prior to scoring. The temperature parameter controls scoring determinism. A value of 0.3 is recommended for consistent, repeatable evaluation results. ### Step 2: QA Instructions The system prompt is the instruction set provided to the evaluator model. It defines the evaluation context, the standards to apply, and the required output format. A default prompt aligned with general call quality standards is pre-populated. Administrators should customize the system prompt to reflect organisational tone of voice, industry-specific context, regulatory requirements, and any agent-specific evaluation considerations. The system prompt applies to all criteria within the evaluation. Keep the system prompt focused on evaluation principles and context. Criterion-specific scoring guidance belongs in the individual Scoring Prompt fields configured in Step 3. Separating these concerns produces more consistent and predictable scoring outcomes. ### Step 3: Criteria Criteria define the quality dimensions evaluated on every call. Each criterion is scored independently. Select **Add Criteria** to add a criterion to the evaluation. Selecting a preset criterion auto-populates the scoring rubric with an industry-standard prompt. Custom criteria can be defined from scratch. New criteria are added to the top of the criteria list in an expanded state for immediate configuration. All other criteria collapse automatically to maintain a clean workspace. *** ## 9. Criteria and Scoring Criteria are the foundational unit of Agent Evaluation. They define precisely what quality means within a given evaluation context, and how it is measured at the call level. ### Criterion Configuration Fields | Field | Description | | ---------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Criterion Preset | Fifteen standard presets are available. Selecting a preset populates the scoring prompt with a pre-validated rubric. The Custom option allows fully bespoke criteria definition. | | Weight | A relative value determining this criterion's proportional contribution to the composite score. Weights are not required to sum to 100. The platform calculates percentage contributions automatically based on the total weight across all criteria. | | Pass Threshold | The minimum score (0 to 100) required for this criterion to be classified as Passed on a given call. | | Fail Threshold | The score below which this criterion is classified as Failed on a given call. | | Review Range | The band between the fail and pass thresholds, calculated automatically by the platform. Calls scoring in this range are classified as Review. | | Scoring Prompt | The rubric provided to the evaluator model describing expected performance at each score band: 90 to 100, 60 to 89, and 0 to 59. This prompt is specific to the criterion and supplements the general system prompt. | ### Standard Criterion Library The following fifteen criteria are available as presets. Each includes a pre-validated scoring rubric aligned with industry standards for voice AI quality assessment. | Criterion | Quality Dimension Evaluated | | ------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------ | | **Empathy** | Whether the agent acknowledged customer emotions appropriately and maintained a warm, natural tone throughout the interaction. | | **Language Switch** | Whether the agent detected and adapted to the customer's preferred language without friction or quality degradation. | | **Turn Taking** | Whether the conversation was balanced and natural, with appropriate pauses and no agent interruptions. | | **Context Awareness** | Whether the agent leveraged available customer history and avoided requesting information already on record. | | **Recovery From Errors** | Whether the agent acknowledged and corrected errors promptly, maintaining customer confidence throughout. | | **Intent Recognition** | Whether the customer's intent was correctly identified on the first attempt without unnecessary rerouting or clarification. | | **Greeting Accuracy** | Whether the call opening included all required elements: brand identification, agent identification, professional tone, and offer of assistance. | | **Intent Confirmation** | Whether the agent confirmed their understanding of the customer's request before taking action. | | **Probing Questions** | Whether the agent used targeted, open-ended questions to establish the full context required for resolution. | | **Call Closing** | Whether the agent summarised agreed next steps, confirmed customer satisfaction, and completed the call professionally. | | **No Offensive Content** | Whether the call was free from offensive, discriminatory, or non-compliant language throughout the interaction. | | **No Misrepresentation** | Whether all information provided by the agent was accurate and no misleading claims were made. | | **Privacy Compliance** | Whether identity verification procedures were followed correctly and sensitive data was handled in accordance with applicable protocols. | | **Confidence Level** | Whether the agent projected competence and authority, remained composed under pressure, and responded decisively. | | **Input Metadata Consistency** | Whether all required post-call fields were accurately completed and consistent with the content of the interaction. | ### Threshold Configuration Pass and Fail thresholds are configured independently for each criterion within each evaluation template. This design allows organisations to apply different quality standards to the same criterion depending on the context. Pass and Fail thresholds apply at the criterion level, not at the composite score level. A call may have a high composite score while one criterion falls below its configured Fail threshold, if other criteria with higher weights offset it. Administrators should review the per-criterion breakdown in the call detail drawer when investigating calls with borderline composite scores. ### Weight Configuration Criterion weights determine the relative contribution of each criterion to the composite score. The platform calculates percentage contributions automatically from the raw weight values provided. Compliance-critical criteria such as Privacy Compliance, No Offensive Content, and No Misrepresentation should typically be assigned higher weights in regulated contexts to ensure that compliance failures drive the composite score down appropriately. **Example**: If Privacy Compliance has a weight of 40 and Empathy has a weight of 10, a fail on Privacy Compliance will have four times the impact on the composite score as a fail on Empathy. This reflects the relative business priority of those two dimensions. *** ## 10. Call Settings Call Settings are defined in Step 1 of the evaluation setup wizard and determine which calls are included in evaluation scoring. These settings apply to the evaluation template and cannot be overridden at the call level. ### Include Past Call Recordings | Configuration | Behaviour | | ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | Disabled (default) | Only calls completed after the evaluation template is saved and activated will be scored. Existing recordings for the assigned agent are not processed. | | Enabled | All existing recordings for the assigned agent will be scored in addition to all subsequent calls. Enabling this setting will increase processing time and evaluation cost in proportion to the volume of historical recordings available. | ### Skip Calls Shorter Than This setting establishes the minimum call duration threshold for evaluation eligibility. Calls below this duration are automatically classified as Skipped and excluded from all quality metrics, including composite score calculations and criteria performance aggregations. The skip threshold is designed to prevent incomplete interactions, such as dropped calls, silent calls, and test calls, from distorting quality measurements. Skipped calls remain visible in the Activities log for operational transparency, displayed with reduced opacity and a Skipped status label. The default skip threshold of 10 seconds is appropriate for most deployments. If your agent population handles very short, transactional interactions, consider lowering this threshold to ensure those calls are captured in quality metrics. If your environment produces a high volume of accidental or test calls, consider raising the threshold. Configuration range: 0 to 300 seconds. Default: **10 seconds**. *** ## 11. Glossary \| Term | Definition | \|------|-----------|\ \| **Agent Evaluation** | The UnleashX module that automatically scores calls made by AI voice agents against configurable quality criteria. | \| **Composite Score** | The weighted average of all criterion scores for a single call, representing the overall quality of that interaction. | \| **Criterion** | A single, defined quality dimension evaluated on a call. Examples include Empathy, Call Closing, and Privacy Compliance. | \| **Criteria Score** | The score from 0 to 100 assigned to a single criterion for a single call by the evaluator model. | \| **Evaluation Template** | A saved configuration defining which criteria to score, the associated rubrics, thresholds, evaluator model, and agent assignment. | \| **Evaluator Model** | The language model that reads call transcripts and assigns criterion scores. Fully independent of the voice agent. | \| **Fail Threshold** | The score below which a criterion is classified as Failed for a given call. | \| **Pass Threshold** | The minimum score required for a criterion to be classified as Passed for a given call. | \| **Review** | A status indicating a criterion or composite score falls in the band between the configured fail and pass thresholds. | \| **Scoring Prompt** | The rubric provided to the evaluator model describing expected performance at each score band for a specific criterion. | \| **Skipped** | A call status applied when call duration falls below the configured minimum threshold. Skipped calls are excluded from all quality calculations. | \| **Temperature** | An evaluator model parameter controlling output determinism. Lower values produce more consistent, repeatable scoring results. Recommended value: 0.3. | \| **Transcription Provider** | The third-party service that converts call audio recordings to text prior to evaluation scoring. | \| **Weight** | A relative numerical value assigned to a criterion that determines its proportional contribution to the composite score. | # API FAQs Source: https://docs.unleashx.ai/faqs/api Frequently asked questions about UnleashX API and integration # API FAQs ## How do I get started with the API? 1. **Get Your API Key**: Sign up and generate your API key from the dashboard 2. **Read the Documentation**: Check our comprehensive API reference 3. **Try the Interactive Playground**: Test API calls directly in the documentation 4. **Start Building**: Use our SDKs or make direct HTTP requests ## What authentication method do you use? We use Bearer Token authentication. Include your API key in the Authorization header: ```bash theme={null} curl -H "Authorization: Bearer YOUR_API_KEY" \ https://www.tryunleashx.com/v1/agent/all ``` ## What's the API rate limit? Our API rate limits are: * **Free Plan**: 100 requests per minute * **Pro Plan**: 1,000 requests per minute * **Enterprise Plan**: Custom limits based on your needs Rate limits are applied per API key and reset every minute. ## What data formats do you support? We support: * **Request/Response**: JSON * **File Uploads**: Multipart form data * **Webhooks**: JSON payloads * **Data Export**: JSON, CSV ## How do I handle webhooks? 1. **Set up your endpoint**: Create a webhook URL that can receive POST requests 2. **Configure in dashboard**: Add your webhook URL in the dashboard settings 3. **Verify signatures**: Use our signature verification to ensure authenticity 4. **Handle events**: Process incoming webhook events in your application ## What webhook events are available? We support webhooks for: * Call started/completed * Agent responses * Error events * User interactions * System notifications ## Can I test API calls without making real calls? Yes! We provide: * **Sandbox Environment**: Test API calls without charges * **Mock Responses**: Simulated responses for development * **Interactive Playground**: Try API calls directly in documentation * **SDK Examples**: Code samples in multiple languages ## How do I handle errors? Our API returns standard HTTP status codes: * **200**: Success * **201**: Created * **400**: Bad Request * **401**: Unauthorized * **404**: Not Found * **429**: Rate Limited * **500**: Server Error Error responses include detailed error messages and error codes. ## What SDKs do you provide? We offer official SDKs for: * **Python**: `pip install unleashx` * **Node.js**: `npm install unleashx` * **PHP**: `composer require unleashx/unleashx` * **Ruby**: `gem install unleashx` ## How do I track API usage? You can monitor your API usage through: * **Dashboard Analytics**: Real-time usage statistics * **API Response Headers**: Rate limit information in responses * **Webhook Events**: Usage notifications * **Monthly Reports**: Detailed usage breakdowns ## Can I use the API for bulk operations? Yes! We support: * **Batch API calls**: Process multiple requests efficiently * **Bulk data import**: Import large datasets * **Concurrent requests**: Handle multiple operations simultaneously * **Async processing**: Long-running operations with status tracking ## How do I get help with API integration? * **Documentation**: Comprehensive guides and examples * **Interactive Playground**: Test API calls in your browser * **Support Email**: [cs@unleashx.ai](mailto:cs@unleashx.ai) * **Community Forum**: Connect with other developers * **GitHub Examples**: Open source integration examples ## Workflow API Integration ### Custom API Configuration The Custom API integration allows you to configure API endpoints, authentication methods, and data mapping for any external system. You can specify HTTP methods (GET, POST, PUT, DELETE), define request headers, set authentication parameters including API keys and OAuth tokens, and map workflow data to API parameters. ### Authentication Handling Authentication handling supports multiple methods including API key authentication, OAuth 2.0 token flows, and basic authentication with username/password combinations. The workflow system manages authentication automatically, including token refresh for OAuth integrations. ### Data Exchange and Transformation Workflows can send data to external APIs and process the responses for use in subsequent automation steps. Response data becomes available as variables throughout the workflow, enabling sophisticated data-driven automation. ### Error Handling Error handling capabilities ensure workflows respond appropriately when API calls fail or return unexpected results. You can configure retry attempts, fallback actions, and error notifications to maintain workflow reliability. ### Real-time Integration with Webhooks The Webhook integration enables real-time bidirectional communication between UnleashX and external systems. Your workflows can send webhooks to notify other systems when important events occur, while also receiving webhook data to trigger UnleashX automations. ## Workflow Data Sources ### Cloud-Based Business Applications * **Google Workspace**: Sheets, Forms, Drive, Docs, Calendar, Gmail, Analytics * **Microsoft Office**: Outlook email and calendar data * **Customer Relationship Management**: HubSpot with comprehensive data access * **Communication Platforms**: Slack, Discord, WhatsApp * **Database Systems**: Airtable, Notion * **Specialized Services**: LinkedIn, HeyGen, Web Search ### Custom Data Sources via API The Custom API integration enables connection to any data source that provides programmatic access, including proprietary databases, industry-specific applications, and unique business systems. ## Workflow Notification Capabilities ### Email Notifications Gmail and Outlook integrations enable workflows to send personalized email notifications based on workflow triggers and conditions. ### Team Communication Alerts Slack integration provides real-time notifications through direct messages, channel posts, and custom formatted alerts. ### Escalation and Priority Notifications Workflows can implement sophisticated escalation procedures where initial notifications go to primary contacts, then automatically escalate to managers if responses aren't received within specified timeframes. ## Workflow Error Handling ### Conditional Error Detection The If/Else node system enables workflows to detect and respond to various error conditions using string, number, boolean, and array conditions. ### Integration Failure Management When external API calls fail or return error responses, workflows can detect these conditions through response code evaluation and content analysis. ### Recovery and Retry Mechanisms Conditional logic enables workflows to implement sophisticated retry mechanisms when temporary failures occur, including circuit breaker patterns to prevent cascading failures. # Billing FAQs Source: https://docs.unleashx.ai/faqs/billing Frequently asked questions about UnleashX pricing and billing # Billing FAQs ## How does UnleashX pricing work? UnleashX uses a usage-based pricing model: * **Voice Calls**: Pay per minute of conversation * **Phone Numbers**: Monthly rental fee per number * **API Calls**: Included in all plans with generous limits * **Storage**: Included for call recordings and data ## What are the pricing tiers? ### Free Plan * 100 free minutes per month * 1 voice agent * Basic features * Email support ### Pro Plan (\$99/month) * 1,000 minutes included * Up to 10 voice agents * Advanced features * Priority support * Custom integrations ### Enterprise Plan (Custom) * Unlimited minutes * Unlimited agents * All features * Dedicated support * Custom pricing * SLA guarantees ## How is call time calculated? Call time is calculated from when the call connects until it ends: * **Minimum charge**: 30 seconds per call * **Billing increment**: 6-second increments * **Failed calls**: No charge for failed connections * **International calls**: Additional per-minute rates apply ## What payment methods do you accept? We accept: * **Credit Cards**: Visa, MasterCard, American Express * **Debit Cards**: All major debit cards * **Bank Transfers**: For enterprise customers * **PayPal**: Available for Pro plan and below ## Can I change my plan anytime? Yes! You can: * **Upgrade**: Immediate access to new features * **Downgrade**: Takes effect at next billing cycle * **Pause**: Temporarily suspend your account * **Cancel**: Cancel anytime with 30-day notice ## Do you offer refunds? We offer: * **30-day money-back guarantee**: Full refund for new customers * **Pro-rated refunds**: For unused portions of your plan * **Failed call credits**: Automatic credits for technical issues * **Billing disputes**: Contact support for resolution ## How do I view my usage and billing? Access your billing information through: * **Dashboard**: Real-time usage tracking * **Billing Portal**: Detailed invoices and payment history * **Email Notifications**: Usage alerts and billing reminders * **API**: Programmatic access to billing data ## What happens if I exceed my plan limits? If you exceed your plan limits: * **Automatic overage billing**: Pay only for what you use * **Usage alerts**: Email notifications at 80% and 100% of limits * **Grace period**: 24-hour grace period for payment * **Service suspension**: Temporary suspension if payment fails ## Are there any setup fees? * **Free Plan**: No setup fees * **Pro Plan**: No setup fees * **Enterprise Plan**: Custom setup fees may apply * **Phone Numbers**: One-time setup fee for new numbers ## Do you offer discounts? We provide: * **Annual billing**: 20% discount for yearly payments * **Volume discounts**: Reduced rates for high usage * **Non-profit discounts**: Special pricing for qualified organizations * **Educational discounts**: Reduced rates for educational institutions ## How do I add more phone numbers? You can add phone numbers through: * **Dashboard**: Purchase numbers directly * **API**: Programmatic number purchasing * **Support**: Contact us for bulk number purchases * **Import**: Bring your existing numbers ## What's included in the free trial? The free trial includes: * 100 free minutes * 1 voice agent * Basic dashboard access * Standard support * All core features ## Can I get a custom quote? Yes! Contact our sales team for: * **Enterprise pricing**: Custom plans for large organizations * **Volume discounts**: Special rates for high usage * **Custom features**: Tailored solutions for your needs * **Pilot programs**: Test our platform before committing ## How do I contact billing support? Reach our billing team at: * **Email**: [billing@unleashx.ai](mailto:billing@unleashx.ai) * **Phone**: +1 (555) 123-4567 * **Dashboard**: Submit a support ticket * **Live Chat**: Available during business hours ## What's your refund policy? Our refund policy includes: * **30-day guarantee**: Full refund for new customers * **Pro-rated refunds**: For unused plan portions * **Technical issues**: Credits for service problems * **Billing errors**: Immediate correction and refund ## Workflow Pricing ### Workflow Execution Costs * **Free Plan**: 100 workflow executions per month * **Pro Plan**: 1,000 workflow executions per month * **Enterprise Plan**: Unlimited workflow executions ### Integration Costs * **Pre-built Integrations**: Included in all plans * **Custom API Integrations**: Available on Pro and Enterprise plans * **Webhook Processing**: Included in all plans ### Data Processing * **Data Storage**: Included for workflow data and logs * **File Processing**: Included for standard file types * **Advanced Processing**: Available on Pro and Enterprise plans ## Enterprise Billing ### Custom Pricing Enterprise customers receive custom pricing based on: * **Usage Volume**: High-volume discounts available * **Feature Requirements**: Custom feature pricing * **Support Level**: Dedicated support options * **SLA Requirements**: Service level agreement pricing ### Billing Options * **Annual Contracts**: Preferred pricing for annual commitments * **Volume Commitments**: Discounted rates for usage commitments * **Multi-year Agreements**: Additional discounts for long-term contracts * **Flexible Payment Terms**: Custom payment schedules available ### Additional Services * **Professional Services**: Implementation and consulting * **Training Programs**: Team training and certification * **Custom Development**: Bespoke feature development * **Dedicated Support**: 24/7 dedicated support options *** *For more billing questions, contact us at [billing@unleashx.ai](mailto:billing@unleashx.ai)* # Campaigns Source: https://docs.unleashx.ai/faqs/campaigns A complete guide to building, configuring, and operating campaigns on UnleashX. A Campaign in UnleashX is a structured outbound calling programme. You connect a list of contacts to a Voice Agent, define a schedule, configure retry logic, and start. The agent works through every contact in your audience list, placing calls, logging outcomes, and retrying unanswered contacts until the campaign is complete or you stop it. Once a campaign is running, your role is to monitor results and adjust if needed. You can pause, add contacts, edit settings, and resume at any point before the campaign finishes. ## When to use a Campaign Campaigns are suited for any outbound calling task where you have a defined contact list and want consistent, automated follow-up. Common uses include: * **Insurance & subscriptions** — Renewal reminders * **Payment follow-up** — Contacting customers with overdue balances, with conditions to skip those who have already responded * **Lead follow-up** — Calling inbound enquiries or trial signups while intent is still high * **Appointment reminders** — Notifying patients, candidates, or customers before scheduled appointments * **Post-service surveys** — Collecting structured feedback at scale after a purchase or support interaction * **Candidate screening** — Working through large applicant pools with a consistent screening script ## 2. Creating a Campaign From the Campaigns screen, click **+ New Campaign**. You will move through three steps. You can save a draft at any point. The campaign will not start until you click **Start Campaign**. ### Step 1 — Basic Details Set the campaign name, the date range it should run, and the Voice Agent that will handle all calls. You also configure re-attempt behaviour here: how many times the agent should retry an unanswered contact, and how long to wait between each attempt. The agent you choose is the most consequential decision in this step. Agents configured for different purposes (a renewal agent, a collections agent, a recruitment screener) behave very differently on the same call. Choose the agent built for the specific objective of this campaign. | Field | Description | | ---------------- | ----------------------------------------------------------------------------------------------------------------------- | | Campaign name | A label to identify this campaign in the listing. | | Start & end date | The date range of the campaign is active. Calls are placed within this window. | | Voice Agent | The agent that will handle all outbound calls for this campaign. | | Re-attempt count | How many additional attempts to make after the first call. Setting to 3 means up to 4 total calls per contact. | | Retry delay | Minimum gap between consecutive attempts to the same contact. Options range from 30 minutes to 1 day. | | Retry conditions | Optional rules that must be true before a retry fires. Without a condition, all failed calls are retried automatically. | ### Step 2 — Knowledge Base Upload documents the agent should reference during calls for this campaign. These are campaign-specific and supplement the agent's own knowledge base. Good candidates include offer sheets, updated pricing, FAQs, and objection-handling scripts you don't want to bake permanently into the agent. This step is optional. If the agent is already configured with everything it needs, you can skip it. Accepted formats: PDF, Word (.docx), and plain text. ### Step 3 — Audience Add the contacts this campaign will call. Each contact requires a phone number at minimum. You can also add a name and a custom variable, which is a single value passed to the agent as an input at the start of each call. Custom variables are how you personalise calls at scale. If your agent is configured to receive a `policy_number` or `loan_id` input, populating that field per contact means the agent knows each customer's specific detail before the call begins. Contacts can be entered manually or imported via CSV. You can add or remove contacts after the campaign has started, including while it is running. New additions are picked up and queued automatically. **Validate with a small batch first** Before importing your full contact list, add 10–20 test contacts and start the campaign. Verify that the agent behaves as expected, custom variables are mapping correctly, and dispositions are being logged properly. Then pause, import the full list, and resume. ## 3. Campaign Statuses A campaign moves through the following statuses as it progresses. The status determines what the agent is doing and which actions are available to you at that moment. | Status | Description | Available Actions | | ------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------ | | **Draft** | Campaign saved but not started. The agent is inactive. All settings including agent, contacts, re-attempt rules, and knowledge base are fully editable. | Start, Edit, Delete | | **In Progress** | The campaign is live. The agent is actively placing calls. Agent configuration and contact input variables are locked. To make changes, pause the campaign first. | Pause, Mark as Complete | | **On Hold** | Campaign is paused. Calls currently in progress will finish; no new calls will be initiated. Contact list and re-attempt settings are editable. Resume at any time. | Resume, Edit, Mark as Complete | | **Completed** | All contacts have been through their allowed attempts and the campaign has run its full course. The record is read-only. All results remain accessible. | View only | | **Force Completed** | Campaign stopped manually before all contacts were reached. Remaining contacts are marked as Halted and will not be called again within this campaign. This cannot be undone. | View only | **Pausing vs Force Completing** Use **Pause** when you need to temporarily stop the campaign to make changes. You can resume it and the agent will continue from where it left off. Use **Mark as Complete** only when you intend to permanently end the campaign. Contacts that have not been reached are marked as Halted and cannot be re-queued within the same campaign. ## 4. Re-attempts & Conditions When a call goes unanswered, hits a busy signal, or fails to connect, the campaign can automatically retry that contact. Re-attempt settings control how many times this happens and how long the agent waits between attempts. | Setting | What it does | Example | | ---------------- | ---------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | | Re-attempt count | Additional call attempts after the first. Setting to 3 means up to 4 total calls per contact. | A contact is called at 10am, 2pm, 6pm, and 10am the next day. | | Retry delay | Minimum gap before calling a contact again. Options from 30 minutes to 1 day. | A 4-hour delay means the same contact won't be called again for at least 4 hours. | | Condition | A rule the last call must satisfy before a retry fires. Without a condition, all failed calls are retried. | Only retry if Last Call Status = Unanswered. Declined contacts are skipped. | ### Using Conditions Conditions give you precise control over which contacts get retried. Without a condition, the agent retries all failed calls by default. When you need more granularity, for example retrying only contacts who were genuinely unreachable and not those who answered and declined, conditions let you express that logic precisely. Conditions support two logical operators: * **AND**: all rules within the group must be true for the retry to fire * **OR**: at least one group must match. You can have multiple independent groups **Example condition:** ``` Last Call Status equals Unanswered AND Last Call Duration less than 10 seconds OR Last Call Status equals Busy ``` This retries a contact if the last call was unanswered and lasted under 10 seconds with no engagement, or if the line returned a busy signal. Contacts where the call lasted longer are not retried. ## 5. Campaigns & Voice Agents Every campaign runs through exactly one Voice Agent. The agent handles all outbound calls, draws on the documents you've uploaded as context, and logs call outcomes including status, duration, and disposition back to the campaign automatically. ### Context the agent uses on each call When the agent places a call through a campaign, it draws on four layers of context: | Source | What it contains | Configured in | | ----------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------- | | Agent configuration | The agent's persona, call script, instructions, and general behaviour | Voice Agent settings | | Agent knowledge base | Shared documents across all campaigns using this agent: company info, product catalogue, and general FAQs | Voice Agent → Knowledge Base | | Campaign knowledge base | Documents specific to this campaign: current offer sheet, updated pricing, and campaign-specific scripts | Campaign → Step 2 | | Contact variable | A single value per contact passed as an agent input such as policy number, loan reference, or account tier | Campaign → Audience list | ### What gets locked when a campaign is running Once a campaign moves to In Progress, certain settings on both the campaign and its agent become read-only. This protects the consistency of calls already in progress. Changing how the agent behaves mid-run would make call data unreliable. | Agent setting | Draft | In Progress | On Hold | Reason for lock | | ----------------------- | -------- | ----------- | -------- | ----------------------------------------------------------------------------------------- | | Script & persona | Editable | Locked | Editable | Changing the script mid-run alters the experience for contacts still in the queue | | Input variables | Editable | Locked | Editable | Inputs map to contact data in the audience list. Changes break existing variable mappings | | Output variables | Editable | Locked | Editable | Outputs feed call records and reporting. Changes make historical data inconsistent | | Dispositions | Editable | Locked | Editable | Changing disposition labels retroactively alters how completed calls are classified | | Campaign knowledge base | Editable | Add only | Editable | New files can be added while running; removing files mid-campaign may affect call quality | **Agent settings appearing locked?** This means the agent is attached to a campaign that is currently In Progress or On Hold. Go to the Campaigns screen, pause the relevant campaign, make your changes to the agent, then resume. **One agent per campaign** A campaign is always paired with exactly one Voice Agent. If you want to run the same contact list through two different agents, for example as an A/B test, create two separate campaigns with the same imported contact list, each with a different agent assigned. A single agent can be assigned to multiple campaigns simultaneously. ## 6. Audience & Contact Management The audience is the list of contacts the campaign will call. View, add, and manage contacts from the **Audience** tab inside any campaign. The tab shows each contact's full call history including status, attempt count, duration, and disposition updated in real time. ### Adding contacts | Method | Best for | Notes | | ------------ | --------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Manual entry | Small lists, one-off additions, or test contacts before a full import | Enter phone number, name, and custom variable directly. Contact is added immediately. | | CSV import | Bulk imports from a CRM, database, or spreadsheet | Download the CSV template from the Bulk Import modal. Fill in contacts using the provided column headers and upload. The system validates and imports automatically. | ### Contact statuses Each contact in the audience list carries a status reflecting where it is in the calling process. | Status | Meaning | | --------------- | --------------------------------------------------------------------------------------------------------------------- | | **Fresh** | No call has been attempted yet. The contact is queued and will be called when the agent reaches it. | | **In Progress** | At least one call has been made. Re-attempts may still follow if the last call met the retry condition. | | **Completed** | All allowed attempts for this contact are done. Either the contact was answered or the re-attempt limit was reached. | | **Halted** | The campaign was force completed before this contact was reached. No further calls will be made within this campaign. | ### Reading the Audience tab | Column | What it shows | | ------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | | Attempts | Calls made vs maximum allowed. `2/4` means 2 calls made out of a maximum of 4 total. | | Call Status | Outcome of the most recent call: Answered, Unanswered, Busy, or Failed. | | Duration | Length of the most recent call. A very short duration on an answered call may indicate the contact disconnected immediately. | | Disposition | The agent's classification of the call outcome: Interested, Declined, Callback Requested, Not Reachable, and so on. Dispositions are defined on the agent. | | Last Attempt | Timestamp of the most recent call. Useful when deciding whether to add a contact to a follow-up campaign. | ## 7. Best Practices **Match the agent to the campaign objective** A renewal reminder agent and a payment recovery agent need different scripts, tones, and disposition classifications. Build agents specifically for each campaign type rather than reusing a generic one. The difference in outcomes is significant at scale. **Populate contact variables** A call that opens with a customer's name and specific account detail converts at a higher rate than a generic opening. If your agent is configured with input variables, include those values in your CSV import. For most campaigns this is a one-time export from your CRM. **Set retry delays appropriate to the context** A 30-minute delay across 500 contacts creates a concentrated burst of call volume. For most campaigns, a 4 to 6-hour delay between attempts is more effective as it gives contacts time to be available and avoids the campaign feeling aggressive. For high-value contacts, a 1-day delay with 2 to 3 total attempts is often ideal. **Pause rather than force complete when issues arise** If something needs fixing mid-campaign such as an incorrect variable, a wrong document, or a script issue, pause the campaign, fix it, and resume. Force completing is permanent. Contacts marked as Halted cannot be re-queued within the same campaign. **Monitor the Audience tab during the first run** In the first hour of a new campaign, check the Audience tab to confirm that call statuses and dispositions are being recorded as expected. Catching a misconfigured disposition or a missing contact variable early avoids data issues across the full run. # General FAQs Source: https://docs.unleashx.ai/faqs/general Frequently asked questions about UnleashX platform and features # General FAQs ## What is UnleashX? UnleashX is a comprehensive AI-powered platform that enables you to build sophisticated voice agents, chatbots, and automated workflows. Our platform combines advanced AI technology with easy-to-use tools to help you create, deploy, and manage conversational AI at scale. ## What types of workflows can I create with UnleashX? UnleashX.ai provides five distinct workflow trigger types that enable you to create comprehensive automation for virtually any business process: ### Event Based Actions in App Event-based workflows automatically execute when specific events occur within your connected applications. These workflows respond instantly to real-time changes in your business systems, ensuring immediate action when important events happen. ### Scheduled Actions Scheduled workflows execute at predetermined times and frequencies, perfect for recurring business tasks that need to happen on a regular basis. You can set up time-based scheduling with flexible frequency options - daily, multiple times per day, weekly, or custom schedules. ### One-Time Actions One-time workflows execute immediately when you trigger them manually, perfect for ad-hoc tasks or processes you want to run on-demand. These workflows are ideal for data migrations, one-off reports, bulk updates, or any process you need to execute immediately. ### Form Submission Form submission workflows trigger automatically when someone submits a form connected to your workflow system. These workflows are particularly powerful for lead generation, customer onboarding, support requests, and any process that begins with data collection from users or customers. ### Manually Trigger Manual trigger workflows execute when you or your team members actively start them, providing complete control over when automation runs. These workflows are perfect for processes that require human judgment about timing or context. ## What business processes can be automated? UnleashX workflows can automate virtually any business process that involves data movement, decision-making based on defined criteria, or coordinated actions across multiple systems: * **Customer Relationship Management**: Lead management, customer onboarding, support workflows * **Sales Pipeline Management**: Opportunity tracking, quote and proposal workflows, deal progression * **Marketing Campaign Management**: Content distribution, lead nurturing, event management * **Operations and Data Management**: Data synchronization, inventory management, reporting * **Human Resources and Team Management**: Employee onboarding, performance reviews, time-off requests ## How do workflows integrate with my existing tools? UnleashX workflows provide extensive integration capabilities with your current business applications through pre-built connectors and flexible API connections. The platform supports 19+ major business applications with specific triggers and actions for each, plus custom API integration for proprietary systems. ### Pre-built Application Integrations * **Google Workspace**: Sheets, Forms, Drive, Docs, Calendar, Gmail, Analytics * **Microsoft Office**: Outlook email and calendar functionality * **CRM Systems**: HubSpot with contact creation, deal stage changes, email engagement * **Communication Platforms**: Slack, Discord, WhatsApp for team coordination * **Database Tools**: Airtable and Notion for database automation * **Specialized Services**: LinkedIn, HeyGen, and other professional tools ### Custom API and Webhook Integration * **Custom API Integration**: Connect with any system that provides API access * **Webhook Integration**: Real-time bidirectional communication with external systems * **Business Intelligence**: Integration with analytics platforms and reporting systems ## What are some common workflow templates? UnleashX workflows address common business scenarios across multiple industries and departments: ### Lead Management Templates * **New Lead Processing**: Automatic lead scoring and routing * **Lead Nurturing Campaign**: Sophisticated drip campaigns that adapt based on behavior ### Customer Onboarding Templates * **New Customer Welcome**: Coordinated onboarding across multiple departments * **SaaS User Activation**: Software-specific onboarding and feature adoption ### Sales Pipeline Templates * **Opportunity Progression**: Automated deal advancement through sales process * **Quote Management**: Streamlined pricing and proposal processes ### Customer Support Templates * **Ticket Routing and Escalation**: Intelligent support ticket management * **Customer Satisfaction Follow-up**: Automated feedback collection and processing ### Marketing Automation Templates * **Content Distribution**: Multi-channel content promotion * **Event Management**: Webinar and event promotion from registration through follow-up ### Operations Templates * **Data Synchronization**: Maintaining consistency across multiple business systems * **Report Generation**: Automated compilation of comprehensive business reports ## Can workflows handle complex decision-making? Yes! UnleashX workflows incorporate sophisticated conditional logic through If/Else nodes that enable complex decision-making based on multiple criteria and data types. The platform supports comprehensive condition evaluation across: * **Strings**: Text analysis and categorization * **Numbers**: Quantitative data and business metrics * **Booleans**: True/false status indicators * **Dates/Times**: Temporal factors and deadlines * **Lists/Arrays**: Multiple values and complex data structures ## How do workflows interact with external APIs? UnleashX workflows provide comprehensive API integration capabilities through the Custom API integration option, enabling connection with virtually any system that provides programmatic access: * **Custom API Configuration**: Configure endpoints, authentication, and data mapping * **Data Exchange and Transformation**: Send data to external APIs and process responses * **Real-time Integration with Webhooks**: Bidirectional communication with external systems * **Business Intelligence Integration**: Connect with analytics platforms and reporting systems ## What data sources can workflows connect to? UnleashX workflows connect to a comprehensive range of data sources: * **Cloud-Based Business Applications**: Google Workspace, Microsoft Office * **Customer Relationship Management**: HubSpot with comprehensive contact and deal data * **Communication Platforms**: Slack, Discord, WhatsApp * **Database Systems**: Airtable, Notion * **Specialized Data Sources**: LinkedIn, HeyGen, Web Search * **File and Document Data**: Google Drive, document processing * **Custom Data Sources**: Any system with API access ## Can workflows send notifications and alerts? Yes! UnleashX workflows provide extensive notification and alerting capabilities through multiple communication channels: * **Email Notifications**: Personalized emails through Gmail and Outlook * **Team Communication Alerts**: Real-time notifications through Slack, Discord, WhatsApp * **Escalation and Priority Notifications**: Sophisticated escalation procedures * **Conditional Alert Logic**: Different alerts based on specific conditions * **Scheduled and Recurring Notifications**: Regular status reports and reminders ## How do workflows handle errors and exceptions? UnleashX workflows include comprehensive error handling and exception management: * **Conditional Error Detection**: Detect and respond to various error conditions * **Integration Failure Management**: Handle API failures and timeouts * **Data Quality Exception Handling**: Verify and correct data quality issues * **Notification and Escalation for Errors**: Alert appropriate team members * **Recovery and Retry Mechanisms**: Implement sophisticated retry and recovery procedures ## What's the difference between simple and complex workflows? ### Simple Workflows * One trigger and few related actions * No complex decision-making * Perfect for routine tasks * Minimal maintenance required ### Complex Workflows * Multiple decision points with If/Else nodes * Conditional logic across different data types * Coordination across numerous integrated systems * Data transformation and enrichment * More sophisticated management required The UnleashX platform supports both simple and complex workflows through the same interface, allowing you to start with basic automation and gradually add sophistication as your needs evolve. # Platform Guide Source: https://docs.unleashx.ai/faqs/platform-guide A complete guide to UnleashX — the Full Stack AI Workforce Platform. UnleashX is a Full Stack AI Workforce Platform. It enables organisations to deploy AI employees — not isolated bots or single task agents — that take ownership of real business roles and carry them through from first contact to final resolution, autonomously. Where conventional automation addresses a single step in a process, UnleashX AI employees govern the entire sequence. They qualify the lead, update the CRM, initiate the follow up, schedule the appointment, verify payment status, and escalate to a human only when the situation demands it. The entire chain of work is completed without manual intervention. Organisations can deploy AI employees across sales, customer engagement, collections, talent acquisition, and operations, running simultaneously across voice, chat, WhatsApp, and email in over 100 languages, with no downtime, no shift constraints, and no ceiling on scale. **The Strategic Intent** UnleashX moves organisations beyond fragmented automation. Rather than assembling a patchwork of tools that each address one touchpoint, UnleashX deploys AI employees that own a business function end to end. Each one is configured for a specific role, equipped with the right knowledge, connected to the right systems, and accountable for outcomes. *** ## The Full Stack Difference Most automation investments address a single layer of a workflow. A chatbot handles an inquiry. A dialler places a call. A CRM captures the record. The coordination between these steps still relies on human effort. UnleashX is architected around a different premise. ### End to End Workflow Ownership A full stack AI employee does not stop at one step and wait for the next system or person to act. It progresses through the entire workflow, making contextual decisions, communicating across channels, and taking actions inside connected systems until the task is complete. In a sales context, a conventional bot receives a lead, sends a templated message, and waits for a human to follow up. An UnleashX AI employee, working within the same workflow and without any human instruction: * Initiates a call and holds a real qualification conversation * Updates the CRM based on what was discussed * Sends a tailored follow up across the appropriate channel * Schedules a meeting directly into the sales representative's calendar * Briefs the representative with full context before the meeting * Follows up independently if no response is received Owning the entire workflow rather than a single step within it is the distinction that makes UnleashX AI employees operationally significant rather than supplementary. ### Core Capabilities of an AI Employee * **Communicate**: Sustain natural, contextual conversations across voice, chat, WhatsApp, and email in any language and at any scale * **Reason**: Interpret intent, assess context, and determine the appropriate course of action independently * **Execute**: Take real actions within connected systems — updating records, sending communications, booking appointments, initiating workflows, and processing requests * **Draw on Knowledge**: Reference uploaded business documentation, policies, and product information to deliver accurate, consistent responses * **Escalate with Judgement**: Recognise when human involvement is warranted and transfer the interaction with full context intact * **Operate Without Interruption**: Function across time zones, languages, and channels without shift constraints or performance variation ### Positioning Against Conventional Approaches | | Conventional Automation | UnleashX AI Employees | | ----------------------- | ------------------------------ | ----------------------------------------------- | | **Scope** | One task or step | End to end workflow ownership | | **Interaction Quality** | Scripted, rule based responses | Natural, contextual conversation | | **System Access** | Read only or siloed | Read and write across all connected platforms | | **Decision Making** | Predefined branching logic | Contextual, independent judgement | | **Escalation** | Fixed trigger conditions | Dynamic, intelligent transfer with full context | | **Language Support** | One or two languages | 100+ languages including Indian vernaculars | | **Capacity** | Fixed and rigid | Instantly elastic with no infrastructure change | | **Time to Value** | Weeks of development | Hours to days using no code configuration | *** ## The Platform All UnleashX capabilities are delivered through a single unified environment called the **Workspace**. This is the operational hub from which organisations design, deploy, manage, and measure their entire AI workforce. Everything from building an agent and running a campaign to reviewing interaction quality and adjusting conversation logic sits within the Workspace, accessible without engineering involvement. The Workspace is organised into four functional layers, each serving a distinct phase of the AI workforce lifecycle. ### Build The Build layer is where AI employees are created and configured. Behaviour, communication style, objectives, and decision logic are all defined here through visual, no code tools that any business user can operate. **Voice AI** — Voice AI enables organisations to deploy AI employees on the phone, managing inbound and outbound calls with a level of fluency and contextual awareness that mirrors a well trained human representative. These agents conduct full conversations, act on what customers communicate, retrieve live information from connected systems, and complete tasks within the same call. * Selection from 40+ voice profiles across 12+ languages * No code visual flow builder for designing conversation logic and decision trees * Knowledge Engine for grounding responses in proprietary business content * Intelligent rescheduling for interactions where the customer is unavailable * Automated Do Not Disturb compliance across all outbound activity **Chatbots** — Chatbots extend the AI workforce into text based channels including web interfaces, WhatsApp, and messaging platforms. They apply the same contextual reasoning as voice agents to qualify prospects, resolve queries, capture structured information, and transition seamlessly to a human representative when warranted. **Agents** — Agents are role specific AI employees configured for a defined business function. Each carries a clear mandate, access to the tools and systems relevant to that function, and governance logic defining how it should behave across scenarios. Within the Workspace, organisations can access pre built agents from the **Agent Hub**, ready for common functions across sales, support, and talent acquisition, or construct fully custom agents through the **Agent Studio**. **Workflows** — Workflows represent the full expression of end to end AI execution. They connect agents, communication channels, and integrated platforms into a single automated process that advances through each step independently — making decisions, sending communications, updating records, and managing outcomes without human coordination at any stage. A single workflow can orchestrate all of the following without a human trigger: * An outbound call that qualifies a customer based on defined criteria * An immediate CRM update reflecting the outcome of that conversation * A follow up message sent through the customer's preferred channel * A payment link issued within the same interaction thread * A notification to the relevant team member with a complete interaction summary ### Launch The Launch layer deploys AI employees at scale, orchestrating structured outreach, capturing information, and engaging customers across every channel the organisation operates. **Campaigns** — Campaigns enable organisations to run structured, large scale engagement programmes driven entirely by AI employees. Each campaign defines the audience, timing, channel, and response logic for every outcome. Renewal programmes, acquisition sequences, payment recovery drives, and reactivation efforts all execute automatically. **Forms** — Forms allow AI employees to capture structured data from customers within a live interaction, including contact details, support context, verification inputs, or survey responses. Information is synchronised automatically to connected systems. **Apps** — The Workspace supports the creation of lightweight, AI powered customer facing applications that extend the platform into self service experiences. **Documents** — Document generation within the Workspace enables AI employees to produce and deliver structured outputs — including proposals, onboarding materials, and customer communications — as part of an orchestrated workflow. ### Analytics Every interaction an AI employee conducts generates structured data. The Analytics layer makes that data actionable, surfacing insight that informs continuous improvement without requiring manual review or reporting effort. **Evaluations** — Evaluations score every agent interaction automatically against quality and compliance benchmarks established by the organisation: * Interaction quality and consistency scores across agents and campaigns * Compliance adherence in every customer conversation * Escalation frequency and the conditions driving it * Conversation patterns indicating where agent logic should be refined **Insights** — Insights provides a live and historical view of AI workforce performance, segmented by agent, campaign, or time period: * Volume of interactions managed and resolution rates achieved * Conversion performance across campaigns and channels * Drop off points within conversation flows requiring attention * Trend data supporting informed decisions about workforce deployment ### Workspace Productivity Tools **Ask Leasha** — An AI assistant embedded within the Workspace. It supports teams in configuring agents, interpreting analytical outputs, troubleshooting conversation logic, and navigating platform capabilities directly from the operational dashboard. **Templates** — A library of pre built templates covering the most frequent deployment patterns across industries including sales engagement, customer support, policy renewals, revenue recovery, and talent acquisition. Each template includes pre configured conversation logic, escalation handling, and integration hooks. *** ## Platform Capabilities ### Contextual, Human Grade Communication UnleashX AI employees sustain conversations that are indistinguishable from those conducted by a skilled human representative. They interpret the intent behind what a customer says rather than pattern matching against keywords, handle interruptions without losing conversational coherence, and modulate tone appropriately as the interaction evolves. ### Multilingual and Multichannel by Design AI employees operate natively across voice, chat, WhatsApp, and email, and support over 100 languages including more than 12 Indian vernaculars such as Hindi, Tamil, and Bangla. Language identification is automatic — agents detect and adapt to the language a customer uses, including switching mid conversation, without any configuration intervention. ### Connected to Your Systems AI employees integrate with over 200 enterprise platforms. Within a single conversation, an agent can: * Retrieve live account, order, or policy information * Update CRM records to reflect the outcome of the interaction * Book appointments and issue calendar confirmations * Initiate payments and track transaction status * Create support cases or trigger downstream process workflows Integration coverage spans: Salesforce, HubSpot, Apollo, Freshworks, Odoo, WhatsApp, Slack, Intercom, Zoom, Google Meet, Asana, ClickUp, Trello, Jira, Monday.com, Notion, Zapier, Meta, Clay, SendGrid, Gmail, Google Docs, Google Calendar, Excel, Airtable, and any proprietary system accessible via REST API or webhook. ### Governed Escalation to Human Teams When an AI employee determines that escalation is appropriate — whether due to complexity, customer sentiment, or an explicit request — the interaction is transferred to the right person with the complete conversation record attached. The receiving representative is immediately informed and positioned to continue rather than restart. ### Regulatory Compliance and Data Governance * SOC2 Type II certification governing data security, availability, and processing integrity * GDPR compliance across all data handling and storage practices * IRDAI alignment for insurance sector deployments * Automatic Do Not Disturb enforcement across all outbound engagement * Comprehensive audit trail with every interaction logged, timestamped, and retrievable * PII protection ensuring sensitive customer data is not retained in transcripts or call records ### Agent Studio The Agent Studio within the Workspace provides a complete environment for designing, testing, and refining AI employees without engineering dependency. * **Natural Language Prompting**: Define agent objectives, tone, and behavioural constraints in plain language * **Knowledge Engine**: Ingest proprietary documentation, product information, and policy content * **Visual Flow Builder**: Map conversation logic, decision branches, escalation paths, and system integrations * **Agent Test Mode**: Validate agent behaviour across scenarios before any customer interaction takes place * **Activities Log**: Access a structured record of every interaction with outcomes, dispositions, and timestamps *** ## Strategic Value for the Business ### Accelerating Revenue Performance AI employees eliminate the delays and inconsistencies that cause revenue to leak from existing pipelines. Leads are engaged at the moment of intent. Follow ups occur on schedule without human dependency. Renewal conversations happen before policies lapse. Recovery outreach reaches customers before opportunities are permanently lost. ### Improving Operational Efficiency A single AI employee manages the workload of multiple human agents simultaneously, across channels, without variation in quality or output. Organisations absorb significant growth in customer interaction volume without a corresponding increase in operational cost. ### Delivering Consistent Customer Experience UnleashX AI employees deliver a uniform standard of interaction at every touchpoint — the same accuracy, the same tone, the same process adherence. This consistency builds trust across high frequency interactions and ensures that every customer receives the same level of engagement regardless of when or how they connect. ### Operational Resilience at Scale Demand surges no longer require advance planning around headcount or capacity. UnleashX scales to the volume of demand instantly, with no change to infrastructure or operations. ### Linguistic and Geographic Reach With native support for over 100 languages including major Indian regional languages, and the ability to operate continuously across time zones, UnleashX enables organisations to engage customers in their preferred language at any hour without incremental staffing. ### Rapid Time to Value Pre-built templates, no code configuration tools, and embedded AI assistance through Ask Leasha enable organisations to move from identifying a deployment opportunity to running a live AI employee in a matter of hours rather than weeks. *** ## Getting Started ### Step 1: Define the Role Identify the business function the AI employee will own and the outcomes it is accountable for. Connect the relevant channel, select the voice profile, language, and communication style that reflects the organisation's brand, and establish the primary mandate for each interaction. ### Step 2: Build the Intelligence Through the Agent Studio in the Workspace, define how the agent should think, communicate, and respond across the scenarios it will encounter. Upload the knowledge base — covering product documentation, FAQs, pricing guides, and relevant policies — to ground agent responses in accurate, authoritative information. ### Step 3: Connect the Systems Integrate the platforms the AI employee needs to act effectively, whether a CRM, service desk, scheduling system, payment processor, or internal data source. ### Step 4: Validate, Deploy, and Optimise Use Agent Test mode within the Workspace to verify behaviour across a range of scenarios before any customer interaction takes place. Once live, the Analytics layer provides immediate visibility into performance. Evaluations score interactions continuously and Insights surfaces patterns that inform refinement. **Enterprise Deployment** For enterprise programmes, UnleashX provides a dedicated onboarding team that works alongside the organisation through system integration, agent configuration, and initial deployment. *** ## Frequently Asked Questions **How is UnleashX different from a voice bot or chatbot?** UnleashX deploys AI employees that own an entire business function rather than single task tools that handle one interaction and stop. An AI employee qualifies a lead, updates the CRM, sends a follow up, and books a meeting within a single uninterrupted workflow. End to end ownership of the process is what distinguishes it from conventional automation. **Is technical expertise required to deploy and manage agents?** No. The Agent Studio and all Workspace tools are no code environments, and the majority of use cases can be configured and launched using pre built templates without engineering involvement. **How configurable are the AI employees?** Fully configurable. Every dimension of an agent — including its persona, conversation logic, knowledge base, system integrations, success criteria, and escalation conditions — can be defined to match the specific requirements of the organisation. **Which languages are supported?** Over 100 languages including 12+ Indian vernaculars such as Hindi, Tamil, and Bangla. Language identification is automatic. Agents detect and respond in the customer's language, including mid conversation transitions, without any configuration change. **What happens when an AI employee encounters a situation beyond its scope?** Escalation is handled intelligently. When the agent identifies complexity, detects customer frustration, or receives a direct request for human assistance, it transfers the interaction to the appropriate person with the full conversation record attached. **How does the platform handle high concurrent volumes?** UnleashX operates without a fixed capacity ceiling. AI employees handle a large number of simultaneous interactions across voice and chat. Organisations can run high volume campaigns or manage peak demand periods without operational adjustment. **How is AI employee performance monitored?** The Analytics layer within the Workspace — comprising Evaluations and Insights — scores every interaction automatically against quality benchmarks and provides continuous visibility into performance metrics. There is no requirement for manual call sampling or periodic reporting. **How does the platform address regulatory compliance?** Compliance is embedded at the infrastructure level. Do Not Disturb enforcement, interaction logging, PII protection, and alignment with GDPR and IRDAI standards are all managed by the platform. Regulatory adherence does not depend on human process discipline. # Integrate Plivo with UnleashX for Smarter Voice Automation Source: https://docs.unleashx.ai/faqs/plivo-integration Connect Plivo with UnleashX to power inbound and outbound voice automation with your own numbers. # Integrate Plivo with UnleashX for Smarter Voice Automation Enhance your voice workflows by connecting Plivo with UnleashX. Seamlessly manage inbound and outbound calls while maintaining full control over your telephony setup. Follow a simple setup process to link your Plivo account and unlock highly customizable calling experiences. *** ## What does Plivo integration mean in UnleashX? Plivo is a globally trusted cloud communications platform, fully supported within UnleashX. By integrating Plivo, you can: * Initiate outbound calls using intelligent AI agents * Handle inbound calls with automated, real-time responses * Use your own Plivo account for complete ownership of numbers and infrastructure This integration gives you flexibility, scalability, and control — without being locked into a single provider. *** ## Getting Started with Plivo in UnleashX **Make outbound calls** Deploy UnleashX agents to place calls using your Plivo numbers. **Handle incoming calls** Receive calls on your Plivo numbers and let UnleashX agents respond instantly. **Connect your Plivo account** Easily link your existing Plivo account to start managing calls through UnleashX. *** ## Why Use Plivo with UnleashX? **Global Reach** Connect with users across 100+ countries effortlessly. **High Reliability** Benefit from industry-leading uptime and superior call quality. **Full Flexibility** Continue using your existing Plivo setup without disruption. **Advanced Capabilities** Leverage Plivo's rich feature set alongside UnleashX's AI-driven automation. *** ## Securely Connect Your Plivo Account to UnleashX Linking your Plivo account with UnleashX is quick and secure. Once connected, you can import your phone numbers and assign them to AI agents for both inbound and outbound calling. ### Step-by-Step Setup Sign in to your UnleashX account. UnleashX dashboard home From the sidebar, open the **Voice AI** section. Voice AI section in UnleashX Go to the **Phone Numbers** tab from the top navigation bar. Phone Numbers tab Click on **Add Number** and choose **Import Number**. Add Number dropdown with Import Number option Pick **Plivo** from the available options and click **Continue**. Select Plivo as telephony provider Enter your **Auth ID** and **Auth Token**, then click **Verify & Proceed**. Select the phone number you want to import and click **Import**. Go to any agent, open the **Edit Agent** section, and select the imported number. Your agent is now ready to handle calls using that number. # Integrate Twilio with UnleashX for Smarter Voice Automation Source: https://docs.unleashx.ai/faqs/twilio-integration Connect Twilio with UnleashX to power inbound and outbound voice automation with your own numbers. # Integrate Twilio with UnleashX for Smarter Voice Automation Enhance your voice workflows by connecting Twilio with UnleashX. Seamlessly manage inbound and outbound calls while maintaining full control over your telephony setup. Follow a simple setup process to link your Twilio account and unlock highly customizable calling experiences. *** ## What does Twilio integration mean in UnleashX? Twilio is a globally trusted cloud communications platform, fully supported within UnleashX. By integrating Twilio, you can: * Initiate outbound calls using intelligent AI agents * Handle inbound calls with automated, real-time responses * Use your own Twilio account for complete ownership of numbers and infrastructure This integration gives you flexibility, scalability, and control — without being locked into a single provider. *** ## Getting Started with Twilio in UnleashX **Make outbound calls** Deploy UnleashX agents to place calls using your Twilio numbers. **Handle incoming calls** Receive calls on your Twilio numbers and let UnleashX agents respond instantly. **Connect your Twilio account** Easily link your existing Twilio account to start managing calls through UnleashX. *** ## Why Use Twilio with UnleashX? **Global Reach** Connect with users across 100+ countries effortlessly. **High Reliability** Benefit from industry-leading uptime and superior call quality. **Full Flexibility** Continue using your existing Twilio setup without disruption. **Advanced Capabilities** Leverage Twilio's rich feature set alongside UnleashX's AI-driven automation. *** ## Securely Connect Your Twilio Account to UnleashX Linking your Twilio account with UnleashX is quick and secure. Once connected, you can import your phone numbers and assign them to AI agents for both inbound and outbound calling. ### Step-by-Step Setup Sign in to your UnleashX account. UnleashX dashboard home From the sidebar, open the **Voice AI** section. Voice AI section in UnleashX Go to the **Phone Numbers** tab from the top navigation bar. Phone Numbers tab Click on **Add Number** and choose **Import Number**. Add Number dropdown with Import Number option Pick **Twilio** from the available options and click **Continue**. Select Twilio as telephony provider Enter your **Account SID** and **Auth Token**, then click **Verify & Proceed**. Enter Twilio Account SID and Auth Token Select the phone number you want to import and click **Import**. Select numbers to import from Twilio Go to any agent, open the **Edit Agent** section, and select the imported number. Your agent is now ready to handle calls using that number. Assign imported Twilio number to an agent # Voice Agents Source: https://docs.unleashx.ai/faqs/voice-agents A complete guide to building, configuring, and operating AI voice agents on UnleashX. ## 1. Introduction ### 1.1 What is an UnleashX Voice Agent? Voice Agent talks to your customers on the phone, just like a human agent would. It listens, understands intent, responds naturally, and can take real actions during the call: looking up account details in your CRM, scheduling appointments, capturing structured information, sending emails or SMS, and transferring to a human when the situation calls for it. Voice agents on UnleashX are designed to handle the high-volume, repetitive calls that take up most of your team's time, freeing your human agents to focus on the conversations where empathy and judgment really matter. ### 1.2 Who Is This For? This documentation is written for product managers, contact center leaders, operations teams, and anyone responsible for designing, deploying, or maintaining voice agents on UnleashX. Some sections (Tools, API triggers) reference technical concepts, but no prior coding experience is required to build a working agent. ### 1.3 What You Can Do With UnleashX Voice Agents * **Outbound Calling at Scale**: Run lead outreach, renewal reminders, payment follow-ups, and customer surveys across thousands of contacts without growing your team. Use UnleashX Campaigns to handle batch dialing, pacing, and retries. * **Inbound Support and Self-Service**: Let customers call in for FAQs, order status, account help, and appointment booking, 24 hours a day, in any language you support. Inbound agents are always on, so customer queries get resolved 24\*7. * **Workflow-Triggered Calls**: Automatically reach customers when something important happens: a new lead, a missed payment, a delivery delay, an abandoned cart. UnleashX Workflows let you drop the agent into any event-driven flow. * **Conversation Intelligence**: Every call is automatically transcribed, summarized, scored for sentiment, and tagged with dispositions and structured outputs that flow straight into your CRM, data warehouse, or analytics tool. **Key Idea** A voice agent is not a script reader. It's a conversational AI that understands context, handles unexpected questions, and adapts in real time. The configuration steps in this guide are how you give it the right knowledge, voice, tools, and guardrails to do its job well on UnleashX. *** ## 2. Core Concepts ### 2.1 The Anatomy of a Voice Agent Every voice agent on the platform is made up of six core components. Understanding what each one does will help you make better configuration decisions later. * **The Brain (Prompt + LLM)**: The instructions you write are combined with a large language model that decides what the agent says next. * **The Voice (TTS)**: The text-to-speech engine that turns the agent's responses into spoken audio. * **The Ears (Transcriber / STT)**: The speech-to-text engine that converts what the caller says into text the agent can understand. * **The Knowledge Base**: The documents, FAQs, and policies the agent draws on to answer factual questions accurately. * **The Tools**: External actions the agent can take during a call - CRM lookup, booking a meeting, sending an email, triggering a webhook. * **The Guardrails**: The trust and safety controls that keep the agent compliant, accurate, and respectful with DNC detection, restricted topics, PII redaction, and more. ### 2.2 Inbound vs Outbound Agents Voice agents come in two flavors based on who initiates the call: | Type | Description | | ------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **Inbound** | The customer dials in. The agent waits for the call, picks it up, and handles the conversation. Best for support, FAQs, account help, order status, appointment booking, and self-service workflows. | | **Outbound** | The agent makes the call. You feed it a contact list (via Campaign) or trigger it from a workflow event. Best for lead outreach, reminders, renewals, surveys, collections, and re-engagement. | ### 2.3 Single-Prompt vs Multi-Prompt Conversation Flow One of the most important decisions you'll make when building an agent on UnleashX is how to structure its conversation logic. The platform supports two approaches, and the right choice depends on the complexity of your use case. #### Single-Prompt Agent You write one comprehensive prompt that defines everything: the agent's role, goals, tone, conversation style, fallback handling, and instructions for every situation. The agent uses that prompt for the entire call and decides what to say next based on context. **Best for**: Short, focused calls where the agent has one clear job and the conversation doesn't really branch. Quick to ship, easy to iterate. Real examples on UnleashX: * Order status and delivery tracking calls * Appointment reminders and confirmations * Quick post-purchase feedback surveys * FAQ bot answering questions from a product knowledge base * Outbound notifications (policy renewals, EMI reminders) **Why pick this**: Fastest path from idea to live agent. Just one prompt to write, debug, and tune. Lower latency and lower cost per call. **Single-Prompt Structure** A well-written single prompt on UnleashX typically follows a six-section structure. Use this as a template when writing your own: ``` ## Identity & Persona You are Riya, a friendly customer service representative calling on behalf of Acme Insurance. You are warm, professional, and respectful of the customer's time. ## Goal Remind the customer that their motor insurance policy is due for renewal in 7 days, confirm whether they want to renew, and capture their preferred renewal date. ## Conversation Flow 1. Greet the customer by name and introduce yourself 2. Confirm you are speaking to {customer_name} 3. Mention the policy due date and amount 4. Ask if they want to renew 5. If yes, capture their preferred renewal date 6. Confirm next steps and end the call politely ## Tone & Style - Speak in short, natural sentences - Use the customer's first name occasionally - Never sound pushy or robotic - Match the customer's energy ## Handling Edge Cases - If the customer is busy, offer to call back - If they decline, ask the reason briefly and thank them - If they have questions about coverage, direct them to the knowledge base - If they ask for a human, transfer to support ## Closing Always thank the customer for their time and confirm the next action before ending the call. ``` Each section serves a purpose: Identity tells the agent who it is, Goal tells it why the call is happening, Conversation Flow gives the high-level structure, Tone shapes how it talks, Edge Cases handle the unexpected, and Closing ensures consistent endings. #### Multi-Prompt Flow You break the call into states — for example, 'greet', 'identify caller', 'collect details', 'resolve issue', 'confirm and close' — and write a focused prompt for each one. The agent moves between states as the conversation unfolds, carrying information forward through dynamic variables. **Best for**: Multi-step calls with branches, conditional logic, or distinct phases where the agent needs to behave differently depending on what the customer says. Real examples on UnleashX: * AI receptionist that books, reschedules, or cancels appointments * IT helpdesk that identifies the employee and issue, then walks through fixes * Insurance claim intake with verification, documentation, and assessment steps * Loan eligibility check with KYC, income verification, and document collection * Inbound support that triages, troubleshoots, and escalates to a human * Hospital appointment booking with department routing and slot confirmation **Why pick this**: The agent stays on track. No drifting off-topic, no skipped steps, no repeating questions it already asked. Easier to debug and maintain at scale. **Multi-Prompt Structure** A multi-prompt agent on UnleashX is built as a tree of states (also called nodes). Each state has its own focused prompt, a clear goal, and transition rules that decide which state comes next based on what the customer says. Here's how an AI receptionist for a dental clinic might be structured: ``` STATE 1: Greeting & Intent Prompt: "Greet the caller, introduce yourself as the Bright Smile Dental assistant, and ask how you can help. Identify whether they want to book, reschedule, cancel, or ask a question." Transitions: → Booking flow (if intent = book) → Reschedule flow (if intent = reschedule) → Cancel flow (if intent = cancel) → FAQ flow (if intent = question) STATE 2A: Booking Flow Prompt: "Ask for the patient's full name, preferred date, and reason for visit. Check available slots in the calendar tool. Offer the closest 3 slots." Transitions: → Confirmation (when slot selected) → Reschedule flow (if slots don't work) STATE 2B: Reschedule Flow Prompt: "Ask for the patient's name and current appointment date. Look up the booking. Confirm the new preferred slot." Transitions: → Confirmation STATE 2C: Cancel Flow Prompt: "Confirm the patient's name and appointment date. Ask for the cancellation reason. Update the calendar." Transitions: → Closing STATE 2D: FAQ Flow Prompt: "Answer questions using the clinic knowledge base. If the question is outside scope, offer to transfer to a human." Transitions: → Closing → Transfer to human STATE 3: Confirmation Prompt: "Repeat back the appointment details, confirm the patient's contact number, and let them know they'll receive an SMS confirmation." Transitions: → Closing STATE 4: Closing Prompt: "Thank the patient warmly, remind them of any next steps, and end the call." ``` Notice how each state has a single, focused job. The Booking Flow only worries about booking - it doesn't need to know how to cancel. This separation is what makes Multi-Prompt agents reliable: each state is small enough to debug and iterate independently. Information captured in earlier states (like patient name and contact number) is automatically passed forward as dynamic variables, so the agent never has to ask the same question twice. **Common Multi-Prompt Patterns** Most Multi-Prompt agents on UnleashX follow one of these proven patterns: * **Linear Flow** — States happen in a fixed order: Greet → Verify → Collect → Confirm → Close. Used for forms, surveys, and intake calls where the sequence doesn't change. * **Branching Tree** — An initial state routes to one of several specialized flows based on intent. Used for receptionist agents, support triage, and any call where the customer's first answer determines what happens next. * **Loop with Exit** — The agent loops through a state (e.g., 'answer questions') until a condition is met (customer says they're done). Used for open-ended Q\&A and consultation calls. * **Verification Gate** — Mandatory verification states must pass before the agent moves into sensitive flows. Used for KYC, account access, and high-risk actions. **When to switch from Single to Multi-Prompt** Start with Single-Prompt — it's the fastest way to get something live on UnleashX. Move to Multi-Prompt the moment any of these signals appear: your prompt grows past \~1000 words, the agent uses more than 5 tools, the agent keeps skipping steps or repeating itself, or the conversation naturally splits into distinct phases that need different behavior. *** ## 3. Building Your First Agent Building a voice agent on the platform is a six-step process. You can move forward and backward freely between steps — nothing is final until you click Publish. ### Step 1: Agent Setup & Brain The first step is where your agent gets its identity and its instructions. Everything you configure here shapes how the agent thinks and behaves on every call. **About** Give your agent a name, a short description, and a category. This is how you'll find it later in lists, and how teammates understand what it does at a glance. A good name is specific to the use case, like 'Q2 Outreach Agent' or 'Insurance Renewal Bot' — not just 'Agent 1'. **Language** Pick the primary language your customers speak. This decision is important because it determines which transcribers and voices you can choose in Step 2 — not all engines support every language with the same quality. If you serve multiple languages, you'll typically build a separate agent for each one and route calls based on the customer's preferred language. **Purpose** Tell the platform what the agent is for: Sales, Support, Reminders, Surveys, Collections, Onboarding, and so on. We use this to suggest the right prompt templates, recommended dispositions, and best practices specific to that use case. You can always change it later, but starting with the right purpose saves time in later steps. **Inbound or Outbound** Choose whether this agent receives calls (inbound) or makes them (outbound). This isn't just a label, it changes the configuration options that show up in later steps and the triggers available in Step 6. **Prompt & Templates** This is the most important configuration in the entire setup. The prompt is the agent's brain, it tells the agent what to say, how to say it, and what to do in tricky situations. Don't start from a blank page. The platform ships with industry-specific templates for common use cases like outbound sales, insurance renewals, e-commerce support, hospitality bookings, and automotive service reminders. Pick the closest template, then customize the parts that matter for your business. This is also where you choose between Single-Prompt and Multi-Prompt Flow. Refer back to Section 2.3 if you're not sure which to use. **Best Practice: Writing Effective Prompts** Start your prompt with the agent's identity and tone (e.g., 'You are Riya, a friendly customer service representative for Acme Corp'). Then specify the goal of the call, the conversation flow, and what to do when something unexpected happens. Avoid vague instructions like 'be helpful' instead, give specific examples of what the agent should and shouldn't say. **Input Variables** If you want the agent to call each customer by name, reference their order ID, or personalize the conversation in any way, you'll need input variables. Define placeholders like `{customer_name}`, `{order_id}`, or `{appointment_date}` once in your prompt, then pass real values at call time. The agent fills them in automatically i.e. same agent, personalized for every call. **Knowledge Base** Drop in your product docs, FAQs, policies, pricing sheets, or any reference material the agent might need. The platform supports two ways to add knowledge: * **Document Upload** — Upload files directly: PDF, DOCX, TXT, or Markdown. Best for static content like policy documents, product catalogs, and internal SOPs. * **URL Extraction** — Paste a website URL and we'll automatically extract and index the content. Best for documentation that's already published online and changes regularly. With a knowledge base attached, the agent answers factual questions using grounded information instead of guessing or making things up. This is one of the most effective ways to keep the agent accurate and trustworthy. **Tools** Tools let the agent do things during the call, not just talk. The platform supports several tool types out of the box: * **CRM Lookup** — Fetch customer details, account history, or order information from your CRM in real time. * **Send Email** — Trigger a transactional email mid-call (confirmation, follow-up, document). * **Calendar Booking** — Check availability and book meetings directly from the call into your team's calendar. * **Send SMS** — Send a text message to the caller during or after the conversation. * **Custom Webhook** — Trigger any HTTP endpoint with call data to integrate with your own systems. * **API Action** — Call any REST API as an action — useful for custom integrations and lookups. Start with the minimum tools you actually need. Every additional tool adds complexity to the prompt and increases the chance of the agent calling the wrong tool at the wrong time. Add tools incrementally as you validate behavior. ### Step 2: Voice & Transcription Step 2 is about how the agent sounds and how it hears. These three settings have a direct impact on the customer experience, pick them carefully. **Transcriber (Speech-to-Text)** This is how the agent hears the caller. The transcriber converts spoken audio into text in real time, which is then passed to the LLM. Accuracy here is non-negotiable: if the agent mishears the caller, the entire response will be wrong. Pick a transcriber optimized for your language and the typical accents of your customers. The platform supports multiple engines, and the available options will be filtered based on the language you chose in Step 1. **Voice (Text-to-Speech)** How your agent sounds. Pick a voice that matches your brand and use case: * Warm and friendly for customer support and care * Confident and crisp for outbound sales and lead qualification * Calm and clear for healthcare, insurance, and financial services * Professional and neutral for B2B and enterprise calls Always preview voices before deciding. The platform lets you play a sample greeting in each voice so you can hear how it actually sounds with your script. **LLM Model** The brain behind the agent. Different models offer different trade-offs: * **Faster Models** — Lower latency means more natural, conversational pacing. Better for high-volume use cases where call duration matters and conversations are relatively simple. * **Smarter Models** — Better at handling complex questions, long conversations, multi-step reasoning, and edge cases. Better for sales, support, and any use case where conversation quality matters more than raw speed. Most teams start with a balanced model and switch only if they see specific issues like too much latency or too many comprehension failures. ### Step 3: Phone Number Your agent needs a phone number either to receive calls (inbound) or to make calls (outbound). The platform gives you three options. **Buy a Number** Need a number fast? Buy one directly from the platform. Pick a country, area code, and number type (local, toll-free, or mobile) and you're ready to go in minutes. This is the simplest option for new deployments. **Bring Your Own Number** Already have phone numbers with Twilio, Plivo, Exotel, or any SIP provider? Connect them via SIP trunk and keep the numbers your customers already know. This is the right choice for established businesses with existing telephony relationships. **Number Assignment** Once you have a number, assign it to the agent: * For inbound agents, this is the number customers will dial to reach the agent. * For outbound agents, this is the caller ID customers will see when the agent calls them. You can assign multiple numbers to the same agent (useful for regional caller IDs in outbound campaigns), or one number to handle multiple agents based on routing rules. **Compliance Note** Different regions have different rules about caller ID, number type, and disclosure requirements. If you're calling customers across countries, work with your compliance team to ensure the right number type and consent handling for each region. ### Step 4: Outputs & Success Metrics This step is where you define what the agent should capture from each call and how to measure success. It's also one of the most overlooked steps — but it's where the long-term value comes from. **Structured Outputs** Tell the agent exactly what information to extract from every call. Each output is defined as a key-value pair with a type: | Key | Type | What it captures | | -------------------- | ------- | ---------------------------------------------------------- | | `customer_name` | string | The customer's name as stated during the call | | `customer_email` | email | The email address the customer wants to be contacted at | | `appointment_date` | string | The date and time of any booked or rescheduled appointment | | `demo_scheduled` | boolean | Whether the customer agreed to schedule a product demo | | `satisfaction_score` | number | The customer satisfaction rating captured at end of call | Once defined, the agent extracts these values automatically from every call and pushes them to your CRM, analytics tool, or data warehouse. This is how voice agents become a structured data source instead of just a black box of audio recordings. **Dispositions** Dispositions are the labels the agent assigns to each call's outcome. Think of them like the tags a human agent would put on a CRM record after wrapping up a call: Interested, Not Interested, Callback Requested, Demo Booked, Issue Resolved, Voicemail Left, Wrong Number. Define the dispositions that matter to your business. The agent will automatically tag every call with one based on what happened during the conversation. Dispositions then power your reporting, your campaign retry logic, and your overall agent performance metrics. **Disposition Templates** Don't reinvent the wheel. UnleashX ships with disposition templates for common industries. Pick the closest one and customize the labels. Each template comes with recommended success markers. * **Renewal Completed** — Customer agreed and the renewal was processed end-to-end on the call. (Success) * **Renewal Promised** — Customer agreed to renew but wants to pay later or via a different channel. (Success) * **Callback Requested** — Customer is busy but asked to be called back at a specific time. * **Not Interested** — Customer explicitly declined the renewal. * **Already Renewed** — Customer has already completed the renewal through another channel. * **Switched Provider** — Customer has moved to a competitor. * **Documents Pending** — Customer wants to renew but needs to submit additional documents first. * **Wrong Number** — The number does not belong to the intended customer. * **Do Not Call** — Customer requested no further calls (DNC). * **Unreachable** — Customer did not answer after maximum retry attempts. * **Issue Resolved** — Customer's question was answered or problem fixed on the call. (Success) * **Order Tracked** — Customer received the order status they were calling about. (Success) * **Refund Initiated** — A refund was processed during the call. (Success) * **Ticket Created** — Issue is too complex for self-service; ticket created and assigned. * **Escalated to Human** — Call was transferred to a human agent. * **Information Requested** — Customer asked for product or policy information. * **Complaint Logged** — Customer raised a complaint that needs offline follow-up. * **Repeat Caller** — Customer called about an existing open ticket. * **Appointment Booked** — New appointment confirmed in the calendar. (Success) * **Appointment Rescheduled** — Existing appointment moved to a new date or time. (Success) * **Appointment Cancelled** — Existing appointment was cancelled at customer's request. * **Slot Unavailable** — No suitable slots were available for the customer's preference. * **Wrong Department** — Customer needs a specialty not handled by this agent. * **Emergency Routed** — Urgent medical query was transferred immediately to a human. * **Follow-up Reminder** — Customer was reminded of an upcoming visit. * **Qualified Lead** — Customer met all eligibility criteria and showed interest. (Success) * **Application Started** — Customer began the loan application during the call. (Success) * **Documents Pending** — Customer is interested but needs to submit KYC documents. * **Not Eligible** — Customer did not meet basic eligibility criteria. * **Not Interested** — Customer is not currently looking for a loan. * **Income Verification Failed** — Customer's stated income did not match required thresholds. * **Callback Requested** — Customer asked to be reached at another time. These are starting points. Customize the labels, add your own, and remove what doesn't apply to your business. The goal is to capture every meaningful outcome of a call so you can report on agent performance accurately. **Agent Success Benchmark** Out of all the dispositions you define, which ones actually count as a win? Mark the successful ones for example, Renewal Completed, Issue Resolved, Appointment Booked, Qualified Lead and UnleashX will calculate your Agent Success Benchmark as the percentage of calls that hit one of these outcomes. This is the single most important number on your dashboard. It's not 'how many calls did the agent make' or 'how long did they last', it's 'how many calls actually accomplished what we wanted.' **Benchmark Against Your Human Team** On UnleashX, you can also benchmark the agent's success rate against your human team's success rate on the same use case. This is how leaders make confident decisions about where to deploy AI agents — you can see where the agent is outperforming humans, where the two are evenly matched, and where the agent still needs work before scaling up. ### Step 5: Configurations Step 5 is where you fine-tune the operational settings that affect how the agent behaves on every call. Most settings have sensible defaults and you only need to change them if the default isn't working for your use case. **Scheduling & Timing** Decide when your agent is allowed to handle calls. Set the timezone, working hours window, and start time. The configuration depends on whether your agent is inbound or outbound: * **Outbound Agents** — Stick to permitted calling hours typically 9 AM to 9 PM in the customer's local time. Calling outside these hours is illegal in many regions and damages your brand. UnleashX will only place calls during the window you define. * **Inbound Agents** — Set this to 24 hours so customers can get help any time of day, including nights, weekends, and holidays. This is one of the biggest wins of voice AI so your customers don't have to wait for business hours to get their queries resolved. **Recommended Default** Outbound: 9:00 AM start, 12-hour window in customer's local timezone. Inbound: 24 hours, always-on coverage. Adjust based on your specific use case and local regulations. **Background Denoising** Strips out background noise like traffic, chatter, music, machinery so the agent hears the caller clearly. This is especially valuable when calling people who are out and about, in cars, or in busy environments. The intensity is adjustable from light (0.1) to aggressive (1.0). Lower values preserve more natural sound; higher values prioritize clarity at the cost of some audio quality. **Recommended Default** 0.5 works well for most call types. Increase if you're seeing comprehension issues from noisy backgrounds; decrease if calls sound unnaturally compressed. **Voicemail Detection** Stops the agent from talking to a voicemail or answering machine. The moment the platform detects an answering machine, the call is either ended (default) or a pre-recorded voicemail message is left, depending on your setting. **Recommended Default** ON for outbound campaigns. OFF for inbound (since voicemail isn't relevant). Voicemail detection saves significant cost by preventing wasted minutes on machines. **Voice Detection Confidence** How confident the system must be that audio is actually human speech before the agent reacts. Higher values reduce false interruptions from background noise but make the agent slower to respond. Lower values are more responsive but may cause the agent to react to noises that aren't actually speech. **Recommended Default** 0.9 keeps the agent stable in noisy environments while still being responsive. Lower to 0.7 if the agent is missing real speech; raise to 0.95 if it's reacting to background noise. **Noise Ambience** Optionally adds subtle background ambience (like a soft call center hum) so the agent sounds more like a real person in a real place. This is a small detail, but it makes the conversation feel more natural and reduces the 'uncanny valley' effect that pure-silence AI calls can have. **Agent Interruption Handling** Should the agent stop talking the moment a customer says anything? Probably not as that would include background 'mm-hmm's, 'okay's, and other filler sounds that aren't actually interruptions. The Interruption Handling setting lets you require a minimum number of words before the agent yields the floor. **Recommended Default** 3 words. This filters out filler sounds and brief acknowledgments while still letting the agent stop quickly when the customer genuinely interrupts. Lower for more sensitive interruption handling; higher to make the agent more assertive. **Inactivity Handling** If the customer goes silent for too long, the agent gently checks in ('Are you still there?') instead of immediately hanging up. Useful for letting people think, search for information, or talk to someone else briefly. **Call Follow-Up** When a customer asks to be called back later, the agent automatically schedules and triggers the follow-up call at the requested time. No manual queue management or callback list maintenance required. **Call Transfer (Warm Handoff)** Sometimes the agent needs to hand off to a human for complex issues, escalations, or when the customer explicitly asks for a person. Configure the destination phone number (your call center, a specific team, or a fallback queue) and the agent will transfer the call seamlessly. Currently supported with Twilio and select SIP providers. **Do Not Call (DNC) Detection** If a customer says 'don't call me again,' 'remove me from your list,' 'stop calling,' or anything similar, the agent picks that up immediately and adds them to your DNC list. Critical for compliance with telemarketing regulations (TCPA in the US, TRAI in India, GDPR in Europe) and for protecting your sender reputation. **Memory & Context Recall** Let the agent remember details from previous conversations with the same caller. If a customer called last week about a refund, today's call doesn't start from zero. The agent picks up where the previous conversation left off. This is a game-changer for customer experience in support and account management use cases. ### Step 6: Guardrails Guardrails are the trust and safety controls that keep your agent compliant, accurate, and respectful. Every guardrail in this section is built-in and ready to enable you don't need to write any code. We strongly recommend turning on every guardrail relevant to your use case before going live. **Restricted Topics** Define topics the agent should never discuss — things like competitor pricing, legal advice, medical diagnoses, internal discount policies, or unreleased product information. When these topics come up, the agent gracefully steers the conversation away or escalates to a human. **Profanity & Abuse Filters** Blocks offensive language from the agent's responses (even if the model would generate it) and detects when callers are being abusive. You decide what happens next: de-escalate with calming language, end the call politely, or hand off to a human. This protects both your brand and your team's wellbeing. **Hallucination Prevention** This is one of the most important guardrails for any agent. With hallucination prevention enabled, the agent only answers factual questions using information from your knowledge base. If it doesn't know something, it says so honestly — instead of inventing an answer that could mislead your customer. **Why This Matters** An agent that confidently makes up answers will erode customer trust faster than any other failure mode. Hallucination prevention is the single most effective control for keeping your agent reliable in production. Always enable it. **PII Handling & Redaction** Automatically detects and redacts personally identifiable information — credit card numbers, government IDs (Aadhaar, SSN, passport numbers), passwords, security questions — from transcripts and recordings. The actual conversation still happens normally; the redaction only affects the stored transcript, so your data stays clean and compliant. **Recording Consent** Plays a quick consent disclosure at the start of every call ('This call may be recorded for quality and training purposes') and respects customer opt-outs. Required by law in many jurisdictions (most of Europe, parts of the US, and elsewhere). The disclosure is configurable so you can match your specific legal requirements. **Escalation Rules** Define what triggers an automatic handoff to a human: * Frustrated or angry customer (detected by sentiment analysis) * Repeated misunderstanding (the agent failed to answer the same question twice) * Sensitive topic (complaint, legal issue, urgent medical situation) * Explicit customer request ('I want to speak to a person') * High-value or VIP customer (based on input variables) The agent recognizes when it's out of its depth and gets a human involved before the customer experience degrades. *** ## 4. Testing & Publishing ### 4.1 Why Test Before You Publish A voice agent is a complex system. Even a small change to the prompt, the voice, or a tool configuration can have unexpected effects on the conversation. Always test before you publish, and test again any time you make a meaningful change. ### 4.2 Browser Test Calls The fastest way to test your agent is a browser call. Click 'Start Browser Call' on the Agent Test tab and talk to the agent through your laptop microphone. You'll hear it speak, see the live transcript, and watch which tools it triggers in real time. Browser calls are great for fast iteration cycles, change the prompt, click test, talk to the agent, refine, repeat. Most teams do dozens of browser calls during the design phase before ever going live. ### 4.3 Live Phone Test Calls Once the browser call sounds right, do a live phone test. Click 'Dial via Phone' and the agent will call your number from the assigned caller ID. This gives you a real-world feel for how the call sounds over an actual phone connection including network latency, audio compression, and the speaker on the receiving device. Live phone tests catch issues that browser calls can't: voice quality on a real handset, behavior when there's background noise, how the agent sounds on speakerphone, and how it handles real telephony edge cases like one-sided audio glitches. ### 4.4 Pre-Publish Checklist Before you click Publish and send live traffic to your agent, walk through this checklist: * Run at least 5 browser test calls covering happy paths and edge cases * Run at least 2 live phone tests from different devices and network conditions * Verify that all structured outputs are being captured correctly * Verify that the agent assigns the right disposition for each scenario * Confirm that all guardrails are enabled (DNC, restricted topics, hallucination prevention, recording consent) * Test the call transfer to a human agent if you have escalation enabled * Validate the recording consent message matches your legal requirements *** ## 5. Putting Your Agent to Work Once your agent is published, you have four ways to put it to work. Pick the one that fits your workflow and you can use multiple at the same time for the same agent. ### 5.1 Campaigns (Batch Calling) Got a list of customers to call? Upload it as a campaign and the agent will work through the list automatically. Campaigns are the right choice for any outbound use case where you have a known set of contacts to reach: lead outreach, renewal reminders, payment follow-ups, surveys, win-back outreach, and re-engagement. Campaigns include: * **Smart Pacing** — Controls how many calls happen per minute, so you don't overwhelm your phone provider or violate calling rate limits. * **Retry Logic** — Automatically retries failed calls based on rules you define (number of attempts, gap between attempts, time-of-day restrictions). * **Time-of-Day Rules** — Only places calls during permitted windows in each contact's local timezone. * **Disposition-Based Branching** — Use the disposition from one call to decide whether to retry, schedule a follow-up, or move on. ### 5.2 Workflows Trigger a call when something happens in your business: a new lead signs up, a payment fails, a delivery is delayed, an order is placed, a support ticket is created. Drop the agent into a workflow and it will call automatically, in real time, when the moment is right. This is the right choice for event-driven outreach where the value of the call depends on it happening close to the triggering event. A workflow-triggered renewal reminder one hour after the renewal failed will perform much better than a batch reminder a day later. Workflows can be triggered from: * Webhook events from your own systems * CRM triggers (new lead, status change, opportunity stage) * Form submissions * Scheduled events (renewal date, anniversary) * Custom triggers via API ### 5.3 Inbound Give the agent a phone number and let customers call in. Best for: * Customer support and FAQ handling * Order status and delivery tracking * Account help and self-service * Appointment booking and rescheduling * After-hours coverage when human agents are off duty Inbound agents handle the high-volume, repetitive incoming calls that would otherwise tie up your support team leaving humans to focus on the calls that actually need a person. ### 5.4 API For engineering teams: trigger calls programmatically from your own backend using the platform's REST API. This gives you complete control over when and how calls happen, and lets you build custom integrations that fit exactly how your business works. API triggers are ideal for: * Custom workflows that don't fit the standard workflow builder * Integrations with proprietary internal systems * High-frequency, low-latency event-driven calls * Any use case where you need complete programmatic control *** ## 6. Monitoring & Analytics Once your agent is live, the work isn't over, the work is just starting. Voice agents need ongoing monitoring, tuning, and improvement based on what's actually happening on real calls. This section covers everything available on the Agent Detail page. ### 6.1 The Agent Dashboard The Dashboard is your agent's report card. It shows the key performance indicators that matter most: * **Total Calls** — How many calls the agent has handled in the selected time window. * **Successful Calls** — How many calls hit a success disposition (as defined in Step 4). This is your main KPI. * **Unanswered Calls** — How many outbound calls didn't connect- voicemails, no-answers, busy signals. * **Failed Calls** — How many calls failed due to technical issues, hangups, or errors. * **Average Duration** — How long the average call lasts. Useful for spotting changes in conversation length over time. * **Call Status Distribution** — A bar chart showing how calls ended, connected, failed, unanswered, busy, user-ended, voicemail. * **Disposition Breakdown** — A horizontal bar chart showing the percentage of calls that ended in each disposition category. * **Agent Success Benchmark** — The percentage of calls that hit a success disposition, plus secondary metrics like CSAT, Resolution Rate, Average Handle Time, and First Call Resolution. This is where you compare against your human team's benchmarks. * **Recent Calls** — A live feed of the most recent calls the agent has handled, with one-click View Details to dive into any conversation. ### 6.2 Activity Logs The Activities tab shows every single call your agent has ever handled. Each row shows: * From and to phone numbers (or 'Live Browser Call' for tests) * Call ID for searching and referencing * Date and time * Duration (if connected) * Who ended the call (Agent or User) * Final status (Completed, Failed, No Answer, Busy) * Campaign or workflow that triggered the call * Disposition assigned by the agent You can filter by status, duration, campaign, or date range, and search by phone number or call ID. Click View Details on any row to open the full conversation analytics. ### 6.3 Conversation Analytics (Per-Call Deep Dive) This is where you really understand what happened on a specific call. Open any call from the Activities tab and you'll see a complete breakdown. **Call Information** At the top: phone numbers, status badge, recording player, and the disposition the agent assigned with its description. **Summary** An AI-generated summary of the call in 3-5 sentences. This is the fastest way to understand what happened without listening to the recording or reading the full transcript. Alongside the summary, you'll see Key Outcomes, the most important results extracted from the call. **Analysis** The Analysis section breaks down the call along three dimensions: * **Sentiment** — Overall positive/neutral/negative ratio with a percentage breakdown. Helps you spot calls where the customer was unhappy. * **Call Metrics** — Talk-to-listen ratio, average response time, interruption count, total silence, words per minute. These are the operational KPIs that tell you whether the agent is conversational or robotic. * **Actionable Insights** — AI-generated recommendations on what went well and what could be improved. Each insight is tagged as a Strength or an Improvement opportunity, with an Impact rating (High/Medium/Low) so you know what to focus on first. **Structured Outputs** All the variables the agent extracted from the call, displayed as a clean key-value table with the data type for each field. This is the data that flows into your CRM and analytics systems. **Transcript** The complete conversation, with timestamps for every message and a sentiment indicator for each turn. The visual layout makes it easy to scan the conversation flow and spot any moments where the conversation went off-track. **Use Analytics to Improve Your Agent** The most successful teams review their bottom 10% of calls weekly. Look for patterns: Is the agent failing on specific question types? Is it making the same mistake repeatedly? Use the Actionable Insights to guide prompt updates and keep iterating. *** ## 7. Best Practices ### 7.1 Designing Effective Prompts * **Start with identity** — Open with who the agent is, who it represents, and what its goal is. Be specific — 'You are a customer service representative for Acme Corp, helping customers with order status' beats 'You are a helpful AI'. * **Use examples, not just instructions** — Show the agent what to say with example exchanges. LLMs follow examples more reliably than abstract rules. * **Handle the unhappy path** — Spend at least as much time on what to do when things go wrong (customer is angry, doesn't know the answer, asks something off-topic) as on the happy path. * **Keep it focused** — Resist the urge to make one agent do everything. A focused agent that does one thing well outperforms a generalist agent every time. * **Iterate based on real calls** — Your first prompt won't be perfect. Review real call transcripts and refine the prompt based on what you actually see. ### 7.2 Choosing the Right Voice * **Match the brand** — A premium financial brand needs a different voice than a casual e-commerce brand. Think about what your customers expect to hear. * **Match the use case** — Calm and reassuring for healthcare. Confident and energetic for outbound sales. Warm and patient for elderly customer support. * **Test with real customers** — Run a small pilot before scaling up. The voice that sounds best in your office may not be the one your customers respond to best. ### 7.3 Building Trust with Guardrails * **Always enable hallucination prevention** — There's no use case where you want the agent to make things up. This should be on by default for every agent. * **Always enable DNC detection** — Even if you think it's not relevant, enable it. It's free protection against compliance issues. * **Always disclose recording** — If you're recording calls (and you should be, for quality and analytics), always disclose it. It's the law in many places and builds customer trust everywhere. * **Be ready to escalate** — Configure call transfer to a human agent for any sensitive situation. Customers value the option to speak to a person, even if they rarely use it. ### 7.4 Iterating from Real Data The best voice agents are not built once and forgotten. They're tuned continuously based on what's happening on real calls. Set aside time each week to: * Review the dashboard and look for trends. Is the success rate going up or down? * Listen to a sample of recent calls (especially the failed ones) * Read the Actionable Insights for individual calls * Update your prompt based on patterns you see * Test the changes with browser calls before publishing * Compare metrics before and after changes to validate improvements *** ## 8. Glossary | Term | Definition | | --------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | **Agent** | An AI-powered conversational system configured to handle voice calls for a specific use case. | | **Agent Success Benchmark** | The percentage of calls that result in a disposition you've marked as successful. The primary KPI for measuring agent effectiveness. | | **BYO Number** | Bring Your Own Number: connecting an existing phone number from a third-party telephony provider via SIP. | | **Campaign** | A batch outbound calling job that processes a list of contacts according to defined pacing, retry, and timing rules. | | **Conversation Flow** | Another term for Multi-Prompt Flows: a stage-based conversation structure where the agent moves between focused prompts. | | **Disposition** | A label assigned to each call to indicate its outcome (Interested, Not Interested, Resolved, etc). | | **DNC** | Do Not Call — a customer's request to be excluded from future outbound calls. Detection of DNC intent and respect of DNC lists is required for telemarketing compliance. | | **Guardrails** | Built-in trust and safety controls (DNC detection, hallucination prevention, PII redaction, etc.) that keep the agent compliant and trustworthy. | | **Hallucination** | When an LLM generates information that sounds plausible but is not true. Hallucination prevention forces the agent to only answer from the knowledge base. | | **Input Variable** | A placeholder in the prompt (like `{customer_name}`) that gets filled with a real value at call time, enabling personalization. | | **Knowledge Base** | Documents and reference material attached to the agent so it can answer factual questions with grounded, accurate information. | | **LLM** | Large Language Model: the AI model that powers the agent's reasoning and response generation. | | **Multi-Prompt Flow** | A conversation structure where the agent uses different focused prompts for different stages of the call. | | **PII** | Personally Identifiable Information: sensitive customer data that should be redacted from transcripts and recordings. | | **Prompt** | The instructions you write that define how the agent behaves: its identity, goals, tone, and conversation flow. | | **Single-Prompt** | A conversation structure where the entire agent behavior is defined in one comprehensive prompt. | | **SIP** | Session Initiation Protocol: the standard for connecting third-party phone numbers and PBX systems to the platform. | | **Structured Output** | A defined variable the agent extracts from each call (customer name, email, demo date, etc.). | | **Transcriber** | The speech-to-text engine that converts caller audio into text for the agent to process. Also called STT. | | **TTS** | Text-to-Speech: the engine that converts the agent's text responses into spoken audio. | | **Voicemail Detection** | Automatic detection of an answering machine on the receiving end of an outbound call, allowing the agent to either hang up or leave a message. | | **Webhook** | An HTTP callback the agent can trigger during a call to integrate with your own systems. | | **Workflow** | An event-driven trigger that calls the agent in response to something happening in your business systems (a new lead, a failed payment, etc.). | # Connect Providers Source: https://docs.unleashx.ai/features/connect-providers Connect external ASR, LLM, TTS, and telephony providers to UnleashX. ## Categories * Transcribers (ASR) * Large Language Models (LLMs) * Synthesizers (Voices / TTS) * Telephony (PSTN / SIP / CPaaS) ## Setup 1. Open UnleashX Dashboard → Providers 2. Select a provider and add credentials (keys/tokens) 3. Assign providers to agents or workflows ## Tips * Use provider‑specific strengths per use‑case * Enable fallbacks for reliability * Monitor quality and cost metrics continuously # Introduction Source: https://docs.unleashx.ai/integrations/introduction Example section for showcasing API endpoints If you're not looking to build API reference documentation, you can delete this section by removing the api-reference folder. ## Welcome There are two ways to build API documentation: [OpenAPI](https://mintlify.com/docs/api-playground/openapi/setup) and [MDX components](https://mintlify.com/docs/api-playground/mdx/configuration). For the starter kit, we are using the following OpenAPI specification. View the OpenAPI specification file ## Authentication All API endpoints are authenticated using Bearer tokens and picked up from the specification file. ```json theme={null} "security": [ { "bearerAuth": [] } ] ``` # Large Language Models Source: https://docs.unleashx.ai/integrations/large-language-models Supported LLMs and configuration. # Synthesizers (Voices) Source: https://docs.unleashx.ai/integrations/synthesizers-voices Supported TTS synthesizers and configuration. # Transcribers Source: https://docs.unleashx.ai/integrations/transcribers Supported transcribers and configuration. # ActiveCampaign Source: https://docs.unleashx.ai/mcp/activecampaign Let your UnleashX agent manage contacts, deals, accounts, campaigns, automations, and tasks in ActiveCampaign. # ActiveCampaign > **In one line:** Connect ActiveCampaign so your UnleashX agent can create and update contacts and deals, manage accounts and campaigns, add contacts to automations, and log tasks — all in plain language. | | | | ------------------ | --------------------------------------------------------------------------------------------------------------------- | | **Category** | CRM & Marketing | | **Authentication** | API key + account URL | | **Setup time** | \~3 minutes | | **Difficulty** | Easy | | **Best for** | Sales and marketing teams that want an AI agent to manage contacts, move deals, and run automations in ActiveCampaign | ## 1. Overview ActiveCampaign is a customer experience automation platform that combines CRM, email marketing, and marketing automation. It's where your contacts, deals, accounts, campaigns, and automations live, tied together by tags, lists, and custom fields. Once connected to UnleashX, your agent can create and update contacts and deals, manage accounts, add and remove tags, subscribe contacts to lists, enroll contacts in automations, create campaigns, and log notes and tasks. It works against your live ActiveCampaign account using your API key, so it respects your account's data and settings. Connecting ActiveCampaign to UnleashX means your CRM stays current as you talk. Instead of opening ActiveCampaign to update a contact or move a deal, you tell your agent and it makes the change — cutting the manual data entry while keeping your pipeline and lists accurate. ## 2. What you'll need * An ActiveCampaign account (any plan that includes API access). * Your ActiveCampaign **API URL** (account URL) and **API key** (see Section 3). * An UnleashX account with access to **Data Connectors**. You paste **two** values: your ActiveCampaign **API URL** (account URL) and your **API key**. UnleashX sends the key to your account URL as an `Api-Token` header. Both fields must come from the **same** ActiveCampaign account. If the API URL and API key don't match, the connection fails — copy both from **Settings → Developer** in one sitting. ## 3. Get your credentials ActiveCampaign MCP authenticates with an **API key** plus your account's **API URL**. Both are shown on the same page in your ActiveCampaign settings — you copy them once and paste them into UnleashX. There's no OAuth flow and nothing to install. Go to your ActiveCampaign account and sign in. You'll land on the main dashboard. Click **Settings** (the gear icon in the lower-left), then open the **Developer** tab. This page holds everything the API needs. Under **API Access**, copy the **URL**. It looks like `https://.api-us1.com` — your unique account endpoint. UnleashX needs this so it knows which ActiveCampaign account to talk to. On the same page, copy the **Key** — a long secret string. Treat it like a password; it grants full access to your account's API. Head to **Data Connectors → ActiveCampaign** in UnleashX and paste **both** the API URL and the API key (full walkthrough in Section 4). UnleashX validates them immediately, so you'll know right away if either was copied incorrectly. Your API key grants full access to your ActiveCampaign account. Treat it like a password: * Never commit it to git, paste it in a ticket, or share it in chat. * If it's ever exposed, regenerate it under **Settings → Developer** — the old key stops working immediately, so reconnect UnleashX with the new value. ### Permissions this key grants UnleashX | Access | Why UnleashX needs it | | ------------------------- | --------------------------------------------------------- | | Manage contacts | Create, read, update, and delete contacts. | | Manage deals | Create and update deals and their tasks. | | Manage accounts | Create and update accounts, and link contacts to them. | | Manage tags & lists | Add or remove tags and subscribe or unsubscribe contacts. | | Manage automations | Add contacts to and remove them from automations. | | Create campaigns & events | Create campaigns and record tracked events. | ## 4. Connect on UnleashX Go to [https://www.tryunleashx.com](https://www.tryunleashx.com) and open the agent you want to connect. Inside the agent, go to **Data Connectors**. Locate **ActiveCampaign** and click **Connect** (or **Add** / **Configure**). Paste your **API URL** (account URL) and your **API key**, then click **Connect**. UnleashX validates the credentials and the ActiveCampaign connector shows a **Connected** badge. ### Use ActiveCampaign in a Workflow Once connected, you can add **ActiveCampaign** to any automation from the **Workflows** builder. Its tools appear in the Apps panel, marked with an **MCP** badge. Open **Workflows → New Workflow**. On the canvas, click **+ Add Trigger**. In the **Paths** panel, open the **Apps** tab and select **ActiveCampaign** — its **Triggers** are listed underneath. Use the search box if you have many connectors. Click the **+** below any node to add a step, then pick **ActiveCampaign** again — this time the panel lists its **Actions**. Fill in the fields for the trigger or action you picked. Required fields are marked with a red asterisk (\*). Under **Selected account**, choose an already-connected account, or click **Add Account** to connect one now. Click **Save**. Use **Test** to verify the step, then toggle **Publish** when the workflow is ready. The steps are the same for every connector. For the full workflow builder guide, see [Using MCP in Workflows](/mcp/workflows). ## 5. Available tools | Tool | What it does | Changes data? | | ------------------------------------------ | ----------------------------------------------------------- | ------------- | | List Contacts | Lists contacts (filter by list, tag, status). | No | | Get Contact | Retrieves a single contact by ID. | No | | Create Contact | Creates a new contact. | ✏️ Yes | | Update Contact | Updates an existing contact. | ✏️ Yes | | Delete Contact | Deletes a specified contact. | ⚠️ Yes | | List Deals | Lists deals in your pipelines. | No | | Create Deal | Creates a new deal. | ✏️ Yes | | Update Deal | Updates an existing deal. | ✏️ Yes | | Create Or Update Contact | Creates a contact, or updates it if it already exists. | ✏️ Yes | | Add Contact Note | Adds a note to a contact. | ✏️ Yes | | Add Note To Deal | Adds a note to a deal. | ✏️ Yes | | Add Contact To Account | Links a contact to an account. | ✏️ Yes | | Add Existing Contact To Automation | Enrolls an existing contact in an automation. | ✏️ Yes | | Remove Contact From Automation | Removes a contact from an automation. | ⚠️ Yes | | Add Secondary Contact To Deal | Adds a secondary contact to a deal. | ✏️ Yes | | Add Remove Tag From Contact | Adds or removes a tag on a contact. | ✏️ Yes | | Subscribe Or Unsubscribe Contact From List | Subscribes or unsubscribes a contact from a list. | ✏️ Yes | | Create Account | Creates a new account. | ✏️ Yes | | Update Account | Updates an existing account. | ✏️ Yes | | Create Or Update Account | Creates an account, or updates it if it already exists. | ✏️ Yes | | Create Campaign | Creates a new campaign. | ✏️ Yes | | Create Or Update Custom Object Record | Creates a custom object record, or updates it if it exists. | ✏️ Yes | | Create Or Update Contact Task | Creates a contact task, or updates it if it exists. | ✏️ Yes | | Create Or Update Deal Task | Creates a deal task, or updates it if it exists. | ✏️ Yes | | Create Tracked Event | Records a tracked event for a contact. | ✏️ Yes | | Api Request | Makes a custom request to the ActiveCampaign API. | ✏️ Yes | | Find Account | Finds an account by name or attributes. | No | | Find Deal | Finds a deal by name or attributes. | No | | Find Deal Owner | Finds the owner assigned to a deal. | No | | Find User | Finds a user in your account. | No | | Find Deal Task | Finds a task attached to a deal. | No | | Find Contact Task | Finds a task attached to a contact. | No | ## 6. Example usage **"Add Jordan Lee ([jordan@acme.com](mailto:jordan@acme.com)) as a contact, tag them 'Webinar 2026', and subscribe them to the Newsletter list."** → Runs Create Or Update Contact to add Jordan, then Add Remove Tag From Contact and Subscribe Or Unsubscribe Contact From List to apply the tag and list. **"Create a deal 'Acme renewal' for \$12,000 and add a note that they want annual billing."** → Runs Create Deal to open the deal, then Add Note To Deal to record the billing preference. ## 7. Permissions & data access **UnleashX can:** * Read and list contacts, deals, accounts, and their tasks. * Create and update contacts, deals, accounts, campaigns, tasks, and custom object records. * Add or remove tags, subscribe or unsubscribe contacts, and enroll or remove contacts in automations. * Record tracked events and add notes to contacts and deals. **UnleashX cannot:** * Access ActiveCampaign accounts other than the one whose API URL and key you provided. * Change your ActiveCampaign account password or billing settings. * Do anything the API key's account doesn't permit. **To disconnect:** In UnleashX, open **Data Connectors → ActiveCampaign → Disconnect**. Then regenerate the API key in ActiveCampaign under **Settings → Developer**. Disconnecting and regenerating removes access immediately. ## 8. Troubleshooting | Problem | What it means | How to fix it | | ------------------------- | ---------------------------------------------------- | ---------------------------------------------------------------------- | | **401 Unauthorized** | The API key is invalid or was regenerated. | Copy the current key from **Settings → Developer** and reconnect. | | **URL / key mismatch** | The API URL and API key are from different accounts. | Recopy both from the same account's **Settings → Developer** page. | | **404 Not Found** | The contact, deal, or account ID doesn't exist. | Confirm the record exists, or use a Find/List tool to locate it first. | | **422 Validation error** | A required field is missing or malformed. | Check required fields (e.g. email for contacts) and retry. | | **429 Too Many Requests** | You hit ActiveCampaign's API rate limit. | Slow down requests and retry after a moment. | For general MCP issues, see [/mcp/integrations](/mcp/integrations). ## 9. Frequently asked questions **Is my CRM data stored by UnleashX?** No. UnleashX reads and writes your records live through the ActiveCampaign API per request; it doesn't keep a copy of your contacts or deals. **Why do I need both an API URL and an API key?** The API key authenticates you, and the API URL tells UnleashX which ActiveCampaign account to reach. Both are on the same **Settings → Developer** page and must be from the same account. **Can the agent really delete contacts?** Yes — Delete Contact (marked ⚠️) permanently removes a contact. Removing a contact from an automation is also marked ⚠️. Use these deliberately. **What is the Api Request tool for?** It lets the agent make a custom call to the ActiveCampaign API for actions not covered by the named tools. Use it when you need something more specific. ## 10. References * ActiveCampaign API documentation: [https://developers.activecampaign.com/reference/overview](https://developers.activecampaign.com/reference/overview) * Getting started with the API (URL & key): [https://developers.activecampaign.com/reference/authentication](https://developers.activecampaign.com/reference/authentication) * ActiveCampaign help center: [https://help.activecampaign.com/](https://help.activecampaign.com/) # Agents Source: https://docs.unleashx.ai/mcp/agents Create and manage UnleashX voice agents, campaigns, and the data behind them. # Agents > **In one line:** Let your UnleashX assistant build and manage voice agents and calling campaigns, attach phone numbers, run analytics on executions, and generate report documents — all through the UnleashX Agents API. | | | | ------------------ | --------------------------------------------------------------------------------------- | | **Category** | Dev Tools | | **Authentication** | Platform-managed | | **Setup time** | \~1 minute | | **Difficulty** | Medium | | **Best for** | Spinning up voice agents, launching outbound campaigns, and pulling execution analytics | ## 1. Overview The Agents integration is the control surface for UnleashX's own voice-AI platform. With it, an assistant can create or update agents and voice agents, set up calling campaigns, attach phone numbers, and read back rich execution analytics — calls, workflows, nodes, and form data. Once connected, your assistant can do the heavy lifting of operating a calling program: define an agent's prompt and configuration, launch a "Winter Sale" campaign against the right agent, attach the numbers that dial out, and then report on how every run performed. It can also export results into PDF/Excel/Docx and other document formats. Because this drives your live UnleashX workspace, it's platform-managed: UnleashX auto-generates the Agents API key from your session, so there's nothing for you to paste. Connecting it turns natural-language requests into real, governed actions on your agents and campaigns. ## 2. What you'll need Agents is **built into UnleashX** and operates on your own workspace. There's no third-party account, and the Agents API key is generated for you from your signed-in session. * An active UnleashX account with the Agents feature enabled. * Permission to create/manage agents and campaigns in your workspace (admin or appropriate role). * Your workspace identifier for a few analytics/key-generation actions (the assistant will ask if needed). * If you lack admin rights, ask a workspace admin to enable the feature and grant agent-management permissions. ## 3. Get your credentials There are **no credentials for you to create**. The Agents API key is **auto-generated by UnleashX** from your session (the **Generate API Key** tool can mint a token when one is required), and the platform supplies the base URL and database access. You never handle a raw key. Platform-side, an admin configures the UnleashX base URL and the analytics database connection; these are preset in managed environments. Some tools require a `workspace_id` so actions and queries are scoped correctly — the assistant will request it when needed. | Platform-managed setting | Plain-English reason it exists | | --------------------------------- | ------------------------------------------------------------------------------------- | | Agents API key / session token | Authorizes create/update/delete actions on your agents and campaigns. Auto-generated. | | UnleashX base URL | Points the integration at your environment's Agents API. | | Analytics DB access (MySQL/Mongo) | Lets the read-only analytics tools query execution data. | | Workspace ID | Scopes campaigns, key generation, and analytics to the right workspace. | ## 4. Connect on UnleashX Go to [https://www.tryunleashx.com](https://www.tryunleashx.com) and open the assistant you want to give Agents control to. Click **Data Connectors** in the agent. Locate **Agents** and click **Connect** / **Add**. It's platform-managed — the Agents key is generated from your session, so there's nothing to paste. The Agents tool should now show a **Connected** badge. ### Use Agents in a Workflow Once connected, you can add **Agents** to any automation from the **Workflows** builder. Its triggers and tools appear in the Apps panel, marked with an **MCP** badge. Open **Workflows → New Workflow**. On the canvas, click **+ Add Trigger**. In the **Paths** panel, open the **Apps** tab and select **Agents** — its **Triggers** are listed underneath. Use the search box if you have many connectors. Click the **+** below any node to add a step, then pick **Agents** again — this time the panel lists its **Actions**. Fill in the fields for the trigger or action you picked. Required fields are marked with a red asterisk (\*). Under **Selected account**, choose an already-connected account, or click **Add Account** to connect one now. Click **Save**. Use **Test** to verify the step, then toggle **Publish** when the workflow is ready. The steps are the same for every connector. For the full workflow builder guide, see [Using MCP in Workflows](/mcp/workflows). ## 5. Available tools **Agent & voice-agent management** | Tool | What it does | Changes data? | | -------------------- | ------------------------------------------------------------------------- | ------------- | | Create Agent | Create or update an agent (name, category, purpose, prompt, type, status) | ✏️ Yes | | Create Voice Agent | Create a voice agent with prompt, voice, STT, and LLM config | ✏️ Yes | | Update Voice Agent | Update a voice agent (only the fields you pass) | ✏️ Yes | | Delete Voice Agent | Delete a voice agent | ⚠️ Yes | | List Voice Agents | List voice agents in the workspace | No | | Attach Phone Numbers | Attach phone numbers to a voice agent | ✏️ Yes | | Generate API Key | Generate (mint) an Agents API token | ✏️ Yes | **Campaign management** | Tool | What it does | Changes data? | | --------------- | -------------------------------------------- | ------------- | | Create Campaign | Create a calling campaign for a chosen agent | ✏️ Yes | | Update Campaign | Update a campaign (resolved by id or name) | ✏️ Yes | **Analytics & data access (read-only)** | Tool | What it does | Changes data? | | --------------------------- | ------------------------------------------------------------------- | ------------- | | Universal Data Access | Run intent-based analytics over workflows, nodes, and forms | No | | MySQL Query Tool | Run a read-only SELECT/SHOW/EXPLAIN query on analytics tables | No | | MongoDB Query Tool | Run a Mongo aggregation over form/object collections | No | | Form Dynamic Query Tool | Query dynamic form collections by table name with filter/projection | No | | Get Calling Execution Data | Fetch calling-execution analytics with success/failure summary | No | | Get Workflow Execution Data | Fetch full workflow-execution details | No | | Get Node Execution Data | Fetch node-level execution details (+ optional Mongo logs) | No | | Get Form Objects Data | Fetch form-response analytics and load primary/secondary tables | No | **Form data update** | Tool | What it does | Changes data? | | ----------------------- | -------------------------------------------------- | ------------- | | Update Form Record Data | Update a secondary-table form record by field name | ✏️ Yes | **Document generation** (exposed through the Agents server to turn results into files) | Tool | What it does | Changes data? | | ----------- | ------------------------------------------ | ------------- | | Create PDF | Build a PDF document from content/sections | ✏️ Yes | | Create Docx | Build a Word (.docx) document | ✏️ Yes | | Create Xlsx | Build an Excel (.xlsx) spreadsheet | ✏️ Yes | | Create CSV | Build a CSV file | ✏️ Yes | | Create JSON | Build a JSON file | ✏️ Yes | | Create HTML | Build an HTML file | ✏️ Yes | | Create Pptx | Build a PowerPoint (.pptx) deck | ✏️ Yes | **Delete Voice Agent** permanently removes a voice agent. The create/update tools modify your live workspace. The analytics query tools are read-only and restricted to SELECT-style statements on whitelisted tables. ## 6. Example usage **"Create a winter-sale outbound campaign on our Sales voice agent, retry twice."** → Runs **List Voice Agents** to resolve the agent by name, then **Create Campaign** with your dates and retry settings. **"How did yesterday's calls do for agent 1240 — success vs. failed?"** → Runs **Get Calling Execution Data** (with a summary) and the assistant reports the breakdown; it can then **Create Xlsx** to export it. ## 7. Permissions & data access **UnleashX can:** * Create, update, and delete agents, voice agents, and campaigns in your workspace. * Attach phone numbers and mint Agents API tokens. * Read execution analytics (calls, workflows, nodes, forms) via read-only queries. * Update specific form records you target and generate report documents. **UnleashX cannot:** * Run write/DDL SQL — analytics queries are limited to read-only statements on whitelisted tables. * Act outside your workspace scope. * Bypass your role-based permissions. **To disconnect:** Open the agent → **Data Connectors** → **Agents** → **Disconnect**. Access is revoked immediately. ## 8. Troubleshooting | Problem | What it means | How to fix it | | ----------------------------- | ------------------------------------------------ | ------------------------------------------------------------------- | | "No Agents API key available" | The session token couldn't be resolved | Re-authenticate on UnleashX; the key is generated from your session | | "workspace\_id is required" | A scoped action/query needs your workspace ID | Provide the workspace ID when asked | | 401 / unauthorized | Token missing or expired | Sign in again on UnleashX | | 403 / forbidden | Your role lacks permission for the action | Ask a workspace admin to grant agent/campaign rights | | "Campaign not found" | The id/name didn't match the campaign list | Use a name/id from **List Voice Agents** / the campaign list | | Query rejected | The SQL wasn't a read-only/whitelisted statement | Use SELECT/SHOW/EXPLAIN on the allowed analytics tables | For general connector issues, see [/mcp/integrations](/mcp/integrations). ## 9. Frequently asked questions **Do I need to create an API key?** No. The Agents API key is auto-generated from your UnleashX session. The **Generate API Key** tool can mint one when an action requires it. **Can it delete things?** Yes — **Delete Voice Agent** removes a voice agent. Create/update tools change live data, so treat them with care. **Are the analytics tools safe?** Yes. They are read-only and restricted to SELECT-style queries on whitelisted tables (workflow/node/form analytics); writes and DDL are blocked. **Can multiple team members use it?** Yes, subject to each member's role and permissions in the workspace. ## 10. References * UnleashX dashboard: [https://www.tryunleashx.com](https://www.tryunleashx.com) * UnleashX integrations help: [/mcp/integrations](/mcp/integrations) * Support: [cs@unleashx.ai](mailto:cs@unleashx.ai) # Airtable Source: https://docs.unleashx.ai/mcp/airtable Let UnleashX read, create, update and delete Airtable records and watch tables for new rows. # Airtable > **In one line:** Connect Airtable so UnleashX can read and search records, add and update rows, create tables, and detect new records — turning your bases into a live data source for your agent. | | | | ------------------ | ---------------------------------------------------------------------------------------------------------------------- | | **Category** | Productivity | | **Authentication** | Personal Access Token | | **Setup time** | \~4 minutes | | **Difficulty** | Easy | | **Best for** | Teams that run operations, CRMs or trackers in Airtable and want their agent to log and look up records automatically. | ## 1. Overview Airtable is a flexible database that looks like a spreadsheet. Teams use it as a lightweight CRM, content calendar, inventory tracker, project board and much more — organized into bases, tables, records and fields. Once connected to UnleashX, your agent can add a new record after a call, update a status, search for a row by any value, list what's in a table, or watch a table and react when a new record appears. Connecting Airtable to UnleashX means your operational data stays current automatically, and your agent can both read context from a base and write results back into it. ## 2. What you'll need * An Airtable account. * The base(s) and table(s) you want UnleashX to access. * Permission to create a **Personal Access Token** with access to those bases. No access to a base? Ask the base owner to share it with you (or with the account that creates the token). The token only reaches bases it's explicitly granted. ## 3. Get your credentials UnleashX authenticates to Airtable with a **Personal Access Token (PAT)**. Go to **Airtable → Builder hub → Personal access tokens**: `https://airtable.com/create/tokens` Click **Create token** and give it a name like "UnleashX". Add the scopes from the table below. Under **Access**, add the specific base(s) (or workspace) the token may reach. Click **Create token** and copy it. Airtable shows the token only once. Copy it now and store it safely — you can't view it again. | Scope | Why UnleashX needs it | | -------------------- | -------------------------------------------------------- | | `data.records:read` | Read, list and search records. | | `data.records:write` | Create, update and delete records. | | `schema.bases:read` | List your bases, tables and fields so you can pick them. | | `schema.bases:write` | Create new tables (only needed for **Create Table**). | | `user.email:read` | Identify which Airtable account is connected. | ## 4. Connect on UnleashX Sign in at [https://www.tryunleashx.com](https://www.tryunleashx.com) and open the agent you want to connect. Go to **Data Connectors** and find **Airtable**. Click **Connect** / **Add** / **Configure** and paste your Personal Access Token. Save. The status will switch to a **Connected** badge. ### Use Airtable in a Workflow Once connected, you can add **Airtable** to any automation from the **Workflows** builder. Its triggers and tools appear in the Apps panel, marked with an **MCP** badge. Open **Workflows → New Workflow**. On the canvas, click **+ Add Trigger**. In the **Paths** panel, open the **Apps** tab and select **Airtable** — its **Triggers** are listed underneath. Use the search box if you have many connectors. Airtable triggers in the Apps panel Click the **+** below any node to add a step, then pick **Airtable** again — this time the panel lists its **Actions**. Airtable actions in the Apps panel Fill in the fields for the trigger or action you picked. Required fields are marked with a red asterisk (\*). Under **Selected account**, choose an already-connected account, or click **Add Account** to connect one now. Click **Save**. Use **Test** to verify the step, then toggle **Publish** when the workflow is ready. The steps are the same for every connector. For the full workflow builder guide, see [Using MCP in Workflows](/mcp/workflows). ## 5. Available tools | Tool | What it does | Changes data? | | ------------------- | -------------------------------------------------------------- | ------------- | | Create Record | Create a new record in a table. | ✏️ Yes | | Get Record | Read a single record by ID. | No | | Update Record | Update fields on an existing record. | ✏️ Yes | | Delete Record | Permanently delete a record. | ⚠️ Yes | | Search Records | Search records by field, value, formula or date range. | No | | List Bases | List the bases the token can access. | No | | List Tables | List tables in a base. | No | | Create Table | Create a new table in a base. | ✏️ Yes | | List Columns | List the fields/columns of a table. | No | | List Records | List records in a table. | No | | Get Record IDs | List record IDs in a table. | No | | On New Record Added | Detect newly added records since last check (trigger). | No | | Clear Snapshots | Clear stored trigger snapshots so the next check starts fresh. | ⚠️ Yes | ## 6. Example usage **"Add a row to my 'Leads' table with name Jane Doe, email [jane@acme.com](mailto:jane@acme.com), status New."** Runs **List Bases** / **List Tables** to resolve the table, then **Create Record**. **"Find the lead with email [jane@acme.com](mailto:jane@acme.com) and mark their status as Contacted."** Runs **Search Records** to find the record, then **Update Record**. ## 7. Permissions & data access **UnleashX can:** * Read, search, create, update and delete records in bases the token can reach. * List bases, tables and fields, and create new tables. * Watch a table for new records and reset that watch. **UnleashX cannot:** * Access any base the token wasn't explicitly granted. * Change Airtable account settings, billing or sharing. * Delete entire bases. **To disconnect:** In UnleashX go to **Data Connectors → Airtable → Disconnect**. To fully revoke, delete the token in **Airtable → Builder hub → Personal access tokens**. Revocation is immediate. ## 8. Troubleshooting | Problem | What it means | How to fix it | | -------------------------- | ----------------------------------------------------- | ------------------------------------------------------------------------------ | | `401 Unauthorized` | The token is missing, wrong or revoked. | Reconnect in UnleashX with a valid Personal Access Token. | | `403 Forbidden` | The token lacks a scope or wasn't granted this base. | Edit the token to add the scope and add the base under Access, then reconnect. | | `404 Not Found` | The base, table or record ID is wrong. | Use **List Bases** / **List Tables** to get correct IDs and retry. | | `422 Unprocessable Entity` | A field name or value doesn't match the table schema. | Check field names with **List Columns** and retry. | | `429 Too Many Requests` | You hit Airtable's rate limit (5 req/sec/base). | Wait a moment and retry. | For general connector issues, see [/mcp/integrations](/mcp/integrations). ## 9. Frequently asked questions **Is my Airtable data stored by UnleashX?** No. Tools call the Airtable API live and return the result. Small snapshots of record IDs are kept only to power the "new record" trigger, and you can clear them with **Clear Snapshots**. **Can multiple team members connect Airtable?** Yes. Each agent stores its own token. Grant each token only the bases it needs. **How do I rotate my token?** Create a new Personal Access Token, reconnect in UnleashX, then delete the old token. ## 10. References * Airtable Web API introduction: [https://airtable.com/developers/web/api/introduction](https://airtable.com/developers/web/api/introduction) * Personal access tokens page: [https://airtable.com/create/tokens](https://airtable.com/create/tokens) * Scopes & permissions reference: [https://airtable.com/developers/web/api/scopes](https://airtable.com/developers/web/api/scopes) # Apollo Source: https://docs.unleashx.ai/mcp/apollo Let your UnleashX agent search people and companies and manage contacts, accounts, opportunities, and sequences in Apollo. # Apollo > **In one line:** Connect Apollo so your UnleashX agent can search people and companies, manage contacts and accounts, track opportunities, and enroll contacts in sequences — all in plain language. | | | | ------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------- | | **Category** | Sales & Outreach | | **Authentication** | API key | | **Setup time** | \~2 minutes | | **Difficulty** | Easy | | **Best for** | Sales and revenue teams that want an AI agent to prospect people and companies, manage contacts and opportunities, and run sequences in Apollo | ## 1. Overview Apollo (apollo.io) is a sales intelligence and engagement platform. It combines a large B2B database of people and companies with the CRM-style records — contacts, accounts, opportunities — and the sequences your team uses to reach out. Once connected to UnleashX, your agent can search Apollo's people and company data, look up and manage contacts, create and update accounts, move contacts and accounts through stages, track opportunities, find sequences, and enroll contacts in them. It works against your live Apollo workspace using your API key, so it respects your account's data and limits. Connecting Apollo to UnleashX turns your prospecting and pipeline work into a conversation. Instead of opening Apollo to find a contact, update a stage, or enroll someone in a sequence, you tell your agent and it makes the change — cutting the manual steps while keeping your CRM current. ## 2. What you'll need * An Apollo account. * An **API key** from your Apollo settings (see Section 3). * An UnleashX account with access to **Data Connectors**. You paste an **API key**. UnleashX sends it to the Apollo API as an authorization credential on every request. Searching people and enriching data consume Apollo **credits** and are subject to your plan's limits. Broad searches can use credits quickly — scope searches to the records you actually need. ## 3. Get your credentials Apollo MCP authenticates with an **API key** — a single secret string you generate once in your Apollo settings and paste into UnleashX. There's no OAuth flow and nothing to install. ### Step-by-step Go to [app.apollo.io](https://app.apollo.io/) and sign in. If you don't have an account yet, sign up first. Click the **gear icon** at the bottom of the left sidebar to open the **Team & Workspace setup** menu, then click **All settings**. In the Settings sidebar, expand **Integrations** and click **API Keys**. It opens Apollo's **API Management** area in a new tab. In **API Management**, select **API Keys**. Any keys you've already created are listed here. Click **Create new key** and fill in the dialog: * **Name** — a label that tells you where the key is used, for example **UnleashX**. * **Description** — optional; a note on what the key is for. * **APIs** — the Apollo endpoints this key can call. Select the ones UnleashX needs (people/company search, contacts, accounts, opportunities, sequences), **or** turn on **Set as master key** to grant access to all endpoints. You must do one or the other — the dialog won't submit otherwise. Click **Create API key**. A **master key** is the quickest path to a working connector, since it covers every endpoint. If you'd rather scope it down, pick the individual APIs instead — just make sure they cover every tool you plan to use, or those calls will fail with a 403. Apollo displays the key so you can copy it. Copy it right away and paste it somewhere safe (a password manager, or straight into the UnleashX connector). Head to **Data Connectors → Apollo** in UnleashX and paste the key (full walkthrough in Section 4). UnleashX validates it immediately, so you'll know right away if it was copied correctly. ### Good to know Use a **separate key per integration**. A dedicated key can be revoked on its own if it leaks, without breaking every other tool that uses your Apollo account. Your API key **spends your Apollo credits** and grants access to your account through the API. Treat it like a password: * Never commit it to git, paste it in a ticket, or share it in chat. * Use a separate key per integration so you can revoke one without disrupting the rest. * If it's ever exposed, delete it in **Settings → Integrations → API Keys** and create a replacement — revoking is instant. **Lost your key?** If you can't recover a key, delete the old one under **Settings → Integrations → API Keys**, create a new one, then reconnect the connector in UnleashX with the new value. ### Permissions this key grants UnleashX | Access | Why UnleashX needs it | | --------------------------- | --------------------------------------------------- | | Search people & companies | Find people and companies in Apollo's database. | | Read & manage contacts | List, create, and update contacts and their stages. | | Read & manage accounts | List, create, and update accounts and their stages. | | Read & manage opportunities | View, create, and update opportunities. | | Manage sequences | Find sequences and enroll contacts in them. | ## 4. Connect on UnleashX Go to [https://www.tryunleashx.com](https://www.tryunleashx.com) and open the agent you want to connect. Inside the agent, go to **Data Connectors**. Locate **Apollo** and click **Connect** (or **Add** / **Configure**). Paste your **API key** and click **Connect**. UnleashX validates the key and the Apollo connector shows a **Connected** badge. ### Use Apollo in a Workflow Once connected, you can add **Apollo** to any automation from the **Workflows** builder. Its triggers and tools appear in the Apps panel, marked with an **MCP** badge. Open **Workflows → New Workflow**. On the canvas, click **+ Add Trigger**. In the **Paths** panel, open the **Apps** tab and select **Apollo** — its **Triggers** are listed underneath. Use the search box if you have many connectors. Click the **+** below any node to add a step, then pick **Apollo** again — this time the panel lists its **Actions**. Fill in the fields for the trigger or action you picked. Required fields are marked with a red asterisk (\*). Under **Selected account**, choose an already-connected account, or click **Add Account** to connect one now. Click **Save**. Use **Test** to verify the step, then toggle **Publish** when the workflow is ready. The steps are the same for every connector. For the full workflow builder guide, see [Using MCP in Workflows](/mcp/workflows). ## 5. Available tools | Tool | What it does | Changes data? | | ------------------------ | ------------------------------------------------------ | ------------- | | List People | Searches and lists people in Apollo's database. | No | | Get Person | Retrieves a single person by ID. | No | | List Contacts | Lists your contacts. | No | | Create Contact | Creates a new contact. | ✏️ Yes | | Update Contact | Updates an existing contact. | ✏️ Yes | | List Accounts | Lists your accounts. | No | | Create Account | Creates a new account. | ✏️ Yes | | Update Account | Updates an existing account. | ✏️ Yes | | Update Account Stage | Moves an account to a different stage. | ✏️ Yes | | Update Opportunity | Updates an existing opportunity. | ✏️ Yes | | Search Sequences | Searches your sequences. | No | | Update Contact Stage | Moves a contact to a different stage. | ✏️ Yes | | Get Opportunity | Retrieves a single opportunity by ID. | No | | Create Opportunity | Creates a new opportunity. | ✏️ Yes | | Create Or Update Contact | Creates a contact, or updates it if it already exists. | ✏️ Yes | | Add Contacts To Sequence | Enrolls one or more contacts in a sequence. | ✏️ Yes | ### Available triggers | Trigger | Fires when | | ------------------ | ----------------------------------- | | On New Contact | A new contact is created in Apollo. | | On Updated Contact | An existing contact is updated. | | On New Account | A new account is created in Apollo. | | On Updated Account | An existing account is updated. | ## 6. Example usage **"Find the VP of Marketing at Globex and add them as a contact, then enroll them in the Demo Follow-up sequence."** → Runs List People to find the person, Create Contact to add them, then Add Contacts To Sequence to enroll them. **"Move the Acme Corp account to the Negotiation stage and update its opportunity to \$50k."** → Runs Update Account Stage to move Acme Corp, then Update Opportunity to set the amount. ## 7. Permissions & data access **UnleashX can:** * Search Apollo's people and company database. * Read and list contacts, accounts, and opportunities. * Create and update contacts, accounts, and opportunities. * Move contacts and accounts through stages, and enroll contacts in sequences. **UnleashX cannot:** * Do anything your Apollo plan or account doesn't permit. * Exceed your Apollo plan's credit or rate limits. * Change your Apollo account password or billing settings. **To disconnect:** In UnleashX, open **Data Connectors → Apollo → Disconnect**. Then revoke the key in Apollo under **Settings → Integrations → API Keys**. Disconnecting and revoking removes access immediately. ## 8. Troubleshooting | Problem | What it means | How to fix it | | --------------------------- | -------------------------------------------------- | ------------------------------------------------------------- | | **401 Unauthorized** | The API key is invalid or was revoked. | Create a new key and reconnect. | | **403 Forbidden** | Your Apollo plan doesn't allow that action. | Check your plan, or upgrade, then retry. | | **402 / credits exhausted** | Your plan's search/enrichment credits are used up. | Top up or upgrade your Apollo plan. | | **429 Too Many Requests** | You hit the API rate limit. | Slow down requests and retry after a short wait. | | **Contact already exists** | A contact with that email is already in Apollo. | Use Create Or Update Contact instead of creating a duplicate. | For general MCP issues, see [/mcp/integrations](/mcp/integrations). ## 9. Frequently asked questions **Does UnleashX store my Apollo data?** No. UnleashX reads and writes your records live through the Apollo API per request; it doesn't keep a copy of your contacts, accounts, or opportunities. **Will searching cost me?** Yes — searching people and enriching data consume Apollo credits. Scope searches to what you need. **How do I avoid duplicate contacts?** Use the Create Or Update Contact tool, which updates an existing contact when one matches instead of creating a new one. **Where do I find my API key again?** Open **Settings → Integrations → API Keys** in Apollo. If you can't recover a key, delete the old one, create a new one, and reconnect. ## 10. References * Apollo API documentation: [https://docs.apollo.io/](https://docs.apollo.io/) * Apollo API keys & authentication: [https://docs.apollo.io/reference/authentication](https://docs.apollo.io/reference/authentication) * Apollo app / settings: [https://app.apollo.io/](https://app.apollo.io/) * Apollo help center: [https://knowledge.apollo.io/](https://knowledge.apollo.io/) # Asana Source: https://docs.unleashx.ai/mcp/asana Let your UnleashX agent create and manage tasks, projects, and comments in Asana. # Asana > **In one line:** Connect Asana so your UnleashX agent can create and update tasks, move work across projects and sections, add comments, and check on progress — all in plain language. | | | | ------------------ | -------------------------------------------------------------------------------------------------------------- | | **Category** | Productivity & Scheduling | | **Authentication** | Personal Access Token | | **Setup time** | \~2 minutes | | **Difficulty** | Easy | | **Best for** | Teams that run work in Asana and want an AI agent to create tasks, assign work, and update projects hands-free | ## 1. Overview Asana is a work-management platform where teams organize projects, tasks, and deadlines. Your workspace holds the projects, tasks, sections, and comments that track who's doing what by when. Once connected to UnleashX, your agent can create and update tasks, assign them, set due dates, move tasks between sections and projects, add comments, and list what's outstanding. It works against your live Asana account using a personal access token, so it acts with your own permissions. Connecting Asana to UnleashX means your task board keeps itself current as you talk. Instead of opening Asana to file a task or reassign work, you tell your agent and it makes the change. ## 2. What you'll need * An Asana account with access to the workspace and projects you want the agent to manage. * A **personal access token** (see Section 3). * An UnleashX account with access to **Data Connectors**. You paste a **personal access token**. UnleashX sends it to the Asana API as a `Bearer` credential. Your token acts with **your Asana permissions**. The agent can only see and edit projects and tasks your account has access to. ## 3. Get your credentials Asana MCP authenticates with a **personal access token (PAT)** — a secret string tied to your Asana user that you create in Asana's developer console. There's no app to publish and no review process; a PAT works immediately. ### Step-by-step Go to [app.asana.com](https://app.asana.com/) and sign in with the account whose access you want the agent to have. The token inherits that user's workspaces and project permissions. Click your **profile picture** in the top-right corner, then choose **Settings**. A settings dialog opens with a left-hand list: **Profile**, **Notifications**, **Email Forwarding**, **Account**, **Display**, **Apps**, and **Hacks**. Click **Apps** in that list. The tab shows **Authorized Apps** at the top (empty until you connect something), then **Discover new apps** with suggestions like Slack, Gmail Add-on, and Microsoft Teams. Scroll past those to the bottom. The Apps tab in Asana Settings, with View developer console at the bottom Under the **Build new apps** heading at the bottom, click **View developer console**. It opens the Asana Developers site in a new tab. The Asana Developers console, My apps page You'll land on **My apps**. In the developer console, open the **Personal access tokens** section. Don't click **Create new app** — that's for building an OAuth integration and isn't what you need here. A personal access token is the quick path for connecting your own account. Click **Create new token**, give it a recognisable name such as **UnleashX**, and accept the API terms if prompted. Asana shows the token **once**, right after creating it. Copy it straight away into a password manager or directly into the UnleashX connector. If you close the dialog before copying, the token can't be revealed again — delete it and create a replacement. Head to **Data Connectors → Asana** in UnleashX and paste the token (full walkthrough in Section 4). UnleashX validates it on save, so a bad paste shows up right away. ### Good to know You can jump straight to the developer console at [app.asana.com/0/my-apps](https://app.asana.com/0/my-apps) and skip the Settings → Apps navigation entirely. A personal access token grants **everything your Asana account can reach** — every workspace, project, and task you can see, with the same edit rights. Treat it like a password: * Never commit it to git or share it in chat. * Create a separate token per integration so you can revoke one without breaking the others. * If it leaks, deauthorize it in the developer console under **Personal access tokens** and create a new one. **Lost your token?** It can't be viewed again after creation. Delete the old one in the developer console, create a fresh token, and reconnect the connector in UnleashX with the new value. ### Permissions this token grants UnleashX | Access | Why UnleashX needs it | | ----------------------------- | ----------------------------------------- | | Read/write tasks | Create, update, complete, and move tasks. | | Read/write projects | List projects and manage sections. | | Read/write comments (stories) | Add and read comments on tasks. | | Read workspaces & users | Resolve assignees and workspace context. | ## 4. Connect on UnleashX Go to [https://www.tryunleashx.com](https://www.tryunleashx.com) and open the agent you want to connect. Inside the agent, go to **Data Connectors**. Locate **Asana** and click **Connect** (or **Add** / **Configure**). Paste your **personal access token** and click **Connect**. UnleashX validates the token and the Asana connector shows a **Connected** badge. ### Use Asana in a Workflow Once connected, you can add **Asana** to any automation from the **Workflows** builder. Its triggers and tools appear in the Apps panel, marked with an **MCP** badge. Open **Workflows → New Workflow**. On the canvas, click **+ Add Trigger**. In the **Paths** panel, open the **Apps** tab and select **Asana** — its **Triggers** are listed underneath. Use the search box if you have many connectors. Asana triggers in the Apps panel Click the **+** below any node to add a step, then pick **Asana** again — this time the panel lists its **Actions**. Asana actions in the Apps panel Fill in the fields for the trigger or action you picked. Required fields are marked with a red asterisk (\*). Under **Selected account**, choose an already-connected account, or click **Add Account** to connect one now. Click **Save**. Use **Test** to verify the step, then toggle **Publish** when the workflow is ready. The steps are the same for every connector. For the full workflow builder guide, see [Using MCP in Workflows](/mcp/workflows). ## 5. Available tools | Tool | What it does | Changes data? | | -------------------- | --------------------------------------------------------- | ------------- | | List Tasks | Lists tasks in a project, section, or assigned to a user. | No | | Get Task | Retrieves a single task by ID. | No | | Create Task | Creates a new task. | ✏️ Yes | | Update Task | Updates a task (name, notes, due date, assignee). | ✏️ Yes | | Complete Task | Marks a task complete. | ✏️ Yes | | Delete Task | Deletes a task. | ⚠️ Yes | | Move Task to Section | Moves a task into a section. | ✏️ Yes | | Add Subtask | Adds a subtask to a task. | ✏️ Yes | | Search Tasks | Searches tasks by text/filters in a workspace. | No | | List Projects | Lists projects in a workspace. | No | | Get Project | Retrieves a project by ID. | No | | Create Project | Creates a new project. | ✏️ Yes | | List Sections | Lists sections in a project. | No | | Add Comment | Adds a comment (story) to a task. | ✏️ Yes | | List Comments | Lists comments on a task. | No | | List Workspaces | Lists workspaces you belong to. | No | | List Users | Lists users in a workspace. | No | | List Tags | Lists tags in a workspace. | No | ## 6. Example usage **"Create a task 'Draft Q3 report', assign it to me, and set it due next Friday in the Marketing project."** → Runs Create Task in the Marketing project with the assignee and due date set. **"What's still open in the Website Launch project? Add a comment on the blocked task asking for an update."** → Runs List Tasks on the project, then Add Comment on the blocked task. ## 7. Permissions & data access **UnleashX can:** * List and read tasks, projects, sections, comments, and users. * Create and update tasks, complete and move them, and add subtasks. * Create projects and add comments. * Delete tasks where your permissions allow (marked ⚠️). **UnleashX cannot:** * Access workspaces, projects, or tasks your account can't see. * Change Asana admin, billing, or organization settings. **To disconnect:** In UnleashX, open **Data Connectors → Asana → Disconnect**. You can also deauthorize the token in the Asana developer console ([app.asana.com/0/my-apps](https://app.asana.com/0/my-apps)) under **Personal access tokens**. Disconnecting removes access immediately. ## 8. Troubleshooting | Problem | What it means | How to fix it | | ------------------------- | -------------------------------------------------- | ----------------------------------------------------- | | **401 Unauthorized** | The token is invalid or was deauthorized. | Create a new personal access token and reconnect. | | **403 Forbidden** | Your account lacks access to that project or task. | Get added to the project, or pick one you can access. | | **404 Not found** | The task/project ID is wrong or was deleted. | Have the agent list/search to find the correct ID. | | **429 Too Many Requests** | You hit Asana's rate limit. | Wait and retry; space out bulk operations. | For general MCP issues, see [/mcp/integrations](/mcp/integrations). ## 9. Frequently asked questions **Is my Asana data stored by UnleashX?** No. UnleashX reads and writes live through the Asana API per request; it doesn't keep a copy. **Can the agent delete tasks?** Yes — tools marked ⚠️ make permanent changes and only work if your permissions allow it. Use them deliberately. **Can multiple team members connect Asana?** Yes. Each person uses their own personal access token, so the agent acts with that user's access. ## 10. References * Asana API documentation: [https://developers.asana.com/docs](https://developers.asana.com/docs) * Personal access tokens: [https://developers.asana.com/docs/personal-access-token](https://developers.asana.com/docs/personal-access-token) * Rate limits: [https://developers.asana.com/docs/rate-limits](https://developers.asana.com/docs/rate-limits) # BigQuery Source: https://docs.unleashx.ai/mcp/bigquery Let your UnleashX agent run SQL queries and explore datasets and tables in Google BigQuery. # BigQuery > **In one line:** Connect Google BigQuery so your UnleashX agent can run SQL queries, browse datasets and tables, and pull analytics results — all in plain language. | | | | ------------------ | ------------------------------------------------------------------------------------------------------------------------------ | | **Category** | Data & Analytics | | **Authentication** | OAuth (Google) | | **Setup time** | \~5 minutes | | **Difficulty** | Medium | | **Best for** | Data and analytics teams whose warehouse lives in BigQuery and who want an AI agent to query it and describe schemas on demand | ## 1. Overview BigQuery is Google Cloud's serverless data warehouse. It stores your analytics data in **datasets** and **tables**, and runs fast SQL queries across huge volumes without any infrastructure to manage. Once connected to UnleashX, your agent can run SQL against your BigQuery project, list datasets and tables, describe a table's schema, preview rows, and return query results. It works against your live project using your Google sign-in, so it acts with your own IAM permissions. Connecting BigQuery to UnleashX turns your warehouse into something you can ask questions of in plain language. Instead of opening the BigQuery console to write a query, you tell your agent what you want to know and it runs the SQL and reports the answer. ## 2. What you'll need * A Google Cloud project with **BigQuery** enabled, and its **project ID**. * IAM permission to run queries and read the datasets you want the agent to access (typically **BigQuery Data Viewer** + **BigQuery Job User**, or **BigQuery User**). * A Google account (or service account) with access to that project. * An UnleashX account with access to **Data Connectors**. No API key to paste. BigQuery uses Google OAuth — you click **Authorize** and sign in with Google. You'll also provide your **project ID**. BigQuery bills for **bytes scanned** by queries. A broad `SELECT *` over a large table can be expensive. Have the agent select only the columns and date ranges it needs, and consider setting a **maximum bytes billed** limit in your project. ## 3. Get your credentials BigQuery MCP authenticates with a **Google OAuth 2.0 access token** that has access to your project. The token is sent to Google's APIs as a Bearer credential. Go to the [Google Cloud Console](https://console.cloud.google.com/) and select the project whose data you want to connect. Note its **Project ID** — you'll provide this to your agent. Under **APIs & Services → Library**, make sure the **BigQuery API** is enabled for the project. In **IAM & Admin**, confirm your account has at least **BigQuery Data Viewer** (read tables) and **BigQuery Job User** (run queries) on the project — or **BigQuery User**. When connecting (Section 4), sign in with Google and grant the scopes below. UnleashX uses the resulting token as a Bearer credential and refreshes it automatically. **Scopes UnleashX requests for BigQuery:** | Scope | Why UnleashX needs it | | ------------------------------------------------ | ---------------------------------------------------------- | | `https://www.googleapis.com/auth/bigquery` | Run jobs (queries) and read datasets, tables, and results. | | `https://www.googleapis.com/auth/cloud-platform` | Access the BigQuery project resources. | | `https://www.googleapis.com/auth/userinfo.email` | Identify which account is connected. | | `openid` | Sign-in / identity verification. | Prefer read-only access? Grant `https://www.googleapis.com/auth/bigquery.readonly` (or the **BigQuery Data Viewer** + **Job User** roles without write access) so the agent can query and browse but not modify data. ## 4. Connect on UnleashX Go to [https://www.tryunleashx.com](https://www.tryunleashx.com) and open the agent you want to connect. Inside the agent, go to **Data Connectors**. Locate **BigQuery** and click **Connect** (or **Add** / **Configure**). Click **Authorize**, sign in with Google, and grant the scopes. Enter your **Project ID** when prompted. You return to UnleashX and the BigQuery connector shows a **Connected** badge. ### Use BigQuery in a Workflow Once connected, you can add **BigQuery** to any automation from the **Workflows** builder. Its triggers and tools appear in the Apps panel, marked with an **MCP** badge. Open **Workflows → New Workflow**. On the canvas, click **+ Add Trigger**. In the **Paths** panel, open the **Apps** tab and select **BigQuery** — its **Triggers** are listed underneath. Use the search box if you have many connectors. Click the **+** below any node to add a step, then pick **BigQuery** again — this time the panel lists its **Actions**. Fill in the fields for the trigger or action you picked. Required fields are marked with a red asterisk (\*). Under **Selected account**, choose an already-connected account, or click **Add Account** to connect one now. Click **Save**. Use **Test** to verify the step, then toggle **Publish** when the workflow is ready. The steps are the same for every connector. For the full workflow builder guide, see [Using MCP in Workflows](/mcp/workflows). ## 5. Available tools | Tool | What it does | Changes data? | | ----------------- | ----------------------------------------------------------------- | ---------------- | | Run Query | Runs a SQL query and returns the results. | Depends on SQL\* | | Get Query Results | Fetches the results of a completed query job. | No | | Dry Run Query | Validates a query and estimates bytes scanned without running it. | No | | List Datasets | Lists datasets in the project. | No | | Get Dataset | Retrieves a dataset's metadata. | No | | List Tables | Lists tables in a dataset. | No | | Get Table | Describes a table's schema and metadata. | No | | Preview Table | Returns a sample of rows from a table (`tabledata.list`). | No | | List Jobs | Lists recent query jobs in the project. | No | | Get Job | Retrieves a job's status and statistics. | No | | Create Dataset | Creates a new dataset. | ✏️ Yes | | Create Table | Creates a new table. | ✏️ Yes | | Insert Rows | Streams rows into a table. | ✏️ Yes | | Delete Table | Deletes a table. | ⚠️ Yes | \*Read-only `SELECT` queries don't change data. If you run DML (`INSERT`/`UPDATE`/`DELETE`/`MERGE`) or DDL, **Run Query can modify data** — connect with read-only scope/roles to keep the agent limited to queries. ## 6. Example usage **"What was our total revenue by month this year? Query analytics.sales."** → Runs Run Query with a `SELECT … GROUP BY month` against `analytics.sales` and returns the monthly totals. **"List the tables in the events dataset and show me the schema of page\_views."** → Runs List Tables on `events`, then Get Table on `page_views` to return its columns and types. ## 7. Permissions & data access **UnleashX can:** * Run SQL queries and fetch their results. * Dry-run queries to estimate cost before running them. * List and describe datasets and tables, and preview rows. * List and inspect query jobs — all subject to your IAM permissions. **UnleashX cannot:** * Access datasets or tables your account isn't granted in IAM. * Query a project other than the one you configured. * Manage IAM, billing, or project-level Google Cloud settings. **To disconnect:** In UnleashX, open **Data Connectors → BigQuery → Disconnect**. You can also revoke access at `https://myaccount.google.com/permissions` (Google account → Third-party access). Disconnecting revokes access immediately. ## 8. Troubleshooting | Problem | What it means | How to fix it | | --------------------------------------- | ---------------------------------------------------------------- | ---------------------------------------------------------------------------- | | **401 Unauthorized** | The Google token expired or was revoked. | Reconnect BigQuery in **Data Connectors** and sign in again. | | **403 Access Denied** | Your account lacks the IAM role for that dataset or to run jobs. | Ask a project admin for **BigQuery Data Viewer** + **Job User**, then retry. | | **404 Not found: Dataset/Table** | The dataset/table name or project is wrong. | Verify the fully-qualified name `project.dataset.table` and your project ID. | | **Query exceeded quota / bytes billed** | The query scanned more than the allowed bytes. | Add filters/column selection, or raise the maximum-bytes-billed limit. | | **Wrong project** | The agent is querying a different project. | Reconnect and enter the correct Project ID. | For general MCP issues, see [/mcp/integrations](/mcp/integrations). ## 9. Frequently asked questions **Is my data stored by UnleashX?** No. UnleashX runs queries and reads metadata live through the BigQuery API per request; it doesn't copy your tables. **Will queries cost money?** BigQuery bills by bytes scanned. Use Dry Run Query to estimate cost first, and select only the columns and date ranges you need. **Can the agent modify data?** Only if your account has write access and you run DML/DDL. Connect with read-only scope or roles for a query-only agent. **Can I use a service account instead?** Yes — for automation, a service account with least-privilege BigQuery roles is often preferable to an individual Google login. ## 10. References * BigQuery REST API reference: [https://cloud.google.com/bigquery/docs/reference/rest](https://cloud.google.com/bigquery/docs/reference/rest) * Running queries: [https://cloud.google.com/bigquery/docs/running-queries](https://cloud.google.com/bigquery/docs/running-queries) * BigQuery IAM roles: [https://cloud.google.com/bigquery/docs/access-control](https://cloud.google.com/bigquery/docs/access-control) * Controlling query cost: [https://cloud.google.com/bigquery/docs/best-practices-costs](https://cloud.google.com/bigquery/docs/best-practices-costs) # Brevo Source: https://docs.unleashx.ai/mcp/brevo Let UnleashX manage your Brevo contacts, companies and deals, and send transactional email and SMS. # Brevo > **In one line:** Connect Brevo so UnleashX can manage contacts, companies and deals, track events, and send transactional emails and SMS straight from a conversation or automation. | | | | ------------------ | --------------------------------------------------------------------------------------------------------------------------------------- | | **Category** | Marketing | | **Authentication** | API Key | | **Setup time** | \~3 minutes | | **Difficulty** | Easy | | **Best for** | Teams using Brevo for email/SMS marketing and a lightweight CRM who want their agent to update records and send messages automatically. | ## 1. Overview Brevo (formerly Sendinblue) is an all-in-one marketing and CRM platform for managing contacts, running email and SMS campaigns, and tracking a simple sales pipeline of companies and deals. Once connected to UnleashX, your agent can add or update a contact after a call, attach them to a company, open or progress a deal, fire a tracking event, or send a transactional email or SMS — all without anyone touching the Brevo dashboard. Connecting Brevo to UnleashX turns conversations into clean CRM data and instant follow-up messages, so leads get captured and contacted while they're still warm. ## 2. What you'll need * A Brevo account (the free plan includes API access). * A **verified sender** if you plan to send transactional email. * Permission to create an **API key** (account owner or a user with API access). No admin access? Ask your Brevo account owner to generate an API key and share it with you. The key is all UnleashX needs. ## 3. Get your credentials UnleashX authenticates to Brevo with an **API key**. In Brevo, click your account name (top-right) → **SMTP & API**, then the **API Keys** tab: `https://app.brevo.com/settings/keys/api` Click **Generate a new API key**, give it a name like "UnleashX", and confirm. Copy the key immediately. Brevo shows the full API key only once, at creation. If you lose it, you'll need to generate a new one. If you'll send email, go to **Senders, Domains & Dedicated IPs** and verify the sender address you'll use as the "from" email. | Capability the key grants | Why UnleashX needs it | | ------------------------------ | --------------------------------------------------------------- | | Contacts (read/write) | Create, update, list and find contacts; manage list membership. | | Companies & Deals (read/write) | Create and update companies and deals and link them together. | | Events | Track custom events against a contact. | | Transactional email (SMTP) | Send transactional emails from a verified sender. | | Transactional SMS | Send transactional SMS messages. | A Brevo API key is account-wide — it isn't scoped per feature. Only share it with tools you trust. ## 4. Connect on UnleashX Sign in at [https://www.tryunleashx.com](https://www.tryunleashx.com) and open the agent you want to connect. Go to **Data Connectors** and find **Brevo**. Click **Connect** / **Add** / **Configure** and paste your Brevo API key. Save. The status will switch to a **Connected** badge. ### Use Brevo in a Workflow Once connected, you can add **Brevo** to any automation from the **Workflows** builder. Its triggers and tools appear in the Apps panel, marked with an **MCP** badge. Open **Workflows → New Workflow**. On the canvas, click **+ Add Trigger**. In the **Paths** panel, open the **Apps** tab and select **Brevo** — its **Triggers** are listed underneath. Use the search box if you have many connectors. Click the **+** below any node to add a step, then pick **Brevo** again — this time the panel lists its **Actions**. Brevo actions in the Apps panel Fill in the fields for the trigger or action you picked. Required fields are marked with a red asterisk (\*). Under **Selected account**, choose an already-connected account, or click **Add Account** to connect one now. Click **Save**. Use **Test** to verify the step, then toggle **Publish** when the workflow is ready. The steps are the same for every connector. For the full workflow builder guide, see [Using MCP in Workflows](/mcp/workflows). ## 5. Available tools | Tool | What it does | Changes data? | | ------------------- | ------------------------------------------------------------------- | ------------- | | Create Contact | Create a new contact. | ✏️ Yes | | Update Contact | Update a contact by email or ID. | ✏️ Yes | | Find Contact | Get a single contact by email or ID. | No | | List Contacts | List contacts. | No | | List Companies | List companies. | No | | List Attributes | List available contact attribute fields. | No | | Unsubscribe Contact | Remove contacts from a list. | ⚠️ Yes | | Add Company | Create a new company. | ✏️ Yes | | Update Company | Update an existing company. | ✏️ Yes | | Find Company | Get a single company by ID. | No | | Delete Company | Permanently delete a company. | ⚠️ Yes | | Add Deal | Create a new deal (optionally link contacts/companies, add a task). | ✏️ Yes | | Update Deal | Update an existing deal. | ✏️ Yes | | Find Deal | Get a single deal by ID. | No | | Delete Deal | Permanently delete a deal. | ⚠️ Yes | | Add Associations | Link two CRM records (e.g. contact ↔ deal). | ✏️ Yes | | Remove Associations | Unlink two CRM records. | ⚠️ Yes | | Create Event | Track a custom event against a contact. | ✏️ Yes | | Send Email | Send a transactional email. | ✏️ Yes | | Send SMS | Send a transactional SMS. | ✏️ Yes | ## 6. Example usage **"Add [raj@acme.com](mailto:raj@acme.com) as a contact, then send him a welcome email from [hello@mycompany.com](mailto:hello@mycompany.com)."** Runs **Create Contact**, then **Send Email**. **"Create a deal called 'Acme renewal' worth 50000 INR and link it to contact [raj@acme.com](mailto:raj@acme.com)."** Runs **Add Deal** with the amount and `contact_search` set to the email so it links the contact automatically. ## 7. Permissions & data access **UnleashX can:** * Create, read, update and delete contacts, companies and deals. * Manage list membership and CRM associations. * Send transactional email and SMS, and track events. **UnleashX cannot:** * Access Brevo data the API key's account can't access. * Send email from an unverified sender address. * Change your Brevo billing or account settings. **To disconnect:** In UnleashX go to **Data Connectors → Brevo → Disconnect**. To fully revoke, delete the API key in **Brevo → SMTP & API → API Keys**. Revocation is immediate. ## 8. Troubleshooting | Problem | What it means | How to fix it | | ----------------------------------- | -------------------------------------------------------------- | ------------------------------------------------------ | | `401 Unauthorized` | The API key is missing, wrong or deleted. | Reconnect in UnleashX with a valid key. | | `403 Forbidden` | Your plan or account doesn't allow that action. | Check your Brevo plan/permissions, then retry. | | Email rejected / sender error | The "from" address isn't a verified sender. | Verify the sender in Brevo and use that exact address. | | `400 Bad Request` on a deal/company | A referenced contact, company or pipeline/stage ID is invalid. | Look up the correct ID first, then retry. | | `429 Too Many Requests` | You hit Brevo's rate limit. | Wait a moment and retry. | For general connector issues, see [/mcp/integrations](/mcp/integrations). ## 9. Frequently asked questions **Is my Brevo data stored by UnleashX?** No. Tools call the Brevo API live and return the result. UnleashX doesn't keep a copy of your contacts or campaigns. **Can I send marketing campaigns through this?** These tools cover transactional email/SMS and CRM records, not bulk campaign creation. Build campaigns in Brevo; use UnleashX for per-contact actions and messages. **How do I rotate my key?** Generate a new key in Brevo, reconnect in UnleashX, then delete the old key. ## 10. References * Brevo API getting started: [https://developers.brevo.com/docs/getting-started](https://developers.brevo.com/docs/getting-started) * API keys page: [https://app.brevo.com/settings/keys/api](https://app.brevo.com/settings/keys/api) * Senders & verification: [https://help.brevo.com/hc/en-us/articles/208836149](https://help.brevo.com/hc/en-us/articles/208836149) # Cal.com Source: https://docs.unleashx.ai/mcp/calcom Let your UnleashX agent book, reschedule, and cancel Cal.com meetings and check availability. # Cal.com > **In one line:** Connect Cal.com so your UnleashX agent can check availability, book meetings, reschedule or cancel them, and manage webhooks automatically. | | | | ------------------ | ---------------------------------------------------------------------------- | | **Category** | Productivity | | **Authentication** | API Key | | **Setup time** | \~5 minutes | | **Difficulty** | Easy | | **Best for** | Anyone who wants their agent to schedule and manage meetings on their behalf | ## 1. Overview Cal.com is an open-source scheduling platform. You publish event types (like "30-minute intro call"), share a booking link, and invitees pick a time that fits your availability — no back-and-forth emails. Once connected, your UnleashX agent can look up your event types, check open slots, create bookings, reschedule or cancel them, and set up webhooks so other systems hear about new bookings. That lets your agent handle scheduling end to end during a call or chat. Connecting Cal.com to UnleashX is useful for sales, support, and customer teams who want to turn "let's find a time" into a confirmed meeting instantly, without leaving the conversation. ## 2. What you'll need * A Cal.com account (cloud at cal.com or your self-hosted instance). * At least one **event type** set up so there's something to book. * A Cal.com **API key**. Any Cal.com user can create an API key for their own account. The key acts as you, so the agent can only manage the bookings and event types your account owns. ## 3. Get your credentials Cal.com uses an **API Key**. Sign in at [https://app.cal.com](https://app.cal.com) and open **Settings**. In the sidebar, choose **Developer**, then **API keys**. (Direct link: [https://app.cal.com/settings/developer/api-keys](https://app.cal.com/settings/developer/api-keys)) Click **Add** / **Create new API key**, name it `UnleashX`, optionally set an expiration, and confirm. Copy the generated API key. The API key is shown only once. Copy it now — if you lose it, delete it and create a new one. **What the key can access** | Scope / Access | Why UnleashX needs it | | ------------------------ | ------------------------------------------------------- | | Read event types | To know what meetings can be booked and their durations | | Read availability | To find open time slots before booking | | Create & manage bookings | To book, reschedule, and cancel meetings | | Manage webhooks | To notify other systems when bookings change | A Cal.com API key reflects your account's access. UnleashX only calls the endpoints needed for the tools listed in Section 5. ## 4. Connect on UnleashX Go to [https://www.tryunleashx.com](https://www.tryunleashx.com) and open the agent you want to connect. In the agent, go to **Data Connectors**. Locate **Cal.com** in the list and click **Connect** / **Add** / **Configure**. Paste your Cal.com **API key**. UnleashX sends it as a Bearer token (`access-token` / `token` header). Save. When the status shows a **Connected** badge, your agent can start scheduling with Cal.com. ### Use Cal.com in a Workflow Once connected, you can add **Cal.com** to any automation from the **Workflows** builder. Its triggers and tools appear in the Apps panel, marked with an **MCP** badge. Open **Workflows → New Workflow**. On the canvas, click **+ Add Trigger**. In the **Paths** panel, open the **Apps** tab and select **Cal.com** — its **Triggers** are listed underneath. Use the search box if you have many connectors. Cal.com triggers in the Apps panel Click the **+** below any node to add a step, then pick **Cal.com** again — this time the panel lists its **Actions**. Cal.com actions in the Apps panel Fill in the fields for the trigger or action you picked. Required fields are marked with a red asterisk (\*). Under **Selected account**, choose an already-connected account, or click **Add Account** to connect one now. Click **Save**. Use **Test** to verify the step, then toggle **Publish** when the workflow is ready. The screenshots above use Google Sheets as an example — the steps are identical for Cal.com. For the full workflow builder guide, see [Using MCP in Workflows](/mcp/workflows). ## 5. Available tools | Tool | What it does | Changes data? | | -------------------------- | --------------------------------------- | ------------- | | Get Booking | Gets details of a single booking | No | | List Bookings | Lists bookings | No | | List Bookings with Changes | Lists bookings including recent changes | No | | Create Booking | Creates a new booking | ✏️ Yes | | Reschedule Booking | Reschedules an existing booking | ✏️ Yes | | Delete Booking | Cancels/deletes a booking | ⚠️ Yes | | List Event Types | Lists your event types | No | | Get Availability | Checks available time slots | No | | Create Webhook | Creates a webhook subscription | ✏️ Yes | | List Webhooks | Lists your webhooks | No | | Delete Webhook | Deletes a webhook | ⚠️ Yes | ## 6. Example usage **"Book a 30-minute intro call with this lead tomorrow at 2pm."** Behind the scenes: List Event Types → Get Availability → Create Booking. **"Move my 3pm meeting with Sam to Thursday morning."** Behind the scenes: List Bookings → Get Availability → Reschedule Booking. ## 7. Permissions & data access **UnleashX CAN:** * Read your event types, availability, and bookings. * Create, reschedule, and cancel bookings. * Create, list, and delete webhooks. **UnleashX CANNOT:** * Access another user's Cal.com account or bookings. * Change Cal.com account, billing, or team settings. * Act beyond what your API key's account can do. **To disconnect:** In UnleashX, open your agent → **Data Connectors** → **Cal.com** → **Disconnect**. To fully revoke access, delete the key in Cal.com **Settings → Developer → API keys**. Either action stops access immediately. ## 8. Troubleshooting | Problem | What it means | How to fix it | | ------------------ | ------------------------------------------------------- | --------------------------------------------------------------------- | | `401 Unauthorized` | The API key is wrong, expired, or deleted | Create a new key in **Settings → Developer → API keys** and reconnect | | `403 Forbidden` | The key's account lacks permission for that action | Verify the account owns the event type/booking, then retry | | `404 Not Found` | The booking or event type ID doesn't exist | Re-list to get a current ID; it may have been cancelled | | No slots returned | The event type has no open availability | Check the event type's availability schedule in Cal.com | | Booking fails | Required fields (name/email/time) missing or slot taken | Re-check availability and provide all attendee details | For general connection issues, see [/mcp/integrations](/mcp/integrations). ## 9. Frequently asked questions **Is my data stored by UnleashX?** UnleashX calls Cal.com live with your key when a tool runs. It doesn't keep a separate copy of your calendar. **Can multiple team members connect?** Yes. Each person creates their own API key and connects it to their agent. **How do I rotate my key?** Create a new key in Cal.com, update it in UnleashX, then delete the old one. Access switches over immediately. **Does this work with self-hosted Cal.com?** Yes, as long as your instance exposes the Cal.com API and you provide a valid API key. ## 10. References * Cal.com API documentation: [https://cal.com/docs/api-reference](https://cal.com/docs/api-reference) * API keys page: [https://app.cal.com/settings/developer/api-keys](https://app.cal.com/settings/developer/api-keys) * Cal.com developer docs: [https://cal.com/docs](https://cal.com/docs) # Calendly Source: https://docs.unleashx.ai/mcp/calendly Let your UnleashX agent check Calendly availability, list events, and create scheduling links. # Calendly > **In one line:** Connect Calendly so your UnleashX agent can see your upcoming events, check when you're free or busy, and generate booking links automatically. | | | | ------------------ | ------------------------------------------------------------------------------------------------------ | | **Category** | Productivity | | **Authentication** | OAuth / Personal Access Token | | **Setup time** | \~5 minutes | | **Difficulty** | Easy | | **Best for** | Anyone who wants their agent to surface their schedule and hand out booking links during conversations | ## 1. Overview Calendly is a scheduling tool that lets people book time with you based on your real availability. You set up event types (like "15-minute call"), and invitees pick a slot from a shareable link. Once connected, your UnleashX agent can list your upcoming and past events, look up event details, check your availability and busy times, browse your event types, and create scheduling links on the fly. That means your agent can answer "when are you free?" and send a booking link without you lifting a finger. Connecting Calendly to UnleashX is useful for sales, support, and customer-facing teams who want to keep scheduling moving inside a live call or chat. ## 2. What you'll need * A Calendly account. * At least one **event type** configured so there's something to share or book. * A Calendly **Personal Access Token** (or an OAuth connection). Personal Access Tokens are available on Calendly's paid plans (Standard and above). If you're on the free plan or don't see the API section, ask your account owner to enable it or upgrade. ## 3. Get your credentials Calendly uses a **Personal Access Token** (or OAuth). Sign in at [https://calendly.com](https://calendly.com), then go to **Account → Integrations & apps**. (Direct link: [https://calendly.com/integrations/api\_webhooks](https://calendly.com/integrations/api_webhooks)) Open the **API & webhooks** section. Click **Generate new token**, name it `UnleashX`, and create it. Copy the generated token. The Personal Access Token is shown only once. Copy it now — if you lose it, revoke it and generate a new one. **What the token can access** | Scope / Access | Why UnleashX needs it | | ------------------------------ | ------------------------------------------------- | | Read scheduled events | To list and show your upcoming and past meetings | | Read event types | To know what can be booked and via which link | | Read availability / busy times | To answer "when are you free?" accurately | | Create scheduling links | To generate single-use booking links for invitees | A Personal Access Token reflects your Calendly account's access. UnleashX only calls the endpoints needed for the tools listed in Section 5. ## 4. Connect on UnleashX Go to [https://www.tryunleashx.com](https://www.tryunleashx.com) and open the agent you want to connect. In the agent, go to **Data Connectors**. Locate **Calendly** in the list and click **Connect** / **Add** / **Configure**. Either complete the OAuth flow or paste your **Personal Access Token**. UnleashX sends it as the `calendly_access_token` header (Bearer). Save. When the status shows a **Connected** badge, your agent can start working with Calendly. ### Use Calendly in a Workflow Once connected, you can add **Calendly** to any automation from the **Workflows** builder. Its triggers and tools appear in the Apps panel, marked with an **MCP** badge. Open **Workflows → New Workflow**. On the canvas, click **+ Add Trigger**. In the **Paths** panel, open the **Apps** tab and select **Calendly** — its **Triggers** are listed underneath. Use the search box if you have many connectors. Click the **+** below any node to add a step, then pick **Calendly** again — this time the panel lists its **Actions**. Calendly actions in the Apps panel Fill in the fields for the trigger or action you picked. Required fields are marked with a red asterisk (\*). Under **Selected account**, choose an already-connected account, or click **Add Account** to connect one now. Click **Save**. Use **Test** to verify the step, then toggle **Publish** when the workflow is ready. The steps are the same for every connector. For the full workflow builder guide, see [Using MCP in Workflows](/mcp/workflows). ## 5. Available tools | Tool | What it does | Changes data? | | ---------------------- | -------------------------------------- | ------------- | | List Upcoming Events | Lists your upcoming scheduled events | No | | Get Event Details | Gets details of a single event | No | | Search Events | Searches your scheduled events | No | | Check Availability | Checks your available time slots | No | | Get Busy Times | Gets the times you're already booked | No | | List Event Types | Lists your event types | No | | Get Event Type Details | Gets details of a single event type | No | | Create Scheduling Link | Creates a single-use scheduling link | ✏️ Yes | | Create Booking | Creates a booking (schedules an event) | ✏️ Yes | ## 6. Example usage **"What meetings do I have coming up this week?"** Behind the scenes: List Upcoming Events (and Get Event Details for specifics). **"Send this prospect a link to book a 30-minute demo."** Behind the scenes: List Event Types → Create Scheduling Link. ## 7. Permissions & data access **UnleashX CAN:** * Read your scheduled events and event details. * Read your event types and availability/busy times. * Create scheduling links and bookings. **UnleashX CANNOT:** * Access another user's Calendly account. * Change Calendly account, billing, or team settings. * Act beyond what your token's account can do. **To disconnect:** In UnleashX, open your agent → **Data Connectors** → **Calendly** → **Disconnect**. To fully revoke access, delete the token in Calendly's **API & webhooks** page (or revoke the OAuth app). Either action stops access immediately. ## 8. Troubleshooting | Problem | What it means | How to fix it | | --------------------- | ----------------------------------------- | -------------------------------------------------------------- | | `401 Unauthorized` | The token is wrong, expired, or revoked | Generate a new Personal Access Token and reconnect in UnleashX | | `403 Forbidden` | Your plan or account lacks API access | Confirm you're on a plan that includes the API, then retry | | `404 Not Found` | The event or event type URI doesn't exist | Re-list to get a current URI; it may have been removed | | No availability shown | The event type has no open slots in range | Check the event type's availability schedule in Calendly | | Token feature missing | API is not enabled on a free plan | Upgrade or ask the account owner to enable API access | For general connection issues, see [/mcp/integrations](/mcp/integrations). ## 9. Frequently asked questions **Is my data stored by UnleashX?** UnleashX calls Calendly live with your token when a tool runs. It doesn't keep a separate copy of your calendar. **Can multiple team members connect?** Yes. Each person creates their own token (or completes OAuth) and connects it to their agent. **How do I rotate my key?** Generate a new Personal Access Token in Calendly's API & webhooks page, update it in UnleashX, then revoke the old one. **Can the agent cancel meetings?** The exposed tools focus on reading your schedule and creating links/bookings; there is no cancel tool in this integration. ## 10. References * Calendly API documentation: [https://developer.calendly.com/](https://developer.calendly.com/) * API & webhooks page: [https://calendly.com/integrations/api\_webhooks](https://calendly.com/integrations/api_webhooks) * Personal Access Token guide: [https://developer.calendly.com/api-docs/ZG9jOjI3ODM2MTAz-getting-started](https://developer.calendly.com/api-docs/ZG9jOjI3ODM2MTAz-getting-started) # ClickUp Source: https://docs.unleashx.ai/mcp/clickup Let your UnleashX agent read and manage ClickUp spaces, lists, tasks, comments, and checklists. # ClickUp > **In one line:** Connect ClickUp so your UnleashX agent can create and update tasks, organize spaces and lists, post comments, and track work without you opening ClickUp. | | | | ------------------ | --------------------------------------------------------------------------------------- | | **Category** | Productivity | | **Authentication** | Personal API Token | | **Setup time** | \~5 minutes | | **Difficulty** | Easy | | **Best for** | Teams who want to capture, triage, and update project tasks straight from conversations | ## 1. Overview ClickUp is a project and task management platform where work is organized into Workspaces (Teams), Spaces, Folders, Lists, and Tasks. Teams use it to plan projects, assign work, track progress, and collaborate with comments and checklists. Once connected, your UnleashX agent can browse your ClickUp hierarchy, create and update tasks, leave comments, build checklists, and pull task details on demand. That means you can turn a phone call, chat, or instruction into a real ClickUp task and keep everything in sync automatically. Connecting ClickUp to UnleashX is useful when you want your agent to log requests, follow up on action items, or report project status, so nothing falls through the cracks and your team stays focused on the work itself. ## 2. What you'll need * A ClickUp account with access to the Workspace you want to use. * Permission to view and edit the Spaces, Lists, and Tasks you want the agent to manage. * A ClickUp **Personal API Token** (created from your own profile settings). You don't need to be a Workspace admin to create a Personal API Token. The token inherits **your** ClickUp permissions, so the agent can only see and change what you can. If you lack access to certain Spaces, ask an admin to grant it before connecting. ## 3. Get your credentials ClickUp uses a **Personal API Token** that begins with `pk_`. Sign in at [https://app.clickup.com](https://app.clickup.com), click your avatar in the lower-left corner, and choose **Settings**. In the left sidebar of Settings, select **Apps**. (Direct link: [https://app.clickup.com/settings/apps](https://app.clickup.com/settings/apps)) Under **API Token**, click **Generate** (or **Regenerate** if you already have one). Copy the token that begins with `pk_`. Treat this token like a password. Anyone with it can act in ClickUp as you. If it leaks, return to this page and click **Regenerate** to invalidate the old one. **What the token can access** | Scope / Access | Why UnleashX needs it | | --------------------------------------- | ------------------------------------------------------------------- | | Read Workspaces, Spaces, Folders, Lists | To navigate your ClickUp hierarchy and find the right place to work | | Read & write Tasks | To create, update, fetch, and delete tasks on your behalf | | Read & write Comments | To post and read task comments | | Read & write Checklists | To create checklists and add items to tasks | | Read Members, Views, Goals, Templates | To resolve assignees, show views, and apply templates | ClickUp's Personal API Token is not scope-limited — it grants the same access you have in the app. UnleashX only calls the endpoints needed for the tools listed in Section 5. ## 4. Connect on UnleashX Go to [https://www.tryunleashx.com](https://www.tryunleashx.com) and open the agent you want to connect. In the agent, go to **Data Connectors**. Locate **ClickUp** in the list and click **Connect** / **Add** / **Configure**. When prompted, paste your `pk_` **Personal API Token**. UnleashX sends it as the `clickup_api_token` / `access-token` header (Bearer). Save. When the status shows a **Connected** badge, your agent can start working with ClickUp. ### Use ClickUp in a Workflow Once connected, you can add **ClickUp** to any automation from the **Workflows** builder. Its triggers and tools appear in the Apps panel, marked with an **MCP** badge. Open **Workflows → New Workflow**. On the canvas, click **+ Add Trigger**. In the **Paths** panel, open the **Apps** tab and select **ClickUp** — its **Triggers** are listed underneath. Use the search box if you have many connectors. ClickUp triggers in the Apps panel Click the **+** below any node to add a step, then pick **ClickUp** again — this time the panel lists its **Actions**. ClickUp actions in the Apps panel Fill in the fields for the trigger or action you picked. Required fields are marked with a red asterisk (\*). Under **Selected account**, choose an already-connected account, or click **Add Account** to connect one now. Click **Save**. Use **Test** to verify the step, then toggle **Publish** when the workflow is ready. The steps are the same for every connector. For the full workflow builder guide, see [Using MCP in Workflows](/mcp/workflows). ## 5. Available tools | Tool | What it does | Changes data? | | ------------------------ | --------------------------------------------------- | ------------- | | Get Workspaces | Lists all Workspaces you can access | No | | Get Team IDs | Gets Team (Workspace) IDs | No | | Get Spaces | Lists Spaces in a Team | No | | Create Space | Creates a new Space in a Team | ✏️ Yes | | Get Folder | Gets a Folder by ID | No | | Create Folder | Creates a Folder in a Space | ✏️ Yes | | List Folders | Lists Folders in a Space | No | | Get Lists | Lists Lists in a Space or Folder | No | | Create List | Creates a List in a Folder | ✏️ Yes | | List Tasks | Lists tasks in a List with paging/sorting | No | | Create Task | Creates a new task | ✏️ Yes | | Get Task | Gets a task by ID | No | | Get Ticket | Gets a ticket (task) by ID | No | | Delete Task | Deletes a task | ⚠️ Yes | | Update Task | Updates fields on a task | ✏️ Yes | | List Task Comments | Lists comments on a task | No | | Create Task Comment | Adds a comment to a task | ✏️ Yes | | Create Checklist | Creates a checklist on a task | ✏️ Yes | | Add Checklist Item | Adds an item to a checklist | ✏️ Yes | | List All Tasks | Lists all tasks in a List | No | | List All Spaces | Lists all Spaces in a Team | No | | List All Subtasks | Lists all subtasks of a task | No | | List All Templates | Lists all templates in a Team | No | | List Task Templates | Lists task templates in a Team | No | | Folderless List | Lists folderless Lists in a Space | No | | List View | Gets views for a List | No | | List Members | Lists members of a List | No | | Get List | Gets a List by ID | No | | Delete List | Deletes a List | ⚠️ Yes | | List All Goals | Lists all Goals in a Team | No | | List Space View | Gets views for a Space | No | | List View Task | Lists tasks within a view | No | | List All Channel Members | Lists channel members in a Team | No | | Clear Snapshots | Clears cached ClickUp data snapshots | ⚠️ Yes | | On Task Created | Trigger that fires when a task is created in a List | No | | On Task Updated | Trigger that fires when a task is updated in a List | No | ## 6. Example usage **"Create a high-priority task in my Marketing list to follow up with the new lead by Friday."** Behind the scenes: Get Lists (to find the Marketing list) → Create Task. **"What's open in our Sprint list, and add a comment to the login bug saying I'm on it."** Behind the scenes: List All Tasks → Get Task → Create Task Comment. ## 7. Permissions & data access **UnleashX CAN:** * Read your Workspaces, Spaces, Folders, Lists, and Tasks. * Create, update, and delete tasks, Lists, Spaces, and Folders you have access to. * Post and read comments, and build checklists. * Read members, views, goals, and templates. **UnleashX CANNOT:** * Access Workspaces or Spaces your ClickUp account can't see. * Change ClickUp account or billing settings. * Act beyond the permissions your own ClickUp user has. **To disconnect:** In UnleashX, open your agent → **Data Connectors** → **ClickUp** → **Disconnect**. To fully revoke access, go to ClickUp **Settings → Apps** and click **Regenerate** to invalidate the token. Either action stops access immediately. ## 8. Troubleshooting | Problem | What it means | How to fix it | | ------------------ | ----------------------------------------------------------- | ----------------------------------------------------------------------- | | `401 Unauthorized` | The API token is wrong, expired, or was regenerated | Generate a fresh token in **Settings → Apps** and reconnect in UnleashX | | `403 Forbidden` | Your ClickUp user lacks permission for that Space/List/Task | Ask a Workspace admin to grant you access, then retry | | `404 Not Found` | The task, list, or space ID no longer exists | Re-list items to get a current ID; the item may have been deleted | | Rate limited | Too many requests in a short window | Wait a minute and try again; ClickUp enforces per-token rate limits | | Stale results | A cached snapshot is out of date | Run Clear Snapshots or ask the agent to refresh | For general connection issues, see [/mcp/integrations](/mcp/integrations). ## 9. Frequently asked questions **Is my data stored by UnleashX?** UnleashX uses your token to call ClickUp live when a tool runs. It may cache short-lived snapshots to speed up navigation; you can clear them with Clear Snapshots. **Can multiple team members connect?** Yes. Each person creates their own Personal API Token and connects it to their agent. Each token reflects that person's ClickUp permissions. **How do I rotate my token?** Go to ClickUp **Settings → Apps**, click **Regenerate**, then paste the new token into UnleashX. The old token stops working immediately. **Can the agent delete things?** Yes — Delete Task and Delete List remove items permanently. These are marked ⚠️ in the tools table. ## 10. References * ClickUp API documentation: [https://developer.clickup.com/docs](https://developer.clickup.com/docs) * Personal API Token page: [https://app.clickup.com/settings/apps](https://app.clickup.com/settings/apps) * ClickUp authentication reference: [https://developer.clickup.com/docs/authentication](https://developer.clickup.com/docs/authentication) # Close CRM Source: https://docs.unleashx.ai/mcp/close-crm Let your UnleashX agent manage Close leads, contacts, opportunities, tasks and activities. # Close CRM > **In one line:** Connect Close so your UnleashX agent can create and update leads and contacts, move opportunities through the pipeline, log notes and tasks, and start a workflow the moment a new lead lands. | | | | ------------------ | ---------------------------------------------------------------------------------------------------------------------------------- | | **Category** | CRM & Marketing | | **Authentication** | API key | | **Setup time** | \~3 minutes | | **Difficulty** | Easy | | **Best for** | Sales teams on Close who want an agent doing the data entry — logging calls, creating follow-ups, and keeping the pipeline current | ## 1. Overview Close is a sales CRM built around the **lead**, which is the company record. Each lead holds **contacts** (people), **opportunities** (deals with a value and a status), **tasks**, and **activities** — notes, calls and emails. Once connected to UnleashX, your agent can search and manage leads and contacts, create and move opportunities, create and complete tasks, log notes and emails, read calls, and look up the organisation's users, pipelines, statuses and custom field definitions. It can also read Close's change feed directly. Four polling triggers let a workflow start on its own — a new lead, contact, opportunity or task. Connecting Close to UnleashX means the CRM stops depending on someone remembering to update it: a call ends and the note is logged, a form comes in and the lead exists with the right status, a deal closes and the next task is already assigned. ## 2. What you'll need * A **Close account** with access to **Settings → Developer**. * An **API key** from that page. * An UnleashX agent where you'll add the connector. An API key inherits the permissions of the user it belongs to. Create it on an account that can see the leads your workflows need. ## 3. Get your credentials Close authenticates with an **API key**. There's no OAuth flow. Go to [app.close.com](https://app.close.com/) and sign in. Go to **Settings → Developer → API Keys**. Create a new API key and name it something you'll recognise later — for example "UnleashX". Copy the key now and store it in your password manager. If you lose it, delete the key and create a new one. ### Access this key grants UnleashX | Access | Why UnleashX needs it | | ----------------- | -------------------------------------------------------------- | | Leads | Search, read, create, update and delete leads | | Contacts | Search, read, create, update and delete contacts | | Opportunities | Read, create, update and delete opportunities | | Tasks | Read, create and update tasks | | Activities | Read calls and emails; log notes and email activities | | Organisation data | Read users, pipelines, statuses and custom field definitions | | Event log | Read the change feed that powers the lead and contact triggers | The key can **delete** leads, and deleting a lead takes its contacts and activities with it. Grant it deliberately and keep delete steps out of workflows that run unattended. ## 4. Connect on UnleashX Sign in at [https://www.tryunleashx.com](https://www.tryunleashx.com) and open the agent you want to connect. In the agent, go to **Data Connectors** and find **Close CRM**. Click **Connect** / **Add** / **Configure** and complete both fields: | Field | What to enter | | ---------------- | ------------------------------------------- | | **Access Token** | The Close API key from Section 3 | | **Account Name** | A label for this connection inside UnleashX | Then click **Add Tool**. The Close CRM Configuration dialog: Access Token and Account Name Save, then run **Get Me** once — it returns the user and organisation the key belongs to, which is the quickest way to confirm you connected the right account. ### Use Close CRM in a Workflow Once connected, you can add **Close CRM** to any automation from the **Workflows** builder. Its triggers and tools appear in the Apps panel, marked with an **MCP** badge. Open **Workflows → New Workflow**. On the canvas, click the **+** below a node, then open the **Apps** tab in the **Paths** panel and select **Close CRM** — its **Actions** are listed underneath. Use the search box if you have many connectors. Close CRM actions in the Apps panel Choose the action from **Select Action**, then pick the connected account under **Select Account** — or click **Add Account** to connect one now. Required fields are marked with a red asterisk (\*). Most steps need a **Lead Id** — get it from **List Leads** or from the trigger that started the workflow. Click **Save**. Use **Test** to verify the step, then toggle **Publish** when the workflow is ready. The steps are the same for every connector. For the full workflow builder guide, see [Using MCP in Workflows](/mcp/workflows). ## 5. Available tools **Updates are partial.** Supply only the fields you want changed and the rest are left alone — you never have to send a whole record back to edit one field. Names match the **Workflows** Apps panel, which lists them alphabetically; they're grouped here by what they act on. The **Tool ID** is what the agent calls behind the scenes. **Leads** | Tool | Tool ID | What it does | Required | Changes data? | | ----------- | ---------------------- | --------------------------------------------------- | --------- | ------------- | | List Leads | `closecrm_list_leads` | Lists leads, optionally narrowed by a search query | — | No | | Get Lead | `closecrm_get_lead` | One lead by id | `lead_id` | No | | Create Lead | `closecrm_create_lead` | Creates a lead (the company record) | — | ✏️ Yes | | Update Lead | `closecrm_update_lead` | Updates only the fields you supply | `lead_id` | ✏️ Yes | | Delete Lead | `closecrm_delete_lead` | Deletes a lead **with its contacts and activities** | `lead_id` | ⚠️ Yes | **Contacts** | Tool | Tool ID | What it does | Required | Changes data? | | -------------- | ------------------------- | ------------------------------------------------- | ------------ | ------------- | | List Contacts | `closecrm_list_contacts` | Lists contacts, optionally only those on one lead | — | No | | Get Contact | `closecrm_get_contact` | One contact by id | `contact_id` | No | | Create Contact | `closecrm_create_contact` | Creates a contact on a lead | `lead_id` | ✏️ Yes | | Update Contact | `closecrm_update_contact` | Updates only the fields you supply | `contact_id` | ✏️ Yes | | Delete Contact | `closecrm_delete_contact` | Deletes a contact | `contact_id` | ⚠️ Yes | **Opportunities** | Tool | Tool ID | What it does | Required | Changes data? | | ------------------ | ----------------------------- | ------------------------------------------------------- | ---------------- | ------------- | | List Opportunities | `closecrm_list_opportunities` | Lists opportunities, filterable by lead, status or user | — | No | | Get Opportunity | `closecrm_get_opportunity` | One opportunity by id | `opportunity_id` | No | | Create Opportunity | `closecrm_create_opportunity` | Creates an opportunity on a lead | `lead_id` | ✏️ Yes | | Update Opportunity | `closecrm_update_opportunity` | Updates it, including moving it to another status | `opportunity_id` | ✏️ Yes | | Delete Opportunity | `closecrm_delete_opportunity` | Deletes an opportunity | `opportunity_id` | ⚠️ Yes | **Tasks** | Tool | Tool ID | What it does | Required | Changes data? | | ----------- | ---------------------- | ------------------------------------------------------- | ----------------- | ------------- | | List Tasks | `closecrm_list_tasks` | Lists tasks, filterable by lead, assignee or completion | — | No | | Get Task | `closecrm_get_task` | One task by id | `task_id` | No | | Create Task | `closecrm_create_task` | Creates a task against a lead | `lead_id`, `text` | ✏️ Yes | | Update Task | `closecrm_update_task` | Updates it, including marking it complete | `task_id` | ✏️ Yes | **Activities** | Tool | Tool ID | What it does | Required | Changes data? | | ------------ | ----------------------- | -------------------------------------------------------- | ----------------- | ------------- | | List Notes | `closecrm_list_notes` | Lists note activities | — | No | | Create Note | `closecrm_create_note` | Logs a note on a lead | `lead_id`, `note` | ✏️ Yes | | List Calls | `closecrm_list_calls` | Lists call activities | — | No | | List Emails | `closecrm_list_emails` | Lists email activities | — | No | | Create Email | `closecrm_create_email` | Creates an email activity (`status` defaults to `draft`) | `lead_id` | ✏️ Yes | **Organisation and configuration** | Tool | Tool ID | What it does | Required | Changes data? | | ------------------------- | ------------------------------------ | ------------------------------------------------------------------------ | -------- | ------------- | | Get Me | `closecrm_get_me` | The user and organisation the API key belongs to | — | No | | List Users | `closecrm_list_users` | Users in the Close organisation | — | No | | List Pipelines | `closecrm_list_pipelines` | Opportunity pipelines and their stages | — | No | | List Lead Statuses | `closecrm_list_lead_statuses` | Lead statuses — the source for `status_id` on lead actions | — | No | | List Opportunity Statuses | `closecrm_list_opportunity_statuses` | Opportunity statuses — the source for `status_id` on opportunity actions | — | No | | List Custom Fields | `closecrm_list_custom_fields` | Lead custom field definitions, so you know the ids to write to | — | No | | List Events | `closecrm_list_events` | Close's change feed — every create, update and delete | — | No | Anything taking a `status_id` needs a real id, not a status name. Fetch them once with **List Lead Statuses** or **List Opportunity Statuses** and reuse them in the workflow. **Triggers** | Trigger | Trigger ID | Fires when | | ------------------ | ----------------------------- | -------------------------------------------------------- | | On New Lead | `closecrm_on_new_lead` | A lead is created | | On New Contact | `closecrm_on_new_contact` | A contact is created | | On New Opportunity | `closecrm_on_new_opportunity` | An opportunity is created, optionally filtered by status | | On New Task | `closecrm_on_new_task` | A task is created, optionally filtered by assignee | Close's lead and contact endpoints support no ordering and no date filter, so polling them newest-first is impossible. **On New Lead** and **On New Contact** read the **change feed** instead, which does filter properly. Opportunities and tasks have native ordering and use it directly. Either way you get the new records — the mechanism just differs. ## 6. Example usage **"Create a lead for Acme Corp with Jane as the contact."** Runs **Create Lead**, then **Create Contact** against the returned lead id. **"Move the Acme deal to Negotiation and set it to ₹4,00,000."** Runs **List Opportunity Statuses** for the id, then **Update Opportunity**. **"Log a note on that lead and remind me to follow up Friday."** Runs **Create Note** and **Create Task** with a due date. **"When a new lead comes in, enrich it and assign a first-touch task."** A workflow starts on **On New Lead**, enriches via your data connector, then runs **Update Lead** and **Create Task**. ## 7. Permissions & data access **UnleashX CAN:** * Search, read, create, update and delete leads, contacts and opportunities. * Create and complete tasks, log notes and email activities, and read calls. * Read users, pipelines, statuses, custom field definitions and the change feed. * Start workflows on new leads, contacts, opportunities and tasks. **UnleashX CANNOT:** * Do anything the key's own user can't do in Close. * Place calls or actually send email — **Create Email** records an activity, it isn't a send. * Reach any Close organisation other than the key's. **To disconnect:** In UnleashX, open your agent → **Data Connectors** → **Close CRM** → **Disconnect**. To fully revoke access, delete the key in **Settings → Developer → API Keys**. ## 8. Troubleshooting | Problem | What it means | How to fix it | | -------------------------------------------- | -------------------------------------------------- | ------------------------------------------------------------------------- | | `401 Unauthorized` | The key is wrong or was deleted | Create a new key in **Settings → Developer** and reconnect | | `403 Forbidden` | The key's user can't see or change that record | Use a key from an account with the right permissions | | A status change is rejected | A status **name** was sent where an **id** belongs | Fetch the id with **List Lead Statuses** or **List Opportunity Statuses** | | Only 200 records come back | Close caps the page size at 200 | Page through with `skip`, don't raise `limit` | | An update wiped a field | A field was sent explicitly as empty | Updates are partial — omit a field entirely to leave it alone | | Deleting a lead removed more than expected | Lead deletes cascade to contacts and activities | Delete the contact instead when the company should stay | | A trigger fires for old records on first run | The first poll has no previous snapshot | Expected — later polls only report what's genuinely new | For general connector issues, see [/mcp/integrations](/mcp/integrations). ## 9. Frequently asked questions **Is my CRM data stored by UnleashX?** No. Tools call the Close API live with your key. UnleashX keeps only the bookkeeping a polling trigger needs to know what it has already seen. **What's a lead versus a contact?** In Close, the lead is the company and contacts are the people on it. Every contact belongs to a lead. **Does Create Email send an email?** No. It records an email activity on the lead. Use an email connector to actually send. **How do I find custom field ids?** **List Custom Fields** returns the lead custom field definitions and their ids. **Can I connect more than one Close organisation?** Yes. Add a key per organisation and tell them apart by **Account Name**. ## 10. References * Close API reference: [https://developer.close.com/](https://developer.close.com/) * API keys (Settings → Developer): [https://app.close.com/settings/developer/api-keys/](https://app.close.com/settings/developer/api-keys/) * Close event log: [https://developer.close.com/resources/event-log/](https://developer.close.com/resources/event-log/) # Databricks Source: https://docs.unleashx.ai/mcp/databricks Let your UnleashX agent run SQL queries, explore catalogs and tables, and manage jobs on your Databricks workspace. # Databricks > **In one line:** Connect your Databricks workspace so your UnleashX agent can query your lakehouse, browse catalogs, schemas, and tables, and trigger jobs — all in plain language. | | | | ------------------ | ----------------------------------------------------------------------------------------------------------------- | | **Category** | Data & Analytics | | **Authentication** | Personal Access Token (workspace) | | **Setup time** | \~5 minutes | | **Difficulty** | Medium | | **Best for** | Data and analytics teams that want an AI agent to run SQL, explore Unity Catalog, and check on jobs in Databricks | ## 1. Overview Databricks is a unified data and AI platform built on the lakehouse architecture. Your workspace holds the catalogs, schemas, and tables that make up your data estate, the SQL warehouses that run queries, and the jobs and pipelines that keep everything fresh. Once connected to UnleashX, your agent can run SQL statements against a SQL warehouse, list and describe catalogs, schemas, and tables in Unity Catalog, preview data, and check or trigger jobs. It works against your live workspace using a personal access token, so it acts with your own identity and permissions. Connecting Databricks to UnleashX turns your lakehouse into something you can ask questions of directly. Instead of opening a notebook to run a query or check a table, you ask your agent in plain language and it runs the SQL, reads the schema, or reports on a job for you. ## 2. What you'll need * A Databricks workspace and your **workspace URL** (e.g. `https://dbc-xxxxxxxx-xxxx.cloud.databricks.com` or your Azure/GCP host). * A **SQL warehouse** (or cluster) you can run queries on, and its **warehouse ID**. * Permission (via Unity Catalog grants) to read the catalogs, schemas, and tables you want the agent to access. * A **personal access token** for your Databricks user (see Section 3). * An UnleashX account with access to **Data Connectors**. You provide a **workspace URL**, a **warehouse ID**, and a **personal access token**. UnleashX uses the token as a Bearer credential on the Databricks REST API. Databricks enforces **Unity Catalog permissions**. The agent can only query and read objects your token's user has been granted access to. Ask a workspace admin to grant the needed `USE`/`SELECT` privileges if a query is denied. ## 3. Get your credentials Databricks MCP authenticates with a **personal access token (PAT)** scoped to your user in a specific workspace. Sign in to your workspace and note its URL — you'll provide this to your agent as the **host**. Click your username (top right) → **Settings** → **Developer** → **Access tokens** → **Manage** → **Generate new token**. Add a comment (e.g. "UnleashX") and set a lifetime, then **Generate**. Copy the token now — Databricks won't show it again. Go to **SQL Warehouses**, open the warehouse you'll use, and copy its **ID** from the details panel (or the URL). The agent runs queries against this warehouse. When connecting (Section 4), paste your **workspace URL**, **warehouse ID**, and **personal access token**. UnleashX sends the token as an `Authorization: Bearer ` header on every request. A personal access token is as powerful as your account within its granted scopes. Store it securely, set an expiry, and revoke it if it's ever exposed. Prefer a token tied to a service principal with least-privilege grants where possible. ### Permissions this token grants UnleashX | Access | Why UnleashX needs it | | --------------------------- | ---------------------------------------------------------------------- | | Run SQL statements | Execute queries via the SQL Statement Execution API on your warehouse. | | Read Unity Catalog metadata | List and describe catalogs, schemas, and tables. | | Read query results | Fetch the rows a query returns. | | Read/trigger jobs | List jobs and (optionally) run them, subject to your permissions. | ## 4. Connect on UnleashX Go to [https://www.tryunleashx.com](https://www.tryunleashx.com) and open the agent you want to connect. Inside the agent, go to **Data Connectors**. Locate **Databricks** and click **Connect** (or **Add** / **Configure**). Paste your **workspace URL**, **SQL warehouse ID**, and **personal access token**. Click **Connect**. UnleashX validates the token and the Databricks connector shows a **Connected** badge. ### Use Databricks in a Workflow Once connected, you can add **Databricks** to any automation from the **Workflows** builder. Its triggers and tools appear in the Apps panel, marked with an **MCP** badge. Open **Workflows → New Workflow**. On the canvas, click **+ Add Trigger**. In the **Paths** panel, open the **Apps** tab and select **Databricks** — its **Triggers** are listed underneath. Use the search box if you have many connectors. Click the **+** below any node to add a step, then pick **Databricks** again — this time the panel lists its **Actions**. Fill in the fields for the trigger or action you picked. Required fields are marked with a red asterisk (\*). Under **Selected account**, choose an already-connected account, or click **Add Account** to connect one now. Click **Save**. Use **Test** to verify the step, then toggle **Publish** when the workflow is ready. The steps are the same for every connector. For the full workflow builder guide, see [Using MCP in Workflows](/mcp/workflows). ## 5. Available tools | Tool | What it does | Changes data? | | -------------------- | ------------------------------------------------------------------- | ---------------- | | Run Query | Executes a SQL statement on your SQL warehouse and returns results. | Depends on SQL\* | | Get Statement Status | Checks the status of a running/queued SQL statement. | No | | List Catalogs | Lists catalogs in Unity Catalog. | No | | List Schemas | Lists schemas within a catalog. | No | | List Tables | Lists tables within a schema. | No | | Get Table | Describes a table (columns, types, metadata). | No | | Preview Table | Returns a sample of rows from a table. | No | | List Warehouses | Lists SQL warehouses in the workspace. | No | | Start Warehouse | Starts a stopped SQL warehouse. | ✏️ Yes | | Stop Warehouse | Stops a running SQL warehouse. | ✏️ Yes | | List Jobs | Lists jobs defined in the workspace. | No | | Get Job | Retrieves a job's definition and settings. | No | | Run Job | Triggers a job run. | ✏️ Yes | | Get Run Status | Checks the status of a job run. | No | | List Clusters | Lists compute clusters. | No | \*Read-only `SELECT` statements don't change data. If you allow `INSERT`/`UPDATE`/`DELETE`/`MERGE` or DDL, **Run Query can modify or drop data** — restrict the token's grants to read-only if you want the agent limited to queries. ## 6. Example usage **"How many orders did we ship last week? Query the sales.gold.orders table."** → Runs Run Query with a `SELECT COUNT(*) … WHERE ship_date >= …` against your warehouse and returns the number. **"List the tables in the marketing schema and describe the campaigns table."** → Runs List Tables on `marketing`, then Get Table on `campaigns` to return its columns and types. ## 7. Permissions & data access **UnleashX can:** * Run SQL statements on the warehouse you configured. * List and describe catalogs, schemas, and tables, and preview rows. * List and start/stop SQL warehouses. * List, inspect, and trigger jobs — all subject to your token's Unity Catalog and workspace permissions. **UnleashX cannot:** * Access catalogs, schemas, or tables your token's user hasn't been granted. * Query a different workspace than the one you configured. * Manage workspace users, tokens, or admin settings. **To disconnect:** In UnleashX, open **Data Connectors → Databricks → Disconnect**. Then revoke the token in Databricks under **Settings → Developer → Access tokens** (delete the "UnleashX" token). Disconnecting and revoking removes access immediately. ## 8. Troubleshooting | Problem | What it means | How to fix it | | ------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------------------- | | **401 Unauthorized** | The token is invalid, expired, or was revoked. | Generate a new personal access token and reconnect. | | **403 Forbidden / permission denied** | Your user lacks Unity Catalog grants on that object. | Ask an admin to grant `USE CATALOG`/`USE SCHEMA`/`SELECT`, then retry. | | **Warehouse is stopped** | The SQL warehouse isn't running, so queries can't execute. | Use Start Warehouse, or enable auto-start on the warehouse. | | **Wrong workspace URL** | The host doesn't match your workspace. | Reconnect with the exact workspace URL (including cloud/region). | | **Query timeout** | A long query exceeded the execution window. | Narrow the query, add filters, or use a larger warehouse. | For general MCP issues, see [/mcp/integrations](/mcp/integrations). ## 9. Frequently asked questions **Is my data stored by UnleashX?** No. UnleashX runs queries and reads metadata live through the Databricks REST API per request; it doesn't copy your tables. **Can the agent modify or drop data?** Only if your token has write/DDL grants and you run a statement that changes data. For a read-only agent, grant the token `SELECT`-only access. **Does this work on AWS, Azure, and GCP?** Yes — provide the workspace URL for your cloud. Azure Databricks and Databricks on GCP use the same REST APIs. **Should I use a service principal instead of my own token?** For production, yes — a service principal with least-privilege grants is safer than a personal token and isn't tied to an individual user. ## 10. References * Databricks REST API reference: [https://docs.databricks.com/api/workspace/introduction](https://docs.databricks.com/api/workspace/introduction) * SQL Statement Execution API: [https://docs.databricks.com/aws/en/dev-tools/sql-execution-tutorial](https://docs.databricks.com/aws/en/dev-tools/sql-execution-tutorial) * Personal access tokens: [https://docs.databricks.com/aws/en/dev-tools/auth/pat](https://docs.databricks.com/aws/en/dev-tools/auth/pat) * Unity Catalog privileges: [https://docs.databricks.com/aws/en/data-governance/unity-catalog/manage-privileges/](https://docs.databricks.com/aws/en/data-governance/unity-catalog/manage-privileges/) # Dropbox Source: https://docs.unleashx.ai/mcp/dropbox Let your UnleashX agent browse, search, upload, share and version files in Dropbox. # Dropbox > **In one line:** Connect Dropbox so your UnleashX agent can find a file, put a new one where it belongs, share it with a link, restore last week's version, and start a workflow the moment something lands in a folder. | | | | ------------------ | --------------------------------------------------------------------------------------------- | | **Category** | Storage | | **Authentication** | OAuth (Dropbox sign-in) | | **Setup time** | \~2 minutes | | **Difficulty** | Easy | | **Best for** | Teams whose documents live in Dropbox and who want an agent filing, fetching and sharing them | ## 1. Overview Dropbox is cloud file storage. Everything is addressed by **path** (`/Clients/Acme/contract.pdf`), files keep a revision history, and access is granted with shared links or by inviting members. Once connected to UnleashX, your agent can list and search the account, read metadata, create folders, move, copy and delete, upload from a URL, download small files inline, fetch thumbnails and temporary download links, list and restore revisions, create and revoke shared links, invite people to files, share folders, and report the account and its storage usage. One trigger fires when files are added or changed in a folder. Connecting Dropbox to UnleashX means the agent can treat your file store as part of a workflow: a signed contract arrives, gets filed under the right client, and a shareable link goes back to the team. ## 2. What you'll need * A **Dropbox account** (personal or Business). * Permission to authorize UnleashX against it. * An UnleashX agent where you'll add the connector. On a Dropbox Business team, an admin may need to allow third-party apps before authorization will succeed. ## 3. Get your credentials Dropbox uses **OAuth 2.0**. There's no key to create or paste — UnleashX sends you to Dropbox, you sign in once, and Dropbox issues a token that UnleashX refreshes automatically. In your agent's **Data Connectors**, find **Dropbox** and click **Connect** (see Section 4). Choose the Dropbox account whose files the agent should work with. Approve the requested permissions and you'll be returned to UnleashX. There's no key to copy. Access can be revoked at any time from [Dropbox → Settings → Connected apps](https://www.dropbox.com/account/connected_apps). ### Access this grants UnleashX | Access | Why UnleashX needs it | | ----------------------- | ------------------------------------------------------------------------ | | Read files and folders | List, search, and read metadata | | Write files and folders | Create folders, upload, move, copy, delete | | File revisions | List previous revisions and restore one | | Sharing | Create, list and revoke shared links; invite file members; share folders | | Account info | Report the connected account and its storage usage | If a call fails with a scope error, ticking the scope in the Dropbox App Console **isn't enough on its own** — you also have to reconnect. A token already issued doesn't gain scopes retroactively. ## 4. Connect on UnleashX Sign in at [https://www.tryunleashx.com](https://www.tryunleashx.com) and open the agent you want to connect. In the agent, go to **Data Connectors** and find **Dropbox**. Click **Connect**, sign in with Dropbox, and approve access. You'll return to UnleashX and the connector will show a **Connected** badge. ### Use Dropbox in a Workflow Once connected, you can add **Dropbox** to any automation from the **Workflows** builder. Its trigger and tools appear in the Apps panel, marked with an **MCP** badge. Open **Workflows → New Workflow**. On the canvas, click the **+** below a node, then open the **Apps** tab in the **Paths** panel and select **Dropbox** — its **Actions** are listed underneath. Use the search box if you have many connectors. Dropbox actions in the Apps panel Choose the action from **Select Action**, then pick the connected account under **Select Account** — or click **Add Account** to authorize one now. Configuring a Dropbox action step Required fields are marked with a red asterisk (\*). Most tools take a **path** like `/Clients/Acme/contract.pdf`. Click **Save**. Use **Test** to verify the step, then toggle **Publish** when the workflow is ready. The steps are the same for every connector. For the full workflow builder guide, see [Using MCP in Workflows](/mcp/workflows). ## 5. Available tools Paths start at the account root and use forward slashes — `/Invoices/2026/march.pdf`. An empty path means the root folder. Names match the **Workflows** Apps panel, which lists them alphabetically; they're grouped here by what they do. The **Tool ID** is what the agent calls behind the scenes. **Browsing and organising** | Tool | Tool ID | What it does | Required | Changes data? | | -------------------- | ------------------------------ | ----------------------------------------------------------------- | ---------------------- | ------------- | | List Folder | `dropbox_list_folder` | Lists files and folders at a path | — | No | | List Folder Continue | `dropbox_list_folder_continue` | Fetches the next page using the cursor from List Folder | `cursor` | No | | Get Metadata | `dropbox_get_metadata` | Size, rev, modified time and id for one file or folder | `path` | No | | Search | `dropbox_search` | Searches the account by name or content | `query` | No | | Create Folder | `dropbox_create_folder` | Creates a folder | `path` | ✏️ Yes | | Move | `dropbox_move` | Moves or renames a file or folder | `from_path`, `to_path` | ✏️ Yes | | Copy | `dropbox_copy` | Copies a file or folder | `from_path`, `to_path` | ✏️ Yes | | Delete | `dropbox_delete` | Deletes a file or folder — it goes to the trash and is restorable | `path` | ⚠️ Yes | **Getting files in and out** | Tool | Tool ID | What it does | Required | Changes data? | | ------------------ | ---------------------------- | ---------------------------------------------------------------------------- | -------------------- | ------------- | | Upload | `dropbox_upload` | Uploads to Dropbox from a publicly reachable URL | `path`, `source_url` | ✏️ Yes | | Save URL | `dropbox_save_url` | Has Dropbox fetch a URL server-side and save it, with no size limit | `path`, `url` | ✏️ Yes | | Download | `dropbox_download` | Returns a small file's contents inline, as text and base64 — capped at 10 MB | `path` | No | | Get Temporary Link | `dropbox_get_temporary_link` | A direct download URL, valid for four hours | `path` | No | | Get Thumbnail | `dropbox_get_thumbnail` | A base64 JPEG thumbnail of an image or document | `path` | No | For anything large, use **Save URL** — Dropbox pulls the bytes itself and nothing is size-capped. **Upload** and **Download** move the bytes through the request, which is why Download stops at 10 MB. **Versions** | Tool | Tool ID | What it does | Required | Changes data? | | -------------- | ------------------------ | -------------------------------------- | ------------- | ------------- | | List Revisions | `dropbox_list_revisions` | Previous revisions of a file | `path` | No | | Restore | `dropbox_restore` | Restores a file to an earlier revision | `path`, `rev` | ⚠️ Yes | **Sharing** | Tool | Tool ID | What it does | Required | Changes data? | | ------------------------ | ---------------------------------- | -------------------------------------------- | ------------------- | ------------- | | Create Shared Link | `dropbox_create_shared_link` | Creates a shareable link to a file or folder | `path` | ✏️ Yes | | List Shared Links | `dropbox_list_shared_links` | Lists existing shared links | — | No | | Get Shared Link Metadata | `dropbox_get_shared_link_metadata` | Looks up what a shared link points at | `url` | No | | Revoke Shared Link | `dropbox_revoke_shared_link` | Revokes a link so it stops working | `url` | ⚠️ Yes | | Add File Member | `dropbox_add_file_member` | Invites people to a file by email | `file_id`, `emails` | ✏️ Yes | | List File Members | `dropbox_list_file_members` | Lists who has access to a file | `file_id` | No | | Share Folder | `dropbox_share_folder` | Turns a folder into a shared folder | `path` | ✏️ Yes | | List Shared Folders | `dropbox_list_shared_folders` | Lists shared folders this account belongs to | — | No | **Account** | Tool | Tool ID | What it does | Required | Changes data? | | ------------------- | ----------------------------- | --------------------------------------------------- | -------- | ------------- | | Get Current Account | `dropbox_get_current_account` | Name, email and account id of the connected account | — | No | | Get Space Usage | `dropbox_get_space_usage` | Storage used and the account's quota | — | No | **Triggers** | Trigger | Trigger ID | Fires when | | ----------- | --------------------- | ------------------------------------------------ | | On New File | `dropbox_on_new_file` | A file is added or changed in the watched folder | **On New File is exact, not a re-scan.** Dropbox has a real cursor model, so the trigger asks "what changed since this cursor" rather than re-listing the folder and diffing. Nothing is missed between polls and nothing is reported twice. Each watched folder keeps its own cursor, so two workflows watching different paths don't interfere. ## 6. Example usage **"File this signed contract under the Acme folder and send me a link."** Runs **Save URL** into `/Clients/Acme/`, then **Create Shared Link**. **"Find the March invoice."** Runs **Search**, then **Get Temporary Link** for a direct download. **"Someone overwrote the pricing sheet — put back Friday's version."** Runs **List Revisions** → **Restore** with the right `rev`. **"When a file lands in /Inbox, extract the data and log it."** A workflow starts on **On New File** and chains into [PDF.co](/mcp/pdfco) or [OCR](/mcp/ocr). ## 7. Permissions & data access **UnleashX CAN:** * List, search and read files and folders in the connected account. * Create, upload, move, copy, delete and restore. * Create, list and revoke shared links, invite file members, and share folders. * Report the connected account and its storage usage. **UnleashX CANNOT:** * Reach any Dropbox account other than the one you authorized. * Permanently erase anything — deletes go to the Dropbox trash. * Act beyond the scopes granted at authorization. **To disconnect:** In UnleashX, open your agent → **Data Connectors** → **Dropbox** → **Disconnect**, or revoke at [Dropbox → Connected apps](https://www.dropbox.com/account/connected_apps). Revoking takes effect immediately. ## 8. Troubleshooting | Problem | What it means | How to fix it | | -------------------------------------------------------- | ---------------------------------------------------- | --------------------------------------------------------------------------------------------- | | `401 Unauthorized` | The token expired or access was revoked | Reconnect Dropbox in **Data Connectors** | | `403` mentioning a scope | The app's token lacks that permission | Tick the scope in the Dropbox App Console **and** reconnect — an existing token won't gain it | | `path/not_found` | The path is wrong, or it's missing its leading slash | Confirm with **List Folder** or **Search** | | An accented or emoji filename fails with an opaque `400` | Dropbox requires ASCII in its argument header | Handled automatically by the connector — if you still hit it, report the exact path | | Download returns nothing for a big file | **Download** is capped at 10 MB | Use **Get Temporary Link**, or **Save URL** in the other direction | | A folder listing looks truncated | Listings page | Follow the cursor with **List Folder Continue** | | The trigger reports nothing after a path change | The cursor is per watched path | Expected — a new path starts a fresh cursor | For general connector issues, see [/mcp/integrations](/mcp/integrations). ## 9. Frequently asked questions **Does UnleashX store my files?** No. Tools call the Dropbox API live. Only **Download** returns file contents, and only inline into that workflow run. **Can it upload a file from my computer?** Not directly — **Upload** and **Save URL** both take a publicly reachable URL. Put the bytes somewhere fetchable first, or pass a link produced by an earlier workflow step. **Are deletes permanent?** No. They go to the Dropbox trash and can be restored from Dropbox. **Can I connect more than one account?** Yes. Authorize each account as its own connection. **Does it work with Dropbox Business team folders?** It works with what the authorized account can see. Team-wide admin operations aren't covered. ## 10. References * Dropbox API v2 reference: [https://www.dropbox.com/developers/documentation/http/documentation](https://www.dropbox.com/developers/documentation/http/documentation) * OAuth scopes: [https://developers.dropbox.com/oauth-guide](https://developers.dropbox.com/oauth-guide) * Connected apps: [https://www.dropbox.com/account/connected\_apps](https://www.dropbox.com/account/connected_apps) # Facebook Source: https://docs.unleashx.ai/mcp/facebook Let your UnleashX agent send Messenger replies — text, images, video, audio, and files — from your Facebook Page. # Facebook > **In one line:** Connect Facebook so your UnleashX agent can reply to people in Messenger from your Page — sending text, images, video, audio, or files without you opening the inbox. | | | | ------------------ | --------------------------------------------------------------------------- | | **Category** | Communication | | **Authentication** | OAuth (Facebook login) + Page access | | **Setup time** | \~5 minutes | | **Difficulty** | Medium | | **Best for** | Support and sales teams handling Facebook Messenger conversations at volume | ## 1. Overview Facebook Messenger is where a lot of customer conversation actually happens — questions about a product, order updates, support requests — all landing in your Page inbox. Once connected to UnleashX, your agent can send messages to a Messenger conversation on behalf of your Page: plain text, an image, a video, an audio clip, or a file attachment. It works against the Messenger Platform using your Page's access, so it respects Meta's messaging rules. Connecting Facebook to UnleashX means your agent can answer, follow up, and send collateral in the channel the customer already chose, instead of pushing them to email. ## 2. What you'll need * A **Facebook Page** (Messenger works from a Page, not a personal profile). * An admin role on that Page, or permission to authorize apps for it. * An UnleashX account with access to **Data Connectors**. You connect a **Page**, not your personal account. During authorization, pick the Page whose Messenger inbox the agent should send from. Meta enforces a **24-hour messaging window**: outside 24 hours from the user's last message, you can only send using an approved message tag. Sends outside the window without a valid tag are rejected by Meta, not by UnleashX. ## 3. Get your credentials Facebook uses **Meta OAuth**. You do **not** create or paste an API key. UnleashX redirects you to Facebook, you sign in and select a Page, and Meta issues a Page access token to UnleashX automatically. In your agent's **Data Connectors**, find **Facebook** and click **Connect** (see Section 4). Sign in with an account that administers the Page. Choose the Page whose Messenger conversations the agent should handle. If you manage several, select only the ones you want connected. Click **Continue** to grant access and return to UnleashX. There is no key to copy. Access is granted by your Facebook login and can be revoked anytime under **Facebook Settings → Business Integrations**. **Permissions UnleashX requests for Facebook:** | Permission | Why UnleashX needs it | | ----------------------- | ------------------------------------------------------- | | `pages_show_list` | List the Pages you administer so you can pick one. | | `pages_messaging` | Send messages in Messenger conversations from the Page. | | `pages_manage_metadata` | Maintain the Page's messaging subscription. | | `public_profile` | Identify which account authorized the connection. | ## 4. Connect on UnleashX Sign in at [https://www.tryunleashx.com](https://www.tryunleashx.com) and open your agent. In the agent, open **Data Connectors**. Locate **Facebook** and click **Connect** / **Add** / **Configure**. Click **Authorize**, sign in, select your Page, and approve the requested permissions. You'll return to UnleashX and the connector status will show a **Connected** badge. ### Use Facebook in a Workflow Once connected, you can add **Facebook** to any automation from the **Workflows** builder. Its tools appear in the Apps panel, marked with an **MCP** badge. Open **Workflows → New Workflow**. On the canvas, click **+ Add Trigger**. In the **Paths** panel, open the **Apps** tab and select **Facebook** — its **Triggers** are listed underneath. Use the search box if you have many connectors. Facebook triggers in the Apps panel Click the **+** below any node to add a step, then pick **Facebook** again — this time the panel lists its **Actions**. Facebook actions in the Apps panel Fill in the fields for the trigger or action you picked. Required fields are marked with a red asterisk (\*). Under **Selected account**, choose an already-connected account, or click **Add Account** to connect one now. Click **Save**. Use **Test** to verify the step, then toggle **Publish** when the workflow is ready. The steps are the same for every connector. For the full workflow builder guide, see [Using MCP in Workflows](/mcp/workflows). ## 5. Available tools | Tool | What it does | Changes data? | | ------------ | ------------------------------------------------- | ------------- | | Send Message | Sends a text message to a Messenger conversation. | ✏️ Yes | | Send Image | Sends an image attachment. | ✏️ Yes | | Send Video | Sends a video attachment. | ✏️ Yes | | Send Audio | Sends an audio attachment. | ✏️ Yes | | Send File | Sends a file attachment. | ✏️ Yes | Every send targets a recipient by their **page-scoped ID (PSID)** — the ID Messenger assigns a person for your Page. It isn't their profile ID, and it differs per Page. ### Available triggers | Trigger | Fires when | | --------------------- | -------------------------------------------------------------- | | FB Page Lead Received | A lead is submitted through a lead form on your Facebook Page. | Lead forms are a Facebook Ads/Page feature. To receive leads, the form must be published on the connected Page and your app authorized to read them. ## 6. Example usage > **"Reply to that Messenger thread with our shipping policy and attach the returns PDF."** > > Runs **Send Message**, then **Send File**. > **"When a customer asks for the setup guide, send them the walkthrough video."** > > A workflow routes the message and runs **Send Video**. ## 7. Permissions & data access **UnleashX can:** * Send text, image, video, audio, and file messages from the connected Page. * Receive leads submitted through your Page's lead forms. **UnleashX cannot:** * Post to your Page timeline, or comment on posts. * Message people who haven't messaged your Page first. * Send outside Meta's 24-hour messaging window without an approved tag. * Access your personal Facebook profile, friends, or Ads account. **To disconnect:** In UnleashX, open **Data Connectors → Facebook → Disconnect**. Then remove the app under **Facebook Settings → Business Integrations**. Disconnecting and revoking removes access immediately. ## 8. Troubleshooting | Problem | What it means | How to fix it | | ------------------------------------ | -------------------------------------------------- | ------------------------------------------------------------ | | `190 Invalid OAuth access token` | The Page token expired or the Page admin changed. | Reconnect Facebook in **Data Connectors**. | | `10 / 200 Permission denied` | A required permission wasn't granted for the Page. | Re-authorize and confirm the Page is selected. | | **"Outside allowed window"** | More than 24 hours since the user's last message. | Use an approved message tag, or wait for the user to reply. | | **Attachment rejected** | The file type or size exceeds Meta's limits. | Check Meta's attachment limits and re-send a supported file. | | **Message sent to the wrong person** | A profile ID was used instead of the PSID. | Use the page-scoped ID from the incoming conversation. | For general connector issues, see [/mcp/integrations](/mcp/integrations). ## 9. Frequently asked questions **Does UnleashX store my Messenger conversations?** No. It sends through Meta's API per request; it doesn't keep a copy of your inbox. **Can the agent post to my Page timeline?** No. These tools cover Messenger sends only. **Can I connect more than one Page?** Yes. Connect each Page as its own account and pick the right one per workflow step. **Why can't the agent message a specific customer?** Messenger is reply-only — the person has to message your Page first, and the 24-hour window has to be open. ## 10. References * [Messenger Platform documentation](https://developers.facebook.com/docs/messenger-platform) * [Send API reference](https://developers.facebook.com/docs/messenger-platform/reference/send-api) * [Messaging window and message tags](https://developers.facebook.com/docs/messenger-platform/policy/policy-overview) * [Facebook Business Integrations settings](https://www.facebook.com/settings?tab=business_tools) # Firebase Source: https://docs.unleashx.ai/mcp/firebase Read and write your Firestore and Realtime Database data from inside UnleashX agents. # Firebase > **In one line:** Let your UnleashX agent read, create, update, and delete records in your Firebase Firestore and Realtime Database projects. | | | | ------------------ | ----------------------------------------------------------------------------------------------------------------------------- | | **Category** | Storage | | **Authentication** | OAuth (Google / Firebase access token) | | **Setup time** | \~5 minutes | | **Difficulty** | Medium | | **Best for** | Teams whose app or backend data lives in Firebase and who want their agent to look up, log, or update that data in real time. | ## 1. Overview Firebase is Google's app-development platform. Two of its most-used pieces are **Cloud Firestore** (a flexible, document-based database) and the **Realtime Database** (a fast JSON tree that syncs live across clients). Together they store the day-to-day data behind millions of web and mobile apps — users, orders, bookings, chat messages, sensor readings, and more. Once you connect Firebase to UnleashX, your agent can work directly with that data. It can look up a customer record, list everything in a collection, file a new support ticket as a Firestore document, push a live event into the Realtime Database, or clean up stale entries — all from a normal conversation, with no code. Connecting Firebase to UnleashX turns your existing app database into something your voice or automation agent can act on. Instead of manually checking the Firebase Console, your agent reads and writes the same records your app uses, so answers and updates stay accurate and current. ## 2. What you'll need * A Google account with access to the **Firebase / Google Cloud project** you want to connect. * The **project ID** of that Firebase project (visible in the Firebase Console or Google Cloud Console). * Permission to view and edit the relevant Firestore database and/or Realtime Database (typically **Editor** or **Owner**, or a custom role with Datastore / Firebase Database access). * A way to obtain a Google OAuth **access token** for the project (see Section 3). If you don't have admin access to the Firebase project, ask whoever owns it (often an engineer or the project Owner) to either grant you access or generate the access token for you. Connecting only needs a valid token — you do not need to be the project Owner yourself. ## 3. Get your credentials Firebase MCP authenticates with a **Google OAuth 2.0 access token** that has access to your Firebase project. The token is sent to Google's APIs as a Bearer token (and, for the Realtime Database, as an `access_token` query parameter behind the scenes). Go to the [Firebase Console](https://console.firebase.google.com/) and select the project whose data you want to connect. Note its **Project ID** — you'll provide this to your agent. In the [Google Cloud Console](https://console.cloud.google.com/) for the same project, make sure the **Cloud Firestore API** and **Firebase Realtime Database** are enabled under **APIs & Services → Library**. Obtain a Google OAuth 2.0 access token for the project with the scopes below (for example via the Google OAuth flow, the gcloud CLI `gcloud auth print-access-token`, or your service's OAuth integration). UnleashX uses this token as a Bearer credential. **Scopes UnleashX requests for Firebase:** | Scope | Why UnleashX needs it | | -------------------------------------------------- | ---------------------------------------------------- | | `https://www.googleapis.com/auth/cloud-platform` | Access Firebase / Google Cloud project resources. | | `https://www.googleapis.com/auth/firebase` | Read your Firebase projects and their configuration. | | `https://www.googleapis.com/auth/datastore` | Read and write Firestore documents and collections. | | `https://www.googleapis.com/auth/userinfo.email` | Identify which account is connected. | | `https://www.googleapis.com/auth/userinfo.profile` | Read your basic profile (name, picture). | | `openid` | Sign-in / identity verification. | Google OAuth access tokens are **short-lived** — they typically expire after about an hour. Copy it as soon as it's generated. For ongoing use, connect through UnleashX's OAuth flow so the token can be refreshed automatically rather than pasting a one-time token. ### Permissions this token grants UnleashX | Scope / access | Why UnleashX needs it | | ------------------------------ | --------------------------------------------------------------- | | View Firebase / Cloud projects | List your projects so you can pick the right one in your agent. | | Read Firestore data | Fetch, list, and query documents and collections. | | Write Firestore data | Create, update, and delete documents. | | Read Realtime Database | Read values and query paths in the RTDB tree. | | Write Realtime Database | Set, update, push, and delete values in the RTDB tree. | ## 4. Connect on UnleashX Sign in at [https://www.tryunleashx.com](https://www.tryunleashx.com) and open the agent you want to give Firebase access to. In the agent, open **Data Connectors** and find **Firebase** in the list. Click **Connect** / **Add** / **Configure** next to Firebase and authenticate once with your Google / Firebase OAuth access token (header `access-token` or `Authorization: Bearer …`). When the connection is valid, the status changes to a **Connected** badge. Your agent can now use the Firebase tools below. ### Use Firebase in a Workflow Once connected, you can add **Firebase** to any automation from the **Workflows** builder. Its triggers and tools appear in the Apps panel, marked with an **MCP** badge. Open **Workflows → New Workflow**. On the canvas, click **+ Add Trigger**. In the **Paths** panel, open the **Apps** tab and select **Firebase** — its **Triggers** are listed underneath. Use the search box if you have many connectors. Click the **+** below any node to add a step, then pick **Firebase** again — this time the panel lists its **Actions**. Firebase actions in the Apps panel Fill in the fields for the trigger or action you picked. Required fields are marked with a red asterisk (\*). Under **Selected account**, choose an already-connected account, or click **Add Account** to connect one now. Click **Save**. Use **Test** to verify the step, then toggle **Publish** when the workflow is ready. The steps are the same for every connector. For the full workflow builder guide, see [Using MCP in Workflows](/mcp/workflows). ## 5. Available tools This server exposes **21 tools** covering project discovery, Firestore, and the Realtime Database. | Tool name | What it does | Changes data? | | ---------------------------------- | --------------------------------------------------------- | ------------- | | **List Firebase Projects** | List all Google Cloud / Firebase projects you can access. | No | | **Get Firebase Project** | Get details of a specific Firebase project. | No | | **List Firestore Databases** | List the Firestore databases in a project. | No | | **Get Firestore Database** | Get details of a specific Firestore database. | No | | **Firestore: List Collections** | List all collections in a Firestore database. | No | | **Firestore: List Subcollections** | List the subcollections under a specific document. | No | | **Firestore: List Documents** | List documents in a Firestore collection. | No | | **Firestore: Get Document** | Fetch a single Firestore document by its path. | No | | **Firestore: Batch Get Documents** | Fetch multiple Firestore documents in one request. | No | | **Firestore: Query Documents** | Query a collection with filters, ordering, and limits. | No | | **Firestore: Create Document** | Create a new document in a collection. | ✏️ Yes | | **Firestore: Update Document** | Update specific fields in an existing document. | ✏️ Yes | | **Firestore: Delete Document** | Delete a Firestore document by its path. | ⚠️ Yes | | **Realtime DB: List Instances** | List all Realtime Database instances in a project. | No | | **Realtime DB: Get Instance** | Get details of a specific Realtime Database instance. | No | | **Realtime DB: Get** | Read data at a Realtime Database path. | No | | **Realtime DB: Query** | Query a Realtime Database path with filters and limits. | No | | **Realtime DB: Set** | Write (overwrite) data at a Realtime Database path. | ✏️ Yes | | **Realtime DB: Update** | Update fields at a Realtime Database path. | ✏️ Yes | | **Realtime DB: Push** | Push a new child under a path with an auto-generated ID. | ✏️ Yes | | **Realtime DB: Delete** | Remove data at a Realtime Database path. | ⚠️ Yes | **Firestore: Delete Document** and **Realtime DB: Delete** permanently remove data and cannot be undone. **Realtime DB: Set** overwrites everything at the target path. Be specific about the path or document before asking your agent to run these. ## 6. Example usage **"Look up the order with ID `ord_8841` in my `orders` collection and tell me its status."** → Runs **Firestore: Get Document** (or **Firestore: Query Documents**) against the `orders` collection. **"Log a new support ticket in the `tickets` collection: subject 'Login issue', priority high, status open."** → Runs **Firestore: Create Document** to add a new document with those fields. ## 7. Permissions & data access **UnleashX can:** * List your accessible Firebase projects and their Firestore / Realtime databases. * Read, query, create, update, and delete Firestore documents in the connected project. * Read, query, set, update, push, and delete data in the Realtime Database. **UnleashX cannot:** * Access Firebase projects the connected token doesn't have permission for. * Change Firebase security rules, billing, or project configuration. * Touch Firebase Authentication users, Cloud Functions, or Storage buckets (only Firestore and Realtime Database are exposed). **How to disconnect:** In your agent's **Data Connectors**, open Firebase and choose **Disconnect**. This stops UnleashX from using the token immediately. To fully revoke access, also remove UnleashX's authorization in your Google account's third-party app/access settings or rotate the underlying token. ## 8. Troubleshooting | Problem | What it means | How to fix it | | ------------------------------------------- | --------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | | `401 Unauthorized` / "Access token missing" | The token is missing, malformed, or expired. | Reconnect Firebase with a fresh OAuth access token. Tokens expire quickly — use the UnleashX OAuth flow so it refreshes automatically. | | `403 Forbidden` / `PERMISSION_DENIED` | The token is valid but lacks permission for that project, database, or operation. | Make sure the account has Editor/Owner (or Datastore / Firebase Database) access, and that the Firestore / RTDB APIs are enabled. | | `404 Not Found` | The project ID, database ID, collection, or document path doesn't exist. | Double-check the project ID and the exact path. The Firestore database defaults to `(default)`. | | Empty result on a Realtime Database read | The path is empty or the wrong RTDB instance/URL was used. | Use **Realtime DB: List Instances** to confirm the database URL, then retry with the correct path. | | Writes rejected | Security rules block server-side writes, or you're in a read-only context. | Review your Firestore / RTDB security rules and confirm the token's role allows writes. | For general connector issues, see [/mcp/integrations](/mcp/integrations). ## 9. Frequently asked questions **Is my Firebase data stored by UnleashX?** No. UnleashX reads and writes your data on demand through Google's APIs to fulfill each request. It does not maintain a separate copy of your Firestore or Realtime Database. **Can multiple team members connect the same project?** Yes. Each agent connects with its own token. Anyone with a valid token for the project (and the right role) can connect it to their agent. **My token keeps expiring — what do I do?** Google OAuth access tokens are short-lived by design. Connect through UnleashX's OAuth flow so the token is refreshed automatically, instead of pasting a one-time token that expires within the hour. **Does this work with both Firestore and the Realtime Database?** Yes. The **Firestore** tools target Cloud Firestore and the **Realtime DB** tools target the Realtime Database. You can use either or both in the same agent. ## 10. References * [Firebase Console](https://console.firebase.google.com/) * [Cloud Firestore documentation](https://firebase.google.com/docs/firestore) * [Realtime Database documentation](https://firebase.google.com/docs/database) * [Firestore REST API reference](https://firebase.google.com/docs/firestore/reference/rest) * [Firebase / Google Cloud IAM & permissions](https://firebase.google.com/docs/projects/iam/overview) * [Google OAuth 2.0 overview](https://developers.google.com/identity/protocols/oauth2) # Fire Crawl Source: https://docs.unleashx.ai/mcp/firecrawl Let your UnleashX agent crawl, scrape, and search websites, turning pages into clean structured data. # Fire Crawl > **In one line:** Connect Fire Crawl so your UnleashX agent can crawl a whole site, scrape a single page, extract structured data, and search what it has already indexed — in plain language. | | | | ------------------ | ---------------------------------------------------------------------------------------------- | | **Category** | Dev Tools & Automation | | **Authentication** | API key | | **Setup time** | \~2 minutes | | **Difficulty** | Easy | | **Best for** | Research, competitive monitoring, and feeding live web content into an agent or knowledge base | ## 1. Overview Fire Crawl is a web scraping and crawling platform. It handles the messy parts — rendering JavaScript, following links, stripping boilerplate — and returns clean content you can actually use. Once connected to UnleashX, your agent can kick off a crawl across a site, check that crawl's status, scrape a single page, extract readable content or structured fields from a URL, and search previously crawled content. Crawls run asynchronously, so a large site is started once and polled for results. Connecting Fire Crawl to UnleashX means your agent can work from the live web rather than only what it was given: pull a competitor's pricing page, harvest a docs site into a knowledge base, or check whether a page changed. ## 2. What you'll need * A Fire Crawl account. * An **API key** from your Fire Crawl dashboard (see Section 3). * An UnleashX account with access to **Data Connectors**. You paste an **API key**. UnleashX sends it to the Fire Crawl API as an authorization credential on every request. Crawling consumes **credits** on your Fire Crawl plan, and a whole-site crawl can burn through them fast. Scope crawls with a page limit and a URL pattern rather than pointing at a large domain root. Only crawl sites you're allowed to. Respect `robots.txt`, each site's terms of service, and any applicable data-protection rules — that responsibility sits with you, not the connector. ## 3. Get your credentials Fire Crawl authenticates with an **API key** — a single secret string you generate once in your dashboard and paste into UnleashX. There's no OAuth flow and nothing to install. Go to [firecrawl.dev](https://www.firecrawl.dev/) and sign in. If you don't have an account yet, sign up first. In the dashboard, open **API Keys**. Any keys you've already created are listed here. Click **Create API Key**. Give it a name that tells you where it's used — for example **UnleashX**. The name is only a label for you; it doesn't affect what the key can do. A clear name matters later, when you need to know which key to revoke. Fire Crawl displays the key so you can copy it. Copy it right away and paste it somewhere safe (a password manager, or straight into the UnleashX connector). Head to **Data Connectors → Fire Crawl** in UnleashX and paste the key (full walkthrough in Section 4). UnleashX validates it immediately, so you'll know right away if it was copied correctly. ### Good to know Use a **separate key per integration**. A dedicated key can be revoked on its own if it leaks, without breaking every other tool that uses your Fire Crawl account. Your API key **spends your Fire Crawl credits**. Treat it like a password: * Never commit it to git, paste it in a ticket, or share it in chat. * Use a separate key per integration so you can revoke one without disrupting the rest. * If it's ever exposed, delete it in the Fire Crawl dashboard and create a replacement — revoking is instant. ### Permissions this key grants UnleashX | Access | Why UnleashX needs it | | ---------------------- | -------------------------------------------------- | | Start crawls | Crawl a site and index its pages. | | Read crawl status | Check progress and collect results. | | Scrape pages | Fetch a single page's content. | | Extract content | Pull readable text, metadata, or links from a URL. | | Search indexed content | Search pages already crawled. | ## 4. Connect on UnleashX Go to [https://www.tryunleashx.com](https://www.tryunleashx.com) and open the agent you want to connect. Inside the agent, go to **Data Connectors**. Locate **Fire Crawl** and click **Connect** (or **Add** / **Configure**). Paste your **API key** and click **Connect**. UnleashX validates the key and the Fire Crawl connector shows a **Connected** badge. ### Use Fire Crawl in a Workflow Once connected, you can add **Fire Crawl** to any automation from the **Workflows** builder. Its tools appear in the Apps panel, marked with an **MCP** badge. Open **Workflows → New Workflow**. On the canvas, click **+ Add Trigger**. In the **Paths** panel, open the **Apps** tab and select **Fire Crawl** — its **Triggers** are listed underneath. Use the search box if you have many connectors. Click the **+** below any node to add a step, then pick **Fire Crawl** again — this time the panel lists its **Actions**. Fire Crawl actions in the Apps panel Fill in the fields for the trigger or action you picked. Required fields are marked with a red asterisk (\*). Under **Selected account**, choose an already-connected account, or click **Add Account** to connect one now. Click **Save**. Use **Test** to verify the step, then toggle **Publish** when the workflow is ready. The steps are the same for every connector. For the full workflow builder guide, see [Using MCP in Workflows](/mcp/workflows). ## 5. Available tools | Tool | What it does | Changes data? | | ----------------- | ------------------------------------------------------------------- | ------------------- | | Crawl a Website | Crawls an entire website and indexes its pages. | No (external fetch) | | Extract a Website | Extracts readable content, metadata, or links from a single page. | No | | Get Crawl Status | Checks the status or results of a website crawl. | No | | Scrape a Website | Scrapes structured data or elements from a webpage using selectors. | No | | Search a Website | Searches previously crawled or indexed content on a website. | No | **Crawl a Website** is asynchronous. It returns a job ID; use **Get Crawl Status** to poll until the crawl finishes and the pages are available. ## 6. Example usage > **"Crawl docs.acme.com and tell me every page that mentions 'rate limit'."** > > Runs **Crawl a Website**, polls **Get Crawl Status**, then **Search a Website**. > **"Pull the pricing table off competitor.com/pricing."** > > Runs **Scrape a Website** with selectors for the pricing table. ## 7. Permissions & data access **UnleashX can:** * Start crawls and check their status. * Scrape and extract content from URLs you specify. * Search content already crawled under your account. **UnleashX cannot:** * Bypass a site's authentication, paywall, or bot protection. * Exceed your Fire Crawl plan's credit or rate limits. * Change your Fire Crawl account settings or billing. **To disconnect:** In UnleashX, open **Data Connectors → Fire Crawl → Disconnect**. Then delete the key in the Fire Crawl dashboard. Disconnecting and revoking removes access immediately. ## 8. Troubleshooting | Problem | What it means | How to fix it | | -------------------------------- | ------------------------------------------------ | ----------------------------------------------------------------------- | | `401 Unauthorized` | The API key is invalid or was revoked. | Create a new key and reconnect. | | `402 / credits exhausted` | Your plan's crawl credits are used up. | Top up or upgrade your Fire Crawl plan. | | `429 Too Many Requests` | You hit the API rate limit. | Slow down requests and retry after a short wait. | | **Crawl stuck at "in progress"** | A large site is still being processed. | Keep polling **Get Crawl Status**; lower the page limit next time. | | **Empty or partial content** | The page renders client-side or blocks scrapers. | Retry with JavaScript rendering enabled, or scrape a specific selector. | | **Search returns nothing** | The site hasn't been crawled yet. | Run **Crawl a Website** first, then search. | For general connector issues, see [/mcp/integrations](/mcp/integrations). ## 9. Frequently asked questions **Does UnleashX store the crawled pages?** No. Results are returned through the Fire Crawl API per request. If you want to keep them, write them into a knowledge base or a storage connector as a workflow step. **Will crawling cost me?** Yes — crawls and scrapes consume Fire Crawl credits. Scope crawls with a page limit. **Can it crawl pages behind a login?** Not through these tools. Fire Crawl fetches publicly reachable pages. **How long does a crawl take?** It depends on site size and your plan's concurrency. Poll **Get Crawl Status** rather than assuming a fixed wait. ## 10. References * [Fire Crawl documentation](https://docs.firecrawl.dev/) * [Fire Crawl API reference](https://docs.firecrawl.dev/api-reference/introduction) * [Fire Crawl dashboard](https://www.firecrawl.dev/app) # Flodesk Source: https://docs.unleashx.ai/mcp/flodesk Let your UnleashX agent manage Flodesk subscribers, segments, custom fields and workflow enrolment. # Flodesk > **In one line:** Connect Flodesk so your UnleashX agent can add and update subscribers, move them between segments, enrol them into an email workflow, and react when someone new signs up. | | | | ------------------ | -------------------------------------------------------------------------------------------------------- | | **Category** | CRM & Marketing | | **Authentication** | API key | | **Setup time** | \~3 minutes | | **Difficulty** | Easy | | **Best for** | Creators and small teams who run email on Flodesk and want sign-ups and segmenting handled automatically | ## 1. Overview Flodesk is an email marketing platform. People are **subscribers**, they're grouped into **segments**, extra data lives in **custom fields**, and automated email sequences are **workflows**. Once connected to UnleashX, your agent can list and look up subscribers, create or update them one at a time or in bulk, add and remove them from segments, unsubscribe them, manage segments and custom fields, enrol and remove them from Flodesk workflows, list campaigns, and manage webhooks. One polling trigger fires when a new subscriber appears. Connecting Flodesk to UnleashX closes the loop between where a lead comes from and where your email lives: a form submission, a purchase or a conversation adds the person to the right segment and starts the right sequence, without an export-import in between. **Flodesk API keys require a paid plan.** Trial and free accounts can't create one at all, so there's nothing to connect until the account is on a paid plan. ## 2. What you'll need * A **Flodesk account on a paid plan**. * An **API key** from your Flodesk account settings. * An UnleashX agent where you'll add the connector. ## 3. Get your credentials Flodesk authenticates with an **API key**. There's no OAuth flow. Go to [flodesk.com](https://flodesk.com/) and sign in. Go to **My Account → Integrations → API keys**. No API keys section? The account is on a trial or free plan. Flodesk gates API access behind a paid plan. Create a new key and name it something you'll recognise later — for example "UnleashX". Copy the key and store it in your password manager, then add it in **Data Connectors → Flodesk** (Section 4). The key can read and change your whole subscriber list, including unsubscribing people. Treat it like a password and never put it in client-side code. ### Access this key grants UnleashX | Access | Why UnleashX needs it | | ----------------- | ----------------------------------------------------------------- | | Read subscribers | List and look up subscribers by id or email | | Write subscribers | Create, update, unsubscribe, and bulk upsert | | Segments | List, read and create segments, and move subscribers between them | | Custom fields | List and create custom field definitions | | Workflows | List workflows and enrol or remove subscribers | | Campaigns | List email campaigns | | Webhooks | Register, update and delete webhooks | ## 4. Connect on UnleashX Sign in at [https://www.tryunleashx.com](https://www.tryunleashx.com) and open the agent you want to connect. In the agent, go to **Data Connectors** and find **Flodesk**. Click **Connect** / **Add** / **Configure** and complete both fields: | Field | What to enter | | ---------------- | ------------------------------------------- | | **Access Token** | The Flodesk API key from Section 3 | | **Account Name** | A label for this connection inside UnleashX | Then click **Add Tool**. The Flodesk Configuration dialog: Access Token and Account Name The status will switch to a **Connected** badge. ### Use Flodesk in a Workflow Once connected, you can add **Flodesk** to any automation from the **Workflows** builder. Its trigger and tools appear in the Apps panel, marked with an **MCP** badge. Open **Workflows → New Workflow**. On the canvas, click the **+** below a node, then open the **Apps** tab in the **Paths** panel and select **Flodesk** — its **Actions** are listed underneath. Use the search box if you have many connectors. Flodesk actions in the Apps panel Choose the action from **Select Action**, then pick the connected account under **Select Account** — or click **Add Account** to connect one now. Required fields are marked with a red asterisk (\*). Click **Save**. Use **Test** to verify the step, then toggle **Publish** when the workflow is ready. The steps are the same for every connector. For the full workflow builder guide, see [Using MCP in Workflows](/mcp/workflows). ## 5. Available tools Subscribers can be addressed by **id or email interchangeably** — that's what `id_or_email` means, and either really does work. Names match the **Workflows** Apps panel, which lists them alphabetically; they're grouped here by what they act on. The **Tool ID** is what the agent calls behind the scenes. **Subscribers** | Tool | Tool ID | What it does | Required | Changes data? | | ------------------------------- | ----------------------------------------- | --------------------------------------------------------- | ---------------------------- | ------------- | | List Subscribers | `flodesk_list_subscribers` | Lists subscribers, filterable by status and segment | — | No | | Get Subscriber | `flodesk_get_subscriber` | One subscriber by id or email | `id_or_email` | No | | Upsert Subscriber | `flodesk_upsert_subscriber` | Creates a subscriber, or updates them if the email exists | `email` | ✏️ Yes | | Batch Upsert Subscribers | `flodesk_batch_upsert_subscribers` | Creates or updates many in one call | `subscribers` | ✏️ Yes | | Add Subscriber To Segments | `flodesk_add_subscriber_to_segments` | Adds a subscriber to one or more segments | `id_or_email`, `segment_ids` | ✏️ Yes | | Remove Subscriber From Segments | `flodesk_remove_subscriber_from_segments` | Removes them from segments | `id_or_email`, `segment_ids` | ✏️ Yes | | Unsubscribe Subscriber | `flodesk_unsubscribe_subscriber` | Unsubscribes someone from all Flodesk email | `id_or_email` | ⚠️ Yes | **Unsubscribe Subscriber can't be undone from here** — re-subscribing someone requires their own consent, not an API call. Make sure any workflow branch that reaches it is the one you intended. **Segments** | Tool | Tool ID | What it does | Required | Changes data? | | ------------------- | ----------------------------- | ----------------------------- | ------------ | ------------- | | List Segments | `flodesk_list_segments` | Lists segments | — | No | | Get Segment | `flodesk_get_segment` | One segment by id | `segment_id` | No | | Create Segment | `flodesk_create_segment` | Creates a segment | `name` | ✏️ Yes | | List Segment Colors | `flodesk_list_segment_colors` | The colours a segment may use | — | No | **Custom fields** | Tool | Tool ID | What it does | Required | Changes data? | | ---------------------- | -------------------------------- | ------------------------------------------------------ | -------------- | ------------- | | List Custom Fields | `flodesk_list_custom_fields` | Lists custom field definitions, one page at a time | — | No | | List All Custom Fields | `flodesk_list_all_custom_fields` | Every custom field definition in one call, unpaginated | — | No | | Create Custom Field | `flodesk_create_custom_field` | Creates a custom field | `key`, `label` | ✏️ Yes | **Workflows and campaigns** | Tool | Tool ID | What it does | Required | Changes data? | | ------------------------------- | ----------------------------------------- | --------------------------------------------- | ---------------------------- | ------------- | | List Workflows | `flodesk_list_workflows` | Lists Flodesk workflows, filterable by status | — | No | | Add Subscriber To Workflow | `flodesk_add_subscriber_to_workflow` | Enrols subscribers into a workflow | `workflow_id`, `emails` | ✏️ Yes | | Remove Subscriber From Workflow | `flodesk_remove_subscriber_from_workflow` | Removes one subscriber from a workflow | `workflow_id`, `id_or_email` | ✏️ Yes | | List Campaigns | `flodesk_list_campaigns` | Lists email campaigns | — | No | **Webhooks** | Tool | Tool ID | What it does | Required | Changes data? | | -------------- | ------------------------ | --------------------------------------------------- | --------------- | ------------- | | List Webhooks | `flodesk_list_webhooks` | Lists registered webhooks | — | No | | Get Webhook | `flodesk_get_webhook` | One webhook by id | `webhook_id` | No | | Create Webhook | `flodesk_create_webhook` | Registers a webhook so Flodesk pushes events to you | `url`, `events` | ✏️ Yes | | Update Webhook | `flodesk_update_webhook` | Updates a webhook's URL, events or name | `webhook_id` | ✏️ Yes | | Delete Webhook | `flodesk_delete_webhook` | Deletes a webhook | `webhook_id` | ⚠️ Yes | **Triggers** | Trigger | Trigger ID | Fires when | | ----------------- | --------------------------- | ------------------------------------------------------ | | On New Subscriber | `flodesk_on_new_subscriber` | A subscriber appears that the previous poll didn't see | Flodesk's subscriber list has **no sort option**, so "newest first" can't be requested and which end of the list holds new subscribers isn't documented. The trigger reads both the first and the last page and sorts on `created_at` itself — two requests, correct either way, rather than a trigger that silently never fires. ## 6. Example usage **"Add [jane@acme.com](mailto:jane@acme.com) to the Newsletter segment."** Runs **Upsert Subscriber**, then **Add Subscriber To Segments**. **"Import these 300 webinar registrants and tag them."** Runs **Batch Upsert Subscribers** with the segment ids in one call. **"When someone subscribes, create them in the CRM too."** A workflow starts on **On New Subscriber** and chains into your CRM connector. **"Start the onboarding sequence for everyone who bought yesterday."** Runs **List Workflows** to find the id, then **Add Subscriber To Workflow** with their emails. ## 7. Permissions & data access **UnleashX CAN:** * Read, create, update and bulk-upsert subscribers. * Move subscribers between segments and unsubscribe them. * Create segments and custom fields. * Enrol and remove subscribers from workflows, and list campaigns. * Manage webhooks. **UnleashX CANNOT:** * Design or send an email campaign — it can list campaigns, not create or send them. * Re-subscribe someone who has unsubscribed. * Reach any Flodesk account other than the one the key belongs to. **To disconnect:** In UnleashX, open your agent → **Data Connectors** → **Flodesk** → **Disconnect**. To fully revoke access, delete the key in **My Account → Integrations → API keys**. ## 8. Troubleshooting | Problem | What it means | How to fix it | | ------------------------------------------------------- | --------------------------------------- | --------------------------------------------------------------------- | | No API keys section in Flodesk | The account is on a trial or free plan | API keys need a paid plan | | `401 Unauthorized` | The key is wrong or was deleted | Create a new key and reconnect | | A subscriber lookup by email returns nothing | The address differs from the stored one | Try the subscriber id, or find them with **List Subscribers** | | Custom field values don't stick | The field key doesn't exist yet | Create it with **Create Custom Field** first; keys must match exactly | | The trigger fires for existing subscribers on first run | The first poll has no previous snapshot | Expected — later polls only report what's genuinely new | | A segment add silently does nothing | The segment id is wrong | Re-fetch ids with **List Segments** | For general connector issues, see [/mcp/integrations](/mcp/integrations). ## 9. Frequently asked questions **Is my subscriber list stored by UnleashX?** No. Tools call the Flodesk API live with your key. UnleashX keeps only the bookkeeping the trigger needs to know what it has already seen. **Can the agent send an email campaign?** No. It can list campaigns and enrol people into workflows, which is what starts an automated sequence. Composing and sending campaigns stays in Flodesk. **What's the difference between a segment and a workflow?** A segment is a group. A workflow is an automated email sequence people are enrolled into. **Can I connect more than one Flodesk account?** Yes. Add each key as its own connection and tell them apart by **Account Name**. **Does double opt-in apply?** **Upsert Subscriber** and the batch version both accept a `double_optin` option — set it to match how you collected consent. ## 10. References * Flodesk API documentation: [https://developers.flodesk.com/](https://developers.flodesk.com/) * API keys (My Account → Integrations): [https://app.flodesk.com/](https://app.flodesk.com/) # Freshdesk Source: https://docs.unleashx.ai/mcp/freshdesk Let your UnleashX agent manage support tickets, contacts, and companies in Freshdesk. # Freshdesk > **In one line:** Connect Freshdesk so your UnleashX agent can create, update, and triage support tickets, look up contacts and companies, and react to new tickets — all in plain language. | | | | ------------------ | --------------------------------------------------------------------------------------------------------- | | **Category** | Customer Support | | **Authentication** | API key + domain | | **Setup time** | \~3 minutes | | **Difficulty** | Easy | | **Best for** | Support teams that want an AI agent to raise, update, and triage tickets and manage contacts in Freshdesk | ## 1. Overview Freshdesk is Freshworks' cloud-based customer support and help desk platform. It's where your support tickets, contacts, and companies live — the system of record for customer conversations and the SLAs that keep them on track. Once connected to UnleashX, your agent can create, read, update, and delete tickets, list and create contacts and companies, and react to new or updated tickets in a workflow. It works against your live Freshdesk account using your API key, so it respects your account's data and settings. Connecting Freshdesk to UnleashX means your help desk stays current as you talk. Instead of opening Freshdesk to raise a ticket or update a contact, you tell your agent and it makes the change — and workflows can respond the moment a new ticket arrives. ## 2. What you'll need * A Freshdesk account and your **Freshdesk domain** (e.g. `yourcompany.freshdesk.com`). * Your Freshdesk **API key** (see Section 3). * An UnleashX account with access to **Data Connectors**. You paste **two** values: your Freshdesk **domain** and your **API key**. UnleashX sends the key to your domain using HTTP basic authentication. Your Freshdesk **role** determines what the API key can do. If your Freshdesk user can't delete tickets or manage contacts, the agent can't either. Ask an admin to adjust your role if an action is denied. ## 3. Get your credentials Freshdesk MCP authenticates with your **domain** plus an **API key** tied to your Freshdesk user. You copy both once and paste them into UnleashX. There's no OAuth flow and nothing to install. Go to your Freshdesk account and sign in. Your **domain** is the address in your browser — for example `yourcompany.freshdesk.com`. UnleashX needs this so it knows which Freshdesk account to talk to. Click your **profile picture** in the top-right corner, then select **Profile settings**. On the profile settings page, find **Your API Key** in the right-hand panel and copy it. Treat it like a password — it grants access to your account's API with your permissions. Head to **Data Connectors → Freshdesk** in UnleashX and paste **both** your domain and your API key (full walkthrough in Section 4). UnleashX validates them immediately, so you'll know right away if either was copied incorrectly. Your API key grants access to your Freshdesk account. Treat it like a password: * Never commit it to git, paste it in a ticket, or share it in chat. * If it's ever exposed, reset it from **Profile settings** in Freshdesk — the old key stops working, so reconnect UnleashX with the new value. ### Permissions this key grants UnleashX | Access | Why UnleashX needs it | | --------------------------- | ------------------------------------------------------------------- | | Manage tickets | Create, read, update, and delete support tickets. | | Read contacts & companies | List contacts and companies in your account. | | Create contacts & companies | Add new contacts and companies. | | Watch for ticket events | Fire workflow triggers when tickets are created, updated, or noted. | ## 4. Connect on UnleashX Go to [https://www.tryunleashx.com](https://www.tryunleashx.com) and open the agent you want to connect. Inside the agent, go to **Data Connectors**. Locate **Freshdesk** and click **Connect** (or **Add** / **Configure**). Paste your **Freshdesk domain** and your **API key**, then click **Connect**. UnleashX validates the credentials and the Freshdesk connector shows a **Connected** badge. ### Use Freshdesk in a Workflow Once connected, you can add **Freshdesk** to any automation from the **Workflows** builder. Its triggers and tools appear in the Apps panel, marked with an **MCP** badge. Open **Workflows → New Workflow**. On the canvas, click **+ Add Trigger**. In the **Paths** panel, open the **Apps** tab and select **Freshdesk** — its **Triggers** are listed underneath. Use the search box if you have many connectors. Click the **+** below any node to add a step, then pick **Freshdesk** again — this time the panel lists its **Actions**. Fill in the fields for the trigger or action you picked. Required fields are marked with a red asterisk (\*). Under **Selected account**, choose an already-connected account, or click **Add Account** to connect one now. Click **Save**. Use **Test** to verify the step, then toggle **Publish** when the workflow is ready. The steps are the same for every connector. For the full workflow builder guide, see [Using MCP in Workflows](/mcp/workflows). ## 5. Available tools | Tool | What it does | Changes data? | | -------------- | -------------------------------------------------------------- | ------------- | | List Tickets | Lists support tickets (filter by status, priority, requester). | No | | Get Ticket | Retrieves a single ticket by ID. | No | | Create Ticket | Creates a new support ticket. | ✏️ Yes | | Update Ticket | Updates an existing ticket. | ✏️ Yes | | Delete Ticket | Deletes a specified ticket. | ⚠️ Yes | | List Contacts | Lists contacts in your account. | No | | List Companies | Lists companies in your account. | No | | Create Contact | Creates a new contact. | ✏️ Yes | | Create Company | Creates a new company. | ✏️ Yes | ### Available triggers | Trigger | Fires when | | ------------------ | -------------------------------- | | On New Ticket | A new support ticket is created. | | On New Ticket Note | A note is added to a ticket. | | On Contact Created | A new contact is created. | | On Contact Updated | An existing contact is updated. | | On Ticket Updated | An existing ticket is updated. | ## 6. Example usage **"Open a high-priority ticket for [acme@customer.com](mailto:acme@customer.com) about a failed login and assign it to the support queue."** → Runs Create Ticket with the requester, subject, and high priority set. **"When a new ticket comes in tagged 'billing', create a contact for the requester if we don't have one."** → Uses the On New Ticket trigger, then runs Create Contact for the requester in the workflow. ## 7. Permissions & data access **UnleashX can:** * Read and list tickets, contacts, and companies. * Create and update tickets, and create contacts and companies. * Delete tickets where your role allows (this tool is clearly marked ⚠️). * React to new and updated tickets and notes via workflow triggers. **UnleashX cannot:** * Access Freshdesk accounts other than the domain you connected. * Do anything your Freshdesk role doesn't permit. * Change your Freshdesk account password or admin settings. **To disconnect:** In UnleashX, open **Data Connectors → Freshdesk → Disconnect**. Then reset the API key in Freshdesk under **Profile settings**. Disconnecting and resetting removes access immediately. ## 8. Troubleshooting | Problem | What it means | How to fix it | | ------------------------- | ----------------------------------------------------- | ----------------------------------------------------------------- | | **401 Unauthorized** | The API key is invalid or was reset. | Copy the current key from **Profile settings** and reconnect. | | **Wrong domain** | The domain doesn't match your account. | Reconnect using your exact `*.freshdesk.com` domain. | | **403 Forbidden** | Your Freshdesk role lacks permission for that action. | Ask an admin to grant the needed permission, then retry. | | **404 Not Found** | The ticket, contact, or company ID doesn't exist. | Confirm the record exists, or use a List tool to locate it first. | | **429 Too Many Requests** | You hit Freshdesk's API rate limit. | Slow down requests and retry after a moment. | For general MCP issues, see [/mcp/integrations](/mcp/integrations). ## 9. Frequently asked questions **Is my support data stored by UnleashX?** No. UnleashX reads and writes your records live through the Freshdesk API per request; it doesn't keep a copy of your tickets or contacts. **Why do I need both a domain and an API key?** The API key authenticates you, and the domain tells UnleashX which Freshdesk account to reach. Both are needed for the connection to work. **Can the agent really delete tickets?** Yes — Delete Ticket (marked ⚠️) makes a permanent change in Freshdesk, and only works if your role allows it. Use it deliberately. **Where do the triggers fire?** Triggers like On New Ticket run inside Workflows — they start an automation the moment a matching event happens in Freshdesk. ## 10. References * Freshdesk API documentation: [https://developers.freshdesk.com/api/](https://developers.freshdesk.com/api/) * API key & authentication: [https://developers.freshdesk.com/api/#authentication](https://developers.freshdesk.com/api/#authentication) * Freshdesk support: [https://support.freshdesk.com/](https://support.freshdesk.com/) # Gmail Source: https://docs.unleashx.ai/mcp/gmail Let your UnleashX agent read, send, organize, and manage Gmail email on your behalf. # Gmail > **In one line:** Connect your Gmail account so your UnleashX agent can send, search, label, and triage email for you. | | | | ------------------ | ------------------------------------------------------------------------------------------ | | **Category** | Communication | | **Authentication** | OAuth (Google sign-in) | | **Setup time** | \~2 minutes | | **Difficulty** | Easy | | **Best for** | Teams who want an AI assistant to draft, send, and organize email without leaving UnleashX | ## 1. Overview Gmail is Google's email service, part of Google Workspace. It holds your inbox, sent mail, drafts, labels, and attachments. Once connected, your UnleashX agent can send emails (including CC/BCC and attachments), search and read messages, create and send drafts, apply or remove labels, and triage your inbox — marking messages read/unread, important, archived, or trashed. Connecting Gmail to UnleashX turns email into something your agent can act on directly: it can answer "did the invoice from Acme arrive?", send a follow-up, or label and archive a thread — all from a natural-language request, so you spend less time clicking around your inbox. ## 2. What you'll need Any personal Gmail account or a Google Workspace account with Gmail enabled. You must be able to complete the Google sign-in and approve the requested permissions. On Workspace accounts, your admin may restrict third-party app access. An agent in your UnleashX workspace where you'll add the Gmail connector. No admin access? On personal Gmail you can connect yourself. On a managed Google Workspace account, your admin may need to allow UnleashX in the Google Admin console before the authorize step succeeds. ## 3. Get your credentials Gmail uses **Google OAuth 2.0**. You do **not** create or paste an API key. Instead, UnleashX redirects you to Google, you sign in once, and Google issues an access token to UnleashX automatically. In your agent's **Data Connectors**, find **Gmail** and click **Connect** (see Section 4). This launches Google's secure sign-in page. Choose the Google account whose Gmail you want to connect. Google shows exactly what UnleashX is asking for. Click **Allow** to grant access. Google then sends you back to UnleashX and the connection completes. There is no key to copy. Access is granted by your Google sign-in, and you can revoke it at any time from your [Google Account permissions page](https://myaccount.google.com/permissions). **Scopes UnleashX requests for Gmail:** | Scope | Why UnleashX needs it | | -------------------------------------------------- | ---------------------------------------------------------------------------- | | `https://www.googleapis.com/auth/gmail.readonly` | Read messages, search emails, list labels and attachments. | | `https://www.googleapis.com/auth/gmail.send` | Send emails and send drafts on your behalf. | | `https://www.googleapis.com/auth/gmail.compose` | Create drafts in your account. | | `https://www.googleapis.com/auth/gmail.modify` | Apply/remove labels, mark read/unread/important, archive, and trash/untrash. | | `https://www.googleapis.com/auth/userinfo.email` | Identify which account is connected. | | `https://www.googleapis.com/auth/userinfo.profile` | Read your basic profile (name, picture). | | `openid` | Sign-in / identity verification. | ## 4. Connect on UnleashX Sign in at [https://www.tryunleashx.com](https://www.tryunleashx.com) and open the agent you want to give email access to. In the agent, open **Data Connectors**. Locate **Gmail** and click **Connect** / **Add** / **Configure**. Click **Authorize**, sign in with Google, and approve the requested permissions. You'll return to UnleashX and the connector status will show a **Connected** badge. ### Use Gmail in a Workflow Once connected, you can add **Gmail** to any automation from the **Workflows** builder. Its triggers and tools appear in the Apps panel, marked with an **MCP** badge. Open **Workflows → New Workflow**. On the canvas, click **+ Add Trigger**. In the **Paths** panel, open the **Apps** tab and select **Gmail** — its **Triggers** are listed underneath. Use the search box if you have many connectors. Gmail triggers in the Apps panel Click the **+** below any node to add a step, then pick **Gmail** again — this time the panel lists its **Actions**. Gmail actions in the Apps panel Fill in the fields for the trigger or action you picked. Required fields are marked with a red asterisk (\*). Under **Selected account**, choose an already-connected account, or click **Add Account** to connect one now. Click **Save**. Use **Test** to verify the step, then toggle **Publish** when the workflow is ready. The steps are the same for every connector. For the full workflow builder guide, see [Using MCP in Workflows](/mcp/workflows). ## 5. Available tools | Tool | What it does | Changes data? | | ------------------------------------ | --------------------------------------------------- | ------------- | | Send Email | Send an email, with optional CC/BCC. | ✏️ Yes | | Fetch Recent Emails | Fetch recent emails from a folder (e.g. INBOX). | No | | Download Attachment | Download an attachment from a URL. | No | | List Attachments | List attachments on a message (name, size, id). | No | | Send Email with URL Attachment | Send an email with an attachment pulled from a URL. | ✏️ Yes | | Get Prestaged Attachment | Get the path of a pre-staged attachment. | No | | Send Email with Prestaged Attachment | Send an email with a pre-staged attachment. | ✏️ Yes | | Get Profile | Get the connected Gmail account's profile info. | No | | Search Emails | Search emails using Gmail search syntax. | No | | Get Email | Get a specific email by message ID. | No | | Create Draft | Create a draft email. | ✏️ Yes | | Send Draft | Send an existing draft. | ✏️ Yes | | Add Label | Add a label to a message. | ✏️ Yes | | Remove Label | Remove a label from a message. | ✏️ Yes | | Fetch Labels | List all available Gmail labels. | No | | Create Label | Create a new Gmail label. | ✏️ Yes | | Trash Email | Move an email to Trash. | ⚠️ Yes | | Untrash Email | Restore an email from Trash. | ✏️ Yes | | Mark as Read | Mark a message as read. | ✏️ Yes | | Mark as Unread | Mark a message as unread. | ✏️ Yes | | Mark as Important | Mark a message as important. | ✏️ Yes | | Mark as Unimportant | Remove the important marker. | ✏️ Yes | | Archive Email | Archive a message (remove from inbox). | ✏️ Yes | | Unarchive Email | Unarchive a message (return to inbox). | ✏️ Yes | ## 6. Example usage > **"Send an email to [maria@acme.com](mailto:maria@acme.com) with the subject 'Q3 report' and attach the file at this link."** > > Runs **Send Email with URL Attachment** (or **Send Email** if there's no attachment). > **"Find the unread emails from billing and mark them as read."** > > Runs **Search Emails** to find them, then **Mark as Read** on each. ## 7. Permissions & data access **UnleashX can:** * Send emails and send your drafts. * Read messages and search your mailbox. * Create drafts and labels. * Apply/remove labels and mark messages read, unread, important, archived, or trashed. **UnleashX cannot:** * Permanently delete email (trashing is reversible via untrash). * Change your Gmail account password or security settings. * Access other Google services unless you connect those integrations separately. **To disconnect:** In UnleashX, open **Data Connectors → Gmail → Disconnect**. You can also revoke access at [https://myaccount.google.com/permissions](https://myaccount.google.com/permissions). Revoking takes effect immediately. The connection authenticates each request with your Google OAuth access token (resolved from an `access-token` header, a `gmail_access_token` header, or an `Authorization: Bearer` header, falling back to your UnleashX session), and refreshes it automatically when it expires. ## 8. Troubleshooting | Problem | What it means | How to fix it | | ----------------------------- | -------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | | `401 Unauthorized` | The access token is missing or expired. | Reconnect Gmail in **Data Connectors** to refresh the Google sign-in. | | `403 Forbidden` | The granted scopes don't cover the action, or admin policy blocks the app. | Re-authorize and approve all requested scopes; on Workspace, ask your admin to allow UnleashX. | | `Invalid grant` after a while | Google revoked or expired the refresh token. | Disconnect and reconnect to start a fresh OAuth session. | | Attachment fails to send | The source URL is unreachable or too large. | Verify the URL is public/valid and within Gmail's 25 MB attachment limit. | For general connector issues, see [/mcp/integrations](/mcp/integrations). ## 9. Frequently asked questions **Is my email stored by UnleashX?** UnleashX reads and acts on messages to fulfill your requests. It does not create a permanent copy of your mailbox; it works through Google's API in real time. **Can multiple team members connect Gmail?** Yes. Each person authorizes their own Google account, and the agent acts as that connected user. **How do I rotate or revoke access?** There's no key to rotate. To revoke, disconnect in UnleashX or remove UnleashX at [https://myaccount.google.com/permissions](https://myaccount.google.com/permissions), then reconnect to grant fresh access. ## 10. References * [Gmail API documentation](https://developers.google.com/gmail/api) * [Gmail API OAuth scopes](https://developers.google.com/gmail/api/auth/scopes) * [Google Cloud Console](https://console.cloud.google.com/) * [Manage third-party access to your Google Account](https://myaccount.google.com/permissions) # Google Ad Manager Source: https://docs.unleashx.ai/mcp/google-ad-manager Let your UnleashX agent read networks, orders, line items, and reports in Google Ad Manager. # Google Ad Manager > **In one line:** Connect Google Ad Manager so your UnleashX agent can look up your network, browse orders and line items, and pull reports — all in plain language. | | | | ------------------ | --------------------------------------------------------------------------------------------------------------------- | | **Category** | Advertising & Analytics | | **Authentication** | OAuth (Google) | | **Setup time** | \~3 minutes | | **Difficulty** | Easy | | **Best for** | Ad ops and revenue teams that want an AI agent to check orders, line items, and delivery reports in Google Ad Manager | ## 1. Overview Google Ad Manager is Google's ad serving and inventory management platform. It's where publishers organize their network, sell inventory through orders and line items, and measure delivery with reports. Once connected to UnleashX, your agent can read your network details, list and open orders, browse the line items inside them, and pull the reports you use to track delivery and revenue. It works against your live Ad Manager network using your own Google sign-in, so it respects your role and permissions. This connector is read-focused — it looks things up rather than changing your ad setup. Connecting Google Ad Manager to UnleashX means you can ask about your inventory in plain language. Instead of clicking through the Ad Manager UI to check an order or find a line item, you ask your agent and it fetches the answer. ## 2. What you'll need * A Google Ad Manager account with access to a **network**. * Your Ad Manager **network code** (shown in the Ad Manager UI and in the URL). * A user role in Ad Manager that can view orders, line items, and reports. * The **Google Ad Manager API** enabled for your network. * An UnleashX account with access to **Data Connectors**. No API key to paste. Google Ad Manager uses OAuth — you click **Authorize** and sign in with Google. You'll also supply your **network code** so the agent knows which network to read. Google enforces your Ad Manager **role**. The **Google Ad Manager API** must be enabled for your network, and your Google user needs a role that can view orders, line items, and reports — otherwise the agent can't read them either. Ask your network admin to adjust access if needed. ## 3. Get your credentials There's no key to copy. Authentication runs through Google's secure OAuth sign-in. Connecting Google Ad Manager (Section 4) opens a Google **Sign in** window. Sign in with the Google account that has access to your Ad Manager network. Complete two-factor authentication if prompted. Google shows the access UnleashX is requesting (see the scopes table). Click **Allow**. Provide your Ad Manager **network code** so UnleashX knows which network to read. You can find it in the Ad Manager UI (Admin → Global settings) or in the page URL. Google redirects you back automatically and the connector links to your network. Behind the scenes UnleashX authenticates with Google using an OAuth token — you never handle the token yourself. **Permissions (Google OAuth scopes) UnleashX requests:** | Scope | Why UnleashX needs it | | ------------------------------------- | --------------------------------------------------------------------- | | `https://www.googleapis.com/auth/dfp` | Read your Ad Manager network, orders, line items, and reports. | | `openid` | Identify the signed-in Google account. | | `email` | Confirm which Google account is connected. | | `offline_access` | Refresh access automatically so you don't re-authorize every session. | Google OAuth scopes are granular. UnleashX requests only what these tools need, and Google — together with your Ad Manager role — enforces the limits. ## 4. Connect on UnleashX Go to [https://www.tryunleashx.com](https://www.tryunleashx.com) and open the agent you want to connect. Inside the agent, go to **Data Connectors**. Locate **Google Ad Manager** and click **Connect** (or **Add** / **Configure**). Click **Authorize**, sign in with Google, accept the scopes, and enter your network code. You return to UnleashX and the Google Ad Manager connector shows a **Connected** badge. ### Use Google Ad Manager in a Workflow Once connected, you can add **Google Ad Manager** to any automation from the **Workflows** builder. Its triggers and tools appear in the Apps panel, marked with an **MCP** badge. Open **Workflows → New Workflow**. On the canvas, click **+ Add Trigger**. In the **Paths** panel, open the **Apps** tab and select **Google Ad Manager** — its **Triggers** are listed underneath. Use the search box if you have many connectors. Click the **+** below any node to add a step, then pick **Google Ad Manager** again — this time the panel lists its **Actions**. Fill in the fields for the trigger or action you picked. Required fields are marked with a red asterisk (\*). Under **Selected account**, choose an already-connected account, or click **Add Account** to connect one now. Click **Save**. Use **Test** to verify the step, then toggle **Publish** when the workflow is ready. The steps are the same for every connector. For the full workflow builder guide, see [Using MCP in Workflows](/mcp/workflows). ## 5. Available tools | Tool | What it does | Changes data? | | --------------- | ----------------------------------------------------------------- | ------------- | | Get Network | Retrieves your Ad Manager network details. | No | | List Orders | Lists orders in the network (filter by status, advertiser, date). | No | | Get Order | Retrieves a single order by ID. | No | | List Line Items | Lists line items (optionally within an order). | No | | Get Line Item | Retrieves a single line item by ID. | No | | List Reports | Lists saved reports available in the network. | No | ### Available triggers | Trigger | Fires when | | ------------ | -------------------------------------------------- | | On New Order | A new order is created in your Ad Manager network. | ## 6. Example usage **"Show me all active orders for the Acme advertiser this quarter."** → Runs List Orders filtered by advertiser and status, then returns the active orders. **"What line items are in order 12345, and which one is under-delivering?"** → Runs Get Order for 12345, then List Line Items on it and reviews their delivery. ## 7. Permissions & data access **UnleashX can:** * Read your network details. * List and open orders and line items. * List saved reports in the network. **UnleashX cannot:** * Create, edit, or delete orders, line items, or reports (this connector is read-focused). * Do anything your Ad Manager role doesn't permit. * Access a different network than the network code you provided. **To disconnect:** In UnleashX, open **Data Connectors → Google Ad Manager → Disconnect**. You can also revoke access at `https://myaccount.google.com/permissions` (Third-party apps with account access). Disconnecting revokes access immediately. ## 8. Troubleshooting | Problem | What it means | How to fix it | | ----------------------- | ---------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | | **401 Unauthorized** | The Google token expired or is invalid. | Reconnect Google Ad Manager in **Data Connectors** and sign in again. | | **403 Forbidden** | Your Ad Manager role lacks permission, or the API isn't enabled. | Enable the Google Ad Manager API and ask your network admin for a role that can view orders and reports. | | **Wrong network** | The agent is reading a different Ad Manager network. | Reconnect and enter the correct network code. | | **No data returned** | Your role can't see those orders or line items. | Ask your network admin to grant access to the relevant teams/inventory. | | **Rate limit exceeded** | Ad Manager's API quota was reached. | Wait for the quota to reset, then retry. | For general MCP issues, see [/mcp/integrations](/mcp/integrations). ## 9. Frequently asked questions **Is my ad data stored by UnleashX?** No. UnleashX reads your network, orders, and reports live through the Ad Manager API per request; it doesn't keep a copy. **Which network does the agent use?** The one whose network code you entered when connecting. To read a different network, reconnect with that network code. **Can the agent change my orders or line items?** No. This connector is read-focused — it looks things up but doesn't create or edit your ad setup. **Why do I need to enable the Google Ad Manager API?** The API must be turned on for your network before any tool can read data. Your Google user also needs an Ad Manager role with view access. ## 10. References * Google Ad Manager API documentation: [https://developers.google.com/ad-manager/api/start](https://developers.google.com/ad-manager/api/start) * Google Ad Manager API authentication: [https://developers.google.com/ad-manager/api/authentication](https://developers.google.com/ad-manager/api/authentication) * Finding your network code: [https://support.google.com/admanager/answer/7674889](https://support.google.com/admanager/answer/7674889) * Google account permissions / revoke access: [https://myaccount.google.com/permissions](https://myaccount.google.com/permissions) # Google Analytics Source: https://docs.unleashx.ai/mcp/google-analytics Let your UnleashX agent read GA4 accounts and properties and run standard and realtime analytics reports. # Google Analytics > **In one line:** Connect Google Analytics so your UnleashX agent can list your GA4 accounts and properties and run standard and realtime reports — all in plain language. | | | | ------------------ | -------------------------------------------------------------------------------------------------------------------------- | | **Category** | Advertising & Analytics | | **Authentication** | OAuth (Google) | | **Setup time** | \~3 minutes | | **Difficulty** | Easy | | **Best for** | Marketing and analytics teams that want an AI agent to pull GA4 metrics and realtime traffic without opening the dashboard | ## 1. Overview Google Analytics 4 (GA4) is Google's web and app analytics platform. It organizes your data into accounts and properties, and reports on the traffic, engagement, and conversions those properties collect. Once connected to UnleashX, your agent can list the GA4 accounts and properties you can access, look up a property's details, and run both standard analytics reports and realtime reports. It works against your live GA4 data using your own Google sign-in, so it respects your role and permissions. This connector is read-focused — it reads metrics rather than changing your analytics setup. Connecting Google Analytics to UnleashX turns your metrics into something you can ask about directly. Instead of building a report in the GA4 UI, you ask your agent for the numbers and it runs the report for you. ## 2. What you'll need * A Google Analytics account with at least one **GA4 property**. * The **property ID** of the property you want to report on (shown in Admin → Property Settings). * A user role on the property that can view reports (Viewer or above). * The **Google Analytics Data API** enabled for your project. * An UnleashX account with access to **Data Connectors**. No API key to paste. Google Analytics uses OAuth — you click **Authorize** and sign in with Google. Google enforces your Analytics **role**. The **Google Analytics Data API** must be enabled, and your Google user needs at least **Viewer** access on the property — otherwise the agent can't read its reports either. Ask your Analytics admin to grant access if needed. ## 3. Get your credentials There's no key to copy. Authentication runs through Google's secure OAuth sign-in. Connecting Google Analytics (Section 4) opens a Google **Sign in** window. Sign in with the Google account that has access to your GA4 property. Complete two-factor authentication if prompted. Google shows the access UnleashX is requesting (see the scopes table). Click **Allow**. If you have access to multiple GA4 properties, note the **property ID** of the one you want to report on. The agent uses it when running reports. Google redirects you back automatically and the connector links to your Analytics account. Behind the scenes UnleashX authenticates with Google using an OAuth token — you never handle the token yourself. **Permissions (Google OAuth scopes) UnleashX requests:** | Scope | Why UnleashX needs it | | ---------------------------------------------------- | --------------------------------------------------------------------- | | `https://www.googleapis.com/auth/analytics.readonly` | Read your GA4 accounts, properties, and report data. | | `openid` | Identify the signed-in Google account. | | `email` | Confirm which Google account is connected. | | `offline_access` | Refresh access automatically so you don't re-authorize every session. | Google OAuth scopes are granular. UnleashX requests read-only access, and Google — together with your Analytics role — enforces the limits. ## 4. Connect on UnleashX Go to [https://www.tryunleashx.com](https://www.tryunleashx.com) and open the agent you want to connect. Inside the agent, go to **Data Connectors**. Locate **Google Analytics** and click **Connect** (or **Add** / **Configure**). Click **Authorize**, sign in with Google, and accept the scopes. You return to UnleashX and the Google Analytics connector shows a **Connected** badge. ### Use Google Analytics in a Workflow Once connected, you can add **Google Analytics** to any automation from the **Workflows** builder. Its triggers and tools appear in the Apps panel, marked with an **MCP** badge. Open **Workflows → New Workflow**. On the canvas, click **+ Add Trigger**. In the **Paths** panel, open the **Apps** tab and select **Google Analytics** — its **Triggers** are listed underneath. Use the search box if you have many connectors. Click the **+** below any node to add a step, then pick **Google Analytics** again — this time the panel lists its **Actions**. Fill in the fields for the trigger or action you picked. Required fields are marked with a red asterisk (\*). Under **Selected account**, choose an already-connected account, or click **Add Account** to connect one now. Click **Save**. Use **Test** to verify the step, then toggle **Publish** when the workflow is ready. The steps are the same for every connector. For the full workflow builder guide, see [Using MCP in Workflows](/mcp/workflows). ## 5. Available tools | Tool | What it does | Changes data? | | ------------------- | ------------------------------------------------------------- | ------------- | | List Accounts | Lists the GA4 accounts you can access. | No | | List Properties | Lists GA4 properties within an account. | No | | Get Property | Retrieves a single property's details by ID. | No | | Run Report | Runs a standard GA4 report (metrics, dimensions, date range). | No | | Run Realtime Report | Runs a realtime report of current activity. | No | ### Available triggers | Trigger | Fires when | | --------------- | -------------------------------------------------------- | | On New Property | A new GA4 property appears in an account you can access. | ## 6. Example usage **"How many users and sessions did our main site get last week?"** → Runs Run Report with users and sessions metrics over the last-week date range and returns the totals. **"How many people are on the site right now, and which pages are they viewing?"** → Runs Run Realtime Report to return active users and their current pages. ## 7. Permissions & data access **UnleashX can:** * List the GA4 accounts and properties you can access. * Read a property's details. * Run standard and realtime analytics reports. **UnleashX cannot:** * Change property settings, data streams, or your analytics configuration (this connector is read-focused). * Do anything your Analytics role doesn't permit. * Access properties your Google user hasn't been granted. **To disconnect:** In UnleashX, open **Data Connectors → Google Analytics → Disconnect**. You can also revoke access at `https://myaccount.google.com/permissions` (Third-party apps with account access). Disconnecting revokes access immediately. ## 8. Troubleshooting | Problem | What it means | How to fix it | | -------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------------------------------- | | **401 Unauthorized** | The Google token expired or is invalid. | Reconnect Google Analytics in **Data Connectors** and sign in again. | | **403 Forbidden** | Your Analytics role lacks access, or the API isn't enabled. | Enable the Google Analytics Data API and ask your admin for at least Viewer access. | | **Property not found** | The property ID is wrong or your user can't see it. | Confirm the property ID in Admin → Property Settings and that you have access. | | **No data / empty report** | The date range has no data, or the property is new. | Widen the date range or verify the property is collecting data. | | **Rate limit exceeded** | The Analytics Data API quota was reached. | Wait for the quota to reset, then retry. | For general MCP issues, see [/mcp/integrations](/mcp/integrations). ## 9. Frequently asked questions **Is my analytics data stored by UnleashX?** No. UnleashX runs reports live through the Google Analytics Data API per request; it doesn't keep a copy of your metrics. **Which property does the agent report on?** The property whose ID you point it at. If you manage several, the agent can list them and you specify which to use. **Can the agent change my Analytics setup?** No. This connector is read-focused — it reads accounts, properties, and reports but doesn't change your configuration. **Does this work with Universal Analytics?** No. This connector uses the GA4 Data API. Universal Analytics properties have been retired by Google. ## 10. References * Google Analytics Data API (GA4) documentation: [https://developers.google.com/analytics/devguides/reporting/data/v1](https://developers.google.com/analytics/devguides/reporting/data/v1) * Google Analytics Admin API: [https://developers.google.com/analytics/devguides/config/admin/v1](https://developers.google.com/analytics/devguides/config/admin/v1) * Finding your GA4 property ID: [https://support.google.com/analytics/answer/9539598](https://support.google.com/analytics/answer/9539598) * Google account permissions / revoke access: [https://myaccount.google.com/permissions](https://myaccount.google.com/permissions) # Google Calendar Source: https://docs.unleashx.ai/mcp/google-calendar Let your UnleashX agent check availability and create, update, and manage Google Calendar events. # Google Calendar > **In one line:** Connect Google Calendar so your UnleashX agent can find free time, book meetings, and manage events for you. | | | | ------------------ | ------------------------------------------------------------------------------------ | | **Category** | Productivity | | **Authentication** | OAuth (Google sign-in) | | **Setup time** | \~2 minutes | | **Difficulty** | Easy | | **Best for** | Scheduling, availability checks, and automated meeting booking from natural language | ## 1. Overview Google Calendar is Google's scheduling service. It stores your calendars, events, attendees, and free/busy information. Once connected, your UnleashX agent can list your calendars, check availability, find open time slots, create and update events (including meetings with attendees), add quick events from plain text, and delete events. Connecting Google Calendar to UnleashX means scheduling becomes conversational: ask "when am I free Thursday afternoon?" or "book a 30-minute call with Sam tomorrow at 4pm," and the agent reads your calendar and acts — no manual clicking through day views. ## 2. What you'll need Any personal Google account or a Google Workspace account with Calendar enabled. You must be able to complete the Google sign-in and approve the requested permissions. An agent in your UnleashX workspace where you'll add the Calendar connector. No admin access? On a managed Google Workspace account, your admin may need to allow UnleashX in the Google Admin console before authorization succeeds. ## 3. Get your credentials Google Calendar uses **Google OAuth 2.0**. You do **not** create or paste an API key. UnleashX redirects you to Google, you sign in once, and Google issues an access token to UnleashX automatically. In your agent's **Data Connectors**, find **Google Calendar** and click **Connect** (see Section 4). This launches Google's secure sign-in page. Choose the Google account whose calendar you want to connect. Google shows exactly what UnleashX is asking for. Click **Allow** to grant access and return to UnleashX. There is no key to copy. Access is granted by your Google sign-in and can be revoked anytime at your [Google Account permissions page](https://myaccount.google.com/permissions). **Scopes UnleashX requests for Google Calendar:** | Scope | Why UnleashX needs it | | --------------------------------------------------- | -------------------------------------------------------------- | | `https://www.googleapis.com/auth/calendar` | Read and manage calendars and events (create, update, delete). | | `https://www.googleapis.com/auth/calendar.events` | Create, update, and delete individual events. | | `https://www.googleapis.com/auth/calendar.readonly` | List calendars and read events and free/busy info. | | `https://www.googleapis.com/auth/userinfo.email` | Identify which account is connected. | | `https://www.googleapis.com/auth/userinfo.profile` | Read your basic profile (name, picture). | | `openid` | Sign-in / identity verification. | ## 4. Connect on UnleashX Sign in at [https://www.tryunleashx.com](https://www.tryunleashx.com) and open your agent. In the agent, open **Data Connectors**. Locate **Google Calendar** and click **Connect** / **Add** / **Configure**. Click **Authorize**, sign in with Google, and approve the requested permissions. You'll return to UnleashX and the connector status will show a **Connected** badge. ### Use Google Calendar in a Workflow Once connected, you can add **Google Calendar** to any automation from the **Workflows** builder. Its triggers and tools appear in the Apps panel, marked with an **MCP** badge. Open **Workflows → New Workflow**. On the canvas, click **+ Add Trigger**. In the **Paths** panel, open the **Apps** tab and select **Google Calendar** — its **Triggers** are listed underneath. Use the search box if you have many connectors. Click the **+** below any node to add a step, then pick **Google Calendar** again — this time the panel lists its **Actions**. Google Calendar actions in the Apps panel Fill in the fields for the trigger or action you picked. Required fields are marked with a red asterisk (\*). Under **Selected account**, choose an already-connected account, or click **Add Account** to connect one now. Click **Save**. Use **Test** to verify the step, then toggle **Publish** when the workflow is ready. The steps are the same for every connector. For the full workflow builder guide, see [Using MCP in Workflows](/mcp/workflows). ## 5. Available tools | Tool | What it does | Changes data? | | -------------------------------- | ------------------------------------------------------ | ------------- | | Get Availability | Get free/busy windows for a calendar in a time range. | No | | Create Event | Create an event (flexible date/time parsing). | ✏️ Yes | | Create Meeting | Create a meeting event with details. | ✏️ Yes | | Delete Event | Delete an event. | ⚠️ Yes | | Get Event | Get a single event by ID. | No | | Get Events | Get events between a start and end time. | No | | Update Event | Update an existing event. | ✏️ Yes | | Get Current Datetime | Get the current date/time (optional timezone). | No | | List Calendars | List calendars on the account. | No | | List Events | List a calendar's events (from now if no range given). | No | | Find Available Times | Find open time slots in a range. | No | | Check Availability | Check whether a time range is free or busy. | No | | Retrieve Calendar Details | Get details of a specific calendar. | No | | View Calendars | View calendars (alternate of list). | No | | View Events | View events in a required time range. | No | | Retrieve Event Details | Retrieve full details of an event. | No | | Get Event Details | Get details of an event by ID. | No | | Create Event Based on Past Event | Create a new event modeled on a past one. | ✏️ Yes | | Add Attendees to Event | Add attendees to an existing event. | ✏️ Yes | | Add Quick Event | Add an event from plain-text ("Quick Add"). | ✏️ Yes | | Quick Add Event | Add an event from plain-text ("Quick Add"). | ✏️ Yes | ## 6. Example usage > **"Am I free Thursday between 2pm and 5pm? If so, book a 45-minute review with [priya@acme.com](mailto:priya@acme.com)."** > > Runs **Find Available Times** / **Check Availability**, then **Create Meeting** (with **Add Attendees to Event**). > **"Move tomorrow's 10am standup to 11am."** > > Runs **List Events** / **Get Events** to locate it, then **Update Event**. ## 7. Permissions & data access **UnleashX can:** * List calendars and read events and free/busy data. * Create, update, and delete events. * Add attendees and create quick events from text. **UnleashX cannot:** * Access Gmail, Drive, or other Google services unless connected separately. * Change your Google account settings or password. * Act on calendars you don't have access to. **To disconnect:** In UnleashX, open **Data Connectors → Google Calendar → Disconnect**, or revoke at [https://myaccount.google.com/permissions](https://myaccount.google.com/permissions). Revoking takes effect immediately. The connection authenticates each request with your Google OAuth access token (resolved from an `access-token` header, a `google_calendar_access_token` header, or an `Authorization: Bearer` header, falling back to your UnleashX session), refreshed automatically when it expires. ## 8. Troubleshooting | Problem | What it means | How to fix it | | ------------------------------- | ---------------------------------------------------------------- | ------------------------------------------------------------------------------------- | | `401 Unauthorized` | The access token is missing or expired. | Reconnect Google Calendar in **Data Connectors**. | | `403 Forbidden` | Missing scope or admin policy blocks the app. | Re-authorize and approve all scopes; ask your Workspace admin to allow UnleashX. | | `404 Not Found` | The calendar or event ID doesn't exist or isn't shared with you. | Verify the calendar/event ID and your access to it. | | Event created at the wrong time | Time zone wasn't specified. | Provide an explicit time zone; the agent defaults to Asia/Kolkata when none is given. | For general connector issues, see [/mcp/integrations](/mcp/integrations). ## 9. Frequently asked questions **Does UnleashX store my calendar?** No. It reads and writes events through Google's API in real time to fulfill your requests. **Can multiple team members connect their calendars?** Yes. Each person authorizes their own Google account. **Can it invite external attendees?** Yes — adding attendees sends Google Calendar invitations as usual. ## 10. References * [Google Calendar API documentation](https://developers.google.com/workspace/calendar/api/guides/overview) * [Google Calendar API OAuth scopes](https://developers.google.com/workspace/calendar/api/auth) * [Google Cloud Console](https://console.cloud.google.com/) * [Manage third-party access to your Google Account](https://myaccount.google.com/permissions) # Google Campaign Manager Source: https://docs.unleashx.ai/mcp/google-campaign-manager Let your UnleashX agent manage campaigns, advertisers, and reports in Campaign Manager 360. # Google Campaign Manager > **In one line:** Connect Campaign Manager 360 so your UnleashX agent can create and update campaigns, browse advertisers, and pull reports — all in plain language. | | | | ------------------ | ------------------------------------------------------------------------------------------------------------------ | | **Category** | Advertising & Analytics | | **Authentication** | OAuth (Google) | | **Setup time** | \~3 minutes | | **Difficulty** | Easy | | **Best for** | Media and ad ops teams that want an AI agent to manage campaigns, advertisers, and reports in Campaign Manager 360 | ## 1. Overview Google Campaign Manager 360 (CM360) is Google's ad management and measurement platform. It organizes work under user profiles, advertisers, and campaigns, and reports on how those campaigns deliver across sites and placements. Once connected to UnleashX, your agent can list your user profiles, browse advertisers and campaigns, create and update campaigns, and pull the reports you use to track performance. It works against your live CM360 account using your own Google sign-in, so it respects your role and permissions. Connecting Campaign Manager to UnleashX means you can manage your media in plain language. Instead of clicking through CM360 to spin up a campaign or find a report, you tell your agent and it makes the change or fetches the answer. ## 2. What you'll need * A Campaign Manager 360 account with at least one **user profile**. * Your CM360 **user profile ID** (the agent works through a profile), and the **advertiser ID** for campaign work. * A user role in CM360 that can view and manage campaigns, advertisers, and reports. * The **Campaign Manager 360 API** enabled for your project. * An UnleashX account with access to **Data Connectors**. No API key to paste. Campaign Manager uses OAuth — you click **Authorize** and sign in with Google. The agent acts through your **user profile ID**, and uses an **advertiser ID** when working with campaigns. Google enforces your CM360 **role**. The **Campaign Manager 360 API** must be enabled, and your Google user needs a profile with permission to manage campaigns and advertisers — otherwise the agent can't either. Ask your CM360 admin to adjust access if needed. ## 3. Get your credentials There's no key to copy. Authentication runs through Google's secure OAuth sign-in. Connecting Google Campaign Manager (Section 4) opens a Google **Sign in** window. Sign in with the Google account that has access to your CM360 account. Complete two-factor authentication if prompted. Google shows the access UnleashX is requesting (see the scopes table). Click **Allow**. Note your CM360 **user profile ID** — the agent works through it. If you manage several advertisers, keep the relevant **advertiser ID** handy for campaign work. Google redirects you back automatically and the connector links to your CM360 account. Behind the scenes UnleashX authenticates with Google using an OAuth token — you never handle the token yourself. **Permissions (Google OAuth scopes) UnleashX requests:** | Scope | Why UnleashX needs it | | ------------------------------------------------ | ------------------------------------------------------------------------ | | `https://www.googleapis.com/auth/dfatrafficking` | Read and manage campaigns, advertisers, and related trafficking objects. | | `https://www.googleapis.com/auth/dfareporting` | Read and run Campaign Manager reports. | | `openid` | Identify the signed-in Google account. | | `email` | Confirm which Google account is connected. | | `offline_access` | Refresh access automatically so you don't re-authorize every session. | Google OAuth scopes are granular. UnleashX requests only what these tools need, and Google — together with your CM360 role — enforces the limits. ## 4. Connect on UnleashX Go to [https://www.tryunleashx.com](https://www.tryunleashx.com) and open the agent you want to connect. Inside the agent, go to **Data Connectors**. Locate **Google Campaign Manager** and click **Connect** (or **Add** / **Configure**). Click **Authorize**, sign in with Google, and accept the scopes. You return to UnleashX and the Google Campaign Manager connector shows a **Connected** badge. ### Use Google Campaign Manager in a Workflow Once connected, you can add **Google Campaign Manager** to any automation from the **Workflows** builder. Its triggers and tools appear in the Apps panel, marked with an **MCP** badge. Open **Workflows → New Workflow**. On the canvas, click **+ Add Trigger**. In the **Paths** panel, open the **Apps** tab and select **Google Campaign Manager** — its **Triggers** are listed underneath. Use the search box if you have many connectors. Click the **+** below any node to add a step, then pick **Google Campaign Manager** again — this time the panel lists its **Actions**. Fill in the fields for the trigger or action you picked. Required fields are marked with a red asterisk (\*). Under **Selected account**, choose an already-connected account, or click **Add Account** to connect one now. Click **Save**. Use **Test** to verify the step, then toggle **Publish** when the workflow is ready. The steps are the same for every connector. For the full workflow builder guide, see [Using MCP in Workflows](/mcp/workflows). ## 5. Available tools | Tool | What it does | Changes data? | | ------------------ | -------------------------------------------------- | ------------- | | List User Profiles | Lists the CM360 user profiles you can act through. | No | | List Campaigns | Lists campaigns for an advertiser or profile. | No | | Get Campaign | Retrieves a single campaign by ID. | No | | Create Campaign | Creates a new campaign. | ✏️ Yes | | Update Campaign | Updates an existing campaign. | ✏️ Yes | | List Advertisers | Lists advertisers in the account. | No | | List Reports | Lists saved reports available to your profile. | No | ### Available triggers | Trigger | Fires when | | --------------- | ----------------------------------------------------------- | | On New Campaign | A new campaign is created in your Campaign Manager account. | ## 6. Example usage **"Create a Q3 brand awareness campaign under the Acme advertiser running July through September."** → Runs List Advertisers to find Acme, then Create Campaign with the name and flight dates. **"List the campaigns for the Globex advertiser and show me the reports I can run."** → Runs List Campaigns for Globex, then List Reports to show the saved reports. ## 7. Permissions & data access **UnleashX can:** * List your user profiles, advertisers, and campaigns. * Create and update campaigns. * List the saved reports available to your profile. **UnleashX cannot:** * Do anything your CM360 role doesn't permit. * Delete advertisers or accounts, or change account-level admin settings. * Act through a profile your Google user hasn't been granted. **To disconnect:** In UnleashX, open **Data Connectors → Google Campaign Manager → Disconnect**. You can also revoke access at `https://myaccount.google.com/permissions` (Third-party apps with account access). Disconnecting revokes access immediately. ## 8. Troubleshooting | Problem | What it means | How to fix it | | ------------------------ | ----------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | | **401 Unauthorized** | The Google token expired or is invalid. | Reconnect Google Campaign Manager in **Data Connectors** and sign in again. | | **403 Forbidden** | Your CM360 role lacks permission, or the API isn't enabled. | Enable the Campaign Manager 360 API and ask your admin for a profile that can manage campaigns. | | **Profile not found** | The user profile ID is wrong or not accessible. | Run List User Profiles and use a profile your account can access. | | **Advertiser not found** | The advertiser ID is wrong or outside your access. | Confirm the advertiser ID and that your profile can manage it. | | **Rate limit exceeded** | The Campaign Manager API quota was reached. | Wait for the quota to reset, then retry. | For general MCP issues, see [/mcp/integrations](/mcp/integrations). ## 9. Frequently asked questions **Is my campaign data stored by UnleashX?** No. UnleashX reads and writes your CM360 objects live through the Campaign Manager API per request; it doesn't keep a copy. **Why does the agent need a user profile ID?** CM360 scopes access by user profile. The agent works through your profile, so its access matches what that profile is allowed to do. **Can the agent really create and update campaigns?** Yes — Create Campaign and Update Campaign (marked ✏️) make changes in CM360. They only work if your profile allows it. **Why do I need to enable the Campaign Manager 360 API?** The API must be turned on for your project before any tool can read or write data. Your Google user also needs a CM360 profile with the right permissions. ## 10. References * Campaign Manager 360 API documentation: [https://developers.google.com/doubleclick-advertisers/getting\_started](https://developers.google.com/doubleclick-advertisers/getting_started) * Campaign Manager 360 API authorization & scopes: [https://developers.google.com/doubleclick-advertisers/authorizing](https://developers.google.com/doubleclick-advertisers/authorizing) * User profiles in the API: [https://developers.google.com/doubleclick-advertisers/rest/v4/userProfiles/list](https://developers.google.com/doubleclick-advertisers/rest/v4/userProfiles/list) * Google account permissions / revoke access: [https://myaccount.google.com/permissions](https://myaccount.google.com/permissions) # Google Chat Source: https://docs.unleashx.ai/mcp/google-chat Let your UnleashX agent read and send messages across your Google Chat spaces. # Google Chat > **In one line:** Connect Google Chat so your UnleashX agent can browse spaces, read and search messages, and post, edit, or remove messages — all in plain language. | | | | ------------------ | --------------------------------------------------------------------------------------------------------------- | | **Category** | Communication | | **Authentication** | OAuth (Google) | | **Setup time** | \~2 minutes | | **Difficulty** | Easy | | **Best for** | Teams that want an AI agent to read what's happening in their Google Chat spaces and post updates automatically | ## 1. Overview Google Chat is Google's team messaging platform in Workspace. Conversations live in spaces — group rooms and direct messages — where teams share updates, files, and threaded discussions. Once connected to UnleashX, your agent can list the spaces you belong to, read and pull up individual messages, post new messages, edit ones it sent, and delete messages when needed. It works against your live Google Chat using your own Google sign-in, so it respects your account and space memberships. Connecting Google Chat to UnleashX means your agent can keep the conversation moving. Instead of switching to Chat to post an update or catch up on a space, you tell your agent and it reads the thread or sends the message for you. ## 2. What you'll need * A Google Workspace account with Google Chat enabled. * Membership in the spaces you want the agent to read from or post to. * An UnleashX account with access to **Data Connectors**. No API key to paste. Google Chat uses OAuth — you click **Authorize** and sign in with Google. Your **Workspace admin** controls whether third-party apps can connect to Google Chat, and the agent can only see spaces you're a member of. If authorization is blocked or a space is missing, ask your admin to allow UnleashX or add you to the space. ## 3. Get your credentials There's no key to copy. Authentication runs through Google's secure OAuth sign-in. Connecting Google Chat (Section 4) opens a Google **Sign in** window. Choose the Google account whose Chat spaces you want the agent to use, and sign in at `https://accounts.google.com`. Complete two-factor authentication if prompted. Google shows the access UnleashX is requesting (see the scopes table). Review it and click **Allow**. If you're signed in to more than one Google account, make sure you picked the one that belongs to the spaces you want to work with. Google redirects you back automatically and the connector links to your account. Behind the scenes UnleashX uses Google's OAuth token — you never handle it yourself. **Permissions (Google OAuth scopes) UnleashX requests:** | Scope | Why UnleashX needs it | | ------------------------------------------------------ | ----------------------------------------------------------------- | | `https://www.googleapis.com/auth/chat.spaces.readonly` | List and read the spaces you belong to. | | `https://www.googleapis.com/auth/chat.messages` | Read, send, edit, and delete messages in your spaces. | | `openid` | Identify the Google account being connected. | | `https://www.googleapis.com/auth/userinfo.email` | Confirm which account is linked so you can manage the connection. | Google OAuth scopes are granular. UnleashX requests only what these tools need, and Google — not UnleashX — enforces the limits. ## 4. Connect on UnleashX Go to [https://www.tryunleashx.com](https://www.tryunleashx.com) and open the agent you want to connect. Inside the agent, go to **Data Connectors**. Locate **Google Chat** and click **Connect** (or **Add** / **Configure**). Click **Authorize**, sign in with Google, and accept the scopes. You return to UnleashX and the Google Chat connector shows a **Connected** badge. ### Use Google Chat in a Workflow Once connected, you can add **Google Chat** to any automation from the **Workflows** builder. Its triggers and tools appear in the Apps panel, marked with an **MCP** badge. Open **Workflows → New Workflow**. On the canvas, click **+ Add Trigger**. In the **Paths** panel, open the **Apps** tab and select **Google Chat** — its **Triggers** are listed underneath. Use the search box if you have many connectors. Click the **+** below any node to add a step, then pick **Google Chat** again — this time the panel lists its **Actions**. Fill in the fields for the trigger or action you picked. Required fields are marked with a red asterisk (\*). Under **Selected account**, choose an already-connected account, or click **Add Account** to connect one now. Click **Save**. Use **Test** to verify the step, then toggle **Publish** when the workflow is ready. The steps are the same for every connector. For the full workflow builder guide, see [Using MCP in Workflows](/mcp/workflows). ## 5. Available tools | Tool | What it does | Changes data? | | -------------- | ------------------------------------------- | ------------- | | List Spaces | Lists the Google Chat spaces you belong to. | No | | Get Space | Retrieves details of a single space. | No | | List Messages | Lists messages in a space. | No | | Get Message | Retrieves a single message by ID. | No | | Create Message | Posts a new message to a space. | ✏️ Yes | | Update Message | Edits a message the agent sent. | ✏️ Yes | | Delete Message | Deletes a specified message. | ⚠️ Yes | ### Available triggers | Trigger | Fires when | | -------------- | ----------------------------------- | | On New Message | A new message is posted in a space. | ## 6. Example usage **"Post 'Deploy is done — production is live' to the Engineering space."** → Runs List Spaces to find Engineering, then Create Message to post the update. **"Catch me up on the latest messages in the Product space."** → Runs List Messages on the Product space and summarizes the recent conversation. ## 7. Permissions & data access **UnleashX can:** * List the spaces you belong to and read their details. * Read and list messages in those spaces. * Post new messages and edit ones it sent. * Delete messages where you allow it (this tool is clearly marked ⚠️). **UnleashX cannot:** * Access spaces you're not a member of. * Access other Google services (Gmail, Drive, Calendar) — those are separate connectors. * Change your Google account password or security settings. **To disconnect:** In UnleashX, open **Data Connectors → Google Chat → Disconnect**. You can also revoke access at `https://myaccount.google.com/permissions` (Third-party apps with account access). Disconnecting revokes access immediately. ## 8. Troubleshooting | Problem | What it means | How to fix it | | ---------------------------------- | ---------------------------------------------------- | ------------------------------------------------------------------------------- | | **401 Unauthorized** | The Google token expired or is invalid. | Reconnect Google Chat in **Data Connectors** and sign in again. | | **403 Forbidden** | Access to Chat was blocked or not granted. | Re-authorize and accept the scopes; ask your Workspace admin to allow UnleashX. | | **Space not found** | You're not a member of the space, or its ID changed. | Use List Spaces to find spaces you can access, or ask to be added. | | **Can't edit or delete a message** | The message wasn't sent by the agent. | Update and Delete only apply to messages the connector posted. | | **Rate limit exceeded** | Google's Chat API request limit was reached. | Wait a moment and retry with fewer, more specific requests. | For general MCP issues, see [/mcp/integrations](/mcp/integrations). ## 9. Frequently asked questions **Are my messages stored by UnleashX?** No. UnleashX reads and writes messages live through the Google Chat API per request; it doesn't keep a copy. **Which account does the agent use?** The Google account you selected when connecting. To switch, reconnect and choose a different account. **Can the agent post in any space?** Only spaces you're a member of. It can't see or post to spaces you don't belong to. **Does this work with personal Google accounts?** Google Chat is a Workspace feature, so it works with Workspace accounts where Chat is enabled and third-party access is allowed. ## 10. References * Google Chat API documentation: [https://developers.google.com/workspace/chat/api-overview](https://developers.google.com/workspace/chat/api-overview) * Google OAuth 2.0 scopes: [https://developers.google.com/identity/protocols/oauth2/scopes](https://developers.google.com/identity/protocols/oauth2/scopes) * Manage third-party access to your Google Account: [https://myaccount.google.com/permissions](https://myaccount.google.com/permissions) * Google sign-in: [https://accounts.google.com](https://accounts.google.com) # Google Docs Source: https://docs.unleashx.ai/mcp/google-docs Let your UnleashX agent create Google Docs, read content, and update text automatically. # Google Docs > **In one line:** Connect Google Docs so your UnleashX agent can create documents, read them, and append or replace text for you. | | | | ------------------ | -------------------------------------------------------------------------------------- | | **Category** | Productivity | | **Authentication** | OAuth (Google sign-in) | | **Setup time** | \~2 minutes | | **Difficulty** | Easy | | **Best for** | Generating and updating documents from AI output and building repeatable doc workflows | ## 1. Overview Google Docs is Google's word-processing service for creating and editing text documents stored in Drive. Once connected, your UnleashX agent can list drives, folders, and documents, create new documents in a folder, read a document's content, replace matching text, append text, generate an AI image into a doc, and watch for newly created documents. Connecting Google Docs to UnleashX makes document work conversational: ask "draft a project brief in the Projects folder" or "append today's summary to the standup doc," and the agent creates or updates the right document automatically. ## 2. What you'll need Any personal Google account or a Google Workspace account with Docs enabled. You must be able to complete the Google sign-in and approve the requested permissions. An agent in your UnleashX workspace where you'll add the Docs connector. No admin access? On a managed Google Workspace account, your admin may need to allow UnleashX before authorization succeeds. ## 3. Get your credentials Google Docs uses **Google OAuth 2.0**. You do **not** create or paste an API key. UnleashX redirects you to Google, you sign in once, and Google issues an access token to UnleashX automatically. In your agent's **Data Connectors**, find **Google Docs** and click **Connect** (see Section 4). Choose the Google account whose documents you want to connect. Click **Allow** to grant access and return to UnleashX. There is no key to copy. Access is granted by your Google sign-in and can be revoked anytime at your [Google Account permissions page](https://myaccount.google.com/permissions). **Scopes UnleashX requests for Google Docs:** | Scope | Why UnleashX needs it | | ------------------------------------------------ | ------------------------------------------------------------------ | | `https://www.googleapis.com/auth/documents` | Read and edit document content (replace/append text). | | `https://www.googleapis.com/auth/drive` | List drives/folders/documents and create or delete document files. | | `https://www.googleapis.com/auth/userinfo.email` | Identify which account is connected. | ## 4. Connect on UnleashX Sign in at [https://www.tryunleashx.com](https://www.tryunleashx.com) and open your agent. In the agent, open **Data Connectors**. Locate **Google Docs** and click **Connect** / **Add** / **Configure**. Click **Authorize**, sign in with Google, and approve the requested permissions. You'll return to UnleashX and the connector status will show a **Connected** badge. ### Use Google Docs in a Workflow Once connected, you can add **Google Docs** to any automation from the **Workflows** builder. Its triggers and tools appear in the Apps panel, marked with an **MCP** badge. Open **Workflows → New Workflow**. On the canvas, click **+ Add Trigger**. In the **Paths** panel, open the **Apps** tab and select **Google Docs** — its **Triggers** are listed underneath. Use the search box if you have many connectors. Google Docs triggers in the Apps panel Click the **+** below any node to add a step, then pick **Google Docs** again — this time the panel lists its **Actions**. Google Docs actions in the Apps panel Fill in the fields for the trigger or action you picked. Required fields are marked with a red asterisk (\*). Under **Selected account**, choose an already-connected account, or click **Add Account** to connect one now. Click **Save**. Use **Test** to verify the step, then toggle **Publish** when the workflow is ready. The steps are the same for every connector. For the full workflow builder guide, see [Using MCP in Workflows](/mcp/workflows). ## 5. Available tools | Tool | What it does | Changes data? | | ----------------------- | ----------------------------------------------- | ------------- | | List Drives | List available Google Drives. | No | | Folder List | List folders in a specific drive. | No | | List Document | List documents in a specific folder. | No | | Create Document | Create a new Google Document in a folder. | ✏️ Yes | | Delete Document | Delete a Google Document. | ⚠️ Yes | | Get Content Document | Read a document's content. | No | | Replace Text | Replace all occurrences of text in a document. | ✏️ Yes | | Append Text | Append text to the end of a document. | ✏️ Yes | | On New Document Created | Trigger: return documents added since last run. | No | | Generate AI Image | Generate an AI image (for use in a document). | ✏️ Yes | ## 6. Example usage > **"Create a doc called 'Kickoff Notes' in the Projects folder and add today's agenda."** > > Runs **Create Document**, then **Append Text**. > **"In the contract doc, replace 'Acme Inc.' with 'Acme Corporation'."** > > Runs **Replace Text** on the target document. ## 7. Permissions & data access **UnleashX can:** * List drives, folders, and documents. * Create and delete documents. * Read document content, replace text, and append text. * Generate AI images for documents. **UnleashX cannot:** * Access Gmail, Calendar, or other Google services unless connected separately. * Change your Google account settings or password. * Edit documents you don't have access to. **To disconnect:** In UnleashX, open **Data Connectors → Google Docs → Disconnect**, or revoke at [https://myaccount.google.com/permissions](https://myaccount.google.com/permissions). Revoking takes effect immediately. The connection authenticates each request with your Google OAuth access token (resolved from an `access-token` header, a `google_docs_access_token` header, or an `Authorization: Bearer` header, falling back to your UnleashX session), refreshed automatically when it expires. ## 8. Troubleshooting | Problem | What it means | How to fix it | | ------------------- | ---------------------------------------------------------- | ------------------------------------------------------- | | `401 Unauthorized` | The access token is missing or expired. | Reconnect Google Docs in **Data Connectors**. | | `403 Forbidden` | Missing scope, or you lack edit rights on the document. | Re-authorize all scopes; confirm you can edit the file. | | `404 Not Found` | The document or folder ID is wrong or not shared with you. | Verify the `document_id`/`folder_id` and your access. | | Replace did nothing | The search text didn't match (case sensitivity). | Check exact text and the `match_case` setting. | For general connector issues, see [/mcp/integrations](/mcp/integrations). ## 9. Frequently asked questions **Does UnleashX store my documents?** No. It reads and writes through Google's API in real time to fulfill your requests. **Can multiple team members connect Docs?** Yes. Each person authorizes their own Google account. **Can it format text, not just insert it?** The tools focus on creating documents and inserting/replacing text. Rich formatting beyond that isn't exposed by these tools. ## 10. References * [Google Docs API documentation](https://developers.google.com/docs/api) * [Google Docs API OAuth scopes](https://developers.google.com/docs/api/concepts/scopes) * [Google Cloud Console](https://console.cloud.google.com/) * [Manage third-party access to your Google Account](https://myaccount.google.com/permissions) # Google Drive Source: https://docs.unleashx.ai/mcp/google-drive Let your UnleashX agent find, create, organize, share, and manage Google Drive files and folders. # Google Drive > **In one line:** Connect Google Drive so your UnleashX agent can search files, create and move them, manage folders and shared drives, and control sharing. | | | | ------------------ | --------------------------------------------------------------------------------- | | **Category** | Storage | | **Authentication** | OAuth (Google sign-in) | | **Setup time** | \~2 minutes | | **Difficulty** | Easy | | **Best for** | Organizing files, automating uploads/downloads, and managing sharing across teams | ## 1. Overview Google Drive is Google's cloud file storage, holding documents, spreadsheets, forms, folders, and shared drives. Once connected, your UnleashX agent can search for files and folders, create files from text, copy/move/update files, upload and download, manage folders and shared drives, and set sharing permissions for people and teams. It can also watch for newly added files or spreadsheets. Connecting Google Drive to UnleashX makes file management hands-free: ask "find last month's invoices and share the folder with finance" or "upload this report to the Q3 folder," and the agent locates, organizes, and shares the right files for you. ## 2. What you'll need Any personal Google account or a Google Workspace account with Drive enabled. You must be able to complete the Google sign-in and approve the requested permissions. Shared-drive actions may require team-membership rights. An agent in your UnleashX workspace where you'll add the Drive connector. No admin access? On a managed Google Workspace account, your admin may need to allow UnleashX, and some shared-drive operations may be restricted by your role. ## 3. Get your credentials Google Drive uses **Google OAuth 2.0**. You do **not** create or paste an API key. UnleashX redirects you to Google, you sign in once, and Google issues an access token to UnleashX automatically. In your agent's **Data Connectors**, find **Google Drive** and click **Connect** (see Section 4). Choose the Google account whose Drive you want to connect. Click **Allow** to grant access and return to UnleashX. There is no key to copy. Access is granted by your Google sign-in and can be revoked anytime at your [Google Account permissions page](https://myaccount.google.com/permissions). **Scopes UnleashX requests for Google Drive:** | Scope | Why UnleashX needs it | | ------------------------------------------------ | ------------------------------------------------------------------------------- | | `https://www.googleapis.com/auth/drive` | Full access to find, create, update, move, delete, and share files and folders. | | `https://www.googleapis.com/auth/drive.file` | Create and manage files the integration touches. | | `https://www.googleapis.com/auth/userinfo.email` | Identify which account is connected. | ## 4. Connect on UnleashX Sign in at [https://www.tryunleashx.com](https://www.tryunleashx.com) and open your agent. In the agent, open **Data Connectors**. Locate **Google Drive** and click **Connect** / **Add** / **Configure**. Click **Authorize**, sign in with Google, and approve the requested permissions. You'll return to UnleashX and the connector status will show a **Connected** badge. ### Use Google Drive in a Workflow Once connected, you can add **Google Drive** to any automation from the **Workflows** builder. Its triggers and tools appear in the Apps panel, marked with an **MCP** badge. Open **Workflows → New Workflow**. On the canvas, click **+ Add Trigger**. In the **Paths** panel, open the **Apps** tab and select **Google Drive** — its **Triggers** are listed underneath. Use the search box if you have many connectors. Google Drive triggers in the Apps panel Click the **+** below any node to add a step, then pick **Google Drive** again — this time the panel lists its **Actions**. Google Drive actions in the Apps panel Fill in the fields for the trigger or action you picked. Required fields are marked with a red asterisk (\*). Under **Selected account**, choose an already-connected account, or click **Add Account** to connect one now. Click **Save**. Use **Test** to verify the step, then toggle **Publish** when the workflow is ready. The steps are the same for every connector. For the full workflow builder guide, see [Using MCP in Workflows](/mcp/workflows). ## 5. Available tools | Tool | What it does | Changes data? | | ------------------------------- | -------------------------------------------------- | ------------- | | Get File | Get a file's metadata by ID. | No | | Find Spreadsheets | Find spreadsheets (optionally in a folder). | No | | Find Forms | Find Google Forms (optionally in a folder). | No | | Find Folder | Find a folder by name/parent. | No | | Find File | Find a file by query/folder. | No | | Find File with Changes | Find files and report changes since last run. | No | | List Drive Folders | List folders in Drive. | No | | List Drive Folders with Changes | List folders and report changes since last run. | No | | On New File | Trigger: return files added since last run. | No | | On New Spreadsheet | Trigger: return spreadsheets added since last run. | No | | Copy File | Copy a file (optional new name/folder). | ✏️ Yes | | Create File from Text | Create a file from text content. | ✏️ Yes | | Delete File | Delete a file. | ⚠️ Yes | | Download File | Download a file. | No | | Move File | Move a file to another folder. | ✏️ Yes | | Share File | Share a file with people at a permission level. | ✏️ Yes | | Update File | Update a file's content or name. | ✏️ Yes | | Search Files | Search files by term, type, location, date. | No | | Create Folder | Create a folder. | ✏️ Yes | | Delete Folder | Delete a folder. | ⚠️ Yes | | Share Folder | Share a folder with people at a permission level. | ✏️ Yes | | Create Shared Drive | Create a shared (team) drive. | ✏️ Yes | | Delete Shared Drive | Delete a shared drive. | ⚠️ Yes | | Get Shared Drive | Get details of one shared drive. | No | | Get Many Shared Drives | List multiple shared drives. | No | | Update Shared Drive | Update a shared drive's name/settings/theme. | ✏️ Yes | | Upload File | Upload a file to Drive. | ✏️ Yes | ## 6. Example usage > **"Find the 'Q3 Reports' folder and share it with [finance@acme.com](mailto:finance@acme.com) as a commenter."** > > Runs **Find Folder**, then **Share Folder**. > **"Create a text file called 'meeting-notes' with today's notes in my Projects folder."** > > Runs **Find Folder** to locate the folder, then **Create File from Text**. ## 7. Permissions & data access **UnleashX can:** * Search, read, and download files and folders. * Create, copy, move, update, and upload files. * Create and manage folders and shared drives. * Set sharing permissions for files and folders. **UnleashX cannot:** * Access Gmail, Calendar, or other Google services unless connected separately. * Change your Google account settings or password. * Bypass shared-drive role restrictions enforced by your organization. **To disconnect:** In UnleashX, open **Data Connectors → Google Drive → Disconnect**, or revoke at [https://myaccount.google.com/permissions](https://myaccount.google.com/permissions). Revoking takes effect immediately. The connection authenticates each request with your Google OAuth access token (resolved from an `access-token` header, a `google_drive_access_token` header, or an `Authorization: Bearer` header, falling back to your UnleashX session), refreshed automatically when it expires. ## 8. Troubleshooting | Problem | What it means | How to fix it | | ------------------ | ----------------------------------------------------------- | ------------------------------------------------------------- | | `401 Unauthorized` | The access token is missing or expired. | Reconnect Google Drive in **Data Connectors**. | | `403 Forbidden` | Missing scope, or you lack rights on the file/shared drive. | Re-authorize all scopes; confirm your role allows the action. | | `404 Not Found` | The file/folder ID doesn't exist or isn't shared with you. | Verify the ID and your access. | | Delete blocked | A delete tool requires confirmation. | Re-issue with `confirm_deletion` set to true. | For general connector issues, see [/mcp/integrations](/mcp/integrations). ## 9. Frequently asked questions **Does UnleashX copy my whole Drive?** No. It accesses only the files and folders needed to fulfill a request, through Google's API in real time. **Can multiple team members connect Drive?** Yes. Each person authorizes their own Google account. **Are deletions reversible?** Deleted items go to Drive's trash per Google's normal behavior; recover them from Drive's Trash within the retention window. ## 10. References * [Google Drive API documentation](https://developers.google.com/drive/api) * [Google Drive API OAuth scopes](https://developers.google.com/drive/api/guides/api-specific-auth) * [Google Cloud Console](https://console.cloud.google.com/) * [Manage third-party access to your Google Account](https://myaccount.google.com/permissions) # Google Forms Source: https://docs.unleashx.ai/mcp/google-form Let your UnleashX agent create Google Forms, add questions, and read or manage responses. # Google Forms > **In one line:** Connect Google Forms so your UnleashX agent can build forms, add questions, and read and manage submitted responses. | | | | ------------------ | -------------------------------------------------------------------------------- | | **Category** | Productivity | | **Authentication** | OAuth (Google sign-in) | | **Setup time** | \~2 minutes | | **Difficulty** | Easy | | **Best for** | Building intake/survey forms and processing response data in automated workflows | ## 1. Overview Google Forms is Google's survey and intake-form service. Forms collect responses, which can also be linked to a Google Sheet. Once connected, your UnleashX agent can create forms, add text and multiple-choice questions, read form properties, list and read responses, and (via the linked response spreadsheet) update or delete response rows. It can also list your forms, spreadsheets, and sheets. Connecting Google Forms to UnleashX makes data collection actionable: spin up an intake form, pull the latest submissions into a workflow, or clean up response data — all from natural language. ## 2. What you'll need Any personal Google account or a Google Workspace account with Forms enabled. You must be able to complete the Google sign-in and approve the requested permissions. An agent in your UnleashX workspace where you'll add the Forms connector. No admin access? On a managed Google Workspace account, your admin may need to allow UnleashX before authorization succeeds. ## 3. Get your credentials Google Forms uses **Google OAuth 2.0**. You do **not** create or paste an API key. UnleashX redirects you to Google, you sign in once, and Google issues an access token to UnleashX automatically. In your agent's **Data Connectors**, find **Google Forms** and click **Connect** (see Section 4). Choose the Google account whose forms you want to connect. Click **Allow** to grant access and return to UnleashX. There is no key to copy. Access is granted by your Google sign-in and can be revoked anytime at your [Google Account permissions page](https://myaccount.google.com/permissions). **Scopes UnleashX requests for Google Forms:** | Scope | Why UnleashX needs it | | ---------------------------------------------------------- | -------------------------------------------------------------------- | | `https://www.googleapis.com/auth/forms.body` | Create forms and add/edit questions and form structure. | | `https://www.googleapis.com/auth/forms.responses.readonly` | Read submitted form responses. | | `https://www.googleapis.com/auth/spreadsheets` | Read/update/delete response rows in the linked response spreadsheet. | | `https://www.googleapis.com/auth/drive` | List forms and spreadsheets, and delete forms in Drive. | | `https://www.googleapis.com/auth/userinfo.email` | Identify which account is connected. | ## 4. Connect on UnleashX Sign in at [https://www.tryunleashx.com](https://www.tryunleashx.com) and open your agent. In the agent, open **Data Connectors**. Locate **Google Forms** and click **Connect** / **Add** / **Configure**. Click **Authorize**, sign in with Google, and approve the requested permissions. You'll return to UnleashX and the connector status will show a **Connected** badge. ### Use Google Forms in a Workflow Once connected, you can add **Google Forms** to any automation from the **Workflows** builder. Its triggers and tools appear in the Apps panel, marked with an **MCP** badge. Open **Workflows → New Workflow**. On the canvas, click **+ Add Trigger**. In the **Paths** panel, open the **Apps** tab and select **Google Forms** — its **Triggers** are listed underneath. Use the search box if you have many connectors. Google Forms triggers in the Apps panel Click the **+** below any node to add a step, then pick **Google Forms** again — this time the panel lists its **Actions**. Google Forms actions in the Apps panel Fill in the fields for the trigger or action you picked. Required fields are marked with a red asterisk (\*). Under **Selected account**, choose an already-connected account, or click **Add Account** to connect one now. Click **Save**. Use **Test** to verify the step, then toggle **Publish** when the workflow is ready. The steps are the same for every connector. For the full workflow builder guide, see [Using MCP in Workflows](/mcp/workflows). ## 5. Available tools | Tool | What it does | Changes data? | | ---------------------------- | --------------------------------------------- | ------------- | | Create Form | Create a new form. | ✏️ Yes | | Get Response | Get a single response by ID. | No | | List Responses | List submitted responses for a form. | No | | Get Form Properties | Get a form's properties/settings. | No | | Delete Response | Delete response row(s) from the linked sheet. | ⚠️ Yes | | Update Response | Update a response row in the linked sheet. | ✏️ Yes | | Delete Form | Delete a form. | ⚠️ Yes | | List Columns | List a form's columns. | No | | List Forms | List available forms. | No | | List Sheets | List sheets (tabs) in a linked spreadsheet. | No | | List Spreadsheets | List available spreadsheets. | No | | Add Text Question | Add a text question to a form. | ✏️ Yes | | Add Multiple Choice Question | Add a multiple-choice question to a form. | ✏️ Yes | ## 6. Example usage > **"Create a feedback form titled 'Event Survey' with a text question 'What went well?' and a multiple-choice rating question."** > > Runs **Create Form**, then **Add Text Question** and **Add Multiple Choice Question**. > **"Show me the latest responses to the Event Survey."** > > Runs **List Forms** to find the form, then **List Responses**. ## 7. Permissions & data access **UnleashX can:** * Create forms and add text and multiple-choice questions. * Read form properties, columns, and submitted responses. * Update or delete response rows in the linked response spreadsheet. * Delete forms, and list forms, spreadsheets, and sheets. **UnleashX cannot:** * Access Gmail, Calendar, or other Google services unless connected separately. * Change your Google account settings or password. * Act on forms you don't have access to. **To disconnect:** In UnleashX, open **Data Connectors → Google Forms → Disconnect**, or revoke at [https://myaccount.google.com/permissions](https://myaccount.google.com/permissions). Revoking takes effect immediately. The connection authenticates each request with your Google OAuth access token (resolved from an `access-token` header, a `google_form_access_token` header, or an `Authorization: Bearer` header, falling back to your UnleashX session), refreshed automatically when it expires. ## 8. Troubleshooting | Problem | What it means | How to fix it | | ------------------------------ | ---------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | | `401 Unauthorized` | The access token is missing or expired. | Reconnect Google Forms in **Data Connectors**. | | `403 Forbidden` | Missing scope, or you lack rights on the form/spreadsheet. | Re-authorize all scopes; confirm you own or can edit the form. | | `404 Not Found` | The form or response ID is wrong or not shared with you. | Verify the `form_id`/`response_id` and your access. | | Can't update/delete a response | Responses are edited via the linked spreadsheet. | Ensure the form is linked to a response sheet and pass the correct `spreadsheet_id`/`sheet_id`. | For general connector issues, see [/mcp/integrations](/mcp/integrations). ## 9. Frequently asked questions **Does UnleashX store my form responses?** No. It reads and acts on responses through Google's API in real time to fulfill your requests. **Can multiple team members connect Forms?** Yes. Each person authorizes their own Google account. **Why do some tools mention a spreadsheet?** Form responses can be linked to a Google Sheet. Updating or deleting individual responses is done through that linked spreadsheet's rows. ## 10. References * [Google Forms API documentation](https://developers.google.com/forms/api) * [Google Forms API OAuth scopes](https://developers.google.com/forms/api/reference/rest/v1/forms/authorization) * [Google Cloud Console](https://console.cloud.google.com/) * [Manage third-party access to your Google Account](https://myaccount.google.com/permissions) # Google Maps Source: https://docs.unleashx.ai/mcp/google-maps Search places, geocode addresses, get directions, and look up timezones and elevation from your UnleashX agent. # Google Maps > **In one line:** Give your UnleashX agent location superpowers — find places, convert addresses to coordinates, calculate routes and travel times, and look up timezones and elevation. | | | | ------------------ | ---------------------------------------------------------------------------------------------------------------------------------- | | **Category** | Productivity | | **Authentication** | API Key (Google Maps Platform) | | **Setup time** | \~5 minutes | | **Difficulty** | Easy | | **Best for** | Agents that need geographic context — finding nearby businesses, validating addresses, planning routes, or estimating travel time. | ## 1. Overview Google Maps Platform is Google's suite of location services. It can find places by name or keyword, turn an address into latitude/longitude (geocoding) and back again, calculate driving/walking/transit routes, estimate travel times and distances, and answer questions about timezones, roads, and ground elevation. Once you connect Google Maps to UnleashX, your agent can answer location-aware questions and enrich its workflows with real geographic data. It can find the nearest open store, confirm a customer's address, tell a caller how long the drive will take, or look up the local time at a destination. Connecting Google Maps is great for booking, delivery, dispatch, and concierge-style agents. Instead of guessing, the agent uses Google's live map data to give accurate places, directions, and times. All Google Maps tools here are **read-only** — they look things up and never change your data. ## 2. What you'll need * A **Google Cloud** account ([console.cloud.google.com](https://console.cloud.google.com)). * A Google Cloud **project** with **billing enabled** (Maps Platform requires a billing account, though it includes a generous free tier). * Permission to create credentials (typically **Editor** / **Owner** or a role with `serviceusage` and credential access). * The relevant **Maps Platform APIs enabled**: Places API, Geocoding API, Directions API, Distance Matrix API, Time Zone API, Roads API, and Elevation API. If you can't enable APIs or create keys, ask a Google Cloud project admin to create a Maps Platform API key for you. Connecting only needs the API key string. ## 3. Get your credentials Google Maps MCP authenticates with a single **Maps Platform API key** — a string that looks like `AIzaSyXXXXXXXXXXXXXXXXXXXXXXXXXXXXX`. Getting one takes five steps in the Google Cloud Console: create a project, turn on billing, enable the APIs you need, create the key, and restrict it. ### Step 1 — Create or select a Google Cloud project Sign in at the [Google Cloud Console](https://console.cloud.google.com) with your Google account. Click the **project dropdown** at the top of the page, then choose **New Project**. Open the project picker and choose New Project Give the project a name (for example `myHelloWorld` or `my-maps-agent`). Google generates a **Project ID** automatically — note that it **cannot be changed later**. Click **Create**. Name the new project and click Create If your account belongs to an organization, you can also pick the **billing account** and **organization** while creating the project. Create a project with a billing account and organization selected ### Step 2 — Enable billing Google Maps Platform **requires a billing account**, even though it includes a generous monthly free credit. Open the menu (☰) and go to **Billing**, or just type "billing" into the search bar at the top. Billing in the left navigation menu Find Billing accounts using the search bar If the project isn't linked to a billing account yet, click **Link a billing account** → **Create billing account**, and add a credit/debit card. Link a billing account to the project Once billing is active, the **Billing account overview** shows your current spend, forecast, and any remaining free credits. Billing account overview with cost trend and credits Google usually provides a monthly free usage credit, but a billing account must still be attached or every Maps API call returns `REQUEST_DENIED`. ### Step 3 — Enable the required APIs Go to **APIs & Services → Library** and enable each API your agent will use. Search for the API, open it, and click **Enable**. Enable the Places API Enable the Geocoding API For full UnleashX functionality, enable all of these: **Places API**, **Geocoding API**, **Directions API**, **Distance Matrix API**, **Time Zone API**, **Roads API**, and **Elevation API**. At minimum, the three below cover most agent use cases: | You want to… | Enable this API | | ----------------------------------------------- | ------------------------------------------------ | | Find nearby businesses / autocomplete addresses | **Places API** | | Convert addresses ↔ latitude/longitude | **Geocoding API** | | Display a map on a website | **Maps JavaScript API** | | Get routes & directions | **Directions API** (or the newer **Routes API**) | If an API isn't enabled, the matching tool will fail with `REQUEST_DENIED`. Enable it in the Library and retry. ### Step 4 — Create the API key Open **APIs & Services → Credentials** (from the Maps Platform docs you can also click **Go to the Credentials page**). Go to the Credentials page from the Maps Platform docs Click **Create credentials → API key**. Google generates the key string immediately. Create credentials and choose API key Create an API key from the Maps Platform Keys & Credentials page The **Credentials** page lists API keys, OAuth 2.0 Client IDs, and service accounts. For Maps MCP you only need a plain **API key** — not an OAuth client ID or service account. The Credentials page with the Create credentials dropdown Treat the API key like a password. Copy it now and store it securely. For safety, restrict the key (next step) so it can't be misused if it ever leaks. ### Step 5 — Restrict the key (recommended) Click the newly created key to open its settings. Restrictions prevent quota theft and unauthorized use. **Application restrictions** — limit *who* can use the key: * For **websites** (frontend Maps JavaScript): choose **HTTP referrers** and add your domains, e.g. `https://yourdomain.com/*` and `https://www.yourdomain.com/*`. * For **backend servers** (the typical UnleashX/MCP case): choose **IP addresses** and add your server IP. If your server IP isn't fixed, leave it as **None** and rely on the API restrictions below. Restrict the key to HTTP referrers and add your website **API restrictions** — limit *which* APIs the key can call. Select **Restrict key**, then tick only the APIs you enabled in Step 3. Restrict and rename the API key, selecting only the APIs you use Application and API restrictions with the selected APIs listed Website and API restrictions, then Save Click **Save**. Changes can take up to **5 minutes** to take effect. Your restricted key is now ready to paste into UnleashX (Section 4). ### Permissions / APIs this key uses | API | Plain-English reason UnleashX needs it | | ------------------- | ----------------------------------------------- | | Places API | Search for places and fetch place details. | | Geocoding API | Convert addresses ↔ coordinates. | | Directions API | Calculate routes between points. | | Distance Matrix API | Estimate travel times and distances. | | Time Zone API | Look up the local timezone for a location. | | Roads API | Snap GPS points to the nearest roads. | | Elevation API | Get ground elevation for coordinates or a path. | ## 4. Connect on UnleashX Sign in at [https://www.tryunleashx.com](https://www.tryunleashx.com) and open the agent you want to give Google Maps access to. Open **Data Connectors** and find **Google Maps** in the list. Click **Connect** / **Add** / **Configure** and paste your Maps Platform **API key** (sent as the `api-key` / `api_key` credential). Authenticate once. When the key works, the status changes to a **Connected** badge. Your agent can now use the Google Maps tools below. ### Use Google Maps in a Workflow Once connected, you can add **Google Maps** to any automation from the **Workflows** builder. Its triggers and tools appear in the Apps panel, marked with an **MCP** badge. Open **Workflows → New Workflow**. On the canvas, click **+ Add Trigger**. In the **Paths** panel, open the **Apps** tab and select **Google Maps** — its **Triggers** are listed underneath. Use the search box if you have many connectors. Click the **+** below any node to add a step, then pick **Google Maps** again — this time the panel lists its **Actions**. Google Maps actions in the Apps panel Fill in the fields for the trigger or action you picked. Required fields are marked with a red asterisk (\*). Under **Selected account**, choose an already-connected account, or click **Add Account** to connect one now. Click **Save**. Use **Test** to verify the step, then toggle **Publish** when the workflow is ready. The steps are the same for every connector. For the full workflow builder guide, see [Using MCP in Workflows](/mcp/workflows). ## 5. Available tools This server exposes **14 tools**. All Google Maps tools are **read-only** (they look up data and never change anything in your account). | Tool name | What it does | Changes data? | | ------------------------------ | --------------------------------------------------------------------------------- | ------------- | | **Search Nearby** | Find places near a location, with radius/rating/open-now filters. | No | | **Get Place Details** | Get full details for a place by place ID. | No | | **Geocode** | Convert an address into coordinates. | No | | **Reverse Geocode** | Convert coordinates back into an address. | No | | **Distance Matrix** | Calculate travel time/distance between many origins and destinations. | No | | **Directions** | Get a route between an origin and destination. | No | | **Elevation** | Get ground elevation for a list of coordinates. | No | | **Search Places** | Search places by text query (with optional location bias). | No | | **Search Place Details** | Search places and enrich each with detailed info (phone, hours, website, rating). | No | | **Get Place Details (Single)** | Get details for a single place by place ID. | No | | **Get Directions** | Get directions with optional waypoints and travel mode. | No | | **Get Timezone** | Look up the timezone for a location and timestamp. | No | | **Get Roads** | Snap a path of points to the nearest roads. | No | | **Get Elevation** | Get elevation for places/coordinates, optionally sampled along a path. | No | There are two families of tools with overlapping capabilities. Your agent picks whichever best fits the request — both run read-only lookups against Google Maps Platform. ## 6. Example usage **"Find coffee shops within 1 km of MG Road, Bengaluru that are open now and rated 4+."** → Runs **Search Nearby** (geocodes the location, then filters by radius, open-now, and minimum rating). **"How long does it take to drive from Indiranagar to Bangalore Airport right now?"** → Runs **Directions** (or **Distance Matrix**) to estimate the route and travel time. ## 7. Permissions & data access **UnleashX can:** * Search for places and fetch place details (name, address, phone, hours, rating, website). * Geocode and reverse-geocode addresses and coordinates. * Calculate routes, travel times, and distances. * Look up timezones, snap points to roads, and get elevation. **UnleashX cannot:** * Create, edit, or delete anything in Google Maps — every tool is read-only. * Access your personal Google Maps history, saved places, or Timeline. * Change your Google Cloud project, billing, or API settings. **How to disconnect:** In your agent's **Data Connectors**, open Google Maps and choose **Disconnect** to stop UnleashX from using the key immediately. To fully revoke access, **delete or regenerate** the API key in **APIs & Services → Credentials**. ## 8. Troubleshooting | Problem | What it means | How to fix it | | ------------------------------------------ | ----------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | | `401 Unauthorized` / "API key is required" | No valid API key was provided. | Reconnect Google Maps with a valid Maps Platform API key. | | `REQUEST_DENIED` / 403 | The API isn't enabled, billing is off, or the key is restricted away from that API. | Enable the needed API in **APIs & Services → Library**, confirm billing is on, and check the key's API restrictions. | | `OVER_QUERY_LIMIT` / 429 | You've hit your usage quota or rate limit. | Wait, raise your quota, or enable billing/upgrade in Google Cloud. | | `ZERO_RESULTS` | The query was valid but no places/routes matched. | Broaden the search, increase the radius, or check the spelling of the address. | | "Invalid coordinate format" | A location wasn't a recognizable address or `lat,lng` pair. | Provide a real address or coordinates as `latitude,longitude`. | For general connector issues, see [/mcp/integrations](/mcp/integrations). ## 9. Frequently asked questions **Does this cost money?** Google Maps Platform is billed by usage, but includes a substantial monthly free tier. Light agent use often stays within it; heavy use may incur charges from Google (not UnleashX). **Is any data changed in my account?** No. Every tool here is read-only — it only looks up location information. **Can I use one key across multiple agents?** Yes. The same Maps Platform API key can be connected to multiple agents. For security, restrict the key to only the APIs you use. **Why did a tool fail with "REQUEST\_DENIED"?** Usually the specific API (e.g. Directions API) isn't enabled for your project, or your key is restricted away from it. Enable the API and adjust the key restrictions. ## 10. References * [Google Cloud Console — Credentials](https://console.cloud.google.com/apis/credentials) * [Google Maps Platform documentation](https://developers.google.com/maps/documentation) * [Get an API key](https://developers.google.com/maps/documentation/javascript/get-api-key) * [API key best practices & restrictions](https://developers.google.com/maps/api-security-best-practices) * [Places API](https://developers.google.com/maps/documentation/places/web-service/overview) * [Maps Platform pricing](https://mapsplatform.google.com/pricing/) # Google Meet Source: https://docs.unleashx.ai/mcp/google-meet Let your UnleashX agent create Google Meet video meetings from a conversation. # Google Meet > **In one line:** Connect Google Meet so your UnleashX agent can spin up video meetings — with the right time, attendees, and a join link — without opening Calendar. | | | | ------------------ | -------------------------------------------------------------------------------- | | **Category** | Communication | | **Authentication** | OAuth (Google sign-in) | | **Setup time** | \~2 minutes | | **Difficulty** | Easy | | **Best for** | Teams that want an AI agent to schedule video calls as part of a larger workflow | ## 1. Overview Google Meet is Google's video-conferencing service. Meetings are created as Google Calendar events with a Meet conference attached, which is how the join link gets generated and shared with attendees. Once connected to UnleashX, your agent can create a meeting — setting the title, start and end time, time zone, and attendee list — and return the Meet join link. Because the meeting lands on your calendar, invitees are notified the same way they would be for any other event. Connecting Google Meet to UnleashX means scheduling becomes one step in a bigger flow: a lead replies, a ticket escalates, a form comes in — and the agent books the call without you switching apps. ## 2. What you'll need Any personal Google account or a Google Workspace account with Meet enabled. You must be able to complete the Google sign-in and approve the requested permissions. An agent in your UnleashX workspace where you'll add the Google Meet connector. On a managed Google Workspace account, your admin may need to allow UnleashX before authorization succeeds. ## 3. Get your credentials Google Meet uses **Google OAuth 2.0**. You do **not** create or paste an API key. UnleashX redirects you to Google, you sign in once, and Google issues an access token to UnleashX automatically. In your agent's **Data Connectors**, find **Google Meet** and click **Connect** (see Section 4). Choose the Google account whose calendar the meetings should be created on. Click **Allow** to grant access and return to UnleashX. There is no key to copy. Access is granted by your Google sign-in and can be revoked anytime at your [Google Account permissions page](https://myaccount.google.com/permissions). **Scopes UnleashX requests for Google Meet:** | Scope | Why UnleashX needs it | | -------------------------------------------------- | ----------------------------------------------------------- | | `https://www.googleapis.com/auth/calendar` | Create the calendar event that carries the Meet conference. | | `https://www.googleapis.com/auth/calendar.events` | Set the meeting's title, time, and attendees. | | `https://www.googleapis.com/auth/userinfo.email` | Identify which account is connected. | | `https://www.googleapis.com/auth/userinfo.profile` | Read your basic profile (name, picture). | | `openid` | Sign-in / identity verification. | ## 4. Connect on UnleashX Sign in at [https://www.tryunleashx.com](https://www.tryunleashx.com) and open your agent. In the agent, open **Data Connectors**. Locate **Google Meet** and click **Connect** / **Add** / **Configure**. Click **Authorize**, sign in with Google, and approve the requested permissions. You'll return to UnleashX and the connector status will show a **Connected** badge. ### Use Google Meet in a Workflow Once connected, you can add **Google Meet** to any automation from the **Workflows** builder. Its tools appear in the Apps panel, marked with an **MCP** badge. Open **Workflows → New Workflow**. On the canvas, click **+ Add Trigger**. In the **Paths** panel, open the **Apps** tab and select **Google Meet** — its **Triggers** are listed underneath. Use the search box if you have many connectors. Click the **+** below any node to add a step, then pick **Google Meet** again — this time the panel lists its **Actions**. Google Meet actions in the Apps panel Fill in the fields for the trigger or action you picked. Required fields are marked with a red asterisk (\*). Under **Selected account**, choose an already-connected account, or click **Add Account** to connect one now. Click **Save**. Use **Test** to verify the step, then toggle **Publish** when the workflow is ready. The steps are the same for every connector. For the full workflow builder guide, see [Using MCP in Workflows](/mcp/workflows). ## 5. Available tools | Tool | What it does | Changes data? | | -------------- | ----------------------------------------------------------------------------------------------- | ------------- | | Create Meeting | Creates a meeting in Google Calendar with a Meet conference attached and returns the join link. | ✏️ Yes | Need to look up, reschedule, or cancel the meeting afterwards? Connect [Google Calendar](/mcp/google-calendar) — the Meet event is a calendar event, so the Calendar tools operate on it directly. ## 6. Example usage > **"Set up a 30-minute Google Meet with [jane@acme.com](mailto:jane@acme.com) tomorrow at 3pm IST called 'Onboarding call'."** > > Runs **Create Meeting** and returns the Meet join link. > **"When a demo request form comes in, book a 45-minute Meet with the requester for the next open slot."** > > A workflow chains the form trigger into **Create Meeting**. ## 7. Permissions & data access **UnleashX can:** * Create meetings on the connected Google account's calendar. * Set the title, start/end time, time zone, and attendee list. * Return the generated Meet join link. **UnleashX cannot:** * Join, record, or transcribe meetings. * Access Gmail, Drive, or other Google services unless connected separately. * Change your Google account settings or password. **To disconnect:** In UnleashX, open **Data Connectors → Google Meet → Disconnect**, or revoke at [https://myaccount.google.com/permissions](https://myaccount.google.com/permissions). Revoking takes effect immediately. ## 8. Troubleshooting | Problem | What it means | How to fix it | | ---------------------------------- | ------------------------------------------------------------- | ----------------------------------------------------------------------------------- | | `401 Unauthorized` | The access token is missing or expired. | Reconnect Google Meet in **Data Connectors**. | | `403 Forbidden` | Missing scope, or your Workspace policy blocks Meet creation. | Re-authorize all scopes; check with your Workspace admin. | | **No Meet link on the event** | The event was created without a conference request. | Recreate the meeting through **Create Meeting** rather than a plain calendar event. | | **Wrong meeting time** | The time zone wasn't set, so the default was used. | Pass an explicit time zone (for example `Asia/Kolkata`). | | **Attendees didn't get an invite** | Attendee emails were missing or misspelled. | Confirm the attendee list before running the step. | For general connector issues, see [/mcp/integrations](/mcp/integrations). ## 9. Frequently asked questions **Does UnleashX store my meeting data?** No. It creates the meeting through Google's API in real time; it doesn't keep a copy. **Can the agent join or record a call?** No. It creates meetings only. **Can multiple team members connect Google Meet?** Yes. Each person authorizes their own Google account, and meetings are created on that account's calendar. **Do I also need Google Calendar connected?** Not to create a meeting. Connect Calendar if you also want the agent to find, update, or cancel meetings. ## 10. References * [Google Meet REST API](https://developers.google.com/meet/api/guides/overview) * [Creating events with Meet conferencing (Calendar API)](https://developers.google.com/workspace/calendar/api/guides/create-events) * [Manage third-party access to your Google Account](https://myaccount.google.com/permissions) # Google Sheets Source: https://docs.unleashx.ai/mcp/google-sheets Let your UnleashX agent read, write, and manage Google Sheets spreadsheets, rows, and cells. # Google Sheets > **In one line:** Connect Google Sheets so your UnleashX agent can read rows, write updates, manage tabs, and track changes in your spreadsheets. | | | | ------------------ | ----------------------------------------------------------------------------------- | | **Category** | Productivity | | **Authentication** | OAuth (Google sign-in) | | **Setup time** | \~2 minutes | | **Difficulty** | Easy | | **Best for** | Lead tracking, data logging, and structured read/write automation over spreadsheets | ## 1. Overview Google Sheets is Google's spreadsheet service for storing structured data in rows, columns, and tabs. Once connected, your UnleashX agent can create and delete spreadsheets and sheets (tabs), read and write rows and cells, append or update data, clear ranges, delete rows/columns, and detect updates for trigger-style flows. Connecting Google Sheets to UnleashX turns spreadsheets into a live data backend for your agent: log new leads, update a status cell, or pull the latest rows into a prompt — all from natural language, with no manual copy-paste. ## 2. What you'll need Any personal Google account or a Google Workspace account with Sheets enabled. You must be able to complete the Google sign-in and approve the requested permissions. An agent in your UnleashX workspace where you'll add the Sheets connector. No admin access? On a managed Google Workspace account, your admin may need to allow UnleashX before authorization succeeds. ## 3. Get your credentials Google Sheets uses **Google OAuth 2.0**. You do **not** create or paste an API key. UnleashX redirects you to Google, you sign in once, and Google issues an access token to UnleashX automatically. In your agent's **Data Connectors**, find **Google Sheets** and click **Connect** (see Section 4). Choose the Google account whose spreadsheets you want to connect. Click **Allow** to grant access and return to UnleashX. There is no key to copy. Access is granted by your Google sign-in and can be revoked anytime at your [Google Account permissions page](https://myaccount.google.com/permissions). **Scopes UnleashX requests for Google Sheets:** | Scope | Why UnleashX needs it | | -------------------------------------------------- | --------------------------------------------------------------- | | `https://www.googleapis.com/auth/spreadsheets` | Read and write spreadsheet values, rows, cells, and sheets. | | `https://www.googleapis.com/auth/drive` | List spreadsheets and create/delete spreadsheet files in Drive. | | `https://www.googleapis.com/auth/drive.file` | Access the specific spreadsheet files you open or create. | | `https://www.googleapis.com/auth/drive.readonly` | Find and list your spreadsheets. | | `https://www.googleapis.com/auth/userinfo.email` | Identify which account is connected. | | `https://www.googleapis.com/auth/userinfo.profile` | Read your basic profile (name, picture). | | `openid` | Sign-in / identity verification. | ## 4. Connect on UnleashX Sign in at [https://www.tryunleashx.com](https://www.tryunleashx.com) and open your agent. In the agent, open **Data Connectors**. Locate **Google Sheets** and click **Connect** / **Add** / **Configure**. Click **Authorize**, sign in with Google, and approve the requested permissions. You'll return to UnleashX and the connector status will show a **Connected** badge. ### Use Google Sheets in a Workflow Once connected, you can add **Google Sheets** to any automation from the **Workflows** builder. Its triggers and tools appear in the Apps panel, marked with an **MCP** badge. Open **Workflows → New Workflow**. On the canvas, click **+ Add Trigger**. In the **Paths** panel, open the **Apps** tab and select **Google Sheets** — its **Triggers** are listed underneath. Use the search box if you have many connectors. Google Sheets triggers in the Apps panel Click the **+** below any node to add a step, then pick **Google Sheets** again — this time the panel lists its **Actions**. Google Sheets actions in the Apps panel Fill in the fields for the trigger or action you picked. Required fields are marked with a red asterisk (\*). Under **Selected account**, choose an already-connected account, or click **Add Account** to connect one now. Click **Save**. Use **Test** to verify the step, then toggle **Publish** when the workflow is ready. The steps are the same for every connector. For the full workflow builder guide, see [Using MCP in Workflows](/mcp/workflows). ## 5. Available tools | Tool | What it does | Changes data? | | ---------------------- | ------------------------------------------------ | ------------- | | Create Spreadsheet | Create a new spreadsheet. | ✏️ Yes | | Delete Spreadsheet | Delete a spreadsheet. | ⚠️ Yes | | Append or Update Row | Append a row, or update it if it already exists. | ✏️ Yes | | Append Row | Append a row to a sheet. | ✏️ Yes | | Clear Sheet | Clear values from a sheet/range. | ⚠️ Yes | | Create Sheet | Create a new sheet (tab). | ✏️ Yes | | Delete Sheet | Delete a sheet (tab) by ID. | ⚠️ Yes | | Delete Rows or Columns | Delete rows or columns. | ⚠️ Yes | | Delete Row | Delete a single row. | ⚠️ Yes | | Get Sheet Columns | Get the columns of a sheet. | No | | Update Row in Sheet | Update a row by row number. | ✏️ Yes | | Get Spreadsheet | Get spreadsheet metadata. | No | | Get Cell | Get a cell value (or a default range). | No | | Update Cell | Update a single cell. | ✏️ Yes | | List Spreadsheets | List available spreadsheets. | No | | List Sheets | List sheets (tabs) in a spreadsheet. | No | | List Worksheets | List worksheets in a spreadsheet. | No | | Clear Rows | Clear a range of rows. | ⚠️ Yes | | Update Column | Update one or more columns. | ✏️ Yes | | Get Sheet Updates | Get sheet updates (trigger-style). | No | | Create Row | Create a row with key/value columns. | ✏️ Yes | | Update Row | Update a row by number with key/value columns. | ✏️ Yes | | Get Rows in Sheet | Get rows from a sheet. | No | | Find Row | Find a row matching criteria. | No | ## 6. Example usage > **"Add a new lead to the Leads tab: name Alice, email [alice@acme.com](mailto:alice@acme.com), status New."** > > Runs **List Sheets** to confirm the tab, then **Append Row**. > **"What's in cell B3 of the Budget sheet, and set it to 5000."** > > Runs **Get Cell**, then **Update Cell**. ## 7. Permissions & data access **UnleashX can:** * Read spreadsheet values, rows, and cells. * Create and delete spreadsheets and sheets (tabs). * Append, update, and clear rows, columns, and cells. * Detect updates for trigger-style flows. **UnleashX cannot:** * Access Gmail, Calendar, or other Google services unless connected separately. * Change your Google account settings or password. * Edit spreadsheets you don't have access to. **To disconnect:** In UnleashX, open **Data Connectors → Google Sheets → Disconnect**, or revoke at [https://myaccount.google.com/permissions](https://myaccount.google.com/permissions). Revoking takes effect immediately. The connection authenticates each request with your Google OAuth access token (resolved from an `access-token` header, a `google_sheets_access_token` header, or an `Authorization: Bearer` header, falling back to your UnleashX session), refreshed automatically when it expires. ## 8. Troubleshooting | Problem | What it means | How to fix it | | ------------------ | ------------------------------------------------------------ | ---------------------------------------------------------------------------------------------- | | `401 Unauthorized` | The access token is missing or expired. | Reconnect Google Sheets in **Data Connectors**. | | `403 Forbidden` | Missing scope, or you lack edit rights on the spreadsheet. | Re-authorize all scopes; confirm you can edit the file. | | `404 Not Found` | The spreadsheet or sheet ID is wrong or not shared with you. | Verify the `spreadsheet_id` (the segment between `/d/` and `/edit` in the URL) and `sheet_id`. | | Wrong cell updated | A1 notation or sheet name was ambiguous. | Pass an explicit `sheet_id`/`sheet_name` and A1 cell reference. | For general connector issues, see [/mcp/integrations](/mcp/integrations). ## 9. Frequently asked questions **Does UnleashX store my spreadsheet data?** No. It reads and writes through Google's API in real time to fulfill your requests. **Can multiple team members connect Sheets?** Yes. Each person authorizes their own Google account. **How do I find a spreadsheet ID?** It's the part of the URL between `/d/` and `/edit`: `https://docs.google.com/spreadsheets/d/{spreadsheet_id}/edit`. ## 10. References * [Google Sheets API documentation](https://developers.google.com/sheets/api) * [Google Sheets API OAuth scopes](https://developers.google.com/sheets/api/scopes) * [Google Cloud Console](https://console.cloud.google.com/) * [Manage third-party access to your Google Account](https://myaccount.google.com/permissions) # Google Slides Source: https://docs.unleashx.ai/mcp/google-slides Let your UnleashX agent create presentations, add slides, and update slide content automatically. # Google Slides > **In one line:** Connect Google Slides so your UnleashX agent can build presentations, add and edit slides, and update text from natural language. | | | | ------------------ | ---------------------------------------------------------------------------------- | | **Category** | Productivity | | **Authentication** | OAuth (Google sign-in) | | **Setup time** | \~2 minutes | | **Difficulty** | Easy | | **Best for** | Generating decks from AI output and automating recurring report and summary slides | ## 1. Overview Google Slides is Google's presentation service for creating and editing slide decks stored in Drive. Once connected, your UnleashX agent can create presentations, read presentations and individual pages, list layouts and templates, add and delete slides, insert text and text boxes, create populated title-and-body slides, replace text across a deck, and fetch slide thumbnails. Connecting Google Slides to UnleashX makes deck-building conversational: ask "create a 3-slide summary of this report" or "add a closing slide with these bullet points," and the agent assembles the slides for you. ## 2. What you'll need Any personal Google account or a Google Workspace account with Slides enabled. You must be able to complete the Google sign-in and approve the requested permissions. An agent in your UnleashX workspace where you'll add the Slides connector. No admin access? On a managed Google Workspace account, your admin may need to allow UnleashX before authorization succeeds. ## 3. Get your credentials Google Slides uses **Google OAuth 2.0**. You do **not** create or paste an API key. UnleashX redirects you to Google, you sign in once, and Google issues an access token to UnleashX automatically. In your agent's **Data Connectors**, find **Google Slides** and click **Connect** (see Section 4). Choose the Google account whose presentations you want to connect. Click **Allow** to grant access and return to UnleashX. There is no key to copy. Access is granted by your Google sign-in and can be revoked anytime at your [Google Account permissions page](https://myaccount.google.com/permissions). **Scopes UnleashX requests for Google Slides:** | Scope | Why UnleashX needs it | | -------------------------------------------------- | ---------------------------------------------------------- | | `https://www.googleapis.com/auth/presentations` | Create and edit presentations, slides, and text. | | `https://www.googleapis.com/auth/drive` | List and create presentation files in Drive. | | `https://www.googleapis.com/auth/drive.file` | Access the specific presentation files you open or create. | | `https://www.googleapis.com/auth/drive.readonly` | Find and list your presentations and templates. | | `https://www.googleapis.com/auth/userinfo.email` | Identify which account is connected. | | `https://www.googleapis.com/auth/userinfo.profile` | Read your basic profile (name, picture). | | `openid` | Sign-in / identity verification. | ## 4. Connect on UnleashX Sign in at [https://www.tryunleashx.com](https://www.tryunleashx.com) and open your agent. In the agent, open **Data Connectors**. Locate **Google Slides** and click **Connect** / **Add** / **Configure**. Click **Authorize**, sign in with Google, and approve the requested permissions. You'll return to UnleashX and the connector status will show a **Connected** badge. ### Use Google Slides in a Workflow Once connected, you can add **Google Slides** to any automation from the **Workflows** builder. Its triggers and tools appear in the Apps panel, marked with an **MCP** badge. Open **Workflows → New Workflow**. On the canvas, click **+ Add Trigger**. In the **Paths** panel, open the **Apps** tab and select **Google Slides** — its **Triggers** are listed underneath. Use the search box if you have many connectors. Click the **+** below any node to add a step, then pick **Google Slides** again — this time the panel lists its **Actions**. Google Slides actions in the Apps panel Fill in the fields for the trigger or action you picked. Required fields are marked with a red asterisk (\*). Under **Selected account**, choose an already-connected account, or click **Add Account** to connect one now. Click **Save**. Use **Test** to verify the step, then toggle **Publish** when the workflow is ready. The steps are the same for every connector. For the full workflow builder guide, see [Using MCP in Workflows](/mcp/workflows). ## 5. Available tools | Tool | What it does | Changes data? | | -------------------------- | ------------------------------------------------ | ------------- | | Create Presentation | Create a new presentation. | ✏️ Yes | | Get Presentation | Get a presentation's full structure. | No | | Get Page | Get a single page (slide) by object ID. | No | | Get Thumbnail | Get a thumbnail image of a slide. | No | | Replace Text | Replace matching text across the deck. | ✏️ Yes | | Add Slide | Add a new slide at an index with a layout. | ✏️ Yes | | Delete Slide | Delete a slide. | ⚠️ Yes | | Get Slides | List the slides in a presentation. | No | | List Presentations | List available presentations. | No | | Get Presentation Templates | Get available presentation templates. | No | | Get Slide Templates | Get available slide templates. | No | | List Layouts | List available slide layouts. | No | | Get Layout Content | Get the content of a specific layout. | No | | List Presentation Template | List presentation templates. | No | | List Slides Template | List slide templates. | No | | Insert Text | Insert text into an existing shape/placeholder. | ✏️ Yes | | Create Textbox | Create a text box on a slide and fill it. | ✏️ Yes | | Create Slide with Content | Create a populated title+body slide in one call. | ✏️ Yes | ## 6. Example usage > **"Create a new presentation called 'Q3 Review' with a title slide and a slide listing our three key wins."** > > Runs **Create Presentation**, then **Create Slide with Content**. > **"In the Q3 Review deck, replace 'DRAFT' with 'FINAL' everywhere."** > > Runs **Replace Text**. ## 7. Permissions & data access **UnleashX can:** * Create presentations and read their structure and thumbnails. * Add and delete slides. * Insert text and text boxes, create populated slides, and replace text. * List layouts and templates. **UnleashX cannot:** * Access Gmail, Calendar, or other Google services unless connected separately. * Change your Google account settings or password. * Edit presentations you don't have access to. **To disconnect:** In UnleashX, open **Data Connectors → Google Slides → Disconnect**, or revoke at [https://myaccount.google.com/permissions](https://myaccount.google.com/permissions). Revoking takes effect immediately. The connection authenticates each request with your Google OAuth access token (resolved from an `access-token` header, a `google_slides_access_token` header, or an `Authorization: Bearer` header, falling back to your UnleashX session), refreshed automatically when it expires. ## 8. Troubleshooting | Problem | What it means | How to fix it | | -------------------------------- | ------------------------------------------------------------- | ------------------------------------------------------------------- | | `401 Unauthorized` | The access token is missing or expired. | Reconnect Google Slides in **Data Connectors**. | | `403 Forbidden` | Missing scope, or you lack edit rights on the presentation. | Re-authorize all scopes; confirm you can edit the file. | | `404 Not Found` | The presentation or slide ID is wrong or not shared with you. | Verify the `presentation_id`/object ID and your access. | | Text inserted in the wrong place | The target object ID was incorrect. | Use **Get Presentation**/**Get Page** to get the right `object_id`. | For general connector issues, see [/mcp/integrations](/mcp/integrations). ## 9. Frequently asked questions **Does UnleashX store my presentations?** No. It reads and writes through Google's API in real time to fulfill your requests. **Can multiple team members connect Slides?** Yes. Each person authorizes their own Google account. **Can it apply custom themes?** The tools work with layouts and templates exposed by Slides; full custom theming beyond those isn't exposed here. ## 10. References * [Google Slides API documentation](https://developers.google.com/slides/api) * [Google Slides API OAuth scopes](https://developers.google.com/slides/api/concepts/auth) * [Google Cloud Console](https://console.cloud.google.com/) * [Manage third-party access to your Google Account](https://myaccount.google.com/permissions) # Google Tasks Source: https://docs.unleashx.ai/mcp/google-tasks Let your UnleashX agent manage task lists and tasks in Google Tasks. # Google Tasks > **In one line:** Connect Google Tasks so your UnleashX agent can create task lists, add and update tasks, find what's due, and keep your to-dos organized — all in plain language. | | | | ------------------ | --------------------------------------------------------------------------------------------------- | | **Category** | Productivity & Scheduling | | **Authentication** | OAuth (Google) | | **Setup time** | \~2 minutes | | **Difficulty** | Easy | | **Best for** | Individuals and teams that want an AI agent to capture, organize, and update to-dos in Google Tasks | ## 1. Overview Google Tasks is Google's lightweight to-do list, built into Gmail, Google Calendar, and Workspace. It organizes your work into task lists, each holding individual tasks with due dates, notes, and completion status. Once connected to UnleashX, your agent can create new task lists, add tasks, update details like due dates and notes, mark tasks complete, find a specific task, and clear out ones you no longer need. It works against your live Google Tasks using your own Google sign-in, so it respects your account and access. Connecting Google Tasks to UnleashX means your to-do list keeps up with the conversation. Instead of switching to Tasks to jot something down or check what's due, you tell your agent and it captures, updates, or looks up the item for you. ## 2. What you'll need * A Google account (personal or Google Workspace) with Google Tasks enabled. * Access to Gmail, Google Calendar, or the Tasks app so you can see your lists. * An UnleashX account with access to **Data Connectors**. No API key to paste. Google Tasks uses OAuth — you click **Authorize** and sign in with Google. If you're on **Google Workspace**, your admin can restrict which third-party apps may connect. If authorization is blocked, ask your Workspace admin to allow UnleashX. ## 3. Get your credentials There's no key to copy. Authentication runs through Google's secure OAuth sign-in. Connecting Google Tasks (Section 4) opens a Google **Sign in** window. Choose the Google account whose tasks you want the agent to manage, and sign in at `https://accounts.google.com`. Complete two-factor authentication if prompted. Google shows the access UnleashX is requesting (see the scopes table). Review it and click **Allow**. If you're signed in to more than one Google account, make sure you picked the one that holds the task lists you want to work with. Google redirects you back automatically and the connector links to your account. Behind the scenes UnleashX uses Google's OAuth token — you never handle it yourself. **Permissions (Google OAuth scopes) UnleashX requests:** | Scope | Why UnleashX needs it | | ------------------------------------------------ | ----------------------------------------------------------------- | | `https://www.googleapis.com/auth/tasks` | Create, read, update, and delete your task lists and tasks. | | `openid` | Identify the Google account being connected. | | `https://www.googleapis.com/auth/userinfo.email` | Confirm which account is linked so you can manage the connection. | Google OAuth scopes are granular. UnleashX requests only what these tools need, and Google — not UnleashX — enforces the limits. ## 4. Connect on UnleashX Go to [https://www.tryunleashx.com](https://www.tryunleashx.com) and open the agent you want to connect. Inside the agent, go to **Data Connectors**. Locate **Google Tasks** and click **Connect** (or **Add** / **Configure**). Click **Authorize**, sign in with Google, and accept the scopes. You return to UnleashX and the Google Tasks connector shows a **Connected** badge. ### Use Google Tasks in a Workflow Once connected, you can add **Google Tasks** to any automation from the **Workflows** builder. Its triggers and tools appear in the Apps panel, marked with an **MCP** badge. Open **Workflows → New Workflow**. On the canvas, click **+ Add Trigger**. In the **Paths** panel, open the **Apps** tab and select **Google Tasks** — its **Triggers** are listed underneath. Use the search box if you have many connectors. Click the **+** below any node to add a step, then pick **Google Tasks** again — this time the panel lists its **Actions**. Fill in the fields for the trigger or action you picked. Required fields are marked with a red asterisk (\*). Under **Selected account**, choose an already-connected account, or click **Add Account** to connect one now. Click **Save**. Use **Test** to verify the step, then toggle **Publish** when the workflow is ready. The steps are the same for every connector. For the full workflow builder guide, see [Using MCP in Workflows](/mcp/workflows). ## 5. Available tools | Tool | What it does | Changes data? | | --------------- | ---------------------------------------------- | ------------- | | List Tasklists | Lists the task lists in your account. | No | | Create Tasklist | Creates a new task list. | ✏️ Yes | | List Tasks | Lists tasks within a task list. | No | | Get Task | Retrieves a single task by ID. | No | | Create Task | Adds a new task to a list. | ✏️ Yes | | Update Task | Updates a task's details or completion status. | ✏️ Yes | | Delete Task | Deletes a specified task. | ⚠️ Yes | | Find Task | Searches for a task matching your criteria. | No | ### Available triggers | Trigger | Fires when | | ----------- | ----------------------------------- | | On New Task | A new task is added to a task list. | ## 6. Example usage **"Add 'Send the Q3 report to finance' to my Work list, due Friday."** → Runs Create Task on the Work list with the title and Friday's due date. **"What's on my Personal list, and mark 'Call the dentist' as done."** → Runs List Tasks on the Personal list, then Update Task to mark "Call the dentist" complete. ## 7. Permissions & data access **UnleashX can:** * Read and list your task lists and tasks. * Create task lists and add new tasks. * Update task details, due dates, and completion status. * Delete tasks where you allow it (this tool is clearly marked ⚠️). **UnleashX cannot:** * Access other Google services (Gmail, Calendar, Drive) — those are separate connectors. * Change your Google account password or security settings. * Do anything your Google account doesn't permit. **To disconnect:** In UnleashX, open **Data Connectors → Google Tasks → Disconnect**. You can also revoke access at `https://myaccount.google.com/permissions` (Third-party apps with account access). Disconnecting revokes access immediately. ## 8. Troubleshooting | Problem | What it means | How to fix it | | ----------------------- | -------------------------------------------------- | ----------------------------------------------------------------------------------- | | **401 Unauthorized** | The Google token expired or is invalid. | Reconnect Google Tasks in **Data Connectors** and sign in again. | | **403 Forbidden** | Access to Tasks was blocked or not granted. | Re-authorize and accept the scopes; on Workspace, ask your admin to allow UnleashX. | | **Wrong account** | The agent is acting on a different Google account. | Reconnect and pick the correct account. | | **Task not found** | The task or list ID no longer exists. | Use List Tasklists or Find Task to locate the current item, then retry. | | **Rate limit exceeded** | Google's Tasks API request limit was reached. | Wait a moment and retry with fewer, more specific requests. | For general MCP issues, see [/mcp/integrations](/mcp/integrations). ## 9. Frequently asked questions **Are my tasks stored by UnleashX?** No. UnleashX reads and writes your tasks live through the Google Tasks API per request; it doesn't keep a copy. **Which account does the agent use?** The Google account you selected when connecting. To switch, reconnect and choose a different account. **Can the agent really delete tasks?** Yes — the Delete Task tool (marked ⚠️) permanently removes a task. Use it deliberately. **Does this work with Google Workspace accounts?** Yes, as long as your admin allows third-party app access. If authorization is blocked, ask your Workspace admin to permit UnleashX. ## 10. References * Google Tasks API documentation: [https://developers.google.com/tasks](https://developers.google.com/tasks) * Google OAuth 2.0 scopes: [https://developers.google.com/identity/protocols/oauth2/scopes](https://developers.google.com/identity/protocols/oauth2/scopes) * Manage third-party access to your Google Account: [https://myaccount.google.com/permissions](https://myaccount.google.com/permissions) * Google sign-in: [https://accounts.google.com](https://accounts.google.com) # GREEN-API WhatsApp Source: https://docs.unleashx.ai/mcp/green-api Let your UnleashX agent send and read WhatsApp messages through a real WhatsApp number using GREEN-API. # GREEN-API WhatsApp > **In one line:** Connect GREEN-API so your UnleashX agent can send WhatsApp messages, files, locations, polls and buttons from a real WhatsApp number, read the conversation back, and start a workflow when someone replies. | | | | ------------------ | ------------------------------------------------------------------------------------------------------------ | | **Category** | Communication | | **Authentication** | Instance ID + instance API token | | **Setup time** | \~10 minutes (including QR scan) | | **Difficulty** | Medium | | **Best for** | Teams who want an agent on an ordinary WhatsApp number, without going through the WhatsApp Business Platform | ## 1. Overview GREEN-API connects a real WhatsApp number to an HTTP API. You create an **instance**, link it to a phone by scanning a QR code, and from then on that number can be driven programmatically. Once connected to UnleashX, your agent can send text, files by URL, locations, contact cards, polls and interactive buttons; read chat history and the message journals; check whether a number is even on WhatsApp before messaging it; manage groups and participants; and check that the instance is still authorized. Two polling triggers let a workflow start on its own — an incoming message, or an incoming call. Connecting GREEN-API to UnleashX puts an agent on the channel customers already use, on a number they may already have saved, with none of the template approval that the official Business Platform requires. This is different from [WhatsApp Business](/mcp/whatsapp-business), which uses Meta's official Cloud API with approved templates and a verified business number. GREEN-API drives an ordinary WhatsApp account. Pick based on which account you're sending from. ## 2. What you'll need * A **GREEN-API account** — sign up at [green-api.com](https://green-api.com/). * A **WhatsApp number** you can scan a QR code with, and keep online. * An **instance** created in the GREEN-API console, in the **authorized** state. * Its **ID Instance**, **API Token Instance**, and **API URL** — all three on the instance card. The linked phone must stay reachable. If the WhatsApp session is unlinked from the phone, or the number gets banned by WhatsApp for behaving like a bot, the instance stops working. Send at a human pace and only to people who expect to hear from you. ## 3. Get your credentials GREEN-API doesn't use a header token. The credentials sit **in the request URL**, which is why there are three values instead of one, and why all three are per-instance. Sign in at [console.green-api.com](https://console.green-api.com/) and create an instance on the plan you want. Open the instance and scan the QR code from the phone you're sending from — **WhatsApp → Linked devices → Link a device**. The instance card should show the state **authorized**. Anything else (`notAuthorized`, `blocked`, `starting`) means no call will succeed yet. From the instance card, copy: | Value | Looks like | | ---------------------- | ----------------------------------------------------------------- | | **ID Instance** | a numeric id, e.g. `1101234567` | | **API Token Instance** | a long hex secret | | **API URL** | the host for your instance, e.g. `https://1101.api.green-api.com` | The API Token Instance is the password for that WhatsApp number. Anyone holding it can send messages as you. The **API URL** is per-instance — instances are spread across hosts, so don't copy another instance's host. It's printed on the same card. ## 4. Connect on UnleashX Sign in at [https://www.tryunleashx.com](https://www.tryunleashx.com) and open the agent you want to connect. In the agent, go to **Data Connectors** and find **GREEN-API WhatsApp**. Click **Connect** / **Add** / **Configure** and enter the **ID Instance**, **API Token Instance** and **API URL** from Section 3, plus an **Account Name** to label the connection. Save, then run **Get State Instance** once — `authorized` means the number is live and ready. ### Use GREEN-API in a Workflow Once connected, you can add **GREEN-API WhatsApp** to any automation from the **Workflows** builder. Its triggers and tools appear in the Apps panel, marked with an **MCP** badge. Open **Workflows → New Workflow**. On the canvas, click the **+** below a node, then open the **Apps** tab in the **Paths** panel and select **GREEN-API WhatsApp** — its **Actions** are listed underneath. Use the search box if you have many connectors. GREEN-API WhatsApp actions in the Apps panel Choose the action from **Select Action**, then pick the connected account under **Select Account** — or click **Add Account** to connect one now. Configuring a Send Message step Required fields are marked with a red asterisk (\*). **Select Chat** resolves the WhatsApp chat for you, so you don't have to type a raw chat id. Click **Save**. Use **Test** to verify the step, then toggle **Publish** when the workflow is ready. The steps are the same for every connector. For the full workflow builder guide, see [Using MCP in Workflows](/mcp/workflows). ## 5. Available tools Names match the **Workflows** Apps panel, which lists them alphabetically; they're grouped here by what they do. The **Tool ID** is what the agent calls behind the scenes. **Sending** | Tool | Tool ID | What it does | Required | Changes data? | | ------------------------ | ----------------------------------- | --------------------------------------------------------------- | ------------------------------------- | ------------- | | Send Message | `greenapi_send_message` | Sends a WhatsApp text message | `chat_id`, `message` | ✏️ Yes | | Send File By URL | `greenapi_send_file_by_url` | Sends an image, video, audio or document by public URL | `chat_id`, `url_file`, `file_name` | ✏️ Yes | | Send Location | `greenapi_send_location` | Sends a location pin | `chat_id`, `latitude`, `longitude` | ✏️ Yes | | Send Contact | `greenapi_send_contact` | Sends a contact card | `chat_id`, `phone_contact` | ✏️ Yes | | Send Poll | `greenapi_send_poll` | Sends a poll | `chat_id`, `message`, `options` | ✏️ Yes | | Send Interactive Buttons | `greenapi_send_interactive_buttons` | Sends a message with up to 3 buttons | `chat_id`, `body`, `buttons` | ✏️ Yes | | Forward Messages | `greenapi_forward_messages` | Forwards messages from one chat to another | `chat_id`, `chat_id_from`, `messages` | ✏️ Yes | | Upload File By URL | `greenapi_upload_file_by_url` | Uploads a file to GREEN-API storage and returns a reusable link | `url_file` | ✏️ Yes | **Reading** | Tool | Tool ID | What it does | Required | Changes data? | | ---------------------- | --------------------------------- | ------------------------------------------------ | ----------------------- | ------------- | | Get Chat History | `greenapi_get_chat_history` | Recent messages from one chat | `chat_id` | No | | Get Message | `greenapi_get_message` | A single message by id | `chat_id`, `id_message` | No | | Last Incoming Messages | `greenapi_last_incoming_messages` | Incoming messages from the journal, newest first | — | No | | Last Outgoing Messages | `greenapi_last_outgoing_messages` | Outgoing messages with their delivery status | — | No | | Last Incoming Calls | `greenapi_last_incoming_calls` | Incoming calls from the journal | — | No | | Read Chat | `greenapi_read_chat` | Marks a chat as read | `chat_id` | ✏️ Yes | **Contacts** | Tool | Tool ID | What it does | Required | Changes data? | | ---------------- | --------------------------- | ---------------------------------------------------- | -------------- | ------------- | | Get Contacts | `greenapi_get_contacts` | Lists the account's contacts | — | No | | Get Contact Info | `greenapi_get_contact_info` | One contact's profile details | `chat_id` | No | | Check Whatsapp | `greenapi_check_whatsapp` | Checks whether a number has WhatsApp, before sending | `phone_number` | No | | Get Avatar | `greenapi_get_avatar` | A contact's or group's profile picture URL | `chat_id` | No | Run **Check Whatsapp** before a send to a number you're unsure about. Messaging numbers that aren't on WhatsApp is one of the patterns that gets an account flagged. **Groups** | Tool | Tool ID | What it does | Required | Changes data? | | ------------------------ | ----------------------------------- | ---------------------------------- | --------------------------------- | ------------- | | Create Group | `greenapi_create_group` | Creates a WhatsApp group | `group_name`, `chat_ids` | ✏️ Yes | | Get Group Data | `greenapi_get_group_data` | Group name, owner and participants | `group_id` | No | | Add Group Participant | `greenapi_add_group_participant` | Adds someone to a group | `group_id`, `participant_chat_id` | ✏️ Yes | | Remove Group Participant | `greenapi_remove_group_participant` | Removes someone from a group | `group_id`, `participant_chat_id` | ⚠️ Yes | | Leave Group | `greenapi_leave_group` | Leaves a group | `group_id` | ⚠️ Yes | **Instance** | Tool | Tool ID | What it does | Required | Changes data? | | ------------------ | ----------------------------- | ------------------------------------------------------- | -------- | ------------- | | Get State Instance | `greenapi_get_state_instance` | Whether the instance is authorized and online | — | No | | Get Settings | `greenapi_get_settings` | Instance settings, including the configured webhook URL | — | No | **Triggers** | Trigger | Trigger ID | Fires when | | -------------------- | ------------------------------- | ------------------------------------------------------------- | | On New Message | `greenapi_on_new_message` | An incoming message appears that the previous poll didn't see | | On New Incoming Call | `greenapi_on_new_incoming_call` | An incoming call appears that the previous poll didn't see | **Triggers read the journals, not the notification queue.** That matters in three ways: any number of workflows can poll the same instance without consuming each other's messages, your own GREEN-API webhooks keep working, and nothing is destroyed by being read. The trade-off is up to about **2 minutes** before a message reaches the journal — schedule these triggers at **5 minutes or slower**. The journal is a rolling window — by default the last **1440 minutes** and at most **10,000 messages**. A trigger paused longer than its window will miss whatever fell off the back. ## 6. Example usage **"Message +91 98765 43210 that their order shipped."** Runs **Check Whatsapp** to confirm the number, then **Send Message**. **"Send the invoice PDF to that chat."** Runs **Send File By URL** with the document's public URL. **"When someone messages us on WhatsApp, look them up in the CRM and draft a reply."** A workflow starts on **On New Message** and chains into your CRM connector. **"Ask the group to pick a slot."** Runs **Send Poll** with the options, or **Send Interactive Buttons** for up to three choices. ## 7. Permissions & data access **UnleashX CAN:** * Send messages, files, locations, contacts, polls and buttons from the linked number. * Read chat history, message journals and delivery status. * Manage groups and participants, and mark chats read. * Check instance state and settings. **UnleashX CANNOT:** * Act on any WhatsApp account other than the linked instance. * Recover messages older than the journal window. * Bypass WhatsApp's own rules — spam behaviour still gets the number banned. **To disconnect:** In UnleashX, open your agent → **Data Connectors** → **GREEN-API WhatsApp** → **Disconnect**. To fully revoke, log out the instance or delete it in the GREEN-API console. ## 8. Troubleshooting | Problem | What it means | How to fix it | | -------------------------------------------------------------- | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | | Every call fails | The instance isn't authorized, or the values are wrong | Run **Get State Instance**; if it isn't `authorized`, re-scan the QR | | `notAuthorized` after it was working | The device was unlinked from the phone | Re-scan the QR in the GREEN-API console | | Wrong host errors | The API URL belongs to a different instance | Copy the **API URL** from this instance's own card | | "Message cannot be received because custom webhook url is set" | Something is calling `ReceiveNotification` while a webhook is configured | The triggers here don't use that queue — check for other integrations polling the same instance | | Trigger misses messages | It was paused longer than the journal window, or polls faster than the journal fills | Poll at 5 minutes or slower, and don't leave it paused past 1440 minutes | | Messages send but never arrive | The recipient isn't on WhatsApp, or the number is blocked | Confirm with **Check Whatsapp** | | The number got banned | WhatsApp flagged the sending pattern | This is enforced by WhatsApp, not GREEN-API — reduce volume and only message people who opted in | For general connector issues, see [/mcp/integrations](/mcp/integrations). ## 9. Frequently asked questions **Is this the official WhatsApp API?** No. It drives an ordinary WhatsApp account through GREEN-API. For Meta's official Cloud API with approved templates, use [WhatsApp Business](/mcp/whatsapp-business). **Does my phone need to stay on?** The WhatsApp session must stay linked. Treat it like any other linked device. **Can I connect more than one number?** Yes. Create an instance per number and add each as its own connection. **Why is my trigger slow?** Journal latency is up to about two minutes by design — it's the trade-off for triggers that don't consume messages or break your webhooks. **Do templates need approval?** No. That's a Business Platform requirement, not a GREEN-API one. ## 10. References * GREEN-API documentation: [https://green-api.com/en/docs/](https://green-api.com/en/docs/) * GREEN-API console: [https://console.green-api.com/](https://console.green-api.com/) * Journal methods (LastIncomingMessages): [https://green-api.com/en/docs/api/journals/LastIncomingMessages/](https://green-api.com/en/docs/api/journals/LastIncomingMessages/) # HeyGen Source: https://docs.unleashx.ai/mcp/heygen Create talking-avatar and talking-photo videos from text with HeyGen. # HeyGen > **In one line:** Let your UnleashX agent turn a script into a video of a presenter — either a digital avatar or a talking version of a photo you provide. | | | | ------------------ | ----------------------------------------------------------------------------- | | **Category** | AI & Media | | **Authentication** | Platform-managed | | **Setup time** | \~1 minute | | **Difficulty** | Easy | | **Best for** | Spokesperson videos, personalized outreach, training clips, and announcements | ## 1. Overview HeyGen creates avatar videos: you give it text and it produces a video of a lifelike presenter speaking your words. It can use a built-in avatar, or animate a still photo into a "talking photo." Once connected, your agent can generate text-to-video (an avatar reads your script) and image-to-video (a supplied photo becomes the speaker), optionally choosing a voice. The agent can submit the job and either return immediately with a video ID or wait for the finished video URL. Connecting HeyGen to UnleashX lets your agents produce on-brand presenter videos at scale — personalized welcome messages, product walkthroughs, or campaign clips — straight from a script. ## 2. What you'll need HeyGen is **built into UnleashX**. There is no HeyGen account for you to create and no API key for you to manage. * An active UnleashX account. * The HeyGen / avatar-video feature enabled on your workspace/plan. * A script (the text the avatar will say). For talking-photo, a public image URL. * Permission to edit the agent (admin or editor role). Without it, ask a workspace admin to enable the feature. ## 3. Get your credentials There are **no credentials to create**. HeyGen is platform-managed — UnleashX provisions and rotates the underlying HeyGen API key. You never see or handle it. If you are a workspace admin, optional platform-side configuration includes the HeyGen base URL and the generation endpoint (UnleashX ships working defaults). Avatar IDs and voice IDs are optional inputs you can pass per request. | Platform-managed setting | Plain-English reason it exists | | ------------------------------- | ---------------------------------------------------------------- | | HeyGen API key | Provisioned and rotated by UnleashX so videos generate securely. | | Base URL / generate endpoint | Points UnleashX at the correct HeyGen API. Defaults are preset. | | Avatar ID / Voice ID (optional) | Lets you pick a specific presenter or voice per request. | ## 4. Connect on UnleashX Go to [https://www.tryunleashx.com](https://www.tryunleashx.com) and open the agent that should generate avatar videos. In the agent, click **Data Connectors**. Locate **HeyGen** and click **Connect** / **Add**. It's platform-managed — no key to paste, it activates immediately. The HeyGen tool should now show a **Connected** badge. ### Use HeyGen in a Workflow Once connected, you can add **HeyGen** to any automation from the **Workflows** builder. Its triggers and tools appear in the Apps panel, marked with an **MCP** badge. Open **Workflows → New Workflow**. On the canvas, click **+ Add Trigger**. In the **Paths** panel, open the **Apps** tab and select **HeyGen** — its **Triggers** are listed underneath. Use the search box if you have many connectors. Click the **+** below any node to add a step, then pick **HeyGen** again — this time the panel lists its **Actions**. Fill in the fields for the trigger or action you picked. Required fields are marked with a red asterisk (\*). Under **Selected account**, choose an already-connected account, or click **Add Account** to connect one now. Click **Save**. Use **Test** to verify the step, then toggle **Publish** when the workflow is ready. The steps are the same for every connector. For the full workflow builder guide, see [Using MCP in Workflows](/mcp/workflows). ## 5. Available tools | Tool | What it does | Changes data? | | -------------- | ------------------------------------------------------ | ------------- | | Text to Video | Generate a talking-avatar video from a text script | ✏️ Yes | | Image to Video | Generate a talking-photo video from an image plus text | ✏️ Yes | | Get Info | Report HeyGen configuration and readiness | No | The generate tools are marked ✏️ Yes because they create a new video. They do not modify or delete any existing data. ## 6. Example usage **"Have an avatar read this welcome message for new customers."** → Runs **Text to Video** with the script (and optional avatar/voice), returning a video ID or URL. **"Turn this headshot into a short talking-photo intro."** → Runs **Image to Video** with the image URL and the script. ## 7. Permissions & data access **UnleashX can:** * Send your script (and optional image URL, avatar, voice) to HeyGen. * Submit the generation job and fetch the resulting video status/URL. **UnleashX cannot:** * Generate video from content you don't provide. * Edit or delete videos created outside this flow. * Access your HeyGen account assets beyond what you pass in. **To disconnect:** Open the agent → **Data Connectors** → **HeyGen** → **Disconnect**. Access is revoked immediately. ## 8. Troubleshooting | Problem | What it means | How to fix it | | ------------------------- | ---------------------------------------------- | ------------------------------------------------------------------- | | "prompt is required" | No script text was supplied | Provide the text the avatar should say | | "image\_url is required" | Talking-photo called without an image | Pass a public image URL | | Status stuck / timeout | The video is still rendering | Poll again, or call with `wait_for_completion` set | | 401 / credential error | The platform-managed HeyGen key is unavailable | Platform-side — contact **[cs@unleashx.ai](mailto:cs@unleashx.ai)** | | 403 / feature not enabled | HeyGen isn't enabled on your plan | Ask a workspace admin or contact support | For general connector issues, see [/mcp/integrations](/mcp/integrations). ## 9. Frequently asked questions **Is my script or photo stored?** They're sent to HeyGen to render the video. They are not retained by the integration beyond producing your result. **Do I need a HeyGen account?** No. HeyGen is platform-managed — UnleashX provides and rotates the key. **Can I choose the avatar and voice?** Yes. Pass an `avatar_id`, `voice_id`, or `talking_photo_id` per request; otherwise sensible defaults are used. **Can multiple team members use it?** Yes. Once enabled on the workspace, anyone with access to the agent can generate videos. ## 10. References * HeyGen API docs: [https://docs.heygen.com/](https://docs.heygen.com/) * UnleashX dashboard: [https://www.tryunleashx.com](https://www.tryunleashx.com) * UnleashX integrations help: [/mcp/integrations](/mcp/integrations) # HTTP Executor Source: https://docs.unleashx.ai/mcp/http-executor A built-in UnleashX utility that lets workflows call any HTTP API, passing through whatever auth the target needs. # HTTP Executor > **In one line:** A platform utility that lets UnleashX workflows make a generic HTTP request to any API — handling the method, headers, query params, body, and authentication for you. | | | | ------------------ | ------------------------------------------------------------------------------------------------------------------------ | | **Category** | Dev Tools | | **Authentication** | Platform-managed | | **Setup time** | \~0 minutes (built in) | | **Difficulty** | Easy | | **Best for** | Builders who need their agent or workflow to reach an external API that doesn't have a dedicated UnleashX connector yet. | ## 1. Overview HTTP Executor is a general-purpose HTTP caller built into UnleashX. It lets a workflow send a request to any URL — GET, POST, PUT, PATCH, DELETE, and so on — with custom headers, query parameters, and a body, then returns the status code, response headers, and parsed body. It is a **platform utility**, not a third-party service you sign up for. UnleashX uses it internally to power workflow steps that need to talk to an external API. The single tool it exposes, **HTTP API Call**, passes through whatever authentication the **target** API requires — you tell it the auth type and value, and it formats the request accordingly. Connect this when you want your agent or workflow to integrate with an API that doesn't have its own UnleashX connector. Because it's so flexible, it's most often used by builders wiring up custom automation steps. Sensitive values (authorization headers, API keys, tokens, passwords) are automatically masked in logs. ## 2. What you'll need * An **UnleashX account** with the HTTP Executor / workflow feature enabled. There is no external account to create and no key for you to generate. * The details of the **API you want to call**: its URL, the HTTP method, any required headers or query parameters, the request body, and the authentication that *that* API expects. If you don't see HTTP Executor available, ask your UnleashX workspace admin to enable it, or contact support at **[cs@unleashx.ai](mailto:cs@unleashx.ai)**. ## 3. Get your credentials There is **no external credential to create** for HTTP Executor itself — it is built into UnleashX and managed at the platform level. Instead, you supply credentials for the **target** API at call time. **HTTP API Call** accepts an `auth_type` and `auth_value` and formats the outbound request for you: | `auth_type` | How the request is sent | | --------------- | --------------------------------------------------------------------- | | `bearer` | Adds `Authorization: Bearer `. | | `api_key` | Adds an `X-API-Key: ` header. | | `api_key_query` | Adds `api_key=` as a query parameter. | | `basic` | Base64-encodes `auth_value` and adds `Authorization: Basic …`. | | `custom_header` | Splits `auth_value` on `:` into a custom `Header-Name: value` header. | You can also leave `auth_type` empty and pass any headers (including your own `Authorization`) directly in the `headers` field. Whatever the target API needs, you provide it per request. ## 4. Connect on UnleashX Because HTTP Executor is platform-managed, there's no OAuth or key step — it's available as a workflow/agent capability once enabled. Sign in at [https://www.tryunleashx.com](https://www.tryunleashx.com) and open the agent or workflow where you want to make HTTP calls. Open **Data Connectors** and find **HTTP Executor** in the list. Click **Connect** / **Add** / **Configure**. No external credentials are required — the tool becomes available immediately. The status shows a **Connected** badge. Your agent or workflow can now use the **HTTP API Call** tool, supplying the target API's URL and auth per call. ### Use HTTP Executor in a Workflow Once connected, you can add **HTTP Executor** to any automation from the **Workflows** builder. Its triggers and tools appear in the Apps panel, marked with an **MCP** badge. Open **Workflows → New Workflow**. On the canvas, click **+ Add Trigger**. In the **Paths** panel, open the **Apps** tab and select **HTTP Executor** — its **Triggers** are listed underneath. Use the search box if you have many connectors. Click the **+** below any node to add a step, then pick **HTTP Executor** again — this time the panel lists its **Actions**. Fill in the fields for the trigger or action you picked. Required fields are marked with a red asterisk (\*). Under **Selected account**, choose an already-connected account, or click **Add Account** to connect one now. Click **Save**. Use **Test** to verify the step, then toggle **Publish** when the workflow is ready. The steps are the same for every connector. For the full workflow builder guide, see [Using MCP in Workflows](/mcp/workflows). ## 5. Available tools This server exposes a **single tool**. Whether it "changes data" depends entirely on the request *you* make — a `GET` reads, while a `POST`/`PUT`/`PATCH`/`DELETE` to the target can create, update, or delete data on that external system. | Tool name | What it does | Changes data? | | ----------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------- | | **HTTP API Call** | Make a generic HTTP request to any URL with custom method, headers, query params, body, and auth. Returns `success`, `status_code`, response `headers`, `body`, and `error`. | ✏️ Depends on the request (read for `GET`; `⚠️`/`✏️` for write methods) | ## 6. Example usage **"Call our internal inventory API at `https://api.example.com/stock?sku=AB123` and tell me the count."** → Runs **HTTP API Call** with `method=GET` and the SKU as a query parameter, then reads the count from the JSON response. **"POST this order payload to our fulfillment endpoint using our bearer token."** → Runs **HTTP API Call** with `method=POST`, the JSON `body`, `auth_type=bearer`, and `auth_value` set to your token; returns the endpoint's status and response. ## 7. Permissions & data access **UnleashX can:** * Send HTTP requests (any method) to the URL you specify. * Attach the headers, query parameters, body, and authentication you provide. * Return the response status, headers, and body to your workflow. **UnleashX cannot:** * Call anything you don't explicitly point it at — it only requests the URL given in each call. * Store or reuse the target API's credentials beyond the request (auth values you pass are used for that call and masked in logs). * Grant itself access to a target API; the target still enforces its own authentication and permissions. **How to disconnect:** In your agent's **Data Connectors**, open HTTP Executor and choose **Disconnect** / disable it. Since there's no external credential, this simply removes the tool from that agent/workflow. ## 8. Troubleshooting | Problem | What it means | How to fix it | | ------------------------------------ | ---------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | | `401 Unauthorized` (from the target) | The target API rejected your credentials. | Check the `auth_type` and `auth_value`, or the `Authorization` header you passed for that API. | | `403 Forbidden` (from the target) | The credential is valid but lacks permission for that endpoint. | Use a credential/token with the right scope on the target system. | | `400 Bad Request` from UnleashX | The call config was invalid (e.g. missing `url`). | Provide a valid full `url` and a supported `method`. | | Timeout | The target took longer than the timeout (default 30s, max 300s). | Increase `timeout`, or check that the target endpoint is reachable. | | Body not parsed as JSON | The response wasn't `application/json`. | The raw text is returned in `body`; parse it in your workflow as needed. | For general connector issues, see [/mcp/integrations](/mcp/integrations). ## 9. Frequently asked questions **Do I need an account or API key for HTTP Executor?** No. It's a platform-managed UnleashX utility. You only need credentials for the *target* API you're calling, supplied per request. **Are my auth tokens stored?** No. The `auth_value` (and other sensitive fields like authorization headers, tokens, and passwords) are used for that single request and are automatically masked in UnleashX logs. **Can it call any URL?** It will request whatever URL you give it, using your provided auth. The target API still enforces its own access controls, so you can only reach what your credentials allow. **When should I use this instead of a dedicated connector?** Use a dedicated connector (Slack, Razorpay, Firebase, etc.) when one exists — it's simpler and safer. Reach for HTTP Executor when you need to integrate an API that doesn't yet have its own UnleashX connector. ## 10. References * [UnleashX integrations overview](/mcp/integrations) * [MDN: HTTP request methods](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods) * [MDN: HTTP authentication](https://developer.mozilla.org/en-US/docs/Web/HTTP/Authentication) * Support: **[cs@unleashx.ai](mailto:cs@unleashx.ai)** # HubSpot Source: https://docs.unleashx.ai/mcp/hubspot Let UnleashX read and manage your HubSpot contacts, companies, deals, tickets and tasks by voice or automation. # HubSpot > **In one line:** Connect HubSpot so UnleashX can create and update contacts, companies and deals, log activity, manage tickets and tasks, and pull CRM records on demand. | | | | ------------------ | ------------------------------------------------------------------------------------------------------------ | | **Category** | CRM | | **Authentication** | OAuth / Private App token | | **Setup time** | \~5 minutes | | **Difficulty** | Easy | | **Best for** | Sales and support teams that want their voice agent or automations to keep HubSpot up to date automatically. | ## 1. Overview HubSpot is a CRM platform where teams store contacts, companies, deals, tickets and the activity history that ties them together. It is the system of record for who your customers are and where each opportunity stands. Once HubSpot is connected to UnleashX, your agent can do the busywork for you: create a new contact after a call, log a note or meeting, move a deal forward, raise a support ticket, or look up a customer's details the moment they're mentioned. No more switching tabs to update the CRM. Connecting HubSpot to UnleashX keeps your CRM current without manual data entry. Conversations and automations become the source of truth, and your pipeline reflects reality in real time. ## 2. What you'll need * A HubSpot account (any paid tier; most tools also work on the free CRM). * Permission to create a **Private App** — this requires HubSpot **Super Admin** access. * The scopes listed in Section 3 enabled on that Private App. No admin access? Ask a HubSpot Super Admin to create the Private App and share the access token with you. You only need the token to connect — you don't need admin rights inside UnleashX. ## 3. Get your credentials UnleashX authenticates to HubSpot with a **Private App access token** (a long-lived Bearer token). Go to **HubSpot → Settings (gear icon) → Integrations → Private Apps**: `https://app.hubspot.com/private-apps` Click **Create a private app**. Give it a name like "UnleashX" and an optional description. Open the **Scopes** tab and enable the scopes from the table below. Click **Create app**, confirm, then click **Show token** and **Copy**. Treat this token like a password. Anyone with it can read and modify your CRM. Copy it now and store it safely. | Scope | Why UnleashX needs it | | ------------------------------------------ | ------------------------------------------------- | | `crm.objects.contacts.read` | Look up and list contacts. | | `crm.objects.contacts.write` | Create, update and delete contacts. | | `crm.objects.companies.read` | Look up and list companies. | | `crm.objects.companies.write` | Create and update companies. | | `crm.objects.deals.read` | Read deals and pipeline data. | | `crm.objects.deals.write` | Create deals and manage associations. | | `tickets` | Read and create support tickets. | | `crm.objects.contacts.write` (engagements) | Log notes, calls, meetings and tasks on contacts. | | `automation` | Enroll contacts in workflows. | Exact scope names can vary slightly by HubSpot account type. If a tool returns a 403, open your Private App and add the scope HubSpot names in the error, then save. ## 4. Connect on UnleashX Sign in at [https://www.tryunleashx.com](https://www.tryunleashx.com) and open the agent you want to connect. Go to **Data Connectors** and find **HubSpot**. Click **Connect** / **Add** / **Configure** and paste your Private App access token. Authenticate once. The status will switch to a **Connected** badge. ### Use HubSpot in a Workflow Once connected, you can add **HubSpot** to any automation from the **Workflows** builder. Its triggers and tools appear in the Apps panel, marked with an **MCP** badge. Open **Workflows → New Workflow**. On the canvas, click **+ Add Trigger**. In the **Paths** panel, open the **Apps** tab and select **HubSpot** — its **Triggers** are listed underneath. Use the search box if you have many connectors. HubSpot triggers in the Apps panel Click the **+** below any node to add a step, then pick **HubSpot** again — this time the panel lists its **Actions**. HubSpot actions in the Apps panel Fill in the fields for the trigger or action you picked. Required fields are marked with a red asterisk (\*). Under **Selected account**, choose an already-connected account, or click **Add Account** to connect one now. Click **Save**. Use **Test** to verify the step, then toggle **Publish** when the workflow is ready. The steps are the same for every connector. For the full workflow builder guide, see [Using MCP in Workflows](/mcp/workflows). ## 5. Available tools | Tool | What it does | Changes data? | | ------------------------------- | ------------------------------------------------------ | ------------- | | Create Contact | Create a new contact. | ✏️ Yes | | Create Company | Create a new company. | ✏️ Yes | | Delete Contact | Permanently delete a contact. | ⚠️ Yes | | Get All Contacts | List contacts (most recently modified first). | No | | Get Active Contacts | List the most recently active contacts. | No | | Get Active Companies | List the most recently active companies. | No | | Get Company Contacts | List contacts associated with a company. | No | | Get Company Deals | List deals associated with a company. | No | | Search Companies | Search companies by name/keyword. | No | | Search Contacts | Search contacts by name/keyword. | No | | Get Company Details | Read full details of one company. | No | | Get Contact Details | Read full details of one contact. | No | | Update Contact | Update fields on an existing contact. | ✏️ Yes | | Update Company | Update fields on an existing company. | ✏️ Yes | | Create Deal | Create a new deal. | ✏️ Yes | | Get Deals | List deals (most recently modified first). | No | | Associate Objects | Link two CRM objects (e.g. contact ↔ deal). | ✏️ Yes | | Get Contact by Email | Look up a contact by email address. | No | | Create Engagement | Log a call, email, note, meeting or task on a contact. | ✏️ Yes | | Create Ticket | Create a support ticket and link it to a contact. | ✏️ Yes | | New Task | Create a task and attach it to a contact. | ✏️ Yes | | New Event | Create a meeting/event and attach it to a contact. | ✏️ Yes | | Enroll Contact in Workflow | Enroll a contact into an automation workflow. | ✏️ Yes | | Add Contact to List | Add a contact to a static list. | ✏️ Yes | | Get File Public URL | Get the public URL of a stored file. | No | | Batch Create or Update Contacts | Bulk create or update many contacts at once. | ✏️ Yes | ## 6. Example usage **"Add Jane Doe, [jane@acme.com](mailto:jane@acme.com), from Acme Corp as a new contact and log that we spoke today."** Runs **Create Contact**, then **Create Engagement** (a CALL or NOTE) linked to the new contact. **"Find the deal for Acme Corp and show me its current stage and amount."** Runs **Search Companies** to find Acme, then **Get Company Deals** to read its open deals. ## 7. Permissions & data access **UnleashX can:** * Read, create, update and delete contacts; create and update companies and deals. * Log engagements (calls, emails, notes, meetings, tasks) and create tickets. * Enroll contacts in workflows and add them to lists. **UnleashX cannot:** * Access any HubSpot data outside the scopes you granted on the Private App. * Change billing, account settings or other users' permissions. * Delete companies or deals (no delete tool is exposed for those). **To disconnect:** In UnleashX go to **Data Connectors → HubSpot → Disconnect**. To fully revoke, also delete or rotate the Private App in **HubSpot → Settings → Integrations → Private Apps**. Revocation is immediate. ## 8. Troubleshooting | Problem | What it means | How to fix it | | ----------------------------- | ---------------------------------------------------- | --------------------------------------------------------------------------- | | `401 Unauthorized` | The access token is wrong, expired or revoked. | Reconnect in UnleashX with a fresh Private App token. | | `403 Forbidden` | The Private App is missing a required scope. | Open the app in HubSpot, add the scope named in the error, save, and retry. | | `404 Not Found` | The contact/company/deal ID doesn't exist. | Search first to get a valid ID, then retry. | | `429 Too Many Requests` | You hit HubSpot's API rate limit. | Wait a moment and retry; reduce bulk operation size. | | Tool runs but nothing changes | `DRY_RUN` mode may be enabled at the platform level. | Contact [cs@unleashx.ai](mailto:cs@unleashx.ai) to confirm live mode. | For general connector issues, see [/mcp/integrations](/mcp/integrations). ## 9. Frequently asked questions **Is my HubSpot data stored by UnleashX?** No. UnleashX calls the HubSpot API live when a tool runs and returns the result. It does not maintain a copy of your CRM (lightweight snapshots are used only to detect "new ticket/task" events). **Can multiple team members connect HubSpot?** Yes. Each agent stores its own token. Many teams create one shared "UnleashX" Private App and reuse its token across agents. **How do I rotate my token?** In HubSpot, open the Private App and click **Rotate** (or delete and recreate it), then reconnect in UnleashX with the new token. ## 10. References * HubSpot Private Apps overview: [https://developers.hubspot.com/docs/api/private-apps](https://developers.hubspot.com/docs/api/private-apps) * Create a Private App / token page: [https://app.hubspot.com/private-apps](https://app.hubspot.com/private-apps) * CRM API & scopes reference: [https://developers.hubspot.com/docs/api/crm/understanding-the-crm](https://developers.hubspot.com/docs/api/crm/understanding-the-crm) # Hyperbrowser Source: https://docs.unleashx.ai/mcp/hyperbrowser Let your UnleashX agent browse, scrape, crawl, and extract data from any website with Hyperbrowser. # Hyperbrowser > **In one line:** Connect Hyperbrowser so your UnleashX agent can open web pages, scrape and crawl sites, take screenshots, and extract structured data — all in plain language. | | | | ------------------ | -------------------------------------------------------------------------------------------------------------- | | **Category** | Dev Tools & Automation | | **Authentication** | API key | | **Setup time** | \~2 minutes | | **Difficulty** | Easy | | **Best for** | Teams that need an AI agent to read live websites, gather data from pages, and automate browser tasks at scale | ## 1. Overview Hyperbrowser is a cloud platform for running headless browsers at scale. It handles the hard parts of web automation — proxies, CAPTCHAs, sessions, and rendering — so you can scrape pages, crawl sites, and extract clean data without managing infrastructure. Once connected to UnleashX, your agent can fetch and read a web page, scrape its content as clean markdown or HTML, crawl a whole site, capture screenshots, and extract structured data using a schema. It runs against Hyperbrowser's cloud browsers using your API key. Connecting Hyperbrowser to UnleashX gives your agent eyes on the live web. Instead of being limited to what it already knows, it can pull the current contents of any public page and turn it into data you can use in a conversation or workflow. ## 2. What you'll need * A Hyperbrowser account. * An **API key** from your Hyperbrowser dashboard (see Section 3). * An UnleashX account with access to **Data Connectors**. You paste an **API key**. UnleashX sends it to the Hyperbrowser API as an `x-api-key` header. Scraping and crawling consume Hyperbrowser **credits** and are subject to your plan's limits. Broad crawls can use credits quickly — scope crawls to the pages you actually need. ## 3. Get your credentials Hyperbrowser MCP authenticates with an **API key** — a single secret string you generate once in the Hyperbrowser dashboard and paste into UnleashX. There's no OAuth flow and nothing to install. ### Step-by-step Go to [app.hyperbrowser.ai](https://app.hyperbrowser.ai/) and sign in. If you don't have an account yet, sign up first — the free tier includes credits (the dashboard shows your balance, e.g. **34 of 5,000**), which is plenty to test the connector. You'll land on the **Overview** page. In the **left sidebar**, scroll to the bottom and click **Settings**. It sits below **Documentation** and **Discord**, beneath the main nav items (Overview, Playground, VMs, Browsers, API Calls). Hyperbrowser dashboard overview, with Settings at the bottom of the left sidebar Settings opens with a row of tabs across the top: **Account**, **API Keys**, **Billing**, **Static IPs**, and **Verification**. Click **API Keys**. The page is titled *"API Keys — Create and revoke keys for the Hyperbrowser API."* Any keys you've already created are listed here. The API Keys tab with the Generate key button Click the black **Generate key** button in the top-right of the API Keys page. Give it a name that tells you where it's used — for example **UnleashX**. The name is only a label for you; it doesn't affect what the key can do. A clear name matters later, when you need to know which key to revoke. Hyperbrowser displays the key **once**. Copy it right away and paste it somewhere safe (a password manager, or straight into the UnleashX connector). If you navigate away before copying, the key is gone for good — you can't reveal it again. In that case, just delete it from the list and generate a new one. Head to **Data Connectors → Hyperbrowser** in UnleashX and paste the key (full walkthrough in Section 4). UnleashX validates it immediately, so you'll know right away if it was copied correctly. ### Good to know **Faster route:** the **Copy API Key** button in the top-right of the **Overview** page copies your existing key without opening Settings at all. For UnleashX, prefer **Generate key** instead — a dedicated key can be revoked on its own if it leaks, without breaking every other integration using your main key. Your API key **spends your Hyperbrowser credits** and grants full access to the API. Treat it like a password: * Never commit it to git, paste it in a ticket, or share it in chat. * Use a separate key per integration so you can revoke one without disrupting the rest. * If it's ever exposed, delete it under **Settings → API Keys** and generate a replacement — revoking is instant. **Lost your key?** There's no way to view an existing key again. Delete the old one under **Settings → API Keys**, click **Generate key** to create a new one, then reconnect the connector in UnleashX with the new value. ### Permissions this key grants UnleashX | Access | Why UnleashX needs it | | ------------------- | ----------------------------------------------------- | | Scrape pages | Fetch and clean the content of a URL. | | Crawl sites | Follow links and collect content across a site. | | Extract data | Pull structured data from pages using a schema. | | Capture screenshots | Render and screenshot a page. | | Manage sessions | Start and stop browser sessions for multi-step tasks. | ## 4. Connect on UnleashX Go to [https://www.tryunleashx.com](https://www.tryunleashx.com) and open the agent you want to connect. Inside the agent, go to **Data Connectors**. Locate **Hyperbrowser** and click **Connect** (or **Add** / **Configure**). Paste your **API key** and click **Connect**. UnleashX validates the key and the Hyperbrowser connector shows a **Connected** badge. ### Use Hyperbrowser in a Workflow Once connected, you can add **Hyperbrowser** to any automation from the **Workflows** builder. Its tools appear in the Apps panel, marked with an **MCP** badge. Open **Workflows → New Workflow**. On the canvas, click **+ Add Trigger**. In the **Paths** panel, open the **Apps** tab and select **Hyperbrowser** — its **Triggers** are listed underneath. Use the search box if you have many connectors. Hyperbrowser triggers in the Apps panel Click the **+** below any node to add a step, then pick **Hyperbrowser** again — this time the panel lists its **Actions**. Hyperbrowser actions in the Apps panel Fill in the fields for the trigger or action you picked. Required fields are marked with a red asterisk (\*). Under **Selected account**, choose an already-connected account, or click **Add Account** to connect one now. Click **Save**. Use **Test** to verify the step, then toggle **Publish** when the workflow is ready. The steps are the same for every connector. For the full workflow builder guide, see [Using MCP in Workflows](/mcp/workflows). ## 5. Available tools | Tool | What it does | Changes data? | | ---------------- | --------------------------------------------------------------- | ------------- | | Scrape Page | Fetches a URL and returns clean content (markdown/HTML). | No | | Crawl Site | Crawls a site from a starting URL and returns page content. | No | | Extract Data | Extracts structured data from one or more pages using a schema. | No | | Screenshot | Renders a page and returns a screenshot. | No | | Get Page Content | Returns the rendered HTML/text of a page. | No | | Start Session | Starts a cloud browser session. | ✏️ Yes | | Get Session | Retrieves the status of a session. | No | | Stop Session | Stops a running session. | ✏️ Yes | | List Sessions | Lists your recent browser sessions. | No | These tools read external websites; they don't change your own data. They do consume Hyperbrowser credits. ## 6. Example usage **"Scrape our competitor's pricing page and tell me their plan tiers and prices."** → Runs Scrape Page on the URL, then reads the pricing tiers from the returned content. **"Crawl the docs site and extract every page title and its URL."** → Runs Crawl Site from the docs root, then Extract Data with a schema for title + URL. ## 7. Permissions & data access **UnleashX can:** * Fetch, scrape, and crawl public web pages. * Extract structured data and capture screenshots. * Start, inspect, and stop cloud browser sessions. **UnleashX cannot:** * Access pages behind logins it doesn't have credentials for. * Bypass a site's access controls or terms of use. * Exceed your Hyperbrowser plan's credit/rate limits. **To disconnect:** In UnleashX, open **Data Connectors → Hyperbrowser → Disconnect**. Then revoke the key in the Hyperbrowser dashboard under **Settings → API Keys**. Disconnecting and revoking removes access immediately. ## 8. Troubleshooting | Problem | What it means | How to fix it | | --------------------------------- | ----------------------------------------------------------- | -------------------------------------------------------- | | **401 Unauthorized** | The API key is invalid or was revoked. | Generate a new key and reconnect. | | **402 / credits exhausted** | Your plan's credits are used up. | Top up or upgrade your Hyperbrowser plan. | | **429 Too Many Requests** | You hit the rate limit. | Slow down requests or reduce crawl breadth. | | **Timeout / page failed to load** | The target site was slow or blocked the request. | Retry, or narrow the scrape to the specific page needed. | | **Empty content** | The page rendered nothing scrapeable (heavy JS or blocked). | Try a screenshot or a session-based fetch. | For general MCP issues, see [/mcp/integrations](/mcp/integrations). ## 9. Frequently asked questions **Does UnleashX store scraped content?** No. Content is fetched live per request and returned to your agent; UnleashX doesn't keep a copy. **Can it scrape sites that require login?** Only if you provide a session with valid credentials. It won't bypass authentication on its own. **Will crawling cost me?** Yes — scraping and crawling consume Hyperbrowser credits. Scope crawls to what you need. **Is scraping allowed?** Respect each site's terms of service and robots rules. You're responsible for how the agent uses the tool. ## 10. References * Hyperbrowser documentation: [https://docs.hyperbrowser.ai/](https://docs.hyperbrowser.ai/) * API reference: [https://docs.hyperbrowser.ai/reference/api-reference](https://docs.hyperbrowser.ai/reference/api-reference) * Dashboard / API keys: [https://app.hyperbrowser.ai/](https://app.hyperbrowser.ai/) # Image Generation Source: https://docs.unleashx.ai/mcp/image Generate original images from a text prompt with Google Gemini / Imagen. # Image Generation > **In one line:** Let your UnleashX agent create original images from a written description and return ready-to-use image links. | | | | ------------------ | ------------------------------------------------------------------------- | | **Category** | AI & Media | | **Authentication** | Platform-managed | | **Setup time** | \~1 minute | | **Difficulty** | Easy | | **Best for** | Marketing visuals, social posts, mockups, and illustrations from a prompt | ## 1. Overview Image Generation turns a text prompt into a brand-new picture using Google's Imagen models via the Gemini API. Describe what you want — a style, a subject, a mood — and it produces one or more images. Once connected, your agent can generate images from a prompt, request several at once, and choose an aspect ratio. Generated images are uploaded to UnleashX media storage and returned as links you can drop into a post, a doc, or a campaign. Connecting Image Generation to UnleashX means your agents can produce visuals on demand — no stock library, no design tool, no manual export. ## 2. What you'll need Image Generation is **built into UnleashX**. There is no Google or Gemini account for you to create and no API key for you to manage. * An active UnleashX account. * The image-generation feature enabled on your workspace/plan. * A clear text prompt describing the image you want. * Permission to edit the agent (admin or editor role). Without it, ask a workspace admin to enable the feature. ## 3. Get your credentials There are **no credentials to create**. Image Generation is platform-managed — UnleashX provisions and rotates the underlying Gemini key and handles media storage. You never see or handle an API key. If you are a workspace admin, optional platform-side configuration includes the image model (with automatic fallbacks) and the default aspect ratio. UnleashX ships sensible defaults (an Imagen 4 model, square 1:1); most teams never change them. | Platform-managed setting | Plain-English reason it exists | | ------------------------------ | ------------------------------------------------------------------------------ | | Image model (+ fallbacks) | Controls image quality and auto-retries if a model is unavailable. | | Default aspect ratio | Sets the default image shape (e.g. 1:1 square). | | Gemini API key & media storage | Provisioned and rotated by UnleashX so images generate and save automatically. | ## 4. Connect on UnleashX Go to [https://www.tryunleashx.com](https://www.tryunleashx.com) and open the agent that should generate images. In the agent, click **Data Connectors**. Locate **Image Generation** and click **Connect** / **Add**. It's platform-managed — no key to paste, it activates immediately. The Image Generation tool should now show a **Connected** badge. ### Use Image Generation in a Workflow Once connected, you can add **Image Generation** to any automation from the **Workflows** builder. Its triggers and tools appear in the Apps panel, marked with an **MCP** badge. Open **Workflows → New Workflow**. On the canvas, click **+ Add Trigger**. In the **Paths** panel, open the **Apps** tab and select **Image Generation** — its **Triggers** are listed underneath. Use the search box if you have many connectors. Click the **+** below any node to add a step, then pick **Image Generation** again — this time the panel lists its **Actions**. Fill in the fields for the trigger or action you picked. Required fields are marked with a red asterisk (\*). Under **Selected account**, choose an already-connected account, or click **Add Account** to connect one now. Click **Save**. Use **Test** to verify the step, then toggle **Publish** when the workflow is ready. The steps are the same for every connector. For the full workflow builder guide, see [Using MCP in Workflows](/mcp/workflows). ## 5. Available tools | Tool | What it does | Changes data? | | -------------- | ---------------------------------------------- | ------------- | | Image Created | Generate one or more images from a text prompt | ✏️ Yes | | Generate Image | Generate images with Imagen via the Gemini API | ✏️ Yes | | Get Info | Report Image MCP configuration and readiness | No | The generate tools are marked ✏️ Yes because they create new image files and save them to UnleashX media storage. They do not modify or delete existing data. **Image Created** and **Generate Image** are equivalent entry points for the same generation flow. ## 6. Example usage **"Create a square image of a friendly robot waving, flat-illustration style."** → Runs **Generate Image** (or **Image Created**) with that prompt and a 1:1 aspect ratio, returning an image URL. **"Give me three banner options for a summer sale, wide format."** → Runs the generation tool with `number_of_images` = 3 and a wide aspect ratio. ## 7. Permissions & data access **UnleashX can:** * Send your prompt to the image model and generate images. * Save the generated images to UnleashX media storage and return links. **UnleashX cannot:** * Generate images from content you don't provide. * Edit or delete images created elsewhere. * Access your device or cloud storage on its own. **To disconnect:** Open the agent → **Data Connectors** → **Image Generation** → **Disconnect**. Access is revoked immediately. ## 8. Troubleshooting | Problem | What it means | How to fix it | | ------------------------------------------- | -------------------------------------------------- | ------------------------------------------------------------------- | | "prompt is required" | No text prompt was supplied | Provide a descriptive prompt | | "number\_of\_images must be greater than 0" | Asked for zero images | Request at least one image | | "did not return any generated images" | The model returned nothing (e.g. safety filtering) | Adjust the prompt and retry | | 401 / credential error | The platform-managed Gemini key is unavailable | Platform-side — contact **[cs@unleashx.ai](mailto:cs@unleashx.ai)** | | 403 / feature not enabled | Image generation isn't enabled on your plan | Ask a workspace admin or contact support | For general connector issues, see [/mcp/integrations](/mcp/integrations). ## 9. Frequently asked questions **Are my images stored?** Yes — generated images are uploaded to UnleashX media storage so you can use the returned link. Your prompt is used to generate them and isn't retained as part of the integration. **Do I need a Google or Gemini account?** No. Image Generation is platform-managed — UnleashX provides and rotates the key. **Can I generate more than one image at a time?** Yes. Set `number_of_images` to request a batch. **What aspect ratios are supported?** Common shapes including square (1:1), portrait, and landscape. The default is square. ## 10. References * Google Imagen / Gemini image generation docs: [https://ai.google.dev/gemini-api/docs/image-generation](https://ai.google.dev/gemini-api/docs/image-generation) * UnleashX dashboard: [https://www.tryunleashx.com](https://www.tryunleashx.com) * UnleashX integrations help: [/mcp/integrations](/mcp/integrations) # Instantly Source: https://docs.unleashx.ai/mcp/instantly Let your UnleashX agent manage cold-email campaigns, leads, and outreach events in Instantly. # Instantly > **In one line:** Connect Instantly so your UnleashX agent can create and manage cold-email campaigns, add and update leads, tag campaigns, and keep your outreach moving — all in plain language. | | | | ------------------ | ------------------------------------------------------------------------------------------------------------------------------ | | **Category** | Sales & Outreach | | **Authentication** | API key | | **Setup time** | \~2 minutes | | **Difficulty** | Easy | | **Best for** | Sales and growth teams that want an AI agent to run cold-email campaigns, manage leads, and track outreach events in Instantly | ## 1. Overview Instantly is a cold-email outreach platform. It's where you build sending campaigns, load and manage your leads, warm up mailboxes, and track how prospects respond across your sequences. Once connected to UnleashX, your agent can list and inspect campaigns, create new ones, update or pause existing campaigns, add and manage leads, move leads into campaigns, and tag campaigns for organization. It works against your live Instantly workspace using your API key, so it respects your account's data and limits. Connecting Instantly to UnleashX means your outreach runs from a conversation. Instead of opening Instantly to spin up a campaign or import a lead, you tell your agent and it makes the change — cutting the manual steps while keeping your pipeline current. ## 2. What you'll need * An Instantly account. * An **API key** from your Instantly settings (see Section 3). * An UnleashX account with access to **Data Connectors**. You paste an **API key**. UnleashX sends it to the Instantly API as an authorization credential on every request. Sending cold email is subject to your Instantly plan's sending limits and your connected mailboxes' warm-up status. Creating a campaign doesn't override those limits — scope your sends to what your account and deliverability allow. ## 3. Get your credentials Instantly MCP authenticates with an **API key** — a single secret string you generate once in your Instantly settings and paste into UnleashX. There's no OAuth flow and nothing to install. ### Step-by-step Go to [app.instantly.ai](https://app.instantly.ai/) and sign in. If you don't have an account yet, sign up first. Click your **profile avatar** at the bottom of the left sidebar to open the account menu, then click **Settings**. At the top of Settings, open the **Integrations** tab. The left-hand panel there has three sections: **Integrations**, **Webhooks**, and **API Keys**. In that left-hand panel, click **API Keys**. Keep **Version 2** selected — Version 1 is deprecated. Any keys you've already created are listed here. Click **Create API Key**, then fill in the form: * **Name** — a label that tells you where the key is used, for example **UnleashX**. It doesn't affect what the key can do, but it matters later when you need to know which key to revoke. * **Scopes** — the permissions the key carries. Select the scopes covering campaigns, leads, and events (see the table below), or select **`all:all`** to grant full access. Click **Create**. Scopes **cannot be changed after the key is created**. If you pick too narrow a set, you'll have to delete the key and create a new one. Note also that `all:all` grants full access to every Instantly API endpoint — convenient, but only use it if you're comfortable with that. Instantly displays the key **once**. Copy it right away and paste it somewhere safe (a password manager, or straight into the UnleashX connector). If you navigate away before copying, the key is gone for good — you can't reveal it again. In that case, just delete it from the list and create a new one. Head to **Data Connectors → Instantly** in UnleashX and paste the key (full walkthrough in Section 4). UnleashX validates it immediately, so you'll know right away if it was copied correctly. ### Good to know Use a **separate key per integration**. A dedicated key can be revoked on its own if it leaks, without breaking every other tool that uses your Instantly account. Your API key grants full access to your Instantly account through the API. Treat it like a password: * Never commit it to git, paste it in a ticket, or share it in chat. * Use a separate key per integration so you can revoke one without disrupting the rest. * If it's ever exposed, delete it in **Settings → Integrations → API Keys** and create a replacement — revoking is instant. **Lost your key?** There's no way to view an existing key again. Delete the old one under **Settings → Integrations → API Keys**, create a new one, then reconnect the connector in UnleashX with the new value. ### Permissions this key grants UnleashX | Access | Why UnleashX needs it | | ---------------- | ------------------------------------------------------------- | | Read campaigns | List and inspect your cold-email campaigns. | | Manage campaigns | Create, update, and delete campaigns, and add tags. | | Read leads | List the leads in your campaigns and workspace. | | Manage leads | Create leads, update lead status, and add leads to campaigns. | | Read events | Receive campaign and outreach events (opens, replies, etc.). | ## 4. Connect on UnleashX Go to [https://www.tryunleashx.com](https://www.tryunleashx.com) and open the agent you want to connect. Inside the agent, go to **Data Connectors**. Locate **Instantly** and click **Connect** (or **Add** / **Configure**). Paste your **API key** and click **Connect**. UnleashX validates the key and the Instantly connector shows a **Connected** badge. ### Use Instantly in a Workflow Once connected, you can add **Instantly** to any automation from the **Workflows** builder. Its triggers and tools appear in the Apps panel, marked with an **MCP** badge. Open **Workflows → New Workflow**. On the canvas, click **+ Add Trigger**. In the **Paths** panel, open the **Apps** tab and select **Instantly** — its **Triggers** are listed underneath. Use the search box if you have many connectors. Instantly triggers in the Apps panel Click the **+** below any node to add a step, then pick **Instantly** again — this time the panel lists its **Actions**. Fill in the fields for the trigger or action you picked. Required fields are marked with a red asterisk (\*). Under **Selected account**, choose an already-connected account, or click **Add Account** to connect one now. Click **Save**. Use **Test** to verify the step, then toggle **Publish** when the workflow is ready. The steps are the same for every connector. For the full workflow builder guide, see [Using MCP in Workflows](/mcp/workflows). ## 5. Available tools | Tool | What it does | Changes data? | | -------------------- | --------------------------------------- | ------------- | | List Campaigns | Lists your cold-email campaigns. | No | | Get Campaign | Retrieves a single campaign by ID. | No | | Create Campaign | Creates a new cold-email campaign. | ✏️ Yes | | Update Campaign | Updates an existing campaign. | ✏️ Yes | | Delete Campaign | Deletes a specified campaign. | ⚠️ Yes | | List Leads | Lists leads in a campaign or workspace. | No | | Create Lead | Adds a new lead. | ✏️ Yes | | Update Lead Status | Changes a lead's status. | ✏️ Yes | | Add Tags To Campaign | Adds tags to a campaign. | ✏️ Yes | | Add Lead To Campaign | Adds a lead to a campaign. | ✏️ Yes | ### Available triggers | Trigger | Fires when | | --------------- | ------------------------------------------------------------ | | On New Campaign | A new campaign is created in your Instantly workspace. | | On New Event | A new outreach event (such as an open or reply) is recorded. | ## 6. Example usage **"Create a new cold-email campaign called Q3 Outbound and add [jane@acme.com](mailto:jane@acme.com) as a lead."** → Runs Create Campaign to set up the campaign, then Create Lead (and Add Lead To Campaign) to load the prospect. **"Mark the lead from Globex as replied and tag the Q3 Outbound campaign as 'priority'."** → Runs Update Lead Status to set the lead to replied, then Add Tags To Campaign to tag the campaign. ## 7. Permissions & data access **UnleashX can:** * Read and list campaigns and leads. * Create and update campaigns, and add tags to them. * Create leads, update lead status, and add leads to campaigns. * Delete campaigns where your account allows (this tool is clearly marked ⚠️). **UnleashX cannot:** * Do anything your Instantly plan or account doesn't permit. * Send email beyond your plan's sending limits or your mailboxes' warm-up status. * Change your Instantly account password or billing settings. **To disconnect:** In UnleashX, open **Data Connectors → Instantly → Disconnect**. Then revoke the key in Instantly under **Settings → Integrations → API Keys**. Disconnecting and revoking removes access immediately. ## 8. Troubleshooting | Problem | What it means | How to fix it | | ------------------------- | --------------------------------------------------------- | ---------------------------------------------------- | | **401 Unauthorized** | The API key is invalid or was revoked. | Create a new key and reconnect. | | **403 Forbidden** | Your Instantly plan doesn't allow that action. | Check your plan, or upgrade, then retry. | | **429 Too Many Requests** | You hit the API rate limit. | Slow down requests and retry after a short wait. | | **Campaign not sending** | Mailboxes aren't warmed up or sending limits are reached. | Check mailbox warm-up and daily limits in Instantly. | | **Lead not added** | The lead already exists or the campaign ID is wrong. | Confirm the campaign and check for duplicate leads. | For general MCP issues, see [/mcp/integrations](/mcp/integrations). ## 9. Frequently asked questions **Does UnleashX store my leads or campaign data?** No. UnleashX reads and writes your records live through the Instantly API per request; it doesn't keep a copy of your leads or campaigns. **Can the agent actually send cold email?** It manages campaigns and leads. Actual sending still runs through Instantly under your plan's limits and your mailboxes' warm-up status. **Can the agent delete a campaign?** Yes — the Delete Campaign tool (marked ⚠️) makes a permanent change in Instantly. Use it deliberately. **Where do I find my API key again?** You can't view an existing key. Delete the old one in **Settings → Integrations → API Keys**, create a new one, and reconnect. ## 10. References * Instantly API documentation: [https://developer.instantly.ai/](https://developer.instantly.ai/) * Instantly app / settings: [https://app.instantly.ai/](https://app.instantly.ai/) * Instantly help center: [https://help.instantly.ai/](https://help.instantly.ai/) # Integrations Source: https://docs.unleashx.ai/mcp/integrations Complete MCP integrations reference with direct tool names, auth guidance, and practical usage. # MCP Integrations MCP integrations let your AI workflows connect directly to business tools, data systems, and communication platforms through dedicated MCP servers.\ This page is your single reference for all available servers from `mcp-service-1/MCP/mcp-server/`, written with direct, human-friendly action names. ## Integrations inside our platform Our platform includes a dedicated **Data Connectors** section where you can discover, connect, and configure MCP tools from one place.\ You can enable connectors like HubSpot, Slack, Gmail, Google Sheets, Airtable, Google Maps, WordPress, Shopify, Zoho CRM, OCR, and many others - then immediately use them in your agent workflows. UnleashX Data Connectors with MCP tools ### How this works in practice 1. Open your agent and go to **Data Connectors**. 2. Browse the available MCP tools and choose the services your workflow needs. 3. Click **Connect**, **Add**, or **Configure** based on the provider requirements. 4. Complete authentication once (OAuth, API key, or provider token). 5. Use the connected tools directly in agent logic for actions like messaging, CRM updates, scheduling, document operations, and data sync. ### Why this setup is useful * **Single place to manage integrations:** no need to configure each service in separate systems. * **Large tool variety:** supports communication, CRM, productivity, ecommerce, mapping, and AI utility connectors. * **Faster automation delivery:** connect tools once, then reuse them across multiple agents and flows. * **Operational clarity:** connector status is visible (`Connected`, `Connect`, `Configure`) so teams know what is ready to use. ## How to use this reference For every integration below, use this pattern: 1. Pick the server that matches your workflow goal. 2. Use the direct action name (for example, **Send Email**, **Add Row**, **Create Event**). 3. Pass the required IDs/fields and run the action. 4. Use the returned data in the next workflow step. 5. If an operation is not available, call the provider API directly with the same credentials. *** ## Integrations Directory ### Google Sheets **Direct tool names:** Create Sheet, Read Rows, Add Row, Update Row, Read Cell, Update Cell, Clear Rows, Check Updates.\ **Authentication:** Google access token via bearer/auth headers or session auth. ### Airtable **Direct tool names:** List Bases, List Tables, Read Records, Create Record, Update Record, Delete Record, Search Records, Check Updates.\ **Authentication:** Airtable token in headers or session auth. ### Gmail **Direct tool names:** Read Emails, Search Emails, Send Email, Create Draft, Read Labels, Trigger on New Email.\ **Authentication:** Google access token in headers or session auth. ### Google Calendar **Direct tool names:** List Calendars, Check Availability, Create Event, Update Event, Delete Event, List Events.\ **Authentication:** Google calendar token via headers or session auth. ### Google Docs **Direct tool names:** List Drives, List Folders, List Documents, Create Document, Read Content, Replace Text, Append Text.\ **Authentication:** Google docs token in headers or session auth. ### Google Drive **Direct tool names:** List Files, Search Files, Create File, Update File, Move File, Share File, Download File, Create Folder.\ **Authentication:** Google drive token in headers or session auth. ### Google Form **Direct tool names:** Create Form, Read Form, Update Form, List Responses, Check Updates.\ **Authentication:** Google forms token in headers or session auth. ### Google Maps **Direct tool names:** Search Places, Place Details, Geocode Address, Reverse Geocode, Get Directions, Distance Matrix.\ **Authentication:** Google Maps API key via headers/payload/session/env. ### Google Slides **Direct tool names:** Create Presentation, Read Presentation, Add Slide, Update Slide Content, Replace Text.\ **Authentication:** Google slides token in headers or session auth. ### Brevo **Direct tool names:** Create Contact, Update Contact, Search Contact, Manage Lists, Campaign Actions.\ **Authentication:** Brevo API key in headers or session auth. ### Calcom **Direct tool names:** Check Availability, Create Booking, Update Booking, Cancel Booking.\ **Authentication:** Cal.com token in headers or session auth. ### ClickUp **Direct tool names:** List Tasks, Create Task, Update Task, Search Task, Delete Task.\ **Authentication:** ClickUp token in headers or session auth. ### Firebase **Direct tool names:** Read Data, Create Data, Update Data, Delete Data, Query Data.\ **Authentication:** Firebase token in headers or session auth. ### HubSpot **Direct tool names:** Create Contact, Update Contact, List Contacts, Create Company, Create Deal, Check Updates.\ **Authentication:** HubSpot token in headers or session auth. ### SendGrid **Direct tool names:** Send Email, Create List, Add Contact, List Campaigns, List Contacts.\ **Authentication:** SendGrid API key + sender context, via headers/session. ### Close CRM **Direct tool names:** List Leads, Create Lead, Create Contact, Create Opportunity, Create Task, Create Note.\ **Authentication:** Close API key as Basic username (empty password); session fallback (`closecrm`). ### Dropbox **Direct tool names:** List Folder, Search, Upload, Create Shared Link, List Revisions, Get Current Account.\ **Authentication:** OAuth2 bearer, minted and refreshed per connection; session fallback (`dropbox`). ### Flodesk **Direct tool names:** List Subscribers, Upsert Subscriber, Add Subscriber To Segments, Create Segment, Add Subscriber To Workflow.\ **Authentication:** Flodesk API key as Basic username (empty password); paid plans only; session fallback (`flodesk`). ### GREEN-API WhatsApp **Direct tool names:** Send Message, Send File By URL, Check Whatsapp, Get Chat History, Create Group, Get State Instance.\ **Authentication:** instance id + instance API token + per-instance API host, carried in the request path. ### Shopify **Direct tool names:** Search Orders, Refund Order, Create Fulfillment, Search Products, Adjust Inventory, Create Draft Order.\ **Authentication:** Custom app Client ID + Client Secret with shop domain; token minted per connection. ### Stripe **Direct tool names:** List Customers, List Charges, Create Payment Intent, List Invoices, Cancel Subscription, Create Refund.\ **Authentication:** Stripe secret key as bearer; session fallback (`stripe`). ### Slack **Direct tool names:** Send Message, Read Channels, Read Messages, Update Message, Trigger Checks.\ **Authentication:** Slack token in headers or session auth. ### Transcription **Direct tool names:** Transcribe Audio, Language Detection, Model-Based Transcription.\ **Authentication:** Provider keys from environment (Deepgram/Azure). ### WhatsApp Business **Direct tool names:** Send Message, Send Template, List Templates, Upload Media, Download Media.\ **Authentication:** Access token plus account IDs (`phone-number-id`, `waba-id` for some actions). ### WordPress **Direct tool names:** Create Post, Update Post, List Content, Publish Content, Search Content.\ **Authentication:** WordPress REST auth through request/session context. ### PDF.co **Direct tool names:** Convert To Text, Convert To CSV, Create From URL, Merge, Split, Add Password, Parse Document.\ **Authentication:** PDF.co API key via `x-api-key` header; session fallback (`pdfco`). ### Webflow **Direct tool names:** List Sites, List Collections, Create Collection Item, Publish Collection Item, List Form Submissions, Publish Site.\ **Authentication:** Webflow site API token as bearer; session fallback (`webflow`). ### WooCommerce **Direct tool names:** List Products, Get Product, Create Product, List Orders, Update Order Status, Search Customers.\ **Authentication:** Consumer Key + Consumer Secret with store URL, from headers/session. ### Zoho CRM **Direct tool names:** List Records, Create Record, Update Record, Search Records, Delete Record.\ **Authentication:** Zoho access token in header/body with session fallback. ### Zoho Desk **Direct tool names:** List Tickets, Read Ticket, Update Ticket, Add Comment, Search Tickets.\ **Authentication:** Zoho Desk token plus optional org headers, session fallback. ### Zoho Mail **Direct tool names:** Read Emails, Search Emails, Send Email, Manage Mailbox.\ **Authentication:** Zoho Mail token in headers or session auth. ### OCR **Direct tool names:** Extract Text, Parse Document, Validate Output.\ **Authentication:** OpenAI key and optional vision model configuration. *** ## Quick implementation tips * Use these direct action names in UI/workflow docs. * Keep one credential source per server to avoid token mismatch. * Validate required IDs before write actions. * For change monitoring, store last processed timestamp/record ID. **What it does:** Spreadsheet automation with rows, sheets, and cell-level updates. **Main operations:** create spreadsheet, list sheets, append/update rows, read/update cells, clear ranges, detect sheet updates. **Authentication:** `access-token` / `sheets_access_token` / `Authorization: Bearer`, with session fallback (`google_sheets`). **Links:** [MCP doc](/mcp/google-sheets) · [Google Sheets API](https://developers.google.com/sheets/api) **What it does:** Airtable base/table/record management and change tracking. **Main operations:** list bases/tables/columns, CRUD records, search records, monitor new/updated/deleted records. **Authentication:** `access-token` / `airtable_access_token` / `Authorization: Bearer`, with session fallback (`airtable`). **Links:** [MCP doc](/mcp/airtable) · [Airtable API](https://airtable.com/developers/web/api/introduction) **What it does:** WhatsApp Business messaging, templates, and media workflows. **Main operations:** send message, template operations, media upload/download/delete, response-driven communication flows. **Authentication:** token via `access-token` / `meta_wa_access_token` / `Authorization: Bearer`, with required IDs (`phone-number-id`, `waba-id` depending on operation). **References:** [MCP doc](/mcp/whatsapp-business) · [Meta Cloud API](https://developers.facebook.com/docs/whatsapp/cloud-api) **Fallback approach:** If a specific operation is missing, call the endpoint directly with HTTP using the same credentials. **Main operations:** send/search/read email, drafts, labels, triggers for new matching emails. **Authentication:** `access-token` / `gmail_access_token` / `Authorization: Bearer`, with session fallback (`gmail`). **Links:** [MCP doc](/mcp/gmail) · [Gmail API](https://developers.google.com/gmail/api) **Main operations:** list calendars, check availability, create/update/delete events, fetch event windows. **Authentication:** `access-token` / `calendar_access_token` / `Authorization: Bearer`, with session fallback (`google_calendar`). **Links:** [MCP doc](/mcp/google-calendar) · [Google Calendar API](https://developers.google.com/workspace/calendar/api/guides/overview) **Main operations:** list drives/folders/docs, create docs, append/replace/get content, document triggers. **Authentication:** `access-token` / `google_docs_access_token` / `Authorization: Bearer`, with session fallback (`google_docs`). **Links:** [MCP doc](/mcp/google-docs) · [Google Docs API](https://developers.google.com/docs/api) **Main operations:** file/folder CRUD, share, move, search, download/upload, snapshots/triggers. **Authentication:** `access-token` / `google_drive_access_token` / `Authorization: Bearer`, with session fallback (`google_drive`). **Links:** [MCP doc](/mcp/google-drive) · [Google Drive API](https://developers.google.com/drive/api) **Main operations:** create forms, manage questions/options, list responses and update form structure. **Authentication:** `access-token` / `google_forms_access_token` / `Authorization: Bearer` (+ session auth where configured). **Links:** [MCP doc](/mcp/google-form) · [Google Forms API](https://developers.google.com/forms/api) **Main operations:** places search/details, geocode/reverse geocode, directions, distance matrix, roads/elevation/timezone. **Authentication:** API key via `api-key`/`api_key`/payload or bearer-like header; session fallback (`google_maps`). **Links:** [MCP doc](/mcp/google-maps) · [Google Maps Platform](https://developers.google.com/maps/documentation) **Main operations:** create/update slides, manipulate presentation elements and slide content. **Authentication:** `access-token` / `slides_access_token` / `Authorization: Bearer`, with session fallback (`google_slides`). **Links:** [MCP doc](/mcp/google-slides) · [Google Slides API](https://developers.google.com/slides/api) **Main operations:** contacts/lists/campaign/deals operations and lifecycle updates. **Authentication:** API key in `brevo_api_key` / `brevo-api-key` / `api-key` / `api_key`, with session fallback (`brevo`). **Links:** [MCP doc](/mcp/brevo) · [Brevo API](https://developers.brevo.com/reference/getting-started-1) **Main operations:** scheduling actions and booking workflow integrations. **Authentication:** `Authorization: Bearer`, `access-token`, or `token`, with session fallback (`calcom`). **Links:** [MCP doc](/mcp/calcom) · [Cal.com API](https://cal.com/docs/api-reference/introduction) **Main operations:** task/list workflow operations and project updates. **Authentication:** `access-token` / `clickup_api_token` / `Authorization: Bearer`, with session fallback (`clickup`). **Links:** [MCP doc](/mcp/clickup) · [ClickUp API](https://developer.clickup.com/docs) **Main operations:** app data operations and backend workflow actions. **Authentication:** `Authorization: Bearer`, `access-token`, or `token`, with session fallback (`firebase`). **Links:** [MCP doc](/mcp/firebase) · [Firebase docs](https://firebase.google.com/docs) **Main operations:** contact/company/deal operations and CRM event workflows. **Authentication:** `Authorization: Bearer`, `hubspot_access_token`, `access-token`, with session fallback (`hubspot`). **Links:** [MCP doc](/mcp/hubspot) · [HubSpot API overview](https://developers.hubspot.com/docs/api/overview) **Main operations:** send email, contacts/lists, campaigns and sender-based outbound workflows. **Authentication:** API key via header/payload (`sendgrid_api_key`, `api_key`, bearer) + sender context for send flows; session fallback (`sendgrid`). **Links:** [MCP doc](/mcp/sendgrid) · [SendGrid API](https://www.twilio.com/docs/sendgrid/api-reference) **Main operations:** leads, contacts, opportunities, tasks, note/call/email activities, org config (users, pipelines, statuses, custom fields) and the change feed; triggers on new lead, contact, opportunity and task. **Authentication:** API key as HTTP Basic username with an empty password; session fallback (`closecrm`). `PUT` behaves as a partial update; `_limit` capped at 200. **Links:** [MCP doc](/mcp/close-crm) · [Close API](https://developer.close.com/) **Main operations:** browse, search, create/move/copy/delete, upload from URL, download and thumbnails, revisions and restore, shared links and file members, account and space usage; cursor-based trigger on new or changed files. **Authentication:** OAuth2 bearer, refreshed per connection; session fallback (`dropbox`). Content routes use `content.dropboxapi.com` with a `Dropbox-API-Arg` header. **Links:** [MCP doc](/mcp/dropbox) · [Dropbox API v2](https://www.dropbox.com/developers/documentation/http/documentation) **Main operations:** subscribers (including batch upsert), segments, custom fields, workflow enrolment, campaign listing, webhooks; trigger on new subscriber. **Authentication:** API key as HTTP Basic username with an empty password; session fallback (`flodesk`). API keys require a paid Flodesk plan. **Links:** [MCP doc](/mcp/flodesk) · [Flodesk API](https://developers.flodesk.com/) **Main operations:** send text/file/location/contact/poll/buttons, forward, chat history and journals, contacts and WhatsApp checks, group management, instance state; triggers on new message and new incoming call. **Authentication:** `id_instance` + `api_token_instance` + per-instance `api_url`, assembled into the request path rather than sent as a header. **Links:** [MCP doc](/mcp/green-api) · [GREEN-API docs](https://green-api.com/en/docs/) **Main operations:** orders, refunds and invoices, fulfillment with tracking, products and variants, inventory by location, customers, collections, pages and articles, tags, metafields, draft orders; eight triggers covering new/paid/cancelled orders, refunds, customers, products, draft orders and pages. **Authentication:** custom app `CLIENT_ID` + `CLIENT_SECRET` exchanged for a short-lived Admin API token, sent as `x-shopify-access-token` with a `shop-domain` header; session fallback (`shopify`). Admin GraphQL `2026-07` — no REST path. **Links:** [MCP doc](/mcp/shopify) · [Shopify Admin GraphQL API](https://shopify.dev/docs/api/admin-graphql) **Main operations:** customers, charges and payment intents, invoices, subscriptions and cancellation, products and prices, refunds, account balance; triggers on new customer, charge, invoice and subscription. **Authentication:** secret key (`sk_live_` / `sk_test_`) as `Authorization: Bearer`; form-encoded request bodies; session fallback (`stripe`). **Links:** [MCP doc](/mcp/stripe) · [Stripe API](https://docs.stripe.com/api) **Main operations:** channel/user/message actions plus Slack event-style utility flows. **Authentication:** `access-token` / `slack_access_token` / `Authorization: Bearer`, with session fallback (Slack auth resolver). **Links:** [MCP doc](/mcp/slack) · [Slack Web API](https://api.slack.com/web) **Main operations:** speech-to-text conversion and transcript processing. **Authentication:** environment credentials for providers (`DEEPGRAM_API_KEY`, `AZURE_STT_API_KEY`, `AZURE_STT_ENDPOINT`). **Links:** [MCP doc](/mcp/transcription) **Main operations:** content/publishing workflows and CMS operations. **Authentication:** session auth context (`wordpress`) for REST operations; AI helper tools may also use OpenAI key. **Links:** [MCP doc](/mcp/wordpress) · [WordPress REST API](https://developer.wordpress.org/rest-api/) **Main operations:** PDF conversion (text/CSV/JSON/HTML/image), PDF generation from HTML/URL/Office/image, merge, split, page edits, form filling, passwords, barcodes, document parsing. Actions only — no triggers. **Authentication:** `x-api-key` header (bearer also accepted); session fallback (`pdfco`). **Links:** [MCP doc](/mcp/pdfco) · [PDF.co API](https://developer.pdf.co/) **Main operations:** sites and pages, CMS collections and items, form submissions, assets, ecommerce reads, webhooks, site publishing; triggers on new CMS item and new form submission. **Authentication:** site API token as `Authorization: Bearer`; session fallback (`webflow`). **Links:** [MCP doc](/mcp/webflow) · [Webflow Data API v2](https://developers.webflow.com/data/reference) **Main operations:** product catalog and category browsing, order lookup and status updates, customer records, payment gateways; triggers on new order/product/customer/coupon. **Authentication:** `consumer_key` + `consumer_secret` with store URL (header/body); session fallback (`woocommerce`). **Links:** [MCP doc](/mcp/woocommerce) · [WooCommerce REST API](https://woocommerce.github.io/woocommerce-rest-api-docs/) **Main operations:** CRM modules, records, and pipeline-related automation. **Authentication:** `access-token` (header/body), with session fallback (`zoho`); requests use `Zoho-oauthtoken`. **Links:** [MCP doc](/mcp/zoho-crm) · [Zoho CRM API](https://www.zoho.com/crm/developer/docs/api/v8/) **Main operations:** support ticket and desk workflows. **Authentication:** `access-token` plus org context headers (`org-id` variants) where required; session fallback (`zohodesk`/`zoho-desk`). **Links:** [MCP doc](/mcp/zoho-desk) · [Zoho Desk API](https://desk.zoho.com/DeskAPIDocument) **Main operations:** mailbox and message automation in Zoho Mail. **Authentication:** `access-token` or bearer auth, with session fallback (`zoho_mail`). **Links:** [MCP doc](/mcp/zoho-mail) · [Zoho Mail API](https://www.zoho.com/mail/help/api/) **Main operations:** extract text from images/documents with vision models. **Authentication:** `OPENAI_API_KEY` (and optional `OPENAI_VISION_MODEL`). **Links:** [MCP doc](/mcp/ocr) # Intercom Source: https://docs.unleashx.ai/mcp/intercom Let your UnleashX agent manage contacts, conversations, companies, and notes in Intercom. # Intercom > **In one line:** Connect Intercom so your UnleashX agent can look up contacts, read and reply to conversations, manage companies, and add notes and tags — all in plain language. | | | | ------------------ | -------------------------------------------------------------------------------------------------------------------- | | **Category** | CRM & Marketing | | **Authentication** | OAuth (Intercom) | | **Setup time** | \~3 minutes | | **Difficulty** | Easy | | **Best for** | Support and customer teams that want an AI agent to triage conversations, update contacts, and log notes in Intercom | ## 1. Overview Intercom is a customer communications platform for support, engagement, and marketing. It holds your contacts (leads and users), the companies they belong to, and the conversations your team has with them across chat, email, and the Messenger. Once connected to UnleashX, your agent can find and update contacts, read conversations, reply or leave internal notes, manage companies, apply tags, and search across your workspace. It works against your live Intercom workspace using your own Intercom sign-in, so it respects your permissions. Connecting Intercom to UnleashX means your inbox and customer records update themselves as you talk. Instead of opening Intercom to reply to a conversation or update a contact, you tell your agent and it does it. ## 2. What you'll need * An Intercom account with access to the workspace you want to connect. * A seat/role with permission to view and manage contacts and conversations. * An UnleashX account with access to **Data Connectors**. No API key to paste. Intercom uses OAuth — you click **Authorize** and sign in with Intercom. Intercom enforces your **workspace role and permissions**. If your seat can't manage conversations or contacts, the agent can't either. ## 3. Get your credentials There's no key to copy. Authentication runs through Intercom's secure OAuth sign-in. Connecting Intercom (Section 4) opens an Intercom **Authorize** window. Sign in with your Intercom account at `https://app.intercom.com`. Complete two-factor authentication if prompted. If you belong to more than one workspace, pick the one you want the agent to work with. Intercom shows the access UnleashX is requesting. Click **Authorize / Connect**. Intercom redirects you back automatically and the connector links to your workspace. Behind the scenes UnleashX calls Intercom with a `Bearer` token — you never handle the token yourself. **Permissions UnleashX requests:** | Access | Why UnleashX needs it | | ------------------------ | ---------------------------------------------------- | | Read/write contacts | Find, create, and update contacts (leads and users). | | Read/write conversations | Read conversations, reply, and add internal notes. | | Read/write companies | List and manage companies and their contacts. | | Manage tags | Apply and remove tags on contacts and conversations. | | Read admins | Resolve teammates for assignment. | Intercom shows exactly what UnleashX is asking for on the authorize screen. Intercom — not UnleashX — enforces these limits. ## 4. Connect on UnleashX Go to [https://www.tryunleashx.com](https://www.tryunleashx.com) and open the agent you want to connect. Inside the agent, go to **Data Connectors**. Locate **Intercom** and click **Connect** (or **Add** / **Configure**). Click **Authorize**, sign in with Intercom, pick your workspace, and confirm. You return to UnleashX and the Intercom connector shows a **Connected** badge. ### Use Intercom in a Workflow Once connected, you can add **Intercom** to any automation from the **Workflows** builder. Its triggers and tools appear in the Apps panel, marked with an **MCP** badge. Open **Workflows → New Workflow**. On the canvas, click **+ Add Trigger**. In the **Paths** panel, open the **Apps** tab and select **Intercom** — its **Triggers** are listed underneath. Use the search box if you have many connectors. Click the **+** below any node to add a step, then pick **Intercom** again — this time the panel lists its **Actions**. Fill in the fields for the trigger or action you picked. Required fields are marked with a red asterisk (\*). Under **Selected account**, choose an already-connected account, or click **Add Account** to connect one now. Click **Save**. Use **Test** to verify the step, then toggle **Publish** when the workflow is ready. The steps are the same for every connector. For the full workflow builder guide, see [Using MCP in Workflows](/mcp/workflows). ## 5. Available tools | Tool | What it does | Changes data? | | ----------------------- | -------------------------------------------------- | ------------- | | List Contacts | Lists contacts (leads and users). | No | | Get Contact | Retrieves a single contact by ID. | No | | Create Contact | Creates a new contact (lead or user). | ✏️ Yes | | Update Contact | Updates a contact. | ✏️ Yes | | Delete Contact | Deletes a contact. | ⚠️ Yes | | List Conversations | Lists conversations. | No | | List Companies | Lists companies. | No | | Reply To Conversation | Sends a reply in a conversation. | ✏️ Yes | | Upsert Contact | Creates or updates a contact by email/external ID. | ✏️ Yes | | Send Message To Contact | Sends an outbound message to a contact. | ✏️ Yes | | Send Incoming Message | Creates an inbound message as if from a user. | ✏️ Yes | | Create Note | Adds an internal note to a contact. | ✏️ Yes | | Add Tag To Contact | Applies a tag to a contact. | ✏️ Yes | ### Available triggers | Trigger | Fires when | | ---------------------------- | -------------------------------------- | | On New Contact | A new contact is created. | | On Tag Added To User | A tag is added to a user. | | On Tag Added To Lead | A tag is added to a lead. | | On Tag Added To Conversation | A tag is added to a conversation. | | On New Users | A new user is created. | | On New Leads | A new lead is created. | | On New Companies | A new company is created. | | On New Conversation | A new conversation starts. | | On New Closed Conversation | A conversation is closed. | | On New Unsubscriptions | A contact unsubscribes. | | On New Tickets | A new ticket is created. | | On Reply Received | A reply is received on a conversation. | | On New Reply From Admin | A teammate (admin) replies. | | On New Conversation Rating | A conversation is rated. | | On Lead Added Email | An email is added to a lead. | | On New Topic | A new topic is created. | | On New Event | A new event is tracked. | ## 6. Example usage **"Add [jordan@acme.com](mailto:jordan@acme.com) as a contact and leave an internal note that they came from the webinar."** → Runs Upsert Contact to create/update the contact, then Create Note to add the internal note. **"Reply to conversation 12345 letting them know the fix is live, and tag it 'resolved'."** → Runs Reply To Conversation with the message, then Add Tag To Contact / tags the conversation. ## 7. Permissions & data access **UnleashX can:** * List and read contacts, conversations, and companies. * Create, update, and upsert contacts, and add notes and tags. * Reply to conversations and send inbound/outbound messages to contacts. * React to workspace events (new contacts, conversations, tags, tickets, ratings, and more) via triggers. * Delete contacts where your role allows (marked ⚠️). **UnleashX cannot:** * Do anything your Intercom role doesn't permit. * Access a workspace you didn't connect. * Change Intercom billing or workspace admin settings. **To disconnect:** In UnleashX, open **Data Connectors → Intercom → Disconnect**. You can also revoke the authorization in Intercom under **Settings → Authorized apps**. Disconnecting revokes access immediately. ## 8. Troubleshooting | Problem | What it means | How to fix it | | ------------------------- | ------------------------------------------------------ | ------------------------------------------------------------ | | **401 Unauthorized** | The Intercom token expired or was revoked. | Reconnect Intercom in **Data Connectors** and sign in again. | | **403 Forbidden** | Your seat lacks permission for that action. | Ask a workspace admin to adjust your role, then retry. | | **404 Not found** | The contact/conversation ID is wrong or was deleted. | Have the agent search to find the correct record. | | **429 Too Many Requests** | You hit Intercom's rate limit. | Wait and retry; space out bulk operations. | | **Wrong workspace** | The agent is acting on a different Intercom workspace. | Reconnect and select the correct workspace. | For general MCP issues, see [/mcp/integrations](/mcp/integrations). ## 9. Frequently asked questions **Is my Intercom data stored by UnleashX?** No. UnleashX reads and writes live through the Intercom API per request; it doesn't keep a copy of your contacts or conversations. **Does the agent reply as me?** Replies and notes are posted through your connected Intercom identity, subject to your role. **Can the agent delete contacts?** Yes — tools marked ⚠️ make permanent changes and only work if your role allows it. Use them deliberately. **Can multiple teammates connect Intercom?** Yes. Each teammate authorizes their own Intercom account and acts with their own permissions. ## 10. References * Intercom API reference: [https://developers.intercom.com/docs/references/rest-api/](https://developers.intercom.com/docs/references/rest-api/) * Intercom OAuth: [https://developers.intercom.com/docs/build-an-integration/learn-more/authentication/setting-up-oauth/](https://developers.intercom.com/docs/build-an-integration/learn-more/authentication/setting-up-oauth/) * Rate limiting: [https://developers.intercom.com/docs/references/rest-api/errors/rate-limiting/](https://developers.intercom.com/docs/references/rest-api/errors/rate-limiting/) # Overview Source: https://docs.unleashx.ai/mcp/introduction Plug your AI into real-world tools and data. # Connect AI to the tools that power your business Explore production-ready MCP Servers designed to extend the capabilities of modern AI agents. Connect with business applications, automate repetitive workflows, access real-time information, and build intelligent systems that can interact with the tools your teams use every day. *** ## On this page 1. [What is MCP?](#what-is-mcp) 2. [Why MCP exists](#why-mcp-exists) 3. [Core concepts](#core-concepts) 4. [How it works](#how-it-works) 5. [Tools vs resources](#tools-vs-resources) 6. [Using MCP in your workflow](#using-mcp-in-your-workflow) 7. [Advantages](#advantages) 8. [Real-world use cases](#real-world-use-cases) 9. [Examples](#examples) 10. [Glossary](#glossary) 11. [Next steps](#next-steps) *** ## What is MCP? **Model Context Protocol (MCP)** is an open standard that defines how AI agents — like large language models — communicate with external tools and data sources. Think of it as a universal adapter: instead of building a bespoke connector for every integration you need, MCP gives you one consistent interface that works across all of them. At its core, MCP is a client–server protocol. Your AI application is the *client*. Each external system — Google Sheets, Airtable, your company's CRM, a custom database — runs an *MCP server* that wraps that system's capabilities in a standardised way. When your agent needs to read from a spreadsheet or write a row to a database, it speaks MCP, and the server translates that into whatever native API the underlying service requires. > **One-liner definition:** MCP is the protocol that lets your AI agent securely call actions on external services through a consistent, well-defined interface — without rewriting integration logic for every tool. This might sound abstract, so here is a concrete example. Imagine you are building an AI assistant that can update a project tracker in Airtable when it detects a deadline is at risk. Without MCP, you would write custom code to authenticate with Airtable's API, format the payload, handle rate limits, and parse the response — and then repeat that work for every other tool your assistant needs. With MCP, you connect the Airtable MCP server once, and your agent can immediately call `update_record`, `create_record`, or `search_records` using the same pattern it uses for every other MCP server. *** ## Why MCP exists Before MCP, connecting an AI agent to external tools was messy. Every integration was handcrafted. Teams spent weeks writing, testing, and maintaining "glue code" — thin wrappers around third-party APIs that had to be rebuilt whenever an API changed or a new tool was added. This created a fragmentation problem: a workflow connecting five services required five different patterns, five authentication schemes, and five sets of error-handling logic. The deeper issue is that AI agents are inherently dynamic. They decide at runtime which actions to take. A hardcoded integration assumes you know in advance exactly what the agent will do. MCP solves this by giving the agent a discovery mechanism: at connection time, the server tells the agent exactly which tools are available, what inputs they expect, and what outputs they return. The agent can then reason about which tool to use — dynamically, without any pre-programmed logic on the client side. > **The fragmentation problem:** Without MCP — 10 integrations = 10 custom code paths, 10 auth flows, 10 maintenance burdens. With MCP — 10 integrations = 10 server connections, one protocol, one pattern everywhere. MCP was developed with security as a first-class concern. Every tool invocation is explicit and structured. Servers declare exactly what they can do, making it easy to audit what an agent is allowed to access. Authentication is handled at the server boundary, which means your agent never needs to hold raw API keys or access tokens for the services it works with. *** ## Core concepts MCP has a small, well-defined vocabulary. Understanding these five concepts is enough to get started with any MCP integration. | Term | Definition | | --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **MCP Server** | A process that wraps an external service and exposes its capabilities (tools and resources) over the MCP protocol. One server per service — e.g., a Google Sheets MCP server, an Airtable MCP server. | | **MCP Client** | The AI application or agent that connects to one or more MCP servers. The client asks servers what they can do, then calls the tools it needs during task execution. | | **Tool** | A callable function exposed by a server — for example, `create_row`, `send_email`, or `query_database`. Tools can read or write data and may have side effects. | | **Resource** | A read-only data endpoint exposed by a server — for example, a list of available spreadsheets, schema definitions, or a current configuration. Resources provide context without changing anything. | | **Tool Schema** | A structured description of a tool: its name, what it does, the inputs it expects, and the output it returns. Written in JSON Schema, it allows the agent to call tools correctly without needing hard-coded knowledge of them. | *** ## How it works When your agent needs to do something in the world — create a task, fetch a record, send a message — the MCP protocol handles every step of that interaction in a predictable, four-phase sequence. ### 1. Connection & discovery Your application connects to one or more MCP servers. Each server responds with a manifest: a complete list of the tools and resources it offers, along with their schemas. The agent now knows exactly what it can do without any hardcoded knowledge. ### 2. Tool selection When a task requires external action, the agent inspects the available tools, picks the one that matches its intent, and prepares a structured call using the tool's declared input schema. If multiple tools are relevant, the agent reasons about which is most appropriate. ### 3. Invocation The agent sends the tool call to the MCP server with the required inputs — formatted as structured JSON, not natural language. The server validates the inputs, authenticates the request, and executes the action on the target service (e.g., creating a row in Airtable or sending a Slack message). ### 4. Structured response The server returns a typed, structured result. The agent reads the output, incorporates it into its reasoning, and decides whether to call another tool, return a final answer, or ask the user a follow-up question. This sequence repeats as many times as needed within a single agent turn. A complex task might involve a dozen tool calls in sequence — reading data, transforming it, writing results, sending notifications — all orchestrated by the agent through the same protocol. > **Key insight:** The agent never talks directly to third-party APIs. Every action goes through the MCP server, which acts as a typed, auditable gateway. This separation is what makes MCP integrations safe to deploy in production environments. *** ## Tools vs resources MCP distinguishes between two kinds of server-side capability: **tools** and **resources**. The distinction matters because it determines how the agent interacts with them and what kinds of checks you need around each. | Property | Tools | Resources | | ------------------ | ----------------------------------------------------- | ------------------------------------------------------ | | **Purpose** | Perform actions — read, write, create, delete, send | Provide context — schema, lists, config, current state | | **Side effects** | ✅ May modify data or trigger external actions | ❌ Read-only, no state changes | | **Examples** | `create_task`, `send_email`, `update_record` | List of workspaces, table schemas, user permissions | | **Access pattern** | Called explicitly by the agent with structured inputs | Loaded at connection time or polled for context | | **Auditing** | Every call is logged; inputs and outputs captured | Typically cached; lower audit priority | In practice, most of your day-to-day work with MCP will involve tools. Resources are more relevant during the setup phase — for example, listing available Airtable bases before the agent decides which one to write to — or for keeping the agent informed about the current state of a system it is managing. *** ## Using MCP in your workflow Getting an MCP integration running involves four practical steps. The exact details differ by platform, but the pattern is the same everywhere. ### Step 1 — Choose your integration Start with the service your workflow needs to talk to. There are MCP servers available for popular platforms including Google Sheets, Airtable, Notion, Salesforce, Slack, GitHub, PostgreSQL, and many more. Check the MCP integrations catalogue for the current list. If a server does not exist for your target service, you can build your own using the MCP SDK. ### Step 2 — Sign in to your chosen service Before your AI can access a service like Google Sheets or Airtable, it needs permission to do so — just like any app you connect to your Google account. This is handled through a simple sign-in flow, not any technical setup on your part. Here is what it looks like in practice: 1. In your MCP-enabled tool or platform, click **Connect** next to the service you want to use. 2. A sign-in window opens — for example, "Sign in with Google" or "Connect your Airtable account." 3. Log in and click **Allow** to grant access. 4. That's it. The connection is saved and your AI can now work with that service. > **No passwords, no code required.** You never paste keys or touch any settings files. It works the same way as connecting Spotify to your TV, or linking your calendar to a scheduling app — a familiar "log in and allow" screen does everything. Once connected, the service stays linked until you choose to disconnect it. You can manage or remove connections at any time from your account settings. ### Step 3 — Call tools in your agent flow Once connected, your agent can call tools in the same way it would call any other function. The model receives the tool schemas alongside your prompt context, selects the right tool for each step, and invokes it with structured parameters. ```javascript theme={null} // Agent decides to add a new lead row in Google Sheets const result = await client.callTool("Add Row", { spreadsheet: "Leads", row: { Name: "Review Q3 budget proposal", Phone: "+15551234567", Status: "New", Date: "2026-04-15" } }); // result.updated_range = "Leads!A42:D42" ``` ### Step 4 — Use outputs in your logic Every tool returns a structured result. Your agent can read that result, pass it to the next tool, store it in memory for later in the conversation, surface it to the user as part of its final response, or use it to make a branching decision. Because the outputs are typed and structured rather than raw text, they are reliable inputs for downstream automation steps. *** ## Advantages Why use MCP rather than calling APIs directly? There are six reasons that matter in production. ### Standardised integration layer One protocol covers every tool. Add a new service by connecting its MCP server — no new code patterns to learn or maintain. Your team only ever needs to understand one integration model, regardless of how many services you connect. ### Faster setup Connect a pre-built MCP server and your agent has full access to that service's capabilities within minutes, not days. Discovery is automatic: the server tells the client what it can do at connection time, with no manual configuration of individual tool definitions. ### Reusable interfaces A tool schema written once works for any agent, any model, any workflow. Build the server once and share it across your entire organisation. Teams can publish internal MCP servers the same way they publish internal libraries. ### Observability Every tool invocation is structured and loggable. You can audit exactly which tools were called, with which inputs, and what came back. This makes debugging straightforward and compliance reporting tractable. ### Security by design Credentials stay in the server. The agent never handles raw API keys. Scope and permissions are declared explicitly in the server's configuration, making it easy to apply least-privilege access to every integration. ### Maintainability When an underlying API changes, you update one server, not every agent that uses it. The agent-side code stays the same; only the server adapts. This dramatically reduces the long-term cost of keeping integrations current. *** ## Real-world use cases MCP is general-purpose — it works for any scenario where an AI agent needs to take action in an external system. Here are some of the patterns that teams use most often. ### Automated reporting pipelines An agent reads source data from Google Sheets, transforms it, writes summary rows to Airtable, and sends a formatted digest to Slack — all through MCP tool calls, triggered on a schedule or by an event. ### Sales workflow automation When a lead replies to an outreach email, an agent reads the conversation, updates the contact record in Salesforce, creates a follow-up task, and drafts a reply — all without a human touching the keyboard. ### AI code review assistant An agent fetches open pull requests from GitHub, analyses the diffs, posts review comments inline, and labels the PR with the appropriate category — using three MCP tools from the GitHub server in a single workflow run. ### Intelligent ticket triage An agent reads incoming support tickets, queries the order database for the customer's history, classifies the ticket by urgency, and routes it to the right queue — with a draft response already attached. ### Expense reconciliation An agent reads bank transaction exports, matches entries against a budgeting spreadsheet, flags anomalies, and writes a reconciliation summary — turning a two-hour manual task into a two-minute automated one. ### Competitive intelligence gathering An agent queries a web search MCP server, extracts structured data from results, and populates a tracking sheet with competitor pricing and feature changes — updated daily with zero manual effort. The common thread across all of these is that MCP eliminates the "last mile" friction between an AI's reasoning and real-world action. The agent is not just telling you what to do — it is doing it, through a protocol that is auditable, reversible, and safe. *** ## Examples Three end-to-end examples using MCP servers available in UnleashX. Each one connects once (see [MCP Integrations](/mcp/integrations)), then the agent calls the tools as part of its flow. ### Example 1 — Log leads to Google Sheets **Scenario:** During a call or chat, your agent captures a lead and records it in a spreadsheet — no copy-paste. **Flow:** 1. The agent collects the person's name, phone, and interest during the conversation. 2. It uses **Find Row** to check whether that phone number is already in the sheet. 3. If new, it uses **Add Row** to add a row; if it already exists, it uses **Update Row** to update the status. 4. The agent confirms back to the user: "You're on the list — we'll reach out Thursday." ```javascript theme={null} // New lead → Add Row; existing lead → Update Row const existing = await client.callTool("Find Row", { spreadsheet: "Leads", query: "+15551234567" }); if (!existing.row) { await client.callTool("Add Row", { spreadsheet: "Leads", row: { Name: "Asha Rao", Phone: "+15551234567", Status: "New" } }); } ``` Behind the scenes: **Google Sheets MCP** → [`/mcp/google-sheets`](/mcp/google-sheets). ### Example 2 — Auto-publish a blog post to WordPress **Scenario:** Your agent turns a short brief into a published draft on your WordPress site, with a generated cover image. **Flow:** 1. The agent drafts the title and body from the user's brief. 2. It uses **Generate AI Image** to create a cover image. 3. It uses **Create Post** to publish the post as a draft. 4. It uses **Set Featured Image** to attach the cover image, and returns the edit link. ```javascript theme={null} const post = await client.callTool("Create Post", { title: "5 ways voice AI cuts response time", content: "

Customers expect instant answers…

", status: "draft" }); // post.id → attach the cover image await client.callTool("Set Featured Image", { post: post.id, image_url: "https://files.example.com/cover.png" }); ``` Behind the scenes: **WordPress MCP** → [`/mcp/wordpress`](/mcp/wordpress). ### Example 3 — WhatsApp chatbot **Scenario:** A customer messages your WhatsApp Business number. The agent answers, looks up their order in a spreadsheet, and replies — composing **two** MCP servers in one flow. **Flow:** 1. An inbound WhatsApp message arrives ("Where's my order #1234?"). 2. The agent uses **Find Row** on your Orders sheet to look up order #1234. 3. It replies with **Send Message** (free-form, allowed within the 24-hour customer-service window). 4. If the window has closed, it falls back to **Send Template** with an approved template from **List Templates**. ```javascript theme={null} // 1. Look up the order in Google Sheets const order = await client.callTool("Find Row", { spreadsheet: "Orders", query: "1234" }); // 2. Reply on WhatsApp await client.callTool("Send Message", { to: "+15551234567", message: `Your order #1234 is out for delivery — arriving ${order.row.ETA}.` }); ``` Behind the scenes: **WhatsApp Business MCP** + **Google Sheets MCP** → [`/mcp/whatsapp-business`](/mcp/whatsapp-business), [`/mcp/google-sheets`](/mcp/google-sheets). > **Why this matters:** Example 3 is the whole point of MCP — the agent composes a messaging tool and a data tool in a single turn, through one consistent protocol, without you writing any glue code between WhatsApp and Google Sheets. *** ## Glossary | Term | Definition | | ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | **Agent** | An AI system that can take sequences of actions autonomously to complete a goal. In the MCP context, the agent is the entity that decides which tools to call and in what order. | | **Protocol** | A defined set of rules for how two systems communicate. MCP specifies the message formats, connection lifecycle, tool schema structure, and response types that every client and server must follow. | | **Tool schema** | A JSON Schema description of a tool: its name, description, required and optional parameters, and the shape of its output. Schemas are how the agent knows how to call a tool correctly at runtime. | | **SSE** | Server-Sent Events — the transport mechanism most MCP servers use to stream responses back to the client. You will see `/sse` URLs when configuring server connections. | | **Structured output** | A response from a tool or resource that is typed and machine-readable (typically JSON), as opposed to freeform text. Structured outputs are what make MCP results reliable inputs for downstream automation. | | **Capability manifest** | The list of tools and resources a server returns when first connected. The agent uses this manifest to understand what the server can do, without needing any hardcoded knowledge of the underlying service. | *** ## Next steps You now have a solid mental model of what MCP is, why it was designed the way it was, and how it fits into an AI-powered workflow. From here, you have two paths forward. If you want to **connect an existing integration**, head to the MCP Integrations overview. It lists every available server with setup instructions, authentication requirements, and the full tool catalogue for each service. Most integrations take under fifteen minutes to configure. If you want to **build a custom MCP server** — because your target service does not have an existing server, or because you want to expose internal tools to your agents — see the Building MCP Servers guide. It walks through the MCP SDK, tool schema authoring, and deployment patterns for both local and hosted servers. > **Good to know:** MCP servers are stateless by design. They do not store conversation history or session state. All context lives in your agent. This makes servers easy to scale horizontally and simple to reason about — each tool call is independent. *** *Previous: [Overview](#) · Next: [MCP Integrations →](#)* # Jira Source: https://docs.unleashx.ai/mcp/jira Let your UnleashX agent create, update, assign, and report on Jira issues, sprints, and boards. # Jira > **In one line:** Connect Jira so your UnleashX agent can create and update issues, move them through workflows, assign work, and pull sprint and standup reports automatically. | | | | ------------------ | -------------------------------------------------------------------------------------------- | | **Category** | Dev Tools | | **Authentication** | API token (Atlassian) | | **Setup time** | \~7 minutes | | **Difficulty** | Medium | | **Best for** | Engineering and product teams who want to manage issues and track sprint progress hands-free | ## 1. Overview Jira is Atlassian's issue and project tracking tool. Teams use it to plan work in projects and boards, organize it into sprints and backlogs, and move issues through a workflow from "To Do" to "Done." Once connected, your UnleashX agent can create and update issues, comment, transition issues across statuses, assign work to teammates, and generate reports such as active-sprint status, team workload, and a daily standup summary — all from natural language. Connecting Jira to UnleashX is useful when you want to capture bugs and tasks as they come up, keep boards current, and get instant status updates without digging through Jira screens. ## 2. What you'll need * An Atlassian / Jira Cloud account with access to the projects you want to use. * Your Atlassian **account email** (used together with the API token). * A Jira Cloud **site URL** (e.g. `https://your-company.atlassian.net`). * Permission to view, create, and transition issues in the relevant projects. You don't need to be a Jira admin to create an API token — any user can. But your token only has the permissions your account has, so you can only see and edit projects you already have access to. ## 3. Get your credentials Jira Cloud uses **Basic auth**: your account email plus an Atlassian **API token**. Go to [https://id.atlassian.com/manage-profile/security/api-tokens](https://id.atlassian.com/manage-profile/security/api-tokens) while signed in to Atlassian. Click **Create API token**, give it a label like `UnleashX`, and click **Create**. Copy the generated token. The API token is shown only once. Copy it now — if you lose it, you'll need to revoke it and create a new one. Have your Atlassian login **email** and your Jira **site URL** (`https://your-company.atlassian.net`) ready — UnleashX needs all three. **What the token can access** | Scope / Access | Why UnleashX needs it | | -------------------------------------- | ------------------------------------------------------------- | | Read issues, projects, boards, sprints | To search, list, and report on your Jira work | | Create & update issues | To log new issues and edit existing ones | | Add comments | To post updates on issues | | Transition issues | To move issues between workflow statuses | | Assign issues | To set or change the assignee | | Read users | To find teammates by name or email for assignment and reports | An Atlassian API token grants the same access your account has — Jira does not let you scope a personal token to specific projects. UnleashX only calls the endpoints needed for the tools in Section 5. ## 4. Connect on UnleashX Go to [https://www.tryunleashx.com](https://www.tryunleashx.com) and open the agent you want to connect. In the agent, go to **Data Connectors**. Locate **Jira** in the list and click **Connect** / **Add** / **Configure**. Provide your Jira **site URL**, your Atlassian **email**, and your **API token**. UnleashX combines the email and token as HTTP Basic auth. Save. When the status shows a **Connected** badge, your agent can start working with Jira. ### Use Jira in a Workflow Once connected, you can add **Jira** to any automation from the **Workflows** builder. Its triggers and tools appear in the Apps panel, marked with an **MCP** badge. Open **Workflows → New Workflow**. On the canvas, click **+ Add Trigger**. In the **Paths** panel, open the **Apps** tab and select **Jira** — its **Triggers** are listed underneath. Use the search box if you have many connectors. Click the **+** below any node to add a step, then pick **Jira** again — this time the panel lists its **Actions**. Jira actions in the Apps panel Fill in the fields for the trigger or action you picked. Required fields are marked with a red asterisk (\*). Under **Selected account**, choose an already-connected account, or click **Add Account** to connect one now. Click **Save**. Use **Test** to verify the step, then toggle **Publish** when the workflow is ready. The steps are the same for every connector. For the full workflow builder guide, see [Using MCP in Workflows](/mcp/workflows). ## 5. Available tools | Tool | What it does | Changes data? | | ------------------------ | ----------------------------------------------------- | ------------- | | Create Issue | Creates a new issue (bug, task, story, etc.) | ✏️ Yes | | Get Issue | Gets a single issue by key | No | | Update Issue | Updates fields on an issue | ✏️ Yes | | Add Comment | Adds a comment to an issue | ✏️ Yes | | List Transitions | Lists the workflow transitions available for an issue | No | | Transition Issue | Moves an issue to a new status | ✏️ Yes | | Get Issue History | Gets the change history of an issue | No | | Assign Issue | Assigns an issue to a user | ✏️ Yes | | Search Users | Searches for Jira users | No | | List Users | Lists Jira users | No | | Search Issues | Searches issues with JQL or filters | No | | Get Backlog Issues | Gets issues in a board's backlog | No | | Get Assigned Issues | Gets issues assigned to a user | No | | List Projects | Lists Jira projects | No | | List Boards | Lists boards | No | | List Sprints | Lists sprints for a board | No | | Get Active Sprint | Gets the currently active sprint for a board | No | | Get User Issues by Email | Finds issues for a user by their email | No | | Get Board User Issues | Gets a user's issues on a specific board | No | | Get Sprint Issues | Lists issues in a sprint | No | | Get Sprint Status | Summarizes a sprint's status and progress | No | | Get Team Workload | Reports how work is distributed across the team | No | | Generate Standup Report | Builds a daily standup report for a board | No | ## 6. Example usage **"Create a bug in the WEB project titled 'Login button broken on mobile' and assign it to Priya."** Behind the scenes: Search Users (to find Priya) → Create Issue → Assign Issue. **"Give me today's standup for the Sprint board and move JIRA-204 to In Progress."** Behind the scenes: Get Active Sprint → Generate Standup Report → List Transitions → Transition Issue. ## 7. Permissions & data access **UnleashX CAN:** * Read projects, boards, sprints, backlogs, and issues you can access. * Create and update issues, add comments, and transition issues. * Assign issues and look up users. * Generate sprint status, team workload, and standup reports. **UnleashX CANNOT:** * Access projects your Jira account can't see. * Change Jira admin, workflow, or billing configuration. * Act beyond the permissions your Atlassian account has. **To disconnect:** In UnleashX, open your agent → **Data Connectors** → **Jira** → **Disconnect**. To fully revoke access, go to [https://id.atlassian.com/manage-profile/security/api-tokens](https://id.atlassian.com/manage-profile/security/api-tokens) and delete the token. Either action stops access immediately. ## 8. Troubleshooting | Problem | What it means | How to fix it | | ------------------ | -------------------------------------------------- | ------------------------------------------------------------- | | `401 Unauthorized` | Wrong email/token pair, or the token was revoked | Recreate the API token and re-enter email + token in UnleashX | | `403 Forbidden` | Your account lacks permission in that project | Ask a Jira admin to grant project access, then retry | | `404 Not Found` | The issue key, board, or sprint doesn't exist | Verify the key/ID; it may have moved or been deleted | | Transition fails | The target status isn't valid from the current one | Run List Transitions first to see allowed transitions | | Wrong site | The site URL is incorrect | Confirm the URL is `https://your-company.atlassian.net` | For general connection issues, see [/mcp/integrations](/mcp/integrations). ## 9. Frequently asked questions **Is my data stored by UnleashX?** UnleashX calls Jira live using your token when a tool runs. It doesn't keep a separate copy of your issues beyond what's needed to complete a request. **Can multiple team members connect?** Yes. Each person creates their own Atlassian API token and connects with their own email. Each connection reflects that person's Jira permissions. **How do I rotate my key?** Create a new token at the Atlassian API tokens page, update it in UnleashX, then delete the old token. Access switches over immediately. **Why Basic auth and not OAuth?** Jira Cloud's API token model uses HTTP Basic auth with your email + token. UnleashX follows Atlassian's documented approach. ## 10. References * Jira Cloud REST API: [https://developer.atlassian.com/cloud/jira/platform/rest/v3/](https://developer.atlassian.com/cloud/jira/platform/rest/v3/) * Create API token: [https://id.atlassian.com/manage-profile/security/api-tokens](https://id.atlassian.com/manage-profile/security/api-tokens) * Basic auth reference: [https://developer.atlassian.com/cloud/jira/platform/basic-auth-for-rest-apis/](https://developer.atlassian.com/cloud/jira/platform/basic-auth-for-rest-apis/) # Kwiqreply Source: https://docs.unleashx.ai/mcp/kwiqreply Send WhatsApp text, link-preview, button, and list messages through Kwiqreply, and read/write UnleashX datasource records. # Kwiqreply > **In one line:** Connect Kwiqreply so your UnleashX agent can send rich WhatsApp messages (text, link previews, reply buttons, and interactive lists) and read or write your UnleashX datasource records in the same flow. | | | | ------------------ | ------------------------------------------------------------------------------------------------------------------------ | | **Category** | Communication | | **Authentication** | API Key (Kwiqreply gateway token) | | **Setup time** | \~5 minutes | | **Difficulty** | Easy | | **Best for** | Teams using Kwiqreply for WhatsApp who want their agent to send interactive messages and sync data with UnleashX objects | ## 1. Overview Kwiqreply is a WhatsApp messaging gateway that lets businesses send rich, interactive WhatsApp messages — plain text, link previews, reply-button menus, and selectable lists — through a single API. Once connected to UnleashX, your agent can send all of those message types to your customers, and also read and write records in your **UnleashX datasource objects** — so a single request can both message a customer and log or update the related record. Connecting Kwiqreply to UnleashX is ideal for conversational workflows: present a customer with button or list choices over WhatsApp, then record their details or look up their status against your UnleashX data — all driven by natural language. ## 2. What you'll need * A **Kwiqreply** account with WhatsApp messaging enabled. * Your **Kwiqreply API token** (the bearer token used to authenticate with the Kwiqreply gateway). * An UnleashX account with the datasource **objects** you want to read from or write to (each has an `object_id`). If you don't have access to your company's Kwiqreply token, ask your Kwiqreply account admin to generate or share it. You won't be able to send messages without it. ## 3. Get your credentials Kwiqreply authenticates with a single **API token** (a bearer token). You'll get it from your Kwiqreply dashboard. Go to [app.kwiqreply.io](https://app.kwiqreply.io) and sign in to your account. In the dashboard, open the **API** / **Developers** / **Settings** area where your access token is shown. Copy the **API token** (used as `Authorization: Bearer ` for the messaging endpoint). Treat your Kwiqreply token like a password. If it is shown only once on generation, **copy it now** and store it somewhere safe — you may not be able to view it again. **Credentials UnleashX needs and why:** | Credential | Why UnleashX needs it | | ------------------------------ | -------------------------------------------------------------------------------------------------------- | | Kwiqreply API token (bearer) | Authenticates every WhatsApp send to the Kwiqreply gateway | | UnleashX object `object_id`(s) | Identifies which UnleashX datasource object to read or write (provided per request, not at connect time) | The datasource tools (Get List Data, Insert Datasource, Get Datasource, Update Datasource) read and write your UnleashX objects. These calls use UnleashX's own platform token — you don't supply a separate key for them. ## 4. Connect on UnleashX Sign in at [https://www.tryunleashx.com](https://www.tryunleashx.com) and open the agent you want to connect. Open **Data Connectors** inside the agent. Locate **Kwiqreply** and click **Connect** / **Add** / **Configure**. Enter your **Kwiqreply API token** from Section 3 and save. The connector shows a **Connected** badge once your token is accepted. You're ready to send. ### Use Kwiqreply in a Workflow Once connected, you can add **Kwiqreply** to any automation from the **Workflows** builder. Its triggers and tools appear in the Apps panel, marked with an **MCP** badge. Open **Workflows → New Workflow**. On the canvas, click **+ Add Trigger**. In the **Paths** panel, open the **Apps** tab and select **Kwiqreply** — its **Triggers** are listed underneath. Use the search box if you have many connectors. Kwiqreply triggers in the Apps panel Click the **+** below any node to add a step, then pick **Kwiqreply** again — this time the panel lists its **Actions**. Kwiqreply actions in the Apps panel Fill in the fields for the trigger or action you picked. Required fields are marked with a red asterisk (\*). Under **Selected account**, choose an already-connected account, or click **Add Account** to connect one now. Click **Save**. Use **Test** to verify the step, then toggle **Publish** when the workflow is ready. The steps are the same for every connector. For the full workflow builder guide, see [Using MCP in Workflows](/mcp/workflows). ## 5. Available tools | Tool | What it does | Changes data? | | -------------------------- | ---------------------------------------------------------------- | ------------- | | Get List Data | Fetch object data counts by conditions from UnleashX | No | | Insert Datasource | Insert a new datasource record into UnleashX | ✏️ Yes | | Get Datasource | Fetch datasource records from UnleashX by where-conditions | No | | Update Datasource | Update an existing UnleashX datasource record | ✏️ Yes | | Send Text Message | Send a plain WhatsApp text message via Kwiqreply | ✏️ Yes | | Send Text Message with URL | Send a WhatsApp text message with link preview enabled | ✏️ Yes | | Send Button Message | Send a WhatsApp interactive reply-button message (max 3 buttons) | ✏️ Yes | | Send List Message | Send a WhatsApp interactive list message with selectable rows | ✏️ Yes | ## 6. Example usage **"Ask 9876543210 over WhatsApp whether they want Plan A, Plan B, or Plan C, with tappable buttons."** Behind the scenes: Send Button Message (three reply buttons). **"Save this lead — name Priya, phone 98765 43210 — to our Leads object, then text her a welcome message."** Behind the scenes: Insert Datasource (write the record) → Send Text Message (welcome message). ## 7. Permissions & data access **UnleashX CAN:** * Send WhatsApp text, link-preview, reply-button, and interactive list messages via Kwiqreply. * Read counts and records from your UnleashX datasource objects. * Insert and update records in your UnleashX datasource objects. **UnleashX CANNOT:** * Delete records (no delete tool is exposed by this server). * Send message types beyond those listed (e.g. media/templates are not part of this connector). * Access Kwiqreply account settings or billing. **How to disconnect:** In UnleashX, open **Data Connectors → Kwiqreply → Disconnect**. To fully cut messaging access, also revoke or regenerate the API token in your Kwiqreply dashboard. Disconnecting takes effect immediately. ## 8. Troubleshooting | Problem | What it means | How to fix it | | ------------------------------------------- | --------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | | 401 — Missing Authorization | No Kwiqreply token was sent or it's blank | Reconnect and re-enter your Kwiqreply API token | | 401 / 403 from gateway | The token is invalid, expired, or revoked | Generate a fresh token in Kwiqreply and reconnect | | "At most 3 reply buttons" error | A button message included more than 3 buttons | Reduce to 3 or fewer buttons, or use Send List Message instead | | "At least one section/row is required" | A list message had no rows | Provide at least one section with at least one row | | Datasource call fails / UNLEASHX\_URL error | The UnleashX datasource endpoint isn't reachable or the object\_id is wrong | Verify the `object_id` exists; contact support if the platform endpoint is unavailable | For general connector issues, see [/mcp/integrations](/mcp/integrations). ## 9. Frequently asked questions **Can this connector delete records?** No. It can read (Get List Data, Get Datasource), insert (Insert Datasource), and update (Update Datasource) UnleashX records, but it exposes no delete operation. **What's the difference between text and list/button messages?** Text messages are plain (optionally with a link preview). Button messages show up to 3 tappable reply buttons; list messages show a menu of selectable rows grouped into sections — useful for letting customers pick an option. **How do I rotate my Kwiqreply token?** Generate a new token in your Kwiqreply dashboard, then reconnect in UnleashX with the new value. Revoke the old one in Kwiqreply. **Do the WhatsApp messages come from my own number?** Yes — they're sent through your Kwiqreply account, which is tied to your configured WhatsApp sender. ## 10. References * Kwiqreply: [https://app.kwiqreply.io](https://app.kwiqreply.io) * Kwiqreply website / docs: [https://kwiqreply.io](https://kwiqreply.io) * UnleashX dashboard: [https://www.tryunleashx.com](https://www.tryunleashx.com) # LinkedIn Source: https://docs.unleashx.ai/mcp/linkedin Let your UnleashX agent publish posts to LinkedIn on your behalf. # LinkedIn > **In one line:** Connect LinkedIn so your UnleashX agent can publish a post — announcement, update, thought piece — straight from a workflow. | | | | ------------------ | ------------------------------------------------------------------- | | **Category** | Social & Web | | **Authentication** | OAuth (LinkedIn sign-in) | | **Setup time** | \~3 minutes | | **Difficulty** | Easy | | **Best for** | Teams automating content distribution and announcements to LinkedIn | ## 1. Overview LinkedIn is the professional social network where most B2B announcements, hiring posts, and thought-leadership content land. Once connected to UnleashX, your agent can create a post on the connected account. It works against LinkedIn's API using your authorized sign-in, so the post appears exactly as if you'd published it yourself. Connecting LinkedIn to UnleashX means publishing becomes the last step in a workflow rather than a separate chore: draft a summary from a report, get it approved, and post it — without leaving the flow. Looking to manage **ad campaigns** rather than publish content? That's a different connector — see [LinkedIn Ads](/mcp/linkedin-ads). ## 2. What you'll need * A LinkedIn account (or a Company Page you administer, if posting as the organization). * Permission to authorize third-party apps on that account. * An UnleashX account with access to **Data Connectors**. Posts published through the API are **real, public posts**. Put an approval step in front of the publish node if a human should review the copy first — there's no draft state to fall back on. ## 3. Get your credentials LinkedIn uses **OAuth 2.0**. You do **not** create or paste an API key. UnleashX redirects you to LinkedIn, you sign in once, and LinkedIn issues an access token to UnleashX automatically. In your agent's **Data Connectors**, find **LinkedIn** and click **Connect** (see Section 4). Choose the account that should publish the posts. Click **Allow** to grant access and return to UnleashX. There is no key to copy. Access is granted by your LinkedIn sign-in and can be revoked anytime under **LinkedIn Settings → Data privacy → Permitted services**. **Scopes UnleashX requests for LinkedIn:** | Scope | Why UnleashX needs it | | ----------------- | ---------------------------------------------------------- | | `w_member_social` | Publish posts on behalf of the connected member. | | `openid` | Sign-in / identity verification. | | `profile` | Read your basic profile so posts are attributed correctly. | | `email` | Identify which account is connected. | LinkedIn access tokens expire on a fixed schedule (typically 60 days). If posting starts failing with a `401`, reconnect the connector. ## 4. Connect on UnleashX Sign in at [https://www.tryunleashx.com](https://www.tryunleashx.com) and open your agent. In the agent, open **Data Connectors**. Locate **LinkedIn** and click **Connect** / **Add** / **Configure**. Click **Authorize**, sign in to LinkedIn, and approve the requested permissions. You'll return to UnleashX and the connector status will show a **Connected** badge. ### Use LinkedIn in a Workflow Once connected, you can add **LinkedIn** to any automation from the **Workflows** builder. Its tools appear in the Apps panel, marked with an **MCP** badge. Open **Workflows → New Workflow**. On the canvas, click **+ Add Trigger**. In the **Paths** panel, open the **Apps** tab and select **LinkedIn** — its **Triggers** are listed underneath. Use the search box if you have many connectors. Click the **+** below any node to add a step, then pick **LinkedIn** again — this time the panel lists its **Actions**. LinkedIn actions in the Apps panel Fill in the fields for the trigger or action you picked. Required fields are marked with a red asterisk (\*). Under **Selected account**, choose an already-connected account, or click **Add Account** to connect one now. Click **Save**. Use **Test** to verify the step, then toggle **Publish** when the workflow is ready. The steps are the same for every connector. For the full workflow builder guide, see [Using MCP in Workflows](/mcp/workflows). ## 5. Available tools | Tool | What it does | Changes data? | | ----------- | ------------------------------------------------------ | ------------- | | Create Post | Publishes a post to LinkedIn on the connected account. | ✏️ Yes | ## 6. Example usage > **"Post this on LinkedIn: 'We just shipped v2 of our workflow builder — here's what changed…'"** > > Runs **Create Post**. > **"When a new case study is published on our blog, post the summary and link to LinkedIn."** > > A workflow chains the blog trigger into **Create Post**. ## 7. Permissions & data access **UnleashX can:** * Publish posts on the connected LinkedIn account. * Read your basic profile to attribute those posts. **UnleashX cannot:** * Read your feed, connections, or messages. * Comment on, like, or delete posts. * Manage LinkedIn ad campaigns — see [LinkedIn Ads](/mcp/linkedin-ads). * Change your LinkedIn account settings or password. **To disconnect:** In UnleashX, open **Data Connectors → LinkedIn → Disconnect**, or revoke under **LinkedIn Settings → Data privacy → Permitted services**. Revoking takes effect immediately. ## 8. Troubleshooting | Problem | What it means | How to fix it | | --------------------------- | ------------------------------------------------------------ | --------------------------------------------------- | | `401 Unauthorized` | The access token expired — LinkedIn tokens are time-limited. | Reconnect LinkedIn in **Data Connectors**. | | `403 Forbidden` | The `w_member_social` scope wasn't granted. | Re-authorize and approve all requested permissions. | | `422 Unprocessable Entity` | The post body was empty or exceeded the character limit. | Shorten the text and retry. | | **Duplicate post rejected** | LinkedIn blocks identical content posted back to back. | Vary the copy, or wait before re-posting. | | `429 Too Many Requests` | You hit LinkedIn's daily posting limit. | Slow down and retry the next day. | For general connector issues, see [/mcp/integrations](/mcp/integrations). ## 9. Frequently asked questions **Does UnleashX store my LinkedIn content?** No. Posts are published through LinkedIn's API per request; UnleashX doesn't keep a copy. **Can the agent post to a Company Page?** Only if the connected account administers that Page and the authorization covers it. Otherwise posts publish to the member profile. **Can the agent delete a post it published?** No. Delete it in LinkedIn directly. **Why did my connection stop working after a couple of months?** LinkedIn access tokens expire on a fixed schedule. Reconnect to issue a fresh one. ## 10. References * [LinkedIn Marketing API documentation](https://learn.microsoft.com/en-us/linkedin/marketing/) * [Share on LinkedIn API](https://learn.microsoft.com/en-us/linkedin/consumer/integrations/self-serve/share-on-linkedin) * [LinkedIn permitted services settings](https://www.linkedin.com/psettings/permitted-services) # LinkedIn Ads Source: https://docs.unleashx.ai/mcp/linkedin-ads Let your UnleashX agent manage LinkedIn ad accounts, campaign groups, campaigns, conversions, analytics, and reports. # LinkedIn Ads > **In one line:** Connect LinkedIn Ads so your UnleashX agent can manage ad accounts, campaign groups, and campaigns, send conversion events, and pull analytics and reports — all in plain language. | | | | ------------------ | --------------------------------------------------------------------------------------------------------------------- | | **Category** | Advertising & Analytics | | **Authentication** | OAuth (LinkedIn) | | **Setup time** | \~4 minutes | | **Difficulty** | Medium | | **Best for** | B2B marketing teams that want an AI agent to run LinkedIn Ads campaigns, track conversions, and report on performance | ## 1. Overview LinkedIn Ads is LinkedIn's advertising platform for the LinkedIn Marketing API. It organizes paid activity into ad accounts, campaign groups, and campaigns, and layers on conversion tracking, lead-gen forms, and analytics that measure how each campaign performs. Once connected to UnleashX, your agent can list the ad accounts you can access, browse campaign groups and campaigns, create and update campaigns, send conversion events, query campaign analytics, and generate performance reports. It works against your live LinkedIn advertiser account using your own LinkedIn sign-in, so it respects your role and access. Connecting LinkedIn Ads to UnleashX means you can manage paid activity and read results as you talk. Instead of opening Campaign Manager to launch a campaign or pull a report, you tell your agent and it makes the change or returns the numbers — cutting the clicks while keeping your account accurate. ## 2. What you'll need * A **LinkedIn Ads** (advertiser) account with at least one ad account you can manage. * **LinkedIn Marketing Developer Platform** access (advertiser access approved for the app used to authorize). * A user role with permission to create and edit campaigns and read reporting on the ad account. * Your account **currency** in mind — budgets and bids are set in the ad account's currency. * An UnleashX account with access to **Data Connectors**. No API key to paste. LinkedIn Ads uses OAuth — you click **Authorize** and sign in with LinkedIn. LinkedIn enforces your **advertiser role and Marketing API access**. If your LinkedIn user can't manage campaigns on the ad account — or the app lacks advertiser access — the agent can't either. Budgets and bids are set in the **ad account's currency**, so make sure you're using the right account before creating campaigns. ## 3. Get your credentials There's no key to copy. Authentication runs through LinkedIn's secure OAuth sign-in. Connecting LinkedIn Ads (Section 4) opens a LinkedIn **Allow access** window. Sign in with the LinkedIn account that has advertiser access to your ad account. Complete two-factor authentication if prompted. LinkedIn shows the access UnleashX is requesting (see the scopes table). Click **Allow**. If you can access several ad accounts, pick the one you want the agent to work with. UnleashX uses its ad account ID on every request. LinkedIn redirects you back automatically and the connector links to your advertiser account. UnleashX handles the OAuth token for you — you never paste or store it yourself. **Permissions (LinkedIn OAuth scopes) UnleashX requests:** | Scope | Why UnleashX needs it | | -------------------------------- | ----------------------------------------------------------------- | | `r_ads` | Read ad accounts, campaign groups, campaigns, and their settings. | | `rw_ads` | Create, update, and delete campaigns and campaign groups. | | `r_ads_reporting` | Read analytics and build performance reports. | | `rw_conversions` | Send conversion events for offline/online conversion tracking. | | `r_marketing_leadgen_automation` | Read lead-gen form responses and form events. | LinkedIn enforces the limits, not UnleashX. UnleashX requests only the access these tools need, and your LinkedIn advertiser role still governs what you can do on each ad account. ## 4. Connect on UnleashX Go to [https://www.tryunleashx.com](https://www.tryunleashx.com) and open the agent you want to connect. Inside the agent, go to **Data Connectors**. Locate **LinkedIn Ads** and click **Connect** (or **Add** / **Configure**). Click **Authorize**, sign in with LinkedIn, accept the access, and pick your ad account. You return to UnleashX and the LinkedIn Ads connector shows a **Connected** badge. ### Use LinkedIn Ads in a Workflow Once connected, you can add **LinkedIn Ads** to any automation from the **Workflows** builder. Its triggers and tools appear in the Apps panel, marked with an **MCP** badge. Open **Workflows → New Workflow**. On the canvas, click **+ Add Trigger**. In the **Paths** panel, open the **Apps** tab and select **LinkedIn Ads** — its **Triggers** are listed underneath. Use the search box if you have many connectors. Click the **+** below any node to add a step, then pick **LinkedIn Ads** again — this time the panel lists its **Actions**. Fill in the fields for the trigger or action you picked. Required fields are marked with a red asterisk (\*). Under **Selected account**, choose an already-connected account, or click **Add Account** to connect one now. Click **Save**. Use **Test** to verify the step, then toggle **Publish** when the workflow is ready. The steps are the same for every connector. For the full workflow builder guide, see [Using MCP in Workflows](/mcp/workflows). ## 5. Available tools | Tool | What it does | Changes data? | | -------------------------------------- | --------------------------------------------------------------- | ------------- | | List Ad Accounts | Lists the LinkedIn ad accounts you can access. | No | | List Campaign Groups | Lists campaign groups on an ad account. | No | | List Campaigns | Lists campaigns within an ad account or campaign group. | No | | Get Campaign | Retrieves a single campaign by ID. | No | | Create Campaign | Creates a new campaign. | ✏️ Yes | | Update Campaign | Updates an existing campaign (name, budget, status). | ✏️ Yes | | Delete Campaign | Deletes a specified campaign. | ⚠️ Yes | | Send Conversion Event | Sends a conversion event for conversion tracking. | ✏️ Yes | | Query Analytics Finder Campaign Sample | Queries campaign analytics for a sample of campaigns. | No | | Create Report | Generates a performance report. | No | | Create Report By Advertiser Account | Generates a performance report scoped to an advertiser account. | No | ### Available triggers | Trigger | Fires when | | --------------------------------------- | ---------------------------------------------------- | | On New Campaign | A new campaign is created on the ad account. | | On New Lead Gen Form Created | A new lead-gen form is created. | | On New Event Registration Form Response | Someone submits an event-registration form response. | ## 6. Example usage **"Create a new campaign in our 'Q3 Demand Gen' campaign group and set its daily budget."** → Runs List Campaign Groups to find the group, then Create Campaign in it with the budget set in the ad account's currency. **"How did last month's campaigns perform? Give me impressions, clicks, and spend."** → Runs Create Report (or Query Analytics Finder Campaign Sample) for the date range and returns the metrics. ## 7. Permissions & data access **UnleashX can:** * List ad accounts, campaign groups, and campaigns, and get individual campaigns. * Create and update campaigns. * Send conversion events and pull analytics and performance reports. * Delete campaigns where your role allows (this tool is clearly marked ⚠️). **UnleashX cannot:** * Do anything your LinkedIn advertiser role doesn't permit. * Act on ad accounts you can't access, or without Marketing API advertiser access. * Change your LinkedIn account password or account-wide security settings. **To disconnect:** In UnleashX, open **Data Connectors → LinkedIn Ads → Disconnect**. You can also revoke access in LinkedIn under **Settings & Privacy → Data privacy → Permitted services**. Disconnecting revokes access immediately. ## 8. Troubleshooting | Problem | What it means | How to fix it | | ----------------------------- | --------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | | **401 Unauthorized** | The LinkedIn token expired or is invalid. | Reconnect LinkedIn Ads in **Data Connectors** and sign in again. | | **403 Forbidden** | Your LinkedIn user lacks access to that ad account, or the app lacks advertiser access. | Ask the account admin for access, or confirm Marketing API access, then retry. | | **Wrong ad account** | The agent is acting on a different ad account. | Reconnect and select the correct ad account. | | **Empty report / no data** | The date range or campaign filter returned no rows. | Widen the date range or confirm the campaigns were active in that period. | | **Conversion event rejected** | The conversion or the event payload is invalid. | Confirm the conversion is set up in Campaign Manager and the event fields are correct. | | **Rate limit exceeded** | You hit the LinkedIn Marketing API rate limit. | Wait for the window to reset, then retry. | For general MCP issues, see [/mcp/integrations](/mcp/integrations). ## 9. Frequently asked questions **Do I need special LinkedIn access?** Yes. Managing ads through the API requires advertiser access via the LinkedIn Marketing Developer Platform. Without it, the connector can authorize but campaign and reporting calls will be denied. **What currency are budgets in?** Budgets and bids use the ad account's currency. Make sure you're working with the right ad account before creating or updating campaigns. **Can the agent capture leads?** It can read lead-gen form responses through the lead-gen triggers. Use **On New Lead Gen Form Created** and **On New Event Registration Form Response** to drive workflows from new forms and submissions. **Is my ad data stored by UnleashX?** No. UnleashX reads and writes through the LinkedIn Marketing API live per request; it doesn't keep a copy of your campaigns or reports. ## 10. References * LinkedIn Marketing API documentation: [https://learn.microsoft.com/en-us/linkedin/marketing/](https://learn.microsoft.com/en-us/linkedin/marketing/) * Campaigns & campaign groups: [https://learn.microsoft.com/en-us/linkedin/marketing/integrations/ads/account-structure/create-and-manage-campaigns](https://learn.microsoft.com/en-us/linkedin/marketing/integrations/ads/account-structure/create-and-manage-campaigns) * Ad analytics & reporting: [https://learn.microsoft.com/en-us/linkedin/marketing/integrations/ads-reporting/ads-reporting](https://learn.microsoft.com/en-us/linkedin/marketing/integrations/ads-reporting/ads-reporting) * Conversions API: [https://learn.microsoft.com/en-us/linkedin/marketing/integrations/ads/advertising-targeting/conversion-tracking](https://learn.microsoft.com/en-us/linkedin/marketing/integrations/ads/advertising-targeting/conversion-tracking) * Lead-gen forms: [https://learn.microsoft.com/en-us/linkedin/marketing/integrations/ads/lead-generation/leadsync-api](https://learn.microsoft.com/en-us/linkedin/marketing/integrations/ads/lead-generation/leadsync-api) # MailChimp Source: https://docs.unleashx.ai/mcp/mailchimp Let your UnleashX agent manage Mailchimp audiences, members, and campaigns in plain language. # MailChimp > **In one line:** Connect Mailchimp so your UnleashX agent can add and update subscribers, look people up, clean your audience, and check what campaigns are running — without opening the dashboard. | | | | ------------------ | -------------------------------------------------------------------------------------- | | **Category** | CRM & Marketing | | **Authentication** | API key | | **Setup time** | \~2 minutes | | **Difficulty** | Easy | | **Best for** | Marketing teams that want subscriber management handled automatically as leads come in | ## 1. Overview Mailchimp is an email marketing platform. Your contacts live in **audiences** (Mailchimp's name for lists), and campaigns are sent to those audiences or to segments within them. Once connected to UnleashX, your agent can list your audiences, list and look up members, add new members, update existing ones, remove members, and list the campaigns in your account. It works against your live Mailchimp account using your API key, so it respects your plan's contact limits. Connecting Mailchimp to UnleashX means list hygiene stops being manual: a form comes in and the subscriber is added with the right tags, a customer churns and their status is updated — all as part of the workflow that already handles the event. ## 2. What you'll need * A Mailchimp account. * An **API key** from your Mailchimp account settings (see Section 3). * An UnleashX account with access to **Data Connectors**. You paste an **API key**. UnleashX sends it to the Mailchimp API as an authorization credential on every request. The key ends in a data-center suffix (like `-us21`) that tells the API which server your account lives on — keep it intact when copying. Adding a member with a `subscribed` status treats them as opted in. Only do that for people who actually consented — GDPR, CAN-SPAM, and Mailchimp's own terms all apply to you, not to the connector. ## 3. Get your credentials Mailchimp authenticates with an **API key** — a single secret string you generate once in your account settings and paste into UnleashX. There's no OAuth flow and nothing to install. Go to [mailchimp.com](https://login.mailchimp.com/) and sign in. If you don't have an account yet, sign up first. Click your **profile avatar** in the bottom-left corner, then choose **Account & billing**. From the account menu, open **Extras → API keys**. Any keys you've already created are listed here. Click **Create A Key**. Give it a name that tells you where it's used — for example **UnleashX**. The name is only a label for you; it doesn't affect what the key can do. A clear name matters later, when you need to know which key to revoke. Mailchimp displays the key so you can copy it. Copy it right away — including the `-usXX` suffix — and paste it somewhere safe (a password manager, or straight into the UnleashX connector). Head to **Data Connectors → MailChimp** in UnleashX and paste the key (full walkthrough in Section 4). UnleashX validates it immediately, so you'll know right away if it was copied correctly. ### Good to know Use a **separate key per integration**. A dedicated key can be revoked on its own if it leaks, without breaking every other tool that uses your Mailchimp account. A Mailchimp API key grants **full access to your account** through the API — there are no per-key scopes. Treat it like a password: * Never commit it to git, paste it in a ticket, or share it in chat. * Use a separate key per integration so you can revoke one without disrupting the rest. * If it's ever exposed, disable it under **Extras → API keys** and create a replacement — revoking is instant. ### Permissions this key grants UnleashX | Access | Why UnleashX needs it | | -------------- | ----------------------------------------------- | | Read audiences | List the audiences (lists) in your account. | | Read members | List audience members and look one up by email. | | Manage members | Add, update, and remove audience members. | | Read campaigns | List the campaigns in your account. | ## 4. Connect on UnleashX Go to [https://www.tryunleashx.com](https://www.tryunleashx.com) and open the agent you want to connect. Inside the agent, go to **Data Connectors**. Locate **MailChimp** and click **Connect** (or **Add** / **Configure**). Paste your **API key** and click **Connect**. UnleashX validates the key and the MailChimp connector shows a **Connected** badge. ### Use MailChimp in a Workflow Once connected, you can add **MailChimp** to any automation from the **Workflows** builder. Its tools appear in the Apps panel, marked with an **MCP** badge. Open **Workflows → New Workflow**. On the canvas, click **+ Add Trigger**. In the **Paths** panel, open the **Apps** tab and select **MailChimp** — its **Triggers** are listed underneath. Use the search box if you have many connectors. MailChimp triggers in the Apps panel Click the **+** below any node to add a step, then pick **MailChimp** again — this time the panel lists its **Actions**. MailChimp actions in the Apps panel Fill in the fields for the trigger or action you picked. Required fields are marked with a red asterisk (\*). Under **Selected account**, choose an already-connected account, or click **Add Account** to connect one now. Click **Save**. Use **Test** to verify the step, then toggle **Publish** when the workflow is ready. The steps are the same for every connector. For the full workflow builder guide, see [Using MCP in Workflows](/mcp/workflows). ## 5. Available tools | Tool | What it does | Changes data? | | -------------- | ----------------------------------------------------- | ------------- | | List Audiences | Lists the audiences (lists) in the Mailchimp account. | No | | List Members | Lists the members of a Mailchimp audience. | No | | Get Member | Gets a single audience member by email. | No | | Add Member | Adds a new member to a Mailchimp audience. | ✏️ Yes | | Update Member | Updates an existing audience member. | ✏️ Yes | | Delete Member | Removes a member from a Mailchimp audience. | ⚠️ Yes | | List Campaigns | Lists the campaigns in the Mailchimp account. | No | Most member tools need an **audience ID**. Run **List Audiences** first to get it, then pass it into the member step. ## 6. Example usage > **"Add [jane@acme.com](mailto:jane@acme.com) to the Newsletter audience as subscribed, with first name Jane."** > > Runs **List Audiences** to resolve the ID, then **Add Member**. > **"Is [bob@globex.com](mailto:bob@globex.com) on any of our lists, and what's his status?"** > > Runs **Get Member** against the relevant audience. ## 7. Permissions & data access **UnleashX can:** * Read your audiences, members, and campaigns. * Add, update, and remove audience members. **UnleashX cannot:** * Create, edit, or send campaigns. * Exceed your Mailchimp plan's contact or sending limits. * Change your Mailchimp account settings or billing. **To disconnect:** In UnleashX, open **Data Connectors → MailChimp → Disconnect**. Then disable the key under **Extras → API keys** in Mailchimp. Disconnecting and revoking removes access immediately. ## 8. Troubleshooting | Problem | What it means | How to fix it | | ------------------------------------ | ---------------------------------------------------- | ------------------------------------------------------------------- | | `401 Unauthorized` | The API key is invalid or was disabled. | Create a new key and reconnect. | | **"Wrong datacenter"** | The `-usXX` suffix was dropped when copying the key. | Re-copy the full key including the suffix. | | `400 Member Exists` | You tried to add someone already in that audience. | Use **Update Member** instead of **Add Member**. | | `404 Resource Not Found` | The audience ID or member email is wrong. | Run **List Audiences** to confirm the ID; check the email spelling. | | **"Forgotten email not subscribed"** | The contact previously unsubscribed or was deleted. | They must re-subscribe themselves — you can't re-add them via API. | | `429 Too Many Requests` | You hit the API rate limit. | Slow down requests and retry after a short wait. | For general connector issues, see [/mcp/integrations](/mcp/integrations). ## 9. Frequently asked questions **Does UnleashX store my subscriber data?** No. It reads and writes your records live through the Mailchimp API per request; it doesn't keep a copy. **Can the agent send a campaign?** No. These tools cover audiences and members, plus listing campaigns. Sending still happens in Mailchimp. **What's the difference between an audience and a list?** They're the same thing — Mailchimp renamed lists to audiences, and the API still calls them lists. **Why can't I re-add someone who unsubscribed?** Mailchimp blocks it deliberately. An unsubscribed or "forgotten" contact has to opt back in themselves. ## 10. References * [Mailchimp Marketing API documentation](https://mailchimp.com/developer/marketing/api/) * [Mailchimp API keys guide](https://mailchimp.com/help/about-api-keys/) * [Mailchimp dashboard](https://login.mailchimp.com/) # Microsoft Excel Source: https://docs.unleashx.ai/mcp/microsoft-excel Let your UnleashX agent read and write data in your Excel workbooks stored in OneDrive or SharePoint. # Microsoft Excel > **In one line:** Connect Microsoft Excel so your UnleashX agent can read cell ranges, add and update rows, work with tables, and manage worksheets in your online workbooks — all in plain language. | | | | ------------------ | ------------------------------------------------------------------------------------------------------------------- | | **Category** | Productivity & Scheduling | | **Authentication** | OAuth (Microsoft 365 / Microsoft Graph) | | **Setup time** | \~3 minutes | | **Difficulty** | Easy | | **Best for** | Teams that keep data in Excel workbooks on OneDrive/SharePoint and want an AI agent to read and update those sheets | ## 1. Overview Microsoft Excel is the spreadsheet app in Microsoft 365. When your workbooks live in OneDrive or SharePoint, they can be read and edited through the Microsoft Graph API — the same data your team sees in Excel Online. Once connected to UnleashX, your agent can open a workbook, read a range or table, add and update rows, write values into cells, and add or list worksheets. You stay in control — the agent acts on your real files using your own Microsoft sign-in. Connecting Excel to UnleashX turns your spreadsheets into a live data store your agent can read and update. Instead of opening a workbook to log a row or check a value, you tell your agent and it makes the change. ## 2. What you'll need * A Microsoft account (personal `@outlook.com`, or a Microsoft 365 work/school account) with Excel workbooks stored in **OneDrive** or **SharePoint**. * Permission to view and edit those workbooks. For work accounts, your organization must allow third-party apps via Microsoft Graph. * An UnleashX account with access to **Data Connectors**. You do **not** need to create or paste an API key. Excel uses OAuth — you click **Authorize** and sign in with Microsoft. Only workbooks stored **online** (OneDrive/SharePoint) are accessible via the API. Files that live only on your local computer can't be reached. ## 3. Get your credentials There's nothing to copy and paste. Authentication runs through Microsoft's secure OAuth sign-in. Connecting Excel (Section 4) opens a Microsoft **Authorize** window. Enter your Microsoft / Microsoft 365 email and password at `https://login.microsoftonline.com`. Complete multi-factor authentication if prompted. Microsoft shows exactly what UnleashX is asking for (see the scopes table). Click **Accept**. Microsoft redirects you back automatically and the connector links to your files. Behind the scenes UnleashX calls Microsoft Graph with a `Bearer` token — you never handle the token yourself. If you use a **work or school** account, your IT administrator may need to approve UnleashX (admin consent) before the connection succeeds. If you see a "need admin approval" screen, contact your Microsoft 365 admin. **Permissions (Microsoft Graph scopes) UnleashX requests:** | Scope | Why UnleashX needs it | | --------------------- | --------------------------------------------------------------------- | | `Files.ReadWrite` | Read and write the Excel workbooks in your OneDrive/SharePoint. | | `Sites.ReadWrite.All` | Access workbooks stored in SharePoint sites (work/school). | | `User.Read` | Read your basic profile to identify the connected account. | | `offline_access` | Refresh access automatically so you don't re-authorize every session. | ## 4. Connect on UnleashX Go to [https://www.tryunleashx.com](https://www.tryunleashx.com) and open the agent you want to connect. Inside the agent, go to **Data Connectors**. Locate **Microsoft Excel** and click **Connect** (or **Add** / **Configure**). Click **Authorize**, sign in with Microsoft, and accept the scopes. You return to UnleashX and the Microsoft Excel connector shows a **Connected** badge. ### Use Microsoft Excel in a Workflow Once connected, you can add **Microsoft Excel** to any automation from the **Workflows** builder. Its triggers and tools appear in the Apps panel, marked with an **MCP** badge. Open **Workflows → New Workflow**. On the canvas, click **+ Add Trigger**. In the **Paths** panel, open the **Apps** tab and select **Microsoft Excel** — its **Triggers** are listed underneath. Use the search box if you have many connectors. Click the **+** below any node to add a step, then pick **Microsoft Excel** again — this time the panel lists its **Actions**. Fill in the fields for the trigger or action you picked. Required fields are marked with a red asterisk (\*). Under **Selected account**, choose an already-connected account, or click **Add Account** to connect one now. Click **Save**. Use **Test** to verify the step, then toggle **Publish** when the workflow is ready. The steps are the same for every connector. For the full workflow builder guide, see [Using MCP in Workflows](/mcp/workflows). ## 5. Available tools | Tool | What it does | Changes data? | | ---------------- | -------------------------------------------------- | ------------- | | List Workbooks | Lists your Excel workbooks in OneDrive/SharePoint. | No | | List Worksheets | Lists the worksheets in a workbook. | No | | Get Range | Reads the values of a cell range. | No | | Get Used Range | Reads the used (populated) range of a worksheet. | No | | Update Range | Writes values into a cell range. | ✏️ Yes | | Add Worksheet | Adds a new worksheet to a workbook. | ✏️ Yes | | Delete Worksheet | Deletes a worksheet. | ⚠️ Yes | | List Tables | Lists tables defined in a workbook. | No | | Get Table Rows | Reads rows from a table. | No | | Add Table Row | Appends a row to a table. | ✏️ Yes | | Update Table Row | Updates a row in a table. | ✏️ Yes | | Delete Table Row | Deletes a row from a table. | ⚠️ Yes | | Create Table | Creates a table from a range. | ✏️ Yes | | Clear Range | Clears the contents of a range. | ✏️ Yes | ## 6. Example usage **"Add a row to the Leads table in the Sales workbook: Jordan Lee, Acme Corp, [jordan@acme.com](mailto:jordan@acme.com)."** → Runs Add Table Row on the Leads table with the three values. **"What's the total in column C of the Budget sheet? Read the used range and sum it."** → Runs Get Used Range on the Budget worksheet, then sums column C from the returned values. ## 7. Permissions & data access **UnleashX can:** * List your online workbooks and their worksheets and tables. * Read cell ranges, used ranges, and table rows. * Write and clear ranges, add/update/delete table rows, and add worksheets. * Delete worksheets and rows where you allow it (marked ⚠️). **UnleashX cannot:** * Access workbooks stored only on your local device. * Reach files your Microsoft account can't open. * Change Microsoft 365 admin or account settings. **To disconnect:** In UnleashX, open **Data Connectors → Microsoft Excel → Disconnect**. You can also revoke access at `https://myaccount.microsoft.com/` under **Privacy / Apps**. Disconnecting revokes access immediately. ## 8. Troubleshooting | Problem | What it means | How to fix it | | -------------------------------- | ------------------------------------------------- | ---------------------------------------------------- | | **Need admin approval** | A work/school account requires admin consent. | Ask your Microsoft 365 admin to approve UnleashX. | | **401 Unauthorized** | The Microsoft token expired or was revoked. | Reconnect Microsoft Excel and sign in again. | | **404 Item not found** | The workbook or worksheet name is wrong or moved. | Have the agent list workbooks/worksheets to find it. | | **File is checked out / locked** | Someone has the file open exclusively. | Close the file elsewhere and retry. | | **Range/table not found** | The named range or table doesn't exist. | Verify the table/worksheet name in Excel. | For general MCP issues, see [/mcp/integrations](/mcp/integrations). ## 9. Frequently asked questions **Does this work with local Excel files?** No. Only workbooks stored in OneDrive or SharePoint are reachable through the API. **Is my spreadsheet data stored by UnleashX?** No. UnleashX reads and writes live through Microsoft Graph per request; it doesn't keep a copy of your files. **Can the agent delete data?** Yes — tools marked ⚠️ (delete worksheet/row) make permanent changes. They only work if your account can edit the file. Use them deliberately. **Does it work with both personal and work accounts?** Yes — personal `@outlook.com` and Microsoft 365 work/school accounts both work, though work accounts may need admin consent. ## 10. References * Excel REST API (Microsoft Graph): [https://learn.microsoft.com/en-us/graph/api/resources/excel](https://learn.microsoft.com/en-us/graph/api/resources/excel) * Working with Excel in Microsoft Graph: [https://learn.microsoft.com/en-us/graph/excel-concept-overview](https://learn.microsoft.com/en-us/graph/excel-concept-overview) * Microsoft Graph permissions reference: [https://learn.microsoft.com/en-us/graph/permissions-reference](https://learn.microsoft.com/en-us/graph/permissions-reference) * Manage app access: [https://myaccount.microsoft.com/](https://myaccount.microsoft.com/) # Microsoft Word Source: https://docs.unleashx.ai/mcp/microsoft-word Let your UnleashX agent create, read, update, and manage Word documents stored in OneDrive or SharePoint. # Microsoft Word > **In one line:** Connect Microsoft Word so your UnleashX agent can list, read, create, update, and delete Word documents in your OneDrive or SharePoint — all in plain language. | | | | ------------------ | -------------------------------------------------------------------------------------------------------------------- | | **Category** | Productivity & Scheduling | | **Authentication** | OAuth (Microsoft 365 / Microsoft Graph) | | **Setup time** | \~3 minutes | | **Difficulty** | Easy | | **Best for** | Teams that keep documents in Word on OneDrive/SharePoint and want an AI agent to draft, read, and update those files | ## 1. Overview Microsoft Word is the document app in Microsoft 365. When your documents live in OneDrive or SharePoint, they can be read and managed through the Microsoft Graph API — the same files your team sees in Word Online. Once connected to UnleashX, your agent can list your documents, read a document's content, create a new document, update an existing one, and delete a document. You stay in control — the agent acts on your real files using your own Microsoft sign-in. Connecting Word to UnleashX turns your documents into something you can draft and manage by talking. Instead of opening Word to write up a note or pull a paragraph, you tell your agent and it creates, reads, or updates the file for you. ## 2. What you'll need * A Microsoft account (personal `@outlook.com`, or a Microsoft 365 work/school account) with Word documents stored in **OneDrive** or **SharePoint**. * Permission to view and edit those documents. For work accounts, your organization must allow third-party apps via Microsoft Graph. * An UnleashX account with access to **Data Connectors**. You do **not** need to create or paste an API key. Word uses OAuth — you click **Authorize** and sign in with Microsoft. Only documents stored **online** (OneDrive/SharePoint) are accessible via the API. Files that live only on your local computer can't be reached. ## 3. Get your credentials There's nothing to copy and paste. Authentication runs through Microsoft's secure OAuth sign-in. Connecting Word (Section 4) opens a Microsoft **Authorize** window. Enter your Microsoft / Microsoft 365 email and password at `https://login.microsoftonline.com`. Complete multi-factor authentication if prompted. Microsoft shows exactly what UnleashX is asking for (see the scopes table). Click **Accept**. Microsoft redirects you back automatically and the connector links to your files. Behind the scenes UnleashX calls Microsoft Graph with a `Bearer` token — you never handle the token yourself. If you use a **work or school** account, your IT administrator may need to approve UnleashX (admin consent) before the connection succeeds. If you see a "need admin approval" screen, contact your Microsoft 365 admin. **Permissions (Microsoft Graph scopes) UnleashX requests:** | Scope | Why UnleashX needs it | | --------------------- | -------------------------------------------------------------------------------- | | `Files.ReadWrite` | Read, create, update, and delete the Word documents in your OneDrive/SharePoint. | | `Sites.ReadWrite.All` | Access documents stored in SharePoint sites (work/school). | | `User.Read` | Read your basic profile to identify the connected account. | | `offline_access` | Refresh access automatically so you don't re-authorize every session. | ## 4. Connect on UnleashX Go to [https://www.tryunleashx.com](https://www.tryunleashx.com) and open the agent you want to connect. Inside the agent, go to **Data Connectors**. Locate **Microsoft Word** and click **Connect** (or **Add** / **Configure**). Click **Authorize**, sign in with Microsoft, and accept the scopes. You return to UnleashX and the Microsoft Word connector shows a **Connected** badge. ### Use Microsoft Word in a Workflow Once connected, you can add **Microsoft Word** to any automation from the **Workflows** builder. Its triggers and tools appear in the Apps panel, marked with an **MCP** badge. Open **Workflows → New Workflow**. On the canvas, click **+ Add Trigger**. In the **Paths** panel, open the **Apps** tab and select **Microsoft Word** — its **Triggers** are listed underneath. Use the search box if you have many connectors. Click the **+** below any node to add a step, then pick **Microsoft Word** again — this time the panel lists its **Actions**. Fill in the fields for the trigger or action you picked. Required fields are marked with a red asterisk (\*). Under **Selected account**, choose an already-connected account, or click **Add Account** to connect one now. Click **Save**. Use **Test** to verify the step, then toggle **Publish** when the workflow is ready. The steps are the same for every connector. For the full workflow builder guide, see [Using MCP in Workflows](/mcp/workflows). ## 5. Available tools | Tool | What it does | Changes data? | | -------------------- | ----------------------------------------------------------- | ------------- | | List Documents | Lists your Word documents in OneDrive/SharePoint. | No | | Get Document | Retrieves a document's metadata by ID. | No | | Get Document Content | Reads the text/content of a document. | No | | Create Document | Creates a new document by uploading its file content. | ✏️ Yes | | Update Document | Updates an existing document by uploading new file content. | ✏️ Yes | | Delete Document | Deletes a document. | ⚠️ Yes | Documents are created and updated by uploading file content — the agent builds the document body and writes it to the file, replacing the existing content on an update. ### Available triggers | Trigger | Fires when | | --------------- | --------------------------------------------------------- | | On New Document | A new Word document is added to your OneDrive/SharePoint. | ## 6. Example usage **"Draft a one-page project kickoff note and save it as 'Kickoff — Acme' in my OneDrive."** → Runs Create Document to write the note into a new Word file in OneDrive. **"Read the latest contract draft and summarize the key terms."** → Runs List Documents to find the draft, then Get Document Content to read it and summarize the terms. ## 7. Permissions & data access **UnleashX can:** * List your online Word documents and read their content and metadata. * Create new documents by uploading file content. * Update existing documents with new content. * Delete documents where you allow it (marked ⚠️). **UnleashX cannot:** * Access documents stored only on your local device. * Reach files your Microsoft account can't open. * Change Microsoft 365 admin or account settings. **To disconnect:** In UnleashX, open **Data Connectors → Microsoft Word → Disconnect**. You can also revoke access at `https://myaccount.microsoft.com/` under **Privacy / Apps**. Disconnecting revokes access immediately. ## 8. Troubleshooting | Problem | What it means | How to fix it | | -------------------------------- | ----------------------------------------------------- | ------------------------------------------------- | | **Need admin approval** | A work/school account requires admin consent. | Ask your Microsoft 365 admin to approve UnleashX. | | **401 Unauthorized** | The Microsoft token expired or was revoked. | Reconnect Microsoft Word and sign in again. | | **404 Item not found** | The document name is wrong or the file was moved. | Have the agent list documents to find it. | | **File is checked out / locked** | Someone has the file open exclusively. | Close the file elsewhere and retry. | | **403 Forbidden** | Your account can't edit that file or SharePoint site. | Ask the owner for edit access, then retry. | For general MCP issues, see [/mcp/integrations](/mcp/integrations). ## 9. Frequently asked questions **Does this work with local Word files?** No. Only documents stored in OneDrive or SharePoint are reachable through the API. **Is my document content stored by UnleashX?** No. UnleashX reads and writes live through Microsoft Graph per request; it doesn't keep a copy of your files. **Can the agent delete documents?** Yes — the Delete Document tool (marked ⚠️) makes permanent changes. It only works if your account can edit the file. Use it deliberately. **Does it work with both personal and work accounts?** Yes — personal `@outlook.com` and Microsoft 365 work/school accounts both work, though work accounts may need admin consent. ## 10. References * Word / files in Microsoft Graph: [https://learn.microsoft.com/en-us/graph/api/resources/driveitem](https://learn.microsoft.com/en-us/graph/api/resources/driveitem) * Working with files in Microsoft Graph: [https://learn.microsoft.com/en-us/graph/api/resources/onedrive](https://learn.microsoft.com/en-us/graph/api/resources/onedrive) * Microsoft Graph permissions reference: [https://learn.microsoft.com/en-us/graph/permissions-reference](https://learn.microsoft.com/en-us/graph/permissions-reference) * Manage app access: [https://myaccount.microsoft.com/](https://myaccount.microsoft.com/) # monday.com Source: https://docs.unleashx.ai/mcp/monday Let your UnleashX agent read and manage boards, items, columns, and updates in monday.com. # monday.com > **In one line:** Connect monday.com so your UnleashX agent can create and update items, read and set column values, move work across groups, and post updates — all in plain language. | | | | ------------------ | -------------------------------------------------------------------------------------------------------------------- | | **Category** | Productivity & Scheduling | | **Authentication** | API token | | **Setup time** | \~2 minutes | | **Difficulty** | Easy | | **Best for** | Teams that run work in monday.com and want an AI agent to create items, update statuses, and post updates hands-free | ## 1. Overview monday.com is a Work OS where teams manage projects on visual boards. Each board holds items (rows), organized into groups, with columns for status, dates, people, and more — plus updates (the comment thread on each item). Once connected to UnleashX, your agent can list your boards, create and update items, read and set column values, move items between groups, and post updates. It works against your live monday.com account using an API token, so it acts with your own permissions. Connecting monday.com to UnleashX means your boards keep themselves current as you talk. Instead of opening monday to add an item or change a status, you tell your agent and it makes the change. ## 2. What you'll need * A monday.com account with access to the boards you want the agent to manage. * Your **API token** (see Section 3). * An UnleashX account with access to **Data Connectors**. You paste an **API token**. UnleashX sends it to the monday.com GraphQL API in the `Authorization` header. Your token acts with **your monday.com permissions**. The agent can only see and edit boards your account has access to. ## 3. Get your credentials monday.com MCP authenticates with your **personal API token** — a GraphQL API token tied to your monday.com user. As monday.com puts it on the page itself: *"This GraphQL API token belongs only to you. It grants access to every query and mutation you're allowed to perform."* You don't create it — monday.com has already generated one for you. You just copy it. ### Step-by-step Sign in with the account whose permissions you want the agent to act with. The token inherits that user's board access exactly. Click your **avatar** in the top-right and choose **Developers**. The **monday Developer Center** opens in a new tab. The left sidebar lists **My apps** at the top, then **API playground**, **API token**, and **API analytics**. Click **API token**. The API token page in the monday.com Developer Center Your token sits in the field in the middle of the page, masked by default. Three controls sit to its right: * **Show** — reveals the token so you can read it. * **Copy** — copies the full value to your clipboard (use this one). * **Regenerate** — replaces the token. **Don't click this** unless you intend to invalidate the current one. Click **Copy**. Head to **Data Connectors → monday.com** in UnleashX and paste the token (full walkthrough in Section 4). UnleashX validates it on save, so a bad paste shows up right away. ### Good to know **Your token doesn't expire and can be viewed again any time.** Unlike connectors that reveal a secret only once, monday.com keeps your token on this page permanently — so if you lose it, come back to **Developer Center → API token** and hit **Copy** again. **"Regenerate" replaces your existing token.** It issues a new token and **immediately invalidates the old one**. Only use it if your token has leaked. Everything already using the old token — UnleashX, scripts, other integrations — will start returning `401 Unauthorized` until you update each one with the new value. As monday.com notes on this page: *always keep this token secret and secure.* It grants **every query and mutation your user can perform** — anyone holding it can read and modify every board, item, and update you can reach. Never commit it to git or share it in chat. Because the token carries your individual permissions, the agent sees exactly the boards you see. For a shared or automated setup, consider creating a dedicated monday.com user invited only to the boards the agent should touch, and connect with that user's token instead of your own. The **"Get more than a token, bring your agent"** panel lower on the page is monday.com's own agent platform — separate from the UnleashX connector. You don't need it here; the API token above is all UnleashX requires. ### Permissions this token grants UnleashX | Access | Why UnleashX needs it | | ------------ | ------------------------------------------------ | | Read boards | List boards, groups, columns, and items. | | Write items | Create and update items and their column values. | | Post updates | Add updates (comments) to items. | | Read users | Resolve people/assignees on items. | ## 4. Connect on UnleashX Go to [https://www.tryunleashx.com](https://www.tryunleashx.com) and open the agent you want to connect. Inside the agent, go to **Data Connectors**. Locate **monday.com** and click **Connect** (or **Add** / **Configure**). Paste your **API token** and click **Connect**. UnleashX validates the token and the monday.com connector shows a **Connected** badge. ### Use monday.com in a Workflow Once connected, you can add **monday.com** to any automation from the **Workflows** builder. Its triggers and tools appear in the Apps panel, marked with an **MCP** badge. Open **Workflows → New Workflow**. On the canvas, click **+ Add Trigger**. In the **Paths** panel, open the **Apps** tab and select **monday.com** — its **Triggers** are listed underneath. Use the search box if you have many connectors. monday.com triggers in the Apps panel Click the **+** below any node to add a step, then pick **monday.com** again — this time the panel lists its **Actions**. monday.com actions in the Apps panel Fill in the fields for the trigger or action you picked. Required fields are marked with a red asterisk (\*). Under **Selected account**, choose an already-connected account, or click **Add Account** to connect one now. Click **Save**. Use **Test** to verify the step, then toggle **Publish** when the workflow is ready. The steps are the same for every connector. For the full workflow builder guide, see [Using MCP in Workflows](/mcp/workflows). ## 5. Available tools | Tool | What it does | Changes data? | | ---------------------- | ------------------------------------------------ | ------------- | | List Boards | Lists boards in your account. | No | | Get Board | Retrieves a board's structure (groups, columns). | No | | List Items | Lists items on a board. | No | | Get Item | Retrieves a single item and its column values. | No | | Create Item | Creates a new item on a board. | ✏️ Yes | | Update Item | Updates an item's column values. | ✏️ Yes | | Change Column Value | Sets a specific column value on an item. | ✏️ Yes | | Move Item to Group | Moves an item to another group. | ✏️ Yes | | Delete Item | Deletes an item. | ⚠️ Yes | | Create Group | Creates a new group on a board. | ✏️ Yes | | List Columns | Lists a board's columns. | No | | Create Update | Posts an update (comment) on an item. | ✏️ Yes | | List Updates | Lists updates on an item. | No | | Search Items by Column | Finds items by a column value. | No | | List Users | Lists users in your account. | No | | Create Board | Creates a new board. | ✏️ Yes | ## 6. Example usage **"Add an item 'Renew SSL cert' to the DevOps board, set status to Working on it, and assign it to me."** → Runs Create Item on the board, then Change Column Value for status and person. **"Which items on the Sales board are stuck? Post an update on each asking for a status."** → Runs List Items (filtering by status), then Create Update on each matching item. ## 7. Permissions & data access **UnleashX can:** * List and read boards, groups, columns, items, and updates. * Create and update items, set column values, and move items. * Post updates and create groups/boards. * Delete items where your permissions allow (marked ⚠️). **UnleashX cannot:** * Access boards your account can't see. * Change monday.com admin, billing, or account settings. **To disconnect:** In UnleashX, open **Data Connectors → monday.com → Disconnect**. You can regenerate your API token in the Developers area to invalidate the old one. Disconnecting removes access immediately. ## 8. Troubleshooting | Problem | What it means | How to fix it | | ------------------------------- | ----------------------------------------------------- | --------------------------------------------------------------------- | | **401 Unauthorized** | The token is invalid or was regenerated. | Copy the current token from **Developers → API token** and reconnect. | | **Complexity budget exhausted** | The GraphQL query exceeded monday's complexity limit. | Narrow the request (fewer items/columns at once). | | **403 / no permission** | Your account can't access that board or action. | Get added to the board, or pick one you can access. | | **404 Not found** | The board/item ID is wrong or was deleted. | Have the agent list boards/items to find the correct ID. | For general MCP issues, see [/mcp/integrations](/mcp/integrations). ## 9. Frequently asked questions **Is my monday.com data stored by UnleashX?** No. UnleashX reads and writes live through the monday.com API per request; it doesn't keep a copy. **Can the agent delete items?** Yes — tools marked ⚠️ make permanent changes and only work if your permissions allow it. Use them deliberately. **Can multiple team members connect monday.com?** Yes. Each person uses their own API token, so the agent acts with that user's access. ## 10. References * monday.com API documentation: [https://developer.monday.com/api-reference/docs](https://developer.monday.com/api-reference/docs) * Get your API token: [https://developer.monday.com/api-reference/docs/authentication](https://developer.monday.com/api-reference/docs/authentication) * Rate limits & complexity: [https://developer.monday.com/api-reference/docs/rate-limits](https://developer.monday.com/api-reference/docs/rate-limits) # Nano Banana Source: https://docs.unleashx.ai/mcp/nano-banana Generate and edit images from a text prompt with Google's Nano Banana model. # Nano Banana > **In one line:** Let your UnleashX agent create images from a written description — or edit an existing image by describing the change. | | | | ------------------ | ------------------------------------------------------------------------- | | **Category** | AI & Media | | **Authentication** | Platform-managed | | **Setup time** | \~1 minute | | **Difficulty** | Easy | | **Best for** | Marketing visuals, product mockups, and social assets generated on demand | ## 1. Overview Nano Banana is Google's advanced image generation and editing model, available through the Gemini API. Describe what you want and it produces the image; supply an existing image with an instruction and it edits that image instead of starting over. Once connected, your agent can generate an image from a prompt and return a ready-to-use image URL. Generated images are saved to UnleashX media storage, so the link works in downstream steps — attach it to an email, post it, or drop it into a document. Connecting Nano Banana to UnleashX means visuals stop being a bottleneck: a campaign brief becomes a hero image, a product description becomes a mockup, without a designer in the loop for every draft. ## 2. What you'll need Nano Banana is **built into UnleashX**. There is no Google Cloud or Gemini account for you to create and no API key for you to manage. * An active UnleashX account. * The image-generation feature enabled on your workspace/plan. * A clear text prompt (and, for editing, a source image by URL, path, or base64). * Permission to edit the agent (admin or editor role). Without it, ask a workspace admin to enable the feature. ## 3. Get your credentials There are **no credentials to create**. Nano Banana is platform-managed — UnleashX provisions and rotates the underlying Google Gemini key and handles media storage. You never see or handle an API key. If you are a workspace admin, the only optional platform-side configuration is the model version and the default image size. UnleashX sets sensible defaults; most teams never change them. | Platform-managed setting | Plain-English reason it exists | | --------------------------------- | ------------------------------------------------------------------------------ | | Model version | Controls the quality and capabilities of generated images. | | Default image size / aspect ratio | Sets the default shape of generated images. | | Gemini API key & media storage | Provisioned and rotated by UnleashX so images generate and save automatically. | ## 4. Connect on UnleashX Go to [https://www.tryunleashx.com](https://www.tryunleashx.com) and open the agent that should generate images. In the agent, click **Data Connectors**. Locate **Nano Banana** and click **Connect** / **Add**. It's platform-managed — no key to paste, it activates immediately. The Nano Banana tool should now show a **Connected** badge. ### Use Nano Banana in a Workflow Once connected, you can add **Nano Banana** to any automation from the **Workflows** builder. Its tools appear in the Apps panel, marked with an **MCP** badge. Open **Workflows → New Workflow**. On the canvas, click **+ Add Trigger**. In the **Paths** panel, open the **Apps** tab and select **Nano Banana** — its **Triggers** are listed underneath. Use the search box if you have many connectors. Click the **+** below any node to add a step, then pick **Nano Banana** again — this time the panel lists its **Actions**. Nano Banana actions in the Apps panel Fill in the fields for the trigger or action you picked. Required fields are marked with a red asterisk (\*). Under **Selected account**, choose an already-connected account, or click **Add Account** to connect one now. Click **Save**. Use **Test** to verify the step, then toggle **Publish** when the workflow is ready. The steps are the same for every connector. For the full workflow builder guide, see [Using MCP in Workflows](/mcp/workflows). ## 5. Available tools | Tool | What it does | Changes data? | | ------------ | ------------------------------------------------------------------------------------- | ------------- | | Create Image | Generates an image from a text prompt, or edits a supplied image from an instruction. | ✏️ Yes | **Create Image** is marked ✏️ Yes because it creates a new image file and saves it to UnleashX media storage. It does not modify or delete any existing data — editing a source image produces a new file rather than overwriting the original. ## 6. Example usage > **"Generate a product shot of a matte black water bottle on a marble counter, soft daylight."** > > Runs **Create Image** and returns an image URL. > **"Take this logo and put it on a dark background with a subtle glow."** > > Runs **Create Image** with the source image and an edit instruction. ## 7. Permissions & data access **UnleashX can:** * Send your prompt (and optional source image) to the model and generate an image. * Save the generated image to UnleashX media storage and return a link. **UnleashX cannot:** * Generate images from content you don't provide. * Edit or delete images you created elsewhere. * Access your device or cloud storage on its own. **To disconnect:** Open the agent → **Data Connectors** → **Nano Banana** → **Disconnect**. Access is revoked immediately. ## 8. Troubleshooting | Problem | What it means | How to fix it | | --------------------------------- | --------------------------------------------------- | -------------------------------------------------------------------- | | "prompt is required" | No text prompt was supplied. | Provide a descriptive prompt. | | **No image returned** | Safety filtering, model rejection, or quota limits. | Adjust the prompt; if it persists, contact support. | | **Edit ignored the source image** | The image wasn't passed in a supported form. | Supply the image by URL, path, or base64. | | `401` / credential error | The platform-managed Gemini key is unavailable. | Platform-side — contact **[cs@unleashx.ai](mailto:cs@unleashx.ai)**. | | `403` / feature not enabled | Image generation isn't enabled on your plan. | Ask a workspace admin or contact support. | For general connector issues, see [/mcp/integrations](/mcp/integrations). ## 9. Frequently asked questions **Is my prompt or source image stored?** The generated image is saved to UnleashX media storage so you can access it. Your input image is used to produce the result and is not retained as part of the integration. **Do I need a Google or Gemini account?** No. Nano Banana is platform-managed — UnleashX provides and rotates the underlying key. **Can it edit an existing image, or only create new ones?** Both. Supply a source image with an instruction and it edits that image; supply only a prompt and it generates from scratch. **How is this different from the [Image](/mcp/image) connector?** Nano Banana is a specific Google model exposed as its own connector. Pick whichever produces the style you want. ## 10. References * [Google Gemini image generation docs](https://ai.google.dev/gemini-api/docs/image-generation) * [UnleashX dashboard](https://www.tryunleashx.com) * UnleashX integrations help: [/mcp/integrations](/mcp/integrations) # Notion Source: https://docs.unleashx.ai/mcp/notion Let your UnleashX agent read and manage pages, databases, blocks, and comments in your Notion workspace. # Notion > **In one line:** Connect Notion so your UnleashX agent can search and read pages, create and update content, query databases, add comments, and keep your workspace organized — all in plain language. | | | | ------------------ | ----------------------------------------------------------------------------------------------------------------------- | | **Category** | Productivity & Scheduling | | **Authentication** | OAuth (Notion) | | **Setup time** | \~3 minutes | | **Difficulty** | Easy | | **Best for** | Teams that run their notes, docs, and databases in Notion and want an AI agent to read, create, and update that content | ## 1. Overview Notion is a connected workspace for notes, docs, wikis, and databases. It holds your pages, the databases that organize them, the blocks of content inside each page, and the comments your team leaves along the way. Once connected to UnleashX, your agent can search for pages, read a page or an individual block, create and update pages, query and manage database items, and add comments. It works against your live Notion workspace using your own Notion sign-in, so it respects the pages and databases you've shared with the connection. Connecting Notion to UnleashX turns your workspace into something you can ask questions of and update by talking. Instead of opening Notion to jot a page, log a database row, or leave a comment, you tell your agent and it makes the change — while keeping everything in sync. ## 2. What you'll need * A Notion account with a workspace you can access. * Permission to view and edit the pages and databases you want the agent to work with. * The pages or databases you want the agent to reach **shared with** the Notion connection during authorization. * An UnleashX account with access to **Data Connectors**. No API key to paste. Notion uses OAuth — you click **Authorize** and sign in with Notion, then choose which pages and databases to grant access to. Notion only exposes the pages and databases you **explicitly share** with the connection. If the agent can't find a page, it's usually because that page (or its parent) wasn't shared during authorization — reconnect and add it. ## 3. Get your credentials There's no key to copy. Authentication runs through Notion's secure OAuth sign-in. Connecting Notion (Section 4) opens a Notion **Authorize** window. Sign in with your Notion account at `https://www.notion.so/login`. Complete two-factor authentication if prompted. If you belong to more than one Notion workspace, pick the one you want the agent to work with. Notion asks which pages and databases to give access to. Select the pages (and their subpages) the agent should be able to read and edit. You can broaden or narrow this later by reconnecting. Notion shows the access UnleashX is requesting (see the scopes table). Click **Allow access**. Notion redirects you back automatically and the connector links to your workspace. Behind the scenes UnleashX calls Notion with a `Bearer` token — you never handle the token yourself. **Permissions (Notion OAuth access) UnleashX requests:** | Access | Why UnleashX needs it | | --------------- | ---------------------------------------------------------------------- | | Read content | Search, read pages, blocks, page properties, and databases you shared. | | Insert content | Create pages, add content to pages, and create database items. | | Update content | Update pages and database items. | | Read comments | Read comments on shared pages. | | Insert comments | Add new comments to pages. | Notion access is scoped to the pages and databases you selected during authorization — not your whole workspace. Notion, not UnleashX, enforces those limits. ## 4. Connect on UnleashX Go to [https://www.tryunleashx.com](https://www.tryunleashx.com) and open the agent you want to connect. Inside the agent, go to **Data Connectors**. Locate **Notion** and click **Connect** (or **Add** / **Configure**). Click **Authorize**, sign in with Notion, choose the pages and databases to share, and accept the access. You return to UnleashX and the Notion connector shows a **Connected** badge. ### Use Notion in a Workflow Once connected, you can add **Notion** to any automation from the **Workflows** builder. Its triggers and tools appear in the Apps panel, marked with an **MCP** badge. Open **Workflows → New Workflow**. On the canvas, click **+ Add Trigger**. In the **Paths** panel, open the **Apps** tab and select **Notion** — its **Triggers** are listed underneath. Use the search box if you have many connectors. Click the **+** below any node to add a step, then pick **Notion** again — this time the panel lists its **Actions**. Fill in the fields for the trigger or action you picked. Required fields are marked with a red asterisk (\*). Under **Selected account**, choose an already-connected account, or click **Add Account** to connect one now. Click **Save**. Use **Test** to verify the step, then toggle **Publish** when the workflow is ready. The steps are the same for every connector. For the full workflow builder guide, see [Using MCP in Workflows](/mcp/workflows). ## 5. Available tools | Tool | What it does | Changes data? | | ---------------------- | ----------------------------------------------- | ------------- | | Search Pages | Searches your shared pages by title or content. | No | | Get Page | Retrieves a single page by ID. | No | | Create Page | Creates a new page. | ✏️ Yes | | Update Page | Updates an existing page's properties. | ✏️ Yes | | Delete Page | Archives (deletes) a page. | ⚠️ Yes | | Get Database | Retrieves a database's structure and metadata. | No | | Query Database | Queries a database with filters and sorts. | No | | Retrieve Block | Retrieves a single content block. | No | | Retrieve Page Property | Reads a specific property value from a page. | No | | Duplicate Page | Creates a copy of an existing page. | ✏️ Yes | | Create Comment | Adds a comment to a page. | ✏️ Yes | | Add Content To Page | Appends new content blocks to a page. | ✏️ Yes | | Create Database Item | Creates a new item (row) in a database. | ✏️ Yes | | Update Database Item | Updates an item (row) in a database. | ✏️ Yes | | Find Database Item | Finds an item in a database by its values. | No | ### Available triggers | Trigger | Fires when | | ---------------------------------- | ---------------------------------------------- | | On New Page | A new page is created in the shared workspace. | | On Page Or Subpage Updated | A page or any of its subpages is updated. | | On New Or Updated Page In Database | A page in a database is created or updated. | | On Updated Database Item | An existing database item is updated. | | On New Comment Created | A new comment is added to a page. | | On New Database | A new database is created. | | On New Database Item | A new item is added to a database. | | On Updated Page | An existing page is updated. | ## 6. Example usage **"Add a row to the Roadmap database: title 'Q3 launch', status In Progress, owner Priya."** → Runs Create Database Item on the Roadmap database with the title, status, and owner values. **"Find the meeting notes page from yesterday and add a comment asking for the action items."** → Runs Search Pages to locate the notes page, then Create Comment to post the question on it. ## 7. Permissions & data access **UnleashX can:** * Search and read pages, blocks, page properties, and databases you shared. * Create and update pages, add content, and duplicate pages. * Create, update, and find items in databases. * Read and add comments on shared pages. **UnleashX cannot:** * Access pages or databases you didn't share during authorization. * Reach content in a different Notion workspace than the one you connected. * Change your Notion account, billing, or workspace-wide settings. **To disconnect:** In UnleashX, open **Data Connectors → Notion → Disconnect**. You can also revoke access in Notion under **Settings → Connections** (or **My connections**). Disconnecting revokes access immediately. ## 8. Troubleshooting | Problem | What it means | How to fix it | | ---------------------------- | --------------------------------------------------------- | ------------------------------------------------------------------- | | **401 Unauthorized** | The Notion token expired or was revoked. | Reconnect Notion in **Data Connectors** and sign in again. | | **Page not found** | The page wasn't shared with the connection, or was moved. | Reconnect and add the page (or its parent) to the shared selection. | | **Insufficient permissions** | The connection can read but not edit that page. | Grant edit access to the page in Notion, then retry. | | **Wrong workspace** | The agent is acting on a different Notion workspace. | Reconnect and select the correct workspace. | | **Rate limit exceeded** | Too many requests hit Notion's API limit. | Wait a moment and retry; avoid very broad searches. | For general MCP issues, see [/mcp/integrations](/mcp/integrations). ## 9. Frequently asked questions **Is my Notion content stored by UnleashX?** No. UnleashX reads and writes your pages live through the Notion API per request; it doesn't keep a copy of your workspace. **Why can't the agent see a page I know exists?** Notion only exposes pages you explicitly shared with the connection. Reconnect and add that page (or its parent) to the shared selection. **Can the agent really delete pages?** Deleting a page archives it (the Delete Page tool is marked ⚠️). Archived pages can be restored from Notion's trash, but treat the action deliberately. **Which workspace does the agent use?** The one you selected when connecting. To switch workspaces, reconnect and choose a different one. ## 10. References * Notion API documentation: [https://developers.notion.com/](https://developers.notion.com/) * Notion API reference: [https://developers.notion.com/reference/intro](https://developers.notion.com/reference/intro) * Authorization (OAuth): [https://developers.notion.com/docs/authorization](https://developers.notion.com/docs/authorization) * Manage connections: [https://www.notion.so/help/add-and-manage-connections-with-the-api](https://www.notion.so/help/add-and-manage-connections-with-the-api) # OCR Source: https://docs.unleashx.ai/mcp/ocr Pull text out of images, scans, and photos straight into your agent. # OCR > **In one line:** Let your UnleashX agent read text from images, screenshots, business cards, and scanned documents. | | | | ------------------ | --------------------------------------------------------------------------------- | | **Category** | AI & Media | | **Authentication** | Platform-managed | | **Setup time** | \~1 minute | | **Difficulty** | Easy | | **Best for** | Reading documents, business cards, receipts, and screenshots inside an agent flow | ## 1. Overview OCR (Optical Character Recognition) turns pictures of text into actual, usable text. Point it at a photo of a receipt, a scanned contract, or a screenshot and it returns the words it finds — preserving structure, line breaks, and tables as much as possible. Once connected, your agent can read text from a URL, a local file, or a base64 image, batch-process a whole folder of images, and even return word-level positions and confidence scores when you need structured output. It runs OpenAI Vision under the hood, so it is multilingual by default. Connecting OCR to UnleashX means your voice and automation agents can act on what they "see" — extracting a phone number from a business card, reading an invoice total, or capturing a form field — without any manual data entry. ## 2. What you'll need OCR is **built into UnleashX**. There is no third-party account to create and no API key for you to manage. * An active UnleashX account. * The OCR feature enabled on your workspace/plan. * Permission to edit the agent you want to add OCR to (admin or editor role). If you don't have that access, ask a workspace admin to enable it for you. ## 3. Get your credentials There are **no credentials to create**. OCR is a platform-managed integration — UnleashX provisions and rotates the underlying OpenAI Vision keys for you. You never see or handle an API key. If you are a workspace admin, the only optional platform-side configuration is the vision model used for extraction (UnleashX sets a sensible default, e.g. a GPT-4o-class vision model). Most teams never need to change this. | Platform-managed setting | Plain-English reason it exists | | ------------------------ | ---------------------------------------------------------------------------- | | Vision model | Controls quality/speed of text extraction. UnleashX picks a good default. | | API key | Provisioned and rotated by UnleashX so every agent can read images securely. | ## 4. Connect on UnleashX Go to [https://www.tryunleashx.com](https://www.tryunleashx.com) and open the agent you want to give OCR to. In the agent, click **Data Connectors**. Locate **OCR** in the list and click **Connect** / **Add**. Because it's platform-managed, there is no key to paste — it activates immediately. The OCR tool should now show a **Connected** badge. Your agent can start reading images right away. ### Use OCR in a Workflow Once connected, you can add **OCR** to any automation from the **Workflows** builder. Its triggers and tools appear in the Apps panel, marked with an **MCP** badge. Open **Workflows → New Workflow**. On the canvas, click **+ Add Trigger**. In the **Paths** panel, open the **Apps** tab and select **OCR** — its **Triggers** are listed underneath. Use the search box if you have many connectors. Click the **+** below any node to add a step, then pick **OCR** again — this time the panel lists its **Actions**. Fill in the fields for the trigger or action you picked. Required fields are marked with a red asterisk (\*). Under **Selected account**, choose an already-connected account, or click **Add Account** to connect one now. Click **Save**. Use **Test** to verify the step, then toggle **Publish** when the workflow is ready. The steps are the same for every connector. For the full workflow builder guide, see [Using MCP in Workflows](/mcp/workflows). ## 5. Available tools | Tool | What it does | Changes data? | | ------------------- | ------------------------------------------------------------------------ | ------------- | | Extract Text | Extract plain text from an image given by path, URL, or base64 | No | | From URL | Download an image from a URL and extract its text | No | | From File | Extract text from a local image file | No | | Extract With Boxes | Extract text plus bounding boxes and confidence details | No | | Batch Extract | Extract text from every image in a directory | No | | Supported Languages | List the languages OCR can read | No | | Get Info | Report OCR server status and configuration | No | | Preprocess Image | Clean up an image (resize, grayscale, threshold, blur) before extraction | No | Every OCR tool is read-only — it reads pixels and returns text. **Preprocess Image** writes a temporary working file but does not modify your original image or any stored data. ## 6. Example usage **"Read this business card and pull out the name, company, and phone number."** → Runs **From URL** (or **Extract Text**) to extract the text, then the agent parses the fields. **"Go through every receipt image in this folder and give me the totals."** → Runs **Batch Extract** across the directory and the agent reads each total from the returned text. ## 7. Permissions & data access **UnleashX can:** * Read images you provide (by URL, file path, or base64) and return the extracted text. * Optionally return word positions and confidence scores. * Temporarily process images in memory or in a short-lived temp file. **UnleashX cannot:** * Edit, delete, or store your original images permanently. * Access images you don't explicitly pass to a tool. * Browse your device or cloud storage on its own. **To disconnect:** Open the agent → **Data Connectors** → **OCR** → **Disconnect**. Access is revoked immediately. ## 8. Troubleshooting | Problem | What it means | How to fix it | | ------------------------------- | ------------------------------------------------- | -------------------------------------------------------------------------------- | | "Could not load image from URL" | The URL isn't a direct image link or isn't public | Use a direct `.jpg`/`.png` URL that's publicly reachable | | 401 / credential error | The platform-managed vision key is unavailable | This is on UnleashX's side — contact **[cs@unleashx.ai](mailto:cs@unleashx.ai)** | | 403 / feature not enabled | OCR isn't enabled on your plan | Ask a workspace admin or contact support to enable it | | Empty or partial text | Image is low-resolution, blurry, or rotated | Run **Preprocess Image** first, or supply a clearer image | | "Pillow is required" | An image library is missing on the server | Platform-side issue — contact support | For general connector issues, see [/mcp/integrations](/mcp/integrations). ## 9. Frequently asked questions **Is my image data stored?** No. Images are processed to extract text and are not retained as part of the integration. Any temp files created during preprocessing are cleaned up automatically. **Do I need an OpenAI account or key?** No. OCR is platform-managed — UnleashX provides and rotates the underlying vision keys. **Which languages are supported?** Many, automatically. Call **Supported Languages** for the current list (English, Spanish, French, German, Chinese, Japanese, Arabic, Hindi, and more). **Can multiple team members use it?** Yes. Once enabled on the workspace, anyone with access to the agent can use OCR. ## 10. References * OpenAI Vision (text from images) overview: [https://platform.openai.com/docs/guides/vision](https://platform.openai.com/docs/guides/vision) * UnleashX dashboard: [https://www.tryunleashx.com](https://www.tryunleashx.com) * UnleashX integrations help: [/mcp/integrations](/mcp/integrations) # Outlook Source: https://docs.unleashx.ai/mcp/outlook Let your UnleashX agent read, send, organize, and triage your Outlook email and contacts. # Outlook > **In one line:** Connect your Microsoft Outlook mailbox so your UnleashX agent can send and reply to email, draft messages, organize your inbox, and manage contacts — on your behalf. | | | | ------------------ | ---------------------------------------------------------------------------------------------------- | | **Category** | Communication | | **Authentication** | OAuth (Microsoft 365 / Microsoft Graph) | | **Setup time** | \~2 minutes | | **Difficulty** | Easy | | **Best for** | Teams that live in Outlook and want an AI agent to handle email triage, replies, and contact lookups | ## 1. Overview Outlook is Microsoft's email and contacts service, part of Microsoft 365. It holds your mailbox, folders, categories, and your personal address book — and it's where a huge amount of day-to-day work happens. Once connected to UnleashX, your agent can do the things you'd normally do by hand: find a specific email, send a new message, reply in a thread, save a draft for you to review, move messages into folders, mark them as read, and look up or update contacts. You stay in control — the agent acts on your real mailbox using your own Microsoft sign-in. Connecting Outlook to UnleashX turns email from a chore into a conversation. Instead of digging through your inbox, you can ask your agent to "reply to the last email from Priya confirming Tuesday" or "draft a follow-up to everyone who didn't respond," and it handles the Outlook side for you. ## 2. What you'll need * A Microsoft account with an Outlook mailbox (personal `@outlook.com`/`@hotmail.com`, or a Microsoft 365 / Exchange Online work or school account). * Permission to use that mailbox — for work accounts, your organization must allow third-party apps to connect via Microsoft Graph. * An UnleashX account with access to **Data Connectors**. You do **not** need to create or paste an API key. Outlook uses OAuth — you simply click **Authorize** and sign in with Microsoft. If you use a **work or school** Microsoft 365 account, your IT administrator may need to approve UnleashX (admin consent) before the connection succeeds. If sign-in shows a "need admin approval" screen, contact your Microsoft 365 admin. ## 3. Get your credentials There's nothing to copy and paste. Outlook authentication is handled entirely through Microsoft's secure OAuth sign-in. When you connect Outlook (see Section 4), UnleashX opens a Microsoft **Authorize** window. Enter your Outlook / Microsoft 365 email and password at `https://login.microsoftonline.com` (Microsoft's official sign-in). Complete multi-factor authentication if prompted. Microsoft shows exactly what UnleashX is asking for (see the scopes table below). Click **Accept** to grant access. Microsoft redirects you back automatically and the connector is now linked to your mailbox. **Permissions (Microsoft Graph scopes) UnleashX requests:** | Scope | Why UnleashX needs it | | ---------------------- | ---------------------------------------------------------------------------------------------- | | `Mail.ReadWrite` | Read your emails, and create/update drafts, mark messages read, and move them between folders. | | `Mail.Send` | Send new emails and replies on your behalf. | | `MailboxSettings.Read` | Read mailbox settings such as folders and categories (labels). | | `Contacts.ReadWrite` | List, find, create, and update contacts in your address book. | | `User.Read` | Identify the signed-in account (your name and email) so messages are sent from you. | | `offline_access` | Keep the connection alive by refreshing access without making you sign in again each time. | These are standard Microsoft Graph delegated scopes. Microsoft, not UnleashX, enforces them — UnleashX can never do more than the scopes you approve. ## 4. Connect on UnleashX Go to [https://www.tryunleashx.com](https://www.tryunleashx.com) and open the agent you want to give Outlook access to. In the agent, go to **Data Connectors**. Locate **Outlook** in the list and click **Connect** (or **Add** / **Configure**). Click **Authorize**. Sign in with your Microsoft account and accept the permissions. You're returned to UnleashX and the Outlook connector shows a **Connected** badge. ### Use Outlook in a Workflow Once connected, you can add **Outlook** to any automation from the **Workflows** builder. Its triggers and tools appear in the Apps panel, marked with an **MCP** badge. Open **Workflows → New Workflow**. On the canvas, click **+ Add Trigger**. In the **Paths** panel, open the **Apps** tab and select **Outlook** — its **Triggers** are listed underneath. Use the search box if you have many connectors. Click the **+** below any node to add a step, then pick **Outlook** again — this time the panel lists its **Actions**. Outlook actions in the Apps panel Fill in the fields for the trigger or action you picked. Required fields are marked with a red asterisk (\*). Under **Selected account**, choose an already-connected account, or click **Add Account** to connect one now. Click **Save**. Use **Test** to verify the step, then toggle **Publish** when the workflow is ready. The steps are the same for every connector. For the full workflow builder guide, see [Using MCP in Workflows](/mcp/workflows). ## 5. Available tools | Tool | What it does | Changes data? | | ----------------------- | ----------------------------------------------------------------------------------------- | ------------- | | Send Email | Sends a new email to one or more recipients. | ✏️ Yes | | Send Reply | Replies to an existing email thread. | ✏️ Yes | | Draft Email | Creates a draft email saved in your Drafts folder. | ✏️ Yes | | Create Draft Email | Creates a draft email (with full recipient/subject/body fields) for later review or send. | ✏️ Yes | | Find Email | Searches your mailbox for a specific email. | No | | Move Message | Moves a message to another folder. | ✏️ Yes | | Move Email to Folder | Moves an email into a named folder (e.g. Archive). | ✏️ Yes | | Mark Email Read | Marks an email as read (or unread). | ✏️ Yes | | Add Label to Email | Adds an Outlook category (label) to an email. | ✏️ Yes | | Remove Label from Email | Removes an Outlook category (label) from an email. | ⚠️ Yes | | List Labels | Lists all your Outlook categories (labels). | No | | List Folders | Lists your mailbox folders. | No | | List Emails | Lists emails from your inbox or a chosen folder. | No | | List Contacts | Lists contacts from your address book. | No | | Find Contacts | Searches your contacts by name or email. | No | | Create Contact | Creates a new contact. | ✏️ Yes | | Update Contact | Updates an existing contact's details. | ✏️ Yes | ## 6. Example usage **"Reply to the latest email from the finance team and let them know the invoice is approved."** → Runs Find Email (or List Emails) to locate the thread, then Send Reply to send your response. **"Draft a welcome email to our new vendor contact, and add them to my contacts."** → Runs Create Contact to save the vendor, then Create Draft Email so you can review the message before it goes out. ## 7. Permissions & data access **UnleashX can:** * Read, search, and list emails in your mailbox and folders. * Send new emails and replies as you. * Create drafts, move messages, mark them read/unread, and add or remove categories (labels). * List, find, create, and update contacts. **UnleashX cannot:** * Permanently delete your emails (it can move and recategorize them, but the tool set doesn't expose a hard-delete). * Access other Microsoft 365 services (Teams, SharePoint, OneDrive) — only Outlook mail and contacts within the scopes you approved. * Change your Microsoft password or account security settings. **To disconnect:** In UnleashX, open **Data Connectors → Outlook → Disconnect**. You can also revoke access anytime at `https://account.microsoft.com/privacy/app-access` (or, for work accounts, via your organization's My Apps portal). Disconnecting revokes access immediately. ## 8. Troubleshooting | Problem | What it means | How to fix it | | ------------------------------------ | --------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------ | | **401 Unauthorized** | Your Microsoft sign-in expired or the token is invalid. | Reconnect Outlook in **Data Connectors** and sign in with Microsoft again. | | **403 Forbidden** | A required Graph permission wasn't granted, or your org blocked it. | Reconnect and accept all permissions; for work accounts ask your Microsoft 365 admin to grant admin consent. | | **"Need admin approval"** | Your organization requires admin consent for third-party apps. | Send the consent request to your Microsoft 365 administrator to approve UnleashX. | | **Email not found** | The message moved, was deleted, or your search terms were too narrow. | Ask the agent to list recent emails or broaden the search. | | **Send failed / recipient rejected** | An invalid recipient address or an org mail policy blocked it. | Verify the recipient address and check your organization's mail rules. | For general MCP issues, see [/mcp/integrations](/mcp/integrations). ## 9. Frequently asked questions **Is my email data stored by UnleashX?** No. UnleashX accesses your mailbox live through Microsoft Graph to perform each request. It doesn't keep a copy of your inbox. **Can multiple team members connect their own Outlook?** Yes. Each person authorizes their own Microsoft account, so the agent acts on each user's own mailbox with their own permissions. **Do I ever need to re-authenticate?** Usually not — `offline_access` keeps the connection refreshed. If Microsoft revokes the session (password change, MFA reset, or admin policy), just reconnect. **Can the agent send email as someone else?** No. It can only send as the account you signed in with. ## 10. References * Microsoft Graph mail overview: [https://learn.microsoft.com/en-us/graph/api/resources/mail-api-overview](https://learn.microsoft.com/en-us/graph/api/resources/mail-api-overview) * Microsoft Graph permissions reference: [https://learn.microsoft.com/en-us/graph/permissions-reference](https://learn.microsoft.com/en-us/graph/permissions-reference) * Manage app access / revoke (personal): [https://account.microsoft.com/privacy/app-access](https://account.microsoft.com/privacy/app-access) * Microsoft sign-in: [https://login.microsoftonline.com](https://login.microsoftonline.com) # Outlook Calendar Source: https://docs.unleashx.ai/mcp/outlook-calendar Let your UnleashX agent view, create, update, and manage events across your Outlook calendars. # Outlook Calendar > **In one line:** Connect your Microsoft Outlook calendar so your UnleashX agent can check availability, schedule meetings, update or cancel events, and manage multiple calendars for you. | | | | ------------------ | ------------------------------------------------------------------------------------------------------------------- | | **Category** | Productivity | | **Authentication** | OAuth (Microsoft 365 / Microsoft Graph) | | **Setup time** | \~2 minutes | | **Difficulty** | Easy | | **Best for** | Anyone who wants an AI agent to book meetings, manage their schedule, and keep multiple Outlook calendars organized | ## 1. Overview Outlook Calendar is Microsoft's scheduling service inside Microsoft 365. It holds your meetings, appointments, and reminders across one or more calendars, and it's tightly tied to your Outlook mailbox. Once connected to UnleashX, your agent can look up what's on your schedule, find a free slot, create a new event with attendees, reschedule or update meetings, and cancel events you no longer need. It can also work across multiple calendars — for example a personal calendar and a shared team calendar. Connecting Outlook Calendar to UnleashX means scheduling happens in plain language. Instead of clicking through the calendar grid, you can ask "set up a 30-minute call with Sam on Thursday afternoon" and the agent finds the time and creates the event. ## 2. What you'll need * A Microsoft account with Outlook Calendar (personal `@outlook.com`/`@hotmail.com`, or a Microsoft 365 / Exchange Online work or school account). * Permission to use that calendar — for work accounts, your organization must allow third-party apps via Microsoft Graph. * An UnleashX account with access to **Data Connectors**. No API key required. Outlook Calendar uses OAuth — you click **Authorize** and sign in with Microsoft. On a **work or school** Microsoft 365 account, your IT administrator may need to grant admin consent before UnleashX can connect. If you see a "need admin approval" message, contact your Microsoft 365 admin. ## 3. Get your credentials There's no key to copy. Authentication runs through Microsoft's secure OAuth sign-in. Connecting Outlook Calendar (Section 4) opens a Microsoft **Authorize** window. Sign in with your Microsoft 365 / Outlook account at `https://login.microsoftonline.com` and complete MFA if prompted. Microsoft displays exactly what UnleashX requests (see the scopes table). Click **Accept**. You're redirected back automatically and the calendar is connected. **Permissions (Microsoft Graph scopes) UnleashX requests:** | Scope | Why UnleashX needs it | | --------------------- | -------------------------------------------------------------------------- | | `Calendars.ReadWrite` | View your events and create, update, or delete them across your calendars. | | `Calendars.Read` | Read calendar details and check availability when only reading is needed. | | `User.Read` | Identify the signed-in account so events are created as you. | | `offline_access` | Keep the connection active by refreshing access without repeated sign-ins. | These are standard Microsoft Graph delegated scopes, enforced by Microsoft. UnleashX can never exceed the access you approve. ## 4. Connect on UnleashX Go to [https://www.tryunleashx.com](https://www.tryunleashx.com) and open the agent you want to connect. Inside the agent, go to **Data Connectors**. Locate **Outlook Calendar** and click **Connect** (or **Add** / **Configure**). Click **Authorize**, sign in with Microsoft, and accept the permissions. You return to UnleashX and the connector shows a **Connected** badge. ### Use Outlook Calendar in a Workflow Once connected, you can add **Outlook Calendar** to any automation from the **Workflows** builder. Its triggers and tools appear in the Apps panel, marked with an **MCP** badge. Open **Workflows → New Workflow**. On the canvas, click **+ Add Trigger**. In the **Paths** panel, open the **Apps** tab and select **Outlook Calendar** — its **Triggers** are listed underneath. Use the search box if you have many connectors. Click the **+** below any node to add a step, then pick **Outlook Calendar** again — this time the panel lists its **Actions**. Outlook Calendar actions in the Apps panel Fill in the fields for the trigger or action you picked. Required fields are marked with a red asterisk (\*). Under **Selected account**, choose an already-connected account, or click **Add Account** to connect one now. Click **Save**. Use **Test** to verify the step, then toggle **Publish** when the workflow is ready. The steps are the same for every connector. For the full workflow builder guide, see [Using MCP in Workflows](/mcp/workflows). ## 5. Available tools | Tool | What it does | Changes data? | | --------------- | --------------------------------------------------------- | ------------- | | Search Events | Searches your calendars for matching events. | No | | Get Event | Retrieves the details of a single event. | No | | Create Event | Creates a new calendar event, optionally with attendees. | ✏️ Yes | | Update Event | Updates an existing event (time, title, attendees, etc.). | ✏️ Yes | | Delete Event | Deletes / cancels a calendar event. | ⚠️ Yes | | List Events | Lists events within a date range. | No | | List Calendars | Lists all calendars on the account. | No | | Get Calendar | Retrieves details of a specific calendar. | No | | Create Calendar | Creates a new calendar. | ✏️ Yes | | Update Calendar | Updates a calendar's name or settings. | ✏️ Yes | | Delete Calendar | Deletes a calendar. | ⚠️ Yes | ## 6. Example usage **"What's on my calendar tomorrow, and book a 1:1 with Alex at the first free hour?"** → Runs List Events to read tomorrow's schedule, then Create Event to book the 1:1. **"Move my 3pm design review to Friday and add Maria as an attendee."** → Runs Search Events to find the meeting, then Update Event to reschedule and add the attendee. ## 7. Permissions & data access **UnleashX can:** * Read, search, and list events across your calendars. * Create, update, and delete events. * List, create, update, and delete calendars on your account. **UnleashX cannot:** * Access your email, contacts, or other Microsoft 365 services — only calendar data within the approved scopes. * Read calendars that haven't been shared with the signed-in account. * Change your Microsoft password or account security settings. **To disconnect:** In UnleashX, open **Data Connectors → Outlook Calendar → Disconnect**. You can also revoke access at `https://account.microsoft.com/privacy/app-access` (or your org's My Apps portal for work accounts). Disconnecting revokes access immediately. ## 8. Troubleshooting | Problem | What it means | How to fix it | | ------------------------- | ---------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | | **401 Unauthorized** | Your Microsoft sign-in expired or the token is invalid. | Reconnect Outlook Calendar in **Data Connectors** and sign in again. | | **403 Forbidden** | A required calendar permission wasn't granted, or your org blocked it. | Reconnect and accept all permissions; for work accounts ask your admin for admin consent. | | **"Need admin approval"** | Your organization requires admin consent for third-party apps. | Forward the consent request to your Microsoft 365 administrator. | | **Event not found** | The event was moved, deleted, or is on a calendar you can't access. | Ask the agent to list recent events or specify which calendar to use. | | **Cannot create event** | The chosen calendar is read-only or the time conflicts with a policy. | Pick a calendar you own and confirm the time is valid. | For general MCP issues, see [/mcp/integrations](/mcp/integrations). ## 9. Frequently asked questions **Is my calendar data stored by UnleashX?** No. UnleashX reads and writes events live through Microsoft Graph for each request; it doesn't keep a copy of your calendar. **Can multiple team members connect their own calendars?** Yes. Each person authorizes their own Microsoft account, so the agent works against each user's own calendars. **Can the agent manage shared or team calendars?** Yes, as long as those calendars are shared with the signed-in account and the granted scopes allow editing. **Will deleting an event cancel it for attendees?** Deleting an event you organize generally sends cancellations, the same as deleting it in Outlook. Treat Delete Event as a real cancellation. ## 10. References * Microsoft Graph calendar API: [https://learn.microsoft.com/en-us/graph/api/resources/calendar](https://learn.microsoft.com/en-us/graph/api/resources/calendar) * Microsoft Graph permissions reference: [https://learn.microsoft.com/en-us/graph/permissions-reference](https://learn.microsoft.com/en-us/graph/permissions-reference) * Manage app access / revoke (personal): [https://account.microsoft.com/privacy/app-access](https://account.microsoft.com/privacy/app-access) * Microsoft sign-in: [https://login.microsoftonline.com](https://login.microsoftonline.com) # Outreach Source: https://docs.unleashx.ai/mcp/outreach Let your UnleashX agent manage prospects, sequences, and accounts in Outreach. # Outreach > **In one line:** Connect Outreach so your UnleashX agent can manage prospects, add them to sequences, create accounts, and keep your sales engagement moving — all in plain language. | | | | ------------------ | -------------------------------------------------------------------------------------------------------------- | | **Category** | Sales & Outreach | | **Authentication** | OAuth (Outreach) | | **Setup time** | \~3 minutes | | **Difficulty** | Easy | | **Best for** | Sales teams that want an AI agent to manage prospects, run sequences, and keep accounts up to date in Outreach | ## 1. Overview Outreach is a sales engagement platform. It's where your reps manage prospects and accounts, run multi-step sequences across email and calls, and track the tasks and activities that move deals forward. Once connected to UnleashX, your agent can list and inspect prospects, create and update them, add prospects to sequences, and create accounts. It works against your live Outreach instance using your own Outreach sign-in, so it respects your role and permissions. Connecting Outreach to UnleashX means your engagement runs from a conversation. Instead of opening Outreach to add a prospect or enroll someone in a sequence, you tell your agent and it makes the change — cutting the manual data entry while keeping your pipeline current. ## 2. What you'll need * An Outreach account with a user seat. * A user role with permission to view and edit prospects, sequences, and accounts. * An UnleashX account with access to **Data Connectors**. No API key to paste. Outreach uses OAuth — you click **Authorize** and sign in with Outreach. Outreach enforces your **role permissions**. If your Outreach user can't create prospects or add them to sequences, the agent can't either. Ask your Outreach admin to adjust your role if needed. ## 3. Get your credentials There's no key to copy. Authentication runs through Outreach's secure OAuth sign-in. Connecting Outreach (Section 4) opens an Outreach **Authorize** window. Sign in with your Outreach account at `https://accounts.outreach.io`. Complete two-factor authentication if prompted. Outreach shows the access UnleashX is requesting (see the scopes table). Click **Allow**. Outreach redirects you back automatically and the connector links to your instance. Behind the scenes UnleashX calls Outreach with a bearer authorization token — you never handle the token yourself. **Permissions (Outreach OAuth scopes) UnleashX requests:** | Scope | Why UnleashX needs it | | -------------------- | --------------------------------------------------------- | | `prospects.all` | Create, read, update, and delete prospects. | | `sequences.all` | List sequences and enroll prospects in them. | | `sequenceStates.all` | Add prospects to sequences and read their sequence state. | | `accounts.all` | Create and read accounts. | | `tasks.read` | Read tasks so triggers can fire on new tasks. | | `calls.read` | Read call activity so triggers can fire on new calls. | | `mailings.read` | Read email activity so triggers can fire on new emails. | Outreach OAuth scopes are granular. UnleashX requests only what these tools need, and Outreach — not UnleashX — enforces the limits. ## 4. Connect on UnleashX Go to [https://www.tryunleashx.com](https://www.tryunleashx.com) and open the agent you want to connect. Inside the agent, go to **Data Connectors**. Locate **Outreach** and click **Connect** (or **Add** / **Configure**). Click **Authorize**, sign in with Outreach, and accept the scopes. You return to UnleashX and the Outreach connector shows a **Connected** badge. ### Use Outreach in a Workflow Once connected, you can add **Outreach** to any automation from the **Workflows** builder. Its triggers and tools appear in the Apps panel, marked with an **MCP** badge. Open **Workflows → New Workflow**. On the canvas, click **+ Add Trigger**. In the **Paths** panel, open the **Apps** tab and select **Outreach** — its **Triggers** are listed underneath. Use the search box if you have many connectors. Click the **+** below any node to add a step, then pick **Outreach** again — this time the panel lists its **Actions**. Fill in the fields for the trigger or action you picked. Required fields are marked with a red asterisk (\*). Under **Selected account**, choose an already-connected account, or click **Add Account** to connect one now. Click **Save**. Use **Test** to verify the step, then toggle **Publish** when the workflow is ready. The steps are the same for every connector. For the full workflow builder guide, see [Using MCP in Workflows](/mcp/workflows). ## 5. Available tools | Tool | What it does | Changes data? | | ------------------------ | ------------------------------------------ | ------------- | | List Prospects | Lists prospects (filter by attributes). | No | | Get Prospect | Retrieves a single prospect by ID. | No | | Create Prospect | Creates a new prospect. | ✏️ Yes | | Update Prospect | Updates an existing prospect. | ✏️ Yes | | Delete Prospect | Deletes a specified prospect. | ⚠️ Yes | | List Sequences | Lists sequences in your Outreach instance. | No | | Add Prospect To Sequence | Enrolls a prospect in a sequence. | ✏️ Yes | | Create Account | Creates a new account. | ✏️ Yes | ### Available triggers | Trigger | Fires when | | --------------- | ------------------------------------------- | | On New Prospect | A new prospect is created in Outreach. | | On New Task | A new task is created for a user. | | On New Email | A new email (mailing) activity is recorded. | | On New Call | A new call activity is logged. | ## 6. Example usage **"Add [jane@acme.com](mailto:jane@acme.com) as a prospect and enroll her in the Enterprise Outbound sequence."** → Runs Create Prospect to add the contact, then Add Prospect To Sequence to enroll her. **"Create an account for Globex and add their VP of Sales as a new prospect."** → Runs Create Account for Globex, then Create Prospect for the VP linked to that account. ## 7. Permissions & data access **UnleashX can:** * Read and list prospects, sequences, and accounts. * Create and update prospects and accounts. * Add prospects to sequences. * Delete prospects where your role allows (this tool is clearly marked ⚠️). **UnleashX cannot:** * Do anything your Outreach role doesn't permit. * Change your Outreach account password or org-wide admin settings. * Access unrelated systems — those are separate connectors. **To disconnect:** In UnleashX, open **Data Connectors → Outreach → Disconnect**. You can also revoke access from your Outreach account settings under connected apps. Disconnecting revokes access immediately. ## 8. Troubleshooting | Problem | What it means | How to fix it | | ------------------------------ | --------------------------------------------------------------------- | ---------------------------------------------------------------- | | **401 Unauthorized** | The Outreach token expired or is invalid. | Reconnect Outreach in **Data Connectors** and sign in again. | | **403 Forbidden** | Your Outreach role lacks permission for that action. | Ask your admin to grant the needed permission, then retry. | | **429 Too Many Requests** | You hit the Outreach API rate limit. | Slow down requests and retry after a short wait. | | **Prospect already exists** | A prospect with that email is already in Outreach. | Update the existing prospect instead of creating a duplicate. | | **Sequence enrollment failed** | The sequence is inactive or the prospect is missing a required field. | Check the sequence status and the prospect's fields, then retry. | For general MCP issues, see [/mcp/integrations](/mcp/integrations). ## 9. Frequently asked questions **Is my sales data stored by UnleashX?** No. UnleashX reads and writes your records live through the Outreach API per request; it doesn't keep a copy of your data. **Which Outreach instance does the agent use?** The one tied to the account you signed in with when connecting. To switch, reconnect with a different account. **Can the agent really delete prospects?** Yes — the Delete Prospect tool (marked ⚠️) makes a permanent change in Outreach. It only works if your role allows it. Use it deliberately. **Can it send emails or make calls?** It manages prospects, sequences, and accounts. Sequences drive the actual sending and tasks within Outreach under your instance's settings. ## 10. References * Outreach API documentation: [https://developers.outreach.io/api/](https://developers.outreach.io/api/) * Outreach OAuth overview & scopes: [https://developers.outreach.io/api/oauth/](https://developers.outreach.io/api/oauth/) * Outreach sign-in: [https://accounts.outreach.io](https://accounts.outreach.io) * Outreach support: [https://support.outreach.io/](https://support.outreach.io/) # PDF.co Source: https://docs.unleashx.ai/mcp/pdfco Let your UnleashX agent convert, generate, edit, and read PDFs — from a conversation or a workflow. # PDF.co > **In one line:** Connect PDF.co so your UnleashX agent can turn a PDF into text, CSV, JSON or images, build a PDF from a web page or HTML, merge, split, redact, password-protect, and pull structured data out of invoices and receipts. | | | | ------------------ | -------------------------------------------------------------------------------------------------------------- | | **Category** | AI & Media | | **Authentication** | API key | | **Setup time** | \~2 minutes | | **Difficulty** | Easy | | **Best for** | Any workflow where a document arrives and something has to be read out of it, or a document has to be produced | ## 1. Overview PDF.co is a document-processing API. You hand it a file URL and an operation; it does the work on its own infrastructure and hands back a URL to the result. Once connected to UnleashX, your agent gets the whole document toolbox: convert a PDF to plain text, CSV, JSON, HTML or images; generate a PDF from raw HTML, a live web page, an Office file, or an image; merge, split, rotate, or delete pages; fill forms, add text or stamps at exact coordinates, and find-and-replace text; add or strip passwords; generate and read barcodes and QR codes; and parse an invoice or receipt into structured fields. Connecting PDF.co to UnleashX is what lets a document actually enter a workflow — an invoice lands, the agent parses it into fields, and the next step files the data where it belongs. Or the other direction: a workflow finishes and hands the customer a generated PDF. ## 2. What you'll need * A **PDF.co account** — the free tier is enough to test with. * Your **PDF.co API key** from the dashboard. * An UnleashX agent where you'll add the connector. PDF.co operations consume **credits** from your account balance. Conversions of large documents cost more than small ones. Use **Get Account Balance** to check what's left. ## 3. Get your credentials PDF.co authenticates with a single **API key**. There's no OAuth flow and nothing to install. Go to [app.pdf.co](https://app.pdf.co/) and sign in, or create an account if you don't have one. Your API key is shown on the dashboard's **API** section. Unlike most services, PDF.co lets you re-read this key later — it isn't a one-time reveal. Copy it and keep it somewhere safe. If it's ever exposed, regenerate it from the same screen — the old value stops working immediately. PDF.co dashboard showing the API key and Copy button Add it in **Data Connectors → PDF.co** (full walkthrough in Section 4). The API key spends your PDF.co credits. Never commit it to git, paste it into a ticket, or ship it in client-side code. Use a separate key per integration where your plan allows it, so one can be rotated without breaking the rest. ### Permissions this key grants UnleashX | Access | Why UnleashX needs it | | ------------------- | ----------------------------------------------------------------------------------------- | | Upload files | Put a local or remote file into PDF.co's temporary storage so an operation can run on it. | | Convert documents | Turn PDFs into text, CSV, JSON, HTML, or images, and other formats into PDF. | | Edit documents | Merge, split, rotate, delete pages, fill forms, add text, find-and-replace. | | Security operations | Add or remove PDF passwords. | | Barcodes | Generate and decode barcodes and QR codes. | | Document parsing | Extract structured fields and tables from invoices, receipts, and similar documents. | | Account status | Read the remaining credit balance. | Uploaded files live in PDF.co's temporary storage and are **auto-deleted after one hour**. Output URLs are equally temporary — download or forward the result within the same workflow rather than storing the link for later. ## 4. Connect on UnleashX Sign in at [https://www.tryunleashx.com](https://www.tryunleashx.com) and open the agent you want to connect. In the agent, go to **Data Connectors** and find **PDF.co**. Click **Connect** / **Add** / **Configure**, paste your **API key**, and give the connection an **Account Name** — a label for your own reference inside UnleashX. Save. The status will switch to a **Connected** badge. ### Use PDF.co in a Workflow Once connected, you can add **PDF.co** to any automation from the **Workflows** builder. Its tools appear in the Apps panel, marked with an **MCP** badge. Open **Workflows → New Workflow**. On the canvas, click the **+** below a node, then open the **Apps** tab in the **Paths** panel and select **PDF.co** — its **Actions** are listed underneath. Use the search box if you have many connectors. PDF.co actions in the Apps panel Choose the action from **Select Action**, then pick the connected account under **Select Account** — or click **Add Account** to connect one now. Configuring a PDF.co action step Complete the fields for the action you picked. Required fields are marked with a red asterisk (\*). Click **Save**. Use **Test** to verify the step, then toggle **Publish** when the workflow is ready. PDF.co is an **actions-only** connector — it has no triggers, because the PDF.co API has nothing to poll for new records. Start these workflows from another trigger (a new email with an attachment, a form submission, a schedule) and use PDF.co as a step. The steps are the same for every connector. For the full workflow builder guide, see [Using MCP in Workflows](/mcp/workflows). ## 5. Available tools Every PDF.co operation takes a **file URL**, not a file. If your file isn't already on a public URL, run **Upload File** or **Upload File From URL** first and pass the URL it returns into the next step. Names match the **Workflows** Apps panel, which lists them alphabetically; they're grouped here by what they do. The **Tool ID** is what the agent calls behind the scenes. **Getting a file in** | Tool | Tool ID | What it does | Required | Changes data? | | -------------------- | ---------------------------- | ---------------------------------------------------------------------- | ----------- | ------------- | | Upload File | `pdfco_upload_file` | Uploads a local file to PDF.co's temporary storage and returns its URL | `file_path` | ✏️ Yes | | Upload File From URL | `pdfco_upload_file_from_url` | Has PDF.co fetch a file from a public URL into temporary storage | `url` | ✏️ Yes | **Converting a PDF to something else** | Tool | Tool ID | What it does | Required | Changes data? | | ---------------- | ------------------------ | --------------------------------------------------------------- | -------- | ------------- | | Convert To Text | `pdfco_convert_to_text` | Converts a PDF to plain text | `url` | No | | Convert To CSV | `pdfco_convert_to_csv` | Converts a PDF (typically a table-like layout) to CSV | `url` | No | | Convert To JSON | `pdfco_convert_to_json` | Converts a PDF to structured JSON (text + layout) | `url` | No | | Convert To HTML | `pdfco_convert_to_html` | Converts a PDF to HTML | `url` | No | | Convert To Image | `pdfco_convert_to_image` | Converts PDF pages to images (`image_format` defaults to `jpg`) | `url` | No | All five accept optional `pages` (e.g. `0-2,5`) and `password` for a protected source file, plus `name` for the output file. **Creating a PDF** | Tool | Tool ID | What it does | Required | Changes data? | | ------------------ | -------------------------- | -------------------------------------------------- | -------- | ------------- | | Create From HTML | `pdfco_create_from_html` | Generates a PDF from raw HTML markup | `html` | ✏️ Yes | | Create From URL | `pdfco_create_from_url` | Generates a PDF by rendering a live web page | `url` | ✏️ Yes | | Create From Office | `pdfco_create_from_office` | Converts DOC/DOCX/RTF/TXT/PPT/PPTX/XLS/XLSX to PDF | `url` | ✏️ Yes | | Create From Image | `pdfco_create_from_image` | Converts JPG/PNG/TIFF to PDF | `url` | ✏️ Yes | **Editing a PDF** | Tool | Tool ID | What it does | Required | Changes data? | | ------------------- | --------------------------- | ------------------------------------------------------ | ---------------------------------------- | ------------- | | Merge | `pdfco_merge` | Merges multiple files into one PDF, in the given order | `urls` | ✏️ Yes | | Split | `pdfco_split` | Splits a PDF into multiple files by page ranges | `url`, `pages` | ✏️ Yes | | Fill Form | `pdfco_fill_form` | Fills an existing PDF form's fields | `url`, `fields` | ✏️ Yes | | Add Text | `pdfco_add_text` | Adds text, images, or shapes at specific coordinates | `url`, `annotations` | ✏️ Yes | | Search Replace Text | `pdfco_search_replace_text` | Finds and replaces text throughout a PDF | `url`, `search_string`, `replace_string` | ✏️ Yes | | Delete Pages | `pdfco_delete_pages` | Deletes specific pages | `url`, `pages` | ✏️ Yes | | Rotate Pages | `pdfco_rotate_pages` | Rotates pages by an angle | `url`, `angle` | ✏️ Yes | **Security** | Tool | Tool ID | What it does | Required | Changes data? | | --------------- | ----------------------- | ------------------------------------------------------------------ | ----------------- | ------------- | | Add Password | `pdfco_add_password` | Password-protects a PDF | `url`, `password` | ✏️ Yes | | Remove Password | `pdfco_remove_password` | Removes password protection (you must supply the current password) | `url`, `password` | ✏️ Yes | **Barcodes** | Tool | Tool ID | What it does | Required | Changes data? | | ---------------- | ------------------------ | -------------------------------------------------------------------------- | -------- | ------------- | | Generate Barcode | `pdfco_generate_barcode` | Generates a barcode or QR code image (`barcode_type` defaults to `QRCode`) | `value` | ✏️ Yes | | Read Barcode | `pdfco_read_barcode` | Detects and decodes barcodes/QR codes in an image or PDF | `url` | No | **Reading and account** | Tool | Tool ID | What it does | Required | Changes data? | | ------------------- | --------------------------- | ------------------------------------------------------------------------------------------------------------------- | -------- | ------------- | | Get PDF Info | `pdfco_get_pdf_info` | Returns page count, security permissions, and document properties | `url` | No | | Parse Document | `pdfco_parse_document` | Extracts structured fields and tables from an invoice, receipt, or order — AI-based unless you pass a `template_id` | `url` | No | | Get Job Status | `pdfco_get_job_status` | Checks an asynchronous background job | `job_id` | No | | Get Account Balance | `pdfco_get_account_balance` | Returns the remaining credit balance | — | No | ## 6. Example usage **"Pull the line items out of this invoice and put them in the sheet."** Runs **Upload File From URL** → **Parse Document**, then hands the fields to your Google Sheets step. **"Turn our pricing page into a PDF and email it to the customer."** Runs **Create From URL** on the page, then passes the result URL to your email connector. **"Split this 200-page report into one file per section and password-protect each one."** Runs **Split** with page ranges → **Add Password** on each output. **"Read the QR code on this scanned delivery note."** Runs **Read Barcode** on the uploaded scan. ## 7. Permissions & data access **UnleashX CAN:** * Upload files to PDF.co's temporary storage and run operations on them. * Convert, generate, edit, merge, split, and redact documents. * Add and remove PDF passwords, and generate or read barcodes. * Parse documents into structured data and read your credit balance. **UnleashX CANNOT:** * Reach files that aren't uploaded or publicly accessible by URL. * Change your PDF.co account settings, plan, or billing. * Recover a document whose temporary URL has expired. **To disconnect:** In UnleashX, open your agent → **Data Connectors** → **PDF.co** → **Disconnect**. To fully revoke access, regenerate or delete the API key in the PDF.co dashboard. Either action stops access immediately. ## 8. Troubleshooting | Problem | What it means | How to fix it | | ------------------------------------------------------------ | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------- | | `401 Unauthorized` | The API key is wrong, or was regenerated in the dashboard | Copy the current key from PDF.co and reconnect | | Operation returns an error with a message, not an HTTP error | PDF.co reports business-logic failures (bad URL, unsupported format) in the response body | Read the message — it usually names the bad input | | "File not found" on a URL that worked earlier | Temporary storage auto-deletes after one hour | Re-upload the file inside the same workflow run | | Credit / balance errors | The account is out of credits | Check **Get Account Balance** and top up the PDF.co plan | | A conversion returns an empty result | The source PDF is a scan with no text layer | Convert to image and run [OCR](/mcp/ocr), or use **Parse Document** | | A long conversion times out | The job ran in async mode | Use **Get Job Status** with the returned `jobId` to poll for completion | For general connector issues, see [/mcp/integrations](/mcp/integrations). ## 9. Frequently asked questions **Does UnleashX store my documents?** No. Files go to PDF.co's temporary storage and are deleted automatically after an hour. UnleashX passes URLs through; it doesn't keep copies. **Can I process a file that isn't public?** Yes — use **Upload File** to push it into PDF.co's storage first, then use the URL it returns. **Why are there no triggers?** PDF.co is a stateless request/response API with nothing to poll for new records, so there's no "on new document" event. Start the workflow from whatever delivers the document — an inbox, a form, a schedule. **What does a run cost?** It consumes PDF.co credits, priced by operation and document size. Check the balance with **Get Account Balance**. **Is this the same as OCR?** No. PDF.co reads text that's already in the file and can parse structured documents. For scanned images with no text layer, see the [OCR](/mcp/ocr) connector. ## 10. References * PDF.co API documentation: [https://developer.pdf.co/](https://developer.pdf.co/) * PDF.co dashboard: [https://app.pdf.co/](https://app.pdf.co/) * Document parser templates: [https://developer.pdf.co/api/document-parser/](https://developer.pdf.co/api/document-parser/) # Pipedrive Source: https://docs.unleashx.ai/mcp/pipedrive Let your UnleashX agent manage deals, contacts, organizations, activities, and notes in Pipedrive. # Pipedrive > **In one line:** Connect Pipedrive so your UnleashX agent can find and update deals, manage contacts and organizations, log activities and notes, and keep your pipeline moving — all in plain language. | | | | ------------------ | --------------------------------------------------------------------------------------------------- | | **Category** | CRM & Marketing | | **Authentication** | Personal API token | | **Setup time** | \~2 minutes | | **Difficulty** | Easy | | **Best for** | Sales teams that want an AI agent to manage deals, log activities, and update contacts in Pipedrive | ## 1. Overview Pipedrive is a sales-focused CRM built around your pipeline. It's the system of record for deals, the people and organizations behind them, and the activities and notes that move each deal forward. Once connected to UnleashX, your agent can find and update deals, move them between stages, create and update persons and organizations, schedule activities, add notes, and search across your CRM. It works against your live Pipedrive account using your personal API token, so it acts with your own permissions. Connecting Pipedrive to UnleashX means your CRM updates itself as you talk. Instead of opening Pipedrive to log a call or advance a deal, you tell your agent and it makes the change — keeping the pipeline current without manual data entry. ## 2. What you'll need * A Pipedrive account. * Your **personal API token** (see Section 3). * An UnleashX account with access to **Data Connectors**. You paste a **personal API token**. UnleashX sends it to the Pipedrive API on each request. Your token acts with **your Pipedrive permissions**. If your user can't see or edit certain deals or fields, the agent can't either. ## 3. Get your credentials Pipedrive MCP authenticates with your **personal API token** — a single secret string tied to your Pipedrive user. Unlike most connectors, you don't create it: Pipedrive generates one for you automatically, and you simply copy the existing value. ### Step-by-step Go to your Pipedrive account (`https://.pipedrive.com`) and sign in with the user whose permissions you want the agent to act with. Click your **profile avatar** in the top-right corner of the toolbar to open the account menu. Select **Personal preferences**. You'll land on **Settings → Personal preferences**, with a **MY ACCOUNT** list down the left (Personal preferences, Password and login, Email sync, Contact sync, Calendar sync, and so on). At the top of the Personal preferences page there are three tabs: **Account**, **Your companies**, and **API**. Click **API**. The page heading changes to **API**, and you'll see a **Your personal API token** field. The API tab in Pipedrive Personal preferences, showing your personal API token Your token is already there, partially masked. Click the green **Copy** button to the right of the field to copy the full value to your clipboard. You don't need to generate anything — the existing token works straight away. Head to **Data Connectors → Pipedrive** in UnleashX and paste the token (full walkthrough in Section 4). UnleashX validates it on save, so you'll know immediately if it pasted correctly. ### Good to know **Your token doesn't expire and can be viewed again any time.** Unlike connectors that reveal a secret only once, Pipedrive keeps your personal API token on this page permanently — so if you lose it, just come back to **Personal preferences → API** and copy it again. **"Generate new token" replaces your existing token.** The button below the field creates a fresh token and **immediately invalidates the old one**. Only click it if your token has leaked. Anything already using the old token — UnleashX, scripts, other integrations — will start returning `401 Unauthorized` until you update each one with the new value. As Pipedrive itself notes on this page: *keep your API token secure, as it can be used to access your data in Pipedrive.* The token carries **your full user permissions** — anyone holding it can read and modify every deal, contact, and organization you can. Never commit it to git or share it in chat. Because the token is tied to your individual user, the agent inherits **your** visibility and edit rights. For a shared or automated setup, consider creating a dedicated Pipedrive user with exactly the permissions the agent should have, and connect using that user's token instead of your own. ### Permissions this token grants UnleashX | Access | Why UnleashX needs it | | ---------------------------------- | ------------------------------------------------- | | Read/write deals | Find, create, update, and move deals. | | Read/write persons & organizations | Manage contacts and companies. | | Read/write activities | Schedule and complete calls, meetings, and tasks. | | Read/write notes | Add and read notes on records. | | Read pipelines & stages | Know your pipeline structure to move deals. | ## 4. Connect on UnleashX Go to [https://www.tryunleashx.com](https://www.tryunleashx.com) and open the agent you want to connect. Inside the agent, go to **Data Connectors**. Locate **Pipedrive** and click **Connect** (or **Add** / **Configure**). Paste your **personal API token** and click **Connect**. UnleashX validates the token and the Pipedrive connector shows a **Connected** badge. ### Use Pipedrive in a Workflow Once connected, you can add **Pipedrive** to any automation from the **Workflows** builder. Its triggers and tools appear in the Apps panel, marked with an **MCP** badge. Open **Workflows → New Workflow**. On the canvas, click **+ Add Trigger**. In the **Paths** panel, open the **Apps** tab and select **Pipedrive** — its **Triggers** are listed underneath. Use the search box if you have many connectors. Pipedrive triggers in the Apps panel Click the **+** below any node to add a step, then pick **Pipedrive** again — this time the panel lists its **Actions**. Pipedrive actions in the Apps panel Fill in the fields for the trigger or action you picked. Required fields are marked with a red asterisk (\*). Under **Selected account**, choose an already-connected account, or click **Add Account** to connect one now. Click **Save**. Use **Test** to verify the step, then toggle **Publish** when the workflow is ready. The steps are the same for every connector. For the full workflow builder guide, see [Using MCP in Workflows](/mcp/workflows). ## 5. Available tools | Tool | What it does | Changes data? | | ------------------- | ----------------------------------------------- | ------------- | | List Deals | Lists deals (filter by stage, status, owner). | No | | Get Deal | Retrieves a single deal by ID. | No | | Create Deal | Creates a new deal. | ✏️ Yes | | Update Deal | Updates a deal (stage, value, status, etc.). | ✏️ Yes | | Delete Deal | Deletes a deal. | ⚠️ Yes | | Search Deals | Searches deals by term. | No | | List Persons | Lists persons (contacts). | No | | Get Person | Retrieves a single person by ID. | No | | Create Person | Creates a new person. | ✏️ Yes | | Update Person | Updates a person. | ✏️ Yes | | List Organizations | Lists organizations. | No | | Create Organization | Creates a new organization. | ✏️ Yes | | Update Organization | Updates an organization. | ✏️ Yes | | List Activities | Lists activities. | No | | Create Activity | Schedules an activity (call, meeting, task). | ✏️ Yes | | Update Activity | Updates or completes an activity. | ✏️ Yes | | Add Note | Adds a note to a deal, person, or organization. | ✏️ Yes | | List Notes | Lists notes on a record. | No | | List Pipelines | Lists pipelines. | No | | List Stages | Lists stages in a pipeline. | No | | Search Leads | Searches leads. | No | | Create Lead | Creates a new lead. | ✏️ Yes | ## 6. Example usage **"Create a deal for Acme Corp worth \$12,000 in the Sales pipeline and schedule a follow-up call for Friday."** → Runs Create Deal to add the deal, then Create Activity to schedule the call. **"Move the Globex deal to Negotiation and add a note about the new pricing."** → Runs Search Deals to find it, Update Deal to change the stage, and Add Note for the pricing detail. ## 7. Permissions & data access **UnleashX can:** * Read, search, and list deals, persons, organizations, activities, and notes. * Create and update deals, contacts, organizations, activities, and leads. * Move deals between stages and add notes. * Delete records where your permissions allow (marked ⚠️). **UnleashX cannot:** * Do anything your Pipedrive user permissions don't allow. * Change your Pipedrive account or billing settings. **To disconnect:** In UnleashX, open **Data Connectors → Pipedrive → Disconnect**. You can regenerate your token in Pipedrive under **Personal preferences → API** to invalidate the old one. Disconnecting removes access immediately. ## 8. Troubleshooting | Problem | What it means | How to fix it | | ------------------------- | ----------------------------------------------------- | ------------------------------------------------------------------------- | | **401 Unauthorized** | The token is invalid or was regenerated. | Copy the current token from **Personal preferences → API** and reconnect. | | **403 Forbidden** | Your user lacks permission for that record or action. | Ask your Pipedrive admin to adjust your permissions. | | **404 Not found** | The deal/person ID is wrong or was deleted. | Have the agent search to find the correct record. | | **429 Too Many Requests** | You hit Pipedrive's rate/token limit. | Wait and retry; space out bulk operations. | For general MCP issues, see [/mcp/integrations](/mcp/integrations). ## 9. Frequently asked questions **Is my CRM data stored by UnleashX?** No. UnleashX reads and writes live through the Pipedrive API per request; it doesn't keep a copy. **Can the agent delete deals?** Yes — tools marked ⚠️ make permanent changes and only work if your permissions allow it. Use them deliberately. **Can multiple team members connect Pipedrive?** Yes. Each person uses their own personal API token, so the agent acts with that user's permissions. ## 10. References * Pipedrive API documentation: [https://developers.pipedrive.com/docs/api/v1](https://developers.pipedrive.com/docs/api/v1) * How to find your API token: [https://pipedrive.readme.io/docs/how-to-find-the-api-token](https://pipedrive.readme.io/docs/how-to-find-the-api-token) * Rate limiting: [https://pipedrive.readme.io/docs/core-api-concepts-rate-limiting](https://pipedrive.readme.io/docs/core-api-concepts-rate-limiting) # Playwright Source: https://docs.unleashx.ai/mcp/playwright Let your UnleashX agent navigate pages, click and fill forms, screenshot, and extract content from any website. # Playwright > **In one line:** Add Playwright so your UnleashX agent can open web pages, click and fill forms, take screenshots, save pages as PDF, and pull text and content from the live web — all in plain language. | | | | ------------------ | -------------------------------------------------------------------------------------------------------------------------------------- | | **Category** | Dev Tools & Automation | | **Authentication** | None (built-in hosted browser) | | **Setup time** | \~1 minute | | **Difficulty** | Easy | | **Best for** | Teams that need an AI agent to read live web pages, interact with sites, and capture content without setting up any browser or account | ## 1. Overview Playwright is a browser automation engine that drives a real, headless web browser — navigating pages, clicking elements, filling forms, and reading rendered content the way a person would. UnleashX runs it for you as a hosted tool, so there's no browser to install and no infrastructure to manage. Once added to UnleashX, your agent can open a URL, click buttons and links, type into form fields, capture a screenshot, save a page as a PDF, and extract the visible text or full content of a page. It runs against UnleashX's built-in browser, so it works out of the box. Adding Playwright to UnleashX gives your agent hands and eyes on the live web. Instead of being limited to what it already knows, it can visit a page, interact with it, and turn what it finds into content you can use in a conversation or workflow. ## 2. What you'll need * An UnleashX account with access to **Data Connectors** and **Workflows**. * The URL(s) of the pages you want the agent to work with. There's **nothing to connect**. Playwright is a hosted browser tool built into UnleashX — no account, no API key, and no OAuth. The agent uses UnleashX's own browser. Playwright reaches **public web pages** as an anonymous visitor. It can't sign in to sites on your behalf, and some sites block automated browsers or challenge them with anti-bot checks (see Troubleshooting). ## 3. Get your credentials **No credentials needed.** Playwright uses UnleashX's built-in hosted browser — there's no external account to create, no key to paste, and no OAuth flow. There's nothing to authorize. ### What it can do | Access | Why UnleashX needs it | | ------------------- | ---------------------------------------------- | | Open pages | Navigate the hosted browser to any public URL. | | Interact with pages | Click elements and fill form fields. | | Read content | Extract visible text and full page content. | | Capture pages | Take screenshots and save pages as PDF. | ## 4. Connect on UnleashX Because Playwright is built in, there's nothing to link under **Data Connectors** — you add it directly in the **Workflows** builder (or use it in a conversation) with no setup. ### Use Playwright in a Workflow Once connected, you can add **Playwright** to any automation from the **Workflows** builder. Its tools appear in the Apps panel, marked with an **MCP** badge. Open **Workflows → New Workflow**. On the canvas, click **+ Add Trigger**. In the **Paths** panel, open the **Apps** tab and select **Playwright** — its **Triggers** are listed underneath. Use the search box if you have many connectors. Click the **+** below any node to add a step, then pick **Playwright** again — this time the panel lists its **Actions**. Fill in the fields for the trigger or action you picked. Required fields are marked with a red asterisk (\*). Under **Selected account**, choose an already-connected account, or click **Add Account** to connect one now. Click **Save**. Use **Test** to verify the step, then toggle **Publish** when the workflow is ready. The steps are the same for every connector. For the full workflow builder guide, see [Using MCP in Workflows](/mcp/workflows). ## 5. Available tools | Tool | What it does | Changes data? | | ---------------- | ------------------------------------------------ | ------------- | | Navigate | Opens a URL in the hosted browser. | No | | Screenshot | Captures a screenshot of the current page. | No | | Extract Text | Extracts the visible text from the current page. | No | | Click | Clicks an element on the page. | No | | Fill | Types a value into a form field. | No | | Get Page Content | Returns the rendered HTML/content of the page. | No | | Page PDF | Saves the current page as a PDF. | No | | Get Page Title | Returns the title of the current page. | No | These tools read and interact with external websites; they don't change your own data. Clicking and filling act on the page in the hosted browser session, not on any UnleashX record. ## 6. Example usage **"Open our competitor's pricing page and tell me their plan tiers and prices."** → Runs Navigate to the URL, then Extract Text to read the pricing tiers from the page. **"Go to this form, fill in my name and email, and take a screenshot of the completed form."** → Runs Navigate to the page, Fill for each field, then Screenshot to capture the result. ## 7. Permissions & data access **UnleashX can:** * Open public web pages in the hosted browser. * Click elements, fill form fields, and read page text and content. * Capture screenshots and save pages as PDF. **UnleashX cannot:** * Sign in to sites or access pages behind a login. * Bypass a site's anti-bot protection, CAPTCHAs, or terms of use. * Reach pages on private networks it can't route to. **To disconnect:** Playwright has no stored credentials to revoke. To stop using it, remove the Playwright step from your workflow (or don't add it). There's nothing to disconnect under **Data Connectors**. ## 8. Troubleshooting | Problem | What it means | How to fix it | | -------------------------------- | ---------------------------------------------------- | ---------------------------------------------------------------------- | | **Page timeout** | The site was slow or never finished loading. | Retry, or point the agent at a lighter, more direct URL. | | **Selector not found** | The element to click or fill wasn't on the page. | Check the element description; the page layout may have changed. | | **Blocked / anti-bot page** | The site detected automation and served a challenge. | The page may be unreachable this way — try a different source. | | **JS-heavy page returns little** | Content loads dynamically after the initial render. | Wait for the page to settle, then re-extract, or capture a screenshot. | | **Empty content** | The page rendered nothing extractable. | Try Get Page Content, or take a screenshot instead of extracting text. | For general MCP issues, see [/mcp/integrations](/mcp/integrations). ## 9. Frequently asked questions **Do I need to install or connect anything?** No. Playwright is a hosted browser built into UnleashX — no account, no key, no OAuth. Just add it in Workflows. **Can it log in to sites for me?** No. It browses as an anonymous visitor and can't sign in on your behalf or reach pages behind a login. **Does UnleashX store the pages it visits?** No. Pages are loaded live in the hosted browser per request and returned to your agent; UnleashX doesn't keep a copy. **Is automated browsing allowed?** Respect each site's terms of service and robots rules. You're responsible for how the agent uses the tool. ## 10. References * Playwright documentation: [https://playwright.dev/docs/intro](https://playwright.dev/docs/intro) * Playwright API reference: [https://playwright.dev/docs/api/class-playwright](https://playwright.dev/docs/api/class-playwright) * Using MCP in Workflows: [https://www.tryunleashx.com](https://www.tryunleashx.com) # RAG / Knowledge Base Source: https://docs.unleashx.ai/mcp/rag Let your agent search its own knowledge base and form data to answer questions. # RAG / Knowledge Base > **In one line:** Let your UnleashX agent find the most relevant snippets from its knowledge base (and pull form records) so its answers are grounded in your own data. | | | | ------------------ | --------------------------------------------------------------------------- | | **Category** | AI & Media | | **Authentication** | Platform-managed | | **Setup time** | \~1 minute | | **Difficulty** | Easy | | **Best for** | Grounded answers, FAQ deflection, and looking up your own form/data records | ## 1. Overview RAG (Retrieval-Augmented Generation) lets an agent search a knowledge base by meaning, not just keywords. You ask a question in plain language and it returns the closest-matching pieces of your indexed content, scoped to that agent. Once connected, your agent can run a similarity search over its knowledge base (powered by Qdrant vectors under the hood) and fetch structured form details from your UnleashX datasource. Together these let the agent answer using your real content instead of guessing. Connecting RAG to UnleashX means your agents give accurate, on-brand answers drawn from the documents and data you've already loaded — ideal for support, internal lookups, and consistent responses across a team. ## 2. What you'll need RAG is **native to UnleashX**. It searches knowledge and data that already live in your workspace — there's no third-party account or API key for you to manage. * An active UnleashX account. * The RAG / knowledge-base feature enabled on your workspace/plan. * Content indexed for the agent (the knowledge base it should search). * Permission to edit the agent (admin or editor role). Without it, ask a workspace admin to enable the feature. ## 3. Get your credentials There are **no credentials to create**. RAG is platform-managed — UnleashX runs the vector store (Qdrant), the embedding model, and the datasource API for you. You never see or handle a key. Search is automatically scoped to the calling agent: the agent's ID comes from your signed-in session, so you never pass workspace or company identifiers by hand. If you are a workspace admin, the only platform-side configuration is the vector collection, embedding model, and datasource URL — all preset by UnleashX. | Platform-managed setting | Plain-English reason it exists | | ------------------------ | ------------------------------------------------------------------ | | Vector store (Qdrant) | Stores the embeddings your agent searches against. | | Embedding model | Converts your query into a vector so it can be matched by meaning. | | Datasource (forms) URL | Lets the agent fetch structured form records from your workspace. | | Agent scoping | Results are limited to the current agent automatically. | ## 4. Connect on UnleashX Go to [https://www.tryunleashx.com](https://www.tryunleashx.com) and open the agent that should search the knowledge base. In the agent, click **Data Connectors**. Locate **RAG / Knowledge Base** and click **Connect** / **Add**. It's platform-managed — no key to paste, it activates immediately. The RAG tool should now show a **Connected** badge. The agent will search the knowledge base scoped to itself. ### Use RAG / Knowledge Base in a Workflow Once connected, you can add **RAG / Knowledge Base** to any automation from the **Workflows** builder. Its triggers and tools appear in the Apps panel, marked with an **MCP** badge. Open **Workflows → New Workflow**. On the canvas, click **+ Add Trigger**. In the **Paths** panel, open the **Apps** tab and select **RAG / Knowledge Base** — its **Triggers** are listed underneath. Use the search box if you have many connectors. Click the **+** below any node to add a step, then pick **RAG / Knowledge Base** again — this time the panel lists its **Actions**. Fill in the fields for the trigger or action you picked. Required fields are marked with a red asterisk (\*). Under **Selected account**, choose an already-connected account, or click **Add Account** to connect one now. Click **Save**. Use **Test** to verify the step, then toggle **Publish** when the workflow is ready. The steps are the same for every connector. For the full workflow builder guide, see [Using MCP in Workflows](/mcp/workflows). ## 5. Available tools | Tool | What it does | Changes data? | | ------------------ | ------------------------------------------------------------------------------------------------ | ------------- | | Similarity Search | Embed a natural-language query and return the top matching knowledge-base entries for this agent | No | | Fetch Form Details | Fetch structured form records from the UnleashX datasource by object/field/value | No | Both tools are read-only — they look up and return existing knowledge and form records. They never create, edit, or delete data. ## 6. Example usage **"What's our refund policy for annual plans?"** → Runs **Similarity Search** over the agent's knowledge base and answers from the closest matching passages. **"Pull the record where email = [jordan@acme.com](mailto:jordan@acme.com) from the leads form."** → Runs **Fetch Form Details** against the datasource with that field and value. ## 7. Permissions & data access **UnleashX can:** * Embed your question and search the agent's knowledge base for similar content. * Return matching entries with relevance scores. * Fetch specific form records you request from your datasource. **UnleashX cannot:** * Search another agent's knowledge base (results are scoped to the current agent). * Modify, add, or delete knowledge-base entries or form data. * Access data outside your workspace. **To disconnect:** Open the agent → **Data Connectors** → **RAG / Knowledge Base** → **Disconnect**. Access is revoked immediately. ## 8. Troubleshooting | Problem | What it means | How to fix it | | ----------------------------------------------------------- | ----------------------------------------------------------------- | ------------------------------------------------------------------- | | "Agent ID is required ... not found in the session context" | The agent isn't resolvable from the session | Run from within a properly authenticated agent session | | Empty matches | Nothing in the knowledge base is similar, or it isn't indexed yet | Add/index content for this agent, then retry | | 401 / session error | The session JWT is missing or expired | Sign in again on UnleashX | | 403 / feature not enabled | RAG isn't enabled on your plan | Ask a workspace admin or contact support | | "forms\_url is not configured" | The datasource endpoint isn't set | Platform-side — contact **[cs@unleashx.ai](mailto:cs@unleashx.ai)** | For general connector issues, see [/mcp/integrations](/mcp/integrations). ## 9. Frequently asked questions **Where does the knowledge come from?** From content indexed for that specific agent in your UnleashX workspace. Search results are always scoped to the calling agent. **Is my data sent to a third party?** No external account is involved. The vector store and embedding model are run by UnleashX as part of the platform. **Can it change my data?** No. RAG is read-only — it retrieves and returns; it never writes. **How many results do I get?** You control it with `k_top` (default 3). There's a platform cap on the maximum. ## 10. References * Qdrant vector search docs: [https://qdrant.tech/documentation/](https://qdrant.tech/documentation/) * Retrieval-Augmented Generation overview: [https://ai.google.dev/gemini-api/docs](https://ai.google.dev/gemini-api/docs) * UnleashX integrations help: [/mcp/integrations](/mcp/integrations) # Razorpay Source: https://docs.unleashx.ai/mcp/razorpay Manage payments, orders, refunds, payment links, subscriptions, and settlements from your UnleashX agent. # Razorpay > **In one line:** Let your UnleashX agent look up payments and orders, create payment links and orders, issue refunds, and manage subscriptions in your Razorpay account. | | | | ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | **Category** | Payments | | **Authentication** | API Key (`key_id` + `key_secret`, used as Basic auth) | | **Setup time** | \~5 minutes | | **Difficulty** | Easy | | **Best for** | Businesses collecting payments in India (and supported currencies) that want their agent to check payment status, send payment links, refund customers, or manage recurring billing. | ## 1. Overview Razorpay is a payments platform widely used across India to accept card, UPI, netbanking, and wallet payments. It also handles orders, refunds, shareable payment links, recurring subscriptions and plans, and settlements (the money paid out to your bank account). Once you connect Razorpay to UnleashX, your agent can act on your live payment data. It can tell a caller whether their payment went through, generate and send a payment link mid-conversation, refund a charge, create or cancel a subscription, or pull up settlement reports — without you logging into the Razorpay Dashboard. Connecting Razorpay to UnleashX is ideal for support and sales workflows: the agent answers "did my payment succeed?", collects money on the spot via a link, and handles billing changes, all using your real Razorpay account. Sensitive details such as full card numbers, emails, and phone numbers are automatically redacted in responses. ## 2. What you'll need * A **Razorpay account** with Dashboard access ([dashboard.razorpay.com](https://dashboard.razorpay.com)). * Permission to view **Settings → API Keys** (typically an **Admin** / Owner role). * Your **API Key ID** (`key_id`) and **API Key Secret** (`key_secret`). * A decision on **Test mode** vs **Live mode** — each has its own separate key pair. If you don't have admin access, ask a Razorpay account admin to generate an API key pair for you. Connecting only needs the `key_id` and `key_secret`. ## 3. Get your credentials Razorpay MCP authenticates with your **API Key ID** and **API Key Secret**. These are combined into an HTTP **Basic auth** credential (`key_id:key_secret`) and sent with every request. Log in to the [Razorpay Dashboard](https://dashboard.razorpay.com) and go to **Settings → API Keys**. Choose **Test mode** or **Live mode** at the top first — keys differ per mode. Click **Generate Key** (or **Generate Test Key**). Razorpay creates a **Key ID** (starts with `rzp_test_` or `rzp_live_`) and a **Key Secret**. The **Key Secret is shown only once**, right after generation. Copy and store it securely now. If you lose it, you'll have to regenerate the key pair (which invalidates the old one). ### Permissions this key grants UnleashX | Capability | Why UnleashX needs it | | -------------------------------- | ----------------------------------------------------------- | | Read payments / orders / refunds | Check status and details to answer customer questions. | | Create orders & payment links | Collect money during a conversation. | | Create refunds | Refund customers (full or partial) on request. | | Manage customers | Create customers and attach billing/shipping addresses. | | Manage subscriptions & plans | Create, update, pause, resume, or cancel recurring billing. | | Read settlements & reports | Reconcile payouts to your bank account. | Razorpay API keys are account-wide and are not scoped to specific permissions. Use a **Test mode** key while building, and switch to **Live mode** only when you're ready to move real money. ## 4. Connect on UnleashX Sign in at [https://www.tryunleashx.com](https://www.tryunleashx.com) and open the agent you want to give Razorpay access to. Open **Data Connectors** and find **Razorpay** in the list. Click **Connect** / **Add** / **Configure**, then paste your **Key ID** and **Key Secret** (sent as the `key-id` and `key-secret` credentials). Authenticate once. When the keys are valid, the status changes to a **Connected** badge. Your agent can now use the Razorpay tools below. ### Use Razorpay in a Workflow Once connected, you can add **Razorpay** to any automation from the **Workflows** builder. Its triggers and tools appear in the Apps panel, marked with an **MCP** badge. Open **Workflows → New Workflow**. On the canvas, click **+ Add Trigger**. In the **Paths** panel, open the **Apps** tab and select **Razorpay** — its **Triggers** are listed underneath. Use the search box if you have many connectors. Click the **+** below any node to add a step, then pick **Razorpay** again — this time the panel lists its **Actions**. Fill in the fields for the trigger or action you picked. Required fields are marked with a red asterisk (\*). Under **Selected account**, choose an already-connected account, or click **Add Account** to connect one now. Click **Save**. Use **Test** to verify the step, then toggle **Publish** when the workflow is ready. The steps are the same for every connector. For the full workflow builder guide, see [Using MCP in Workflows](/mcp/workflows). ## 5. Available tools This server exposes **32 tools**. Tools marked **⚠️** are guarded — destructive actions (refunds, cancellations, on-demand settlements) require you to **confirm** before they run. ### Payments | Tool name | What it does | Changes data? | | ------------------- | ---------------------------------------- | ------------- | | **Fetch Payment** | Fetch a single payment by `payment_id`. | No | | **List Payments** | List recent payments (default 100). | No | | **Capture Payment** | Capture an authorized payment. | ✏️ Yes | | **Order Payments** | List all payments made against an order. | No | ### Refunds | Tool name | What it does | Changes data? | | ------------------- | --------------------------------------------------------------- | ------------- | | **Create Refund** | Create a refund (full or partial). **Requires `confirm=True`.** | ⚠️ Yes | | **Fetch Refund** | Fetch a refund by `refund_id`. | No | | **List Refunds** | List all refunds across the account. | No | | **Payment Refunds** | List all refunds for a specific payment. | No | ### Orders | Tool name | What it does | Changes data? | | ---------------- | --------------------------------- | ------------- | | **Create Order** | Create a new order. | ✏️ Yes | | **Fetch Order** | Fetch an order by `order_id`. | No | | **List Orders** | List recent orders (default 100). | No | ### Customers | Tool name | What it does | Changes data? | | ------------------------ | ----------------------------------------------- | ------------- | | **Create Customer** | Create a customer (optionally with an address). | ✏️ Yes | | **Add Customer Address** | Attach an address to an existing customer. | ✏️ Yes | | **Fetch Customer** | Fetch a customer by `customer_id`. | No | ### Payment links | Tool name | What it does | Changes data? | | ----------------------- | --------------------------------------------------- | ------------- | | **Create Payment Link** | Create a shareable payment link. | ✏️ Yes | | **Fetch Payment Link** | Fetch a payment link by ID. | No | | **Cancel Payment Link** | Cancel a payment link. **Requires `confirm=True`.** | ⚠️ Yes | ### Settlements | Tool name | What it does | Changes data? | | ------------------------------- | --------------------------------------------------------------------------- | ------------- | | **Fetch Settlement** | Fetch a settlement by ID. | No | | **List Settlements** | List settlements (default 100). | No | | **Create On-demand Settlement** | Create an on-demand settlement (early payout). **Requires `confirm=True`.** | ✏️ Yes | | **Settlement Report** | Get the combined settlement reconciliation report. | No | ### Subscriptions | Tool name | What it does | Changes data? | | ----------------------- | --------------------------------------------------- | ------------- | | **Fetch Subscription** | Fetch a subscription by ID. | No | | **List Subscriptions** | List subscriptions (default 100). | No | | **Create Subscription** | Create a new subscription. | ✏️ Yes | | **Update Subscription** | Update an existing subscription. | ✏️ Yes | | **Cancel Subscription** | Cancel a subscription. **Requires `confirm=True`.** | ⚠️ Yes | | **Pause Subscription** | Pause a subscription. | ⚠️ Yes | | **Resume Subscription** | Resume a paused subscription. | ✏️ Yes | ### Plans | Tool name | What it does | Changes data? | | --------------- | ------------------------- | ------------- | | **Fetch Plan** | Fetch a plan by ID. | No | | **List Plans** | List plans (default 100). | No | | **Create Plan** | Create a billing plan. | ✏️ Yes | **Create Refund**, **Cancel Payment Link**, **Cancel Subscription**, and **Create On-demand Settlement** are protected. They return a preview and **do not execute** until they are re-invoked with `confirm=True`. This prevents accidental refunds, cancellations, or payouts. ## 6. Example usage **"Did payment `pay_ NfX29kLm` go through? If it did, refund it in full."** → Runs **Fetch Payment** to check status, then **Create Refund** (asks you to confirm before issuing the refund). **"Create a ₹1,499 payment link for this customer and text it to them."** → Runs **Create Payment Link** (amount in paise, i.e. `149900`) and returns the shareable link with SMS/email notification enabled. ## 7. Permissions & data access **UnleashX can:** * Read payments, orders, refunds, settlements, customers, subscriptions, and plans. * Create orders, payment links, customers, subscriptions, and plans. * Capture payments, issue refunds, and create on-demand settlements (with confirmation). * Update, pause, resume, and cancel subscriptions, and cancel payment links (cancellations require confirmation). **UnleashX cannot:** * See full card numbers, full email addresses, or full phone numbers — these are automatically masked/redacted in responses. * Change your Razorpay account settings, bank details, webhooks, or KYC. * Move money outside the actions above (e.g. it cannot transfer funds to arbitrary accounts). **How to disconnect:** In your agent's **Data Connectors**, open Razorpay and choose **Disconnect** to stop UnleashX from using the keys immediately. To fully revoke access, **regenerate** (or delete) the API key pair in **Settings → API Keys** so the old `key_id`/`key_secret` no longer work anywhere. ## 8. Troubleshooting | Problem | What it means | How to fix it | | ----------------------------- | ------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | | `401 Unauthorized` | The `key_id`/`key_secret` is missing, wrong, or was regenerated. | Reconnect with a valid key pair. Make sure you used the right mode's keys (Test vs Live). | | `403 Forbidden` | The key is valid but the account/role isn't allowed to perform that action. | Confirm the account has the feature enabled (e.g. Subscriptions, on-demand settlements) and the right role. | | "Re-invoke with confirm=True" | A protected action (refund / cancel / on-demand settlement) ran without confirmation. | Re-run the request and confirm — e.g. tell the agent to proceed. | | `400 Bad Request` on amounts | Amount was below the minimum or in the wrong unit. | Amounts are in the **smallest currency unit** (paise for INR). ₹100 = `10000`; minimum is `100`. | | Test vs Live mismatch | An ID from Test mode is queried with Live keys (or vice versa). | Use keys from the same mode the data was created in. | For general connector issues, see [/mcp/integrations](/mcp/integrations). ## 9. Frequently asked questions **Is my payment data stored by UnleashX?** No. UnleashX calls the Razorpay API on demand for each request. Card numbers, emails, and phone numbers are also redacted in the data the agent sees. **Will the agent accidentally refund or cancel something?** No. Refunds, cancellations, and on-demand settlements are guarded — they only run after you explicitly confirm, so they can't fire by accident. **Can I test before going live?** Yes. Generate a **Test mode** key pair, connect that, and exercise the workflows with test data. Switch to a **Live mode** key only when you're ready to handle real money. **How do I rotate my keys?** In **Settings → API Keys**, regenerate the key pair, then reconnect Razorpay in UnleashX with the new `key_id`/`key_secret`. The old secret stops working immediately. ## 10. References * [Razorpay Dashboard](https://dashboard.razorpay.com) * [Generate API Keys (docs)](https://razorpay.com/docs/api/authentication/) * [Razorpay API reference](https://razorpay.com/docs/api/) * [Payment Links](https://razorpay.com/docs/payments/payment-links/) * [Subscriptions & Plans](https://razorpay.com/docs/payments/subscriptions/) * [Settlements](https://razorpay.com/docs/settlements/) # Reddit Source: https://docs.unleashx.ai/mcp/reddit Let your UnleashX agent search Reddit, read posts and comments, monitor subreddits, and post on your behalf. # Reddit > **In one line:** Connect Reddit so your UnleashX agent can search discussions, read posts and comments across subreddits, track what people are saying, and post or reply on your behalf — all in plain language. | | | | ------------------ | ---------------------------------------------------------------------------------------------------------------------------- | | **Category** | Social & Web | | **Authentication** | OAuth (Reddit) | | **Setup time** | \~3 minutes | | **Difficulty** | Easy | | **Best for** | Marketing, research, and community teams that want an AI agent to monitor subreddits, gather sentiment, and engage on Reddit | ## 1. Overview Reddit is one of the largest discussion platforms on the web — thousands of communities (subreddits) where people ask questions, share news, and debate everything from products to politics. It's a rich source of real, unfiltered conversation. Once connected to UnleashX, your agent can search Reddit, read the top or newest posts in any subreddit, pull the comment threads under a post, look up a user's public activity, and — when you want it to — submit posts, leave comments, and vote. It acts through your own Reddit sign-in, so it posts as you and respects Reddit's rules and rate limits. Connecting Reddit to UnleashX turns Reddit into a live research and engagement channel. Instead of scrolling threads by hand, you ask your agent to surface what's trending in a community, summarize the discussion, or reply to a relevant post — all from a normal conversation. ## 2. What you'll need * A Reddit account in good standing. * For posting/commenting: enough account age and karma to satisfy the target subreddit's rules (some communities restrict new accounts). * An UnleashX account with access to **Data Connectors**. No API key to paste. Reddit uses OAuth — you click **Authorize** and sign in with Reddit. Reddit enforces **per-subreddit rules and site-wide rate limits**. Posting too often, or to communities that restrict new/low-karma accounts, can get actions blocked or your account flagged. Have the agent engage sparingly and follow each subreddit's rules. ## 3. Get your credentials There's no key to copy. Authentication runs through Reddit's secure OAuth sign-in. Connecting Reddit (Section 4) opens a Reddit **Authorize** window. Sign in with your Reddit account at `https://www.reddit.com/login`. Complete two-factor authentication if you have it enabled. Reddit shows the access UnleashX is requesting (see the scopes table). Click **Allow**. Reddit redirects you back automatically and the connector links to your account. Behind the scenes UnleashX calls Reddit with a `Bearer` token — you never handle the token yourself. **Permissions (Reddit OAuth scopes) UnleashX requests:** | Scope | Why UnleashX needs it | | -------------- | ----------------------------------------------------- | | `identity` | Read your Reddit username and basic account info. | | `read` | Read posts, comments, and listings across subreddits. | | `mysubreddits` | See the subreddits you're subscribed to. | | `submit` | Submit posts and comments on your behalf. | | `vote` | Upvote and downvote posts and comments. | | `save` | Save and unsave posts. | | `history` | Read your posts, comments, and saved items. | Reddit shows exactly which permissions UnleashX is asking for on the Allow screen. Reddit — not UnleashX — enforces these limits. ## 4. Connect on UnleashX Go to [https://www.tryunleashx.com](https://www.tryunleashx.com) and open the agent you want to connect. Inside the agent, go to **Data Connectors**. Locate **Reddit** and click **Connect** (or **Add** / **Configure**). Click **Authorize**, sign in with Reddit, and click **Allow**. You return to UnleashX and the Reddit connector shows a **Connected** badge. ### Use Reddit in a Workflow Once connected, you can add **Reddit** to any automation from the **Workflows** builder. Its triggers and tools appear in the Apps panel, marked with an **MCP** badge. Open **Workflows → New Workflow**. On the canvas, click **+ Add Trigger**. In the **Paths** panel, open the **Apps** tab and select **Reddit** — its **Triggers** are listed underneath. Use the search box if you have many connectors. Click the **+** below any node to add a step, then pick **Reddit** again — this time the panel lists its **Actions**. Fill in the fields for the trigger or action you picked. Required fields are marked with a red asterisk (\*). Under **Selected account**, choose an already-connected account, or click **Add Account** to connect one now. Click **Save**. Use **Test** to verify the step, then toggle **Publish** when the workflow is ready. The steps are the same for every connector. For the full workflow builder guide, see [Using MCP in Workflows](/mcp/workflows). ## 5. Available tools | Tool | What it does | Changes data? | | ------------------- | --------------------------------------------------------------------------- | ------------- | | Search Posts | Searches Reddit for posts matching a query (optionally within a subreddit). | No | | Get Subreddit Posts | Lists posts in a subreddit (hot, new, top, rising). | No | | Get Post | Retrieves a single post by ID with its details. | No | | Get Post Comments | Retrieves the comment thread under a post. | No | | Get Subreddit Info | Retrieves a subreddit's description, rules, and stats. | No | | Search Subreddits | Finds subreddits matching a query. | No | | Get User Profile | Retrieves a Reddit user's public profile. | No | | Get User Posts | Lists a user's public posts. | No | | Get User Comments | Lists a user's public comments. | No | | Get My Subreddits | Lists the subreddits you're subscribed to. | No | | Submit Post | Submits a new text or link post to a subreddit. | ✏️ Yes | | Submit Comment | Replies with a comment on a post or comment. | ✏️ Yes | | Vote | Upvotes or downvotes a post or comment. | ✏️ Yes | | Save Post | Saves a post to your account. | ✏️ Yes | | Send Message | Sends a private message to a user. | ✏️ Yes | | Delete Post | Deletes one of your own posts. | ⚠️ Yes | | Delete Comment | Deletes one of your own comments. | ⚠️ Yes | ## 6. Example usage **"What are people saying about our product in r/SaaS this week? Summarize the top threads."** → Runs Get Subreddit Posts (or Search Posts) to pull recent discussions, then Get Post Comments to read the threads before summarizing. **"Find the question about voice AI pricing in r/artificial and post a helpful reply linking our docs."** → Runs Search Posts to find the thread, then Submit Comment to post the reply. ## 7. Permissions & data access **UnleashX can:** * Search Reddit and read posts, comments, subreddits, and public user activity. * List the subreddits you subscribe to. * Submit posts and comments, vote, save posts, and send messages on your behalf. * Delete your own posts and comments (these tools are clearly marked ⚠️). **UnleashX cannot:** * Post to communities where your account doesn't meet the rules, or bypass rate limits. * Read private subreddits or content your account can't see. * Act as a moderator unless your account already has those privileges. * Change your Reddit password or account security settings. **To disconnect:** In UnleashX, open **Data Connectors → Reddit → Disconnect**. You can also revoke access under Reddit **Settings → Privacy & Security → Connected apps** (`https://www.reddit.com/prefs/apps`). Disconnecting revokes access immediately. ## 8. Troubleshooting | Problem | What it means | How to fix it | | --------------------------------- | --------------------------------------------------------------- | ------------------------------------------------------------------------- | | **401 Unauthorized** | The Reddit token expired or was revoked. | Reconnect Reddit in **Data Connectors** and sign in again. | | **403 Forbidden** | Your account can't perform that action in the target subreddit. | Check the subreddit's rules (age/karma limits) or pick another community. | | **429 Too Many Requests** | You hit Reddit's rate limit. | Wait a minute and retry; have the agent engage less frequently. | | **Post removed by AutoModerator** | The subreddit's automod filtered the post. | Review the subreddit rules and adjust the content. | | **Empty results** | The query matched nothing, or the subreddit is private/banned. | Broaden the query or verify the subreddit name. | For general MCP issues, see [/mcp/integrations](/mcp/integrations). ## 9. Frequently asked questions **Does the agent post as me?** Yes. Actions run through your own Reddit sign-in, so posts, comments, and votes are attributed to your account. **Is Reddit data stored by UnleashX?** No. UnleashX reads Reddit live through the API per request; it doesn't keep a copy of Reddit content. **Can the agent read private or NSFW content?** It can only see what your account can see. Private subreddits you don't belong to remain inaccessible. **Will heavy use get my account limited?** It can. Reddit rate-limits API access and communities restrict spammy behavior — keep the agent's posting deliberate and rule-abiding. ## 10. References * Reddit API documentation: [https://www.reddit.com/dev/api/](https://www.reddit.com/dev/api/) * Reddit OAuth2 guide & scopes: [https://github.com/reddit-archive/reddit/wiki/OAuth2](https://github.com/reddit-archive/reddit/wiki/OAuth2) * Reddit connected apps / revoke access: [https://www.reddit.com/prefs/apps](https://www.reddit.com/prefs/apps) * Reddit API terms & rate limits: [https://support.reddithelp.com/hc/en-us/articles/16160319875092](https://support.reddithelp.com/hc/en-us/articles/16160319875092) # Reporting & Dashboards Source: https://docs.unleashx.ai/mcp/reporting Read your agent, call, campaign, and workflow metrics straight from UnleashX. # Reporting & Dashboards > **In one line:** Let your UnleashX assistant pull the same numbers you see on the Conversations, Agent Dashboard, Campaign, and Workflow screens — and answer questions about them. | | | | ------------------ | ------------------------------------------------------------------------ | | **Category** | Dev Tools | | **Authentication** | Platform-managed | | **Setup time** | \~0 minutes (always available) | | **Difficulty** | Easy | | **Best for** | Dashboards, call/campaign analytics, and on-demand performance questions | ## 1. Overview Reporting & Dashboards is the read-only analytics surface for your UnleashX workspace. It wraps the endpoints behind the Conversations, Agent Dashboard, Campaign, and Workflow screens, so an assistant can answer "how did we do?" with real numbers. Once available, your assistant can summarize conversations, list your agents, pull dashboard KPIs and duration histograms, list campaigns and their audiences, get per-call records, and review workflow run history — all scoped to your own data automatically. Because it reads only the data you already own, it's platform-native: it uses your signed-in session, requires no connection step, and is always available. Everything it returns is read-only — it never creates, edits, or deletes. ## 2. What you'll need Reporting is **native to UnleashX** and **always available** — there's no connection step, no third-party account, and no API key to manage. It reads your own metrics using your signed-in session. * An active UnleashX account (signed in). * Existing agents/campaigns/workflows whose metrics you want to view. * That's it — no admin setup is required for read-only reporting. ## 3. Get your credentials There are **no credentials to create and no connection step**. Reporting authenticates with your session JWT (sent in a `token` header). The token resolves to your company/workspace server-side, so you never pass workspace or company identifiers by hand. There is nothing for an admin to configure for normal use. The integration reuses the same UnleashX base URL and session-token plumbing as the rest of the platform; in standalone/CLI contexts a token can be supplied via environment, but in the product it's automatic. | Platform-managed setting | Plain-English reason it exists | | ---------------------------- | ------------------------------------------------------------ | | Session JWT (`token` header) | Authenticates you and scopes every report to your workspace. | | UnleashX base URL | Points reporting at the environment you signed into. | ## 4. Connect on UnleashX Go to [https://www.tryunleashx.com](https://www.tryunleashx.com) and open your assistant. Reporting is platform-native and **always on** — you won't find a Connect button because there's nothing to authorize beyond your session. Ask a reporting question (e.g. "show today's call KPIs"). The assistant runs the right reporting tool using your session. If numbers come back scoped to your workspace, it's working. If you see a session error, sign in again. ### Use Reporting & Dashboards in a Workflow Once connected, you can add **Reporting & Dashboards** to any automation from the **Workflows** builder. Its triggers and tools appear in the Apps panel, marked with an **MCP** badge. Open **Workflows → New Workflow**. On the canvas, click **+ Add Trigger**. In the **Paths** panel, open the **Apps** tab and select **Reporting & Dashboards** — its **Triggers** are listed underneath. Use the search box if you have many connectors. Click the **+** below any node to add a step, then pick **Reporting & Dashboards** again — this time the panel lists its **Actions**. Fill in the fields for the trigger or action you picked. Required fields are marked with a red asterisk (\*). Under **Selected account**, choose an already-connected account, or click **Add Account** to connect one now. Click **Save**. Use **Test** to verify the step, then toggle **Publish** when the workflow is ready. The steps are the same for every connector. For the full workflow builder guide, see [Using MCP in Workflows](/mcp/workflows). ## 5. Available tools | Tool | What it does | Changes data? | | -------------------------- | ------------------------------------------------------------------------ | ------------- | | Conversations Summary | Grouped or flat summary of calling executions (Conversations screen) | No | | Agents List | List your agents as `[{id, name}]`, filtered by type (default voice) | No | | Agent Executions List | Detailed per-call execution records (recent-calls table) | No | | Dashboard Data | Main calling dashboard KPIs (totals, answered/failed, in/outbound, cost) | No | | Dashboard Meta | Dashboard meta widgets (active agents, call-duration histogram) | No | | Campaign List | Paginated campaign list with audience progress counts | No | | Campaign Audience List | Per-contact audience list for one campaign | No | | Campaign Audience Stats | Aggregate audience KPIs for one campaign | No | | Campaign Conversation List | Per-call records for one campaign | No | | Workflow Execution History | Paginated workflow run history (parent runs) | No | | Workflow Data List | Workflow definitions with per-workflow execution stats | No | Every reporting tool is read-only. Creation and mutation (agents, campaigns) live in the separate **Agents** integration. ## 6. Example usage **"Show me today's call KPIs for our main voice agent."** → Runs **Agents List** to resolve the agent, then **Dashboard Data** (and **Dashboard Meta**) scoped to that agent. **"How is the Winter Sale campaign doing — pickup rate and remaining contacts?"** → Runs **Campaign List** to find the campaign, then **Campaign Audience Stats** for the aggregate numbers. ## 7. Permissions & data access **UnleashX can:** * Read conversation, agent-dashboard, campaign, and workflow metrics for your workspace. * List your agents and campaigns and return per-call records. * Auto-paginate large result sets and trim bulky fields for fast answers. **UnleashX cannot:** * Create, edit, or delete any agent, campaign, or record (read-only by design). * Access data outside the workspace tied to your session. * Show another company's metrics. **To disconnect:** There's no connection to revoke — Reporting only ever reads your own data using your session. Signing out ends access. ## 8. Troubleshooting | Problem | What it means | How to fix it | | ---------------------------------------- | --------------------------------------------------------- | ------------------------------------------------------------ | | 401 / "session expired" | The session JWT is missing or expired | Sign in again on UnleashX | | 403 / "session expired" with valid token | Token minted on a different environment than the base URL | Use the environment you signed into (prod JWT with prod URL) | | Empty results | No data in the selected date range or filters | Widen the date range or remove filters | | Agent type returns 0 | `agent_type` not specified (defaults to voice = 3) | Pass `agent_type` = 2 (chatbot) or 4 (general) explicitly | | Wrong/blank trend data | Some blocks (e.g. `trend`) are intentionally stripped | Use a dedicated time-series source if you need volume curves | For general issues, see [/mcp/integrations](/mcp/integrations). ## 9. Frequently asked questions **Do I need to connect anything?** No. Reporting is native and always available — it reads your own metrics using your session JWT. **Can it change my data?** No. Every reporting tool is strictly read-only. Mutations live in the Agents integration. **Why is my data scoped automatically?** The session token resolves to your company/workspace server-side, so reports always reflect your data without you passing IDs. **Can multiple team members use it?** Yes. Each member sees the metrics their own session and role allow. ## 10. References * UnleashX dashboard: [https://www.tryunleashx.com](https://www.tryunleashx.com) * UnleashX integrations help: [/mcp/integrations](/mcp/integrations) * Support: [cs@unleashx.ai](mailto:cs@unleashx.ai) # SendGrid Source: https://docs.unleashx.ai/mcp/sendgrid Let UnleashX send email through SendGrid and manage contacts, lists and the suppression list. # SendGrid > **In one line:** Connect SendGrid so UnleashX can send emails, manage contacts and lists, validate addresses, and clean up bounced/blocked recipients — all from a conversation or automation. | | | | ------------------ | --------------------------------------------------------------------------------------------------------------------------------------- | | **Category** | Marketing | | **Authentication** | API Key | | **Setup time** | \~3 minutes | | **Difficulty** | Easy | | **Best for** | Teams that send transactional or notification email through SendGrid and want their agent to send messages and keep contact lists tidy. | ## 1. Overview SendGrid (by Twilio) is an email delivery platform used to send transactional and marketing email reliably at scale, with contact lists, custom fields and deliverability tooling. Once connected to UnleashX, your agent can send an email on demand, add or update a contact, organize contacts into lists, validate an address before sending, and remove blocked or bounced recipients from the suppression list. Connecting SendGrid to UnleashX means follow-up emails and list hygiene happen automatically as part of your workflows, without logging into the SendGrid dashboard. ## 2. What you'll need * A SendGrid account. * A **verified sender** (single sender or authenticated domain) — required to send email. * Permission to create an **API key** (admin access to the SendGrid account). No admin access? Ask your SendGrid admin to create an API key and verify a sender, then share the key and the verified "from" address with you. ## 3. Get your credentials UnleashX authenticates to SendGrid with an **API key**. In SendGrid, go to **Settings → API Keys**: `https://app.sendgrid.com/settings/api_keys` Click **Create API Key**, name it "UnleashX", and choose **Full Access** (or a restricted key with Mail Send + Marketing/Contacts permissions). Copy the key now. SendGrid shows the API key only once. If you lose it, you must create a new one. Go to **Settings → Sender Authentication** and verify the email address or domain you'll send from. | Permission the key needs | Why UnleashX needs it | | --------------------------------- | ------------------------------------------------------------- | | Mail Send | Send transactional emails. | | Marketing → Contacts (read/write) | Create/update contacts and manage lists. | | Marketing → Lists (read/write) | Create and delete contact lists. | | Suppressions → Blocks | List, read and remove blocked addresses. | | Email Validation | Validate an address before sending (if enabled on your plan). | ## 4. Connect on UnleashX Sign in at [https://www.tryunleashx.com](https://www.tryunleashx.com) and open the agent you want to connect. Go to **Data Connectors** and find **SendGrid**. Click **Connect** / **Add** / **Configure** and paste your SendGrid API key. Provide your verified sender email if prompted. Save. The status will switch to a **Connected** badge. ### Use SendGrid in a Workflow Once connected, you can add **SendGrid** to any automation from the **Workflows** builder. Its triggers and tools appear in the Apps panel, marked with an **MCP** badge. Open **Workflows → New Workflow**. On the canvas, click **+ Add Trigger**. In the **Paths** panel, open the **Apps** tab and select **SendGrid** — its **Triggers** are listed underneath. Use the search box if you have many connectors. SendGrid triggers in the Apps panel Click the **+** below any node to add a step, then pick **SendGrid** again — this time the panel lists its **Actions**. SendGrid actions in the Apps panel Fill in the fields for the trigger or action you picked. Required fields are marked with a red asterisk (\*). Under **Selected account**, choose an already-connected account, or click **Add Account** to connect one now. Click **Save**. Use **Test** to verify the step, then toggle **Publish** when the workflow is ready. The steps are the same for every connector. For the full workflow builder guide, see [Using MCP in Workflows](/mcp/workflows). ## 5. Available tools | Tool | What it does | Changes data? | | ------------------------ | -------------------------------------------------- | ------------- | | Send Email | Send an email to a recipient. | ✏️ Yes | | Create List | Create a new contact list. | ✏️ Yes | | Add or Update Contact | Add or update a contact (optionally add to lists). | ✏️ Yes | | Get All Lists | List all contact lists. | No | | Get All Contacts | List all contacts. | No | | Get Contact Fields | List available custom contact fields. | No | | Delete List | Delete a list (optionally its contacts). | ⚠️ Yes | | List Blocks | List blocked email addresses (suppressions). | No | | Get Block | Look up a single blocked address. | No | | Delete Block | Remove an address from the block list. | ⚠️ Yes | | Validate Email | Validate an email address. | No | | Remove Contact from List | Remove contacts from a list. | ⚠️ Yes | | Delete Contacts | Permanently delete contacts by ID or email. | ⚠️ Yes | ## 6. Example usage **"Email [jane@acme.com](mailto:jane@acme.com) a subject 'Your demo is confirmed' with the details below."** Runs **Send Email** from your verified sender address. **"Add [jane@acme.com](mailto:jane@acme.com) to my 'Newsletter' list and remove her old blocked entry."** Runs **Get All Lists** (to find the list), **Add or Update Contact**, and **Delete Block** if she was previously blocked. ## 7. Permissions & data access **UnleashX can:** * Send emails from your verified sender. * Create/update/delete contacts and lists. * Read and remove suppression (block) entries and validate addresses. **UnleashX cannot:** * Send from an unverified sender address. * Access SendGrid data beyond what the API key's permissions allow. * Change your SendGrid billing or account-level settings. **To disconnect:** In UnleashX go to **Data Connectors → SendGrid → Disconnect**. To fully revoke, delete the API key in **SendGrid → Settings → API Keys**. Revocation is immediate. ## 8. Troubleshooting | Problem | What it means | How to fix it | | -------------------------------- | ----------------------------------------------------------------- | ------------------------------------------------------------------------------------ | | `401 Unauthorized` | The API key is missing, wrong or deleted. | Reconnect in UnleashX with a valid key. | | `403 Forbidden` | The key lacks the needed permission (e.g. Mail Send or Contacts). | Edit the key's permissions in SendGrid, or create a Full Access key, and reconnect. | | Email accepted but not delivered | Sender not verified or recipient is suppressed/blocked. | Verify your sender; use **List Blocks** and **Delete Block** to clear the recipient. | | `400 Bad Request` on send | Missing/invalid "from" email or malformed recipient. | Provide a valid verified sender and recipient and retry. | | `429 Too Many Requests` | You hit SendGrid's rate limit. | Wait and retry. | For general connector issues, see [/mcp/integrations](/mcp/integrations). ## 9. Frequently asked questions **Why do I need a verified sender?** SendGrid blocks email from unverified addresses to protect deliverability. Verify a single sender or authenticate your domain before sending. **Is my contact data stored by UnleashX?** No. Tools call the SendGrid API live and return the result; UnleashX doesn't keep a copy of your contacts. **How do I rotate my key?** Create a new API key in SendGrid, reconnect in UnleashX, then delete the old key. ## 10. References * SendGrid API reference: [https://www.twilio.com/docs/sendgrid/api-reference](https://www.twilio.com/docs/sendgrid/api-reference) * API Keys page: [https://app.sendgrid.com/settings/api\_keys](https://app.sendgrid.com/settings/api_keys) * Sender Authentication: [https://www.twilio.com/docs/sendgrid/ui/sending-email/sender-verification](https://www.twilio.com/docs/sendgrid/ui/sending-email/sender-verification) # Shopify Source: https://docs.unleashx.ai/mcp/shopify Let your UnleashX agent run your Shopify store — orders, fulfillment, refunds, products, inventory, customers and content. # Shopify > **In one line:** Connect Shopify so your UnleashX agent can look up and refund orders, ship them with tracking, keep products and stock accurate, manage customers and storefront content, and start a workflow the moment an order lands. | | | | ------------------ | ------------------------------------------------------------------------------------------- | | **Category** | CRM & Marketing | | **Authentication** | Custom app Client ID + Client Secret | | **Setup time** | \~10 minutes | | **Difficulty** | Medium | | **Best for** | Stores that want an agent handling order support, fulfillment and catalog upkeep end to end | **This connector was rebuilt.** It now runs on the Shopify **Admin GraphQL API** and authenticates with a custom app's **Client ID and Client Secret**, not a pasted Admin API access token. If you connected Shopify before this change, the old connection will stop working — follow Section 3 and reconnect. The Storefront API token is no longer used at all. ## 1. Overview Shopify is a commerce platform: products and variants, inventory across locations, orders and their fulfillments, customers, and the storefront's pages and blogs. Once connected to UnleashX, your agent works against the Shopify Admin API on the store's behalf. It can search and read orders, refund them in full or in part, email an invoice, and ship a fulfillment order with tracking. It can create, update and delete products, add and reprice variants, and adjust or set stock at a specific location. It can manage customers, collections, storefront pages, blog articles and metafields, and build a draft order and turn it into a real one. Eight polling triggers let a workflow start on its own — a new order, a paid order, a cancelled order, a refund, a new customer, a new product, a new draft order, or a new page. Connecting Shopify to UnleashX turns store operations into conversation and automation: "where's my order" gets answered and, if needed, refunded; a new order fires a workflow; stock corrections land at the right location without anyone opening the admin. ## 2. What you'll need * A Shopify store and its **shop domain** (`your-store.myshopify.com`). * A **Shopify Partner account** to create the custom app — [partners.shopify.com](https://partners.shopify.com/), free to sign up. * Permission to install an app on the store (store **owner**, or staff with app-install rights). * The app's **Client ID** and **Client Secret** once it's installed. Shopify no longer issues the old non-expiring `shpat_` Admin API access tokens for newly created admin custom apps. UnleashX stores the Client ID and Client Secret and exchanges them for a short-lived Admin API token automatically, refreshing it about every 24 hours — which is why you supply two values instead of a token. ## 3. Get your credentials Go to [partners.shopify.com](https://partners.shopify.com/) → **Apps → Create app**. Name it "UnleashX". In the app's **Distribution** settings choose **Custom distribution** and enter the store's `your-store.myshopify.com` domain. This locks the app to that one store. Distribution can't be changed once it's set. Pick **Custom distribution** — an app set up for the public app store won't work here. In **Configuration → Admin API integration**, enable the scopes for the tools you plan to use (table below). Generate the install link from the app's overview and install it on the store. Nothing authenticates until the app is installed. Open the app's **Client credentials** (also shown as API key and API secret key) and copy both. Treat the Client Secret like a password. Anyone holding both values can mint an Admin API token for your store. ### Scopes this app needs Grant only what your workflows use. When a call fails for a missing scope, the error names the scope it wanted. | Scope | Needed for | | --------------------------------------------------------------------------------------- | ------------------------------------------------------------------------ | | `read_orders`, `write_orders` | Order search and reads, refunds, invoices, tags | | `read_fulfillments`, `write_fulfillments` | Creating fulfillments and updating tracking | | `read_merchant_managed_fulfillment_orders`, `write_merchant_managed_fulfillment_orders` | Listing and acting on fulfillment orders shipped from your own locations | | `read_products`, `write_products` | Products, variants, collections | | `read_inventory`, `write_inventory` | Stock levels, adjusting and setting quantities | | `read_locations` | Listing inventory locations | | `read_customers`, `write_customers` | Customer search, create and update | | `read_content`, `write_content` | Storefront pages, blogs and articles | | `read_draft_orders`, `write_draft_orders` | Draft orders and completing them | You'll provide three things when connecting: the **shop domain**, the **Client ID**, and the **Client Secret**. ## 4. Connect on UnleashX Sign in at [https://www.tryunleashx.com](https://www.tryunleashx.com) and open the agent you want to connect. In the agent, go to **Data Connectors** and find **Shopify**. Click **Connect** / **Add** / **Configure** and enter: | Field | What to enter | | ----------------- | --------------------------------------------------------------------------------- | | **Shop Domain** | `your-store.myshopify.com` — the `.myshopify.com` address, not your custom domain | | **Client ID** | From the custom app's client credentials | | **Client Secret** | The matching secret | | **Account Name** | A label for this connection inside UnleashX | Save. The status will switch to a **Connected** badge. Each connection is one store. To run several stores, add one connection per store — every tool also accepts an optional `shop_domain` to target a specific connected store explicitly. ### Use Shopify in a Workflow Once connected, you can add **Shopify** to any automation from the **Workflows** builder. Its triggers and tools appear in the Apps panel, marked with an **MCP** badge. Open **Workflows → New Workflow**. On the canvas, click **+ Add Trigger**. In the **Paths** panel, open the **Apps** tab and select **Shopify** — its **Triggers** are listed underneath. Use the search box if you have many connectors. Click the **+** below any node to add a step, then pick **Shopify** again — this time the panel lists its **Actions**. Fill in the fields for the trigger or action you picked. Required fields are marked with a red asterisk (\*). Under **Selected account**, choose an already-connected account, or click **Add Account** to connect one now. Click **Save**. Use **Test** to verify the step, then toggle **Publish** when the workflow is ready. The steps are the same for every connector. For the full workflow builder guide, see [Using MCP in Workflows](/mcp/workflows). ## 5. Available tools Names match the **Workflows** Apps panel, which lists them alphabetically; they're grouped here by what they act on. The **Tool ID** is what the agent calls behind the scenes. Every tool also takes an optional `shop_domain` when you have more than one store connected. **Orders** | Tool | Tool ID | What it does | Required | Changes data? | | ------------------ | ---------------------------- | -------------------------------------------------------------------- | ---------- | ------------- | | Search Orders | `shopify_search_orders` | Searches orders, newest first | — | No | | Get Order | `shopify_get_order` | Gets one order with line items, customer, addresses and fulfillments | `order_id` | No | | Refund Order | `shopify_refund_order` | Refunds an order in full or in part | `order_id` | ⚠️ Yes | | Send Order Invoice | `shopify_send_order_invoice` | Emails the customer an invoice for an order | `order_id` | ✏️ Yes | **Fulfillment** | Tool | Tool ID | What it does | Required | Changes data? | | --------------------------- | ------------------------------------- | ------------------------------------------------------ | ---------------------- | ------------- | | List Fulfillment Orders | `shopify_list_fulfillment_orders` | Lists what can be shipped for an order, and from where | `order_id` | No | | Create Fulfillment | `shopify_create_fulfillment` | Ships a fulfillment order, optionally with tracking | `fulfillment_order_id` | ✏️ Yes | | Update Fulfillment Tracking | `shopify_update_fulfillment_tracking` | Updates tracking on an existing fulfillment | `fulfillment_id` | ✏️ Yes | **Products and variants** | Tool | Tool ID | What it does | Required | Changes data? | | ----------------------- | --------------------------------- | ------------------------------------------------------------------------ | ------------------------ | ------------- | | Search Products | `shopify_search_products` | Searches products, newest first | — | No | | Get Product | `shopify_get_product` | Gets one product with variants and inventory item IDs | `product_id` | No | | Create Product | `shopify_create_product` | Creates a product (`status` defaults to `DRAFT`) | `title` | ✏️ Yes | | Update Product | `shopify_update_product` | Updates a product; omitted fields are left unchanged | `product_id` | ✏️ Yes | | Delete Product | `shopify_delete_product` | Permanently deletes a product and its variants | `product_id` | ⚠️ Yes | | Search Product Variants | `shopify_search_product_variants` | Searches variants across the store | — | No | | Create Product Variants | `shopify_create_product_variants` | Adds variants to a product (bulk — Shopify has no single-variant create) | `product_id`, `variants` | ✏️ Yes | | Update Product Variants | `shopify_update_product_variants` | Updates variant price, SKU, barcode, compare-at price | `product_id`, `variants` | ✏️ Yes | **Inventory** | Tool | Tool ID | What it does | Required | Changes data? | | -------------------- | ------------------------------ | ------------------------------------------------------------------ | ---------------------------------------------- | ------------- | | List Locations | `shopify_list_locations` | Lists inventory locations — needed before changing stock | — | No | | Get Inventory Levels | `shopify_get_inventory_levels` | Stock for one item across locations: available, on hand, committed | `inventory_item_id` | No | | Adjust Inventory | `shopify_adjust_inventory` | Changes stock by a relative amount at one location | `inventory_item_id`, `location_id`, `delta` | ⚠️ Yes | | Set Inventory | `shopify_set_inventory` | Sets stock to an exact number at one location | `inventory_item_id`, `location_id`, `quantity` | ⚠️ Yes | Use **Adjust Inventory** when something happened (three units damaged: `delta: -3`). Use **Set Inventory** when your own system is the source of truth and you're overwriting Shopify's number. **Customers** | Tool | Tool ID | What it does | Required | Changes data? | | ---------------- | -------------------------- | --------------------------------------------------------------- | ------------- | ------------- | | Search Customers | `shopify_search_customers` | Searches customers, newest first | — | No | | Get Customer | `shopify_get_customer` | Gets one customer with lifetime spend and 10 most recent orders | `customer_id` | No | | Create Customer | `shopify_create_customer` | Creates a customer — give at least an email or a phone | — | ✏️ Yes | | Update Customer | `shopify_update_customer` | Updates a customer; omitted fields are left unchanged | `customer_id` | ✏️ Yes | **Draft orders** | Tool | Tool ID | What it does | Required | Changes data? | | -------------------- | ------------------------------ | ----------------------------------------------------------------------------- | ---------------- | ------------- | | List Draft Orders | `shopify_list_draft_orders` | Lists draft orders, most recently updated first | — | No | | Create Draft Order | `shopify_create_draft_order` | Creates a draft order and returns an invoice URL for the buyer | `line_items` | ✏️ Yes | | Complete Draft Order | `shopify_complete_draft_order` | Turns a draft into a real order — this is how an order is created via the API | `draft_order_id` | ⚠️ Yes | **Collections and content** | Tool | Tool ID | What it does | Required | Changes data? | | -------------------------- | ------------------------------------ | ---------------------------------------------------------------- | ------------------------------ | ------------- | | List Collections | `shopify_list_collections` | Lists collections, most recently updated first | — | No | | Create Collection | `shopify_create_collection` | Creates a collection — smart with `rules`, manual without | `title` | ✏️ Yes | | Add Products To Collection | `shopify_add_products_to_collection` | Adds products to a manual collection | `collection_id`, `product_ids` | ✏️ Yes | | List Pages | `shopify_list_pages` | Lists storefront pages | — | No | | Create Page | `shopify_create_page` | Creates a storefront page | `title` | ✏️ Yes | | Update Page | `shopify_update_page` | Updates a page; omitted fields are left unchanged | `page_id` | ✏️ Yes | | Delete Page | `shopify_delete_page` | Permanently deletes a storefront page | `page_id` | ⚠️ Yes | | List Blogs | `shopify_list_blogs` | Lists blogs — needed to get a blog ID before creating an article | — | No | | List Articles | `shopify_list_articles` | Lists blog articles | — | No | | Create Article | `shopify_create_article` | Creates a blog article | `blog_id`, `title` | ✏️ Yes | | Update Article | `shopify_update_article` | Updates an article; omitted fields are left unchanged | `article_id` | ✏️ Yes | **Tags, metafields and store** | Tool | Tool ID | What it does | Required | Changes data? | | -------------- | ------------------------ | ---------------------------------------------------------------- | ------------------------------------------ | ------------- | | Add Tags | `shopify_add_tags` | Adds tags to an order, customer, product, draft order or article | `resource_id`, `tags` | ✏️ Yes | | Remove Tags | `shopify_remove_tags` | Removes tags from the same resource types | `resource_id`, `tags` | ✏️ Yes | | Get Metafields | `shopify_get_metafields` | Reads custom metafields on a resource | `resource_id` | No | | Set Metafield | `shopify_set_metafield` | Creates or overwrites a metafield (upsert) | `resource_id`, `namespace`, `key`, `value` | ✏️ Yes | | Get Shop | `shopify_get_shop` | Store name, primary domain, currency, timezone and plan | — | No | **Triggers** | Trigger | Trigger ID | Fires when | | ---------------------- | -------------------------------- | ---------------------------- | | On New Order | `shopify_on_new_order` | An order is placed | | On New Paid Order | `shopify_on_new_paid_order` | An order reaches paid status | | On New Cancelled Order | `shopify_on_new_cancelled_order` | An order is cancelled | | On New Refund | `shopify_on_new_refund` | An order is refunded | | On New Customer | `shopify_on_new_customer` | A customer is created | | On New Product | `shopify_on_new_product` | A product is created | | On New Draft Order | `shopify_on_new_draft_order` | A draft order is created | | On New Page | `shopify_on_new_page` | A storefront page is created | **Refunds and stock changes are idempotent.** A retried step that sends the identical payload is collapsed by Shopify rather than refunding twice or double-counting stock. When you genuinely mean to repeat an identical operation — refunding the same amount a second time on purpose — pass your own `idempotency_key` to force it through. ## 6. Example usage **"Where's order 1042, and refund the shipping — it arrived late."** Runs **Get Order** → **Refund Order** with a shipping amount. **"Ship order 1042 with DHL tracking 1234567890."** Runs **List Fulfillment Orders** → **Create Fulfillment** with the tracking number and company. **"We found three damaged units of SKU-22 at the Mumbai warehouse."** Runs **Search Product Variants** → **List Locations** → **Adjust Inventory** with `delta: -3`. **"When a paid order comes in over ₹10,000, tag it VIP and tell the team on Slack."** A workflow starts on **On New Paid Order**, branches on the total, then runs **Add Tags** and your messaging connector. **"Build a quote for this wholesale buyer and send them a payment link."** Runs **Create Draft Order** and returns the invoice URL; **Complete Draft Order** converts it once they pay. ## 7. Permissions & data access **UnleashX CAN:** * Read and search orders, products, variants, customers, collections, pages, articles, inventory and metafields. * Refund orders, send invoices, and create fulfillments with tracking. * Create, update and delete products and pages; adjust and set stock; manage tags and metafields. * Create draft orders and complete them into real orders. * Start workflows on eight store events. **UnleashX CANNOT:** * Do anything the installed app's scopes don't allow — the failure names the missing scope. * Take payments or complete checkout on a shopper's behalf. * Change store settings, themes, staff accounts or billing. * Reach any store other than the one the app is installed on. **To disconnect:** In UnleashX go to **Data Connectors → Shopify → Disconnect**. To fully revoke access, uninstall the app from **Shopify admin → Settings → Apps and sales channels**. Revocation is immediate — the short-lived Admin token can no longer be minted. ## 8. Troubleshooting | Problem | What it means | How to fix it | | ---------------------------------------- | --------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | | `401` / `403` on every call | The app isn't installed on the store, or the Client ID/Secret is wrong | Confirm the app is installed, then re-enter both values | | `403` on one tool only | That tool's scope wasn't granted | Add the scope the error names, reinstall the app, reconnect | | `429 Too Many Requests` | Shopify's GraphQL limit bills by query **cost**, not request count | Lower the `limit` on list tools rather than just retrying | | An action "succeeds" but nothing changed | Shopify reports write failures at HTTP 200 in `userErrors` | The connector surfaces these as errors — read the message; it names the field | | A refund ran twice | Two genuinely different operations hashed to the same idempotency key, or you retried expecting a second refund | Pass an explicit `idempotency_key` when a repeat is intentional | | Domain rejected at connect time | The value isn't a `.myshopify.com` address | Use `your-store.myshopify.com`, not your custom domain | | Old setup stopped working | This connector no longer accepts a pasted Admin API token | Create a custom app and reconnect with Client ID + Client Secret | For general connector issues, see [/mcp/integrations](/mcp/integrations). ## 9. Frequently asked questions **Is my store data stored by UnleashX?** No. Tools call the Shopify Admin API live and return the result. UnleashX keeps only the bookkeeping a polling trigger needs to know what it has already seen. **Why Client ID and Client Secret instead of an access token?** Shopify's Admin API token for a custom app is now short-lived. UnleashX mints a fresh one from the two values roughly every 24 hours, so there's nothing for you to rotate manually. **What happened to the cart and newsletter tools?** They used the Storefront API and are gone. Order creation is now **Create Draft Order** → **Complete Draft Order**; customer sign-up is **Create Customer**. **Can the agent take payments?** No. It can produce a draft order with an invoice URL, and the buyer pays through Shopify's checkout. **Can I connect more than one store?** Yes. Add one connection per store, and use `shop_domain` on a step when you need to be explicit about which one it targets. **Which API version is this?** Admin GraphQL `2026-07`. The REST Admin API isn't used — it's been legacy since October 2024 and unavailable to new custom apps since April 2025. ## 10. References * Shopify Admin GraphQL API: [https://shopify.dev/docs/api/admin-graphql](https://shopify.dev/docs/api/admin-graphql) * Custom distribution apps: [https://shopify.dev/docs/apps/launch/distribution](https://shopify.dev/docs/apps/launch/distribution) * Client credentials grant: [https://shopify.dev/docs/apps/build/authentication-authorization/client-credentials](https://shopify.dev/docs/apps/build/authentication-authorization/client-credentials) * Admin API access scopes: [https://shopify.dev/docs/api/usage/access-scopes](https://shopify.dev/docs/api/usage/access-scopes) # Slack Source: https://docs.unleashx.ai/mcp/slack Let your UnleashX agent read, send, search, and manage Slack messages, channels, files, and reminders. # Slack > **In one line:** Connect Slack so your UnleashX agent can send and read messages, browse channels and users, share and find files, and set reminders — all in your workspace. | | | | ------------------ | ----------------------------------------------------------------------------------------------------------- | | **Category** | Communication | | **Authentication** | OAuth (Slack access token) | | **Setup time** | \~5 minutes | | **Difficulty** | Easy | | **Best for** | Teams that want their AI agent to post updates, answer from Slack history, and automate workspace messaging | ## 1. Overview Slack is the messaging platform where your team chats, shares files, and coordinates work across channels and direct messages. It is the day-to-day communication hub for most organizations. Once you connect Slack to UnleashX, your agent can post messages to channels and DMs, read recent conversation history, search across messages, list channels and users, upload and fetch files, and create reminders — without you switching apps. Connecting Slack to UnleashX turns your agent into a hands-on teammate: it can announce results, summarize a channel, pull a file someone shared, or nudge a colleague with a reminder — driven entirely by natural language. ## 2. What you'll need * A Slack account with access to the workspace you want to connect. * Permission to authorize apps for that workspace. Some workspaces require an **admin or Owner** to approve new app installations. * The channels you care about should exist (the agent can post to public channels it can join; for private channels the app must be invited). If you are not a workspace admin, you may see an "approval required" screen during authorization. Ask a workspace Owner/Admin to approve the UnleashX app, then retry. ## 3. Get your credentials Slack uses **OAuth**, so you don't copy a long-lived secret by hand — you click through Slack's authorization screen and Slack hands UnleashX an access token. The steps below happen automatically during **Connect on UnleashX** (Section 4); this section explains what you are approving. When you click **Connect** on the Slack connector (Section 4), UnleashX redirects you to Slack's official authorization page at `https://slack.com/oauth/v2/authorize`. At the top right of the Slack screen, confirm the **workspace** you want UnleashX to act in. Switch it if needed. Slack shows exactly what the app can do. Click **Allow** to grant access. Slack then returns an **access token** to UnleashX automatically — you never see or paste it. The access token is stored securely by UnleashX. You do not manage it manually. To stop access later, disconnect in UnleashX or revoke the app from **Slack → Settings & administration → Manage apps**. **Permissions (OAuth scopes) UnleashX requests and why:** | Scope | Why UnleashX needs it | | ----------------------- | --------------------------------------------------------- | | `chat:write` | Send messages to channels and DMs on your behalf | | `chat:write.public` | Post to public channels the app hasn't been invited to | | `channels:read` | List public channels so you can target the right one | | `groups:read` | List private channels you're a member of | | `im:read` / `mpim:read` | List direct and group direct message conversations | | `users:read` | List workspace members (names/IDs) for messaging | | `users:read.email` | Match users by email when needed | | `files:read` | Fetch info about files shared in the workspace | | `files:write` | Upload files to channels and delete files the app created | | `search:read` | Search messages across the workspace | | `reminders:write` | Create reminders for you or teammates | | `team:read` | Read basic workspace info (name, domain, icon) | ## 4. Connect on UnleashX Sign in at [https://www.tryunleashx.com](https://www.tryunleashx.com) and open the agent you want to give Slack access to. In the agent, open **Data Connectors**. Locate **Slack** in the list and click **Connect** / **Add** / **Configure**. You'll be sent to Slack's authorization page. Choose your workspace and click **Allow**. You'll be returned to UnleashX and the Slack connector will show a **Connected** badge. You're done. ### Use Slack in a Workflow Once connected, you can add **Slack** to any automation from the **Workflows** builder. Its triggers and tools appear in the Apps panel, marked with an **MCP** badge. Open **Workflows → New Workflow**. On the canvas, click **+ Add Trigger**. In the **Paths** panel, open the **Apps** tab and select **Slack** — its **Triggers** are listed underneath. Use the search box if you have many connectors. Slack triggers in the Apps panel Click the **+** below any node to add a step, then pick **Slack** again — this time the panel lists its **Actions**. Slack actions in the Apps panel Fill in the fields for the trigger or action you picked. Required fields are marked with a red asterisk (\*). Under **Selected account**, choose an already-connected account, or click **Add Account** to connect one now. Click **Save**. Use **Test** to verify the step, then toggle **Publish** when the workflow is ready. The steps are the same for every connector. For the full workflow builder guide, see [Using MCP in Workflows](/mcp/workflows). ## 5. Available tools | Tool | What it does | Changes data? | | --------------------- | ----------------------------------------------------------------- | ------------- | | Get Users | List members of the workspace | No | | Get Channels | List channels (public and private) | No | | Send Message | Send a message to a channel or DM | ✏️ Yes | | Get Workspace Info | Get workspace name, domain, and icon | No | | List Channel Types | List channel types (public, private, DM, group DM) with counts | No | | Upload File | Upload a file to one or more channels | ✏️ Yes | | List Replies | List replies in a message thread | No | | Get File | Get details about a specific file | No | | Find Message | Search messages across the workspace | No | | Delete File | Delete a file | ⚠️ Yes | | Create Reminder | Create a reminder for you or a teammate | ✏️ Yes | | Get Messages | Read recent messages from a channel | No | | List Channels by Type | List channels filtered by a specific type | No | | Create Message | Create a new message (supports threads, rich blocks, attachments) | ✏️ Yes | ## 6. Example usage **"Post 'Deploy finished, all green ✅' to the #engineering channel."** Behind the scenes: Get Channels (find the channel ID) → Send Message. **"Find the message where someone shared the Q3 budget and send it to me."** Behind the scenes: Find Message (search) → Send Message (DM you the link). ## 7. Permissions & data access **UnleashX CAN:** * Send messages to channels and direct messages you have access to. * Read recent message history and thread replies. * Search messages, list channels and users, and read workspace info. * Upload, fetch, and delete files; create reminders. **UnleashX CANNOT:** * Access workspaces you didn't authorize. * Post to private channels it hasn't been invited to. * Change workspace settings, billing, or admin configuration. * Do anything outside the scopes you approved (Section 3). **How to disconnect:** In UnleashX, open **Data Connectors → Slack → Disconnect**. You can also revoke access in **Slack → Settings & administration → Manage apps → UnleashX → Remove**. Either action revokes access immediately. ## 8. Troubleshooting | Problem | What it means | How to fix it | | ------------------------ | --------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | | `invalid_auth` / 401 | The access token is missing, expired, or revoked | Reconnect Slack in **Data Connectors** to re-authorize | | `missing_scope` / 403 | The app lacks a required scope (e.g. `team:read`) | Disconnect and reconnect to grant the updated scopes | | `not_in_channel` | The app isn't a member of that channel | For public channels it auto-joins; for private channels invite the UnleashX app to the channel, then retry | | `channel_not_found` | The channel ID is wrong or inaccessible | Use Get Channels to get a valid channel ID | | Approval required screen | Your workspace requires admin approval for new apps | Ask a workspace Owner/Admin to approve UnleashX, then reconnect | For general connector issues, see [/mcp/integrations](/mcp/integrations). ## 9. Frequently asked questions **Is my Slack data stored by UnleashX?** UnleashX reads messages and files on demand to fulfill your requests. It keeps lightweight snapshots for "new message / new user / new channel" triggers so it can detect what changed; these are tied to your session and cleared when the session ends. **Can multiple team members connect Slack?** Yes. Each user authorizes their own workspace access, and the agent acts with the permissions granted by whoever connected. **How do I rotate or revoke access?** Disconnect in UnleashX or remove the UnleashX app from **Slack → Manage apps**. Reconnecting issues a fresh token automatically. **Why can't the agent read a private channel?** Slack requires the app to be a member of private channels. Invite the UnleashX app to the channel, then try again. ## 10. References * Slack API documentation: [https://api.slack.com/docs](https://api.slack.com/docs) * Slack OAuth scopes reference: [https://api.slack.com/scopes](https://api.slack.com/scopes) * Manage installed apps: [https://slack.com/apps/manage](https://slack.com/apps/manage) * Create/manage Slack apps: [https://api.slack.com/apps](https://api.slack.com/apps) # Stripe Source: https://docs.unleashx.ai/mcp/stripe Let your UnleashX agent look up Stripe customers, payments, invoices and subscriptions, and issue refunds. # Stripe > **In one line:** Connect Stripe so your UnleashX agent can answer "did that payment go through?", pull up a customer's invoices and subscriptions, issue a refund, and start a workflow the moment money moves. | | | | ------------------ | --------------------------------------------------------------------------------------------------------- | | **Category** | Dev Tools & Automation | | **Authentication** | Secret API key | | **Setup time** | \~2 minutes | | **Difficulty** | Easy | | **Best for** | Support and finance teams who want payment answers in the conversation instead of in the Stripe Dashboard | ## 1. Overview Stripe handles payments, invoices, and subscriptions. Everything hangs off the **customer**: charges and payment intents record money taken, invoices and subscriptions record money owed on a schedule, and refunds send money back. Once connected to UnleashX, your agent can list and search customers, read charges and payment intents, create a payment intent, pull up invoices and subscriptions, cancel a subscription, issue full or partial refunds, read your product catalog and prices, and check the account balance. Four polling triggers let a workflow start on its own — a new customer, a new charge, a new invoice, or a new subscription. Connecting Stripe to UnleashX puts billing answers where the conversation already is: a customer asks why they were charged, the agent finds the charge and refunds it if that's the call, and finance sees it happen without anyone opening the Dashboard. ## 2. What you'll need * A **Stripe account** with access to the Dashboard. * A **secret API key** (`sk_live_…` or `sk_test_…`) — or, better, a **restricted key** scoped to what the agent actually needs. * An UnleashX agent where you'll add the connector. A live secret key can move real money. Read Section 3's note on restricted keys before you paste a full-access `sk_live_` key into anything. ## 3. Get your credentials Stripe authenticates with a **secret key** sent as a bearer token. There's no OAuth flow — Stripe Connect exists, but it's for platforms billing on behalf of other businesses, which isn't what this connector does. Go to [dashboard.stripe.com](https://dashboard.stripe.com/) and sign in. Use the **test mode** toggle while you're setting the workflow up. A `sk_test_…` key behaves identically but touches no real money — switch to `sk_live_…` once the workflow does what you expect. Go to **Developers → API keys**. Your publishable and secret keys are listed here. Click **Create restricted key**, name it "UnleashX", and grant only the permissions in the table below. A restricted key can't be escalated later, which is the point. The secret value is shown once, at creation. Copy it now and store it in your secret manager. If you lose it, roll the key and use the new one. ### Permissions this key needs | Resource | Permission | Why UnleashX needs it | | ----------------- | ------------ | ---------------------------------------------- | | Customers | Read + Write | List, search, create, and update customers. | | Charges | Read | Read completed card payments. | | PaymentIntents | Read + Write | Read payments and create a new payment intent. | | Invoices | Read | List and read invoices. | | Subscriptions | Read + Write | Read subscriptions and cancel one. | | Products / Prices | Read | Read the catalog behind your billing. | | Refunds | Read + Write | List refunds and issue new ones. | | Balance | Read | Report available and pending funds. | If the agent only answers questions, grant **Read** everywhere and leave every Write off. The write permissions are needed only for **Create Customer**, **Update Customer**, **Create Payment Intent**, **Cancel Subscription**, and **Create Refund**. ## 4. Connect on UnleashX Sign in at [https://www.tryunleashx.com](https://www.tryunleashx.com) and open the agent you want to connect. In the agent, go to **Data Connectors** and find **Stripe**. Click **Connect** / **Add** / **Configure**, paste the **secret key**, and give the connection an **Account Name** — useful if you connect a test account and a live one. Save. The status will switch to a **Connected** badge. ### Use Stripe in a Workflow Once connected, you can add **Stripe** to any automation from the **Workflows** builder. Its triggers and tools appear in the Apps panel, marked with an **MCP** badge. Open **Workflows → New Workflow**. On the canvas, click **+ Add Trigger**. In the **Paths** panel, open the **Apps** tab and select **Stripe** — its **Triggers** are listed underneath. Use the search box if you have many connectors. Click the **+** below any node to add a step, then pick **Stripe** again — this time the panel lists its **Actions**. Fill in the fields for the trigger or action you picked. Required fields are marked with a red asterisk (\*). Under **Selected account**, choose an already-connected account, or click **Add Account** to connect one now. Click **Save**. Use **Test** to verify the step, then toggle **Publish** when the workflow is ready. The steps are the same for every connector. For the full workflow builder guide, see [Using MCP in Workflows](/mcp/workflows). ## 5. Available tools **Amounts are in the currency's smallest unit.** `1000` with currency `usd` means \*\*$10.00**, not $1,000. Same for refunds. Getting this wrong is the single most expensive mistake available here. Names match the **Workflows** Apps panel, which lists them alphabetically; they're grouped here by what they act on. The **Tool ID** is what the agent calls behind the scenes. **Customers** | Tool | Tool ID | What it does | Required | Changes data? | | --------------- | ------------------------ | ----------------------------------------------------- | ------------- | ------------- | | List Customers | `stripe_list_customers` | Lists customers, newest first; filterable by `email` | — | No | | Get Customer | `stripe_get_customer` | Gets a single customer | `customer_id` | No | | Create Customer | `stripe_create_customer` | Creates a customer | — | ✏️ Yes | | Update Customer | `stripe_update_customer` | Updates a customer; omitted fields are left unchanged | `customer_id` | ✏️ Yes | **Payments** | Tool | Tool ID | What it does | Required | Changes data? | | --------------------- | ------------------------------ | ------------------------------------------- | -------------------- | ------------- | | List Charges | `stripe_list_charges` | Lists completed card payments, newest first | — | No | | Get Charge | `stripe_get_charge` | Gets a single charge | `charge_id` | No | | List Payment Intents | `stripe_list_payment_intents` | Lists payment intents, newest first | — | No | | Get Payment Intent | `stripe_get_payment_intent` | Gets a single payment intent | `payment_intent_id` | No | | Create Payment Intent | `stripe_create_payment_intent` | Creates a payment intent | `amount`, `currency` | ✏️ Yes | **Billing** | Tool | Tool ID | What it does | Required | Changes data? | | ------------------- | ---------------------------- | ----------------------------------------------------------------- | ----------------- | ------------- | | List Invoices | `stripe_list_invoices` | Lists invoices, newest first; filterable by customer and `status` | — | No | | Get Invoice | `stripe_get_invoice` | Gets a single invoice | `invoice_id` | No | | List Subscriptions | `stripe_list_subscriptions` | Lists subscriptions, newest first | — | No | | Get Subscription | `stripe_get_subscription` | Gets a single subscription | `subscription_id` | No | | Cancel Subscription | `stripe_cancel_subscription` | Cancels immediately, or at period end with `at_period_end` | `subscription_id` | ⚠️ Yes | **Catalog** | Tool | Tool ID | What it does | Required | Changes data? | | ------------- | ---------------------- | ---------------------------------------- | ------------ | ------------- | | List Products | `stripe_list_products` | Lists products, newest first | — | No | | Get Product | `stripe_get_product` | Gets a single product | `product_id` | No | | List Prices | `stripe_list_prices` | Lists prices, optionally for one product | — | No | **Refunds and balance** | Tool | Tool ID | What it does | Required | Changes data? | | ------------- | ---------------------- | ------------------------------------------------------------------- | -------------------------------------- | ------------- | | Create Refund | `stripe_create_refund` | Refunds a charge or payment intent; omit `amount` for a full refund | `charge_id` **or** `payment_intent_id` | ⚠️ Yes | | List Refunds | `stripe_list_refunds` | Lists refunds, newest first | — | No | | Get Balance | `stripe_get_balance` | Returns funds available now and funds still pending | — | No | **Triggers** | Trigger | Trigger ID | Fires when | | ------------------- | ---------------------------- | ------------------------- | | On New Customer | `stripe_on_new_customer` | A customer is created | | On New Charge | `stripe_on_new_charge` | A charge is created | | On New Invoice | `stripe_on_new_invoice` | An invoice is created | | On New Subscription | `stripe_on_new_subscription` | A subscription is created | ## 6. Example usage **"Did [jane@acme.com](mailto:jane@acme.com) pay last month's invoice?"** Runs **List Customers** filtered by email → **List Invoices** for that customer. **"Refund order #1042 — the customer never received it."** Runs **List Charges** or **Get Payment Intent** to find the payment, then **Create Refund** for the full amount. **"Cancel their subscription at the end of the billing period, not today."** Runs **List Subscriptions** → **Cancel Subscription** with `at_period_end` set. **"When a new charge comes in, post it to the #revenue Slack channel."** A workflow starts on the **On New Charge** trigger and chains into your messaging connector. ## 7. Permissions & data access **UnleashX CAN:** * Read customers, charges, payment intents, invoices, subscriptions, products, prices, refunds, and the balance. * Create and update customers, create payment intents, cancel subscriptions, and issue refunds — if the key grants those writes. * Start workflows on new customers, charges, invoices, and subscriptions. **UnleashX CANNOT:** * Do anything the key's permissions don't allow — a read-only restricted key can't refund. * Move money to a different destination, change payout settings, or alter your Stripe account configuration. * See card numbers. Stripe never returns them. **To disconnect:** In UnleashX, open your agent → **Data Connectors** → **Stripe** → **Disconnect**. To fully revoke access, roll or delete the key in **Developers → API keys**. Either action stops access immediately. ## 8. Troubleshooting | Problem | What it means | How to fix it | | ------------------------------------------------ | ------------------------------------------------------------ | -------------------------------------------------------------------------------- | | `401 Unauthorized` | The key is wrong, was rolled, or was deleted | Copy the current key from **Developers → API keys** and reconnect | | `403` / "not permitted" on a write | A restricted key is missing that resource's Write permission | Create a new restricted key with the permission — existing keys can't be widened | | The refund is 100× too small or too large | The amount was sent in the wrong unit | Amounts are in the smallest unit: `1000` = \$10.00 | | Nothing found, but it's visible in the Dashboard | The key is in the other mode | A `sk_test_` key sees only test data, `sk_live_` only live data | | `resource_missing` | The ID belongs to the other mode, or to a different account | Re-fetch the ID with the same connected key | | A trigger fires for old records on first run | The first poll has no previous snapshot to compare against | Expected — later polls only report what's genuinely new | For general connector issues, see [/mcp/integrations](/mcp/integrations). ## 9. Frequently asked questions **Is my payment data stored by UnleashX?** No. Tools call the Stripe API live with your key and return the result. UnleashX keeps only the bookkeeping a polling trigger needs to know what it has already seen. **Can the agent charge a customer's card?** It can create a payment intent, which is the object a payment is completed against. It can't complete a payment without the customer's authorisation. **Can I connect test and live at the same time?** Yes. Add each key as its own connection and tell them apart by **Account Name**. **Does it work with Stripe Connect?** No. This connector authenticates as your own account. Connect is for platforms billing on behalf of others. **How do I rotate the key?** Create the replacement in **Developers → API keys**, update it in UnleashX, then roll the old one. ## 10. References * Stripe API reference: [https://docs.stripe.com/api](https://docs.stripe.com/api) * API keys and restricted keys: [https://docs.stripe.com/keys](https://docs.stripe.com/keys) * Amounts and zero-decimal currencies: [https://docs.stripe.com/currencies#zero-decimal](https://docs.stripe.com/currencies#zero-decimal) # SurveyMonkey Source: https://docs.unleashx.ai/mcp/surveymonkey Let your UnleashX agent read your SurveyMonkey surveys, collectors, and responses. # SurveyMonkey > **In one line:** Connect SurveyMonkey so your UnleashX agent can list your surveys, pull responses, and summarize results — all in plain language. | | | | ------------------ | -------------------------------------------------------------------------------------------------------------------- | | **Category** | Forms & Surveys | | **Authentication** | Access token (app) | | **Setup time** | \~4 minutes | | **Difficulty** | Easy | | **Best for** | Teams that run surveys in SurveyMonkey and want an AI agent to read responses, summarize feedback, and track results | ## 1. Overview SurveyMonkey is a survey platform for collecting feedback at scale. Your account holds the surveys you've built, the collectors that distribute them, and every response respondents submit. Once connected to UnleashX, your agent can list your surveys, read a survey's questions, pull responses through its collectors, and summarize the results. It works against your live SurveyMonkey account using an access token, so it acts with your own permissions. Connecting SurveyMonkey to UnleashX turns your surveys into a live feedback source. Instead of exporting results manually, you ask your agent to pull the latest responses or summarize what respondents said. ## 2. What you'll need * A SurveyMonkey account (a paid plan is required for full API access to responses). * An **access token** generated from an app in the SurveyMonkey Developer Portal (see Section 3). * An UnleashX account with access to **Data Connectors**. You paste an **access token**. UnleashX sends it to the SurveyMonkey API as a `Bearer` credential. The token acts with **your account's plan and permissions**. Access to responses and certain endpoints depends on your SurveyMonkey plan. ## 3. Get your credentials SurveyMonkey works differently from most connectors: you don't generate a bare token from your account settings. Instead you **create an app** in the Developer Portal, and that app comes with an **access token** already bound to your own SurveyMonkey account. You copy that token into UnleashX. The app is just a container for the credential — you never publish it or submit it for review. ### Step-by-step Go to [developer.surveymonkey.com](https://developer.surveymonkey.com/) and sign in with your SurveyMonkey account. The top navigation shows **Home**, **My Apps**, **Docs**, **Status**, and **FAQ**. Click **My Apps**. This lists any apps you've already created. Click the green **Add a New App** button in the top-right. The **APP CREATION** dialog opens. The APP CREATION dialog in the SurveyMonkey Developer Portal Three fields are required: * **App Nickname** — a name for your own reference, e.g. `UnleashX`. * **App Creator** — your email address. * **App Type** — choose **Private App** ("Build an app for you and your team"). Pick **Private App**, not Public App. A private app works only against your own account and is ready immediately. A **Public App** is intended for listing in the SurveyMonkey App Directory and requires a review process you don't need. Click **Create App**. The button stays greyed out until all three required fields are filled. Creating the app means accepting the SurveyMonkey API Developer Terms, linked in the dialog. Once the app is created you'll be returned to **My Apps**. Open your new app and click **Settings**. Scroll to the **Credentials** section. Alongside the Client ID and Secret you'll find your **Access Token** — copy it. This token is already tied to your SurveyMonkey account, so there's no separate OAuth step to run. Head to **Data Connectors → SurveyMonkey** in UnleashX and paste the token (full walkthrough in Section 4). UnleashX validates it on save. ### Good to know **Watch the trial countdown.** Apps in the Developer Portal display a remaining-days badge (for example *88 DAYS LEFT*) on the app card. When that window lapses, the app's credentials can stop working and the connector will start returning `401 Unauthorized`. If your agent suddenly loses access, check the app's status in **My Apps** before assuming the token was mistyped. Your access token can read **every survey and response your account can see**. Store it securely, never commit it to git, and delete the app in the Developer Portal if the token is ever exposed — that invalidates the credential immediately. **Response access depends on your plan.** Reading responses through the API generally requires a paid SurveyMonkey plan. On lower tiers the connection succeeds but response endpoints return `403` — see Section 8. The token stays visible under **Settings → Credentials**, so unlike a one-time secret you can return and copy it again whenever you need it. ### Permissions this token grants UnleashX | Access | Why UnleashX needs it | | --------------- | ----------------------------------------------- | | Read surveys | List and read your surveys and their questions. | | Read collectors | List the collectors distributing a survey. | | Read responses | Fetch and summarize responses. | | View details | Read survey and response details for reporting. | ## 4. Connect on UnleashX Go to [https://www.tryunleashx.com](https://www.tryunleashx.com) and open the agent you want to connect. Inside the agent, go to **Data Connectors**. Locate **SurveyMonkey** and click **Connect** (or **Add** / **Configure**). Paste your **access token** and click **Connect**. UnleashX validates the token and the SurveyMonkey connector shows a **Connected** badge. ### Use SurveyMonkey in a Workflow Once connected, you can add **SurveyMonkey** to any automation from the **Workflows** builder. Its triggers and tools appear in the Apps panel, marked with an **MCP** badge. Open **Workflows → New Workflow**. On the canvas, click **+ Add Trigger**. In the **Paths** panel, open the **Apps** tab and select **SurveyMonkey** — its **Triggers** are listed underneath. Use the search box if you have many connectors. Click the **+** below any node to add a step, then pick **SurveyMonkey** again — this time the panel lists its **Actions**. Fill in the fields for the trigger or action you picked. Required fields are marked with a red asterisk (\*). Under **Selected account**, choose an already-connected account, or click **Add Account** to connect one now. Click **Save**. Use **Test** to verify the step, then toggle **Publish** when the workflow is ready. The steps are the same for every connector. For the full workflow builder guide, see [Using MCP in Workflows](/mcp/workflows). ## 5. Available tools | Tool | What it does | Changes data? | | -------------------- | ------------------------------------------------------- | ------------- | | List Surveys | Lists the surveys in your account. | No | | Get Survey | Retrieves a survey's details. | No | | Get Survey Details | Retrieves a survey's full question structure. | No | | List Collectors | Lists collectors for a survey. | No | | Get Collector | Retrieves a collector's details. | No | | List Responses | Lists responses for a survey or collector. | No | | Get Response | Retrieves a single response with answers (bulk detail). | No | | Get Survey Questions | Lists the questions in a survey. | No | | Get Response Counts | Returns response/rollup counts for a survey. | No | | Get Current User | Retrieves the connected account's details. | No | The SurveyMonkey connector is read-focused — it reads surveys, collectors, and responses rather than modifying them. ## 6. Example usage **"How many people finished our NPS survey, and what's the overall sentiment?"** → Runs List Responses (or Get Response Counts) for the survey, then summarizes the responses. **"Pull the open-text answers from last week's feedback survey and group the themes."** → Runs List Responses / Get Response for the survey and summarizes the free-text answers by theme. ## 7. Permissions & data access **UnleashX can:** * List and read your surveys, questions, collectors, and responses. * Retrieve response counts and details for reporting. **UnleashX cannot:** * Modify or delete surveys or responses. * Access surveys your account/plan can't reach. * Change your SurveyMonkey account or billing settings. **To disconnect:** In UnleashX, open **Data Connectors → SurveyMonkey → Disconnect**. You can also revoke or delete the app in the SurveyMonkey Developer Portal. Disconnecting removes access immediately. ## 8. Troubleshooting | Problem | What it means | How to fix it | | --------------------------------- | ---------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------ | | **401 Unauthorized** | The access token is invalid or was revoked. | Copy a fresh token from the app's **Settings → Credentials** and reconnect. | | **401 after working fine** | Your Developer Portal app's trial window has lapsed. | Check the days-remaining badge in **My Apps**; renew or recreate the app, then reconnect with the new token. | | **403 Forbidden / plan required** | Your plan doesn't include that endpoint (often responses). | Upgrade your SurveyMonkey plan for full API access. | | **404 Not found** | The survey/collector ID is wrong or was deleted. | Have the agent list surveys/collectors to find the correct ID. | | **429 Too Many Requests** | You hit SurveyMonkey's rate/daily limit. | Wait for the window to reset and retry. | For general MCP issues, see [/mcp/integrations](/mcp/integrations). ## 9. Frequently asked questions **Is my survey data stored by UnleashX?** No. UnleashX reads through the SurveyMonkey API live per request; it doesn't keep a copy of your surveys or responses. **Why can't I read responses?** Response access depends on your SurveyMonkey plan. Free/lower tiers restrict some API endpoints. **Can the agent edit surveys?** The connector is read-focused — it reads surveys and responses rather than creating or editing them. ## 10. References * SurveyMonkey API documentation: [https://api.surveymonkey.com/v3/docs](https://api.surveymonkey.com/v3/docs) * Developer Portal: [https://developer.surveymonkey.com/](https://developer.surveymonkey.com/) * Getting started / access tokens: [https://developer.surveymonkey.com/api/v3/#getting-started](https://developer.surveymonkey.com/api/v3/#getting-started) # Transcription Source: https://docs.unleashx.ai/mcp/transcription Turn recorded calls and audio files into accurate text transcripts. # Transcription > **In one line:** Convert any recorded audio (a call, a voice note, an uploaded file) into a clean text transcript your agent can use. | | | | ------------------ | ---------------------------------------------------------------------- | | **Category** | AI & Media | | **Authentication** | Platform-managed | | **Setup time** | \~1 minute | | **Difficulty** | Easy | | **Best for** | Transcribing calls and audio for summaries, search, QA, and follow-ups | ## 1. Overview Transcription (speech-to-text) converts spoken audio into written text. Give it the URL of an audio file and it returns the words that were said, smart-formatted and ready to use. Once connected, your agent can transcribe recorded calls, voicemails, and uploaded audio, choose between speech providers (Deepgram or Azure), and target a specific language when you know it. The result is plain text you can summarize, search, score, or store. Connecting Transcription to UnleashX lets your voice and automation agents turn raw audio into structured insight — call summaries, sentiment, action items — without anyone listening back manually. ## 2. What you'll need Transcription is **built into UnleashX**. There are no third-party accounts (Deepgram/Azure) for you to create and no API keys for you to manage. * An active UnleashX account. * The Transcription feature enabled on your workspace/plan. * A publicly reachable URL to the audio file you want transcribed. * Permission to edit the agent (admin or editor role). Without it, ask a workspace admin to enable the feature. ## 3. Get your credentials There are **no credentials to create**. Transcription is platform-managed — UnleashX provisions and rotates the underlying Deepgram and Azure Speech keys. You never handle a provider key. If you are a workspace admin, the only optional platform-side choices are which provider and default model/language to use. UnleashX ships sensible defaults; most teams never change them. | Platform-managed setting | Plain-English reason it exists | | --------------------------- | -------------------------------------------------------------------- | | Provider (Deepgram / Azure) | Lets UnleashX route audio to the speech engine that fits your needs. | | Default model & language | Sets transcription quality and the expected spoken language. | | Provider API keys | Provisioned and rotated by UnleashX so transcription "just works." | ## 4. Connect on UnleashX Go to [https://www.tryunleashx.com](https://www.tryunleashx.com) and open the agent that should transcribe audio. In the agent, click **Data Connectors**. Locate **Transcription** and click **Connect** / **Add**. It's platform-managed, so there's no key to paste — it activates immediately. The Transcription tool should now show a **Connected** badge. ### Use Transcription in a Workflow Once connected, you can add **Transcription** to any automation from the **Workflows** builder. Its triggers and tools appear in the Apps panel, marked with an **MCP** badge. Open **Workflows → New Workflow**. On the canvas, click **+ Add Trigger**. In the **Paths** panel, open the **Apps** tab and select **Transcription** — its **Triggers** are listed underneath. Use the search box if you have many connectors. Click the **+** below any node to add a step, then pick **Transcription** again — this time the panel lists its **Actions**. Fill in the fields for the trigger or action you picked. Required fields are marked with a red asterisk (\*). Under **Selected account**, choose an already-connected account, or click **Add Account** to connect one now. Click **Save**. Use **Test** to verify the step, then toggle **Publish** when the workflow is ready. The steps are the same for every connector. For the full workflow builder guide, see [Using MCP in Workflows](/mcp/workflows). ## 5. Available tools | Tool | What it does | Changes data? | | ---------------- | ---------------------------------------------------------------- | ------------- | | Transcribe Audio | Transcribe audio from a URL using the Deepgram or Azure provider | No | Transcription is read-only — it reads an audio file and returns text. It does not alter or store the source recording. ## 6. Example usage **"Transcribe this call recording and give me a summary."** → Runs **Transcribe Audio** on the recording URL, then the agent summarizes the returned transcript. **"Get the text of this Hindi voicemail."** → Runs **Transcribe Audio** with the language set to Hindi (`hi-IN`) so the transcript comes back accurately. ## 7. Permissions & data access **UnleashX can:** * Download the audio file at the URL you provide. * Send it to the configured speech provider and return the transcript. * Temporarily process and convert the audio (e.g. to a compatible format). **UnleashX cannot:** * Access audio you don't explicitly pass to the tool. * Permanently store your recordings as part of the integration. * Record new audio on its own. **To disconnect:** Open the agent → **Data Connectors** → **Transcription** → **Disconnect**. Access is revoked immediately. ## 8. Troubleshooting | Problem | What it means | How to fix it | | --------------------------------------- | --------------------------------------------------- | ------------------------------------------------------------------- | | "url must be a valid http or https URL" | The audio link is missing or malformed | Pass a full, public `http(s)` URL to the audio file | | "Audio file too large" | The file exceeds the 50 MB limit | Trim or compress the recording, or split it | | 401 / credential error | The platform-managed provider key is unavailable | Platform-side — contact **[cs@unleashx.ai](mailto:cs@unleashx.ai)** | | 403 / feature not enabled | Transcription isn't enabled on your plan | Ask a workspace admin or contact support | | Empty transcript | Silent audio, wrong language, or unsupported format | Confirm the file has speech and set the right language | For general connector issues, see [/mcp/integrations](/mcp/integrations). ## 9. Frequently asked questions **Is my audio stored?** No. The file is downloaded only to produce the transcript and is not retained as part of the integration. Temporary working files are cleaned up. **Do I need a Deepgram or Azure account?** No. Transcription is platform-managed — UnleashX provides and rotates the provider keys. **Which provider is used?** Deepgram or Azure, depending on your workspace configuration. You can pass `stt_provider_name` to choose per request. **Can multiple team members use it?** Yes. Once enabled on the workspace, anyone with access to the agent can transcribe audio. ## 10. References * Deepgram speech-to-text docs: [https://developers.deepgram.com/docs](https://developers.deepgram.com/docs) * Azure Speech service docs: [https://learn.microsoft.com/azure/ai-services/speech-service/](https://learn.microsoft.com/azure/ai-services/speech-service/) * UnleashX integrations help: [/mcp/integrations](/mcp/integrations) # X (Twitter) Ads Source: https://docs.unleashx.ai/mcp/twitter-ads Let your UnleashX agent manage ad accounts, campaigns, and line items on X (formerly Twitter) Ads. # X (Twitter) Ads > **In one line:** Connect X (Twitter) Ads so your UnleashX agent can look up your ad accounts, create and manage campaigns, and review line items — all in plain language. | | | | ------------------ | ---------------------------------------------------------------------------------------------------------------------- | | **Category** | Advertising & Analytics | | **Authentication** | OAuth (X Ads) | | **Setup time** | \~4 minutes | | **Difficulty** | Medium | | **Best for** | Marketing teams that want an AI agent to spin up and manage X (Twitter) Ads campaigns without leaving the conversation | ## 1. Overview X Ads (formerly Twitter Ads) is X's advertising platform. It's where you organize paid activity into ad accounts, campaigns, and the line items that carry your budgets, bids, and targeting across the X timeline. Once connected to UnleashX, your agent can list the ad accounts you can access, create and update campaigns, pause or delete campaigns, and review the line items underneath them. It works against your live X Ads account using your own X sign-in, so it respects your role and access. Connecting X Ads to UnleashX means you can manage paid campaigns as you talk. Instead of opening the Ads Manager to launch or adjust a campaign, you tell your agent and it makes the change — cutting the clicks while keeping your account accurate. ## 2. What you'll need * An **X Ads account** with a payment method and at least one campaign-ready ad account. * **Ads API access** approved for your account (X requires developer/API access for the Ads API). * A **funding instrument** on the ad account — its `funding_instrument_id` is required to create campaigns. * A user role with permission to create and edit campaigns on the ad account. * An UnleashX account with access to **Data Connectors**. No API key to paste. X Ads uses OAuth — you click **Authorize** and sign in with X. X enforces your **account access and Ads API approval**. If your X user can't manage campaigns on the ad account — or the account hasn't been granted Ads API access — the agent can't either. Budgets are set in **local micro amounts** (the account currency × 1,000,000), so a \$10.00 daily budget is `10000000`; passing a plain amount will be off by a million. ## 3. Get your credentials There's no key to copy. Authentication runs through X's secure OAuth sign-in. Connecting X Ads (Section 4) opens an X **Authorize app** window. Sign in with the X account that has access to your Ads account. Complete two-factor authentication if prompted. X shows the access UnleashX is requesting (see the scopes table). Click **Authorize app**. If you can access several ad accounts, pick the one you want the agent to work with. UnleashX uses its ad account ID on every request. X redirects you back automatically and the connector links to your Ads account. UnleashX handles the OAuth token for you — you never paste or store it yourself. **Permissions (X OAuth scopes) UnleashX requests:** | Scope | Why UnleashX needs it | | ---------------- | --------------------------------------------------------------------- | | `ads.read` | List ad accounts, campaigns, and line items, and read their settings. | | `ads.write` | Create, update, and delete campaigns on your ad account. | | `offline.access` | Refresh access automatically so you don't re-authorize every session. | X enforces the limits, not UnleashX. UnleashX requests only the access these tools need, and your X role still governs what you can do on each ad account. ## 4. Connect on UnleashX Go to [https://www.tryunleashx.com](https://www.tryunleashx.com) and open the agent you want to connect. Inside the agent, go to **Data Connectors**. Locate **X (Twitter) Ads** and click **Connect** (or **Add** / **Configure**). Click **Authorize**, sign in with X, accept the access, and pick your ad account. You return to UnleashX and the X (Twitter) Ads connector shows a **Connected** badge. ### Use X (Twitter) Ads in a Workflow Once connected, you can add **X (Twitter) Ads** to any automation from the **Workflows** builder. Its triggers and tools appear in the Apps panel, marked with an **MCP** badge. Open **Workflows → New Workflow**. On the canvas, click **+ Add Trigger**. In the **Paths** panel, open the **Apps** tab and select **X (Twitter) Ads** — its **Triggers** are listed underneath. Use the search box if you have many connectors. Click the **+** below any node to add a step, then pick **X (Twitter) Ads** again — this time the panel lists its **Actions**. Fill in the fields for the trigger or action you picked. Required fields are marked with a red asterisk (\*). Under **Selected account**, choose an already-connected account, or click **Add Account** to connect one now. Click **Save**. Use **Test** to verify the step, then toggle **Publish** when the workflow is ready. The steps are the same for every connector. For the full workflow builder guide, see [Using MCP in Workflows](/mcp/workflows). ## 5. Available tools | Tool | What it does | Changes data? | | --------------- | ----------------------------------------------------------------------------------------- | ------------- | | List Accounts | Lists the X Ads accounts you can access. | No | | List Campaigns | Lists campaigns on an ad account. | No | | Create Campaign | Creates a new campaign (requires a funding instrument and budget in local micro amounts). | ✏️ Yes | | Update Campaign | Updates an existing campaign (name, budget, status). | ✏️ Yes | | Delete Campaign | Deletes a specified campaign. | ⚠️ Yes | | List Line Items | Lists the line items under a campaign. | No | ## 6. Example usage **"Create a new campaign called 'Summer Launch' on our main ad account with a \$50/day budget."** → Runs List Accounts to find the ad account and its funding instrument, then Create Campaign with the budget set to `50000000` (local micro amounts). **"Pause the 'Spring Promo' campaign — we're out of budget."** → Runs List Campaigns to find the campaign, then Update Campaign to set its status to paused. ## 7. Permissions & data access **UnleashX can:** * List the ad accounts, campaigns, and line items you can access. * Create and update campaigns on your ad account. * Delete campaigns where your role allows (this tool is clearly marked ⚠️). **UnleashX cannot:** * Do anything your X Ads role or account access doesn't permit. * Act on ad accounts you can't access, or without Ads API approval. * Change your X account password or account-wide security settings. **To disconnect:** In UnleashX, open **Data Connectors → X (Twitter) Ads → Disconnect**. You can also revoke access in X under **Settings → Security and account access → Apps and sessions → Connected apps**. Disconnecting revokes access immediately. ## 8. Troubleshooting | Problem | What it means | How to fix it | | ----------------------------------------- | ------------------------------------------------------------------------------- | -------------------------------------------------------------------------- | | **401 Unauthorized** | The X token expired or is invalid. | Reconnect X (Twitter) Ads in **Data Connectors** and sign in again. | | **403 Forbidden** | Your X user lacks access to that ad account, or Ads API access isn't approved. | Ask the account admin for access, or confirm Ads API approval, then retry. | | **Campaign create fails** | No `funding_instrument_id` was supplied, or the funding instrument is inactive. | Add a valid funding instrument to the ad account and retry. | | **Budget looks wrong (off by a million)** | The budget was passed as a plain amount instead of local micro amounts. | Multiply the amount by 1,000,000 (e.g. \$10.00 = `10000000`). | | **Rate limit exceeded** | You hit the X Ads API rate limit. | Wait for the window to reset, then retry. | For general MCP issues, see [/mcp/integrations](/mcp/integrations). ## 9. Frequently asked questions **Do I need Ads API access?** Yes. The X Ads API requires your account to be approved for API access. Without it, the connector can authorize but calls to manage campaigns will be denied. **Why do I need a funding instrument ID?** X ties spending to a funding instrument (your payment source). Creating a campaign requires a valid `funding_instrument_id` on the ad account. **Why are my budgets so large?** Budgets use **local micro amounts** — the account currency multiplied by 1,000,000. A \$25.00 budget is `25000000`. This is how the X Ads API represents money. **Is my ad data stored by UnleashX?** No. UnleashX reads and writes through the X Ads API live per request; it doesn't keep a copy of your campaigns. ## 10. References * X Ads API documentation: [https://developer.x.com/en/docs/x-ads-api](https://developer.x.com/en/docs/x-ads-api) * Campaign management: [https://developer.x.com/en/docs/x-ads-api/campaign-management/api-reference/campaigns](https://developer.x.com/en/docs/x-ads-api/campaign-management/api-reference/campaigns) * X Ads API access & apps: [https://developer.x.com/en/docs/x-ads-api/getting-started](https://developer.x.com/en/docs/x-ads-api/getting-started) * X connected apps / revoke access: [https://x.com/settings/connected\_apps](https://x.com/settings/connected_apps) # Typeform Source: https://docs.unleashx.ai/mcp/typeform Let your UnleashX agent read your Typeform forms and responses, and manage forms. # Typeform > **In one line:** Connect Typeform so your UnleashX agent can list your forms, pull responses, and create or update forms — all in plain language. | | | | ------------------ | --------------------------------------------------------------------------------------------------------------------- | | **Category** | Forms & Surveys | | **Authentication** | Personal access token | | **Setup time** | \~2 minutes | | **Difficulty** | Easy | | **Best for** | Teams that collect data with Typeform and want an AI agent to read responses, summarize submissions, and manage forms | ## 1. Overview Typeform is a form and survey builder known for its conversational, one-question-at-a-time experience. Your account holds the forms you've built and every response people submit. Once connected to UnleashX, your agent can list your forms, read a form's structure, pull and summarize responses, create new forms, and manage webhooks so downstream automations fire when a response arrives. It works against your live Typeform account using a personal access token, so it acts with your own permissions. Connecting Typeform to UnleashX turns your forms into a live data source your agent can act on. Instead of exporting a spreadsheet to see what people submitted, you ask your agent to pull the latest responses or summarize the results. ## 2. What you'll need * A Typeform account. * A **personal access token** generated from your account settings (see Section 3). * An UnleashX account with access to **Data Connectors**. You paste a **personal access token**. UnleashX sends it to the Typeform API as a `Bearer` credential. ## 3. Get your credentials Typeform MCP authenticates with a **personal access token**. Sign in to Typeform and go to the admin portal. On the top right, click your profile **icon** → **Account Settings**. Open Account Settings from the Typeform admin portal In the left sidebar, click **Personal Tokens**. Click **Generate a new token**, give it a name (e.g. "UnleashX"), choose the scopes you want it to have, and generate it. Copy the token now — Typeform shows it only once. Generate a new personal token Paste the token when connecting (Section 4). A personal access token can act on your Typeform account within its scopes. Store it securely and delete it from Typeform if it's ever exposed. ### Permissions this token grants UnleashX | Access | Why UnleashX needs it | | --------------- | ------------------------------------------------------------- | | Read forms | List and read your forms and their fields. | | Manage forms | Create, update, and delete forms (if you grant write scopes). | | Read responses | Fetch and summarize form submissions. | | Manage webhooks | Create webhooks so workflows can trigger on new responses. | ## 4. Connect on UnleashX Go to [https://www.tryunleashx.com](https://www.tryunleashx.com) and open the agent you want to connect. Inside the agent, go to **Data Connectors**. Locate **Typeform** and click **Connect** (or **Add** / **Configure**). Paste your **personal access token** and click **Connect**. UnleashX validates the token and the Typeform connector shows a **Connected** badge. ### Use Typeform in a Workflow Once connected, you can add **Typeform** to any automation from the **Workflows** builder. Its triggers and tools appear in the Apps panel, marked with an **MCP** badge. Open **Workflows → New Workflow**. On the canvas, click **+ Add Trigger**. In the **Paths** panel, open the **Apps** tab and select **Typeform** — its **Triggers** are listed underneath. Use the search box if you have many connectors. Click the **+** below any node to add a step, then pick **Typeform** again — this time the panel lists its **Actions**. Typeform actions in the Apps panel Fill in the fields for the trigger or action you picked. Required fields are marked with a red asterisk (\*). Under **Selected account**, choose an already-connected account, or click **Add Account** to connect one now. Click **Save**. Use **Test** to verify the step, then toggle **Publish** when the workflow is ready. The steps are the same for every connector. For the full workflow builder guide, see [Using MCP in Workflows](/mcp/workflows). ## 5. Available tools | Tool | What it does | Changes data? | | ---------------- | ---------------------------------------- | ------------- | | List Forms | Lists the forms in your account. | No | | Get Form | Retrieves a form's structure and fields. | No | | Create Form | Creates a new form. | ✏️ Yes | | Update Form | Updates an existing form. | ✏️ Yes | | Delete Form | Deletes a form. | ⚠️ Yes | | List Responses | Retrieves responses submitted to a form. | No | | Get Response | Retrieves a single response. | No | | Delete Responses | Deletes specified responses. | ⚠️ Yes | | List Webhooks | Lists webhooks configured on a form. | No | | Create Webhook | Creates a webhook on a form. | ✏️ Yes | | Delete Webhook | Removes a webhook from a form. | ✏️ Yes | | Get Workspaces | Lists the workspaces in your account. | No | ## 6. Example usage **"How many people completed our onboarding survey this week? Summarize what they said."** → Runs List Responses on the form, then summarizes the submissions. **"Create a webhook on the contact form so my workflow runs whenever someone submits it."** → Runs Create Webhook on the form pointing at your workflow. ## 7. Permissions & data access **UnleashX can:** * List and read your forms, fields, and responses. * Create, update, and delete forms (with write scopes). * Manage webhooks on your forms. **UnleashX cannot:** * Access forms or workspaces your token isn't scoped for. * Change your Typeform account or billing settings. **To disconnect:** In UnleashX, open **Data Connectors → Typeform → Disconnect**. Then delete the token in Typeform under **Account Settings → Personal Tokens**. Disconnecting and deleting the token removes access immediately. ## 8. Troubleshooting | Problem | What it means | How to fix it | | ------------------------- | ------------------------------------------ | --------------------------------------------------- | | **401 Unauthorized** | The token is invalid or was deleted. | Generate a new personal access token and reconnect. | | **403 Forbidden** | The token lacks the scope for that action. | Regenerate the token with the needed scopes. | | **404 Not found** | The form ID is wrong or was deleted. | Have the agent list forms to find the correct ID. | | **429 Too Many Requests** | You hit Typeform's rate limit. | Wait and retry; space out bulk requests. | For general MCP issues, see [/mcp/integrations](/mcp/integrations). ## 9. Frequently asked questions **Is my form data stored by UnleashX?** No. UnleashX reads and writes through the Typeform API live per request; it doesn't keep a copy of your forms or responses. **Can the agent delete forms or responses?** Yes — tools marked ⚠️ make permanent changes and only work if your token has write scopes. Use them deliberately. **Can multiple people connect Typeform?** Yes. Each person generates their own personal access token and connects separately. ## 10. References * Typeform API reference: [https://www.typeform.com/developers/](https://www.typeform.com/developers/) * Create a personal access token: [https://www.typeform.com/developers/get-started/personal-access-token/](https://www.typeform.com/developers/get-started/personal-access-token/) * Responses API: [https://www.typeform.com/developers/responses/](https://www.typeform.com/developers/responses/) * Webhooks: [https://www.typeform.com/developers/webhooks/](https://www.typeform.com/developers/webhooks/) # Veo Source: https://docs.unleashx.ai/mcp/veo Generate short videos from a text prompt or a starting image with Google Veo. # Veo > **In one line:** Let your UnleashX agent create short AI videos from a written prompt — or animate a still image into video. | | | | ------------------ | ------------------------------------------------------------------------------ | | **Category** | AI & Media | | **Authentication** | Platform-managed | | **Setup time** | \~1 minute | | **Difficulty** | Easy | | **Best for** | Marketing clips, product teasers, and social-ready video from text or an image | ## 1. Overview Veo is Google's video-generation model (via the Gemini API). Describe the scene you want in words and it produces a short video; provide a starting image and it can animate that image into motion. Once connected, your agent can generate text-to-video and image-to-video clips, pick an aspect ratio (vertical, square, or wide), and get back a ready-to-share video URL. Generated videos are stored to UnleashX's media storage and returned as a link. Connecting Veo to UnleashX means your agents can turn a campaign idea or a product photo into a video asset on demand — no editing software, no render farm, no manual export. ## 2. What you'll need Veo is **built into UnleashX**. There is no Google Cloud or Gemini account for you to create and no API key for you to manage. * An active UnleashX account. * The Veo / video-generation feature enabled on your workspace/plan. * A clear text prompt (and, for image-to-video, a starting image by URL, path, or base64). * Permission to edit the agent (admin or editor role). Without it, ask a workspace admin to enable the feature. ## 3. Get your credentials There are **no credentials to create**. Veo is platform-managed — UnleashX provisions and rotates the underlying Google Gemini key and handles media storage. You never see or handle an API key. If you are a workspace admin, the only optional platform-side configuration is the Veo model version and the default aspect ratio. UnleashX sets sensible defaults (a recent Veo preview model, vertical 9:16); most teams never change them. | Platform-managed setting | Plain-English reason it exists | | ------------------------------ | ------------------------------------------------------------------------------ | | Veo model version | Controls quality/capabilities of generated video. | | Default aspect ratio | Sets the default video shape (e.g. 9:16 vertical). | | Gemini API key & media storage | Provisioned and rotated by UnleashX so videos generate and save automatically. | ## 4. Connect on UnleashX Go to [https://www.tryunleashx.com](https://www.tryunleashx.com) and open the agent that should generate video. In the agent, click **Data Connectors**. Locate **Veo** and click **Connect** / **Add**. It's platform-managed — no key to paste, it activates immediately. The Veo tool should now show a **Connected** badge. ### Use Veo in a Workflow Once connected, you can add **Veo** to any automation from the **Workflows** builder. Its triggers and tools appear in the Apps panel, marked with an **MCP** badge. Open **Workflows → New Workflow**. On the canvas, click **+ Add Trigger**. In the **Paths** panel, open the **Apps** tab and select **Veo** — its **Triggers** are listed underneath. Use the search box if you have many connectors. Click the **+** below any node to add a step, then pick **Veo** again — this time the panel lists its **Actions**. Veo actions in the Apps panel Fill in the fields for the trigger or action you picked. Required fields are marked with a red asterisk (\*). Under **Selected account**, choose an already-connected account, or click **Add Account** to connect one now. Click **Save**. Use **Test** to verify the step, then toggle **Publish** when the workflow is ready. The steps are the same for every connector. For the full workflow builder guide, see [Using MCP in Workflows](/mcp/workflows). ## 5. Available tools | Tool | What it does | Changes data? | | -------------- | --------------------------------------------------------------------- | ------------- | | Generate Video | Generate a video from a text prompt (and optionally a starting image) | ✏️ Yes | | Image to Video | Animate a provided image into a video using a text prompt | ✏️ Yes | | Get Info | Report Veo configuration and readiness | No | The generate tools are marked ✏️ Yes because they create a new video file and save it to UnleashX media storage. They do not modify or delete any existing data. ## 6. Example usage **"Make a 9:16 video of a coffee cup steaming on a rainy windowsill."** → Runs **Generate Video** with that prompt and a vertical aspect ratio, returning a video URL. **"Take this product photo and turn it into a slow zoom-in clip."** → Runs **Image to Video** with the image and a motion prompt. ## 7. Permissions & data access **UnleashX can:** * Send your prompt (and optional image) to Veo and generate a video. * Save the generated video to UnleashX media storage and return a link. **UnleashX cannot:** * Generate video from content you don't provide. * Edit or delete videos you created elsewhere. * Access your device or cloud storage on its own. **To disconnect:** Open the agent → **Data Connectors** → **Veo** → **Disconnect**. Access is revoked immediately. ## 8. Troubleshooting | Problem | What it means | How to fix it | | ------------------------------------- | -------------------------------------------------- | ------------------------------------------------------------------- | | "prompt is required" | No text prompt was supplied | Provide a descriptive prompt | | Generation timed out | Video rendering takes longer than the wait window | Retry; longer/complex clips can take several minutes | | "did not return any generated videos" | Safety filtering, model rejection, or quota limits | Adjust the prompt; if it persists, contact support | | 401 / credential error | The platform-managed Gemini key is unavailable | Platform-side — contact **[cs@unleashx.ai](mailto:cs@unleashx.ai)** | | 403 / feature not enabled | Veo isn't enabled on your plan | Ask a workspace admin or contact support | For general connector issues, see [/mcp/integrations](/mcp/integrations). ## 9. Frequently asked questions **Is my prompt or image stored?** The generated video is saved to UnleashX media storage so you can access it. Your input image is used to generate the clip and is not retained as part of the integration. **Do I need a Google or Gemini account?** No. Veo is platform-managed — UnleashX provides and rotates the underlying key. **What aspect ratios are supported?** Common shapes including vertical (9:16), square (1:1), and wide. The default is vertical. **How long does generation take?** Usually under a few minutes, depending on length and complexity. The tool can run synchronously and return the final URL. ## 10. References * Google Veo / Gemini video generation docs: [https://ai.google.dev/gemini-api/docs/video](https://ai.google.dev/gemini-api/docs/video) * UnleashX dashboard: [https://www.tryunleashx.com](https://www.tryunleashx.com) * UnleashX integrations help: [/mcp/integrations](/mcp/integrations) # Webflow Source: https://docs.unleashx.ai/mcp/webflow Let your UnleashX agent manage Webflow CMS items, pages, forms, assets, and site publishing. # Webflow > **In one line:** Connect Webflow so your UnleashX agent can create and update CMS items, edit page content, read form submissions, manage assets, and publish the site — without opening the Designer. | | | | ------------------ | ---------------------------------------------------------------------------------------------------------------- | | **Category** | Dev Tools & Automation | | **Authentication** | Site API token | | **Setup time** | \~4 minutes | | **Difficulty** | Medium | | **Best for** | Marketing and content teams who want an agent to keep a Webflow site's CMS current and react to form submissions | ## 1. Overview Webflow is a visual web development platform. Sites are built in the Designer, dynamic content lives in **CMS collections**, and everything goes live through a **publish** step. Once connected to UnleashX, your agent works against the Webflow Data API v2: list sites, pages, and collections; create, update, delete, and publish CMS items; read a page's content DOM and write text back to it; list forms and their submissions; register and upload assets; read ecommerce products and SKUs; manage webhooks; and publish the site. Two polling triggers let a workflow start on its own — when a CMS item is created, or when a form submission arrives. Connecting Webflow to UnleashX means the site stops being a manual step: a new blog post gets drafted straight into the CMS, a form submission lands in your CRM, and the site publishes itself when the content is ready. ## 2. What you'll need * A **Webflow site** you have access to, on a plan that includes the **CMS** if you want to use collection tools. * Permission to generate a **site API token** — you must be the site owner or have admin access to the site's settings. * The **site API token** itself, with the scopes listed in Section 3. This connector uses a **site API token**, not the OAuth app flow. A token is scoped to one site — connect each site as its own account. ## 3. Get your credentials Webflow authenticates with a **site API token** sent as a bearer token against the Data API v2. In the Webflow Dashboard, open the site, then go to **Site settings → Apps & integrations**. Scroll to the **API access** section, which lists any tokens already generated for this site. Click **Generate API token**. Give it a name you'll recognise later — for example "UnleashX". Webflow Site settings → Apps & integrations → API access Tick the scopes the connector needs (see the table below). A missing scope doesn't fail at connect time — it fails later, on the one tool that needs it. Naming the token and selecting its scopes The token is shown only once, at generation. Copy it now and store it in your password manager. If you lose it, delete the token and generate a new one. The generated site API token — copy it now, it can't be retrieved later ### Scopes this token grants UnleashX | Scope | Why UnleashX needs it | | ------------------------------ | ------------------------------------------------- | | `sites:read` | List sites and read site details. | | `sites:write` | Publish the site. | | `pages:read` | List pages and read page metadata and content. | | `pages:write` | Update text and content nodes on a page. | | `cms:read` | Read collections, their schemas, and their items. | | `cms:write` | Create, update, delete, and publish CMS items. | | `forms:read` | List forms and read their submissions. | | `assets:read` / `assets:write` | List assets and register new uploads. | | `ecommerce:read` | Read products and SKUs (ecommerce sites only). | Grant only what the workflow actually uses. If your agent only drafts blog posts, `cms:read` + `cms:write` + `sites:read` is enough — leave the rest off. ## 4. Connect on UnleashX Sign in at [https://www.tryunleashx.com](https://www.tryunleashx.com) and open the agent you want to connect. In the agent, go to **Data Connectors** and find **Webflow**. Click **Connect** / **Add** / **Configure**, paste the **site API token**, and give the connection an **Account Name** — useful when you connect more than one site. Save. The status will switch to a **Connected** badge. ### Use Webflow in a Workflow Once connected, you can add **Webflow** to any automation from the **Workflows** builder. Its triggers and tools appear in the Apps panel, marked with an **MCP** badge. Open **Workflows → New Workflow**. On the canvas, click **+ Add Trigger**. In the **Paths** panel, open the **Apps** tab and select **Webflow** — its **Triggers** are listed underneath. Use the search box if you have many connectors. Click the **+** below any node to add a step, then pick **Webflow** again — this time the panel lists its **Actions**. Webflow actions in the Apps panel Fill in the fields for the trigger or action you picked. Required fields are marked with a red asterisk (\*). Under **Selected account**, choose an already-connected account, or click **Add Account** to connect one now. Click **Save**. Use **Test** to verify the step, then toggle **Publish** when the workflow is ready. The steps are the same for every connector. For the full workflow builder guide, see [Using MCP in Workflows](/mcp/workflows). ## 5. Available tools Most tools need a **site ID** or **collection ID**. Start from **List Sites** and **List Collections** — every later step takes an ID those return. Names match the **Workflows** Apps panel, which lists them alphabetically; they're grouped here by what they act on. The **Tool ID** is what the agent calls behind the scenes. **Sites** | Tool | Tool ID | What it does | Required | Changes data? | | ------------ | ---------------------- | --------------------------------------- | --------- | ------------- | | List Sites | `webflow_list_sites` | Lists sites the token can access | — | No | | Get Site | `webflow_get_site` | Gets a single site's details | `site_id` | No | | Publish Site | `webflow_publish_site` | Publishes the site's current state live | `site_id` | ⚠️ Yes | **Pages** | Tool | Tool ID | What it does | Required | Changes data? | | ------------------- | ----------------------------- | -------------------------------------------------- | ------------------ | ------------- | | List Pages | `webflow_list_pages` | Lists a site's pages | `site_id` | No | | Get Page | `webflow_get_page` | Gets a page's metadata (title, slug, SEO settings) | `page_id` | No | | Get Page Content | `webflow_get_page_content` | Gets a page's content DOM (nodes and text) | `page_id` | No | | Update Page Content | `webflow_update_page_content` | Updates text/content nodes on a page | `page_id`, `nodes` | ✏️ Yes | **CMS collections** | Tool | Tool ID | What it does | Required | Changes data? | | ----------------------- | --------------------------------- | --------------------------------------------- | ---------------------------------------- | ------------- | | List Collections | `webflow_list_collections` | Lists a site's CMS collections | `site_id` | No | | Get Collection | `webflow_get_collection` | Gets a collection's schema (fields and types) | `collection_id` | No | | List Collection Items | `webflow_list_collection_items` | Lists items in a collection, newest first | `collection_id` | No | | Get Collection Item | `webflow_get_collection_item` | Gets a single item | `collection_id`, `item_id` | No | | Create Collection Item | `webflow_create_collection_item` | Creates an item (draft or live) | `collection_id`, `field_data` | ✏️ Yes | | Update Collection Item | `webflow_update_collection_item` | Updates an item's fields | `collection_id`, `item_id`, `field_data` | ✏️ Yes | | Delete Collection Item | `webflow_delete_collection_item` | Deletes an item | `collection_id`, `item_id` | ⚠️ Yes | | Publish Collection Item | `webflow_publish_collection_item` | Publishes staged items live | `collection_id`, `item_ids` | ⚠️ Yes | A created or updated CMS item is **staged**, not live. Run **Publish Collection Item** (or **Publish Site**) to make it visible to visitors. **Forms** | Tool | Tool ID | What it does | Required | Changes data? | | --------------------- | ------------------------------- | ------------------------------------- | -------------------- | ------------- | | List Forms | `webflow_list_forms` | Lists forms defined on a site | `site_id` | No | | List Form Submissions | `webflow_list_form_submissions` | Lists submissions received for a form | `site_id`, `form_id` | No | **Assets** | Tool | Tool ID | What it does | Required | Changes data? | | ------------ | ---------------------- | ------------------------------------------------------------------------- | ----------------------------------- | ------------- | | List Assets | `webflow_list_assets` | Lists images and files uploaded to a site | `site_id` | No | | Upload Asset | `webflow_upload_asset` | Registers a file and returns a presigned upload spec to POST the bytes to | `site_id`, `file_name`, `file_hash` | ✏️ Yes | **Upload Asset** is a two-step handshake: it registers the file with Webflow and returns an S3 presigned-upload spec, and the file bytes are POSTed there next. `file_hash` is the file's MD5, which Webflow uses to deduplicate. **Ecommerce** | Tool | Tool ID | What it does | Required | Changes data? | | ------------- | ----------------------- | ---------------------------------- | ----------------------- | ------------- | | List Products | `webflow_list_products` | Lists products with their SKUs | `site_id` | No | | Get Product | `webflow_get_product` | Gets a single product and its SKUs | `site_id`, `product_id` | No | **Webhooks** | Tool | Tool ID | What it does | Required | Changes data? | | -------------- | ------------------------ | --------------------------------------------------------------------------------------- | -------------------------------- | ------------- | | List Webhooks | `webflow_list_webhooks` | Lists webhook subscriptions on a site | `site_id` | No | | Create Webhook | `webflow_create_webhook` | Registers a webhook (e.g. `form_submission`, `site_publish`, `collection_item_created`) | `site_id`, `trigger_type`, `url` | ✏️ Yes | | Delete Webhook | `webflow_delete_webhook` | Removes a webhook subscription | `webhook_id` | ⚠️ Yes | **Triggers** | Trigger | Trigger ID | Fires when | Required | | ---------------------- | -------------------------------- | ----------------------------------------------- | -------------------- | | On New Collection Item | `webflow_on_new_collection_item` | A CMS item is created in the watched collection | `collection_id` | | On New Form Submission | `webflow_on_new_form_submission` | A submission arrives for the watched form | `site_id`, `form_id` | These two triggers **poll** — they report what's new since the last check. That's separate from **Create Webhook**, which registers Webflow's own push notification to a callback URL of your choosing. Use the triggers to start an UnleashX workflow; use webhooks to notify an external system. ## 6. Example usage **"Draft this week's release notes as a CMS item in the Blog collection."** Runs **List Collections** → **Get Collection** (to see the field names) → **Create Collection Item** as a draft. **"Publish everything staged in the Blog collection."** Runs **List Collection Items** → **Publish Collection Item** with the staged IDs. **"When someone submits the contact form, create the lead in HubSpot and notify Slack."** A workflow starts on the **On New Form Submission** trigger and chains into your CRM and messaging connectors. **"Fix the typo in the hero headline on the pricing page."** Runs **List Pages** → **Get Page Content** to find the node, then **Update Page Content** → **Publish Site**. ## 7. Permissions & data access **UnleashX CAN:** * Read sites, pages, collections, items, forms, submissions, assets, and products. * Create, update, delete, and publish CMS items. * Update page text nodes and publish the site. * Register assets and manage webhook subscriptions. **UnleashX CANNOT:** * Edit the site's design, layout, styles, or structure — that's the Designer. * Do anything outside the scopes you ticked on the token. * Reach sites the token wasn't generated for. * Create or modify ecommerce products and orders (products are read-only here). **To disconnect:** In UnleashX, open your agent → **Data Connectors** → **Webflow** → **Disconnect**. To fully revoke access, delete the token in **Site settings → Apps & integrations → API access**. Either action stops access immediately. ## 8. Troubleshooting | Problem | What it means | How to fix it | | -------------------------------------------- | ---------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | | `401 Unauthorized` | The token is wrong, or was deleted in site settings | Generate a new site API token and reconnect | | `403 Forbidden` | The token is missing the scope that tool needs | Regenerate the token with the scope ticked — scopes can't be added to an existing token | | `404 Not Found` | The ID belongs to a different site, or the item was deleted | Re-fetch IDs with **List Sites** / **List Collections** / **List Collection Items** | | Changes don't appear on the live site | CMS writes are staged, not published | Run **Publish Collection Item**, or **Publish Site** | | `409` / validation error on create or update | `field_data` doesn't match the collection's schema, or a required field is missing | Call **Get Collection** and match the field slugs and types exactly | | CMS tools unavailable | The site's plan doesn't include the CMS | Upgrade the site plan in Webflow | | A trigger fires for old records on first run | The first poll has no previous snapshot to compare against | Expected — subsequent polls only report what's genuinely new | For general connector issues, see [/mcp/integrations](/mcp/integrations). ## 9. Frequently asked questions **Is my site content stored by UnleashX?** No. Tools call the Webflow Data API live with your token and return the result. UnleashX keeps only the bookkeeping a polling trigger needs to know what it has already seen. **Can the agent redesign my site?** No. It works on content — CMS items, page text, assets, publishing. Layout and styling stay in the Designer. **Can I connect more than one site?** Yes. Generate a token per site and add each as its own connection, using **Account Name** to tell them apart. **Do I need a webhook, or a trigger?** Use a **trigger** to start an UnleashX workflow. Use **Create Webhook** when an external system needs Webflow to notify it directly. **How do I rotate the token?** Generate a new token in **Site settings → Apps & integrations → API access**, update it in UnleashX, then delete the old one. ## 10. References * Webflow Data API v2 reference: [https://developers.webflow.com/data/reference](https://developers.webflow.com/data/reference) * Site API tokens: [https://developers.webflow.com/data/reference/authentication](https://developers.webflow.com/data/reference/authentication) * Webflow CMS API: [https://developers.webflow.com/data/reference/cms](https://developers.webflow.com/data/reference/cms) # WhatsApp Business Source: https://docs.unleashx.ai/mcp/whatsapp-business Send WhatsApp messages, templates, media, and voice notes to customers through the Meta WhatsApp Cloud API. # WhatsApp Business > **In one line:** Connect the official Meta WhatsApp Cloud API so your UnleashX agent can send text, template, image, document, audio, and video messages to your customers on WhatsApp. | | | | ------------------ | ----------------------------------------------------------------------------------------------------------- | | **Category** | Communication | | **Authentication** | OAuth / Access Token (Meta Cloud API access token + phone number ID and WABA ID) | | **Setup time** | \~15 minutes | | **Difficulty** | Medium | | **Best for** | Businesses sending notifications, support replies, and template campaigns to customers on WhatsApp at scale | ## 1. Overview WhatsApp Business (via Meta's WhatsApp Cloud API) is the official way for companies to message customers on WhatsApp — sending order updates, reminders, support replies, and approved marketing templates from a verified business number. Once connected to UnleashX, your agent can send plain text messages, pre-approved templates (with variables), images, documents, audio/voice notes, and videos, and mark inbound messages as read — all through your own WhatsApp Business number. Connecting this to UnleashX lets your agent automate customer communication end to end: trigger a template when an event happens, reply with a document on request, or send a voice note — using the same compliant Cloud API that Meta requires for business messaging. ## 2. What you'll need * A **Meta for Developers** account and a **Meta App** with the **WhatsApp** product added. * A **WhatsApp Business Account (WABA)** and a registered **business phone number**. * Three values from the Meta dashboard: an **access token**, your **Phone Number ID**, and your **WhatsApp Business Account ID (WABA ID)**. * Approved message **templates** if you plan to send template messages (Meta must approve these in advance). If you don't manage the Meta App yourself, ask whoever administers your company's Meta Business / WhatsApp setup to add you as an app admin or to share the access token, Phone Number ID, and WABA ID. ## 3. Get your credentials To connect, UnleashX needs three values from Meta: an **Access Token**, a **Phone Number ID**, and a **WhatsApp Business Account ID (WABA ID)**. Getting them means setting up the official **Meta WhatsApp Cloud API** — no Twilio, WATI, or AiSensy needed. Already have WhatsApp Cloud API running? Skip ahead to **Step 8 — Collect your three values**. The steps below are the full setup from scratch. ### How the pieces fit together Each thing you create unlocks the next. This is the chain you'll build: ```text theme={null} Facebook account → Meta Developer account → Business Portfolio → Meta App (Business) → WhatsApp product → WhatsApp Business Account (WABA) → Phone number → Access token → (Webhook for receiving) ``` ### Set it up step by step Go to [Meta for Developers](https://developers.facebook.com) and log in with your Facebook account. Click **Get Started**, verify your email, turn on two-factor authentication if asked, and accept the developer terms. You now have a developer account. Open [Meta Business Settings](https://business.facebook.com/settings) and create your business portfolio — your **business name**, **email**, **website**, and **address**. This is the entity that will own your WhatsApp Business Account, and it has its own **Business portfolio ID**. Business portfolio info and ID in Business Settings In **Business Settings → Security Center**, click **Start verification** and upload your business documents (for example a registration certificate, GST certificate, or a utility bill). Start business verification in the Security Center Verification isn't required to test, but it **is** required for production use and for higher messaging limits — so it's worth doing early. Go to your [Apps dashboard](https://developers.facebook.com/apps) and click **Create App**. Create App from the Apps dashboard Choose the **Business** app type and click **Next**. Select the Business app type Fill in the **App name** and **contact email** (you can attach a **Business portfolio** now or later), then click **Create app**. Add app name and contact email, then create the app Inside the app, find **Add Product**, locate **WhatsApp**, and click **Set up**. Add the WhatsApp product to your app Meta automatically gives you a **test** WhatsApp Business Account, a **test phone number**, and a **temporary access token** so you can try things immediately. You'll land on the WhatsApp **Quickstart** page. WhatsApp Business Platform Quickstart Want to confirm it works before going further? Open **WhatsApp → API Setup** (or **Getting Started**). It shows a **temporary access token**, your test **Phone Number ID**, and your **WhatsApp Business Account ID**, plus a ready-made `curl` command and a **Send message** button. API Setup: temporary token, test number, Phone Number ID, and WABA ID Send the test message straight from that page, or run the command yourself — replace the three placeholders with the values shown: ```bash theme={null} curl -X POST \ https://graph.facebook.com/v23.0/PHONE_NUMBER_ID/messages \ -H "Authorization: Bearer ACCESS_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "messaging_product": "whatsapp", "to": "YOUR_NUMBER", "type": "text", "text": { "body": "Hello from WhatsApp Cloud API" } }' ``` In **WhatsApp → API Setup**, scroll to **Add a phone number** and click **Add phone number**. API Setup: add a phone number and payment method Enter your **business name**, **display name**, **category**, and the **phone number** to register, then choose a verification method. Register and verify your WhatsApp Business number Meta sends a one-time code by SMS or call — enter it to verify the number. Enter the verification code for your number The number must be able to receive an SMS or call, and it **cannot already be connected to another Cloud API**. A number currently on the WhatsApp Business **app** can sometimes be migrated using Meta's coexistence feature. Once the real number is added, copy these from the **API Setup** page (and from **Business Settings → Accounts → WhatsApp Accounts**). These are exactly what UnleashX asks for: | Value | Looks like | Where | | ------------------------------------------ | ------------------- | ----------------------------------------------------------------- | | **Phone Number ID** | `123456789012345` | API Setup page (the long number, **not** the phone number itself) | | **WhatsApp Business Account ID (WABA ID)** | `987654321098765` | API Setup page / WhatsApp Accounts | | **Access Token** | a long token string | API Setup page (temporary) — make it permanent in the next step | Phone Number ID and WhatsApp Business Account ID on the API Setup page The temporary token expires in about 24 hours, so create a permanent one for production. **1. Add a System User.** Go to **Business Settings → Users → System Users** and click **Add**. Name it (e.g. `whatsapp-api`) with the **Admin** role. Add a System User in Business Settings **2. Assign your app.** Select the system user → **Add Assets → Apps →** pick your app → enable **Manage app** (Full control). Also assign your WhatsApp account under **Accounts → WhatsApp Accounts** and allow **Manage WhatsApp Account**. Assign the app to the System User with Manage app access **3. Generate the token.** Back on the system user, click **Generate New Token** and choose your app. Generate a new token for the System User **4. Select permissions and generate.** Choose at least: * `whatsapp_business_messaging` * `whatsapp_business_management` Select WhatsApp permissions and generate the token Click **Generate token** and **copy it immediately** — this is your production access token. The permanent token is shown **once**. Copy it now and store it safely (treat it like a password). If you lose it, regenerate a new one. **About webhooks (receiving messages):** sending messages needs only the three values above. To *receive* inbound messages into a workflow, use the **Webhook** trigger in [Workflows](/mcp/workflows#webhook) — UnleashX gives you a callback URL to paste into **WhatsApp → Configuration** in Meta. You don't need to build your own server. Open **WhatsApp → Configuration** and click **Edit** next to the Webhook callback URL. WhatsApp Configuration: webhook callback URL and verify token Paste the callback URL and verify token UnleashX gives you, then click **Verify and save**. Edit the webhook callback URL and verify token Finally, subscribe to the **messages** field so inbound messages are delivered to your workflow. Subscribe to the messages webhook field **Credentials / scopes UnleashX needs and why:** | Credential / scope | Why UnleashX needs it | | ----------------------------------------- | ----------------------------------------------------------------- | | Access token (`access-token`) | Authenticates every call to the WhatsApp Cloud API on your behalf | | Phone Number ID (`phone-number-id`) | Identifies which business number sends the message | | WABA ID (`waba-id`) | Lets UnleashX list your approved message templates | | `whatsapp_business_messaging` permission | Required to send messages and media | | `whatsapp_business_management` permission | Required to read your message templates | | `business_management` permission | Lets the system user manage the WhatsApp account | ## 4. Connect on UnleashX Sign in at [https://www.tryunleashx.com](https://www.tryunleashx.com) and open the agent you want to connect. Open **Data Connectors** inside the agent. Locate **WhatsApp Business** and click **Connect** / **Add** / **Configure**. Enter your **access token**, **Phone Number ID**, and **WABA ID** from Section 3, then save. The connector shows a **Connected** badge once your credentials validate. You're ready to send. ### Use WhatsApp Business in a Workflow Once connected, you can add **WhatsApp Business** to any automation from the **Workflows** builder. Its triggers and tools appear in the Apps panel, marked with an **MCP** badge. Open **Workflows → New Workflow**. On the canvas, click **+ Add Trigger**. In the **Paths** panel, open the **Apps** tab and select **WhatsApp Business** — its **Triggers** are listed underneath. Use the search box if you have many connectors. WhatsApp Business triggers in the Apps panel Click the **+** below any node to add a step, then pick **WhatsApp Business** again — this time the panel lists its **Actions**. WhatsApp Business actions in the Apps panel Fill in the fields for the trigger or action you picked. Required fields are marked with a red asterisk (\*). Under **Selected account**, choose an already-connected account, or click **Add Account** to connect one now. Click **Save**. Use **Test** to verify the step, then toggle **Publish** when the workflow is ready. The steps are the same for every connector. For the full workflow builder guide, see [Using MCP in Workflows](/mcp/workflows). ## 5. Available tools | Tool | What it does | Changes data? | | --------------------- | -------------------------------------------------------------- | ------------- | | Send Message | Send a plain WhatsApp text message | ✏️ Yes | | List Templates | List your approved message templates | No | | Send Template | Send an approved template message with optional variables | ✏️ Yes | | Send Image URL | Send an image by public URL (optional caption) | ✏️ Yes | | Send Document | Send a document by uploaded media ID | ✏️ Yes | | Send Document URL | Send a document by public URL | ✏️ Yes | | Send Audio | Send an audio/voice message by media ID | ✏️ Yes | | Send Voice Message | Download audio from a URL, upload it, and send as a voice note | ✏️ Yes | | Send Video | Send a video by media ID (optional caption) | ✏️ Yes | | Mark Read | Mark an inbound message as read | ✏️ Yes | | Get Insurance Detail | Get car insurance quotes for a vehicle registration number | No | | Zimyo Employee Detail | Look up Zimyo employee details by phone number | No | Get Insurance Detail and Zimyo Employee Detail are helper lookups bundled into this server for specific business workflows (insurance quoting and HR employee lookup). They don't send WhatsApp messages themselves. ## 6. Example usage **"Text +91 98765 43210 their order #4521 has shipped."** Behind the scenes: Send Message (UnleashX normalizes the number and posts to the Cloud API). **"Send the 'appointment\_reminder' template to this customer for 3 PM tomorrow."** Behind the scenes: List Templates (confirm the template) → Send Template (with the time as a variable). ## 7. Permissions & data access **UnleashX CAN:** * Send text, template, image, document, audio/voice, and video messages from your business number. * List your approved message templates. * Mark inbound messages as read. **UnleashX CANNOT:** * Send free-form messages outside WhatsApp's 24-hour customer service window — those require an approved template. * Create or approve templates (that happens in the Meta dashboard). * Message numbers that haven't opted in, or bypass Meta's messaging policies. * Access your Meta account settings or billing. **How to disconnect:** In UnleashX, open **Data Connectors → WhatsApp Business → Disconnect**. To fully cut access, also revoke or regenerate the access token in **Meta → Business Settings → System Users**. Disconnecting takes effect immediately. ## 8. Troubleshooting | Problem | What it means | How to fix it | | --------------------------------- | -------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | | 401 — No access token found | The access token is missing, malformed, or not sent | Reconnect and re-enter a valid `access-token` (and re-check it hasn't expired) | | 401 — No Phone Number ID | The `phone-number-id` is missing | Add your Phone Number ID from the Meta API Setup page | | Token expired (Graph API error) | A temporary token expired (\~24h) | Generate a permanent System User token and reconnect | | 403 / permission error | The token lacks `whatsapp_business_messaging` or `_management` | Add the missing permission to the System User and regenerate the token | | Template not found / not approved | The template name/language is wrong or not yet approved | Use List Templates to confirm the exact name and language; approve it in Meta if pending | For general connector issues, see [/mcp/integrations](/mcp/integrations). ## 9. Frequently asked questions **Do I need approved templates to message customers?** Yes — to start a conversation or message outside the 24-hour service window, WhatsApp requires a pre-approved template. Plain text messages only work within an open customer service window. **Why does my access token keep expiring?** You're likely using a temporary token. Create a permanent **System User** access token in Meta Business Settings for production use. **Is my customer message data stored by UnleashX?** UnleashX sends messages on demand through Meta's API. Inbound webhook events may be logged for delivery and analytics; outbound message content is not retained beyond what's needed to complete the request. **Can I use my own phone number?** You use the business number registered to your WhatsApp Business Account in Meta. The `phone-number-id` you provide tells UnleashX which number to send from. ## 10. References * WhatsApp Cloud API documentation: [https://developers.facebook.com/docs/whatsapp/cloud-api](https://developers.facebook.com/docs/whatsapp/cloud-api) * Get started / API Setup: [https://developers.facebook.com/docs/whatsapp/cloud-api/get-started](https://developers.facebook.com/docs/whatsapp/cloud-api/get-started) * Message templates guide: [https://developers.facebook.com/docs/whatsapp/business-management-api/message-templates](https://developers.facebook.com/docs/whatsapp/business-management-api/message-templates) * System User access tokens: [https://developers.facebook.com/docs/whatsapp/business-management-api/get-started](https://developers.facebook.com/docs/whatsapp/business-management-api/get-started) # WhatsApp Web Source: https://docs.unleashx.ai/mcp/whatsapp-web Send WhatsApp messages from your own number by linking your phone with a QR code — no API key required. # WhatsApp Web > **In one line:** Link your personal WhatsApp by scanning a QR code, then let your UnleashX agent send WhatsApp messages straight from your own number — no developer account or API key needed. | | | | ------------------ | -------------------------------------------------------------------------------------------------------------------- | | **Category** | Communication | | **Authentication** | QR code pairing (link your phone — no API key) | | **Setup time** | \~3 minutes | | **Difficulty** | Easy | | **Best for** | Individuals and small teams who want to send WhatsApp messages from their existing number without the Meta Cloud API | ## 1. Overview WhatsApp Web lets you use your normal WhatsApp account from another device by linking it — the same way the official WhatsApp Web and Desktop apps work. UnleashX uses a WhatsApp Web gateway so your agent can send messages from the number already on your phone. Once linked, your agent can send WhatsApp text messages to any contact directly from your account — no business verification, no template approvals, and no API credentials to manage. Connecting WhatsApp Web to UnleashX is the fastest way to let an agent message people on WhatsApp using your existing number. You link your phone once by scanning a QR code, and the session stays connected until you unlink it. This uses your personal WhatsApp account through a linked-device session. Sending bulk or unsolicited messages can get your number blocked by WhatsApp. For high-volume, compliant business messaging, use the **WhatsApp Business** (Meta Cloud API) connector instead. ## 2. What you'll need * A phone with **WhatsApp installed and active** on the number you want to send from. * Your phone online and able to scan a QR code. * That's it — there's **no account to create, no API key, and no admin approval** needed. Because linking is done from your own phone, you don't need admin rights anywhere. Anyone with the phone can complete the pairing. ## 3. Link your WhatsApp (QR code pairing) There is **no API key and no OAuth** for this connector. You authenticate by scanning a QR code with your phone — exactly like signing in to WhatsApp Web in a browser. In your agent, open **Data Connectors → WhatsApp Web → Connect**. UnleashX displays a **QR code**. On your phone, open **WhatsApp → Settings → Linked Devices → Link a Device**. (On Android: **⋮ menu → Linked devices**.) Point your phone's camera at the QR code shown in UnleashX. WhatsApp links the session within a few seconds. Your phone needs to come online periodically to keep the linked session alive, just like WhatsApp Web. **No scopes or permissions to choose.** WhatsApp Web pairing does not use OAuth scopes — linking a device grants the session the ability to send and receive messages on your account, and there is no granular permission list to review. This is an honest limitation of the QR-pairing model. ## 4. Connect on UnleashX Sign in at [https://www.tryunleashx.com](https://www.tryunleashx.com) and open the agent you want to connect. Open **Data Connectors** inside the agent. Locate **WhatsApp Web** and click **Connect** / **Add** / **Configure** to show the QR code. Follow the QR pairing steps in Section 3 to link your phone. Once linked, the connector shows a **Connected** badge. Your agent can now send WhatsApp messages from your number. ### Use WhatsApp Web in a Workflow Once connected, you can add **WhatsApp Web** to any automation from the **Workflows** builder. Its triggers and tools appear in the Apps panel, marked with an **MCP** badge. Open **Workflows → New Workflow**. On the canvas, click **+ Add Trigger**. In the **Paths** panel, open the **Apps** tab and select **WhatsApp Web** — its **Triggers** are listed underneath. Use the search box if you have many connectors. WhatsApp Web triggers in the Apps panel Click the **+** below any node to add a step, then pick **WhatsApp Web** again — this time the panel lists its **Actions**. WhatsApp Web actions in the Apps panel Fill in the fields for the trigger or action you picked. Required fields are marked with a red asterisk (\*). Under **Selected account**, choose an already-connected account, or click **Add Account** to connect one now. Click **Save**. Use **Test** to verify the step, then toggle **Publish** when the workflow is ready. The steps are the same for every connector. For the full workflow builder guide, see [Using MCP in Workflows](/mcp/workflows). ## 5. Available tools | Tool | What it does | Changes data? | | ------------ | ----------------------------------------------------------------------- | ------------- | | Send Message | Send a WhatsApp text message to a phone number from your linked account | ✏️ Yes | ## 6. Example usage **"Message 9876543210 saying 'Running 10 minutes late, see you soon!'"** Behind the scenes: Send Message (UnleashX sends the text via your linked WhatsApp Web session). **"Send my colleague on +91 90000 11111 the meeting link."** Behind the scenes: Send Message (delivered from your own WhatsApp number). ## 7. Permissions & data access **UnleashX CAN:** * Send WhatsApp text messages from your linked number through the gateway session. **UnleashX CANNOT:** * Send messages once you unlink the device or your session expires. * Access your full chat archive, contacts list, or media library through this connector (it is send-only). * Verify a business identity or send approved templates (that's the WhatsApp Business connector). **How to disconnect:** Unlink from **your phone → WhatsApp → Settings → Linked Devices → (tap the UnleashX/WhatsApp Web session) → Log out**, and/or click **Disconnect** in UnleashX. Unlinking ends the session immediately. ## 8. Troubleshooting | Problem | What it means | How to fix it | | --------------------------------- | ------------------------------------------------------------------ | --------------------------------------------------------------------------------- | | QR code won't scan or expired | The displayed QR code timed out | Refresh the connector to generate a fresh QR code, then scan again | | Messages stopped sending | The linked session expired or your phone has been offline too long | Open WhatsApp on your phone to bring it online, or re-scan the QR to relink | | 401 / authorization error | The gateway session token is missing or invalid | Reconnect and re-scan the QR code to establish a new session | | 400 — Invalid phone number | The recipient number was empty or non-numeric | Provide a valid phone number (digits only is fine) | | Number got restricted by WhatsApp | Too many messages or spam reports | Stop bulk sending; for high-volume use, switch to the WhatsApp Business connector | For general connector issues, see [/mcp/integrations](/mcp/integrations). ## 9. Frequently asked questions **Do I need a WhatsApp Business account or API key?** No. This connector links your existing personal WhatsApp via QR code — there's nothing to register and no key to manage. **How is this different from WhatsApp Business?** WhatsApp Business uses Meta's official Cloud API (with templates, verification, and higher limits). WhatsApp Web links your normal number for simple, low-volume sending. Use Business for compliant, large-scale messaging. **Can multiple people connect?** Each connection links one phone/number. Different users can each link their own WhatsApp account to their own agent. **Is my message data stored?** UnleashX sends messages on demand through the gateway. This connector is send-only and does not pull your chat history into UnleashX. ## 10. References * WhatsApp Web / linked devices help: [https://faq.whatsapp.com/general/download-and-installation/about-linked-devices](https://faq.whatsapp.com/general/download-and-installation/about-linked-devices) * How to link a device: [https://faq.whatsapp.com/378279804439436](https://faq.whatsapp.com/378279804439436) * WhatsApp Business (official API) alternative: [https://business.whatsapp.com/products/business-platform](https://business.whatsapp.com/products/business-platform) # WooCommerce Source: https://docs.unleashx.ai/mcp/woocommerce Let your UnleashX agent manage WooCommerce products, orders, and customers from a conversation. # WooCommerce > **In one line:** Connect WooCommerce so your UnleashX agent can look up products, check and update orders, manage customers, and react the moment a new order comes in. | | | | ------------------ | ----------------------------------------------------------------------------------------------------------------------------------- | | **Category** | Commerce | | **Authentication** | Consumer Key + Consumer Secret (REST API) | | **Setup time** | \~5 minutes | | **Difficulty** | Medium | | **Best for** | WooCommerce stores that want an AI agent to answer order and product questions, update order status, and keep customer records tidy | ## 1. Overview WooCommerce is the commerce plugin that turns a WordPress site into an online store — products, categories, orders, and customers all live in your own WordPress database and are exposed through the WooCommerce REST API. Once connected to UnleashX, your agent can browse and search your catalog, create and update products, look up an order by ID or by the customer's phone number, move an order to a new status, and create or find customers. Four triggers let a workflow start the moment a new order, product, customer, or coupon appears. Connecting WooCommerce to UnleashX means the store answers for itself: a shopper asks "where's my order?" and the agent checks it live, a new order fires a workflow, and support stops copy-pasting from wp-admin. ## 2. What you'll need * A WordPress site with the **WooCommerce plugin active**, served over **HTTPS**. * Your **Store URL** — the site's home address, e.g. `https://yourstore.com` (no trailing slash). * An **administrator** (or shop manager) account on that WordPress site. * A **Consumer Key** (`ck_…`) and **Consumer Secret** (`cs_…`) generated from WooCommerce's REST API screen. Pretty permalinks must be enabled (**Settings → Permalinks →** anything other than "Plain"), otherwise the WooCommerce REST API returns `404` on every request. No admin access? Ask your store owner to generate a Read/Write API key and share the Store URL, Consumer Key, and Consumer Secret with you. ## 3. Get your credentials WooCommerce authenticates with a **Consumer Key / Consumer Secret** pair. Both are generated together in one step inside WordPress admin. ### Find your Store URL In WordPress admin, go to **Settings → General**. Copy the value in the **WordPress Address (URL)** field and remove any trailing slash — e.g. `https://yourstore.com`. If WooCommerce lives in a subfolder or subdomain (e.g. `https://yourstore.com/shop`), use that exact base. UnleashX appends `/wp-json/wc/v3` itself. ### Generate the Consumer Key and Secret Sign in at `https://yourstore.com/wp-admin`, then go to **WooCommerce → Settings → Advanced → REST API** and click **Add key**. WooCommerce Settings → Advanced → REST API → Add key * **Description** — something you'll recognise later, e.g. "UnleashX". * **User** — an admin or a dedicated integration user. The key acts as this user. * **Permissions** — **Read/Write** (choose **Read** if your agent only needs to look things up). Then click **Generate API key**. Key details: description, owning user, and permission level WooCommerce shows the **Consumer key** (`ck_…`) and **Consumer secret** (`cs_…`). Copy both and store them in your password manager. Consumer key and secret — copy the secret now, it can't be retrieved later The Consumer Secret is displayed only on this screen. If you lose it you can't recover it — revoke the key and generate a new one. **What the credentials can access** | Permission | Why UnleashX needs it | | -------------------------- | ------------------------------------------------ | | Read products & categories | List, search, and fetch product details | | Write products | Create, update, and delete products | | Read orders | List orders, look one up by ID or customer phone | | Write orders | Create an order and change its status | | Read & write customers | List, search, fetch, and create customers | | Read payment gateways | List the store's available payment methods | Permissions come from the key, not from the tool. A **Read** key makes every write tool fail with `401` — use **Read/Write** if you want the agent to create products, orders, or customers. ### Quick test (optional) Confirm the pair works before connecting, by opening this in a browser with your values substituted: ``` https://yourstore.com/wp-json/wc/v3/products?consumer_key=ck_…&consumer_secret=cs_… ``` A JSON list of products (or an empty array) means the key is valid. A `401` means the key or secret is wrong; a `404` usually means permalinks aren't set to a pretty format. ## 4. Connect on UnleashX Sign in at [https://www.tryunleashx.com](https://www.tryunleashx.com) and open the agent you want to connect. In the agent, go to **Data Connectors** and locate **WooCommerce**. Click **Connect** / **Add** / **Configure** and complete the form. | Field | What to enter | | ------------------- | --------------------------------------------------------------------------------------------------------------------- | | **Store URL** | Your store's address, e.g. `https://yourstore.com` — no trailing slash, no `/wp-admin`. | | **Consumer Key** | The `ck_…` value from Section 3. | | **Consumer Secret** | The matching `cs_…` value. | | **Account Name** | A label for this connection inside UnleashX (e.g. "Main store"). This is just for you; it doesn't affect WooCommerce. | Save. The status will switch to a **Connected** badge and your agent can start working with the store. Never expose `ck_`/`cs_` in client-side code. Give each integration its own key so you can revoke one without affecting the others. ### Use WooCommerce in a Workflow Once connected, you can add **WooCommerce** to any automation from the **Workflows** builder. Its triggers and tools appear in the Apps panel, marked with an **MCP** badge. Open **Workflows → New Workflow**. On the canvas, click **+ Add Trigger**. In the **Paths** panel, open the **Apps** tab and select **WooCommerce** — its **Triggers** are listed underneath. Use the search box if you have many connectors. Click the **+** below any node to add a step, then pick **WooCommerce** again — this time the panel lists its **Actions**. WooCommerce actions in the Apps panel Fill in the fields for the trigger or action you picked. Required fields are marked with a red asterisk (\*). Under **Selected account**, choose an already-connected account, or click **Add Account** to connect one now. Click **Save**. Use **Test** to verify the step, then toggle **Publish** when the workflow is ready. The steps are the same for every connector. For the full workflow builder guide, see [Using MCP in Workflows](/mcp/workflows). ## 5. Available tools Tools are listed the way they appear in the **Workflows** Apps panel. The **Tool ID** is what the agent calls behind the scenes. **Products** | Tool | Tool ID | What it does | Required | Changes data? | | ------------------------ | -------------------------- | ---------------------------------- | ------------- | ------------- | | List Products | `list_products` | Lists products in the store | — | No | | Get Product | `get_product` | Gets a single product by ID | `product_id` | No | | Create Product | `create_product` | Creates a new product | `name` | ✏️ Yes | | Update Product | `update_product` | Updates an existing product | `product_id` | ✏️ Yes | | Delete Product | `delete_product` | Deletes a product | `product_id` | ⚠️ Yes | | List Product Categories | `list_product_categories` | Lists all product categories | — | No | | Get Products by Category | `get_products_by_category` | Lists products within one category | `category_id` | No | **Orders** | Tool | Tool ID | What it does | Required | Changes data? | | ------------------- | --------------------- | ------------------------------------------------------------ | -------------------- | ------------- | | List Orders | `list_orders` | Lists orders; supports search, including phone-number lookup | — | No | | Get Order | `get_order` | Gets a single order by ID | `order_id` | No | | Create Order | `create_order` | Creates an order for a customer | `customer_id` | ✏️ Yes | | Update Order Status | `update_order_status` | Moves an order to a new status | `order_id`, `status` | ✏️ Yes | **Customers** | Tool | Tool ID | What it does | Required | Changes data? | | ---------------- | ------------------ | ----------------------------------- | ------------------------ | ------------- | | List Customers | `list_customers` | Lists customers | — | No | | Get Customer | `get_customer` | Gets a single customer by ID | `customer_id` | No | | Create Customer | `create_customer` | Creates a customer record | `customer_name`, `email` | ✏️ Yes | | Search Customers | `search_customers` | Searches customers by name or email | `search` | No | **Store** | Tool | Tool ID | What it does | Required | Changes data? | | --------------------- | ----------------------- | ------------------------------------------- | -------- | ------------- | | List Payment Gateways | `list_payment_gateways` | Lists the store's available payment methods | — | No | **Triggers** | Trigger | Trigger ID | Fires when | | --------------- | ----------------- | ------------------------ | | On New Order | `on_new_order` | A new order is placed | | On New Product | `on_new_product` | A new product is added | | On New Customer | `on_new_customer` | A new customer registers | | On New Coupon | `on_new_coupon` | A new coupon is created | ## 6. Example usage **"Where's my order? My number is +91 98765 43210."** Runs **List Orders** with the phone number as the search term, then **Get Order** for the match. **"Mark order 1042 as completed."** Runs **Update Order Status** with `order_id: 1042` and `status: completed`. **"What do we have in the Accessories category, and is the leather wallet in stock?"** Runs **List Product Categories** → **Get Products by Category** → **Get Product**. **"When a new order comes in, message the customer on WhatsApp with the order summary."** A workflow starts on the **On New Order** trigger and chains into your messaging connector. ## 7. Permissions & data access **UnleashX CAN:** * Read products, categories, orders, customers, and payment gateways. * Create and update products, orders, and customers. * Delete products. * Start workflows on new orders, products, customers, and coupons. **UnleashX CANNOT:** * Do anything the API key's permission level doesn't allow (a **Read** key can't write). * Take payments or refund an order. * Touch WordPress content, plugins, themes, or site settings — that's the separate [WordPress](/mcp/wordpress) connector. * Access any store other than the one you connected. **To disconnect:** In UnleashX, open your agent → **Data Connectors** → **WooCommerce** → **Disconnect**. To fully revoke access, go to **WooCommerce → Settings → Advanced → REST API** in wp-admin and revoke the key. Either action stops access immediately. ## 8. Troubleshooting | Problem | What it means | How to fix it | | ----------------------------- | --------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | | `401 Unauthorized` | Wrong Consumer Key/Secret, the key was revoked, or it's Read-only on a write tool | Re-check both values; regenerate with **Read/Write** if the agent needs to write | | `404 Not Found` | Permalinks are set to "Plain", or the REST API is blocked | Set **Settings → Permalinks** to any pretty format, then retry | | Every request fails over HTTP | Credentials aren't sent over plain HTTP by many hosts | Serve the site over HTTPS | | `403 Forbidden` | A security plugin or firewall is blocking `/wp-json/` | Allowlist the REST API route in the plugin or at the host | | Order lookup returns nothing | The phone number is stored in a different format | Search with the digits only, or look the customer up first with `search_customers` | | Wrong store data | The Store URL points at the wrong site or a subfolder | Use the exact base URL — UnleashX appends `/wp-json/wc/v3` itself | For general connector issues, see [/mcp/integrations](/mcp/integrations). ## 9. Frequently asked questions **Is my store data stored by UnleashX?** No. Tools call your WooCommerce REST API live with your credentials and return the result. UnleashX doesn't keep a copy of your catalog, orders, or customers. **Can the agent take payments?** No. It can read the available payment gateways and create or update orders, but payment is handled by your store's checkout. **Can I connect more than one store?** Yes. Generate a key per store and add each as its own connection, using **Account Name** to tell them apart. **How do I rotate my key?** Generate a new key in **WooCommerce → Settings → Advanced → REST API**, update it in UnleashX, then revoke the old one. **Do I also need the WordPress connector?** Only if you want the agent to handle posts, categories, users, or media. Products, orders, and customers are all covered here. ## 10. References * WooCommerce REST API docs: [https://woocommerce.github.io/woocommerce-rest-api-docs/](https://woocommerce.github.io/woocommerce-rest-api-docs/) * Generating REST API keys: [https://woocommerce.com/document/woocommerce-rest-api/](https://woocommerce.com/document/woocommerce-rest-api/) * WordPress permalink settings: [https://wordpress.org/documentation/article/customize-permalinks/](https://wordpress.org/documentation/article/customize-permalinks/) # WordPress Source: https://docs.unleashx.ai/mcp/wordpress Let your UnleashX agent publish and edit WordPress posts, categories, users, and featured images. # WordPress > **In one line:** Connect WordPress so your UnleashX agent can create and update posts, manage categories and users, set featured images, and even generate AI cover art. | | | | ------------------ | --------------------------------------------------------------------------------------------------- | | **Category** | CMS | | **Authentication** | Application Password | | **Setup time** | \~6 minutes | | **Difficulty** | Medium | | **Best for** | Content teams and site owners who want to draft, publish, and organize WordPress content hands-free | ## 1. Overview WordPress is the world's most popular content management system, used to run blogs, marketing sites, and online publications. Content is organized into posts, grouped by categories, and managed by users with different roles. Once connected, your UnleashX agent can create and edit posts, search existing content, manage categories and users, attach featured images, and generate AI cover images — all through the WordPress REST API. That lets you turn an idea or briefing into a published (or drafted) post without logging into wp-admin. Connecting WordPress to UnleashX is useful for content marketers and site managers who want to speed up publishing, keep categories tidy, and handle routine site administration through conversation. ## 2. What you'll need * A self-hosted WordPress site (or one where you control the REST API) reachable over HTTPS. * Your site's **base URL** (e.g. `https://yourblog.com`). * A WordPress user account with a role that can do what you need (Author/Editor to post; Administrator to manage users). * An **Application Password** for that account. Application Passwords require WordPress 5.6+ and an HTTPS site. If you don't see the option, an administrator may have disabled it, or your hosting may need it enabled. Managing other users requires an **Administrator** account. ## 3. Get your credentials WordPress uses an **Application Password** with the REST API over Basic auth. Sign in to your site's admin (`https://yoursite.com/wp-admin`). In the left sidebar, go to **Users**, then open **Profile** (your own account). WordPress Users menu On the profile page, scroll past **Account Management** to the **Application Passwords** section. WordPress Application Passwords section In the **New Application Password Name** field, type a name you'll recognize — for example, `UnleashX`. Click **Add Application Password**. WordPress generates a password that looks like `xxxx xxxx xxxx xxxx xxxx xxxx`. The Application Password is shown only once. Copy it now — if you lose it, revoke it and create a new one. You can paste it with or without the spaces; UnleashX accepts either. You'll need three things to connect: your WordPress **username**, this **Application Password**, and your **site URL** (e.g. `https://yoursite.com`). Don't see an **Application Passwords** section? It's built into WordPress 5.6+ but is hidden on sites served over plain HTTP or where a security plugin has disabled it. Use HTTPS, or enable Application Passwords, then refresh the profile page. **What the credentials can access** | Scope / Access | Why UnleashX needs it | | ----------------------- | ----------------------------------------------------- | | Read & write Posts | To create, update, fetch, search, and delete posts | | Read & write Categories | To create, update, and organize content categories | | Read & write Users | To create, update, and manage site users (Admin only) | | Manage Media | To upload images and set featured images on posts | An Application Password inherits the role of the user it belongs to. To manage users you must create it on an **Administrator** account; for posting only, an Author/Editor account is enough. ## 4. Connect on UnleashX Go to [https://www.tryunleashx.com](https://www.tryunleashx.com) and open the agent you want to connect. In the agent, go to **Data Connectors**. Locate **WordPress** in the list and click **Connect** / **Add** / **Configure**. A form opens with four fields. | Field | What to enter | | ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | **WP Site URL** | Your site's address, e.g. `https://yoursite.com` (no `/wp-admin`). | | **WP Username** | The WordPress account you were signed in as when you created the Application Password — e.g. `admin`. The Application Password belongs to this user, so the username here **must match** that account. | | **Account Name** | A label for this connection inside UnleashX — usually your name or a name for the site (e.g. "Marketing blog"). This is just for you; it doesn't affect WordPress. | | **WP App Password** | The Application Password you copied in Section 3 (`xxxx xxxx xxxx xxxx xxxx xxxx`). | UnleashX combines **WP Username** + **WP App Password** as HTTP Basic auth against your site's REST API. Click **Add Tool**. When the status shows a **Connected** badge, your agent can start working with WordPress. The **WP Username** must be the exact account the Application Password was generated under. If an admin created the password while signed in as `admin`, enter `admin` here — not your display name or email. A mismatch causes a `401 Unauthorized` even when the password is correct. ### Use WordPress in a Workflow Once connected, you can add **WordPress** to any automation from the **Workflows** builder. Its triggers and tools appear in the Apps panel, marked with an **MCP** badge. Open **Workflows → New Workflow**. On the canvas, click **+ Add Trigger**. In the **Paths** panel, open the **Apps** tab and select **WordPress** — its **Triggers** are listed underneath. Use the search box if you have many connectors. Click the **+** below any node to add a step, then pick **WordPress** again — this time the panel lists its **Actions**. WordPress actions in the Apps panel Fill in the fields for the trigger or action you picked. Required fields are marked with a red asterisk (\*). Under **Selected account**, choose an already-connected account, or click **Add Account** to connect one now. Click **Save**. Use **Test** to verify the step, then toggle **Publish** when the workflow is ready. The steps are the same for every connector. For the full workflow builder guide, see [Using MCP in Workflows](/mcp/workflows). ## 5. Available tools | Tool | What it does | Changes data? | | ------------------ | -------------------------------------------------------------------------- | ------------- | | Create Post | Creates a new post (draft or published) | ✏️ Yes | | Update Post | Updates an existing post | ✏️ Yes | | Get Post | Gets a single post by ID | No | | Delete Post | Deletes a post | ⚠️ Yes | | Search Posts | Searches posts by status, author, etc. | No | | Create Category | Creates a category | ✏️ Yes | | Update Category | Updates a category | ✏️ Yes | | Get Category | Gets a single category by ID | No | | Delete Category | Deletes a category | ⚠️ Yes | | Search Categories | Searches categories | No | | Create User | Creates a new site user | ✏️ Yes | | Update User | Updates a user | ✏️ Yes | | Get User | Gets a single user by ID | No | | Delete User | Deletes a user | ⚠️ Yes | | Search Users | Searches users by role or name | No | | Set Featured Image | Sets a media item as a post's featured image | ✏️ Yes | | Generate AI Image | Generates an AI image, uploads it to Media, optionally sets it as featured | ✏️ Yes | ## 6. Example usage **"Draft a blog post titled 'Spring Sale Tips' in the Marketing category and generate a cover image."** Behind the scenes: Search Categories → Create Post → Generate AI Image (sets it as featured). **"Find all draft posts by Maria and publish the one about onboarding."** Behind the scenes: Search Users → Search Posts → Update Post. ## 7. Permissions & data access **UnleashX CAN:** * Read, create, update, and delete posts and categories. * Search posts, categories, and users. * Manage users (when connected with an Administrator account). * Upload media, set featured images, and generate AI cover images. **UnleashX CANNOT:** * Do anything the connected user's role doesn't permit. * Change WordPress core settings, themes, or plugins. * Access sites other than the one you connected. **To disconnect:** In UnleashX, open your agent → **Data Connectors** → **WordPress** → **Disconnect**. To fully revoke access, go to **Users → Profile → Application Passwords** in WordPress and click **Revoke**. Either action stops access immediately. ## 8. Troubleshooting | Problem | What it means | How to fix it | | ----------------------------- | ---------------------------------------------------------------- | ------------------------------------------------------------------------------- | | `401 Unauthorized` | Wrong username/Application Password, or it was revoked | Recreate the Application Password and re-enter username + password | | `403 Forbidden` | The connected user's role can't perform that action | Connect with an account that has the needed role (e.g. Administrator for users) | | `404 Not Found` | The post/category/user ID doesn't exist, or REST API is disabled | Verify the ID and that `/wp-json/` is reachable on your site | | Application Passwords missing | Disabled or site not on HTTPS | Enable HTTPS and Application Passwords (WordPress 5.6+) | | Connection refused | Site URL wrong or REST API blocked by a plugin/firewall | Confirm the base URL and that the REST API isn't blocked | For general connection issues, see [/mcp/integrations](/mcp/integrations). ## 9. Frequently asked questions **Is my data stored by UnleashX?** UnleashX calls your WordPress REST API live with your credentials when a tool runs. It doesn't keep a separate copy of your site content. **Can multiple team members connect?** Yes. Each person creates their own Application Password on their own WordPress account, and each connection inherits that user's role. **How do I rotate my key?** Create a new Application Password in **Users → Profile**, update it in UnleashX, then revoke the old one. Access switches over immediately. **Does the AI image tool need anything extra?** Generate AI Image generates images via OpenAI, so an OpenAI API key must be supplied (passed in or configured at the platform level). ## 10. References * WordPress REST API handbook: [https://developer.wordpress.org/rest-api/](https://developer.wordpress.org/rest-api/) * Application Passwords reference: [https://developer.wordpress.org/rest-api/using-the-rest-api/authentication/#application-passwords](https://developer.wordpress.org/rest-api/using-the-rest-api/authentication/#application-passwords) * REST API authentication overview: [https://developer.wordpress.org/rest-api/using-the-rest-api/authentication/](https://developer.wordpress.org/rest-api/using-the-rest-api/authentication/) # Using MCP in Workflows Source: https://docs.unleashx.ai/mcp/workflows Build a workflow in UnleashX, add a trigger and MCP app steps, branch with conditions, and publish — step by step. # Using MCP in Workflows ## What is a Workflow? A workflow is a sequence of connected steps that automates a process from start to finish. Instead of performing tasks manually, a workflow executes predefined actions automatically based on a trigger or event. Think of a workflow as a digital process that moves information between different systems, makes decisions, and performs actions without human intervention. For example, when a new lead is submitted through a form, a workflow can automatically save the lead in a CRM, notify the sales team, and schedule a follow-up task. In UnleashX, every connected service appears in the workflow builder as an **app** marked with an **MCP** badge — so the same MCP servers you connect once become the building blocks of your automations. *** ## Why Use Workflows? Workflows help organizations automate repetitive tasks, reduce manual effort, and ensure processes are executed consistently. ### Benefits of Workflows * **Save Time** by automating repetitive tasks and reducing manual work. * **Increase Efficiency** by connecting multiple tools and systems into a single automated process. * **Reduce Errors** by eliminating manual data entry and repetitive actions. * **Improve Consistency** by ensuring tasks are performed the same way every time. * **Scale Operations** by handling large volumes of tasks without additional effort. * **Enable Intelligent Automation** by combining business logic, AI capabilities, and external applications. Whether it's managing leads, processing support requests, updating records, sending notifications, or coordinating tasks across multiple applications, workflows help teams streamline operations and focus on higher-value work. *** ## How to build one This guide walks the full build, end to end, exactly as it appears in UnleashX: Create a new workflow. Choose what starts the flow. Set up each trigger type. Add actions and branch the flow. Go live. *** ## 1. Open Workflows Sign in at [https://www.tryunleashx.com](https://www.tryunleashx.com). In the left sidebar under **BUILD**, click **Workflows**. UnleashX home and sidebar On the Workflows list, click **+ New Workflow** in the top-right. (You can also filter by date or search existing workflows here, and switch to **Execution History** to see past runs.) Workflows list with New Workflow button A blank workflow opens (named **New Workflow …** in the breadcrumb). The dotted area is your canvas; the **+** in the middle is where you add your first step. The **Publish** toggle and **Save Changes** button are in the top-right. Empty workflow canvas *** ## 2. Add a trigger A **trigger** is the event that starts your workflow. Click the **+** node. A menu of trigger types appears: | Trigger type | Starts the workflow when… | | ------------------------------ | ---------------------------------------------------------------- | | **Event Based Actions in App** | something happens in a connected app (e.g. a new row in a sheet) | | **Scheduled Actions** | a schedule fires (e.g. every morning) | | **Form Submission** | a UnleashX form is submitted | | **Webhook** | data is sent to a webhook URL | | **Manually Trigger** | you run it by hand | Trigger type menu Choose the type that fits your use case — [Section 3](#3-trigger-types-in-detail) sets up each one. For example, **Event Based Actions in App** adds the node with a **+ Add Trigger** button beneath it, ready to attach an MCP app. Event Based Actions node with Add Trigger *** ## 3. Trigger types in detail Whichever trigger you pick, the rest of the build (steps, conditions, publish) is the same. Here's how to set up each of the five types. ### Event Based Actions in App (MCP apps) Start the workflow from something happening in a connected app — for example, a new row in Google Sheets. Click **+ Add Trigger**. The **Paths** panel opens on the right with three tabs — **Apps**, **Builder**, **Agents**. On **Apps**, you'll see every connected service; MCP servers carry an **MCP** badge (HubSpot, Google Sheets, Google Calendar, Slack, Gmail, Airtable, and more). Apps list in the Paths panel Click an app to expand its **Triggers**. For **Google Sheets**, for example, you can start on **On Row Added**, **On Row Updated**, **On Row Added Or Updated**, **On Row Deleted**, **On Cell Updated**, or **On Cell Value Matches Condition**. Pick the one you want. Google Sheets triggers A configuration panel opens (with a **Test** button), and a **Trigger Node** is placed on the canvas. Fill in the fields: | Field | What to choose | | ---------------------- | -------------------------------------------------------------------------------------- | | **Select Trigger** | The trigger event, e.g. *On Row Added Or Updated*. | | **Selected account** | The connected account to use. Pick yours, or click **Add Account** to connect one. | | **Schedule** | How often UnleashX checks for the event — *Every 1 minute*, *2*, *5*, or *10 minutes*. | | **Select Spreadsheet** | The spreadsheet to watch. | | **Select Sheet** | The specific tab within it. | Trigger configuration panel Open **Selected account** and choose the connected account (e.g. `tarun.fogaat@unleashx.ai`). Don't see it? Click **Add Account** to connect one — this is the same OAuth connection described in the [MCP Integrations](/mcp/integrations) catalog. Select account dropdown Open **Schedule** and choose how often to check — for near-real-time, pick **Every 1 minute**. Schedule dropdown With the account, schedule, spreadsheet, and sheet selected, click **Save**. Your trigger node is ready. Filled trigger configuration The **Schedule** controls how frequently UnleashX polls the app for the event. A shorter interval reacts faster but runs more often — pick the slowest interval that still feels responsive for your use case. ### Scheduled Actions (time-based) Choose **Scheduled Actions** to run the workflow on a clock instead of an app event — daily reports, periodic syncs, reminders. Choosing it opens the **Time Based Workflow** dialog. Set the schedule one of two ways: * **With the dropdowns:** *Every* `day` *at* `every hour` : `every minute`. Narrow each dropdown to pick a specific day, hour, and minute (e.g. *Every day at 09 : 00*). * **With a cron expression:** type one in the box for full control, e.g. `30 5 * * 1,6` (5:30 AM on Mon and Sat). The format is `minute hour day-of-month month day-of-week`. Click **Create**. The workflow now runs automatically on that schedule. Time Based Workflow schedule dialog Not sure about cron? Use the dropdowns — they cover most schedules. Reach for a cron expression only when you need something the dropdowns can't express (e.g. "only on weekdays"). ### Form Submission Choose **Form Submission** to run the workflow whenever a UnleashX **Form** is submitted — ideal for lead capture or intake. In the panel, open **Form ID** and select the form to watch. From then on, every submission of that form starts the workflow, and the submitted fields are available to later steps (e.g. map the submitter's email into a **Send Email** action). Form Submission trigger with Form ID ### Webhook Choose **Webhook** to start the workflow when any external system sends data to a URL — the most flexible way to connect third-party tools. In the panel, click **+ Generate URL**. UnleashX creates a unique endpoint for this workflow, for example: `https://www.tryunleashx.com/api/webhook/33d48ae5-556e-4fb5-82f1-8377c9381f17` The method is **ANY**, so the sender can use GET, POST, etc. Webhook trigger — Generate URL Click the **copy** icon and paste the URL into the external tool/service that should trigger this workflow (your app, a third-party automation, a payment provider's webhook settings, etc.). When that system sends a request to the URL, the workflow runs and the **request payload becomes available to later steps** — so you can pull fields out of it and act on them. Click **Test Webhook** to send a sample call and confirm the workflow receives the data. Then **Save**. Webhook trigger — generated URL with Copy and Test Treat the webhook URL like a secret — anyone who has it can trigger this workflow. If it leaks, generate a new one and update the sender. ### Manually Trigger Choose **Manually Trigger** to run the workflow on demand — handy for one-off jobs and while you're testing. It adds a **Manually Trigger** node with no configuration; just add your steps after it (from **Apps**, **Builder**, or **Agents**). The workflow runs only when you start it by hand. Manually Trigger node and the steps panel *** ## 4. Add steps and conditions With a trigger in place, click the **+** below the trigger node to add the next step. The panel's tabs give you three kinds of step: | Tab | What's inside | Use it for | | ----------- | ------------------------------------------------------------------------------ | ----------------------------------------------------------------- | | **Apps** | Connected MCP apps and their actions | Do something in a tool — add a row, send a message, create a deal | | **Builder** | Flow Control, HTTP Request, Regex, Data Source Helper, OpenAI Helper, and more | Logic, conditions, calling any API, transforming data | | **Agents** | Your UnleashX agents | Hand a step to an agent | Paths panel tabs ### Add an action (MCP app) On the **Apps** tab, pick a connected app and choose an **action** (for example **Add Row** in Google Sheets, or **Send Message** in WhatsApp). Map its inputs using values from earlier steps, then **Save**. A single workflow can mix actions from several different MCP apps. ### Add a condition Conditions live under the **Builder** tab. Click the **+**, switch to the **Builder** tab, and open **Flow Control**. Builder tab actions Flow Control gives you: | Action | What it does | | -------------- | ------------------------------------ | | **Input** | Add more input fields to the flow | | **If/Else** | Branch the flow based on a condition | | **Loop** | Repeat steps over a list of items | | **Delay** | Pause the flow for a set time | | **Go To Node** | Jump to another node in the flow | For a condition, pick **If/Else**. Flow Control actions In **If/Else**, build a rule from a value (usually the output of an earlier step), an operator, and a comparison value — for example *order status equals "shipped"*. Connect the **If** path and the **Else** path to the steps that should run for each outcome. Put the step that produces the data **before** the **If/Else** that checks it. A condition can only read values that already exist earlier in the run. ### Call any API (HTTP Request) Need something that isn't a built-in app action? Use **Builder → HTTP Request** to call any REST API. Fill in **Name**, **Purpose**, **Method**, **URL**, **Authentication**, optional **Query Params** / **Headers**, **Content Type**, and **Body Type**, then **Save**. HTTP Request configuration *** ## 5. Save and publish Click **Save Changes** (top-right) as you build. Use a node's **Test** button to run just that step and check its output. When you're ready, switch the **Publish** toggle on. The workflow now runs automatically whenever its trigger fires. Open **Execution History** (top-right, or from the Workflows list) to see each run, its steps, and their outputs — handy for confirming everything behaves as expected. *** ## Putting it together — an example A simple end-to-end flow using one trigger, one condition, and one action: ```text theme={null} Trigger: Google Sheets — On Row Added Or Updated (every 1 minute) │ ▼ If/Else: row Status equals "New" ├─ If ─▶ Slack — Send Message: "New lead: {{row.Name}} ({{row.Phone}})" └─ Else ─▶ (end — nothing to do) ``` When a new row lands in the sheet, the workflow checks its status and, if it's new, posts the lead to Slack — no manual steps. *** ## Tips & troubleshooting * **An app isn't in the Apps tab?** It isn't connected yet. Connect it first (see [MCP Integrations](/mcp/integrations)), then it appears with an **MCP** badge. * **"Add Account" instead of your account?** The app is connected for the workspace but this account isn't linked — click **Add Account** and complete the sign-in. * **A step fails with `401`/`403`?** The account's access expired or lacks permission — reconnect it and re-approve its scopes. * **A trigger never fires?** Check the **Schedule** is set and the right **spreadsheet/sheet** (or equivalent) is selected, then confirm the change you expect actually matches the trigger (e.g. a *new* row for **On Row Added**). * **Build incrementally:** add one node, **Test** it, then add the next. It's far easier to debug a 2-node flow than a finished one. *** ## Next steps * Browse every connectable app in the [MCP Integrations](/mcp/integrations) catalog. * New to MCP? Start with the [Introduction](/mcp/introduction). * Connect a server (e.g. [Google Sheets](/mcp/google-sheets), [Slack](/mcp/slack)) and build the example above. # YouTube Analytics Source: https://docs.unleashx.ai/mcp/youtube-analytics Let your UnleashX agent pull channel and video analytics, reports, and groups from YouTube. # YouTube Analytics > **In one line:** Connect YouTube Analytics so your UnleashX agent can pull channel and video reports, list your top-performing videos, and organize analytics groups — all in plain language. | | | | ------------------ | ------------------------------------------------------------------------------------------------------------- | | **Category** | Advertising & Analytics | | **Authentication** | OAuth (Google) | | **Setup time** | \~2 minutes | | **Difficulty** | Easy | | **Best for** | Creators and marketing teams that want an AI agent to pull YouTube performance reports without opening Studio | ## 1. Overview YouTube Analytics is Google's reporting layer for YouTube channels. It holds the metrics behind your channel and videos — views, watch time, subscribers, traffic sources, and more — along with analytics groups that let you slice performance across sets of videos or channels. Once connected to UnleashX, your agent can pull channel and video reports, list your top videos by a metric, browse the channels and videos you manage, and read or create analytics groups. This connector is read and report focused — it surfaces your metrics rather than changing your content. It works against your live YouTube data using your own Google sign-in, so it respects your account and access. Connecting YouTube Analytics to UnleashX turns your performance data into something you can just ask about. Instead of opening YouTube Studio to build a report, you ask your agent in plain language and it pulls the numbers, ranks the videos, or summarizes the trend for you. ## 2. What you'll need * A Google account that owns or manages a YouTube channel (or has Brand Account access to one). * Access to the channel's analytics in YouTube Studio. * An UnleashX account with access to **Data Connectors**. No API key to paste. YouTube Analytics uses OAuth — you click **Authorize** and sign in with Google. Analytics data can be **delayed** — recent views and watch time may take a day or more to finalize. Very fresh reports can show partial numbers until YouTube completes processing. ## 3. Get your credentials There's no key to copy. Authentication runs through Google's secure OAuth sign-in. Connecting YouTube Analytics (Section 4) opens a Google **Sign in** window. Choose the Google account that manages the channel you want to report on, and sign in at `https://accounts.google.com`. Complete two-factor authentication if prompted. Google shows the access UnleashX is requesting (see the scopes table). Review it and click **Allow**. If your account manages multiple channels or Brand Accounts, make sure you picked the one whose analytics you want to pull. Google redirects you back automatically and the connector links to your account. Behind the scenes UnleashX uses Google's OAuth token — you never handle it yourself. **Permissions (Google OAuth scopes) UnleashX requests:** | Scope | Why UnleashX needs it | | ------------------------------------------------------- | ----------------------------------------------------------------- | | `https://www.googleapis.com/auth/yt-analytics.readonly` | Read channel and video analytics reports. | | `https://www.googleapis.com/auth/youtube.readonly` | List the channels and videos you manage. | | `https://www.googleapis.com/auth/youtube` | Create and manage analytics groups. | | `openid` | Identify the Google account being connected. | | `https://www.googleapis.com/auth/userinfo.email` | Confirm which account is linked so you can manage the connection. | Google OAuth scopes are granular. UnleashX requests only what these tools need, and Google — not UnleashX — enforces the limits. ## 4. Connect on UnleashX Go to [https://www.tryunleashx.com](https://www.tryunleashx.com) and open the agent you want to connect. Inside the agent, go to **Data Connectors**. Locate **YouTube Analytics** and click **Connect** (or **Add** / **Configure**). Click **Authorize**, sign in with Google, and accept the scopes. You return to UnleashX and the YouTube Analytics connector shows a **Connected** badge. ### Use YouTube Analytics in a Workflow Once connected, you can add **YouTube Analytics** to any automation from the **Workflows** builder. Its triggers and tools appear in the Apps panel, marked with an **MCP** badge. Open **Workflows → New Workflow**. On the canvas, click **+ Add Trigger**. In the **Paths** panel, open the **Apps** tab and select **YouTube Analytics** — its **Triggers** are listed underneath. Use the search box if you have many connectors. Click the **+** below any node to add a step, then pick **YouTube Analytics** again — this time the panel lists its **Actions**. Fill in the fields for the trigger or action you picked. Required fields are marked with a red asterisk (\*). Under **Selected account**, choose an already-connected account, or click **Add Account** to connect one now. Click **Save**. Use **Test** to verify the step, then toggle **Publish** when the workflow is ready. The steps are the same for every connector. For the full workflow builder guide, see [Using MCP in Workflows](/mcp/workflows). ## 5. Available tools | Tool | What it does | Changes data? | | ------------------ | ------------------------------------------------------------- | ------------- | | Get Channel Report | Pulls an analytics report for your channel over a date range. | No | | Get Video Report | Pulls an analytics report for a specific video. | No | | List Top Videos | Ranks your videos by a chosen metric. | No | | List Channels | Lists the channels your account manages. | No | | List Videos | Lists videos on a channel. | No | | List Groups | Lists your YouTube Analytics groups. | No | | Create Group | Creates a new analytics group. | ✏️ Yes | ### Available triggers | Trigger | Fires when | | ------------ | ---------------------------------------- | | On New Video | A new video is published on the channel. | ## 6. Example usage **"How did the channel do last month? Give me views, watch time, and new subscribers."** → Runs Get Channel Report for last month's date range and summarizes the key metrics. **"What were my five most-viewed videos this quarter?"** → Runs List Top Videos ranked by views for the quarter and returns the top five. ## 7. Permissions & data access **UnleashX can:** * Pull channel and video analytics reports. * List your top videos, channels, and videos. * Read your analytics groups. * Create new analytics groups (this tool is marked ✏️). **UnleashX cannot:** * Edit, upload, or delete your videos or channel content. * Access analytics for channels your account doesn't manage. * Change your Google account password or security settings. **To disconnect:** In UnleashX, open **Data Connectors → YouTube Analytics → Disconnect**. You can also revoke access at `https://myaccount.google.com/permissions` (Third-party apps with account access). Disconnecting revokes access immediately. ## 8. Troubleshooting | Problem | What it means | How to fix it | | --------------------------- | ------------------------------------------------------- | ---------------------------------------------------------------------------- | | **401 Unauthorized** | The Google token expired or is invalid. | Reconnect YouTube Analytics in **Data Connectors** and sign in again. | | **403 Forbidden** | Access to analytics was blocked or not granted. | Re-authorize and accept the scopes; confirm the account manages the channel. | | **Wrong channel** | The report is for a different channel or Brand Account. | Reconnect and select the channel whose analytics you want. | | **Empty or partial report** | The data hasn't finished processing yet. | Wait for YouTube to finalize recent metrics, then re-run the report. | | **Rate limit exceeded** | Google's API request/quota limit was reached. | Wait for the quota to reset or narrow the report's date range. | For general MCP issues, see [/mcp/integrations](/mcp/integrations). ## 9. Frequently asked questions **Is my analytics data stored by UnleashX?** No. UnleashX pulls reports live through the YouTube Analytics API per request; it doesn't keep a copy of your data. **Which channel does the agent report on?** The one tied to the Google account you selected when connecting. If you manage several, reconnect to switch, or pick the channel in the report. **Can the agent change my videos or channel?** No. This connector is read and report focused — the only write action is creating analytics groups. It can't upload, edit, or delete content. **Why are recent numbers lower than expected?** YouTube takes time to process views and watch time. Very recent reports can show partial figures until processing completes. ## 10. References * YouTube Analytics API documentation: [https://developers.google.com/youtube/analytics](https://developers.google.com/youtube/analytics) * YouTube Data API documentation: [https://developers.google.com/youtube/v3](https://developers.google.com/youtube/v3) * Google OAuth 2.0 scopes: [https://developers.google.com/identity/protocols/oauth2/scopes](https://developers.google.com/identity/protocols/oauth2/scopes) * Manage third-party access to your Google Account: [https://myaccount.google.com/permissions](https://myaccount.google.com/permissions) # Zoho Books Source: https://docs.unleashx.ai/mcp/zoho-books Let your UnleashX agent manage invoices, bills, customers, vendors, payments, and expenses in Zoho Books. # Zoho Books > **In one line:** Connect Zoho Books so your UnleashX agent can raise invoices, record payments and expenses, look up customers and vendors, and keep your accounting up to date — all in plain language. | | | | ------------------ | --------------------------------------------------------------------------------------------------------------------- | | **Category** | Finance & Accounting | | **Authentication** | OAuth (Zoho) | | **Setup time** | \~3 minutes | | **Difficulty** | Easy | | **Best for** | Finance and operations teams that want an AI agent to create invoices, log expenses, and track payments in Zoho Books | ## 1. Overview Zoho Books is Zoho's online accounting platform. It's the system of record for your receivables and payables — customers, vendors, invoices, bills, estimates, payments, expenses, and the chart of accounts that ties them together. Once connected to UnleashX, your agent can create and send invoices, record customer payments, log expenses and bills, add customers and vendors, and pull the status of anything outstanding. It works against your live Zoho Books organization using your own Zoho sign-in, so it respects your role and permissions. Connecting Zoho Books to UnleashX means your books stay current as you talk. Instead of opening Zoho to raise an invoice or mark a bill paid, you tell your agent and it makes the change — cutting the manual data entry while keeping your accounts accurate. ## 2. What you'll need * A Zoho Books account with at least one **organization** set up (any paid edition; some API features require Standard or above). * Your Zoho Books **Organization ID** (Settings → Organizations, or shown in the URL). * A user role with permission to view and edit invoices, bills, customers, and payments. * An UnleashX account with access to **Data Connectors**. No API key to paste. Zoho Books uses OAuth — you click **Authorize** and sign in with Zoho. Zoho enforces your **role permissions**. If your Zoho Books user can't create invoices or approve bills, the agent can't either. Ask your organization admin to adjust your role if needed. ## 3. Get your credentials There's no key to copy. Authentication runs through Zoho's secure OAuth sign-in. Connecting Zoho Books (Section 4) opens a Zoho **Authorize** window. Sign in with your Zoho account at `https://accounts.zoho.com` (use the matching data center — e.g. `.eu`, `.in`, `.com.au` — if your org is hosted there). Complete two-factor authentication if prompted. Zoho shows the access UnleashX is requesting (see the scopes table). Click **Accept**. If you have multiple Zoho Books organizations, select the one you want the agent to work with. UnleashX uses its **Organization ID** on every request. Zoho redirects you back automatically and the connector links to your books. Behind the scenes UnleashX calls Zoho with a `Zoho-oauthtoken` authorization header — you never handle the token yourself. **Permissions (Zoho OAuth scopes) UnleashX requests:** | Scope | Why UnleashX needs it | | ------------------------- | -------------------------------------------------------------------------- | | `ZohoBooks.invoices.ALL` | Create, read, update, and send invoices, and record payments against them. | | `ZohoBooks.bills.ALL` | Read and manage vendor bills. | | `ZohoBooks.contacts.ALL` | Read and manage customers and vendors. | | `ZohoBooks.expenses.ALL` | Create and read expenses. | | `ZohoBooks.estimates.ALL` | Create and read estimates/quotes. | | `ZohoBooks.settings.READ` | Read taxes, accounts, and organization settings the agent needs. | | `offline_access` | Refresh access automatically so you don't re-authorize every session. | Zoho OAuth scopes are granular. UnleashX requests only what these tools need, and Zoho — not UnleashX — enforces the limits. ## 4. Connect on UnleashX Go to [https://www.tryunleashx.com](https://www.tryunleashx.com) and open the agent you want to connect. Inside the agent, go to **Data Connectors**. Locate **Zoho Books** and click **Connect** (or **Add** / **Configure**). Click **Authorize**, sign in with Zoho, accept the scopes, and pick your organization. You return to UnleashX and the Zoho Books connector shows a **Connected** badge. ### Use Zoho Books in a Workflow Once connected, you can add **Zoho Books** to any automation from the **Workflows** builder. Its triggers and tools appear in the Apps panel, marked with an **MCP** badge. Open **Workflows → New Workflow**. On the canvas, click **+ Add Trigger**. In the **Paths** panel, open the **Apps** tab and select **Zoho Books** — its **Triggers** are listed underneath. Use the search box if you have many connectors. Click the **+** below any node to add a step, then pick **Zoho Books** again — this time the panel lists its **Actions**. Fill in the fields for the trigger or action you picked. Required fields are marked with a red asterisk (\*). Under **Selected account**, choose an already-connected account, or click **Add Account** to connect one now. Click **Save**. Use **Test** to verify the step, then toggle **Publish** when the workflow is ready. The steps are the same for every connector. For the full workflow builder guide, see [Using MCP in Workflows](/mcp/workflows). ## 5. Available tools | Tool | What it does | Changes data? | | --------------------------- | -------------------------------------------------- | ------------- | | Get Invoice | Retrieves a single invoice by ID. | No | | List Invoices | Lists invoices (filter by status, customer, date). | No | | Create Invoice | Creates a new invoice. | ✏️ Yes | | Update Invoice | Updates an existing invoice. | ✏️ Yes | | Send Invoice | Emails an invoice to the customer. | ✏️ Yes | | Mark Invoice Sent | Marks a draft invoice as sent. | ✏️ Yes | | Void Invoice | Voids an invoice. | ⚠️ Yes | | Record Payment | Records a customer payment against an invoice. | ✏️ Yes | | List Payments | Lists customer payments received. | No | | Get Customer | Retrieves a single customer (contact) by ID. | No | | List Customers | Lists customers. | No | | Create Customer | Creates a new customer contact. | ✏️ Yes | | Update Customer | Updates a customer contact. | ✏️ Yes | | Get Vendor | Retrieves a single vendor by ID. | No | | List Vendors | Lists vendors. | No | | Create Vendor | Creates a new vendor. | ✏️ Yes | | Get Bill | Retrieves a single vendor bill by ID. | No | | List Bills | Lists vendor bills. | No | | Create Bill | Creates a new vendor bill. | ✏️ Yes | | Update Bill | Updates a vendor bill. | ✏️ Yes | | Create Expense | Records a new expense. | ✏️ Yes | | List Expenses | Lists expenses. | No | | Create Estimate | Creates a new estimate/quote. | ✏️ Yes | | List Estimates | Lists estimates. | No | | Convert Estimate to Invoice | Converts an accepted estimate into an invoice. | ✏️ Yes | | List Items | Lists line items / products. | No | | Create Item | Creates a new item. | ✏️ Yes | | List Chart of Accounts | Lists the chart of accounts. | No | | Get Organizations | Lists the Zoho Books organizations you can access. | No | | Delete Invoice | Deletes a specified invoice. | ⚠️ Yes | ## 6. Example usage **"Raise an invoice to Acme Corp for 10 hours of consulting at \$150/hr and email it to them."** → Runs Create Invoice to draft the invoice, then Send Invoice to email it to the customer. \*\*"Mark the March invoice for Globex as paid — they sent $2,000 by bank transfer."** → Runs List Invoices to find the invoice, then Record Payment to log the $2,000 bank transfer against it. ## 7. Permissions & data access **UnleashX can:** * Read and list invoices, bills, estimates, payments, customers, vendors, items, and expenses. * Create and update invoices, bills, estimates, customers, vendors, and expenses. * Send invoices, record payments, and convert estimates. * Void or delete records where your role allows (these tools are clearly marked ⚠️). **UnleashX cannot:** * Do anything your Zoho Books role doesn't permit. * Access other Zoho products (Zoho CRM, Desk, Mail) — those are separate connectors. * Change your Zoho account password or org-wide security settings. **To disconnect:** In UnleashX, open **Data Connectors → Zoho Books → Disconnect**. You can also revoke access at `https://accounts.zoho.com/home#sessions/usersession` (Connected Apps). Disconnecting revokes access immediately. ## 8. Troubleshooting | Problem | What it means | How to fix it | | ----------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | | **401 Unauthorized** | The Zoho token expired or is invalid. | Reconnect Zoho Books in **Data Connectors** and sign in again. | | **403 Forbidden** | Your Zoho Books role lacks permission for that action. | Ask your org admin to grant the needed permission, then retry. | | **Wrong organization** | The agent is acting on a different Zoho Books org. | Reconnect and select the correct Organization ID. | | **Wrong data center** | You signed in at the wrong Zoho domain (e.g. `.com` vs `.eu`). | Reconnect using the data center where your org is hosted. | | **Rate limit exceeded** | Your Zoho edition's daily API limit was reached. | Wait for the limit to reset or upgrade your Zoho edition. | For general MCP issues, see [/mcp/integrations](/mcp/integrations). ## 9. Frequently asked questions **Is my accounting data stored by UnleashX?** No. UnleashX reads and writes your records live through the Zoho Books API per request; it doesn't keep a copy of your books. **Which organization does the agent use?** The one you selected when connecting. If you manage several organizations, connect each one separately or reconnect to switch. **Can the agent really void or delete invoices?** Yes — tools marked ⚠️ (void/delete) make permanent changes in Zoho Books. They only work if your role allows it. Use them deliberately. **Which data center should I use?** Use the one your Zoho org lives in (US `.com`, EU `.eu`, India `.in`, Australia `.com.au`, etc.). Signing in at the wrong one causes auth errors. ## 10. References * Zoho Books API documentation: [https://www.zoho.com/books/api/v3/](https://www.zoho.com/books/api/v3/) * Zoho OAuth overview & scopes: [https://www.zoho.com/books/api/v3/oauth/](https://www.zoho.com/books/api/v3/oauth/) * Zoho Connected Apps / revoke access: [https://accounts.zoho.com/home#sessions/usersession](https://accounts.zoho.com/home#sessions/usersession) * Zoho sign-in: [https://accounts.zoho.com](https://accounts.zoho.com) # Zoho CRM Source: https://docs.unleashx.ai/mcp/zoho-crm Let your UnleashX agent read and manage leads, contacts, accounts, deals, tasks, and notes in Zoho CRM. # Zoho CRM > **In one line:** Connect your Zoho CRM so your UnleashX agent can look up and update leads, contacts, accounts, and deals, log activity, and keep your pipeline moving — all in plain language. | | | | ------------------ | -------------------------------------------------------------------------------------------------------- | | **Category** | CRM | | **Authentication** | OAuth (Zoho) | | **Setup time** | \~3 minutes | | **Difficulty** | Easy | | **Best for** | Sales and revenue teams that want an AI agent to manage records, log calls, and update deals in Zoho CRM | ## 1. Overview Zoho CRM is Zoho's customer relationship management platform. It's the system of record for your sales pipeline — leads, contacts, accounts, deals, tasks, notes, and the activity history that ties them together. Once connected to UnleashX, your agent can find and update records, create new leads and contacts, convert leads into deals, log calls and notes, attach files, and manage custom modules. It works against your live Zoho CRM data using your own Zoho sign-in, so it respects your role and permissions. Connecting Zoho CRM to UnleashX means your CRM updates itself as you talk. Instead of opening Zoho to log a call or move a deal forward, you tell your agent and it makes the change — keeping records current without the manual data entry. ## 2. What you'll need * A Zoho CRM account (any paid edition; some API features require Standard or above). * A user role with permission to view and edit the records and modules you want the agent to manage. * An UnleashX account with access to **Data Connectors**. No API key to paste. Zoho CRM uses OAuth — you click **Authorize** and sign in with Zoho. Zoho enforces your **role and profile permissions**. If your Zoho user can't edit a module (for example custom objects), the agent can't either. Ask your Zoho CRM administrator to adjust your profile if needed. ## 3. Get your credentials There's no key to copy. Authentication runs through Zoho's secure OAuth sign-in. Connecting Zoho CRM (Section 4) opens a Zoho **Authorize** window. Sign in with your Zoho account at `https://accounts.zoho.com` (use the matching data center — e.g. `.eu`, `.in`, `.com.au` — if your org is hosted there). Complete two-factor authentication if prompted. Zoho shows the access UnleashX is requesting (see the scopes table). Click **Accept**. Zoho redirects you back automatically and the connector links to your CRM. Behind the scenes UnleashX calls Zoho with a `Zoho-oauthtoken` authorization header — you never handle the token yourself. **Permissions (Zoho OAuth scopes) UnleashX requests:** | Scope | Why UnleashX needs it | | --------------------------- | ------------------------------------------------------------------------------------------------ | | `ZohoCRM.modules.ALL` | Read and write records across modules (leads, contacts, accounts, deals, tasks, custom objects). | | `ZohoCRM.settings.ALL` | Read module and field metadata so the agent knows your CRM's structure. | | `ZohoCRM.users.ALL` | List and manage users for assignment and ownership lookups. | | `ZohoCRM.notifications.ALL` | Support related actions such as notes and activity tied to records. | | `ZohoCRM.attachments.ALL` | Upload and read file attachments on records. | | `offline_access` | Refresh access automatically so you don't re-authorize every session. | Zoho OAuth scopes are granular. UnleashX requests only what these tools need, and Zoho — not UnleashX — enforces the limits. ## 4. Connect on UnleashX Go to [https://www.tryunleashx.com](https://www.tryunleashx.com) and open the agent you want to connect. Inside the agent, go to **Data Connectors**. Locate **Zoho CRM** and click **Connect** (or **Add** / **Configure**). Click **Authorize**, sign in with Zoho, and accept the scopes. You return to UnleashX and the Zoho CRM connector shows a **Connected** badge. ### Use Zoho CRM in a Workflow Once connected, you can add **Zoho CRM** to any automation from the **Workflows** builder. Its triggers and tools appear in the Apps panel, marked with an **MCP** badge. Open **Workflows → New Workflow**. On the canvas, click **+ Add Trigger**. In the **Paths** panel, open the **Apps** tab and select **Zoho CRM** — its **Triggers** are listed underneath. Use the search box if you have many connectors. Zoho CRM triggers in the Apps panel Click the **+** below any node to add a step, then pick **Zoho CRM** again — this time the panel lists its **Actions**. Zoho CRM actions in the Apps panel Fill in the fields for the trigger or action you picked. Required fields are marked with a red asterisk (\*). Under **Selected account**, choose an already-connected account, or click **Add Account** to connect one now. Click **Save**. Use **Test** to verify the step, then toggle **Publish** when the workflow is ready. The steps are the same for every connector. For the full workflow builder guide, see [Using MCP in Workflows](/mcp/workflows). ## 5. Available tools | Tool | What it does | Changes data? | | ------------------------ | -------------------------------------------------------- | ------------- | | Get Lead | Retrieves a single lead by ID. | No | | Get Leads | Retrieves multiple leads. | No | | Create Lead | Creates a new lead. | ✏️ Yes | | Update Lead | Updates an existing lead. | ✏️ Yes | | Convert Lead | Converts a lead into a contact/account/deal. | ✏️ Yes | | Get Contact | Retrieves a single contact by ID. | No | | Get Contacts | Retrieves multiple contacts. | No | | Create Contact | Creates a new contact. | ✏️ Yes | | Update Contact | Updates an existing contact. | ✏️ Yes | | Get Account | Retrieves a single account by ID. | No | | Get Accounts | Retrieves multiple accounts. | No | | Create Account | Creates a new account. | ✏️ Yes | | Update Account | Updates an existing account. | ✏️ Yes | | Get Deal | Retrieves a single deal by ID. | No | | Get Deals | Retrieves multiple deals. | No | | Create Deal | Creates a new deal. | ✏️ Yes | | Update Deal | Updates an existing deal. | ✏️ Yes | | Search Records | Searches records within a module by criteria. | No | | Search Global | Performs a global search across all or specific modules. | No | | Add Note | Adds a note to a record. | ✏️ Yes | | Get Notes | Retrieves notes on a record. | No | | Upload Attachment | Uploads a file attachment to a record. | ✏️ Yes | | Update Note | Updates an existing note. | ✏️ Yes | | Log Call | Logs a call activity against a record. | ✏️ Yes | | Create Task | Creates a task. | ✏️ Yes | | Get Tasks | Retrieves tasks. | No | | Search Users | Searches CRM users. | No | | Create User | Creates a new CRM user. | ✏️ Yes | | Delete User Manual | Deletes a specified CRM user. | ⚠️ Yes | | Delete User from List | Deletes users from a provided list. | ⚠️ Yes | | Create Object | Creates a record in any (including custom) module. | ✏️ Yes | | Update Object | Updates a record in any module. | ✏️ Yes | | List Objects | Lists records from any module. | No | | Delete Object Manual | Deletes a specified record. | ⚠️ Yes | | Delete Objects from List | Deletes records from a provided list. | ⚠️ Yes | | List Related Records | Lists records related to a given record. | No | | Get Modules | Lists the CRM modules. | No | | Get Fields | Lists fields for a module. | No | | Get Field | Retrieves a single field's metadata. | No | | Get Users | Lists CRM users. | No | | List Leads | Lists leads. | No | | List Contacts | Lists contacts. | No | | List Accounts | Lists accounts. | No | | List Deals | Lists deals. | No | | List Tasks | Lists tasks. | No | ## 6. Example usage **"Create a lead for Jordan Lee at Acme Corp, then log that I just had an intro call with them."** → Runs Create Lead to add the lead, then Log Call to record the call activity. **"Find the deal with Globex and move it to the Negotiation stage with a note about the new pricing."** → Runs Search Records (or Search Global) to find the deal, Update Deal to change the stage, and Add Note to attach the pricing note. ## 7. Permissions & data access **UnleashX can:** * Read, search, and list leads, contacts, accounts, deals, tasks, notes, and custom records. * Create and update records, convert leads, log calls, and upload attachments. * Read module and field metadata and list users. * Delete records and users where your role allows (these tools are clearly marked ⚠️). **UnleashX cannot:** * Do anything your Zoho role and profile don't permit. * Access other Zoho products (Zoho Desk, Zoho Mail, Books) — those are separate connectors. * Change your Zoho account password or org-wide security settings. **To disconnect:** In UnleashX, open **Data Connectors → Zoho CRM → Disconnect**. You can also revoke access at `https://accounts.zoho.com/home#sessions/usersession` (Connected Apps). Disconnecting revokes access immediately. ## 8. Troubleshooting | Problem | What it means | How to fix it | | ------------------------------------- | ------------------------------------------------------------------ | ---------------------------------------------------------------------------------- | | **401 Unauthorized** | The Zoho token expired or is invalid. | Reconnect Zoho CRM in **Data Connectors** and sign in again. | | **403 Forbidden** | Your Zoho role/profile lacks permission for that module or action. | Ask your Zoho CRM admin to grant the needed module/profile permission, then retry. | | **Wrong data center** | You signed in at the wrong Zoho domain (e.g. `.com` vs `.eu`). | Reconnect using the data center where your org is hosted. | | **Record not found** | The record ID is wrong or was deleted. | Ask the agent to search or list records to find the correct one. | | **Rate limit / API credits exceeded** | Your Zoho edition's daily API limit was reached. | Wait for the limit to reset or upgrade your Zoho edition. | For general MCP issues, see [/mcp/integrations](/mcp/integrations). ## 9. Frequently asked questions **Is my CRM data stored by UnleashX?** No. UnleashX reads and writes your records live through the Zoho CRM API per request; it doesn't keep a copy of your CRM. **Can multiple team members connect Zoho CRM?** Yes. Each user authorizes their own Zoho account, so the agent acts with that user's own role and permissions. **Can the agent really delete records?** Yes — tools marked ⚠️ (delete record/user) make permanent changes in Zoho. They only work if your role allows deletion. Use them deliberately. **Which data center should I use?** Use the one your Zoho org lives in (US `.com`, EU `.eu`, India `.in`, Australia `.com.au`, etc.). Signing in at the wrong one causes auth errors. ## 10. References * Zoho CRM API documentation: [https://www.zoho.com/crm/developer/docs/api/v6/](https://www.zoho.com/crm/developer/docs/api/v6/) * Zoho OAuth overview & scopes: [https://www.zoho.com/crm/developer/docs/api/v6/scopes.html](https://www.zoho.com/crm/developer/docs/api/v6/scopes.html) * Zoho Connected Apps / revoke access: [https://accounts.zoho.com/home#sessions/usersession](https://accounts.zoho.com/home#sessions/usersession) * Zoho sign-in: [https://accounts.zoho.com](https://accounts.zoho.com) # Zoho Desk Source: https://docs.unleashx.ai/mcp/zoho-desk Let your UnleashX agent create, look up, and update support tickets and manage your Zoho Desk help desk. # Zoho Desk > **In one line:** Connect your Zoho Desk help desk so your UnleashX agent can create and update support tickets, add comments, and look up agents, contacts, and departments — without leaving the conversation. | | | | ------------------ | -------------------------------------------------------------------------------------------------------- | | **Category** | Customer Support | | **Authentication** | OAuth (Zoho) | | **Setup time** | \~3 minutes | | **Difficulty** | Easy | | **Best for** | Support and customer-success teams that want an AI agent to triage, create, and update Zoho Desk tickets | ## 1. Overview Zoho Desk is Zoho's customer support and help-desk product. It organizes incoming requests into tickets, routes them to departments and agents, and tracks the full conversation with each customer. Once connected to UnleashX, your agent can create new tickets, retrieve and update existing ones, add comments to a ticket's thread, and look up the supporting data — agents, contacts, departments, accounts, attachments, roles, and organizations. It works against your live Zoho Desk data using your own Zoho sign-in. Connecting Zoho Desk to UnleashX means support requests get handled faster. Instead of switching into Zoho Desk to log a ticket or post an update, you tell your agent and it does the work — keeping your queue current while you stay focused on the customer. ## 2. What you'll need * A Zoho Desk account with at least one department set up. * A user role (agent, light agent, or admin) with permission to view and edit tickets. * Your Zoho Desk **organization ID** if your account spans multiple help-desk organizations (optional — UnleashX can send it as an org-id header when needed). * An UnleashX account with access to **Data Connectors**. No API key to paste. Zoho Desk uses OAuth — you click **Authorize** and sign in with Zoho. Some accounts host multiple Zoho Desk organizations. If the agent returns data from the wrong org, supply your **organization ID** so UnleashX can scope requests with the org-id header. You can find it in Zoho Desk under **Setup → Developer Space → API**. ## 3. Get your credentials There's no key to copy. Authentication runs through Zoho's secure OAuth sign-in. Connecting Zoho Desk (Section 4) opens a Zoho **Authorize** window. Sign in with your Zoho account at `https://accounts.zoho.com` (use your data center domain — `.eu`, `.in`, `.com.au`, etc. — if your org is hosted there). Complete two-factor authentication if prompted. Zoho shows the access UnleashX is requesting (see the scopes table). Click **Accept**. Zoho redirects you back automatically. Behind the scenes UnleashX calls Zoho Desk with a `Zoho-oauthtoken` authorization header (plus an optional org-id header) — you never handle the token yourself. **Permissions (Zoho OAuth scopes) UnleashX requests:** | Scope | Why UnleashX needs it | | -------------------- | --------------------------------------------------------------------- | | `Desk.tickets.ALL` | Create, read, update tickets and add comments. | | `Desk.contacts.READ` | Look up the contacts (customers) associated with tickets. | | `Desk.settings.READ` | Read departments, roles, and other help-desk configuration. | | `Desk.basic.READ` | List agents, accounts, attachments, and organizations. | | `offline_access` | Refresh access automatically so you don't re-authorize every session. | Zoho OAuth scopes are granular. UnleashX requests only what these tools need, and Zoho — not UnleashX — enforces the limits. ## 4. Connect on UnleashX Go to [https://www.tryunleashx.com](https://www.tryunleashx.com) and open the agent you want to connect. Inside the agent, go to **Data Connectors**. Locate **Zoho Desk** and click **Connect** (or **Add** / **Configure**). Click **Authorize**, sign in with Zoho, and accept the scopes. Add your organization ID if prompted. You return to UnleashX and the Zoho Desk connector shows a **Connected** badge. ### Use Zoho Desk in a Workflow Once connected, you can add **Zoho Desk** to any automation from the **Workflows** builder. Its triggers and tools appear in the Apps panel, marked with an **MCP** badge. Open **Workflows → New Workflow**. On the canvas, click **+ Add Trigger**. In the **Paths** panel, open the **Apps** tab and select **Zoho Desk** — its **Triggers** are listed underneath. Use the search box if you have many connectors. Zoho Desk triggers in the Apps panel Click the **+** below any node to add a step, then pick **Zoho Desk** again — this time the panel lists its **Actions**. Zoho Desk actions in the Apps panel Fill in the fields for the trigger or action you picked. Required fields are marked with a red asterisk (\*). Under **Selected account**, choose an already-connected account, or click **Add Account** to connect one now. Click **Save**. Use **Test** to verify the step, then toggle **Publish** when the workflow is ready. The steps are the same for every connector. For the full workflow builder guide, see [Using MCP in Workflows](/mcp/workflows). ## 5. Available tools | Tool | What it does | Changes data? | | ------------------ | -------------------------------------------------------------- | ------------- | | Create Ticket | Creates a new support ticket. | ✏️ Yes | | Get Ticket | Retrieves a single ticket by ID. | No | | Update Ticket | Updates an existing ticket (status, priority, assignee, etc.). | ✏️ Yes | | List Tickets | Lists tickets, optionally filtered. | No | | Add Comment | Adds a comment to a ticket's thread. | ✏️ Yes | | List Agents | Lists support agents. | No | | List Contacts | Lists contacts (customers). | No | | List Owners | Lists possible ticket owners. | No | | List Departments | Lists help-desk departments. | No | | List Accounts | Lists customer accounts. | No | | List Attachments | Lists attachments on a ticket. | No | | List Roles | Lists user roles. | No | | List Organizations | Lists Zoho Desk organizations. | No | ## 6. Example usage **"Open a high-priority ticket for the login outage and assign it to the support team."** → Runs List Departments / List Agents to resolve the right owner, then Create Ticket to open the ticket with high priority. **"Find the open ticket from Acme about billing and post an update that we issued a refund."** → Runs List Tickets to locate the ticket, then Add Comment to post the refund update (and Update Ticket if the status should change). ## 7. Permissions & data access **UnleashX can:** * Create, read, list, and update tickets. * Add comments to ticket threads. * List agents, contacts, owners, departments, accounts, attachments, roles, and organizations. **UnleashX cannot:** * Delete tickets (no delete tool is exposed in this connector). * Access other Zoho products (Zoho CRM, Zoho Mail) — those are separate connectors. * Change Zoho account passwords or org-wide security settings. **To disconnect:** In UnleashX, open **Data Connectors → Zoho Desk → Disconnect**. You can also revoke access at `https://accounts.zoho.com/home#sessions/usersession` (Connected Apps). Disconnecting revokes access immediately. ## 8. Troubleshooting | Problem | What it means | How to fix it | | --------------------------- | -------------------------------------------------------------------- | ------------------------------------------------------------------------- | | **401 Unauthorized** | The Zoho token expired or is invalid. | Reconnect Zoho Desk in **Data Connectors** and sign in again. | | **403 Forbidden** | Your Zoho Desk role lacks permission for that action or department. | Ask your Zoho Desk admin to grant the needed permission, then retry. | | **Wrong organization data** | Your account has multiple help-desk orgs and the wrong one was used. | Provide your organization ID so requests carry the correct org-id header. | | **Ticket not found** | The ticket ID is wrong, closed, or in another department. | Ask the agent to list tickets to find the right one. | | **Wrong data center** | You signed in at the wrong Zoho domain (e.g. `.com` vs `.eu`). | Reconnect using your org's data center. | For general MCP issues, see [/mcp/integrations](/mcp/integrations). ## 9. Frequently asked questions **Is my support data stored by UnleashX?** No. UnleashX reads and writes tickets live through the Zoho Desk API per request; it doesn't keep a copy of your help desk. **Can multiple team members connect Zoho Desk?** Yes. Each agent authorizes their own Zoho account, so actions run with that user's own Zoho Desk permissions. **Why do I need my organization ID?** If your Zoho account contains more than one Desk organization, the org-id header tells Zoho which one to use. Single-org accounts usually don't need it. **Can the agent delete a ticket?** No. This connector can create, update, and comment, but it does not expose ticket deletion. ## 10. References * Zoho Desk API documentation: [https://desk.zoho.com/DeskAPIDocument](https://desk.zoho.com/DeskAPIDocument) * Zoho OAuth overview & scopes: [https://desk.zoho.com/DeskAPIDocument#OauthTokens](https://desk.zoho.com/DeskAPIDocument#OauthTokens) * Zoho Connected Apps / revoke access: [https://accounts.zoho.com/home#sessions/usersession](https://accounts.zoho.com/home#sessions/usersession) * Zoho sign-in: [https://accounts.zoho.com](https://accounts.zoho.com) # Zoho Mail Source: https://docs.unleashx.ai/mcp/zoho-mail Let your UnleashX agent read, search, draft, and send email and organize folders in your Zoho Mail. # Zoho Mail > **In one line:** Connect your Zoho Mail mailbox so your UnleashX agent can search and read email, draft and send messages, and organize your inbox with folders and tags. | | | | ------------------ | ------------------------------------------------------------------------------------------------ | | **Category** | Communication | | **Authentication** | OAuth (Zoho) | | **Setup time** | \~2 minutes | | **Difficulty** | Easy | | **Best for** | Teams on Zoho Mail who want an AI agent to handle email triage, drafting, and inbox organization | ## 1. Overview Zoho Mail is Zoho's business email service. It holds your mailbox, folders, tags (labels), and the messages you send and receive — and it's where day-to-day correspondence lives for many Zoho-based teams. Once connected to UnleashX, your agent can search your messages, list your inbox, draft and send email, create folders and tags to organize mail, and even create tasks from messages. It works against your live Zoho Mail account using your own Zoho sign-in. Connecting Zoho Mail to UnleashX makes email hands-free. Instead of clicking around your mailbox, you can ask your agent to "find the latest message from the supplier and draft a reply" and it handles the Zoho Mail side for you. ## 2. What you'll need * A Zoho Mail account (free or paid) with an active mailbox. * Your Zoho Mail **account ID** (UnleashX retrieves this for you via the connector once you authorize). * An UnleashX account with access to **Data Connectors**. No API key to paste. Zoho Mail uses OAuth — you click **Authorize** and sign in with Zoho. Zoho Mail actions are scoped to the signed-in mailbox. The agent can only read and send mail for the account you authorize — it can't reach other users' mailboxes. ## 3. Get your credentials There's no key to copy. Authentication runs through Zoho's secure OAuth sign-in. Connecting Zoho Mail (Section 4) opens a Zoho **Authorize** window. Sign in with your Zoho account at `https://accounts.zoho.com` (use your data center domain — `.eu`, `.in`, `.com.au`, etc. — if your org is hosted there). Complete two-factor authentication if prompted. Zoho shows the access UnleashX is requesting (see the scopes table). Click **Accept**. Zoho redirects you back automatically. Behind the scenes UnleashX calls Zoho Mail with a `Zoho-oauthtoken` authorization header — you never handle the token yourself. **Permissions (Zoho OAuth scopes) UnleashX requests:** | Scope | Why UnleashX needs it | | ------------------------ | --------------------------------------------------------------------- | | `ZohoMail.messages.ALL` | Read, search, draft, and send messages in your mailbox. | | `ZohoMail.folders.ALL` | List and create folders to organize your mail. | | `ZohoMail.tags.ALL` | Create and apply tags (labels) to messages. | | `ZohoMail.accounts.READ` | Read your mail account details (including the account ID). | | `offline_access` | Refresh access automatically so you don't re-authorize every session. | Zoho OAuth scopes are granular. UnleashX requests only what these tools need, and Zoho — not UnleashX — enforces the limits. ## 4. Connect on UnleashX Go to [https://www.tryunleashx.com](https://www.tryunleashx.com) and open the agent you want to connect. Inside the agent, go to **Data Connectors**. Locate **Zoho Mail** and click **Connect** (or **Add** / **Configure**). Click **Authorize**, sign in with Zoho, and accept the scopes. You return to UnleashX and the Zoho Mail connector shows a **Connected** badge. ### Use Zoho Mail in a Workflow Once connected, you can add **Zoho Mail** to any automation from the **Workflows** builder. Its triggers and tools appear in the Apps panel, marked with an **MCP** badge. Open **Workflows → New Workflow**. On the canvas, click **+ Add Trigger**. In the **Paths** panel, open the **Apps** tab and select **Zoho Mail** — its **Triggers** are listed underneath. Use the search box if you have many connectors. Click the **+** below any node to add a step, then pick **Zoho Mail** again — this time the panel lists its **Actions**. Fill in the fields for the trigger or action you picked. Required fields are marked with a red asterisk (\*). Under **Selected account**, choose an already-connected account, or click **Add Account** to connect one now. Click **Save**. Use **Test** to verify the step, then toggle **Publish** when the workflow is ready. The steps are the same for every connector. For the full workflow builder guide, see [Using MCP in Workflows](/mcp/workflows). ## 5. Available tools | Tool | What it does | Changes data? | | ------------------- | ------------------------------------------------------------------------------------ | ------------- | | Create Draft | Creates a draft email in your mailbox. | ✏️ Yes | | Send Email | Sends an email on your behalf. | ✏️ Yes | | Create Tag | Creates a new tag (label). | ✏️ Yes | | Create Folder | Creates a new mail folder. | ✏️ Yes | | Create Task | Creates a task (e.g. from a message). | ✏️ Yes | | Search Messages | Searches your mailbox for matching messages. | No | | List Emails | Lists emails from your inbox or a folder. | No | | Get Accounts | Retrieves your Zoho Mail account details, including the account ID. | No | | Trigger New Message | Checks for new messages matching a search (e.g. `in:inbox`) for automation triggers. | No | ## 6. Example usage **"Find the latest email from our supplier and draft a reply confirming the order."** → Runs Search Messages to locate the thread, then Create Draft so you can review the reply before sending. **"Create a 'Receipts' folder and send the accountant this month's summary."** → Runs Create Folder to add the folder, then Send Email to send the summary. ## 7. Permissions & data access **UnleashX can:** * Search, list, and read messages in your mailbox. * Draft and send email as you. * Create folders and tags to organize mail, and create tasks from messages. * Read your mail account details (account ID). **UnleashX cannot:** * Permanently delete your emails (no delete tool is exposed in this connector). * Access other users' mailboxes or other Zoho products (Zoho CRM, Zoho Desk) — those are separate connectors. * Change your Zoho account password or security settings. **To disconnect:** In UnleashX, open **Data Connectors → Zoho Mail → Disconnect**. You can also revoke access at `https://accounts.zoho.com/home#sessions/usersession` (Connected Apps). Disconnecting revokes access immediately. ## 8. Troubleshooting | Problem | What it means | How to fix it | | ---------------------- | -------------------------------------------------------------- | ------------------------------------------------------------- | | **401 Unauthorized** | The Zoho token expired or is invalid. | Reconnect Zoho Mail in **Data Connectors** and sign in again. | | **403 Forbidden** | A required mail scope wasn't granted. | Reconnect and accept all the requested scopes, then retry. | | **Account ID missing** | The agent couldn't resolve which mailbox to use. | Ask the agent to run Get Accounts first, or reconnect. | | **Wrong data center** | You signed in at the wrong Zoho domain (e.g. `.com` vs `.eu`). | Reconnect using your account's data center. | | **Send failed** | An invalid recipient address or a Zoho sending limit was hit. | Verify the recipient and check your Zoho Mail sending limits. | For general MCP issues, see [/mcp/integrations](/mcp/integrations). ## 9. Frequently asked questions **Is my email data stored by UnleashX?** No. UnleashX accesses your mailbox live through the Zoho Mail API per request; it doesn't keep a copy of your inbox. **Can multiple team members connect their own Zoho Mail?** Yes. Each person authorizes their own Zoho account, so the agent works against each user's own mailbox. **Can the agent send mail as someone else?** No. It can only send from the mailbox you signed in with. **Which data center should I use?** Use the one your Zoho account lives in (US `.com`, EU `.eu`, India `.in`, Australia `.com.au`, etc.). The wrong one causes auth errors. ## 10. References * Zoho Mail API documentation: [https://www.zoho.com/mail/help/api/](https://www.zoho.com/mail/help/api/) * Zoho Mail OAuth scopes: [https://www.zoho.com/mail/help/api/using-oauth-2.html](https://www.zoho.com/mail/help/api/using-oauth-2.html) * Zoho Connected Apps / revoke access: [https://accounts.zoho.com/home#sessions/usersession](https://accounts.zoho.com/home#sessions/usersession) * Zoho sign-in: [https://accounts.zoho.com](https://accounts.zoho.com) # Zoho Meet Source: https://docs.unleashx.ai/mcp/zoho-meet Let your UnleashX agent create Zoho Meeting sessions and webinars, and look up attendees and join links. # Zoho Meet > **In one line:** Connect Zoho Meet so your UnleashX agent can schedule meetings and webinars, pull the registration URL, and check who's attending — all in plain language. | | | | ------------------ | ------------------------------------------------------------------------------------------------- | | **Category** | Communication | | **Authentication** | OAuth (Zoho sign-in) | | **Setup time** | \~3 minutes | | **Difficulty** | Easy | | **Best for** | Teams running webinars and customer calls on Zoho Meeting who want scheduling handled by an agent | ## 1. Overview Zoho Meet (Zoho Meeting) is Zoho's online meeting and webinar service. It covers both quick internal calls and registration-based webinars with attendee tracking. Once connected to UnleashX, your agent can create a meeting, create a webinar, retrieve a webinar's join or registration URL, and look up the attendees registered for a session. It works against your live Zoho Meeting account, so it respects your plan's participant and session limits. Connecting Zoho Meet to UnleashX turns scheduling into a step in a workflow: a lead qualifies, a campaign launches, a support case escalates — and the agent creates the session and hands back the link. ## 2. What you'll need * A Zoho account with **Zoho Meeting** enabled. * Permission to authorize third-party apps for your Zoho organization. * An UnleashX account with access to **Data Connectors**. Zoho is region-partitioned (`.com`, `.in`, `.eu`, `.com.au`, and others). Sign in on the same data center your Zoho Meeting account lives on, or authorization will succeed but API calls will fail. Webinar features — registration URLs and attendee lists — depend on your Zoho Meeting plan. On a meetings-only plan, the webinar tools will return an error rather than creating anything. ## 3. Get your credentials Zoho Meet uses **Zoho OAuth 2.0**. You do **not** create or paste an API key. UnleashX redirects you to Zoho, you sign in once, and Zoho issues an access token to UnleashX automatically. In your agent's **Data Connectors**, find **Zoho Meet** and click **Connect** (see Section 4). Choose the Zoho account that hosts your meetings. Make sure you're on the correct regional domain. Click **Accept** to grant access and return to UnleashX. There is no key to copy. Access is granted by your Zoho sign-in and can be revoked anytime under **Zoho Accounts → Security → Connected Apps**. **Scopes UnleashX requests for Zoho Meet:** | Scope | Why UnleashX needs it | | ---------------------------- | ---------------------------------------------------------- | | `ZohoMeeting.meeting.CREATE` | Create meetings. | | `ZohoMeeting.webinar.CREATE` | Create webinars. | | `ZohoMeeting.webinar.READ` | Read webinar details, including the registration/join URL. | | `ZohoMeeting.attendee.READ` | List registrants and attendees for a session. | | `AaaServer.profile.READ` | Identify which Zoho account is connected. | ## 4. Connect on UnleashX Sign in at [https://www.tryunleashx.com](https://www.tryunleashx.com) and open your agent. In the agent, open **Data Connectors**. Locate **Zoho Meet** and click **Connect** / **Add** / **Configure**. Click **Authorize**, sign in to Zoho, and approve the requested permissions. You'll return to UnleashX and the connector status will show a **Connected** badge. ### Use Zoho Meet in a Workflow Once connected, you can add **Zoho Meet** to any automation from the **Workflows** builder. Its tools appear in the Apps panel, marked with an **MCP** badge. Open **Workflows → New Workflow**. On the canvas, click **+ Add Trigger**. In the **Paths** panel, open the **Apps** tab and select **Zoho Meet** — its **Triggers** are listed underneath. Use the search box if you have many connectors. Click the **+** below any node to add a step, then pick **Zoho Meet** again — this time the panel lists its **Actions**. Zoho Meet actions in the Apps panel Fill in the fields for the trigger or action you picked. Required fields are marked with a red asterisk (\*). Under **Selected account**, choose an already-connected account, or click **Add Account** to connect one now. Click **Save**. Use **Test** to verify the step, then toggle **Publish** when the workflow is ready. The steps are the same for every connector. For the full workflow builder guide, see [Using MCP in Workflows](/mcp/workflows). ## 5. Available tools | Tool | What it does | Changes data? | | ---------------- | ------------------------------------------------------------ | ------------- | | Create Meeting | Creates a Zoho meeting with a title, time, and participants. | ✏️ Yes | | Create Webinar | Creates a Zoho webinar session. | ✏️ Yes | | Find Attendees | Lists the registrants/attendees for a session. | No | | Find Webinar URL | Retrieves the join or registration URL for a webinar. | No | ## 6. Example usage > **"Create a Zoho webinar called 'Product Launch' next Thursday at 4pm and give me the registration link."** > > Runs **Create Webinar**, then **Find Webinar URL**. > **"Who's registered for the Product Launch webinar?"** > > Runs **Find Attendees**. ## 7. Permissions & data access **UnleashX can:** * Create meetings and webinars on the connected Zoho account. * Read a webinar's join/registration URL. * List registrants and attendees for a session. **UnleashX cannot:** * Join, record, or transcribe sessions. * Exceed your Zoho Meeting plan's participant or session limits. * Access Zoho CRM, Desk, or Mail unless connected separately. * Change your Zoho account settings or billing. **To disconnect:** In UnleashX, open **Data Connectors → Zoho Meet → Disconnect**. Then revoke under **Zoho Accounts → Security → Connected Apps**. Disconnecting and revoking removes access immediately. ## 8. Troubleshooting | Problem | What it means | How to fix it | | --------------------------------- | ----------------------------------------------------------------------- | ---------------------------------------------------------------------- | | `401 Unauthorized` | The access token is missing or expired. | Reconnect Zoho Meet in **Data Connectors**. | | `403 Forbidden` | A required scope wasn't granted, or your plan doesn't include webinars. | Re-authorize all scopes; check your Zoho Meeting plan. | | **`INVALID_OAUTH` on every call** | You authorized on a different Zoho data center than your account. | Reconnect using the correct regional domain (`.com`, `.in`, `.eu`, …). | | **Webinar URL is empty** | The session was created as a meeting, not a webinar. | Use **Create Webinar** for registration-based sessions. | | **Attendee list is empty** | Nobody has registered yet, or you passed a meeting ID. | Confirm the session ID and that registration is open. | For general connector issues, see [/mcp/integrations](/mcp/integrations). ## 9. Frequently asked questions **Does UnleashX store my attendee data?** No. It reads attendees through the Zoho API per request; it doesn't keep a copy. **What's the difference between a meeting and a webinar here?** Meetings are direct-join sessions for participants you invite. Webinars support registration, which is why they have a registration URL and an attendee list. **Can the agent cancel or reschedule a session?** Not with these tools — they create and read only. Cancel or reschedule in Zoho Meeting directly. **Can multiple team members connect Zoho Meet?** Yes. Each person authorizes their own Zoho account, and sessions are created under that account. ## 10. References * [Zoho Meeting API documentation](https://www.zoho.com/meeting/api-integration.html) * [Zoho OAuth 2.0 overview](https://www.zoho.com/accounts/protocol/oauth.html) * [Zoho Meeting app](https://meeting.zoho.com/) # Zoom Source: https://docs.unleashx.ai/mcp/zoom Let your UnleashX agent schedule and manage Zoom meetings and webinars, and pull recordings and participant details. # Zoom > **In one line:** Connect Zoom so your UnleashX agent can schedule, update, and cancel meetings and webinars, share join links, and fetch recordings and participant lists — all in plain language. | | | | ------------------ | -------------------------------------------------------------------------------------------------------------------------------------- | | **Category** | Communication | | **Authentication** | OAuth (Zoom) | | **Setup time** | \~3 minutes | | **Difficulty** | Easy | | **Best for** | Teams that run meetings and webinars in Zoom and want an AI agent to schedule them, send join links, and pull recordings automatically | ## 1. Overview Zoom is the video-meetings platform your team uses for calls, webinars, and recorded sessions. Behind each meeting is a schedule, an invite link, a participant list, and — when recorded — a cloud recording. Once connected to UnleashX, your agent can create and update meetings and webinars, list what's on your calendar, generate and share join links, register attendees, and pull cloud recordings and participant reports. It acts through your own Zoom sign-in, so it respects your Zoom role and plan limits. Connecting Zoom to UnleashX means meetings organize themselves as you talk. Instead of opening Zoom to schedule a call or hunt for a recording, you tell your agent and it sets up the meeting, shares the link, or fetches the recording for you. ## 2. What you'll need * A Zoom account (Basic works for meetings; webinars and cloud recording require a paid plan/add-on). * Permission on your Zoom account to schedule meetings/webinars and access recordings. * An UnleashX account with access to **Data Connectors**. No API key to paste. Zoom uses OAuth — you click **Authorize** and sign in with Zoom. Some tools need a **paid Zoom plan**. Webinars require a Webinar add-on, and cloud recordings require Cloud Recording to be enabled. If a tool returns a plan error, check your Zoom subscription and account settings. ## 3. Get your credentials There's no key to copy. Authentication runs through Zoom's secure OAuth sign-in. Connecting Zoom (Section 4) opens a Zoom **Authorize** window. Sign in with your Zoom account at `https://zoom.us/signin`. Complete two-factor authentication if prompted. Zoom shows the access UnleashX is requesting (see the scopes table). Click **Allow**. Zoom redirects you back automatically and the connector links to your account. Behind the scenes UnleashX calls Zoom with a `Bearer` token — you never handle the token yourself. **Permissions (Zoom OAuth scopes) UnleashX requests:** | Scope | Why UnleashX needs it | | ------------------- | ------------------------------------------------------------ | | `user:read` | Read your Zoom profile and account info. | | `meeting:read` | List and read your meetings and their details. | | `meeting:write` | Create, update, and delete meetings. | | `webinar:read` | List and read webinars. | | `webinar:write` | Create, update, and delete webinars, and register attendees. | | `recording:read` | List and fetch cloud recordings. | | `report:read:admin` | Read participant/usage reports (where your role allows). | Zoom shows exactly which permissions UnleashX is asking for on the Allow screen. Zoom — not UnleashX — enforces these limits and your plan. ## 4. Connect on UnleashX Go to [https://www.tryunleashx.com](https://www.tryunleashx.com) and open the agent you want to connect. Inside the agent, go to **Data Connectors**. Locate **Zoom** and click **Connect** (or **Add** / **Configure**). Click **Authorize**, sign in with Zoom, and click **Allow**. You return to UnleashX and the Zoom connector shows a **Connected** badge. ### Use Zoom in a Workflow Once connected, you can add **Zoom** to any automation from the **Workflows** builder. Its triggers and tools appear in the Apps panel, marked with an **MCP** badge. Open **Workflows → New Workflow**. On the canvas, click **+ Add Trigger**. In the **Paths** panel, open the **Apps** tab and select **Zoom** — its **Triggers** are listed underneath. Use the search box if you have many connectors. Zoom triggers in the Apps panel Click the **+** below any node to add a step, then pick **Zoom** again — this time the panel lists its **Actions**. Fill in the fields for the trigger or action you picked. Required fields are marked with a red asterisk (\*). Under **Selected account**, choose an already-connected account, or click **Add Account** to connect one now. Click **Save**. Use **Test** to verify the step, then toggle **Publish** when the workflow is ready. The steps are the same for every connector. For the full workflow builder guide, see [Using MCP in Workflows](/mcp/workflows). ## 5. Available tools | Tool | What it does | Changes data? | | ------------------------ | ----------------------------------------------------------- | ------------- | | List Meetings | Lists your scheduled, upcoming, or past meetings. | No | | Get Meeting | Retrieves a meeting's details, including the join URL. | No | | Create Meeting | Schedules a new meeting and returns the join link. | ✏️ Yes | | Update Meeting | Updates a meeting's time, topic, or settings. | ✏️ Yes | | Delete Meeting | Cancels/deletes a meeting. | ⚠️ Yes | | Add Meeting Registrant | Registers an attendee for a meeting. | ✏️ Yes | | List Meeting Registrants | Lists registrants for a meeting. | No | | List Webinars | Lists your webinars. | No | | Get Webinar | Retrieves a webinar's details. | No | | Create Webinar | Schedules a new webinar. | ✏️ Yes | | Update Webinar | Updates a webinar's settings. | ✏️ Yes | | Add Webinar Registrant | Registers an attendee for a webinar. | ✏️ Yes | | List Recordings | Lists cloud recordings for a user or meeting. | No | | Get Meeting Recording | Retrieves recording files and download links for a meeting. | No | | Delete Recording | Deletes a cloud recording. | ⚠️ Yes | | Get Meeting Participants | Retrieves the participant report for a past meeting. | No | | Get User | Retrieves your Zoom user profile. | No | ## 6. Example usage **"Schedule a 30-minute product demo with the Acme team next Tuesday at 2pm and send me the join link."** → Runs Create Meeting for the specified time, then returns the meeting's join URL. **"Get the cloud recording from yesterday's onboarding call and the list of who attended."** → Runs List Recordings (or Get Meeting Recording) for the download link, then Get Meeting Participants for the attendee report. ## 7. Permissions & data access **UnleashX can:** * List and read your meetings and webinars, and their join links. * Create, update, and cancel meetings and webinars, and register attendees. * List and fetch cloud recordings and participant reports. * Delete meetings and recordings (these tools are clearly marked ⚠️). **UnleashX cannot:** * Use features your Zoom plan doesn't include (e.g. webinars without the add-on). * Access other users' meetings or recordings unless your role permits it. * Change account-wide Zoom admin settings or your password. **To disconnect:** In UnleashX, open **Data Connectors → Zoom → Disconnect**. You can also revoke access in the Zoom App Marketplace under **Manage → Added Apps** (`https://marketplace.zoom.us/user/installed`). Disconnecting revokes access immediately. ## 8. Troubleshooting | Problem | What it means | How to fix it | | --------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------- | | **401 Unauthorized** | The Zoom token expired or was revoked. | Reconnect Zoom in **Data Connectors** and sign in again. | | **400 / plan error** | The action needs a feature your plan doesn't include (webinar, cloud recording). | Upgrade your Zoom plan or enable the feature in Zoom settings. | | **300 Recording not found** | The meeting wasn't recorded to the cloud, or was deleted. | Confirm cloud recording was on for that meeting. | | **429 Too Many Requests** | You hit Zoom's API rate limit. | Wait and retry; space out bulk operations. | | **Scope error** | A tool needs a scope you didn't grant. | Reconnect and allow the requested scopes. | For general MCP issues, see [/mcp/integrations](/mcp/integrations). ## 9. Frequently asked questions **Does the agent schedule meetings as me?** Yes. Meetings and webinars are created under your own Zoom account, with you as the host. **Is my meeting data stored by UnleashX?** No. UnleashX reads and writes through the Zoom API live per request; it doesn't keep a copy of your meetings or recordings. **Can the agent access cloud recordings?** Yes, if cloud recording is enabled on your plan and the meeting was recorded. Recordings stored only locally aren't accessible via the API. **Can I connect a webinar without a paid plan?** No — webinars require the Zoom Webinar add-on. Meeting tools work on Basic accounts. ## 10. References * Zoom API reference: [https://developers.zoom.us/docs/api/](https://developers.zoom.us/docs/api/) * Zoom OAuth guide & scopes: [https://developers.zoom.us/docs/integrations/oauth/](https://developers.zoom.us/docs/integrations/oauth/) * Zoom OAuth scopes reference: [https://developers.zoom.us/docs/integrations/oauth-scopes/](https://developers.zoom.us/docs/integrations/oauth-scopes/) * Manage installed apps / revoke access: [https://marketplace.zoom.us/user/installed](https://marketplace.zoom.us/user/installed)