Form backend an agent runs end to end: provision forms, snippets, spam, signed webhooks.
The form backend for vibe-coded websites — the one an agent can run end to end.
Your agent built the site. Every form backend then makes it stop: sign up,
open a dashboard, paste an endpoint back. Furrow Forms
removes the handoff. Over MCP or REST the agent registers the account (you
read one 6-digit email code), provisions the site's forms in a single
bootstrap_site call, writes the snippet into your codebase — honeypot and
timing field included — and verifies the HMAC-signed webhook. No dashboard
in the loop.
Fetch furrowforms.com/ai and set up forms for this site.
Paste that into Claude Code, Cursor, or whatever built your site. That is the whole setup.
| Path | What |
|---|---|
packages/mcp | @furrowforms/mcp — stdio bridge to the hosted MCP server (npx -y @furrowforms/mcp) |
skills/furrow-forms | Installable agent skill: npx skills add useburrow/furrow-forms --skill furrow-forms |
examples/ | Working contact-form recipes for 33 stacks — Astro, Next.js, SvelteKit, Hugo, Lovable, Bolt, v0, Cursor, Claude Code, … |
server.json | Official MCP Registry entry |
AGENTS.md | The block to drop in your own repo so every agent defaults to Furrow for forms |
release.sh | ./release.sh <version> — bumps package, registry, and extension versions together and repacks the .mcpb |
Hosted, streamable HTTP (OAuth or bearer token):
{ "mcpServers": { "furrow-forms": { "url": "https://api.furrowforms.com/mcp",
"headers": { "Authorization": "Bearer frw_..." } } } }
Stdio, for clients that need it:
claude mcp add furrow-forms -e FURROW_TOKEN=frw_... -- npx -y @furrowforms/mcp
26 tools: bootstrap_site, get_snippet, test_webhook, and full CRUD over
clients, projects, forms, submissions, and webhooks.
POST /api/register mints a token without a human signup flow.bootstrap_site is idempotent; re-run it freely._gotcha honeypot, _ft timing field, server-side quarantine; Turnstile, domain allowlist, and rate limits at the project./ai.md, /llms.txt)MIT
Source-derived launch command. Check the maintainer’s required arguments and credentials before running:
npx -y @furrowforms/mcpMerge this template into ~/Library/Application Support/Claude/claude_desktop_config.json. Keep existing servers. Add any arguments, credentials, and permissions required by the maintainer; this template has not been install-tested.
{
"mcpServers": {
"com-furrowforms-furrow-forms": {
"command": "npx",
"args": [
"-y",
"@furrowforms/mcp"
]
}
}
}Restart Claude Desktop completely for changes to take effect. Confirm the server appears connected in the client’s tool list, then try a read-only example from its documentation.
Claude Desktop setup referencecom.furrowforms/furrow-forms works with any MCP-compatible client. Copy the config snippet from the Configuration section above and add it to the file shown for your client, then restart the application.
~/Library/Application Support/Claude/claude_desktop_config.jsonRestart Claude Desktop completely for changes to take effect.~/.cursor/mcp.jsonRestart Cursor for changes to take effect..vscode/mcp.jsonReload VS Code window for changes to take effect.~/.codeium/windsurf/mcp_config.jsonRestart Windsurf for changes to take effect..mcp.jsonSave at the project root, then start Claude Code in that project and review the MCP server approval prompt. Keep real credentials out of shared files.