MCP server
Let Claude, Cursor and other MCP clients build forms, publish them and analyze responses, with the same permissions as your API key.
POST https://YOUR_HOST/api/mcp (Streamable HTTP, stateless). Auth: Authorization: Bearer ff_live_.... Create a key with only the scopes the agent needs.Claude Code
claude mcp add --transport http formflow https://YOUR_HOST/api/mcp \
--header "Authorization: Bearer $FORMFLOW_API_KEY"Claude Desktop and Cursor (stdio)
The stdio entry relays to your instance over HTTP, so it needs only the API key and URL.
{
"mcpServers": {
"formflow": {
"command": "npx",
"args": ["tsx", "/path/to/formflow/src/mcp/stdio.ts"],
"env": { "FORMFLOW_API_KEY": "ff_live_...", "FORMFLOW_URL": "https://YOUR_HOST" }
}
}
}Claude Desktop: claude_desktop_config.json. Cursor: .cursor/mcp.json (or the remote form { "url": "https://YOUR_HOST/api/mcp", "headers": { "Authorization": "Bearer ..." } }).
Tools
| Tool | Needs | Does |
|---|---|---|
list_workspaces | any | Workspaces this credential can act in. |
list_forms / get_form | form:read | Browse forms; read a draft with its revision and engine issues. |
create_form | form:write (+ai:use for prompt) | From a prompt, a template id or a full definition. |
update_form | form:write | Atomic batch of add/update/move/delete field, section, logic, theme, settings operations. |
publish_form | form:publish | Publish; on failure returns the analyzeDefinition issues. |
list_templates | form:read | Template catalog. |
list_question_bank | form:read | Curated ready-made questions. |
import_questions | form:write | SurveyMonkey, sheet header or question list to a definition. |
import_products_csv | form:write | Product CSV to product choices. |
search_stock_images | form:read | Stock photo search (needs UNSPLASH_ACCESS_KEY). |
list_themes / apply_theme | form:read / form:write | Presets and saved themes; apply with overrides. |
list_responses / get_response | submission:read | Filters, pagination, field projection. Sensitive fields omitted unless workspace:manage. |
get_form_analytics | analytics:read | Metrics, funnel, NPS/CSAT, single-question summary. |
summarize_responses | analytics:read + ai:use | AI analysis with caveats. |
create_export | submission:export | csv, json, xlsx or pdf; download URL when ready. |
get_share_links | form:read | Hosted URL, embed snippets, QR code URLs. |
get_triage / triage_responses | submission:read / form:write | Status, assignee and tags per response; bulk update of up to 500. Answers are never changed. |
get_version_history / compare_versions | form:read | Published versions with plain-language change summaries; diff of two versions or the draft. |
restore_version / undo_restore | form:write | Replace the draft with a version (old draft snapshotted); undo once. The live form is unchanged until publish_form. |
list_share_links / create_share_link / revoke_share_link | analytics:read (+submission:export for respondent mode) | Read-only results links. The URL is returned once, by create_share_link, and never repeated. |
list_approvals / get_approval | submission:read | Approval requests, stages and history. Links are never returned. Deciding is not exposed. |
resend_approval / cancel_approval | integration:manage | Re-email pending approvers; cancel a pending request. |
list_experiments / set_experiment_state | form:read / form:publish | A/B results with a small-sample verdict; start, stop or conclude a test. |
get_experiment_results / create_experiment | analytics:read / form:write | Full Bayesian and frequentist results; create a draft test (variants can be other forms). |
report_experiment_conversion | form:write | Report a downstream goal event for a user. |
explain_experiment / suggest_experiment_variants | analytics:read / form:read | AI summary and variant ideas from statistics only. |
list_analytics_destinations | integration:manage | PostHog, Amplitude, Mixpanel and Segment destinations. |
create_webhook / list_webhooks | webhook:manage | Secret is returned once. |
Resources and prompts
Resources: formflow://field-types (catalog with examples), formflow://schema/form-definition (JSON Schema), formflow://templates, formflow://forms/{formId}. Prompts: build_lead_gen_form, analyze_nps_results, create_feedback_survey, review_form_before_launch, weekly_responses_digest.
Security
Every tool call checks the key's scopes and role, is scoped to the key's workspace, and is audited as mcp.<tool> (no answers or secrets in the log). Browser requests need an allowed Origin (APP_URL or MCP_ALLOWED_ORIGINS). The same rate limit as the REST API applies. Respondent answers are untrusted data and the server tells agents not to follow instructions inside them.