# ffforms Agent-first web forms. Point your agent at the ffforms MCP server and it can sign up, create forms, and read submissions for you. No dashboard, nothing to click through. ## 1. Add the MCP server to your agent ``` URL: https://ffforms.com/mcp Transport: Streamable HTTP Auth: OAuth (a one-time email sign-in link), or an API key (see below) ``` Claude Code: ``` claude mcp add --transport http ffforms https://ffforms.com/mcp ``` Cursor / Claude Desktop / other MCP clients: ```json { "mcpServers": { "ffforms": { "url": "https://ffforms.com/mcp" } } } ``` On first use your agent connects and you sign in once via an emailed link, which creates (or signs into) your account. After that the agent works on its own. ### Alternative: Scalar-hosted MCP (bring your own key) Prefer an API key over the OAuth sign-in? Scalar hosts an MCP server generated from the ffforms OpenAPI document. It uses **pass-through auth**: you send your own ffforms API key and Scalar forwards it to the ffforms API, so every user stays on their own account. Get a key from `POST https://ffforms.com/v1/signup` (see REST, below). ``` URL: https://mcp.scalar.com/mcp/a176b74a-bd09-4610-8b1d-4baf774f1e99 Transport: Streamable HTTP Auth: Authorization: Bearer ``` Claude Code (replace ${apiKey} with your ffforms API key): ``` claude mcp add --transport http ffforms-api 'https://mcp.scalar.com/mcp/a176b74a-bd09-4610-8b1d-4baf774f1e99' --header 'Authorization: Bearer ${apiKey}' ``` ## 2. Ask your agent to build a form Once connected, your agent has these tools: ``` create_form create a form (title + fields) list_forms list your forms get_form read a form update_form change a form's title/description/status add_field add one field (optionally positioned) update_field change one field by key (e.g. make it required) remove_field remove one field by key reorder_fields reorder the fields delete_form delete a form list_submissions read a form's submissions get_submission read one submission get_public_url get the shareable link to hand out ``` Try: > Create a published contact form with name, email and a message field, then give me the link to share. > Show me the latest submissions to my contact form. ## 3. Share the form, collect submissions Every form gets a URL like `https://ffforms.com/f/{id}`. Share it, and people see a real form and fill it in. Submissions land in your account and are readable only through the API or MCP (there is no submissions dashboard). ## Field types `text`, `textarea`, `email`, `url`, `number`, `select`, `multiselect`, `checkbox`, `radio`, `date` ## Prefer REST? (fully programmatic, no email step) ``` # sign up: returns an API key (shown once); send it as: Authorization: Bearer curl -X POST https://ffforms.com/v1/signup -H 'content-type: application/json' \ -d '{"email":"you@example.com"}' # lost the key? recover by email: mails a link that mints a fresh key curl -X POST https://ffforms.com/v1/recover -H 'content-type: application/json' \ -d '{"email":"you@example.com"}' ``` - API Reference: https://ffforms.com/docs - Docs: https://docs.ffforms.com - LLM guide: https://ffforms.com/llms.txt