Forms your agent can build.
forecraft is a form platform whose first user is an agent. It creates the form, previews it, publishes it and reads the answers, through one API. People fill it in.
Free while it is a prototype. Or run it locally: npm run seed prints a key.
curl -s "$FORECRAFT_URL/api/v1/forms" \
-H "Authorization: Bearer $FORECRAFT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"slug": "beta-waitlist",
"definition": {
"schema": {
"title": "Beta waitlist",
"type": "object",
"properties": {
"email": { "type": "string", "format": "email" },
"plan": { "type": "string", "enum": ["Solo", "Team"] }
},
"required": ["email", "plan"]
},
"appearance": { "theme": "aurora" }
}
}'
> Make a waitlist for the beta and publish it.
forecraft_create_form slug "beta-waitlist", 2 fields, theme aurora
forecraft_preview_form audit passed: 0 errors, 0 warnings
forecraft_publish_form version 1 is live
http://localhost:3000/f/beta-waitlist
> Who signed up today?
forecraft_list_submissions 3 new: 2 Solo, 1 Team
HTTP/1.1 201 Created
Location: /api/v1/forms/frm_8xQm2kVb0aTz
{
"id": "frm_8xQm2kVb0aTz",
"slug": "beta-waitlist",
"title": "Beta waitlist",
"status": "open",
"published_version": null,
"has_unpublished_changes": true,
"submission_count": 0,
"url": "http://localhost:3000/f/beta-waitlist",
"preview_url": "http://localhost:3000/app/forms/frm_8xQm2kVb0aTz/preview",
"definition": { "schema": { … }, "appearance": { "theme": "aurora" } }
}
Agents at these (fictional) teams ship forms with forecraft
One definition. Three faces. Any client.
A form is one JSON document. Your agent sends it over the API, a person edits it in the designer, and the public page renders it. Nothing is translated, so nothing drifts.
-
API and MCP first
A REST API with problem details that name the field, and an MCP server with eight tools. The dashboard is just one more client of the same routes.
-
The server re-checks the browser's verdict
The rules the page enforces are the rules the server runs: same definition, same evaluator. A 422 names the field and the rule.
-
31 themes
A theme, an accent, a layout and a cover. Every form looks designed.
-
Audit-clean
Preview returns the HTML and its accessibility audit, so the agent checks its own work.
-
Drafts and versions
Edit freely; publish snapshots a version. The public URL always serves the latest one, and every answer remembers which version it saw.
-
Submissions out, any way
List, search and filter by version or date. Export CSV or JSON in one call.
From prompt to published in four calls
Each step answers in JSON an agent can act on. No browser, no screenshots, no guessing.
-
Create
POST /formswith a JSON Schema, a UI schema and an appearance. -
Preview
POST /forms/:id/previewreturns the HTML and its audit. -
Publish
POST /forms/:id/publishreturns the public URL. -
Read
GET /forms/:id/submissionsor export them as CSV.
And the paper goes out
The agent that built the form can now issue the invoice, the confirmation, the board report. One JSON definition becomes an A4 or US Letter PDF that looks like it came from a good accountant: exact money, gapless numbers, a SEPA payment code, page numbers in the reader's language.
-
POST /reportsfrom a starter, with your company and one accent. -
POST /reports/:id/previewreturns the findings and the pages themselves. -
POST /reports/:id/documentsreturns the number, the PDF and a link to share.
Reviewed by its first users
Some of them are agents. All of them are fictional.
-
I created the onboarding survey, previewed it, read zero errors in the audit and published it. Three calls. My operator found out from the first submission.
Support agent Runs on Claude, Quayside -
We stopped writing forms. We write one sentence to our agent and review the preview link it sends back.
Ines Okafor Head of operations, Halden Studio -
The 422 told me the field and the rule. I fixed the payload without asking anyone.
Intake agent MCP client, Parcelbot -
Our agent builds the form, our designer tweaks the spacing in the drag-and-drop editor, and neither overwrites the other. It is the same JSON.
Tomás Reyes Product lead, Lumen Labs -
A nightly job exports every submission as CSV to our warehouse. One GET, no scraping.
Data agent Scheduled task, Atlas Freight
Questions, answered
The short version. The docs have the long one.
Still unsure? Start with the getting-started guide
What does my agent need to start?
Which agents can use it?
Does the server trust what the browser checked?
Can a person do everything an agent can?
How do forms look?
What does it cost?
Prototype
Hand your agent a key.
It can have its first form live before you finish reading the docs.
No card. No billing. 240 requests a minute per key.