# Furrowforms Furrow Forms MCP server

Source: https://glimind.com/server/mcp-registry%2Fcom.furrowforms%2Ffurrow-forms
Registry id: `mcp-registry/com.furrowforms/furrow-forms`
Status: live (checked 2026-10-27T01:27:55.877Z)

## Verdict

Furrowforms Furrow Forms MCP server answered 100% of Glimind's liveness checks over 30 days, better than 42% of MCP servers, with 678 ms median handshake and 0 outages in 90 days. Its agent-readiness grade is A (93/100) across 27 tools, costing an agent about 13,998 tokens to load. Checked every few minutes; no tool is ever called.

## Measurements (30 days)

| Metric | Value | Better than |
|---|---|---|
| Uptime, 30 days | 100% | 42% of MCP servers |
| Median handshake latency | 678 ms | 36% of MCP servers |
| p95 handshake latency | 2769 ms | — |
| Checks in 30 days | 4,948 | — |
| Outages, 90 days | 0 | — |
| Median recovery | — | — |
| Agent-readiness score | 93/100 (A) | 76% of MCP servers |
| Tools | 27 | — |
| Tool-list size for an agent | ~13,998 tokens | 13% of MCP servers |
| Days observed | 29 | — |

## Install

```json
{
  "mcpServers": {
    "furrowforms-furrow-forms-mcp-server": {
      "type": "http",
      "url": "https://api.furrowforms.com/mcp"
    }
  }
}
```

Claude Code:

```sh
claude mcp add --transport http furrowforms-furrow-forms-mcp-server https://api.furrowforms.com/mcp
```

## Tools (29)

- `archive_client`: Use to archive a client. Do not use this as a hard delete. There is no unarchive tool in v1.
- `archive_form`: Use to archive a form so public submit returns 404. Do not use this as a hard delete.
- `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.
- `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 th
- `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
- `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, we
- `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; yea
- `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 a
- `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_s
- `get_client`: Use to inspect one client. Do not use to list that client's sites — call list_projects with client_id.
- `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 unde
- `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. Retur
- `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 a
- `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 i
- `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 ano
- `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
- `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_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 pas
- `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 bel
- `read_submissions`: Read form submissions.
- `rotate_keys`: Rotate API keys.
- `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 return
- `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 GE
- `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 i
- `update_client`: Use to rename a client. Do not use this to change domains, Turnstile, or webhooks — call update_project.
- `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 onl
- `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)
- `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 workspac
- `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 unle

Measured by Glimind (https://glimind.com): MCP handshake + tool list only, no tool is ever called. CC BY 4.0.
