update_form
ActiveTool of mcp-server-dashform
declared in 1.0.0
Update a form's configuration. Only include the fields you want to change under `form` — omitted fields are left untouched.
Parameters schema
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id",
"form"
],
"properties": {
"id": {
"type": "string",
"description": "The form ID to update"
},
"form": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Unique form identifier"
},
"name": {
"type": "string",
"description": "Form name/title"
},
"tone": {
"type": "string",
"description": "Conversational tone (e.g. professional, friendly, casual)"
},
"type": {
"enum": [
"structured",
"dynamic"
],
"type": "string",
"description": "Form type: structured (Logic Funnel with explicit steps) or dynamic (AI Funnel with adaptive conversation)"
},
"steps": {
"type": "array",
"items": {
"type": "object",
"required": [
"key",
"title",
"description",
"config"
],
"properties": {
"key": {
"type": "string",
"description": "Unique step identifier"
},
"title": {
"type": "string",
"description": "Step title or question text"
},
"config": {
"oneOf": [
{
"type": "object",
"required": [
"type",
"ctaText",
"redirectUrl"
],
"properties": {
"type": {
"type": "string",
"const": "start",
"description": "Step type"
},
"ctaText": {
"type": "string",
"description": "Call-to-action button text on the welcome screen"
},
"redirectUrl": {
"type": "string",
"description": "URL to redirect to instead of starting the form"
}
},
"description": "Configuration for the welcome/start step"
},
{
"type": "object",
"required": [
"type",
"required"
],
"properties": {
"type": {
"type": "string",
"const": "open-ended",
"description": "Step type"
},
"required": {
"type": "boolean",
"description": "Whether an answer is required"
}
},
"description": "Configuration for an open-ended question step"
},
{
"type": "object",
"required": [
"type",
"required",
"options"
],
"properties": {
"type": {
"type": "string",
"const": "single-choice",
"description": "Step type"
},
"options": {
"type": "array",
"items": {
"type": "string"
},
"description": "List of selectable options"
},
"required": {
"type": "boolean",
"description": "Whether an answer is required"
}
},
"description": "Configuration for a single-choice question step"
},
{
"type": "object",
"required": [
"type",
"required",
"options"
],
"properties": {
"type": {
"type": "string",
"const": "multiple-choice",
"description": "Step type"
},
"options": {
"type": "array",
"items": {
"type": "string"
},
"description": "List of selectable options"
},
"required": {
"type": "boolean",
"description": "Whether an answer is required"
}
},
"description": "Configuration for a multiple-choice question step"
},
{
"type": "object",
"required": [
"type",
"required"
],
"properties": {
"type": {
"type": "string",
"const": "rating",
"description": "Step type"
},
"required": {
"type": "boolean",
"description": "Whether an answer is required"
}
},
"description": "Configuration for a rating question step"
},
{
"type": "object",
"required": [
"type",
"required"
],
"properties": {
"type": {
"type": "string",
"const": "email",
"description": "Step type"
},
"required": {
"type": "boolean",
"description": "Whether an answer is required"
}
},
"description": "Configuration for an email question step"
},
{
"type": "object",
"required": [
"type",
"required"
],
"properties": {
"type": {
"type": "string",
"const": "phone",
"description": "Step type"
},
"required": {
"type": "boolean",
"description": "Whether an answer is required"
}
},
"description": "Configuration for a phone question step"
},
{
"type": "object",
"required": [
"type",
"required"
],
"properties": {
"type": {
"type": "string",
"const": "date",
"description": "Step type"
},
"required": {
"type": "boolean",
"description": "Whether an answer is required"
}
},
"description": "Configuration for a date question step"
},
{
"type": "object",
"required": [
"type",
"required"
],
"properties": {
"type": {
"type": "string",
"const": "scale",
"description": "Step type"
},
"required": {
"type": "boolean",
"description": "Whether an answer is required"
}
},
"description": "Configuration for a scale question step"
},
{
"type": "object",
"required": [
"type"
],
"properties": {
"max": {
"type": "number"
},
"min": {
"type": "number"
},
"type": {
"type": "string",
"const": "number",
"description": "Step type"
},
"required": {
"type": "boolean",
"default": false
}
},
"description": "Configuration for a finite number question step"
},
{
"type": "object",
"required": [
"type"
],
"properties": {
"type": {
"type": "string",
"const": "dropdown",
"description": "Step type"
},
"options": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
},
"default": []
},
"required": {
"type": "boolean",
"default": false
}
},
"description": "Configuration for a dropdown question step"
},
{
"type": "object",
"required": [
"type"
],
"properties": {
"type": {
"type": "string",
"const": "yes-no",
"description": "Step type"
},
"required": {
"type": "boolean",
"default": false
}
},
"description": "Configuration for a Yes/No question step"
},
{
"type": "object",
"required": [
"type"
],
"properties": {
"type": {
"type": "string",
"const": "statement",
"description": "Step type"
},
"required": {
"type": "boolean",
"const": false,
"default": false
},
"buttonText": {
"type": "string",
"default": "Continue",
"minLength": 1
}
},
"description": "Configuration for a display-only statement step"
},
{
"type": "object",
"required": [
"type"
],
"properties": {
"type": {
"type": "string",
"const": "legal",
"description": "Step type"
},
"required": {
"type": "boolean",
"const": true,
"default": true
},
"acceptanceText": {
"type": "string",
"default": "I accept",
"minLength": 1
}
},
"description": "Configuration for a mandatory legal-consent step"
},
{
"type": "object",
"required": [
"type"
],
"properties": {
"type": {
"type": "string",
"const": "nps",
"description": "Step type"
},
"lowLabel": {
"type": "string",
"default": "Not at all likely"
},
"required": {
"type": "boolean",
"default": false
},
"highLabel": {
"type": "string",
"default": "Extremely likely"
}
},
"description": "Configuration for a 0-10 Net Promoter Score question step"
},
{
"type": "object",
"required": [
"type"
],
"properties": {
"type": {
"type": "string",
"const": "picture-choice",
"description": "Step type"
},
"choices": {
"type": "array",
"items": {
"type": "object",
"required": [
"label",
"imageUrl"
],
"properties": {
"label": {
"type": "string",
"minLength": 1
},
"imageUrl": {
"type": "string",
"format": "uri"
}
}
},
"default": []
},
"multiple": {
"type": "boolean",
"default": false
},
"required": {
"type": "boolean",
"default": false
}
},
"description": "Configuration for a single- or multiple-picture choice step"
},
{
"type": "object",
"required": [
"type"
],
"properties": {
"type": {
"type": "string",
"const": "ranking",
"description": "Step type"
},
"options": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
},
"default": []
},
"required": {
"type": "boolean",
"default": false
}
},
"description": "Configuration for a ranking question step"
},
{
"type": "object",
"required": [
"type"
],
"properties": {
"type": {
"type": "string",
"const": "website",
"description": "Step type"
},
"required": {
"type": "boolean",
"default": false
}
},
"description": "Configuration for an HTTP(S) website question step"
},
{
"type": "object",
"required": [
"type"
],
"properties": {
"type": {
"type": "string",
"const": "file-upload",
"description": "Step type"
},
"required": {
"type": "boolean",
"default": false
},
"maxFileSizeBytes": {
"type": "integer",
"default": 10000000,
"maximum": 9007199254740991,
"exclusiveMinimum": 0
},
"allowedContentTypes": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
},
"default": [
"application/pdf",
"image/jpeg",
"image/png"
],
"minItems": 1
}
},
"description": "Configuration for a respondent file-upload question step"
},
{
"type": "object",
"required": [
"type",
"ctaText",
"ctaUrl"
],
"properties": {
"type": {
"type": "string",
"const": "end",
"description": "Step type"
},
"links": {
"type": "array",
"items": {
"type": "object",
"properties": {
"url": {
"type": "string",
"default": ""
},
"label": {
"type": "string",
"default": ""
}
},
"description": "An additional end-screen link (label + destination URL)"
},
"default": [],
"maxItems": 4,
"description": "Additional external links shown as buttons below the primary CTA (ctaText/ctaUrl). Up to 4 extra links (5 buttons total)."
},
"ctaUrl": {
"type": "string",
"description": "URL the end screen CTA button links to"
},
"ctaText": {
"type": "string",
"description": "Call-to-action button text on the end screen"
},
"embedUrl": {
"type": "string",
"default": "",
"description": "Optional URL to embed as an iframe on the end screen — typically a Calendly / Cal.com / Acuity booking widget. Empty string means no embed. End-screen only; not supported on other step types."
}
},
"description": "Configuration for the completion/end step"
}
],
"description": "Step type configuration"
},
"branches": {
"type": "array",
"items": {
"type": "object",
"required": [
"targetStepKey",
"groups"
],
"properties": {
"groups": {
"type": "array",
"items": {
"type": "array",
"items": {
"type": "object",
"required": [
"stepKey",
"operator",
"negate"
],
"properties": {
"value": {
"type": "string",
"description": "Value to compare against (required unless operator is 'exists')"
},
"negate": {
"type": "boolean",
"description": "Whether to invert the result of the comparison"
},
"stepKey": {
"type": "string",
"description": "Key of the step whose answer to evaluate"
},
"operator": {
"enum": [
"equals",
"contains",
"startsWith",
"endsWith",
"regex",
"exists",
"greaterThan",
"greaterThanOrEqual",
"lessThan",
"lessThanOrEqual"
],
"type": "string",
"description": "Comparison operator applied to a branch condition"
}
},
"description": "Single condition evaluated against a previous step answer"
}
},
"description": "Condition groups; within a group all conditions must match (AND), any matching group triggers the branch (OR)"
},
"targetStepKey": {
"type": "string",
"description": "Key of the step to jump to when this branch matches; 'end' jumps to completion"
}
},
"description": "Conditional jump rule for routing between form steps"
},
"default": [],
"description": "Conditional jumps evaluated after this step; first matching branch wins"
},
"background": {
"anyOf": [
{
"type": "object",
"required": [
"position",
"opacity",
"config"
],
"properties": {
"config": {
"oneOf": [
{
"type": "object",
"required": [
"type",
"url"
],
"properties": {
"url": {
"type": "string",
"description": "Image URL"
},
"type": {
"type": "string",
"const": "image",
"description": "Background type"
}
},
"description": "Image background media configuration"
},
{
"type": "object",
"required": [
"type",
"url",
"previewImageUrl"
],
"properties": {
"url": {
"type": "string",
"description": "Video URL"
},
"type": {
"type": "string",
"const": "video",
"description": "Background type"
},
"previewImageUrl": {
"type": "string",
"description": "Preview image URL shown before video loads"
}
},
"description": "Video background media configuration"
}
],
"description": "Background media configuration (image or video)"
},
"opacity": {
"type": "number",
"description": "Background overlay opacity (0-100)"
},
"position": {
"enum": [
"left-half",
"right-half",
"left-partial",
"center",
"right-partial"
],
"type": "string",
"description": "Background positioning on the screen"
}
},
"description": "Background media asset with placement and opacity"
},
{
"type": "null"
}
],
"description": "Background to display on this step"
},
"description": {
"type": "string",
"description": "Additional context or instructions for the step"
}
},
"description": "Form step definition"
},
"description": "Ordered list of form steps (questions, start/end screens)"
},
"theme": {
"anyOf": [
{
"type": "object",
"required": [
"colorBackground",
"colorForeground",
"colorPrimary",
"colorButtonText",
"fontFamily",
"textSize",
"textAnimation",
"buttonRadius",
"buttonSize"
],
"properties": {
"textSize": {
"enum": [
"regular",
"medium"
],
"type": "string",
"description": "Text size for form content"
},
"buttonSize": {
"enum": [
"regular",
"medium",
"large"
],
"type": "string",
"description": "Button size preset"
},
"fontFamily": {
"enum": [
"sans",
"serif",
"mono",
"inter",
"merriweather",
"cabin",
"fira-sans",
"nunito",
"roboto",
"lato",
"raleway",
"crimson-pro",
"poppins",
"montserrat"
],
"type": "string",
"description": "Font family for the form"
},
"buttonRadius": {
"type": "number",
"description": "Button border radius in pixels"
},
"colorPrimary": {
"type": "string",
"description": "Primary accent color hex value"
},
"textAnimation": {
"enum": [
"typing",
"blur-reveal"
],
"type": "string",
"description": "Text entrance animation style"
},
"colorBackground": {
"type": "string",
"description": "Background color hex value (e.g. #ffffff)"
},
"colorButtonText": {
"type": "string",
"description": "Button text color hex value"
},
"colorForeground": {
"type": "string",
"description": "Foreground/text color hex value"
}
},
"description": "Visual theme configuration for a form"
},
{
"type": "null"
}
]
},
"status": {
"enum": [
"draft",
"published"
],
"type": "string",
"description": "Current publication status"
},
"userId": {
"type": "string",
"description": "ID of the user who created this form"
},
"scoring": {
"anyOf": [
{
"type": "object",
"properties": {
"isActive": {
"type": "boolean",
"default": false,
"description": "Whether the scoring criteria have been approved and replies should be scored"
},
"hotPrompt": {
"type": "string",
"default": "",
"description": "Natural-language description of what a hot lead looks like"
},
"coldPrompt": {
"type": "string",
"default": "",
"description": "Natural-language description of what a cold lead looks like"
},
"warmPrompt": {
"type": "string",
"default": "",
"description": "Natural-language description of what a warm lead looks like"
}
},
"description": "Lead scoring criteria for this form"
},
{
"type": "null"
}
]
},
"branding": {
"anyOf": [
{
"type": "object",
"required": [
"hideWatermark",
"logoUrl",
"logoLinkUrl"
],
"properties": {
"logoUrl": {
"type": "string",
"description": "URL of the custom logo image"
},
"logoLinkUrl": {
"type": "string",
"description": "URL the logo links to when clicked"
},
"hideWatermark": {
"type": "boolean",
"description": "Whether to hide the Dashform watermark (Pro/Business)"
}
},
"description": "Custom branding settings for a form"
},
{
"type": "null"
}
]
},
"business": {
"anyOf": [
{
"type": "object",
"required": [
"bookingLink",
"businessName",
"description",
"industry",
"languages",
"services"
],
"properties": {
"industry": {
"type": "string",
"description": "Industry or sector (e.g. Healthcare, SaaS)"
},
"location": {
"anyOf": [
{
"type": "object",
"required": [
"address",
"area",
"city"
],
"properties": {
"area": {
"type": "string",
"description": "Area or neighborhood"
},
"city": {
"type": "string",
"description": "City name"
},
"address": {
"type": "string",
"description": "Street address"
}
},
"description": "Business location details"
},
{
"type": "null"
}
]
},
"services": {
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"description",
"category",
"duration"
],
"properties": {
"name": {
"type": "string",
"description": "Service name"
},
"category": {
"type": "string",
"description": "Service category"
},
"duration": {
"type": "string",
"description": "Service duration (e.g. 30 min, 1 hour)"
},
"priceRange": {
"anyOf": [
{
"type": "object",
"required": [
"currency",
"min",
"max"
],
"properties": {
"max": {
"type": "number",
"description": "Maximum price"
},
"min": {
"type": "number",
"description": "Minimum price"
},
"currency": {
"type": "string",
"description": "Currency code (e.g. USD, EUR)"
}
},
"description": "Price range for a business service"
},
{
"type": "null"
}
],
"description": "Price range for this service"
},
"description": {
"type": "string",
"description": "Service description"
}
},
"description": "Business service offering"
},
"description": "List of services offered"
},
"languages": {
"type": "array",
"items": {
"type": "string"
},
"description": "Languages the business supports"
},
"bookingLink": {
"type": "string",
"description": "URL for booking appointments"
},
"description": {
"type": "string",
"description": "Business description"
},
"businessName": {
"type": "string",
"description": "Business or company name"
}
},
"description": "Business context for AI funnels"
},
{
"type": "null"
}
]
},
"features": {
"anyOf": [
{
"type": "object",
"required": [
"supportVoice",
"supportEndScreen",
"supportAgent",
"supportMarketplace"
],
"properties": {
"supportAgent": {
"type": "boolean",
"description": "Whether AI agent mode is enabled"
},
"supportVoice": {
"type": "boolean",
"description": "Whether voice input is enabled"
},
"supportEndScreen": {
"type": "boolean",
"description": "Whether a custom end screen is enabled"
},
"supportMarketplace": {
"type": "boolean",
"description": "Whether the form is listed in the marketplace"
},
"supportAgentDiscoveryHint": {
"type": "boolean",
"default": true,
"description": "Whether the visible 'For AI agents' discovery disclosure is rendered on the hosted funnel page"
}
},
"description": "Feature flags for this form"
},
{
"type": "null"
}
]
},
"publicId": {
"type": "string",
"description": "Public-facing form identifier"
},
"snippets": {
"type": "array",
"items": {
"type": "string"
},
"description": "Concrete factual reference data for AI context (product specs, policies, pricing, hours, locations, rules). Do not include short topic summaries, form descriptions, interview instructions, question prompts, or generic filler; put short summary text in description instead."
},
"createdAt": {
"type": "string",
"description": "When the form was created (ISO 8601)"
},
"publicUrl": {
"type": "string",
"description": "Public URL where the form can be accessed"
},
"updatedAt": {
"type": "string",
"description": "When the form was last updated (ISO 8601)"
},
"templateId": {
"type": "string",
"description": "ID of the template this form was created from"
},
"backgrounds": {
"type": "array",
"items": {
"type": "object",
"required": [
"position",
"opacity",
"config"
],
"properties": {
"config": {
"oneOf": [
{
"type": "object",
"required": [
"type",
"url"
],
"properties": {
"url": {
"type": "string",
"description": "Image URL"
},
"type": {
"type": "string",
"const": "image",
"description": "Background type"
}
},
"description": "Image background media configuration"
},
{
"type": "object",
"required": [
"type",
"url",
"previewImageUrl"
],
"properties": {
"url": {
"type": "string",
"description": "Video URL"
},
"type": {
"type": "string",
"const": "video",
"description": "Background type"
},
"previewImageUrl": {
"type": "string",
"description": "Preview image URL shown before video loads"
}
},
"description": "Video background media configuration"
}
],
"description": "Background media configuration (image or video)"
},
"opacity": {
"type": "number",
"description": "Background overlay opacity (0-100)"
},
"position": {
"enum": [
"left-half",
"right-half",
"left-partial",
"center",
"right-partial"
],
"type": "string",
"description": "Background positioning on the screen"
}
},
"description": "Background media asset with placement and opacity"
},
"description": "Background media assets available in the form"
},
"defaultMode": {
"enum": [
"guided",
"conversational",
"voice"
],
"type": "string",
"description": "Default respondent experience mode: guided (step-by-step), conversational (chat), or voice"
},
"description": {
"type": "string",
"description": "Form description summarizing its purpose"
},
"repliesCount": {
"type": "number",
"description": "Total number of replies received"
},
"sourceLocale": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "BCP-47 locale string identifying the source language"
},
"translations": {
"anyOf": [
{
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "object",
"required": [
"name",
"description",
"steps"
],
"properties": {
"name": {
"type": "object",
"properties": {
"stale": {
"type": "boolean",
"default": false
},
"value": {
"type": "string",
"default": ""
},
"override": {
"type": "boolean",
"default": false
},
"sourceHash": {
"type": "string",
"default": ""
}
},
"description": "Single translated string with source-hash + stale + override"
},
"steps": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "object",
"required": [
"title",
"description",
"ctaText",
"options"
],
"properties": {
"title": {
"type": "object",
"properties": {
"stale": {
"type": "boolean",
"default": false
},
"value": {
"type": "string",
"default": ""
},
"override": {
"type": "boolean",
"default": false
},
"sourceHash": {
"type": "string",
"default": ""
}
},
"description": "Single translated string with source-hash + stale + override"
},
"ctaText": {
"anyOf": [
{
"type": "object",
"properties": {
"stale": {
"type": "boolean",
"default": false
},
"value": {
"type": "string",
"default": ""
},
"override": {
"type": "boolean",
"default": false
},
"sourceHash": {
"type": "string",
"default": ""
}
},
"description": "Single translated string with source-hash + stale + override"
},
{
"type": "null"
}
]
},
"options": {
"anyOf": [
{
"type": "array",
"items": {
"type": "object",
"properties": {
"stale": {
"type": "boolean",
"default": false
},
"value": {
"type": "string",
"default": ""
},
"override": {
"type": "boolean",
"default": false
},
"sourceHash": {
"type": "string",
"default": ""
}
},
"description": "Single translated string with source-hash + stale + override"
}
},
{
"type": "null"
}
]
},
"description": {
"type": "object",
"properties": {
"stale": {
"type": "boolean",
"default": false
},
"value": {
"type": "string",
"default": ""
},
"override": {
"type": "boolean",
"default": false
},
"sourceHash": {
"type": "string",
"default": ""
}
},
"description": "Single translated string with source-hash + stale + override"
}
},
"description": "Per-step translations keyed by step.key"
}
},
"description": {
"type": "object",
"properties": {
"stale": {
"type": "boolean",
"default": false
},
"value": {
"type": "string",
"default": ""
},
"override": {
"type": "boolean",
"default": false
},
"sourceHash": {
"type": "string",
"default": ""
}
},
"description": "Single translated string with source-hash + stale + override"
}
},
"description": "Per-locale translation aggregate for a form"
}
},
{
"type": "null"
}
],
"description": "All translations for a form, keyed by BCP-47 locale string"
},
"organizationId": {
"type": "string",
"description": "ID of the organization that owns this form"
},
"runtimeVersion": {
"enum": [
"legacy-ai",
"logic-engine"
],
"type": "string",
"description": "Runtime engine version"
},
"lastPublishedAt": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "When the form was last published (ISO 8601)"
},
"supportedLocales": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
],
"description": "BCP-47 locale strings for non-source translations available on this form"
},
"marketplaceCategory": {
"type": "string",
"description": "Category for marketplace listing"
},
"maxFollowUpQuestions": {
"type": "number",
"description": "Maximum number of AI follow-up questions per response"
}
}
}
}
}No endpoints wrapped at confidence ≥ 0.70.
Parent server
mcp-server-dashform
https://github.com/makloai/mcp-server-dashform
2/7 registries