Skip to content

Form backend for AI-built websites: let the agent wire and verify the form

If an agent wrote the site, the agent should wire the form. Postbag makes that a four-call conversation, and leaves the wiring in the repo for the next session.

The flow

Read /llms.txt. GET /v1/me. POST /v1/quickstart with the site's origin and the owner's email. Drop embed.html (or the framework snippet) into the page. POST a _test submission and poll the delivery id until sent. Write postbag.json. Done, without a dashboard.

prompt to an agent
Add a contact form to this site. Use Postbag: read https://postbag.dev/llms.txt,
create the form with POST /v1/quickstart (origin = this site, notify_email = me),
embed the returned snippet, verify with a _test submission, and write postbag.json.
API key: pb_live_…

Why it works for agents

Every error has a hint and a docs link. Every create returns next[] with ready-to-send bodies. Idempotency-Key and if_exists: "return" make re-runs safe. Ids are self-describing. Schemas and stream templates mean an agent cannot produce a form a fleet does not understand.

Site factories

A factory that forges many sites provisions a managed form per site from a stream template and writes postbag.json plus a CLAUDE.md line into each repo. The stream's schema becomes the contract; drift is detected per site; the partner receives one shape.

Questions, answered

Does Postbag have an MCP server?
In progress. Today agents use the HTTP API directly; it is small, fully described by /openapi.json, and designed to be driven without tools.
Which agents has this been tested with?
Postbag's own Phase 1 exit test is a fresh Claude Code session in a new repo shipping a working contact form with email and Telegram from only an API key. The surface is plain HTTP, so any agent that can call fetch or curl can use it.

Your first form is three minutes away.

Sign up, get a submit URL, point a form at it. The first submission lands in your inbox and your email. Everything else appears when you need it.