Weavely AI Forms & Surveys
Weavely is an AI-native form builder.
What it can do
- Create Form: Create a new Weavely form. Returns a formId and a live preview URL. IMPORTANT: This MUST be the first tool you call — all other tools require the formId returned by this tool. IMPORTANT:
- Get Form Summary: Get 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_f
- Add Element: Add 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 pageI
What data it sees
Do you need an account
No: the server works without sign-in
Weavely is an AI-native form builder. This MCP server exposes 13 tools that cover the entire form-building lifecycle: create forms, add and update 25+ element types (text, rating, matrix, file upload, signature, and more), configure conditional logic, set themes, manage multi-step pages, and publish — all from natural language. The AI builds incrementally while a live preview URL updates in real time. When you're done, a single publish_form call returns an editor link to claim full ownership on the Weavely platform. No authentication required. After publishing, connect your form to Google Sheets, Zapier, n8n, HubSpot, Notion, and more.
How to connect
How to connect Weavely AI Forms & Surveys to Claude
The server address to paste into Claude settings:
https://weavely--florian.run.tools
- Open Claude (claude.ai or the desktop app).
- Go to Settings → Connectors.
- Click Add custom connector.
- Paste the server address copied below into Remote MCP server URL and click Add.
- In a chat, click + → Connectors and switch the new connector on.
Custom connectors are available on Free, Pro, Max, Team and Enterprise plans (Free is limited to one). On Team and Enterprise an organization Owner adds the connector first under Organization settings → Connectors.
Authorization
After you click Add, a sign-in window for the service opens. Sign in with your own account and approve access. Claude never sees your password.
How to connect Weavely AI Forms & Surveys to ChatGPT
The server address to paste into ChatGPT settings:
https://weavely--florian.run.tools
- Open ChatGPT in a browser (chatgpt.com). A Plus, Pro, Business, Enterprise or Edu plan is required.
- Turn on developer mode once: Settings → Apps → Advanced settings → Developer mode.
- Open Settings → Connectors and click Create.
- Fill in the form: Name (anything), Description (one line about what the service does), MCP server URL (copy it below).
- Under Authentication choose OAuth if the service requires sign-in, otherwise None. Click Create.
- In a new chat open + → Apps/Connectors and enable the connector.
OpenAI has renamed this section before (Connectors → Apps/Plugins). If the label differs, search settings for "developer mode". On Business/Enterprise workspaces an admin must allow custom connectors first.
Authorization
On first use ChatGPT opens the service's sign-in window. Sign in and approve access.
How to connect Weavely AI Forms & Surveys to Cursor
The server address to paste into Cursor settings:
https://weavely--florian.run.tools
Fastest: click Open in Cursor below and confirm the prompt.
Manually:
- In Cursor open Settings → Cursor Settings → MCP and click Add new global MCP server.
- Paste the JSON copied below into
~/.cursor/mcp.json(per project:.cursor/mcp.jsonin the repo root). - Save the file. The server appears in the MCP list; authorize it there if asked.
Authorization
If the service needs sign-in, an authorize button appears next to the server in the MCP list.
Server tool list (13)
Raw names from tools/list. Only developers need these.
| create_form | Create a new Weavely form. Returns a formId and a live preview URL. 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. Always share the preview URL with the user so they can follow along. 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. |
| get_form_summary | Get 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. |
| add_element | Add 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). |
| update_element | Update 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. |
| remove_element | Remove an element from the form by its ID. Use get_form_summary to find element IDs. |
| reorder_elements | Move 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. |
| add_page | Add 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. |
| remove_page | Remove a form page and all its elements. Cannot remove the ending page or the last remaining form page. |
| reorder_pages | Reorder 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_theme | Set 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_settings | Configure 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_logic | Set 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. |
| publish_form | Publish 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. |