Connect your AI to a form backend MCP server with one command
FormThunder's MCP server gives Claude Code, Cursor and other agents 48 tools to create forms, write the code into your project, match emails to your brand and run real tests. Install it with one command. It's included on every plan, so an agent can finish the setup before you've paid anything.
Updated
Install it
Pick the one that matches your client. The server needs a key: log in with npx formthunder login, or set FORMTHUNDER_API_KEY.
Claude Code
claude mcp add formthunder -- npx -y formthunder mcpRun the server yourself
npx formthunder mcpHosted endpoint
Streamable HTTP, stateless, with a bearer key.
claude mcp add --transport http formthunder https://formthunder.com/api/mcp \
--header "Authorization: Bearer ft_live_..."Cursor and other clients
{
"mcpServers": {
"formthunder": {
"command": "npx",
"args": ["-y", "formthunder", "mcp"],
"env": { "FORMTHUNDER_API_KEY": "ft_live_..." }
}
}
}Keep this file out of git if it holds a key.
Want the whole run first? Read how to let Claude Code set up a contact form with MCP.
Things you can ask for
Plain sentences work. The server tells the agent the right order of tools for each job.
- Add a contact form to this site that emails hello@example.com. Test it when you're done.
- Read https://example.com and make our FormThunder emails match the site's branding.
- Why didn't last night's form submission reach Slack? Fix it and resend it.
- Send every submission from the quote form to this webhook, and show me how to verify the signature.
- Create a client account for Harbour Dental, add a contact form to their site and match their brand.
- Move this site's forms off Web3Forms. Keep the field names and test each one.
All 48 tools
The server also ships two prompts: setup_contact_form and match_website_branding. Agency keys can pass account_id on any tool to work inside a client's account.
Account
- whoami
- Shows the account behind the key: kind, plan, limits, usage and role.
- get_usage
- Shows submissions used this month against the plan's limit.
Forms
- list_forms
- Lists forms, so the agent reuses one before creating a duplicate.
- create_form
- Creates a form that emails its verified recipients.
- get_form
- Returns one form with every setting.
- update_form
- Changes any setting: recipients, subject, redirect, theme, spam, integrations.
- delete_form
- Deletes a form. The agent is told to confirm with you first.
- get_snippet
- Returns form code for html, react, nextjs, vue, svelte or astro with the key filled in.
- test_form
- Runs a real test submission and returns each delivery's status.
- check_form_on_site
- Fetches your live page and reports whether the form is wired up, with a fix for each failure.
Submissions
- list_submissions
- Lists submissions, newest first. Pro.
- get_submission
- Returns a submission with channel, status, attempts and last error for each delivery. Pro.
- create_submission
- Creates a submission from code, with the same deliveries as a website post. Pro.
- resend_deliveries
- Re-queues a submission's failed deliveries.
Brand kit and themes
- extract_brand_from_website
- Reads a live site and works out its logo, colours, fonts and radius.
- get_brand
- Reads the brand kit.
- set_brand
- Saves the brand kit. Built-in themes pick it up at once.
- list_themes
- Lists the built-in email themes.
Email templates
- list_templates
- Lists saved templates.
- get_template
- Returns one template with its HTML.
- create_template
- Saves a custom HTML template. Pro.
- update_template
- Changes a saved template.
- delete_template
- Deletes a saved template.
- preview_template
- Renders a template with sample data and returns warnings. Sends nothing.
- send_test_template
- Sends one test email to an address you own.
- generate_template
- Writes an HTML template from your brand kit and an optional URL.
- list_template_variables
- Lists every variable a template can use.
Linked emails
- list_linked_emails
- Lists linked addresses and whether each is verified.
- add_linked_email
- Links an address and emails it a verification link.
- remove_linked_email
- Removes a linked address.
Agency clients
- list_clients
- Lists client accounts. Pass an id as account_id on any tool to work inside that account.
- create_client
- Creates a free client account, with an optional invitation.
- get_client
- Returns a client's plan, who pays and contact details.
- update_client
- Changes a client's name or contact email.
- delete_client
- Deletes a client account and its forms.
- upgrade_client
- Upgrades a client to Pro and adds $5/mo to your bill.
- downgrade_client
- Moves a client back to Free and removes the $5/mo line.
- invite_to_client
- Invites someone to a client account.
- get_client_billing
- Shows the retainer you charge this client through your Stripe.
- set_client_billing
- Sets up a recurring retainer, paid by checkout link or emailed invoice.
- list_client_invoices
- Lists one-off invoices sent to a client.
- create_client_invoice
- Emails a client a one-off invoice from the agency's Stripe account.
- void_client_invoice
- Voids an open invoice.
- cancel_client_billing
- Cancels a client's retainer.
Keys and audit
- list_api_keys
- Lists API keys. Secrets aren't shown.
- create_api_key
- Creates a key for CI or a server. The secret is shown once.
- revoke_api_key
- Revokes a key immediately.
- get_audit_log
- Shows what changed and which person or key changed it.
Or use the CLI
The same package is a command-line tool, for you, for CI, and for agents with a terminal and no MCP. Any command takes --json.
npx formthunder login
npx formthunder init
npx formthunder brand pull https://example.com
npx formthunder test YOUR_FORM_ID
npx formthunder check YOUR_FORM_ID --url https://example.com/contactSee the full CLI reference and the REST API.
Files written for machines to read
Point an agent at these if you'd rather not install anything.
- /llms.txt indexes every page.
- /llms-full.txt has the docs as Markdown.
- /openapi.json describes the REST API.
Questions
What is an MCP server for forms?
MCP, the Model Context Protocol, is a standard way for AI tools to call outside services. FormThunder's MCP server gives an agent tools to create forms, write the code, set the branding and run tests, so it can finish the setup without you opening a dashboard.
Should I use the local server or the hosted one?
Use npx formthunder mcp if your client can launch a local command, as Claude Code and Cursor can. Use the hosted endpoint at /api/mcp if your client only connects to remote servers. Both offer the same tools.
Can the agent spend my money?
Tools that cost money or delete data tell the agent to confirm with you first, and most MCP clients also ask before running a tool. Upgrading a client is the one tool that adds to your bill, at $5 a month.
Does this work on the free plan?
Yes. MCP, the CLI, the API and the brand kit are on every plan. Tools that use a Pro feature return an error with a hint explaining the upgrade.
What if my AI tool doesn't support MCP?
If it can run a terminal command, it can use the CLI. Every command accepts --json. For anything else, the REST API has an OpenAPI description at /openapi.json.
Connect your AI and let it build your first form
The free plan covers 250 submissions a month, with MCP, the CLI and the brand kit included.