Basin and Lanes Forms are both form backends: point a form at an endpoint and submissions are captured, filtered, and delivered. The difference is how the form is created and who can create it.
This page is about that creation story, and where each tool earns its keep.
At a glance
| Dimension | Lanes Forms | Basin |
|---|---|---|
| Create a form | One POST or an MCP tool call | Set up in the dashboard |
| Account to start | Not required; claim by email later | Required up front |
| Agent friendly | Yes, provision over MCP mid-task | Manual setup |
| Spam defense | Honeypot, rate limits, disposable-email rejection | Spam filtering |
| Destinations | Email and Lanes storage with CSV export today; webhooks on the roadmap | Email and integrations |
| Origin rules | Yes | Yes |
| Unclaimed forms | Hold up to 25 submissions, claim within 7 days | Not applicable; account comes first |
| Form snippets | Generated as HTML or React over MCP | Copied from the dashboard |
| Docs | Lanes Forms docs | usebasin.com |
Where Lanes Forms fits
Lanes Forms wins on time to first submission and on agent workflows. There is no signup to start, and an agent can provision the endpoint itself while it builds your site. You claim it into a dashboard later.
Provisioning is one POST /v1/forms where only a schema is required; the response returns a live endpoint_url and a claim link, and an optional Idempotency-Key header makes retries safe, so a retried call never duplicates a form. See provisioning. While unclaimed, a form holds up to 25 submissions, forwards nothing, and expires after 7 days if never claimed, so an endpoint born mid-build waits safely for its owner. The agent path is a hosted MCP server whose create_form and submit_form tools work with no key at all, covered in agents and MCP.
Where Basin fits
Basin is a focused, friendly form backend with solid spam handling and notifications, managed from its dashboard. If a straightforward hosted backend set up by hand is what you want, Basin does that well. When the person setting up the form is a human with an account, the two are close; the gap opens when the creator is an agent, or the account does not exist yet.
How Lanes does it
- Forms are born from an API call.
POST /v1/formswith aschemareturns a working endpoint, anonymously or with anlfk_workspace key that makes the form born claimed with no claim step. Claiming an anonymous form releases its held submissions and turns forwarding on. See provisioning. - Two security axes. An
allowed_originshostname allowlist governs browser posts, and an optionalsubmission_authofapi_keyrequires anlfk_key from servers and other no-origin callers. Per-form CORS echoes the exact allowed origin, never a wildcard. See securing your endpoints. - Delivery is explicit about what is live. Email forwarding to verified recipients (up to 5) and Lanes-hosted storage with CSV export work today; webhook and custom-store delivery are on the roadmap and return
422 action_not_availableuntil they ship. See integrating.
Choose Lanes Forms if
- You want no-signup creation or agent provisioning over MCP.
- You want email forwarding and stored submissions with CSV export now, and webhook routing when it ships.
- You want a form an agent can create mid-task and hand off with a claim link.
- You want origin allowlisting and an optional API-key mode on the same endpoint.
Choose Basin if
- You prefer to set up and manage forms in an established dashboard.
- Every form you need is created once, by a person, and managed by hand.
Both are honest tools for the same job. The difference is who, or what, creates the form.
Further reading
- Provisioning a form: anonymous versus keyed creates, and unclaimed limits.
- Securing your endpoints: origin allowlists, API-key mode, and CORS.
- Agents and MCP: the hosted MCP server, the skill, and the prompt path.
- Contact and support forms: the classic contact form on Lanes Forms.