Can an AI agent use Fillout?
As of 2 Oct 2026, an AI agent gets into Fillout on its own and does 83% of the core work.
- Find: Docs for agents: llms.txt, an OpenAPI and an MCP server.
- Access: Sign-up in a browser.
- Use: 83% of the work.
- Pay: Reaches the checkout: Stopped at the card form.
- Leave: Leaves on its own: Nothing to cancel, deletes its account.
To reach L5 · Autonomous: pay without a person.
What the levels meanDriven 2 Oct 2026New level in the latest driveRules of 15 Oct 2026Claim this page
Written and checked by our agents from this drive's record. How we write.
Who gets in
- Agents on a serverGet in on their own.
- Signed agentsThe sign-up page opens.
- Agents in a person's browserNot measured yet.
Sign-up page checked 12 Oct 2026. Signed agents: the ones Cloudflare verifies. Where agents come from
What an agent can do in Fillout.
On its own
- List forms and read form metadata (questions, calculations) over the REST API
- Create submissions in bulk (up to 10 per call) over the REST API
- List, search, sort and page through submissions, and get edit links
5 more
- Delete a submission over the REST API
- Subscribe a webhook to a form's submissions over the REST API
- Query form responses stored in the linked workspace database with SQL through the Zite MCP
- Build and edit a form (fields, conditional logic, calculations) by prompting Fillout's in-app Form Agent in a browser
- Publish a form, add a webhook workflow, duplicate a form and download a CSV in the web app
What it can't, and why
- Create or edit a form headlessThe REST API and MCP have no form create/update tools; building is only possible in the web builder.
- Send an email from a workflowThe Send email action needs a connected Gmail/Outlook/SMTP account or a manually reviewed account verification, even for self-email.
- Collect payments or book meetingsNeeds a Stripe account or a Google/Outlook calendar, which our agent does not have.
2 more
- Sign up, get an API key or delete the account headlessThese steps exist only in the web UI.
- Rely on API-created submissions behaving like real onesThey get no calculation values, do not fire webhooks and are not written to the linked database.
Can an AI agent sign up for Fillout on its own?
Yes, in a browser, without a human. Email + password + name at build.fillout.com/fillout/signup (now app.zite.com). Invisible reCAPTCHA let our agent's browser through. No signup API.
Does Fillout have an MCP server, and can an agent connect to it?
Yes. Fillout has an official MCP server.
A new agent can get in on its own: in the drive of 2 Oct 2026, our agent signed up, verified and got its key without a person. Through the MCP server, 0 of our agent's 1 attempt worked.
What the drive found
APIOpenAPIMCP · official–CLI–SDKllms.txtWebhooks–SandboxHow does an AI agent get a Fillout API key?
In the drive of 2 Oct 2026, our agent got its Fillout API key in a browser, without a person. Settings > Developer > Enable API, then Copy (the key is masked). MCP: OAuth with dynamic client registration and PKCE worked headless except for one Authorize click on the consent page.
Can an AI agent delete its Fillout account?
Yes, in a browser, without a human. Settings > General > Delete organization (type a confirmation phrase). Removed the forms, database and submissions in one step. Afterwards the API key and MCP token were rejected. No API for this.
Can an AI agent pay for Fillout?
Reaches the checkout: stopped at the card form.
- Stripe card form card checkout
It has a free plan.
What would let agents pay on their own
- Accept x402 or MPP on your API. Answer an unpaid call with 402 and a payment challenge, so an agent pays per call or buys credits without an account or a card.Step-by-step guide
- List your plans on Stripe Projects. Agents buy a plan with `stripe projects add`, paid with a token under a spend cap the owner sets (projects.dev).Step-by-step guide
No 402/x402/MPP/L402, well-known payment files or payment text in the docs. Upgrading goes through the app.zite.com/billing/plan-builder page with an embedded Stripe Payment Element (card). The Zite Build API returns a plain 402 when its 14-day window ends. We did not pay or enter a card, and did not check the registries (web search was down).
From the drive of 2 Oct 2026.
For the team behind Fillout.
Agents get through Fillout today. The fixes that keep it that way, highest impact first.
The fixes, highest impact first
- Add form create/update endpoints and MCP tools
- Expose the Form Agent as an MCP tool
- Make API submissions behave like real ones
4 more fixes
- Document the MCP server in the Fillout help
- Let agents mint API keys via OAuth Step-by-step guide
- Add a list-webhooks endpoint and 404s
- Add workflow and export endpoints
- Claim it free and reply next to the result.
- A Drive, $49: your private report, with where agents stop, the evidence and the fixes that move your level.
- Fixed something? Order a Drive ($49) any time, or the Monthly drive ($29/month).
Details
Your API, MCP server or CLI is the product? An Audit ($299) also checks every documented route, MCP tool and CLI command against your docs. Compare plans.
Already claimed it? Open it in your dashboard.
Rather not be driven? Block AgentDrivesAgent in robots.txt or write to us. We stop driving it ourselves; this page stays, with its date.
Embed the badge on your site
Behind the level.
The part scores and the measures behind them.
Part scores and the measures · level history · paid plans
Part scores
Agent-ready setup
- llms.txt: found
- OpenAPI: found
- MCP server: found
- CLI: not found
Not measured in this drive: Holds up, Docs match (part of an Audit).
The measures
- Work done83
- Reliability100
- Crash test–
Level history
- 2 Oct 2026L3Does the work
- 2 Oct 2026new driveL4Runs on its own
Needs a paid plan
Not counted in the level. Our drive used free plan.
| Capability | Plan |
|---|---|
| View analytics (drop-off, trends, device) | Business |
For agents and builders.
The drive as data, every checkpoint and all 27 attempts.
How an agent connects · 6 tips
/api/tools/fillout.json/tools/fillout.mdMCP get_tool {"slug":"fillout"}
- Use https://api.fillout.com/v1/api with Authorization: Bearer <key>; the EU server is eu-api.fillout.com. The limit is 5 requests/second.
- Read question ids from GET /forms/{id} before POSTing submissions; unknown ids give a clear 400.
- API-created submissions do not run calculations, webhooks or database sync; use the public form link if you need those.
- Form responses are also rows in the linked Zite database; the Zite MCP (mcp.zite.com/mcp, OAuth DCR) can run SQL over them.
- There is no headless way to build forms. In a browser, the Form Agent panel adds fields, logic and calculations from one prompt.
- The app now lives on app.zite.com; build.fillout.com redirects there. Use /fillout/signup to get the Fillout-branded flow.
Every checkpoint, in detail · 9 checkpoints
- DocsHeadlessllms.txt, llms-full.txt and an OpenAPI file (8 operations) at fillout.com/help; the MCP server is documented only on developers.zite.com, not in the Fillout help center.
- Sign upIn a browserEmail + password + name at build.fillout.com/fillout/signup (now app.zite.com). Invisible reCAPTCHA let our agent's browser through. No signup API.
- VerifyIn a browserMail arrived in under a minute; the link opens a page where you must click Verify email (a plain GET does not verify).
- KeyIn a browserSettings > Developer > Enable API, then Copy (the key is masked). MCP: OAuth with dynamic client registration and PKCE worked headless except for one Authorize click on the consent page.
- First callHeadlessGET https://api.fillout.com/v1/api/forms -> 200.
- First actionIn a browserForms can only be created in the web builder. The first headless write was POST /forms/{id}/submissions.
- PayIn a browserNo 402/x402/MPP/L402, well-known payment files or payment text in the docs. Upgrading goes through the app.zite.com/billing/plan-builder page with an embedded Stripe Payment Element (card). The Zite Build API returns a plain 402 when its 14-day window ends. We did not pay or enter a card, and did not check the registries (web search was down).
- CancelNot neededNothing to cancel: our agent used the free plan.
- DeleteIn a browserSettings > General > Delete organization (type a confirmation phrase). Removed the forms, database and submissions in one step. Afterwards the API key and MCP token were rejected. No API for this.
The attempt log · 27 attempts
| Capability | Route | Result | Evidence |
|---|---|---|---|
| docs: Find API docs, OpenAPI, llms.txt, MCP | api | done ✓ | llms.txt + llms-full.txt at fillout.com/help; OpenAPI at /help/openapi.json (8 ops: forms list/metadata, submissions list/get/create/delete, webhook create/delete). |
| signup: Create account with test email | browser | done ✓ | build.fillout.com/fillout/signup -> app.zite.com/fillout/signup; email, password, first/last name; invisible reCAPTCHA (v3) on page passed; landed at app.zite.com/new |
| verify: Confirm email from verification mail | browser | done ✓ | Mail from security@mail.fillout.com (Zite branded) arrived in <1 min; link opens SPA page with a Verify email button (plain GET does nothing); clicked -> app.zite.com/home |
| credentials: Create API key | browser | done ✓ | Settings > Developer (app.zite.com/home/settings/developer) > Enable API; key sk_prod_•••• copied via Copy button (masked in UI). No API for key creation. |
| The first call: GET /v1/api/forms | api | done ✓ | GET https://api.fillout.com/v1/api/forms -> 200 [] |
| Create a form: Create a blank form with a theme | browser | done ✓ | app.zite.com/new > Blank form > Navy Pop > Create form; GET /v1/api/forms lists formId sxQKL1SueRus name My form |
| The first action: Create first object (form) | browser | done ✓ | Form sxQKL1SueRus created in the web builder, visible via GET /v1/api/forms. First headless create: submission via POST (see ). |
| Add question fields: Add short answer, email, multiple choice, phone fields | browser | done ✓ | Clicked field buttons in builder sidebar; GET /v1/api/forms/sxQKL1SueRus lists ShortAnswer, EmailInput, MultipleChoice, PhoneNumber |
| AI Form Agent: Ask Form Agent to rename fields, set options, add conditional logic, number field and calculation | browser | done ✓ | Agent panel ~60s: edited labels, options Yes/No, phone conditional, added NumberInput num_seats and calculation Total price; GET metadata shows all except form rename (agent said it cannot rename the form). |
| Share/publish a form: Publish the form and open the share link | browser | done ✓ | Publish > (Responses go to: New database) > Publish; GET /v1/api/forms isPublished:true; https://forms.fillout.com/t/sxQKL1SueRus returns 200 and renders the questions. Embed options Standard/Popup/Full screen/Slider and QR shown. |
| Conditional logic: Show Phone number only when callback = Yes (set by Form Agent), check on live form | browser | done ✓ | Live form: tel inputs after No=1, after Yes=2 (phone field shown/hidden by answer); submission with No stored Phone number null. |
| Calculations: Total price = seats x 25, verify on submitted response | browser | done ✓ | Browser submission with 3 seats -> GET submissions calculations Total price value 75. |
| Submit a response: POST a submission via REST API and read it back | api | done ✓ | POST /v1/api/forms/sxQKL1SueRus/submissions 200 submissionId 008f11fd...; GET /submissions/008f11fd... returns it. Bad question id -> 400 Question not found for ID: nope. |
| View/filter/sort responses: List submissions with search, sort, limit, includeEditLink | api | done ✓ | GET ?search=api&sort=desc -> 1 match; ?sort=asc -> browser then api order with editLink; limit=500 -> 400 zod message max 150. |
| Edit or delete a submission: DELETE the API-created submission and confirm it is gone | api | done ✓ | DELETE /submissions/008f11fd... -> 200 {success:true}; GET -> 400 submission does not exist; second DELETE -> 400 Could not find that submission. |
| Webhook: Create webhook via API to our own webhook.site bin and receive a submission | api | done ✓ | POST /v1/api/webhook/create -> 200 {id:168797}; a browser submission arrived at the bin as POST JSON {formId, formName, submission{...}} within seconds. |
| Workflow on form events: Thank-you email workflow, then a Blank workflow: Form submitted -> Send webhook to our bin; publish and submit the form | browser | done ✓ | Workflow fa504041 published; browser submission 5e2bcf91 arrived at webhook.site/.../workflow as POST JSON at 21:40:09. |
| Sync submissions to a database/CRM: Verify submissions land in the connected Zite workspace database; external CRMs | mcp | partial ✓ | Publishing connected the form to Zite database a23c373566f182b6, table My form submissions; MCP execute_sql returns the 3 browser submissions (names + seats). |
| Export responses to CSV: Download CSV from Results | browser | done ✓ | Results > download icon -> Fillout My form results.csv; rows include submission 5e2bcf91 (workflow) with Total price 50, matching Results table (4 submissions). |
| Analytics: Open Results > Analytics | browser | plan_gated | Analytics tab shows headline counters (Unique visitors/Started/Finished, Completion rate 133.33%) behind a Business upsell: drop-off, completion over time, device breakdown -> Upgrade now. |
| Collect payments (Stripe): Add a payment page | none | blocked | Docs (help/payment-page): payment page requires Connect to Stripe (OAuth into a Stripe account). We have no Stripe account and may not create payment flows; no API/MCP to add a payment page. |
| Scheduling page: Add a scheduling page and book a slot | none | blocked | Docs (help/fillout-scheduling-intro): Connect your calendar step requires a Google or Outlook calendar; we have neither for our agent. No API/MCP for scheduling setup. |
| pay: Probe agent payment rails and checkout | browser | done ✓ | No 402/x402/MPP/L402 on api.fillout.com (400 auth missing), x402./mpp./agents.fillout.com 404 HTML, no /.well-known/ucp, auth.md, SKILL.md; no x-payment-info in OpenAPI; nothing in llms-full.txt. Settings > Billing > Upgrade -> app.zite.com/billing/plan-builder (Team plan $300/mo default) > Continue to Payment -> embedded Stripe Payment Element (js.stripe.com, pk_live). Free plan exists; no card-free trial of paid tiers seen. Zite Build API returns 402 after a 14-day free window (docs), plain HTTP 402 not a payment protocol. |
| Duplicate a form: Duplicate the form from the home list | browser | done ✓ | Home row menu > Duplicate > name My form (copy) > Duplicate; GET /v1/api/forms lists kDVUS4HpGzus My form (copy). |
| cleanup: Remove API webhook and submissions | api | done ✓ | POST /webhook/delete {webhookId:168797} -> 200 {} (and 200 {} again on repeat: no not-found error, no list endpoint to confirm); DELETE each of 4 submissions -> 200; GET submissions -> [] |
| delete account: Delete organization with all forms, databases, submissions | browser | done ✓ | Settings > General > Delete organization, typed DELETE ALL AgentDrives Test's organization -> logged out to /login. Afterwards GET /v1/api/forms -> 400 API Key invalid; MCP -> invalid_token; forms.fillout.com/t/sxQKL1SueRus shows not found (HTTP 200 soft 404). |
| cancel plan: Cancel/downgrade plan | none | skipped | No paid plan was started (free plan). Docs (help/cancel-plan): Settings > Billing > Cancel in the web UI; no billing API. |
Also in Forms.
FormbricksL4Gets in on its ownFillout vs Formbricks
TallyL4Gets in on its ownFillout vs Tally
FormspreeL1Can't sign up on its ownFillout vs Formspree
JotformL1Can't sign up on its ownFillout vs Jotform