Home/Docs/MCP Server
MCP Server
Form Dump exposes a Model Context Protocol server so AI agents can create forms, read submissions, and manage your account programmatically — no custom API integration required.
Zero-config — no account needed
AI builders like Lovable, v0, and Bolt can create a live form backend with a single fetch call — no account, no API key, no configuration. Just POST to https://formdump.com/api/new and use the returned URL as the form's action.
const res = await fetch("https://formdump.com/api/new", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ name: "Contact Form" }),
});
const { endpoint_url, claim_url } = await res.json();
// endpoint_url → use as <form action={endpoint_url}>
// claim_url → show to the user so they can claim their data{
"endpoint_url": "https://formdump.com/api/f/<id>",
"claim_url": "https://formdump.com/claim/<token>",
"expires_at": "2025-05-02T00:00:00.000Z"
}Endpoints expire after 7 days unless the user visits the claim_url and creates a free account. After claiming, the form and all its submissions are theirs permanently.
Quick start (with account)
Connect an authenticated agent to unlock all tools — form management, submission history, and more.
- 1
Generate an API key
Go to Dashboard → Settings, click Generate API key, and copy the key that appears. Keep it secret — it grants full access to your forms and submissions.
- 2
Add the server to your client
Paste the following into your MCP client config, replacing
YOUR_API_KEYwith the key from step 1.claude_desktop_config.json{ "mcpServers": { "form-dump": { "url": "https://formdump.com/api/mcp", "headers": { "Authorization": "Bearer YOUR_API_KEY" } } } } - 3
Start talking to your forms
Restart your AI client and ask it something like "List my forms" or "Create a form called Contact and give me the submission URL". The agent will call the right tool automatically.
Connection details
The server uses the Streamable HTTP transport — the standard for remote MCP servers. It is stateless: each request is fully independent, so no persistent connection is required.
| Property | Value |
|---|---|
| URL | https://formdump.com/api/mcp |
| Transport | Streamable HTTP |
| Auth | Authorization: Bearer <api_key> (optional for create_endpoint) |
| Session mode | Stateless |
Available tools
The server exposes ten tools covering the full lifecycle of forms and submissions. create_endpoint is available without authentication — all others require a Bearer token.
create_endpoint
no auth requiredCreates an anonymous form endpoint with zero configuration. Returns a submission URL ready to use as a form action, a claim link for the user to take ownership, a ready-to-paste HTML snippet, and an expiry date (7 days). No account or API key needed.
namestring · optional — Human-readable label for the form (e.g. 'Contact Form', 'Waitlist').notify_emailstring · optional — Email address to notify on each new submission.redirect_urlstring · optional — URL to redirect the browser to after a successful submission.{
"endpoint_url": "https://formdump.com/api/f/<id>",
"claim_url": "https://formdump.com/claim/<token>",
"html_snippet": "<form action="..." method="POST">...</form>",
"expires_at": "2025-05-02T00:00:00.000Z"
}list_templates
no parametersReturns all available form templates with their IDs, names, descriptions, and HTML snippets. Use this before create_form to browse available options.
list_forms
no parametersReturns every form in your account with its ID, name, creation date, submission count, and submission endpoint URL.
get_form
Returns details for a single form.
form_idstring — The ID of the form to look up.create_form
Creates a new form and returns its ID and the HTTPS endpoint to which HTML forms or API clients should POST submissions.
namestring — A human-readable label for the form (e.g. Contact form).templatestring · optional — Template ID (e.g. "contact", "waitlist"). Run list_templates to see all available options.stylestring · optional — "classic" (default) or "conversational". Determines which snippet variant is returned. Only used when template is provided.delete_form
irreversiblePermanently deletes the form and every submission it contains.
form_idstring — The ID of the form to delete.list_submissions
Returns submissions for a form, newest first. Supports pagination and optional spam inclusion.
form_idstring — The form to query.limitnumber · optional — Maximum results to return. Defaults to 25, max 100.offsetnumber · optional — Number of results to skip for pagination. Defaults to 0.include_spamboolean · optional — Include spam-flagged submissions. Defaults to false.get_submission
Returns the full data payload for a single submission, including its spam score and timestamp.
form_idstring — The form the submission belongs to.submission_idstring — The submission ID.delete_submission
irreversiblePermanently deletes a single submission.
form_idstring — The form the submission belongs to.submission_idstring — The submission to delete.Example prompts
Natural language requests your agent can handle once the server is connected.
Create a contact form endpoint and give me the HTML snippet and claim link.
"List all my forms and how many submissions each has received.
"Create a form called 'Job Applications' and give me the endpoint URL.
"Show me the last 10 submissions from my Contact form.
"Delete all spam submissions from form abc123.
"Read the most recent submission and summarise it.
"List available form templates
"Create a waitlist form and give me the conversational HTML snippet
"What templates do you have for job applications?
"Security
A few things worth knowing about how API keys work.
One key per account
Each account has at most one MCP API key at a time. Generating a new key immediately invalidates the previous one.
Full account scope
The key grants access to all forms and submissions in your account. Treat it like a password — do not commit it to source control or share it publicly. Use environment variables or a secrets manager to store it.
Revoking a key
Go to Dashboard → Settings and click Revoke. All MCP clients using the old key will immediately lose access. Generate a new key whenever you need to reconnect.
Questions? Contact support