MCP Server · Tools Reference

Brieform MCP Tools Reference

Parameters, return values, and example prompts for every tool in the Brieform MCP server.

create_form

Create form

Create a new draft form. Pass a full structured form definition for precise control, or pass a natural language prompt and Brieform generates the structure for you. The form starts as a draft and is not publicly accessible until you call publish_form.

Parameters

formobject

Full form definition: title, description, fields (with types, labels, options, conditional logic), theme, steps, successMessage, redirectUrl. Preferred — gives you precise control with no AI cost.

promptstring

Natural language description of the form. Used only when form is not provided. Brieform's AI generates the structure.

Returns

form_id, title, status ("draft"), field_count, preview_url (signed, 24h), summary.

Notes

At least one of form or prompt is required. Prompt mode counts against the monthly AI generation quota (20 on Free, unlimited on Pro); structured form mode is unlimited. Field types: text, email, tel, textarea, select, radio, checkbox, rating, date, number, url, password, gdpr.

Example prompts

›“Create a contact form with name, email, and message”
›“Build a 5-question customer feedback survey”
›“Make a job application form with resume upload and cover letter fields”
create_form_from_brief

Create form from brief

Create a pre-devis intake form from a pasted client brief / RFQ. Generates gap-filling fields and tags the form as from_brief.

Parameters

briefstringrequired

Client brief / RFQ / email paste (verbatim preferred).

introContextstring

Optional intro shown above the intake.

formobject

Optional pre-built form structure; skips AI generation when provided.

Returns

Same shape as create_form, plus brief provenance.

Notes

Pro plan (specialist tool). Free-plan users get a QUOTA_EXCEEDED error.

Example prompts

›“Turn this client email into an intake form”
›“Build a pre-devis questionnaire from this RFQ”
analyze_brief

Analyze brief

Analyze a client brief for known facts and gaps before building an intake form.

Parameters

briefstringrequired

Client brief text to analyze.

Returns

intro_summary, detected_schemas, known_facts, gaps.

Notes

Pro plan (specialist tool). Free-plan users get a QUOTA_EXCEEDED error.

Example prompts

›“What is missing from this client brief before I build a form?”
update_form

Update form

Modify an existing form. Structured mode (preferred): fetch the form with get_form, apply your changes, and send the full updated structure — this gives precise, reliable results. Prompt mode (fallback): describe the change in natural language; Brieform's AI applies it using the current form as context.

Parameters

form_idstringrequired

ID of the form to update.

formobject

Full updated form structure. PUT semantics: replaces all fields, theme, and settings. Include each field's id from get_form to preserve response history.

promptstring

Natural language description of the change (e.g. "add a budget dropdown"). Used only when form is not provided.

Returns

form_id, title, status, field_count, preview_url, summary. summary includes a warning if the form was live when updated.

Notes

If the form is currently published, changes go live immediately. The returned summary includes a warning. Use structured mode for precise edits — prompt mode may inadvertently change unrelated fields.

Example prompts

›“Add a phone number field to my contact form”
›“Make the message field optional in my feedback form”
›“Rename my form to "Q2 Customer Survey"”
get_form

Get form

Fetch the complete structure and metadata of a form. Use this before updating a form in structured mode so you have the current field IDs and configuration.

Parameters

form_idstringrequired

ID of the form to fetch.

Returns

Full form definition including form_id, title, description, fields (with ids), theme, steps, status, public_url (if published), preview_url, response_count.

Example prompts

›“Show me what fields are in my contact form”
›“What's the current structure of my pricing inquiry form?”
list_forms

List forms

List all forms belonging to the authenticated user. Filter by status, search by title, and paginate through large collections.

Parameters

status"draft" | "published"

Filter by form status. Omit to return all.

searchstring

Case-insensitive title search.

limitnumber

Results per page. Default 20, max 100.

cursorstring

Pagination cursor from the previous response's next_cursor.

Returns

forms[] (each with form_id, title, status, field_count, response_count, public_url if published), next_cursor, total.

Example prompts

›“Show me all my published forms”
›“List my draft forms”
›“Do I have a form called "Event RSVP"?”
publish_form

Publish form

Make a form publicly accessible. A URL-friendly slug is auto-generated from the form title if you don't provide one. Idempotent — calling it on an already-published form returns the existing URL.

Parameters

form_idstringrequired

ID of the form to publish.

slugstring

Custom URL slug (e.g. "my-contact-form" → brieform.app/f/my-contact-form). Auto-generated if omitted.

regenerate_slugboolean

Force a new slug even if the form is already published.

Returns

form_id, status ("published"), slug, public_url, share_url.

Example prompts

›“Publish my contact form”
›“Publish my survey and give me the link to share”
›“Publish my form at the slug "q2-feedback"”
unpublish_form

Unpublish form

Take a form offline. The form returns to draft status and is no longer accessible at its public URL. All responses are preserved.

Parameters

form_idstringrequired

ID of the form to unpublish.

Returns

form_id, status ("draft").

Example prompts

›“Take my feedback form offline”
›“Unpublish my pricing inquiry form — I need to update it”
set_form_theme

Set form theme

Change the visual theme of a form. Three modes: apply a named preset (fastest, no AI cost), pass a full custom theme object, or describe the look you want in natural language.

Parameters

form_idstringrequired

ID of the form to retheme.

preset_idstring

Named preset: modern-blue, slate-professional, vibrant-green, elegant-violet, warm-rose, sunset-orange, corporate-neutral, minimal-stone.

themeobject

Full custom theme object with primaryColor, backgroundColor, textColor, fontFamily, borderRadius.

promptstring

Natural language theme description (e.g. "dark background, orange accent"). Brieform's AI generates the theme.

Returns

form_id, title, theme_summary, preview_url.

Notes

Pass exactly one of preset_id, theme, or prompt. Prompt mode counts against the monthly AI generation quota (20 on Free, unlimited on Pro).

Example prompts

›“Apply the dark slate theme to my contact form”
›“Give my survey a warm rose theme”
›“Make my form look minimal and professional — light grey background”
get_responses

Get responses

Fetch submissions for a form. For large datasets or when exporting to another tool (Notion, Google Sheets, etc.), use format: "csv_url" to get a signed download link instead of inline JSON — this avoids filling your context window. For file uploads in json mode, set include_download_urls to mint short-lived signed URLs (capped at 50 per page), or call get_upload_url for one file.

Parameters

form_idstringrequired

ID of the form.

limitnumber

Responses per page. Default 50, max 200.

cursorstring

ISO timestamp cursor from previous response's next_cursor for pagination.

sincestring (ISO datetime)

Return only responses submitted at or after this time.

format"json" | "csv_url"

json: inline data. csv_url: returns a signed URL (1h TTL) to a CSV file. Recommended for 50+ responses.

include_download_urlsboolean

json only. When true, mint signed download_url (~15 min TTL) on each uploaded file in the returned page. Prefer false unless needed. Cap 50 per page.

Returns

responses[] (each with response_id, submitted_at, fields keyed by label), next_cursor, total, csv_url (if csv_url format). When include_download_urls, also download_urls_minted / download_urls_skipped.

Example prompts

›“Show me the latest responses to my contact form”
›“How many people filled out my survey this week?”
›“Give me a CSV of all my job application form responses”
›“Summarize the feedback from my product survey”
›“Get the latest applications and include download links for the resumes”
get_upload_url

Get upload download URL

Mint a short-lived (~15 min) signed download URL for one completed file upload. Use when the user asks to download or open a file from a submission. Requires form_id and upload_object_id from get_responses field values (uploadObjectId).

Parameters

form_idstringrequired

Form ID that owns the upload.

upload_object_idstringrequired

Upload object id from get_responses field values (uploadObjectId).

Returns

download_url, expires_in (seconds), expires_at, upload_object_id, filename, mime_type, byte_size, field_id, response_id.

Notes

Ownership-checked via the form owner. Never returns a public object URL. Fetch or hand the URL to the user before it expires.

Example prompts

›“Download the resume from the latest job application”
›“Open the PDF the lead uploaded on my intake form”
duplicate_form

Duplicate form

Create a copy of an existing form. The duplicate is created as a draft with all fields, theme, and settings copied. It does not copy existing responses.

Parameters

form_idstringrequired

ID of the form to duplicate.

new_titlestring

Title for the new form. Defaults to "Copy of [original title]".

Returns

Same shape as create_form: form_id, title, status ("draft"), field_count, preview_url, summary.

Example prompts

›“Duplicate my contact form and call the copy "Lead Capture"”
›“Make a copy of my Q1 survey for Q2”
delete_form

Delete form

Permanently delete a form and all its responses. This is irreversible. Requires confirm: true as a safety gate.

Parameters

form_idstringrequired

ID of the form to delete.

confirmtruerequired

Must be exactly true. Safety gate — deletion is permanent.

Returns

deleted (true), form_id.

Notes

All responses are deleted with the form. Export responses with get_responses before deleting if you want to keep them.

Example prompts

›“Delete my old contact form — I don't need it anymore”
›“Remove the test form I created yesterday”
get_form_analytics

Get form analytics

Return view, submission, and conversion metrics for a form over the chosen period. Includes a daily breakdown, top traffic sources, and a step-by-step funnel for multi-step forms. Use when the user asks how their form is performing.

Parameters

form_idstringrequired

ID of the form to fetch analytics for.

period"7d" | "30d" | "90d"

Time window. Defaults to "30d".

Returns

form_id, period, total_views, total_submissions, conversion_rate (0..1), daily[] (date/views/submissions), top_referrers[] (source/count, up to 10), funnel[] (step_id/step_title/step_order/viewed/completed/drop_off_pct) or null for single-step forms.

Notes

Available on every plan.

Example prompts

›“How is my contact form doing this month?”
›“Where is the traffic to my survey coming from?”
›“Show me where people are dropping off in my application form”
get_form_share_assets

Get form share assets

Return everything needed to share a form in one call: public URL, signed preview URL, iframe embed snippet, social preview image, and a scannable QR code (PNG data URI). Drafts return nulls for the public-only assets — the preview URL still works for the owner.

Parameters

form_idstringrequired

ID of the form to fetch share assets for.

qr_sizenumber

QR code dimensions in pixels (square). Default 256, range 128..1024.

Returns

form_id, title, status, public_url (null if draft), preview_url, embed_iframe, og_image_url (null if draft), qr_png_data_uri (null if draft).

Notes

QR codes are only generated for published forms (drafts have no public URL to encode).

Example prompts

›“How do I share my contact form?”
›“Give me a QR code for my event RSVP form”
›“Get the embed snippet for my pricing inquiry form”

Start using the MCP server

Free account. 60 seconds to connect. Works with Claude, ChatGPT, and more.

No credit card · Works with Claude, ChatGPT, Cursor