diff --git a/apps/docs/components/icons.tsx b/apps/docs/components/icons.tsx index eca760cf55..6d7d5a7083 100644 --- a/apps/docs/components/icons.tsx +++ b/apps/docs/components/icons.tsx @@ -838,35 +838,6 @@ export const S3Icon = (props: SVGProps) => ( ) -export function SQSIcon(props: SVGProps) { - return ( - - - - - - - - ) -} - export function GoogleIcon(props: SVGProps) { return ( @@ -3931,6 +3902,35 @@ export function DynamoDBIcon(props: SVGProps) { ) } +export function SQSIcon(props: SVGProps) { + return ( + + + + + + + + ) +} + export function McpIcon(props: SVGProps) { return ( = { stagehand_agent: StagehandIcon, stagehand: StagehandIcon, ssh: SshIcon, + sqs: SQSIcon, smtp: SmtpIcon, slack: SlackIcon, shopify: ShopifyIcon, @@ -216,7 +217,6 @@ export const blockTypeToIconMap: Record = { elevenlabs: ElevenLabsIcon, elasticsearch: ElasticsearchIcon, dynamodb: DynamoDBIcon, - sqs: SQSIcon, duckduckgo: DuckDuckGoIcon, dropbox: DropboxIcon, discord: DiscordIcon, diff --git a/apps/docs/content/docs/en/tools/asana.mdx b/apps/docs/content/docs/en/tools/asana.mdx index 1822a1a4d8..87686e065c 100644 --- a/apps/docs/content/docs/en/tools/asana.mdx +++ b/apps/docs/content/docs/en/tools/asana.mdx @@ -36,7 +36,14 @@ Retrieve a single task by GID or get multiple tasks with filters | Parameter | Type | Description | | --------- | ---- | ----------- | | `success` | boolean | Operation success status | -| `output` | object | Single task details or array of tasks, depending on whether taskGid was provided | +| `ts` | string | Timestamp of the response | +| `gid` | string | Task globally unique identifier | +| `resource_type` | string | Resource type \(task\) | +| `resource_subtype` | string | Resource subtype | +| `name` | string | Task name | +| `notes` | string | Task notes or description | +| `completed` | boolean | Whether the task is completed | +| `assignee` | object | Assignee details | ### `asana_create_task` @@ -57,7 +64,13 @@ Create a new task in Asana | Parameter | Type | Description | | --------- | ---- | ----------- | | `success` | boolean | Operation success status | -| `output` | object | Created task details with timestamp, gid, name, notes, and permalink | +| `ts` | string | Timestamp of the response | +| `gid` | string | Task globally unique identifier | +| `name` | string | Task name | +| `notes` | string | Task notes or description | +| `completed` | boolean | Whether the task is completed | +| `created_at` | string | Task creation timestamp | +| `permalink_url` | string | URL to the task in Asana | ### `asana_update_task` @@ -79,7 +92,12 @@ Update an existing task in Asana | Parameter | Type | Description | | --------- | ---- | ----------- | | `success` | boolean | Operation success status | -| `output` | object | Updated task details with timestamp, gid, name, notes, and modified timestamp | +| `ts` | string | Timestamp of the response | +| `gid` | string | Task globally unique identifier | +| `name` | string | Task name | +| `notes` | string | Task notes or description | +| `completed` | boolean | Whether the task is completed | +| `modified_at` | string | Task last modified timestamp | ### `asana_get_projects` @@ -96,7 +114,8 @@ Retrieve all projects from an Asana workspace | Parameter | Type | Description | | --------- | ---- | ----------- | | `success` | boolean | Operation success status | -| `output` | object | List of projects with their gid, name, and resource type | +| `ts` | string | Timestamp of the response | +| `projects` | array | Array of projects | ### `asana_search_tasks` @@ -117,7 +136,8 @@ Search for tasks in an Asana workspace | Parameter | Type | Description | | --------- | ---- | ----------- | | `success` | boolean | Operation success status | -| `output` | object | List of tasks matching the search criteria | +| `ts` | string | Timestamp of the response | +| `tasks` | array | Array of matching tasks | ### `asana_add_comment` @@ -135,7 +155,11 @@ Add a comment (story) to an Asana task | Parameter | Type | Description | | --------- | ---- | ----------- | | `success` | boolean | Operation success status | -| `output` | object | Comment details including gid, text, created timestamp, and author | +| `ts` | string | Timestamp of the response | +| `gid` | string | Comment globally unique identifier | +| `text` | string | Comment text content | +| `created_at` | string | Comment creation timestamp | +| `created_by` | object | Comment author details | diff --git a/apps/docs/content/docs/en/tools/confluence.mdx b/apps/docs/content/docs/en/tools/confluence.mdx index c40551652d..031ef7f908 100644 --- a/apps/docs/content/docs/en/tools/confluence.mdx +++ b/apps/docs/content/docs/en/tools/confluence.mdx @@ -224,6 +224,33 @@ Delete a comment from a Confluence page. | `commentId` | string | Deleted comment ID | | `deleted` | boolean | Deletion status | +### `confluence_upload_attachment` + +Upload a file as an attachment to a Confluence page. + +#### Input + +| Parameter | Type | Required | Description | +| --------- | ---- | -------- | ----------- | +| `domain` | string | Yes | Your Confluence domain \(e.g., yourcompany.atlassian.net\) | +| `pageId` | string | Yes | Confluence page ID to attach the file to | +| `file` | file | Yes | The file to upload as an attachment | +| `fileName` | string | No | Optional custom file name for the attachment | +| `comment` | string | No | Optional comment to add to the attachment | +| `cloudId` | string | No | Confluence Cloud ID for the instance. If not provided, it will be fetched using the domain. | + +#### Output + +| Parameter | Type | Description | +| --------- | ---- | ----------- | +| `ts` | string | Timestamp of upload | +| `attachmentId` | string | Uploaded attachment ID | +| `title` | string | Attachment file name | +| `fileSize` | number | File size in bytes | +| `mediaType` | string | MIME type of the attachment | +| `downloadUrl` | string | Download URL for the attachment | +| `pageId` | string | Page ID the attachment was added to | + ### `confluence_list_attachments` List all attachments on a Confluence page. diff --git a/apps/docs/content/docs/en/tools/google_groups.mdx b/apps/docs/content/docs/en/tools/google_groups.mdx index 727ab72711..e6dc141c4a 100644 --- a/apps/docs/content/docs/en/tools/google_groups.mdx +++ b/apps/docs/content/docs/en/tools/google_groups.mdx @@ -36,7 +36,8 @@ List all groups in a Google Workspace domain | Parameter | Type | Description | | --------- | ---- | ----------- | -| `output` | json | Google Groups API response data | +| `groups` | json | Array of group objects | +| `nextPageToken` | string | Token for fetching next page of results | ### `google_groups_get_group` @@ -52,7 +53,7 @@ Get details of a specific Google Group by email or group ID | Parameter | Type | Description | | --------- | ---- | ----------- | -| `output` | json | Google Groups API response data | +| `group` | json | Group object | ### `google_groups_create_group` @@ -70,7 +71,7 @@ Create a new Google Group in the domain | Parameter | Type | Description | | --------- | ---- | ----------- | -| `output` | json | Google Groups API response data | +| `group` | json | Created group object | ### `google_groups_update_group` @@ -89,7 +90,7 @@ Update an existing Google Group | Parameter | Type | Description | | --------- | ---- | ----------- | -| `output` | json | Google Groups API response data | +| `group` | json | Updated group object | ### `google_groups_delete_group` @@ -105,7 +106,7 @@ Delete a Google Group | Parameter | Type | Description | | --------- | ---- | ----------- | -| `output` | json | Google Groups API response data | +| `message` | string | Success message | ### `google_groups_list_members` @@ -124,7 +125,8 @@ List all members of a Google Group | Parameter | Type | Description | | --------- | ---- | ----------- | -| `output` | json | Google Groups API response data | +| `members` | json | Array of member objects | +| `nextPageToken` | string | Token for fetching next page of results | ### `google_groups_get_member` @@ -141,7 +143,7 @@ Get details of a specific member in a Google Group | Parameter | Type | Description | | --------- | ---- | ----------- | -| `output` | json | Google Groups API response data | +| `member` | json | Member object | ### `google_groups_add_member` @@ -159,7 +161,7 @@ Add a new member to a Google Group | Parameter | Type | Description | | --------- | ---- | ----------- | -| `output` | json | Google Groups API response data | +| `member` | json | Added member object | ### `google_groups_remove_member` @@ -176,7 +178,7 @@ Remove a member from a Google Group | Parameter | Type | Description | | --------- | ---- | ----------- | -| `output` | json | Google Groups API response data | +| `message` | string | Success message | ### `google_groups_update_member` @@ -194,7 +196,7 @@ Update a member | Parameter | Type | Description | | --------- | ---- | ----------- | -| `output` | json | Google Groups API response data | +| `member` | json | Updated member object | ### `google_groups_has_member` @@ -211,7 +213,7 @@ Check if a user is a member of a Google Group | Parameter | Type | Description | | --------- | ---- | ----------- | -| `output` | json | Google Groups API response data | +| `isMember` | boolean | Whether the user is a member of the group | diff --git a/apps/docs/content/docs/en/tools/google_vault.mdx b/apps/docs/content/docs/en/tools/google_vault.mdx index 34d0394585..39714d1122 100644 --- a/apps/docs/content/docs/en/tools/google_vault.mdx +++ b/apps/docs/content/docs/en/tools/google_vault.mdx @@ -36,8 +36,7 @@ Create an export in a matter | Parameter | Type | Description | | --------- | ---- | ----------- | -| `output` | json | Vault API response data | -| `file` | json | Downloaded export file \(UserFile\) from execution files | +| `export` | json | Created export object | ### `google_vault_list_matters_export` @@ -56,8 +55,9 @@ List exports for a matter | Parameter | Type | Description | | --------- | ---- | ----------- | -| `output` | json | Vault API response data | -| `file` | json | Downloaded export file \(UserFile\) from execution files | +| `exports` | json | Array of export objects | +| `export` | json | Single export object \(when exportId is provided\) | +| `nextPageToken` | string | Token for fetching next page of results | ### `google_vault_download_export_file` @@ -96,8 +96,7 @@ Create a hold in a matter | Parameter | Type | Description | | --------- | ---- | ----------- | -| `output` | json | Vault API response data | -| `file` | json | Downloaded export file \(UserFile\) from execution files | +| `hold` | json | Created hold object | ### `google_vault_list_matters_holds` @@ -116,8 +115,9 @@ List holds for a matter | Parameter | Type | Description | | --------- | ---- | ----------- | -| `output` | json | Vault API response data | -| `file` | json | Downloaded export file \(UserFile\) from execution files | +| `holds` | json | Array of hold objects | +| `hold` | json | Single hold object \(when holdId is provided\) | +| `nextPageToken` | string | Token for fetching next page of results | ### `google_vault_create_matters` @@ -134,8 +134,7 @@ Create a new matter in Google Vault | Parameter | Type | Description | | --------- | ---- | ----------- | -| `output` | json | Vault API response data | -| `file` | json | Downloaded export file \(UserFile\) from execution files | +| `matter` | json | Created matter object | ### `google_vault_list_matters` @@ -153,8 +152,9 @@ List matters, or get a specific matter if matterId is provided | Parameter | Type | Description | | --------- | ---- | ----------- | -| `output` | json | Vault API response data | -| `file` | json | Downloaded export file \(UserFile\) from execution files | +| `matters` | json | Array of matter objects | +| `matter` | json | Single matter object \(when matterId is provided\) | +| `nextPageToken` | string | Token for fetching next page of results | diff --git a/apps/docs/content/docs/en/tools/hubspot.mdx b/apps/docs/content/docs/en/tools/hubspot.mdx index cd673afbe3..a1e64a9cec 100644 --- a/apps/docs/content/docs/en/tools/hubspot.mdx +++ b/apps/docs/content/docs/en/tools/hubspot.mdx @@ -50,8 +50,9 @@ Retrieve all users from HubSpot account | Parameter | Type | Description | | --------- | ---- | ----------- | +| `users` | array | Array of HubSpot user objects | +| `metadata` | object | Operation metadata | | `success` | boolean | Operation success status | -| `output` | object | Users data | ### `hubspot_list_contacts` @@ -70,8 +71,10 @@ Retrieve all contacts from HubSpot account with pagination support | Parameter | Type | Description | | --------- | ---- | ----------- | +| `contacts` | array | Array of HubSpot contact objects | +| `paging` | object | Pagination information | +| `metadata` | object | Operation metadata | | `success` | boolean | Operation success status | -| `output` | object | Contacts data | ### `hubspot_get_contact` @@ -90,8 +93,9 @@ Retrieve a single contact by ID or email from HubSpot | Parameter | Type | Description | | --------- | ---- | ----------- | +| `contact` | object | HubSpot contact object with properties | +| `metadata` | object | Operation metadata | | `success` | boolean | Operation success status | -| `output` | object | Contact data | ### `hubspot_create_contact` @@ -108,8 +112,9 @@ Create a new contact in HubSpot. Requires at least one of: email, firstname, or | Parameter | Type | Description | | --------- | ---- | ----------- | +| `contact` | object | Created HubSpot contact object | +| `metadata` | object | Operation metadata | | `success` | boolean | Operation success status | -| `output` | object | Created contact data | ### `hubspot_update_contact` @@ -127,8 +132,9 @@ Update an existing contact in HubSpot by ID or email | Parameter | Type | Description | | --------- | ---- | ----------- | +| `contact` | object | Updated HubSpot contact object | +| `metadata` | object | Operation metadata | | `success` | boolean | Operation success status | -| `output` | object | Updated contact data | ### `hubspot_search_contacts` @@ -149,8 +155,11 @@ Search for contacts in HubSpot using filters, sorting, and queries | Parameter | Type | Description | | --------- | ---- | ----------- | +| `contacts` | array | Array of matching HubSpot contact objects | +| `total` | number | Total number of matching contacts | +| `paging` | object | Pagination information | +| `metadata` | object | Operation metadata | | `success` | boolean | Operation success status | -| `output` | object | Search results | ### `hubspot_list_companies` @@ -169,8 +178,10 @@ Retrieve all companies from HubSpot account with pagination support | Parameter | Type | Description | | --------- | ---- | ----------- | +| `companies` | array | Array of HubSpot company objects | +| `paging` | object | Pagination information | +| `metadata` | object | Operation metadata | | `success` | boolean | Operation success status | -| `output` | object | Companies data | ### `hubspot_get_company` @@ -189,8 +200,9 @@ Retrieve a single company by ID or domain from HubSpot | Parameter | Type | Description | | --------- | ---- | ----------- | +| `company` | object | HubSpot company object with properties | +| `metadata` | object | Operation metadata | | `success` | boolean | Operation success status | -| `output` | object | Company data | ### `hubspot_create_company` @@ -207,8 +219,9 @@ Create a new company in HubSpot | Parameter | Type | Description | | --------- | ---- | ----------- | +| `company` | object | Created HubSpot company object | +| `metadata` | object | Operation metadata | | `success` | boolean | Operation success status | -| `output` | object | Created company data | ### `hubspot_update_company` @@ -226,8 +239,9 @@ Update an existing company in HubSpot by ID or domain | Parameter | Type | Description | | --------- | ---- | ----------- | +| `company` | object | Updated HubSpot company object | +| `metadata` | object | Operation metadata | | `success` | boolean | Operation success status | -| `output` | object | Updated company data | ### `hubspot_search_companies` @@ -248,8 +262,11 @@ Search for companies in HubSpot using filters, sorting, and queries | Parameter | Type | Description | | --------- | ---- | ----------- | +| `companies` | array | Array of matching HubSpot company objects | +| `total` | number | Total number of matching companies | +| `paging` | object | Pagination information | +| `metadata` | object | Operation metadata | | `success` | boolean | Operation success status | -| `output` | object | Search results | ### `hubspot_list_deals` @@ -268,8 +285,10 @@ Retrieve all deals from HubSpot account with pagination support | Parameter | Type | Description | | --------- | ---- | ----------- | +| `deals` | array | Array of HubSpot deal objects | +| `paging` | object | Pagination information | +| `metadata` | object | Operation metadata | | `success` | boolean | Operation success status | -| `output` | object | Deals data | diff --git a/apps/docs/content/docs/en/tools/pipedrive.mdx b/apps/docs/content/docs/en/tools/pipedrive.mdx index 88d05a1c48..3f66973c8b 100644 --- a/apps/docs/content/docs/en/tools/pipedrive.mdx +++ b/apps/docs/content/docs/en/tools/pipedrive.mdx @@ -54,8 +54,9 @@ Retrieve all deals from Pipedrive with optional filters | Parameter | Type | Description | | --------- | ---- | ----------- | +| `deals` | array | Array of deal objects from Pipedrive | +| `metadata` | object | Operation metadata | | `success` | boolean | Operation success status | -| `output` | object | Deals data and metadata | ### `pipedrive_get_deal` @@ -71,8 +72,9 @@ Retrieve detailed information about a specific deal | Parameter | Type | Description | | --------- | ---- | ----------- | +| `deal` | object | Deal object with full details | +| `metadata` | object | Operation metadata | | `success` | boolean | Operation success status | -| `output` | object | Deal details | ### `pipedrive_create_deal` @@ -96,8 +98,9 @@ Create a new deal in Pipedrive | Parameter | Type | Description | | --------- | ---- | ----------- | +| `deal` | object | The created deal object | +| `metadata` | object | Operation metadata | | `success` | boolean | Operation success status | -| `output` | object | Created deal details | ### `pipedrive_update_deal` @@ -118,8 +121,9 @@ Update an existing deal in Pipedrive | Parameter | Type | Description | | --------- | ---- | ----------- | +| `deal` | object | The updated deal object | +| `metadata` | object | Operation metadata | | `success` | boolean | Operation success status | -| `output` | object | Updated deal details | ### `pipedrive_get_files` @@ -138,8 +142,9 @@ Retrieve files from Pipedrive with optional filters | Parameter | Type | Description | | --------- | ---- | ----------- | +| `files` | array | Array of file objects from Pipedrive | +| `metadata` | object | Operation metadata | | `success` | boolean | Operation success status | -| `output` | object | Files data | ### `pipedrive_get_mail_messages` @@ -156,8 +161,9 @@ Retrieve mail threads from Pipedrive mailbox | Parameter | Type | Description | | --------- | ---- | ----------- | +| `messages` | array | Array of mail thread objects from Pipedrive mailbox | +| `metadata` | object | Operation metadata | | `success` | boolean | Operation success status | -| `output` | object | Mail threads data | ### `pipedrive_get_mail_thread` @@ -173,8 +179,9 @@ Retrieve all messages from a specific mail thread | Parameter | Type | Description | | --------- | ---- | ----------- | +| `messages` | array | Array of mail message objects from the thread | +| `metadata` | object | Operation metadata including thread ID | | `success` | boolean | Operation success status | -| `output` | object | Mail thread messages data | ### `pipedrive_get_pipelines` @@ -193,8 +200,9 @@ Retrieve all pipelines from Pipedrive | Parameter | Type | Description | | --------- | ---- | ----------- | +| `pipelines` | array | Array of pipeline objects from Pipedrive | +| `metadata` | object | Operation metadata | | `success` | boolean | Operation success status | -| `output` | object | Pipelines data | ### `pipedrive_get_pipeline_deals` @@ -213,8 +221,9 @@ Retrieve all deals in a specific pipeline | Parameter | Type | Description | | --------- | ---- | ----------- | +| `deals` | array | Array of deal objects from the pipeline | +| `metadata` | object | Operation metadata including pipeline ID | | `success` | boolean | Operation success status | -| `output` | object | Pipeline deals data | ### `pipedrive_get_projects` @@ -232,8 +241,10 @@ Retrieve all projects or a specific project from Pipedrive | Parameter | Type | Description | | --------- | ---- | ----------- | +| `projects` | array | Array of project objects \(when listing all\) | +| `project` | object | Single project object \(when project_id is provided\) | +| `metadata` | object | Operation metadata | | `success` | boolean | Operation success status | -| `output` | object | Projects data or single project details | ### `pipedrive_create_project` @@ -252,8 +263,9 @@ Create a new project in Pipedrive | Parameter | Type | Description | | --------- | ---- | ----------- | +| `project` | object | The created project object | +| `metadata` | object | Operation metadata | | `success` | boolean | Operation success status | -| `output` | object | Created project details | ### `pipedrive_get_activities` @@ -274,8 +286,9 @@ Retrieve activities (tasks) from Pipedrive with optional filters | Parameter | Type | Description | | --------- | ---- | ----------- | +| `activities` | array | Array of activity objects from Pipedrive | +| `metadata` | object | Operation metadata | | `success` | boolean | Operation success status | -| `output` | object | Activities data | ### `pipedrive_create_activity` @@ -299,8 +312,9 @@ Create a new activity (task) in Pipedrive | Parameter | Type | Description | | --------- | ---- | ----------- | +| `activity` | object | The created activity object | +| `metadata` | object | Operation metadata | | `success` | boolean | Operation success status | -| `output` | object | Created activity details | ### `pipedrive_update_activity` @@ -322,8 +336,9 @@ Update an existing activity (task) in Pipedrive | Parameter | Type | Description | | --------- | ---- | ----------- | +| `activity` | object | The updated activity object | +| `metadata` | object | Operation metadata | | `success` | boolean | Operation success status | -| `output` | object | Updated activity details | ### `pipedrive_get_leads` @@ -344,8 +359,10 @@ Retrieve all leads or a specific lead from Pipedrive | Parameter | Type | Description | | --------- | ---- | ----------- | +| `leads` | array | Array of lead objects \(when listing all\) | +| `lead` | object | Single lead object \(when lead_id is provided\) | +| `metadata` | object | Operation metadata | | `success` | boolean | Operation success status | -| `output` | object | Leads data or single lead details | ### `pipedrive_create_lead` @@ -368,8 +385,9 @@ Create a new lead in Pipedrive | Parameter | Type | Description | | --------- | ---- | ----------- | +| `lead` | object | The created lead object | +| `metadata` | object | Operation metadata | | `success` | boolean | Operation success status | -| `output` | object | Created lead details | ### `pipedrive_update_lead` @@ -393,8 +411,9 @@ Update an existing lead in Pipedrive | Parameter | Type | Description | | --------- | ---- | ----------- | +| `lead` | object | The updated lead object | +| `metadata` | object | Operation metadata | | `success` | boolean | Operation success status | -| `output` | object | Updated lead details | ### `pipedrive_delete_lead` @@ -410,8 +429,9 @@ Delete a specific lead from Pipedrive | Parameter | Type | Description | | --------- | ---- | ----------- | +| `data` | object | Deletion confirmation data | +| `metadata` | object | Operation metadata | | `success` | boolean | Operation success status | -| `output` | object | Deletion result | diff --git a/apps/docs/content/docs/en/tools/sqs.mdx b/apps/docs/content/docs/en/tools/sqs.mdx index a4c368b63f..0fe60e5425 100644 --- a/apps/docs/content/docs/en/tools/sqs.mdx +++ b/apps/docs/content/docs/en/tools/sqs.mdx @@ -3,9 +3,9 @@ title: Amazon SQS description: Connect to Amazon SQS --- -import { BlockInfoCard } from "@/components/ui/block-info-card"; +import { BlockInfoCard } from "@/components/ui/block-info-card" - @@ -28,10 +28,13 @@ In Sim, the SQS integration enables your agents to send messages to Amazon SQS q This integration allows your agents to automate message sending workflows without manual intervention. By connecting Sim with Amazon SQS, you can build agents that publish messages to queues within your workflows—all without handling queue infrastructure or connections. {/* MANUAL-CONTENT-END */} + ## Usage Instructions Integrate Amazon SQS into the workflow. Can send messages to SQS queues. + + ## Tools ### `sqs_send` @@ -40,22 +43,24 @@ Send a message to an Amazon SQS queue #### Input -| Parameter | Type | Required | Description | -| ------------------------ | ------ | -------- | ----------------------------------------------------------------------------- | -| `region` | string | Yes | AWS region \(e.g., us-east-1\) | -| `accessKeyId` | string | Yes | AWS access key ID | -| `secretAccessKey` | string | Yes | AWS secret access key | -| `queueUrl` | string | Yes | Queue URL \(e.g., https://sqs.us-east-1.amazonaws.com/123456789012/my-queue\) | -| `data` | object | Yes | Message body to send as JSON object | -| `messageGroupId` | string | No | Message group ID \(optional\) | -| `messageDeduplicationId` | string | No | Message deduplication ID for FIFO queues \(optional\) | +| Parameter | Type | Required | Description | +| --------- | ---- | -------- | ----------- | +| `region` | string | Yes | AWS region \(e.g., us-east-1\) | +| `accessKeyId` | string | Yes | AWS access key ID | +| `secretAccessKey` | string | Yes | AWS secret access key | +| `queueUrl` | string | Yes | Queue URL | +| `data` | object | Yes | Message body to send | +| `messageGroupId` | string | No | Message group ID \(optional\) | +| `messageDeduplicationId` | string | No | Message deduplication ID \(optional\) | #### Output -| Parameter | Type | Description | -| --------- | ------ | --------------------------------------------------------- | -| `message` | string | Success or error message describing the operation outcome | -| `id` | string | Message ID | +| Parameter | Type | Description | +| --------- | ---- | ----------- | +| `message` | string | Operation status message | +| `id` | string | Message ID | + + ## Notes diff --git a/apps/docs/content/docs/en/tools/typeform.mdx b/apps/docs/content/docs/en/tools/typeform.mdx index 7aa4f4ca33..829fc64613 100644 --- a/apps/docs/content/docs/en/tools/typeform.mdx +++ b/apps/docs/content/docs/en/tools/typeform.mdx @@ -51,25 +51,9 @@ Retrieve form responses from Typeform | Parameter | Type | Description | | --------- | ---- | ----------- | -| `total_items` | number | Total response/form count | -| `page_count` | number | Total page count | -| `items` | json | Response/form items array | -| `id` | string | Form unique identifier | -| `title` | string | Form title | -| `type` | string | Form type | -| `created_at` | string | ISO timestamp of form creation | -| `last_updated_at` | string | ISO timestamp of last update | -| `settings` | json | Form settings object | -| `theme` | json | Theme configuration object | -| `workspace` | json | Workspace information | -| `fields` | json | Form fields/questions array | -| `thankyou_screens` | json | Thank you screens array | -| `_links` | json | Related resource links | -| `deleted` | boolean | Whether the form was successfully deleted | -| `message` | string | Deletion confirmation message | -| `fileUrl` | string | Downloaded file URL | -| `contentType` | string | File content type | -| `filename` | string | File name | +| `total_items` | number | Total number of responses | +| `page_count` | number | Total number of pages available | +| `items` | array | Array of response objects with response_id, submitted_at, answers, and metadata | ### `typeform_files` @@ -131,7 +115,7 @@ Retrieve a list of all forms in your Typeform account | --------- | ---- | ----------- | | `total_items` | number | Total number of forms in the account | | `page_count` | number | Total number of pages available | -| `items` | array | Array of form objects | +| `items` | array | Array of form objects with id, title, created_at, last_updated_at, settings, theme, and _links | ### `typeform_get_form` @@ -151,11 +135,13 @@ Retrieve complete details and structure of a specific form | `id` | string | Form unique identifier | | `title` | string | Form title | | `type` | string | Form type \(form, quiz, etc.\) | -| `created_at` | string | ISO timestamp of form creation | -| `last_updated_at` | string | ISO timestamp of last update | | `settings` | object | Form settings including language, progress bar, etc. | -| `theme` | object | Theme configuration with colors, fonts, and design settings | -| `workspace` | object | Workspace information | +| `theme` | object | Theme reference | +| `workspace` | object | Workspace reference | +| `fields` | array | Array of form fields/questions | +| `welcome_screens` | array | Array of welcome screens | +| `thankyou_screens` | array | Array of thank you screens | +| `_links` | object | Related resource links including public form URL | ### `typeform_create_form` @@ -180,13 +166,8 @@ Create a new form with fields and settings | `id` | string | Created form unique identifier | | `title` | string | Form title | | `type` | string | Form type | -| `created_at` | string | ISO timestamp of form creation | -| `last_updated_at` | string | ISO timestamp of last update | -| `settings` | object | Form settings | -| `theme` | object | Applied theme configuration | -| `workspace` | object | Workspace information | | `fields` | array | Array of created form fields | -| `_links` | object | Related resource links | +| `_links` | object | Related resource links including public form URL | ### `typeform_update_form` @@ -207,12 +188,11 @@ Update an existing form using JSON Patch operations | `id` | string | Updated form unique identifier | | `title` | string | Form title | | `type` | string | Form type | -| `created_at` | string | ISO timestamp of form creation | -| `last_updated_at` | string | ISO timestamp of last update | | `settings` | object | Form settings | -| `theme` | object | Theme configuration | -| `workspace` | object | Workspace information | +| `theme` | object | Theme reference | +| `workspace` | object | Workspace reference | | `fields` | array | Array of form fields | +| `welcome_screens` | array | Array of welcome screens | | `thankyou_screens` | array | Array of thank you screens | | `_links` | object | Related resource links | diff --git a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/editor/components/sub-block/components/tag-dropdown/tag-dropdown.tsx b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/editor/components/sub-block/components/tag-dropdown/tag-dropdown.tsx index e630e5bdc1..dcdf3e638d 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/editor/components/sub-block/components/tag-dropdown/tag-dropdown.tsx +++ b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/editor/components/sub-block/components/tag-dropdown/tag-dropdown.tsx @@ -206,7 +206,18 @@ const generateOutputPaths = (outputs: Record, prefix = ''): string[ paths.push(currentPath) } else if (typeof value === 'object' && value !== null) { if ('type' in value && typeof value.type === 'string') { - paths.push(currentPath) + const hasNestedProperties = + (value.type === 'object' && value.properties) || + (value.type === 'array' && value.items?.properties) || + (value.type === 'array' && + value.items && + typeof value.items === 'object' && + !('type' in value.items)) + + if (!hasNestedProperties) { + paths.push(currentPath) + } + if (value.type === 'object' && value.properties) { paths.push(...generateOutputPaths(value.properties, currentPath)) } else if (value.type === 'array' && value.items?.properties) { diff --git a/apps/sim/blocks/blocks/firecrawl.ts b/apps/sim/blocks/blocks/firecrawl.ts index dc66c82773..13706951c9 100644 --- a/apps/sim/blocks/blocks/firecrawl.ts +++ b/apps/sim/blocks/blocks/firecrawl.ts @@ -182,12 +182,20 @@ export const FirecrawlBlock: BlockConfig = { const result: Record = { apiKey } - // Handle operation-specific fields switch (operation) { case 'scrape': if (url) result.url = url if (formats) { - result.formats = Array.isArray(formats) ? formats : ['markdown'] + if (Array.isArray(formats)) { + result.formats = formats + } else if (typeof formats === 'string') { + try { + const parsed = JSON.parse(formats) + result.formats = Array.isArray(parsed) ? parsed : ['markdown'] + } catch { + result.formats = ['markdown'] + } + } } if (timeout) result.timeout = Number.parseInt(timeout) if (waitFor) result.waitFor = Number.parseInt(waitFor) @@ -214,7 +222,16 @@ export const FirecrawlBlock: BlockConfig = { case 'extract': if (urls) { - result.urls = Array.isArray(urls) ? urls : [urls] + if (Array.isArray(urls)) { + result.urls = urls + } else if (typeof urls === 'string') { + try { + const parsed = JSON.parse(urls) + result.urls = Array.isArray(parsed) ? parsed : [parsed] + } catch { + result.urls = [urls] + } + } } if (prompt) result.prompt = prompt break diff --git a/apps/sim/blocks/blocks/typeform.ts b/apps/sim/blocks/blocks/typeform.ts index 7e5c6d8773..e8648d0783 100644 --- a/apps/sim/blocks/blocks/typeform.ts +++ b/apps/sim/blocks/blocks/typeform.ts @@ -308,29 +308,30 @@ export const TypeformBlock: BlockConfig = { operations: { type: 'json', description: 'JSON Patch operations array' }, }, outputs: { - // Common outputs (used by responses, list_forms) + // List/responses outputs total_items: { type: 'number', description: 'Total response/form count' }, page_count: { type: 'number', description: 'Total page count' }, items: { type: 'json', description: 'Response/form items array' }, - // Form details outputs (get_form, create_form, update_form) + // Form details outputs id: { type: 'string', description: 'Form unique identifier' }, title: { type: 'string', description: 'Form title' }, type: { type: 'string', description: 'Form type' }, - created_at: { type: 'string', description: 'ISO timestamp of form creation' }, - last_updated_at: { type: 'string', description: 'ISO timestamp of last update' }, settings: { type: 'json', description: 'Form settings object' }, - theme: { type: 'json', description: 'Theme configuration object' }, - workspace: { type: 'json', description: 'Workspace information' }, - fields: { type: 'json', description: 'Form fields/questions array' }, + theme: { type: 'json', description: 'Theme reference' }, + workspace: { type: 'json', description: 'Workspace reference' }, + fields: { type: 'json', description: 'Form fields array' }, + welcome_screens: { type: 'json', description: 'Welcome screens array' }, thankyou_screens: { type: 'json', description: 'Thank you screens array' }, _links: { type: 'json', description: 'Related resource links' }, // Delete form outputs - deleted: { type: 'boolean', description: 'Whether the form was successfully deleted' }, + deleted: { type: 'boolean', description: 'Whether the form was deleted' }, message: { type: 'string', description: 'Deletion confirmation message' }, // File operation outputs fileUrl: { type: 'string', description: 'Downloaded file URL' }, contentType: { type: 'string', description: 'File content type' }, filename: { type: 'string', description: 'File name' }, + // Insights outputs + form: { type: 'json', description: 'Form analytics and performance data' }, }, triggers: { enabled: true, diff --git a/apps/sim/tools/firecrawl/crawl.ts b/apps/sim/tools/firecrawl/crawl.ts index a4651d92d8..335ee4c342 100644 --- a/apps/sim/tools/firecrawl/crawl.ts +++ b/apps/sim/tools/firecrawl/crawl.ts @@ -55,23 +55,24 @@ export const crawlTool: ToolConfig }, } - // Add all optional crawl-specific parameters if provided - if (params.prompt !== undefined) body.prompt = params.prompt - if (params.maxDiscoveryDepth !== undefined) - body.maxDiscoveryDepth = Number(params.maxDiscoveryDepth) - if (params.sitemap !== undefined) body.sitemap = params.sitemap - if (params.crawlEntireDomain !== undefined) body.crawlEntireDomain = params.crawlEntireDomain - if (params.allowExternalLinks !== undefined) + if (params.prompt) body.prompt = params.prompt + if (params.maxDiscoveryDepth) body.maxDiscoveryDepth = Number(params.maxDiscoveryDepth) + if (params.sitemap) body.sitemap = params.sitemap + if (typeof params.crawlEntireDomain === 'boolean') + body.crawlEntireDomain = params.crawlEntireDomain + if (typeof params.allowExternalLinks === 'boolean') body.allowExternalLinks = params.allowExternalLinks - if (params.allowSubdomains !== undefined) body.allowSubdomains = params.allowSubdomains - if (params.ignoreQueryParameters !== undefined) + if (typeof params.allowSubdomains === 'boolean') body.allowSubdomains = params.allowSubdomains + if (typeof params.ignoreQueryParameters === 'boolean') body.ignoreQueryParameters = params.ignoreQueryParameters - if (params.delay !== undefined) body.delay = Number(params.delay) - if (params.maxConcurrency !== undefined) body.maxConcurrency = Number(params.maxConcurrency) - if (params.excludePaths !== undefined) body.excludePaths = params.excludePaths - if (params.includePaths !== undefined) body.includePaths = params.includePaths - if (params.webhook !== undefined) body.webhook = params.webhook - if (params.zeroDataRetention !== undefined) body.zeroDataRetention = params.zeroDataRetention + if (params.delay != null && params.delay !== '') body.delay = Number(params.delay) + if (params.maxConcurrency != null && params.maxConcurrency !== '') + body.maxConcurrency = Number(params.maxConcurrency) + if (params.excludePaths) body.excludePaths = params.excludePaths + if (params.includePaths) body.includePaths = params.includePaths + if (params.webhook) body.webhook = params.webhook + if (typeof params.zeroDataRetention === 'boolean') + body.zeroDataRetention = params.zeroDataRetention return body }, diff --git a/apps/sim/tools/firecrawl/extract.ts b/apps/sim/tools/firecrawl/extract.ts index e1c80b8bed..0f79987048 100644 --- a/apps/sim/tools/firecrawl/extract.ts +++ b/apps/sim/tools/firecrawl/extract.ts @@ -89,15 +89,16 @@ export const extractTool: ToolConfig = { urls: params.urls, } - if (params.prompt != null) body.prompt = params.prompt - if (params.schema != null) body.schema = params.schema - if (params.enableWebSearch != null) body.enableWebSearch = params.enableWebSearch - if (params.ignoreSitemap != null) body.ignoreSitemap = params.ignoreSitemap - if (params.includeSubdomains != null) body.includeSubdomains = params.includeSubdomains - if (params.showSources != null) body.showSources = params.showSources - if (params.ignoreInvalidURLs != null) body.ignoreInvalidURLs = params.ignoreInvalidURLs + if (params.prompt) body.prompt = params.prompt + if (params.schema) body.schema = params.schema + if (typeof params.enableWebSearch === 'boolean') body.enableWebSearch = params.enableWebSearch + if (typeof params.ignoreSitemap === 'boolean') body.ignoreSitemap = params.ignoreSitemap + if (typeof params.includeSubdomains === 'boolean') + body.includeSubdomains = params.includeSubdomains + if (typeof params.showSources === 'boolean') body.showSources = params.showSources + if (typeof params.ignoreInvalidURLs === 'boolean') + body.ignoreInvalidURLs = params.ignoreInvalidURLs - // Add scrapeOptions, filtering out null/undefined values if (params.scrapeOptions != null) { const cleanedScrapeOptions = Object.entries(params.scrapeOptions).reduce( (acc, [key, val]) => { diff --git a/apps/sim/tools/firecrawl/map.ts b/apps/sim/tools/firecrawl/map.ts index 0e139c7efa..033e2861ed 100644 --- a/apps/sim/tools/firecrawl/map.ts +++ b/apps/sim/tools/firecrawl/map.ts @@ -77,14 +77,15 @@ export const mapTool: ToolConfig = { url: params.url, } - if (params.search != null) body.search = params.search - if (params.sitemap != null) body.sitemap = params.sitemap - if (params.includeSubdomains != null) body.includeSubdomains = params.includeSubdomains - if (params.ignoreQueryParameters != null) + if (params.search) body.search = params.search + if (params.sitemap) body.sitemap = params.sitemap + if (typeof params.includeSubdomains === 'boolean') + body.includeSubdomains = params.includeSubdomains + if (typeof params.ignoreQueryParameters === 'boolean') body.ignoreQueryParameters = params.ignoreQueryParameters - if (params.limit !== undefined) body.limit = Number(params.limit) - if (params.timeout !== undefined) body.timeout = Number(params.timeout) - if (params.location !== undefined) body.location = params.location + if (params.limit != null && params.limit !== '') body.limit = Number(params.limit) + if (params.timeout != null && params.timeout !== '') body.timeout = Number(params.timeout) + if (params.location) body.location = params.location return body }, diff --git a/apps/sim/tools/firecrawl/scrape.ts b/apps/sim/tools/firecrawl/scrape.ts index 9530cca28b..18814132fb 100644 --- a/apps/sim/tools/firecrawl/scrape.ts +++ b/apps/sim/tools/firecrawl/scrape.ts @@ -42,28 +42,27 @@ export const scrapeTool: ToolConfig = { formats: params.formats || params.scrapeOptions?.formats || ['markdown'], } - // Add all optional top-level parameters if provided - if (params.onlyMainContent !== undefined) body.onlyMainContent = params.onlyMainContent - if (params.includeTags !== undefined) body.includeTags = params.includeTags - if (params.excludeTags !== undefined) body.excludeTags = params.excludeTags - if (params.maxAge !== undefined) body.maxAge = Number(params.maxAge) - if (params.headers !== undefined) body.headers = params.headers - if (params.waitFor !== undefined) body.waitFor = Number(params.waitFor) - if (params.mobile !== undefined) body.mobile = params.mobile - if (params.skipTlsVerification !== undefined) + if (typeof params.onlyMainContent === 'boolean') body.onlyMainContent = params.onlyMainContent + if (params.includeTags) body.includeTags = params.includeTags + if (params.excludeTags) body.excludeTags = params.excludeTags + if (params.maxAge != null && params.maxAge !== '') body.maxAge = Number(params.maxAge) + if (params.headers) body.headers = params.headers + if (params.waitFor != null && params.waitFor !== '') body.waitFor = Number(params.waitFor) + if (typeof params.mobile === 'boolean') body.mobile = params.mobile + if (typeof params.skipTlsVerification === 'boolean') body.skipTlsVerification = params.skipTlsVerification - if (params.timeout !== undefined) body.timeout = Number(params.timeout) - if (params.parsers !== undefined) body.parsers = params.parsers - if (params.actions !== undefined) body.actions = params.actions - if (params.location !== undefined) body.location = params.location - if (params.removeBase64Images !== undefined) + if (params.timeout != null && params.timeout !== '') body.timeout = Number(params.timeout) + if (params.parsers) body.parsers = params.parsers + if (params.actions) body.actions = params.actions + if (params.location) body.location = params.location + if (typeof params.removeBase64Images === 'boolean') body.removeBase64Images = params.removeBase64Images - if (params.blockAds !== undefined) body.blockAds = params.blockAds - if (params.proxy !== undefined) body.proxy = params.proxy - if (params.storeInCache !== undefined) body.storeInCache = params.storeInCache - if (params.zeroDataRetention !== undefined) body.zeroDataRetention = params.zeroDataRetention + if (typeof params.blockAds === 'boolean') body.blockAds = params.blockAds + if (params.proxy) body.proxy = params.proxy + if (typeof params.storeInCache === 'boolean') body.storeInCache = params.storeInCache + if (typeof params.zeroDataRetention === 'boolean') + body.zeroDataRetention = params.zeroDataRetention - // Support legacy scrapeOptions for backwards compatibility if (params.scrapeOptions) { Object.assign(body, params.scrapeOptions) } diff --git a/apps/sim/tools/firecrawl/search.ts b/apps/sim/tools/firecrawl/search.ts index 376d4bd5c1..bf7b112e7b 100644 --- a/apps/sim/tools/firecrawl/search.ts +++ b/apps/sim/tools/firecrawl/search.ts @@ -34,16 +34,17 @@ export const searchTool: ToolConfig = { query: params.query, } - // Add all optional parameters if provided - if (params.limit !== undefined) body.limit = Number(params.limit) - if (params.sources !== undefined) body.sources = params.sources - if (params.categories !== undefined) body.categories = params.categories - if (params.tbs !== undefined) body.tbs = params.tbs - if (params.location !== undefined) body.location = params.location - if (params.country !== undefined) body.country = params.country - if (params.timeout !== undefined) body.timeout = Number(params.timeout) - if (params.ignoreInvalidURLs !== undefined) body.ignoreInvalidURLs = params.ignoreInvalidURLs - if (params.scrapeOptions !== undefined) body.scrapeOptions = params.scrapeOptions + // Add optional parameters if provided (truthy check filters empty strings, null, undefined) + if (params.limit != null && params.limit !== '') body.limit = Number(params.limit) + if (params.sources) body.sources = params.sources + if (params.categories) body.categories = params.categories + if (params.tbs) body.tbs = params.tbs + if (params.location) body.location = params.location + if (params.country) body.country = params.country + if (params.timeout != null && params.timeout !== '') body.timeout = Number(params.timeout) + if (typeof params.ignoreInvalidURLs === 'boolean') + body.ignoreInvalidURLs = params.ignoreInvalidURLs + if (params.scrapeOptions) body.scrapeOptions = params.scrapeOptions return body }, diff --git a/apps/sim/tools/typeform/create_form.ts b/apps/sim/tools/typeform/create_form.ts index 8e7da9defe..f3ba45ea4f 100644 --- a/apps/sim/tools/typeform/create_form.ts +++ b/apps/sim/tools/typeform/create_form.ts @@ -115,37 +115,13 @@ export const createFormTool: ToolConfig