Furrow Forms MCP server
online · 100% uptimecom.furrowforms/furrow-forms·v1.0.1·1 starsForm backend an agent runs end to end: provision forms, snippets, spam, signed webhooks.
1 stars56 downloads/wk
Reviews
Write oneNobody has reviewed Furrow Forms yet.
If you have run it, two minutes of your experience saves the next person an afternoon.
Furrow Forms tools (29, 9 write)
write = sends, deletes, buys or postsarchive_clientFreeUse to archive a client. Do not use this as a hard delete. There is no unarchive tool in v1.
archive_formFreeUse to archive a form so public submit returns 404. Do not use this as a hard delete.
archive_projectFreeUse to archive a website. Archived projects reject public submit. Do not use this as a hard delete. There is no unarchive tool in v1.
bootstrap_siteFreeUse this to stand up a client, one website (project), and its forms in a single call. Before calling, ask the human who should receive notification emails (notify_emails has no default; empty means nobody is emailed), thank-you page vs on-page message, and whether to add Turnstile — see furrow://docs/workflow. name/slug are the client; optional project_name/project_slug default to the same. Free accounts cannot create a fourth active project — call create_upgrade_link if bootstrap_site returns plan_limit. Operator tokens (all workspaces) must pass team_id from list_teams. Team-scoped tokens may omit team_id and cannot target another workspace. Idempotent on client, project, and form slugs. Site settings (domains, Turnstile, notify emails, webhook, email templates, uploads) live on the project. Email templates support {{project.name}}, {{project.slug}}, {{form.name}}, {{form.slug}}, {{count}} (1-based clean submissions on this form, including the current one), and any submission field such as {{name}} or {{email}}. Use a fallback with {{name | "New submission"}}. Missing fields render empty and never error. Do not pass HTML; Furrow renders one owned layout. Plans are capacity, not a feature ladder. Free: one workspace, 100 clean submissions/month pooled on the team, 3 active (non-archived) projects, 30-day submission retention, and email.footer_mode / branding.mode stay furrow (other values return plan_limit). Yearly ($199/year): extra workspaces, 10,000 submissions/month, unlimited projects, 730-day retention, branding.mode furrow | off | agency. Expansion packs are $99/year each and add 5,000 submissions/month on a yearly account. MCP, webhooks, snippets, inheritance, Turnstile, and email templates stay available on free. Spam, honeypot, and rejected posts do not count. Use create_upgrade_link to hand a human a Stripe Checkout (or Customer Portal) URL. Pass product=expansion on a yearly team to add a pack. Checkbox groups, select multiple, and other multi-value HTML fields must use a [] suffix on the name (name="services[]") or only the last checked value is stored. Put services[] on field_contract.name too. JSON/fetch should send a real array without brackets ({ "services": ["a", "b"] }) and must not use Object.fromEntries(formData) — use formData.getAll("services"). Single checkbox, select, or combobox: no brackets. File inputs use multipart POST (name="resume[]" for multiple). Enable uploads on the project first. Downloads are the project inbox at files_url, with the form slug as a folder — never put that URL in a public snippet. Do not use when you only need to patch an existing form — call update_form.
create_clientwrite actionFreeUse to add a client (company) by slug. Idempotent on slug unless strict is true. Operator tokens (all workspaces) must pass team_id from list_teams. Team-scoped tokens may omit team_id and cannot target another workspace. Prefer bootstrap_site when also creating a website and forms. Do not put Turnstile or webhooks on a client — those live on the project.
create_formwrite actionFreeUse to add a form under an existing project_id. Idempotent on slug unless strict is true. Overrides are nullable; omit them to inherit project notify emails, webhook, redirect, require_turnstile, and email templates. Pass email.subject / email.intro to override notification copy for this form only. Pass webhook_url_override to send this form to a different URL. Field contract labels (label) are used on notification emails. Checkbox groups, select multiple, and other multi-value HTML fields must use a [] suffix on the name (name="services[]") or only the last checked value is stored. Put services[] on field_contract.name too. JSON/fetch should send a real array without brackets ({ "services": ["a", "b"] }) and must not use Object.fromEntries(formData) — use formData.getAll("services"). Single checkbox, select, or combobox: no brackets. File inputs use multipart POST (name="resume[]" for multiple). Enable uploads on the project first. Downloads are the project inbox at files_url, with the form slug as a folder — never put that URL in a public snippet.
create_projectwrite actionFreeUse to add one website under an existing client_id. Idempotent on slug unless strict is true. Free accounts are limited to 3 active (non-archived) projects; yearly is unlimited. If create_project returns plan_limit, call create_upgrade_link and hand the human the Stripe URL. Prefer bootstrap_site when the client does not exist yet. Optional email sets notification templates (subject, from_name, intro, footer_mode, include_meta). Free accounts keep footer_mode furrow; other values return plan_limit. Set uploads_enabled on the project to accept files. Email templates support {{project.name}}, {{project.slug}}, {{form.name}}, {{form.slug}}, {{count}} (1-based clean submissions on this form, including the current one), and any submission field such as {{name}} or {{email}}. Use a fallback with {{name | "New submission"}}. Missing fields render empty and never error. Do not pass HTML; Furrow renders one owned layout. Plans are capacity, not a feature ladder. Free: one workspace, 100 clean submissions/month pooled on the team, 3 active (non-archived) projects, 30-day submission retention, and email.footer_mode / branding.mode stay furrow (other values return plan_limit). Yearly ($199/year): extra workspaces, 10,000 submissions/month, unlimited projects, 730-day retention, branding.mode furrow | off | agency. Expansion packs are $99/year each and add 5,000 submissions/month on a yearly account. MCP, webhooks, snippets, inheritance, Turnstile, and email templates stay available on free. Spam, honeypot, and rejected posts do not count. Use create_upgrade_link to hand a human a Stripe Checkout (or Customer Portal) URL. Pass product=expansion on a yearly team to add a pack. File inputs use multipart POST (name="resume[]" for multiple). Enable uploads on the project first. Downloads are the project inbox at files_url, with the form slug as a folder — never put that URL in a public snippet. Do not put Turnstile keys on a form.
create_upgrade_linkwrite actionFreeUse when a free team is blocked on the 3-project, 100-submission, or one-workspace limit, or when a human should upgrade to yearly ($199/year) so you can keep adding projects, workspaces, and storing new submissions. Returns a Stripe Checkout URL to hand the human. If the team is already yearly, omit product to get a Stripe Customer Portal URL, or pass product=expansion for a $99/year pack that adds 5,000 submissions/month. Do not change plan in the database — Stripe webhooks do that. Plans are capacity, not a feature ladder. Free: one workspace, 100 clean submissions/month pooled on the team, 3 active (non-archived) projects, 30-day submission retention, and email.footer_mode / branding.mode stay furrow (other values return plan_limit). Yearly ($199/year): extra workspaces, 10,000 submissions/month, unlimited projects, 730-day retention, branding.mode furrow | off | agency. Expansion packs are $99/year each and add 5,000 submissions/month on a yearly account. MCP, webhooks, snippets, inheritance, Turnstile, and email templates stay available on free. Spam, honeypot, and rejected posts do not count. Use create_upgrade_link to hand a human a Stripe Checkout (or Customer Portal) URL. Pass product=expansion on a yearly team to add a pack. Operator tokens (all workspaces) must pass team_id from list_teams. Team-scoped tokens may omit team_id and cannot target another workspace.
get_accountFreeUse to read the team's plan, usage this month, limits, expansion_packs, retention_days, branding, and AI spam filter (ai.typesafe_key_set, ai.notify_suspected_spam), and text alerts (sms.configured, provider, account_sid, from). The TypeSafe key and Twilio Auth Token are never returned. Plans are capacity, not a feature ladder. Free: one workspace, 100 clean submissions/month pooled on the team, 3 active (non-archived) projects, 30-day submission retention, and email.footer_mode / branding.mode stay furrow (other values return plan_limit). Yearly ($199/year): extra workspaces, 10,000 submissions/month, unlimited projects, 730-day retention, branding.mode furrow | off | agency. Expansion packs are $99/year each and add 5,000 submissions/month on a yearly account. MCP, webhooks, snippets, inheritance, Turnstile, and email templates stay available on free. Spam, honeypot, and rejected posts do not count. Use create_upgrade_link to hand a human a Stripe Checkout (or Customer Portal) URL. Pass product=expansion on a yearly team to add a pack. Operator tokens (all workspaces) must pass team_id from list_teams. Team-scoped tokens may omit team_id and cannot target another workspace. Do not use this to list projects — call list_projects.
get_clientFreeUse to inspect one client. Do not use to list that client's sites — call list_projects with client_id.
get_formFreeUse to read a form plus resolved and inherited settings, including resolved.email and resolved.uploads. files_url is the private inbox folder for this form under the project inbox (do not put it in a public snippet). Turnstile always inherits from the project (inherited.turnstile is true). Form webhook_url_override is nullable; null means inherit the project webhook. Forms may override email.subject and email.intro only. Do not use to generate embed code — call get_snippet.
get_projectFreeUse to inspect one website's settings, domains, webhook URL, email templates, upload policy, plan, usage this month, limits, retention_days, and branding. Returns stored values plus resolved.email. Secrets are never returned. Plans are capacity, not a feature ladder. Free: one workspace, 100 clean submissions/month pooled on the team, 3 active (non-archived) projects, 30-day submission retention, and email.footer_mode / branding.mode stay furrow (other values return plan_limit). Yearly ($199/year): extra workspaces, 10,000 submissions/month, unlimited projects, 730-day retention, branding.mode furrow | off | agency. Expansion packs are $99/year each and add 5,000 submissions/month on a yearly account. MCP, webhooks, snippets, inheritance, Turnstile, and email templates stay available on free. Spam, honeypot, and rejected posts do not count. Use create_upgrade_link to hand a human a Stripe Checkout (or Customer Portal) URL. Pass product=expansion on a yearly team to add a pack. Do not use to list forms — call list_forms.
get_snippetFreeUse after the form exists to get copy-paste html, astro, or next code that posts to /s/:publicKey. Do not invent a submit URL — this tool returns it. Snippets are single-value inputs; write checkbox groups and multi-selects yourself. Checkbox groups, select multiple, and other multi-value HTML fields must use a [] suffix on the name (name="services[]") or only the last checked value is stored. Put services[] on field_contract.name too. JSON/fetch should send a real array without brackets ({ "services": ["a", "b"] }) and must not use Object.fromEntries(formData) — use formData.getAll("services"). Single checkbox, select, or combobox: no brackets. File inputs use multipart POST (name="resume[]" for multiple). Enable uploads on the project first. Downloads are the project inbox at files_url, with the form slug as a folder — never put that URL in a public snippet. After dropping the snippet, add visitor-facing success UI: a thank-you page plus default_redirect_url for classic HTML POST, or an on-page message when using fetch/{ok:true}. Do not leave visitors looking at JSON. See furrow://docs/submit-success. Hardcode submit_url as returned; the public key is not a secret. Do not move it into .env / NEXT_PUBLIC_* / PUBLIC_* or ask the human to set environment variables. See furrow://docs/testing.
get_submissionFreeUse to read one stored submission by id, including file metadata and files_url (the form inbox). Do not use this for live submit tests — POST to /s/:publicKey instead. Do not expect signed bucket URLs — download from the inbox.
list_clientsFreeUse to browse clients (companies). Operator tokens (all workspaces) must pass team_id from list_teams. Team-scoped tokens may omit team_id and cannot target another workspace. Do not use to list websites — call list_projects with client_id. Archived clients are hidden unless status=all or archived.
list_formsFreeUse to list forms. Pass project_id for one website or client_id for one company (team is inferred). Otherwise Operator tokens (all workspaces) must pass team_id from list_teams. Team-scoped tokens may omit team_id and cannot target another workspace. Do not use to read resolved inheritance — call get_form.
list_projectsFreeUse to browse websites. Pass client_id to list one client's sites (team is inferred). Without client_id, Operator tokens (all workspaces) must pass team_id from list_teams. Team-scoped tokens may omit team_id and cannot target another workspace. Do not use to read one project's settings — call get_project. Archived projects are hidden unless status=all or archived.
list_submissionsFreeUse to inspect recent posts. Available on free and yearly. Pass project_id or form_id to infer the team; omit both and Operator tokens (all workspaces) must pass team_id from list_teams. Team-scoped tokens may omit team_id and cannot target another workspace. Free teams prune submissions after 30 days; yearly after 730 days. Do not use to read a single submission — call get_submission.
list_teamsFreeUse to see workspaces this token can act on. A team-scoped frw_ token returns that team only. An operator token or an MCP OAuth login returns every team you belong to — pass team_id on list_clients, create_client, and bootstrap_site. Creating another workspace is dashboard-only after signing in and requires a yearly plan; free accounts stay on one team. Do not use this to list clients — call list_clients.
move_clientFreeUse when the human asks to move a client (company) and all its projects, forms, submissions, and files into another workspace they own. Public keys, snippets, inbox links, and webhook secrets stay the same, so the live site needs no change. Needs an owner of both teams (dashboard session or operator token; team-scoped tokens cannot). Refused when the destination has a client with the same slug (pass slug), when a free destination would pass 3 projects, or when the client has text alert numbers and the destination has no Twilio. Confirm the destination team name with the human first. Do not use this to rename or archive.
rotate_project_inboxFreeUse when a project's private inbox URL may have leaked. Issues a new inbox key; every previously shared inbox link stops working immediately. get_project returns the new files_url.
test_smsFreeUse after setting notify_phones to send one test text to each of the project's numbers through the team's Twilio account. Returns per-number results with Twilio's error when one fails. Fails if the team has no Twilio account (update_account sms) or the project has no notify_phones. A successful result means Twilio accepted it; ask the human to confirm it arrived, since unregistered US senders are filtered by carriers after Twilio accepts. Error codes and fixes are in furrow://docs/text-alerts. Do not use this to test email or the webhook — call test_webhook for the webhook.
test_webhookFreeUse to POST a signed webhook.test event to the project's webhook URL. Available on free and yearly. Do not use this to inspect past deliveries — that is REST GET /api/projects/:id/webhook-deliveries. Fails if no webhook URL and secret are set.
update_accountwrite actionFreeUse to rename the workspace, set branding, configure the AI spam filter, or connect the team's own Twilio account for new-lead text alerts. Pass sms { account_sid, auth_token, from } to save Twilio (auth_token is write-only; omit it later to keep the saved one; sms: null disconnects). Numbers to text are notify_phones on the project. US senders must finish A2P 10DLC or toll-free verification in Twilio or carriers drop the texts. To set it up with a human who has never used Twilio, follow furrow://docs/text-alerts. Pass ai.typesafe_api_key to save this team's TypeSafe key (null clears it; the key is write-only). ai.notify_suspected_spam (default true) emails notify addresses with a Potential spam label for every spam catch — rule-based or Jev — except exact duplicates; set it false to silence both. Spam never sends a webhook. Free accounts keep branding.mode and email.footer_mode at furrow; asking for anything else returns plan_limit — tell the human the custom footer is a Yearly feature and offer create_upgrade_link. Yearly may set branding.mode to furrow, off, or agency (name + optional link + optional logo; Furrow keeps the layout, no raw HTML). Plans are capacity, not a feature ladder. Free: one workspace, 100 clean submissions/month pooled on the team, 3 active (non-archived) projects, 30-day submission retention, and email.footer_mode / branding.mode stay furrow (other values return plan_limit). Yearly ($199/year): extra workspaces, 10,000 submissions/month, unlimited projects, 730-day retention, branding.mode furrow | off | agency. Expansion packs are $99/year each and add 5,000 submissions/month on a yearly account. MCP, webhooks, snippets, inheritance, Turnstile, and email templates stay available on free. Spam, honeypot, and rejected posts do not count. Use create_upgrade_link to hand a human a Stripe Checkout (or Customer Portal) URL. Pass product=expansion on a yearly team to add a pack. Operator tokens (all workspaces) must pass team_id from list_teams. Team-scoped tokens may omit team_id and cannot target another workspace. Do not use this to change the plan — call create_upgrade_link.
update_clientwrite actionFreeUse to rename a client. Do not use this to change domains, Turnstile, or webhooks — call update_project.
update_formwrite actionFreeUse to patch form overrides. Pass null on an override to inherit again. Set email.subject or email.intro to override project notification copy for this form only; from_name, footer_mode, and include_meta stay on the project. Email templates support {{project.name}}, {{project.slug}}, {{form.name}}, {{form.slug}}, {{count}} (1-based clean submissions on this form, including the current one), and any submission field such as {{name}} or {{email}}. Use a fallback with {{name | "New submission"}}. Missing fields render empty and never error. Do not pass HTML; Furrow renders one owned layout. Set webhook_url_override to override the project webhook for this form. notify_cc_override / notify_bcc_override replace the project's copies ([] sends none). notify_phones_override replaces the project's text-alert numbers ([] silences texts for this form). Do not use this to change Turnstile keys — those live on the project. Checkbox groups, select multiple, and other multi-value HTML fields must use a [] suffix on the name (name="services[]") or only the last checked value is stored. Put services[] on field_contract.name too. JSON/fetch should send a real array without brackets ({ "services": ["a", "b"] }) and must not use Object.fromEntries(formData) — use formData.getAll("services"). Single checkbox, select, or combobox: no brackets. File inputs use multipart POST (name="resume[]" for multiple). Enable uploads on the project first. Downloads are the project inbox at files_url, with the form slug as a folder — never put that URL in a public snippet.
update_projectwrite actionFreeUse to patch website settings. Nested email sets notification templates: email.subject, email.from_name, email.intro, email.footer_mode (furrow | minimal | off), email.include_meta. Optional branding updates the team (mode furrow | off | agency on yearly only; other modes return plan_limit on free). Set uploads_enabled and upload_allowed_types here — forms inherit them. notify_cc and notify_bcc copy every notification email (Bcc stays hidden from the client — use it for an agency's quiet copy); forms inherit them. notify_phones (E.164) get a short new-lead text per clean submission once the team has Twilio set up (update_account sms); forms inherit them. Email templates support {{project.name}}, {{project.slug}}, {{form.name}}, {{form.slug}}, {{count}} (1-based clean submissions on this form, including the current one), and any submission field such as {{name}} or {{email}}. Use a fallback with {{name | "New submission"}}. Missing fields render empty and never error. Do not pass HTML; Furrow renders one owned layout. Plans are capacity, not a feature ladder. Free: one workspace, 100 clean submissions/month pooled on the team, 3 active (non-archived) projects, 30-day submission retention, and email.footer_mode / branding.mode stay furrow (other values return plan_limit). Yearly ($199/year): extra workspaces, 10,000 submissions/month, unlimited projects, 730-day retention, branding.mode furrow | off | agency. Expansion packs are $99/year each and add 5,000 submissions/month on a yearly account. MCP, webhooks, snippets, inheritance, Turnstile, and email templates stay available on free. Spam, honeypot, and rejected posts do not count. Use create_upgrade_link to hand a human a Stripe Checkout (or Customer Portal) URL. Pass product=expansion on a yearly team to add a pack. File inputs use multipart POST (name="resume[]" for multiple). Enable uploads on the project first. Downloads are the project inbox at files_url, with the form slug as a folder — never put that URL in a public snippet. Null Turnstile or webhook fields clear them. Do not use this to create forms. Updating project keys changes resolved settings on existing forms unless a form override is set.
update_teamwrite actionFreeUse to rename a team. Operator tokens (all workspaces) must pass team_id from list_teams. Team-scoped tokens may omit team_id and cannot target another workspace. Do not use this to create another workspace — that is dashboard-only and requires yearly. For plan, usage, retention, and branding, call get_account / update_account. Do not use this to change clients or projects.
upsert_project_webhookFreeUse to set or replace the project webhook URL. Available on free and yearly. A signing secret is generated once if the project has none. Forms inherit this unless webhook_url_override is set. Do not use this for a one-off delivery — call test_webhook.
Public scan report
scanner v0.1.10 · 2026-10-31 · same rubric, same numbers if you re-run it
- Code scan2 source files scanned25/25
- Live reliabilityremote reachable in 1105ms20/20
- Tool poisoning29 tool descriptions checked13/15
- Auth qualityAPI key sent as a header8/15
- Maintenancelast push 2 days ago15/15
- Maintainer identitynamespace and repository owner differ; GitHub account older than a year; website matches verified namespace8/10
Findings (1)
- lowUnusually long tool description (over 2,000 characters)
poison.long-descriptiontool update_account: …Use to rename the workspace, set branding, configure the AI spam filter, or connect the team's own Twilio account for new-lead text alerts. Pass sms { account_sid, auth_token, from } to save Twilio (auth_token is write-only; omit it later to keep the saved one; sms: null disconnects). Numbers to text are notify_phones on the project. US senders must finish A2P 10DLC or toll-free verification in Twilio or carriers drop the texts. To set it up with a human who has never used Twilio, follow furrow://docs/text-alerts. Pass ai.typesafe_api_key to save this team's TypeSafe key (null clears it; the key is write-only). ai.notify_suspected_spam (default true) emails notify addresses with a Potential spam label for every spam catch — rule-based or Jev — except exact duplicates; set it false to silence both. Spam never sends a webhook. Free accounts keep branding.mode and email.footer_mode at furrow; asking for anything else returns plan_limit — tell the human the custom footer is a Yearly feature and offer create_upgrade_link. Yearly may set branding.mode to furrow, off, or agency (name + optional link + optional logo; Furrow keeps the layout, no raw HTML). Plans are capacity, not a feature ladder. Free: one workspace, 100 clean submissions/month pooled on the team, 3 active (non-archived) projects, 30-day submission retention, and email.footer_mode / branding.mode stay furrow (other values return plan_limit). Yearly ($199/year): extra workspaces, 10,000 submissions/month, unlimited projects, 730-day retention, branding.mode furrow | off | agency. Expansion packs are $99/year each and add 5,000 submissions/month on a yearly account. MCP, webhooks, snippets, inheritance, Turnstile, and email templates stay available on free. Spam, honeypot, and rejected posts do not count. Use create_upgrade_link to hand a human a Stripe Checkout (or Customer Portal) URL. Pass product=expansion on a yearly team to add a pack. Operator tokens (all workspaces) must pass team_id from list_teams. Team-scoped tokens may omit team_id and cannot target another workspace. Do not use this to change the plan — call create_upgrade_link.…
How Furrow Forms compares
Against every graded AI and agents MCP server, from our own scans and uptime checks. Updated after each scan run.
- Safety score
- 89/100
- higher than 83% of 4,460 AI and agents servers
- Tools
- 29
- the typical AI and agents server has 6
- Tools that change things
- 31%
- typical: 0%. Fewer write tools means less an agent can break
- Uptime
- 100%
- of our recent checks; the typical remote AI and agents server answers 100%
- Response time
- 272 ms
- faster than 52% of 2,331 AI and agents servers
- GitHub stars
- 1
- more than 50% of 2,711 AI and agents servers
- Downloads a week
- 56
- more than 46% of 1,538 AI and agents servers with a package
What its tools let an agent do: 16 read · 4 create · 6 change · 3 delete
Install Furrow Forms in Claude Code, Cursor or VS Code
claude mcp add --transport http furrow-forms https://api.furrowforms.com/mcp
What the publisher says
From the Furrow Forms repository's README, as published. We do not edit it. Read it on GitHub
Furrow Forms
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.
What's in this repo
Connect over MCP
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/mcp26 tools: bootstrapsite, getsnippet, test_webhook, and full CRUD over clients, projects, forms, submissions, and webhooks.
Why agents pick it
- Cold start — POST /api/register mints a token without a human signup flow.
- One call per site — bootstrap_site is idempotent; re-run it freely.
- Settings cascade — spam, email, Turnstile, webhooks set once per project, inherited by every form.
- Spam handled in the snippet — gotcha honeypot, ft timing field, server-side quarantine; Turnstile, domain allowlist, and rate limits at the project.
- Signed webhooks with retries on every tier, including free.
- Free tier includes the full API and MCP — 100 clean submissions/month. Pro is $199/year, flat.
Links
- Agent instructions: https://furrowforms.com/ai (markdown at /ai.md, /llms.txt)
- Docs: https://furrowforms.com/docs · MCP: https://furrowforms.com/docs/mcp
- App: https://app.furrowforms.com · API: https://api.furrowforms.com
MIT
Nothing above is checked by us. What we check is on the safety report.
Furrow Forms: common questions
- Is Furrow Forms MCP server safe?
- Yes, by our scan: it is graded A (89/100). Read the Furrow Forms safety report
- How do I install Furrow Forms?
- It runs remotely at api.furrowforms.com. Add it to Claude Code, Cursor, VS Code or Claude Desktop with the snippets above, or call it through the mcp.market gateway without installing anything.
- Does Furrow Forms need an API key?
- Yes. The registry entry asks for
FURROW_TOKEN,Authorization. - Is Furrow Forms maintained?
- The last commit was 6 days ago (2026-10-29). The latest release is v1.0.1.
- Is Furrow Forms up?
- 100% of our last 28 checks got an answer. We check remote servers about four times a day.
- What can I use instead of Furrow Forms?
- Servers from other publishers that do the same job: LLM Sandbox MCP server, Agent-Native Forms MCP server and IWE (iwe.md) MCP server.
- How does Furrow Forms compare with other AI and agents MCP servers?
- safety score 89/100 (higher than 83% of 4,460 AI and agents servers); tools 29 (the typical AI and agents server has 6); tools that change things 31% (typical: 0%. Fewer write tools means less an agent can break). Full comparison.
Alternatives to Furrow Forms
Same job from other publishers: the closest match first, then the best rated.
- LLM SandboxSecurely run LLM-generated code in isolated containers across 7 languages and 3 container backends.not reviewedWidely usedA
- Agent-Native FormsAgent-Native form builder - create, edit, and manage formsnot reviewedEstablishedA
- IWE (iwe.md)Markdown knowledge base as agent memory. Runs against the notes directory it is started in.not reviewedEstablishedA
- Butterbase AIButterbase MCP server — manage your backend: schemas, auth, functions, storage, RAG, deploys.not reviewedEstablishedA
- Emilia ProtocolExact-action approval for consequential agent actions: request, track, and verify signed receipts.not reviewedEstablishedB