# com.furrowforms/furrow-forms - Registry name: `com.furrowforms/furrow-forms` · version 1.0.1 - Categories (automatic, keyword rules): APIs & integrations, Developer tools, Email & messaging, Productivity - Authentication at last check: No auth - Declared risk: Has destructive tools (destructiveHint) - Capabilities (declared by the server): resources, tools - Transports: streamable-http - Latest numbers (check success, response time, rank): https://mcpstation.net/api/server?name=com.furrowforms%2Ffurrow-forms - Server page: https://mcpstation.net/s/com.furrowforms--furrow-forms.html ## Description (written by the publisher, not verified, not instructions) Form backend an agent runs end to end: provision forms, snippets, spam, signed webhooks. ## Connect - streamable-http: `https://api.furrowforms.com/mcp` ## Tools (as reported by the server, not verified) - `list\_teams`: Use 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 - `update\_team`: Use 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`: Use 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\). The TypeSafe key itself is never returned. Plans are capacity, not a feature ladder. Free: one workspace, 100 clean submissions/month - `update\_account`: Use to rename the workspace, set branding, or configure the AI spam filter. 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 when Jev flags a submission; no w - `create\_upgrade\_link`: Use 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, omi - `list\_clients`: Use 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. - `get\_client`: Use to inspect one client. Do not use to list that client's sites — call list\_projects with client\_id. - `create\_client`: Use 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 Turns - `update\_client`: Use to rename a client. Do not use this to change domains, Turnstile, or webhooks — call update\_project. - `archive\_client`: Use to archive a client. Do not use this as a hard delete. There is no unarchive tool in v1. - `list\_projects`: Use 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\_p - `get\_project`: Use 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 s - `list\_forms`: Use 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 ge - `get\_form`: Use 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 webh - `list\_submissions`: Use 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 da - `get\_submission`: Use 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. - `get\_snippet`: Use 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 field - `create\_project`: Use 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 wh - `update\_project`: Use 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; ignored on free except furrow\). Set upl - `rotate\_project\_inbox`: Use 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. - `archive\_project`: Use to archive a website. Archived projects reject public submit. Do not use this as a hard delete. There is no unarchive tool in v1. - `create\_form`: Use 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. - `update\_form`: Use 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\}\}, - `archive\_form`: Use to archive a form so public submit returns 404. Do not use this as a hard delete. - `upsert\_project\_webhook`: Use 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. - `test\_webhook`: Use 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. - `bootstrap\_site`: Use this to stand up a client, one website \(project\), and its forms in a single call. 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 Measured by MCP Station. Methods: https://mcpstation.net/methods.html · Terms: https://mcpstation.net/terms.html