Skip to main content
Free - the MCP server is not plan-gated. Any account can use it.
Formpaste ships a remote MCP server - this is the real AI agent-native integration path. There is no separate REST “Forms API” or “Provisioning API”; an agent that wants to create or manage forms programmatically does it through these MCP tools, the same way a human does it through the dashboard.

Endpoint

Stateless remote MCP over Streamable HTTP - no session/SSE handshake to manage. Each request carries its own auth and gets a self-contained response.

Auth

Every request needs an account API token (fpat_…) as a standard Bearer header:
This is the only Bearer token in Formpaste. It is unrelated to a form’s access_key (used by POST /submit, not by /mcp) - see Access key vs. API token if you’re unsure which one you need. Mint a token from the dashboard under Settings → API & MCP - see API tokens for details, including the fact that it’s shown exactly once. Tokens can be scoped: a full token can use every tool, a setup token can do everything except read submissions (list_submissions). See API tokens. A missing or revoked token doesn’t get a generic 401; the tool call returns an actionable MCP error:

Install (one command)

Formpaste is a remote server, so most MCP clients (Claude Code, Cursor, Claude Desktop) connect to it via mcp-remote rather than a local process. Add this to your client’s MCP config, swapping in your own token:
Restart your agent/client after saving the config. It should list formpaste as a connected MCP server with six tools available. For per-client instructions (Claude Code, Codex, Cursor, Claude Desktop, VS Code), see Install.

The six tools

Three of these - list_forms, get_form, and send_test_submission - let an agent verify its own work: discover ids, read back a form’s config, and prove it is receiving. That’s the entire tool surface. There’s no update_form, delete_form, or generic CRUD - those aren’t built. If you need to change a form’s destination, allowed domains, or other settings, do that in the dashboard.

What it’s for

The MCP server exists so an agent (Claude Code, Cursor, or anything else that speaks MCP) can complete a full “add a contact form to this site” task without you leaving your editor: it calls create_form, gets an access_key and a wired snippet back, pastes the snippet into your project, and, if you want it to check for replies later, calls list_submissions. See Cookbook prompts for ready-to-use prompts that drive this end to end. If you’d rather not install anything, the .env path works too: create the form yourself in the dashboard, put the access_key in .env, and prompt your agent to wire the snippet using it. No MCP connection required - see the .env-path prompts in the cookbook.

Install

Per-client setup for every MCP client.

create_form

Provision a form and get a wired snippet back.

list_forms

Discover form ids and confirm a form exists.

get_form

Read a form’s config to verify wiring.

send_test_submission

Prove a form is live with a test submission.

Troubleshooting

Fix connection, auth, and scope problems.