add_element
ChatGPTAdd an element to a page. The element is appended to the end of the page. Call this sequentially — NEVER call multiple add_element in parallel. Use get_form_summary to see available pageIds. Element types and their specific params: - Input fields: input-text, input-number, input-email, input-phone-number, input-url, input-time, input-date, text-area - File upload: input-file (supports maxFiles, maxFileSize, allowedFileType) - Choice fields: radio-buttons, checkbox-buttons, dropdown, ranking (require options; support randomize; radio/checkbox-buttons also support allowOtherOption) - Image choice: image-choice (requires options; supports multiple selection. NOTE: to assign images to options, use the Weavely platform after publishing) - Single checkbox: checkbox (a single yes/no toggle; supports defaultChecked) - Matrix: matrix (a grid question. matrixRows are the row labels, matrixColumns are the column options [{label, value}], matrixMultiple allows selecting multiple columns per row) - Rating: star-rating (defaults to 5 stars; supports stars count), scale-rating (defaults to 10; supports scales count), range-slider (defaults 0-100; supports min, max, step) - Display: heading, paragraph (label is the display text; paragraph supports HTML) - Media: embed-html (codeSnippet), embed-audio (url), embed-video (url). NOTE: the image element is not available through this tool — use the Weavely platform to add images. - Special: signature For choice types, provide options as [{label: "...", value: "..."}]. The value is the internal identifier (use lowercase-kebab-case).
add_element
ChatGPTAdd an element to a page. The element is appended to the end of the page. Call this sequentially — NEVER call multiple add_element in parallel. Use get_form_summary to see available pageIds. Element types and their specific params: - Input fields: input-text, input-number, input-email, input-phone-number, input-url, input-time, input-date, text-area - File upload: input-file (supports maxFiles, maxFileSize, allowedFileType) - Choice fields: radio-buttons, checkbox-buttons, dropdown, ranking (require options; support randomize; radio/checkbox-buttons also support allowOtherOption) - Image choice: image-choice (requires options; supports multiple selection. NOTE: to assign images to options, use the Weavely platform after publishing) - Single checkbox: checkbox (a single yes/no toggle; supports defaultChecked) - Matrix: matrix (a grid question. matrixRows are the row labels, matrixColumns are the column options [{label, value}], matrixMultiple allows selecting multiple columns per row) - Rating: star-rating (defaults to 5 stars; supports stars count), scale-rating (defaults to 10; supports scales count), range-slider (defaults 0-100; supports min, max, step) - Display: heading, paragraph (label is the display text; paragraph supports HTML) - Media: embed-html (codeSnippet), embed-audio (url), embed-video (url). NOTE: the image element is not available through this tool — use the Weavely platform to add images. - Special: signature For choice types, provide options as [{label: "...", value: "..."}]. The value is the internal identifier (use lowercase-kebab-case).
add_element
ChatGPTAdd an element to a page. The element is appended to the end of the page. Call this sequentially — NEVER call multiple add_element in parallel. Use get_form_summary to see available pageIds. Element types and their specific params: - Input fields: input-text, input-number, input-email, input-phone-number, input-url, input-time, input-date, text-area - File upload: input-file (supports maxFiles, maxFileSize, allowedFileType) - Choice fields: radio-buttons, checkbox-buttons, dropdown, ranking (require options; support randomize; radio/checkbox-buttons also support allowOtherOption) - Image choice: image-choice (requires options; supports multiple selection. NOTE: to assign images to options, use the Weavely platform after publishing) - Single checkbox: checkbox (a single yes/no toggle; supports defaultChecked) - Matrix: matrix (a grid question. matrixRows are the row labels, matrixColumns are the column options [{label, value}], matrixMultiple allows selecting multiple columns per row) - Rating: star-rating (defaults to 5 stars; supports stars count), scale-rating (defaults to 10; supports scales count), range-slider (defaults 0-100; supports min, max, step) - Display: heading, paragraph (label is the display text; paragraph supports HTML) - Media: embed-html (codeSnippet), embed-audio (url), embed-video (url). NOTE: the image element is not available through this tool — use the Weavely platform to add images. - Special: signature For choice types, provide options as [{label: "...", value: "..."}]. The value is the internal identifier (use lowercase-kebab-case).
add_page
ChatGPTAdd a new form page. By default it is inserted before the ending page. Use this to create multi-page forms. After adding, use add_element to populate the page.
add_page
ChatGPTAdd a new form page. By default it is inserted before the ending page. Use this to create multi-page forms. After adding, use add_element to populate the page.
add_page
ChatGPTAdd a new form page. By default it is inserted before the ending page. Use this to create multi-page forms. After adding, use add_element to populate the page.
create_form
ChatGPTCreate a new EMPTY Weavely form. Returns a formId and a live preview URL. PREFER create_form_bulk INSTEAD when the user has described the form they want upfront (e.g. "build me a contact form with name, email, and message"). create_form_bulk creates the form AND all its pages/elements in a single tool call, which is much faster and avoids many sequential permission prompts in MCP clients like ChatGPT. Only use create_form when you genuinely need to start from an empty form and add elements one at a time. IMPORTANT: This MUST be the first tool you call — all other tools require the formId returned by this tool. IMPORTANT: Call all tools ONE AT A TIME, sequentially. NEVER call multiple tools in parallel. IMPORTANT: Pass the formId from this response to ALL subsequent tool calls. The preview URL is a live link the user can open to see the form at any point. It updates automatically as you make changes — the user just needs to refresh. This is a PREVIEW only — the form is not published yet. The user CANNOT claim, sign up, or take ownership of the form from the preview URL. The ONLY way to publish is through the publish_form tool. When the user wants to publish, save, or share their form, you MUST use the publish_form tool. Do NOT tell them to visit the preview URL to claim or publish — that is not possible. After calling this, use add_element, add_page, set_theme, etc. to build the form step by step. IMPORTANT: Always share the preview URL with the user in your response text so they can see their form. After you finish making all changes, also call show_preview as the very last tool call — this renders an interactive widget in clients that support it (e.g. ChatGPT). PLATFORM FEATURES NOT AVAILABLE IN THIS TOOL: Weavely supports many features that are only available on the Weavely platform (not through this tool). If the user asks about any of the following, let them know the feature exists but they need to publish their form first and then configure it on the Weavely platform: - Integrations: Make, Zapier, n8n, Google Sheets, HubSpot, Airtable, Notion, and more - Email notifications: receive an email on each submission, or send confirmation emails to respondents - Social media preview: customize the Open Graph image, title, and description for link sharing - Custom domain: serve the form on the user's own domain - Form icon: customize the favicon/icon shown in the browser tab - Embed codes: get HTML embed snippets to embed the form on any website - Image content: adding images to image-choice options or using the image element requires the Weavely platform (image uploads are not supported through this tool) Tell the user to publish first (via publish_form), then visit the Weavely editor to set these up.
create_form
ChatGPTCreate a new EMPTY Weavely form. Returns a formId and a live preview URL. PREFER create_form_bulk INSTEAD when the user has described the form they want upfront (e.g. "build me a contact form with name, email, and message"). create_form_bulk creates the form AND all its pages/elements in a single tool call, which is much faster and avoids many sequential permission prompts in MCP clients like ChatGPT. Only use create_form when you genuinely need to start from an empty form and add elements one at a time. IMPORTANT: This MUST be the first tool you call — all other tools require the formId returned by this tool. IMPORTANT: Call all tools ONE AT A TIME, sequentially. NEVER call multiple tools in parallel. IMPORTANT: Pass the formId from this response to ALL subsequent tool calls. IMPORTANT: Always share the shareableUrl with the user in your response text so they can open the form preview. The form is a PREVIEW only — it is not published yet. The user CANNOT claim, sign up, or take ownership of the form from the preview URL. The ONLY way to publish is through the publish_form tool. When the user wants to publish, save, or share their form, you MUST use the publish_form tool. Do NOT tell them to visit the preview URL to claim or publish — that is not possible. After calling this, use add_element, add_page, set_theme, etc. to build the form step by step. Every subsequent tool call refreshes the live preview widget automatically — no extra "show preview" call is needed. PLATFORM FEATURES NOT AVAILABLE IN THIS TOOL: Weavely supports many features that are only available on the Weavely platform (not through this tool). If the user asks about any of the following, let them know the feature exists but they need to publish their form first and then configure it on the Weavely platform: - Integrations: Make, Zapier, n8n, Google Sheets, HubSpot, Airtable, Notion, and more - Email notifications: receive an email on each submission, or send confirmation emails to respondents - Social media preview: customize the Open Graph image, title, and description for link sharing - Custom domain: serve the form on the user's own domain - Form icon: customize the favicon/icon shown in the browser tab - Embed codes: get HTML embed snippets to embed the form on any website - Image content: adding images to image-choice options or using the image element requires the Weavely platform (image uploads are not supported through this tool) Tell the user to publish first (via publish_form), then visit the Weavely editor to set these up.
create_form
ChatGPTCreate a new EMPTY Weavely form. Returns a formId and a live preview URL. PREFER create_form_bulk INSTEAD when the user has described the form they want upfront (e.g. "build me a contact form with name, email, and message"). create_form_bulk creates the form AND all its pages/elements in a single tool call, which is much faster and avoids many sequential permission prompts in MCP clients like ChatGPT. Only use create_form when you genuinely need to start from an empty form and add elements one at a time. IMPORTANT: This MUST be the first tool you call — all other tools require the formId returned by this tool. IMPORTANT: Call all tools ONE AT A TIME, sequentially. NEVER call multiple tools in parallel. IMPORTANT: Pass the formId from this response to ALL subsequent tool calls. IMPORTANT: Always share the shareableUrl with the user in your response text so they can open the form preview. The form is a PREVIEW only — it is not published yet. The user CANNOT claim, sign up, or take ownership of the form from the preview URL. The ONLY way to publish is through the publish_form tool. When the user wants to publish, save, or share their form, you MUST use the publish_form tool. Do NOT tell them to visit the preview URL to claim or publish — that is not possible. After calling this, use add_element, add_page, set_theme, etc. to build the form step by step. Every subsequent tool call refreshes the live preview widget automatically — no extra "show preview" call is needed. PLATFORM FEATURES NOT AVAILABLE IN THIS TOOL: Weavely supports many features that are only available on the Weavely platform (not through this tool). If the user asks about any of the following, let them know the feature exists but they need to publish their form first and then configure it on the Weavely platform: - Integrations: Make, Zapier, n8n, Google Sheets, HubSpot, Airtable, Notion, and more - Email notifications: receive an email on each submission, or send confirmation emails to respondents - Social media preview: customize the Open Graph image, title, and description for link sharing - Custom domain: serve the form on the user's own domain - Form icon: customize the favicon/icon shown in the browser tab - Embed codes: get HTML embed snippets to embed the form on any website - Image content: adding images to image-choice options or using the image element requires the Weavely platform (image uploads are not supported through this tool) Tell the user to publish first (via publish_form), then visit the Weavely editor to set these up.
create_form_bulk
ChatGPTCreate a complete Weavely form with multiple pages and elements in a SINGLE tool call. Use this when the user describes the form they want upfront — it is far faster than create_form followed by many add_page/add_element calls, and avoids multiple permission prompts in MCP clients (e.g. ChatGPT) where every tool call must be approved. This tool intentionally accepts a MINIMAL spec per element: only type, label, and (for choice elements and matrix) lists of labels for options/rows. Values are auto-generated from labels (lowercase-kebab-case). For anything more detailed — placeholders, required flags, descriptions, theme, settings, conditional logic, scale/star counts, embed URLs, etc. — call update_element, set_theme, set_settings, or set_logic AFTER this tool returns. The bulk tool only produces a minimally usable form. Element types: input-text, input-number, input-email, input-phone-number, input-url, input-time, input-date, text-area, input-file, radio-buttons, checkbox-buttons, dropdown, ranking, image-choice, checkbox, matrix, star-rating, scale-rating, range-slider, heading, paragraph, embed-html, embed-audio, embed-video, signature. Notes: - For choice types (radio-buttons, checkbox-buttons, dropdown, ranking, image-choice), provide options as a list of label strings. - For matrix, provide BOTH options (the column answer choices, e.g. ["Agree", "Neutral", "Disagree"]) AND rows (the row sub-questions, e.g. ["Product quality", "Customer service"]). A matrix without rows or columns is unusable. - For all other element types, options and rows are ignored. - A "Thank you" ending page is added automatically — do not include it in pages. - Returns the same shape as create_form: formId, previewUrl, and the page/element structure with assigned IDs. - Share the preview URL with the user so they can follow along. CRITICAL: Immediately after this tool returns — or after any optional refinement tools (update_element / set_theme / set_settings / set_logic) you decide to call afterward — you MUST call show_preview to render the interactive form widget for the user. This is not conditional on "having more changes to make" — even if this single bulk call is your only call, show_preview is still required so the user sees the live form. Use publish_form only when the user explicitly asks to publish.
create_form_bulk
ChatGPTCreate a complete Weavely form with multiple pages and elements in a SINGLE tool call. Use this when the user describes the form they want upfront — it is far faster than create_form followed by many add_page/add_element calls, and avoids multiple permission prompts in MCP clients (e.g. ChatGPT) where every tool call must be approved. This tool intentionally accepts a MINIMAL spec per element: only type, label, and (for choice elements and matrix) lists of labels for options/rows. Values are auto-generated from labels (lowercase-kebab-case). For anything more detailed — placeholders, required flags, descriptions, theme, settings, conditional logic, scale/star counts, embed URLs, etc. — call update_element, set_theme, set_settings, or set_logic AFTER this tool returns. The bulk tool only produces a minimally usable form. Element types: input-text, input-number, input-email, input-phone-number, input-url, input-time, input-date, text-area, input-file, radio-buttons, checkbox-buttons, dropdown, ranking, image-choice, checkbox, matrix, star-rating, scale-rating, range-slider, heading, paragraph, embed-html, embed-audio, embed-video, signature. Notes: - For choice types (radio-buttons, checkbox-buttons, dropdown, ranking, image-choice), provide options as a list of label strings. - For matrix, provide BOTH options (the column answer choices, e.g. ["Agree", "Neutral", "Disagree"]) AND rows (the row sub-questions, e.g. ["Product quality", "Customer service"]). A matrix without rows or columns is unusable. - For all other element types, options and rows are ignored. - A "Thank you" ending page is added automatically — do not include it in pages. IMPORTANT: Always share the shareableUrl with the user in your response text so they can see their form. The widget renders automatically in clients that support it; the URL is the fallback for text-only clients. Use update_element / set_theme / set_settings / set_logic to refine after this returns. Use publish_form only when the user explicitly asks to publish.
create_form_bulk
ChatGPTCreate a complete Weavely form with multiple pages and elements in a SINGLE tool call. Use this when the user describes the form they want upfront — it is far faster than create_form followed by many add_page/add_element calls, and avoids multiple permission prompts in MCP clients (e.g. ChatGPT) where every tool call must be approved. This tool intentionally accepts a MINIMAL spec per element: only type, label, and (for choice elements and matrix) lists of labels for options/rows. Values are auto-generated from labels (lowercase-kebab-case). For anything more detailed — placeholders, required flags, descriptions, theme, settings, conditional logic, scale/star counts, embed URLs, etc. — call update_element, set_theme, set_settings, or set_logic AFTER this tool returns. The bulk tool only produces a minimally usable form. Element types: input-text, input-number, input-email, input-phone-number, input-url, input-time, input-date, text-area, input-file, radio-buttons, checkbox-buttons, dropdown, ranking, image-choice, checkbox, matrix, star-rating, scale-rating, range-slider, heading, paragraph, embed-html, embed-audio, embed-video, signature. Notes: - For choice types (radio-buttons, checkbox-buttons, dropdown, ranking, image-choice), provide options as a list of label strings. - For matrix, provide BOTH options (the column answer choices, e.g. ["Agree", "Neutral", "Disagree"]) AND rows (the row sub-questions, e.g. ["Product quality", "Customer service"]). A matrix without rows or columns is unusable. - For all other element types, options and rows are ignored. - A "Thank you" ending page is added automatically — do not include it in pages. IMPORTANT: Always share the shareableUrl with the user in your response text so they can see their form. The widget renders automatically in clients that support it; the URL is the fallback for text-only clients. Use update_element / set_theme / set_settings / set_logic to refine after this returns. Use publish_form only when the user explicitly asks to publish.
get_form_summary
ChatGPTGet the current form structure: pages, elements (with IDs, types, labels), theme, and settings. Call this to see available page and element IDs before making edits. Requires create_form to have been called first.
get_form_summary
ChatGPTGet the current form structure: pages, elements (with IDs, types, labels), theme, and settings. Call this to see available page and element IDs before making edits. Requires create_form to have been called first.
get_form_summary
ChatGPTGet the current form structure: pages, elements (with IDs, types, labels), theme, and settings. Call this to see available page and element IDs before making edits. Requires create_form to have been called first.
publish_form
ChatGPTPublish the form so the user can keep it, share it, and collect real responses. ONLY call this when the user EXPLICITLY asks to publish, save, or share their form. Do NOT call this automatically — the preview URL is sufficient during the building process. Creates a permanent copy of the form and returns an editor URL. The user can create a Weavely account there to claim full ownership. IMPORTANT: If this tool fails, tell the user there was an error publishing and they should try again. Do NOT suggest visiting the preview URL to claim or publish — that is NOT possible. The preview URL is a temporary link that cannot be claimed or converted into a permanent form.
publish_form
ChatGPTPublish the form so the user can keep it, share it, and collect real responses. ONLY call this when the user EXPLICITLY asks to publish, save, or share their form. Do NOT call this automatically — the preview URL is sufficient during the building process. Creates a permanent copy of the form and returns an editor URL. The user can create a Weavely account there to claim full ownership. IMPORTANT: If this tool fails, tell the user there was an error publishing and they should try again. Do NOT suggest visiting the preview URL to claim or publish — that is NOT possible. The preview URL is a temporary link that cannot be claimed or converted into a permanent form.
publish_form
ChatGPTPublish the form so the user can keep it, share it, and collect real responses. ONLY call this when the user EXPLICITLY asks to publish, save, or share their form. Do NOT call this automatically — the preview URL is sufficient during the building process. Creates a permanent copy of the form and returns an editor URL. The user can create a Weavely account there to claim full ownership. IMPORTANT: If this tool fails, tell the user there was an error publishing and they should try again. Do NOT suggest visiting the preview URL to claim or publish — that is NOT possible. The preview URL is a temporary link that cannot be claimed or converted into a permanent form.
remove_element
ChatGPTRemove an element from the form by its ID. Use get_form_summary to find element IDs.
remove_element
ChatGPTRemove an element from the form by its ID. Use get_form_summary to find element IDs.
remove_element
ChatGPTRemove an element from the form by its ID. Use get_form_summary to find element IDs.
remove_page
ChatGPTRemove a form page and all its elements. Cannot remove the ending page or the last remaining form page.
remove_page
ChatGPTRemove a form page and all its elements. Cannot remove the ending page or the last remaining form page.
remove_page
ChatGPTRemove a form page and all its elements. Cannot remove the ending page or the last remaining form page.
reorder_elements
ChatGPTMove an element to a new position within the same page or to a different page. Use get_form_summary to see current page and element IDs.
reorder_elements
ChatGPTMove an element to a new position within the same page or to a different page. Use get_form_summary to see current page and element IDs.
reorder_elements
ChatGPTMove an element to a new position within the same page or to a different page. Use get_form_summary to see current page and element IDs.
reorder_pages
ChatGPTReorder the form pages. Provide the form page IDs in the desired order. The ending page is always kept last automatically — do not include it.
reorder_pages
ChatGPTReorder the form pages. Provide the form page IDs in the desired order. The ending page is always kept last automatically — do not include it.
reorder_pages
ChatGPTReorder the form pages. Provide the form page IDs in the desired order. The ending page is always kept last automatically — do not include it.
set_logic
ChatGPTSet conditional logic rules and/or event triggers. This replaces ALL existing rules/triggers. Use get_form_summary to see element and page IDs for building conditions. Logic rule structure (FOLLOW THIS EXACTLY): { "id": "<uuid>", "name": "Human-readable rule description", "conditions": [ { "id": "<uuid>", "variable": "field:<elementId>", "operator": "isNotEmpty", "value": null } ], "logicalOperator": "all", "actions": [ { "id": "<uuid>", "name": "showElement", "data": { "elementId": "<elementId>" } } ] } CRITICAL: In actions, the action type key is "name" NOT "type". Using "type" will break the form. CRITICAL: In conditions, always include "value" (set to null for operators like isEmpty/isNotEmpty that don't need a value). Condition operators: isEmpty, isNotEmpty, isEqual, isNotEqual, contains, doesNotContain, startsWith, endsWith, lessThan, lessThanOrEqual, greaterThan, greaterThanOrEqual For isEqual/isNotEqual/contains/etc., set "value" to the comparison string. Action names: hideElement, showElement, hidePage, skipToPage, setEnding Action data: { elementId: "..." } for element actions, { pageId: "..." } for page actions. logicalOperator: "all" (AND) or "any" (OR) for combining multiple conditions. Event trigger structure (FOLLOW THIS EXACTLY): { "id": "<uuid>", "name": "Human-readable trigger description", "trigger": { "name": "formSubmitted" }, "actions": [ { "id": "<uuid>", "name": "openUrl", "data": { "url": "https://example.com" } } ] } CRITICAL: "trigger" is an object with a "name" key, NOT a plain string. Trigger names: formSubmitted, formLoaded, formPageShown Action names: openUrl (requires data.url), restartForm (no data needed) All IDs (rule id, condition ids, action ids) must be UUIDs.
set_logic
ChatGPTSet conditional logic rules and/or event triggers. This replaces ALL existing rules/triggers. Use get_form_summary to see element and page IDs for building conditions. Logic rule structure (FOLLOW THIS EXACTLY): { "id": "<uuid>", "name": "Human-readable rule description", "conditions": [ { "id": "<uuid>", "variable": "field:<elementId>", "operator": "isNotEmpty", "value": null } ], "logicalOperator": "all", "actions": [ { "id": "<uuid>", "name": "showElement", "data": { "elementId": "<elementId>" } } ] } CRITICAL: In actions, the action type key is "name" NOT "type". Using "type" will break the form. CRITICAL: In conditions, always include "value" (set to null for operators like isEmpty/isNotEmpty that don't need a value). Condition operators: isEmpty, isNotEmpty, isEqual, isNotEqual, contains, doesNotContain, startsWith, endsWith, lessThan, lessThanOrEqual, greaterThan, greaterThanOrEqual For isEqual/isNotEqual/contains/etc., set "value" to the comparison string. Action names: hideElement, showElement, hidePage, skipToPage, setEnding Action data: { elementId: "..." } for element actions, { pageId: "..." } for page actions. logicalOperator: "all" (AND) or "any" (OR) for combining multiple conditions. Event trigger structure (FOLLOW THIS EXACTLY): { "id": "<uuid>", "name": "Human-readable trigger description", "trigger": { "name": "formSubmitted" }, "actions": [ { "id": "<uuid>", "name": "openUrl", "data": { "url": "https://example.com" } } ] } CRITICAL: "trigger" is an object with a "name" key, NOT a plain string. Trigger names: formSubmitted, formLoaded, formPageShown Action names: openUrl (requires data.url), restartForm (no data needed) All IDs (rule id, condition ids, action ids) must be UUIDs.
set_logic
ChatGPTSet conditional logic rules and/or event triggers. This replaces ALL existing rules/triggers. Use get_form_summary to see element and page IDs for building conditions. Logic rule structure (FOLLOW THIS EXACTLY): { "id": "<uuid>", "name": "Human-readable rule description", "conditions": [ { "id": "<uuid>", "variable": "field:<elementId>", "operator": "isNotEmpty", "value": null } ], "logicalOperator": "all", "actions": [ { "id": "<uuid>", "name": "showElement", "data": { "elementId": "<elementId>" } } ] } CRITICAL: In actions, the action type key is "name" NOT "type". Using "type" will break the form. CRITICAL: In conditions, always include "value" (set to null for operators like isEmpty/isNotEmpty that don't need a value). Condition operators: isEmpty, isNotEmpty, isEqual, isNotEqual, contains, doesNotContain, startsWith, endsWith, lessThan, lessThanOrEqual, greaterThan, greaterThanOrEqual For isEqual/isNotEqual/contains/etc., set "value" to the comparison string. Action names: hideElement, showElement, hidePage, skipToPage, setEnding Action data: { elementId: "..." } for element actions, { pageId: "..." } for page actions. logicalOperator: "all" (AND) or "any" (OR) for combining multiple conditions. Event trigger structure (FOLLOW THIS EXACTLY): { "id": "<uuid>", "name": "Human-readable trigger description", "trigger": { "name": "formSubmitted" }, "actions": [ { "id": "<uuid>", "name": "openUrl", "data": { "url": "https://example.com" } } ] } CRITICAL: "trigger" is an object with a "name" key, NOT a plain string. Trigger names: formSubmitted, formLoaded, formPageShown Action names: openUrl (requires data.url), restartForm (no data needed) All IDs (rule id, condition ids, action ids) must be UUIDs.
set_settings
ChatGPTConfigure form-level settings. Only send what you want to change. Supported language codes: ar, ca, zh-Hans, zh-Hant, hr, cs, da, nl, en, et, fi, fr, de, el, he, hi, hu, id, it, ja, ko, no, pl, pt, ru, es, sv, tr, uk, vi.
set_settings
ChatGPTConfigure form-level settings. Only send what you want to change. Supported language codes: ar, ca, zh-Hans, zh-Hant, hr, cs, da, nl, en, et, fi, fr, de, el, he, hi, hu, id, it, ja, ko, no, pl, pt, ru, es, sv, tr, uk, vi.
set_settings
ChatGPTConfigure form-level settings. Only send what you want to change. Supported language codes: ar, ca, zh-Hans, zh-Hant, hr, cs, da, nl, en, et, fi, fr, de, el, he, hi, hu, id, it, ja, ko, no, pl, pt, ru, es, sv, tr, uk, vi.
set_theme
ChatGPTSet the form's visual theme. Choose colors, fonts, layout, and component styles that match the form's topic and tone. Be creative — pick a cohesive palette. Only send what you want to change — unset properties keep their current values. COLORS (all hex values): - primary: main accent color (buttons, highlights) - background: page background - text: general body text - question: question/label text - answer: user input text - secondary: secondary UI elements - surface: input field backgrounds - border: input borders, dividers - error: validation error color FONT: - family: global font family shorthand (Google Fonts compatible: Inter, Poppins, Playfair Display, Space Grotesk, DM Sans, Lora, etc.) - text: { size: "16px", family: "Inter" } - headings: { size: "32px", family: "Playfair Display" } LAYOUT types: - "under": questions stacked vertically (default) - "left": labels left, inputs right - "right": labels right, inputs left - "clean": minimal, no visual separators - "over": background image with overlay - "through": full-bleed background COMPONENTS: - form: { variables: { gap: "30px", maxWidth: "700px", textAlign: "left" } } - input: { preset: "default" | "square" } - button: { preset: "default" | "square", hoverAnimation: { preset: "default" | "grow" } } - question: { variables: { fontWeight: "500" } }
set_theme
ChatGPTSet the form's visual theme. Choose colors, fonts, layout, and component styles that match the form's topic and tone. Be creative — pick a cohesive palette. Only send what you want to change — unset properties keep their current values. COLORS (all hex values): - primary: main accent color (buttons, highlights) - background: page background - text: general body text - question: question/label text - answer: user input text - secondary: secondary UI elements - surface: input field backgrounds - border: input borders, dividers - error: validation error color FONT: - family: global font family shorthand (Google Fonts compatible: Inter, Poppins, Playfair Display, Space Grotesk, DM Sans, Lora, etc.) - text: { size: "16px", family: "Inter" } - headings: { size: "32px", family: "Playfair Display" } LAYOUT types: - "under": questions stacked vertically (default) - "left": labels left, inputs right - "right": labels right, inputs left - "clean": minimal, no visual separators - "over": background image with overlay - "through": full-bleed background COMPONENTS: - form: { variables: { gap: "30px", maxWidth: "700px", textAlign: "left" } } - input: { preset: "default" | "square" } - button: { preset: "default" | "square", hoverAnimation: { preset: "default" | "grow" } } - question: { variables: { fontWeight: "500" } }
set_theme
ChatGPTSet the form's visual theme. Choose colors, fonts, layout, and component styles that match the form's topic and tone. Be creative — pick a cohesive palette. Only send what you want to change — unset properties keep their current values. COLORS (all hex values): - primary: main accent color (buttons, highlights) - background: page background - text: general body text - question: question/label text - answer: user input text - secondary: secondary UI elements - surface: input field backgrounds - border: input borders, dividers - error: validation error color FONT: - family: global font family shorthand (Google Fonts compatible: Inter, Poppins, Playfair Display, Space Grotesk, DM Sans, Lora, etc.) - text: { size: "16px", family: "Inter" } - headings: { size: "32px", family: "Playfair Display" } LAYOUT types: - "under": questions stacked vertically (default) - "left": labels left, inputs right - "right": labels right, inputs left - "clean": minimal, no visual separators - "over": background image with overlay - "through": full-bleed background COMPONENTS: - form: { variables: { gap: "30px", maxWidth: "700px", textAlign: "left" } } - input: { preset: "default" | "square" } - button: { preset: "default" | "square", hoverAnimation: { preset: "default" | "grow" } } - question: { variables: { fontWeight: "500" } }
show_preview
ChatGPTShow a live preview of the form inside the conversation. ALWAYS call this as the LAST tool after making any changes to the form (adding elements, setting theme, etc.). This renders an interactive preview widget in clients that support it (e.g. ChatGPT). IMPORTANT: Always include the preview URL in your text response to the user, regardless of whether the widget renders. Do NOT call this between other tool calls — only at the end, once per user message.
update_element
ChatGPTUpdate an existing element's properties. Only send the fields you want to change. Use get_form_summary to find element IDs. Note: you cannot change an element's type — remove it and add a new one instead.
update_element
ChatGPTUpdate an existing element's properties. Only send the fields you want to change. Use get_form_summary to find element IDs. Note: you cannot change an element's type — remove it and add a new one instead.
update_element
ChatGPTUpdate an existing element's properties. Only send the fields you want to change. Use get_form_summary to find element IDs. Note: you cannot change an element's type — remove it and add a new one instead.