Fillout MCP server. Read Fillout forms and submissions, export responses, and create submissions and webhooks.
Add to your MCP config, then reload & authorize:
{
"mcpServers": {
"fillout": {
"url": "https://fillout.usefulapi.io/mcp"
}
}
}| Tool | Type | What it does |
|---|---|---|
fillout_list_forms | read | List forms List every form in the Fillout account — each form's name and formId. Start here to find the formId the other tools need. Fillout: GET /forms. |
fillout_get_form | read | Get form questions and metadata Fetch one form's metadata: every question (id, name, type), calculations, URL parameters, scheduling and payment fields, and quiz settings. Use the question ids to read answers or to create submissions. Fillout: GET /forms/{formId}. |
fillout_list_submissions | read | List submissions List one page of a form's submissions (answers to every question, calculations, URL parameters, scheduling, payments, quiz score, login email), filtered by date range, status or free-text search. Offset pagination: the response carries totalResponses and pageCount. Fillout: GET /forms/{formId}/submissions. |
fillout_get_submission | read | Get one submission Fetch a single submission by id, with every answer. Fillout: GET /forms/{formId}/submissions/{submissionId}. |
fillout_count_submissions | read | Count submissions Count a form's submissions matching the same filters as fillout_list_submissions (date range, status, search) without pulling the answers — e.g. 'how many responses this week?' or 'how many partial submissions?'. Reads totalResponses from GET /forms/{formId}/submissions with limit=1. |
fillout_export_submissions | read | Export submissions Fetch many submissions in one call by walking the offset pagination (150 per page, paced under Fillout's 5 requests/second limit), up to max_submissions. Same filters as fillout_list_submissions. Use this for analysis across a whole response set; the result says whether it was truncated. Fillout: GET /forms/{formId}/submissions (repeated). |
fillout_create_submissions | write | Create submissions Create up to 10 new submissions on a form, as if respondents had filled it in — e.g. to import responses collected elsewhere. Each submission needs its question answers (question ids from fillout_get_form); URL parameters, scheduling, payments, login email and timestamps are optional. Creates real records that trigger the form's integrations. Fillout: POST /forms/{formId}/submissions. |
fillout_create_webhook | write | Create a submission webhook Subscribe a URL to a form's new submissions: Fillout will POST each submission (same shape as a fillout_list_submissions entry) to it. Returns the webhook id — keep it, it is the only handle for removing the webhook later. Fillout: POST /webhook/create. |
fillout_remove_webhook | write | Remove a submission webhook Stop a webhook from receiving submissions. Recoverable: create it again with fillout_create_webhook (it gets a new id). Fillout: POST /webhook/delete. |
fillout_usage_status | Usage status (free-tier meter) Report the caller's current free-tier usage this month: calls used, monthly limit, remaining, and whether the cap is reached. Read-only; does not count against the meter. | |
fillout_upgrade | Upgrade to Pro (unlimited) Subscribe to the Pro plan for UNLIMITED Fillout tool calls (the free tier caps monthly usage). Choose monthly ($9/month) or yearly ($90/year — 2 months free) billing. Returns a Stripe Checkout link to open in your browser; after payment your account upgrades automatically. Read-only; does not count against the meter. |
| Plan | Price | Limit |
|---|---|---|
| Free | $0 | 100 tool calls / month |
| Proper user | $9/mo · $90/yr | Unlimited |
This is a Model Context Protocol endpoint — meant to be connected from an AI client, not opened in a browser. An invalid_token response at the URL is the auth gate working as designed; clients authenticate automatically.