{"name":"Makeform MCP Server","description":"Agent control plane for Makeform workspaces: create forms, inspect form configs, read submissions, export leads, and review analytics from coding tools and AI agents.","version":"2026-09-10.5","protocol":"mcp","transport":"streamable-http","endpoint":"https://mcp.makeform.ai","docs":"https://mcp.makeform.ai","auth":{"type":"bearer","header":"Authorization: Bearer <makeform_api_key>","env_var":"MAKEFORM_API_KEY","recommendation":"Create a Makeform API key for the workspace you want the agent to access. Keep it server-side and rotate it if it is exposed.","oauth2":{"protected_resource_metadata":"https://mcp.makeform.ai/.well-known/oauth-protected-resource","authorization_server":"https://njjuaaacyeukmwdijoad.supabase.co/auth/v1","scopes":["email","profile"],"note":"ChatGPT Apps should link a Makeform account through OAuth. Existing coding clients can continue to use Makeform API keys."}},"what_this_mcp_can_do":["Explain the canonical Makeform MCP workflow through get_workflow_guide without requiring an external skill.","Inspect the current workspace, plan tier, role, form count, and member count.","List forms and fetch a specific form configuration, status, public URL, field count, and submission count.","Generate a paste-ready Standard, Popup, Slider, or Fullpage embed package with optional saved static Hidden Fields for a published hosted form.","Discover, visibly preview, and bind compatible Makeform-managed image assets without publishing.","Create draft forms from natural language prompts.","Rename forms or update non-destructive form settings.","Propose and apply safe draft form config saves through the same checked-write contract as the public API.","Propose and apply AI-assisted draft edits through a token-bound two-step workflow.","Propose and publish forms through the shared Makeform publish validation pipeline.","Duplicate forms. Delete remains dashboard-only until MCP confirmation support exists.","List, summarize, chart, and export form submissions."],"available_tool_categories":[{"category":"start-here","tools":["get_workflow_guide"],"safety":"Read-only. Returns workflow paths, tool map, and safety rules for agents."},{"category":"workspace","tools":["get_workspace","open_makeform_app"],"safety":"Read-only workspace context or authenticated-app handoff for dashboard-only workflows; the handoff does not perform a dashboard action."},{"category":"forms read","tools":["list_forms","get_form","get_form_embed","get_form_config_schema"],"safety":"Read-only. Use before updates, analytics, submissions, or destructive actions."},{"category":"forms write","tools":["create_form","create_form_from_prompt","update_form","update_form_settings","propose_form_draft","apply_form_draft","propose_form_edit","apply_form_edit","publish_form","duplicate_form"],"safety":"Creates or changes draft/admin data. update_form is a direct guarded form-admin write: image_asset must be sent separately from name/config, never publishes, and preserves reusable storage. Propose/apply draft replacement, AI edit, and publish workflows are two-step."},{"category":"submissions","tools":["list_submissions","get_submission","export_submissions","get_form_stats"],"safety":"Read-only lead data access. Exports can contain respondent PII."},{"category":"analytics","tools":["get_analytics_summary","get_submission_trend"],"safety":"Read-only metrics for a selected form."}],"recommended_paths":{"first_run":["get_workflow_guide","get_workspace","list_forms"],"create_form":["get_form_config_schema","create_form","get_form"],"create_form_from_prompt":["create_form_from_prompt","get_form"],"inspect_form":["list_forms","get_form"],"discover_images":["list_forms","get_form"],"manage_images":["list_forms","get_form","update_form"],"update_form":["get_form","propose_form_draft","apply_form_draft","get_form"],"edit_form":["get_form","propose_form_edit","apply_form_edit","get_form"],"publish_form":["get_form","publish_form","publish_form","get_form"],"embed_form":["list_forms","get_form","get_form_embed"],"submissions":["list_forms","get_form_stats","list_submissions"],"export_submissions":["list_forms","export_submissions"],"analytics":["list_forms","get_analytics_summary","get_submission_trend"],"delete_form":["get_form","open_makeform_app"]},"minimal_config":{"codex_cli":"codex mcp add makeform --url https://mcp.makeform.ai --bearer-token-env-var MAKEFORM_API_KEY","mcp_json":{"mcpServers":{"makeform":{"type":"http","url":"https://mcp.makeform.ai","headers":{"Authorization":"Bearer ${MAKEFORM_API_KEY}"}}}}},"warnings":["Start with get_workflow_guide; it is the built-in replacement for an external skill.","Read with get_form before updating a form.","Use propose_form_draft for deterministic complete-config edits; it only returns a change plan, risk notes, draft_token, and proposed_config. It does not write to the database.","Use apply_form_draft only after user confirmation; apply rejects stale drafts and mismatched proposed_config.","Use propose_form_edit before apply_form_edit for Makeform-hosted AI edits; apply requires the exact proposed_config and edit_token returned by propose.","Call publish_form without confirmation before calling it again with confirm_publish=true and the reviewed publish_token; confirmation rejects stale drafts, changed live versions, and changed publish context.","Confirm-risk tools such as form.delete are not exposed through MCP until confirmation support exists.","Submission tools can expose lead PII; only export what the user asked for.","The canonical streamable HTTP endpoint is the bare MCP origin."],"sse":{"enabled":false,"reason":"SSE is disabled; use streamable HTTP."},"capabilities":{"tools":true}}