fillout
Read Fillout forms and submissions, export responses, and create submissions and webhooks.
Sollte ich dies verwenden
Qualität und Sicherheit
Basierend auf einer automatisierten Analyse der Tool-Definitionen und der Einhaltung des Protokolls.
Kontextkosten
Dies ist die ungefähre Anzahl der Tokens, die jedes Mal verbraucht werden, wenn die Tools des Servers in den Kontext eines Modells geladen werden. Höhere Werte verringern die Aufmerksamkeit, die für andere Aufgaben verfügbar ist.
Installieren
Installation mit einem Klick
Fügen Sie dies Ihrer Datei `claude_desktop_config.json` hinzu:
{
"mcpServers": {
"fillout": {
"url": "https://fillout.usefulapi.io/mcp"
}
}
}Remote-Endpunkte
https://fillout.usefulapi.io/mcpstreamable-httpWas es kann
Tool-Inventar
Tools (9)
🟢fillout_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.
Eingabe-Schema
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢fillout_get_form(formId)
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}.
Eingabe-Schema
{
"type": "object",
"properties": {
"formId": {
"type": "string",
"minLength": 1,
"description": "The form's public id (the formId from fillout_list_forms, also the id in the form's share URL)."
}
},
"required": [
"formId"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢fillout_list_submissions(formId, afterDate, beforeDate, status, search, ...)
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.
Eingabe-Schema
{
"type": "object",
"properties": {
"formId": {
"type": "string",
"minLength": 1,
"description": "The form's public id (the formId from fillout_list_forms, also the id in the form's share URL)."
},
"afterDate": {
"description": "Only submissions submitted after this ISO 8601 date-time, e.g. 2026-09-01T00:00:00Z.",
"type": "string"
},
"beforeDate": {
"description": "Only submissions submitted before this ISO 8601 date-time.",
"type": "string"
},
"status": {
"description": "'finished' (default) or 'in_progress' for unfinished / partial submissions.",
"type": "string",
"enum": [
"finished",
"in_progress"
]
},
"search": {
"description": "Only submissions containing this text.",
"type": "string"
},
"includePreview": {
"description": "Also include preview (test) responses.",
"type": "boolean"
},
"limit": {
"description": "Submissions per page, 1-150 (Fillout default 50).",
"type": "integer",
"minimum": 1,
"maximum": 150
},
"offset": {
"description": "Starting position (0-based) for this page.",
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"sort": {
"description": "Sort by submission time: 'asc' (default) or 'desc' for newest first.",
"type": "string",
"enum": [
"asc",
"desc"
]
},
"includeEditLink": {
"description": "Include an editLink for each submission.",
"type": "boolean"
}
},
"required": [
"formId"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢fillout_get_submission(formId, submissionId, includeEditLink)
Fetch a single submission by id, with every answer. Fillout: GET /forms/{formId}/submissions/{submissionId}.
Eingabe-Schema
{
"type": "object",
"properties": {
"formId": {
"type": "string",
"minLength": 1,
"description": "The form's public id (the formId from fillout_list_forms, also the id in the form's share URL)."
},
"submissionId": {
"type": "string",
"minLength": 1,
"description": "The submission's id (submissionId)."
},
"includeEditLink": {
"description": "Include an editLink for the submission.",
"type": "boolean"
}
},
"required": [
"formId",
"submissionId"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢fillout_count_submissions(formId, afterDate, beforeDate, status, search, ...)
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.
Eingabe-Schema
{
"type": "object",
"properties": {
"formId": {
"type": "string",
"minLength": 1,
"description": "The form's public id (the formId from fillout_list_forms, also the id in the form's share URL)."
},
"afterDate": {
"description": "Only submissions submitted after this ISO 8601 date-time, e.g. 2026-09-01T00:00:00Z.",
"type": "string"
},
"beforeDate": {
"description": "Only submissions submitted before this ISO 8601 date-time.",
"type": "string"
},
"status": {
"description": "'finished' (default) or 'in_progress' for unfinished / partial submissions.",
"type": "string",
"enum": [
"finished",
"in_progress"
]
},
"search": {
"description": "Only submissions containing this text.",
"type": "string"
},
"includePreview": {
"description": "Also include preview (test) responses.",
"type": "boolean"
}
},
"required": [
"formId"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢fillout_export_submissions(formId, afterDate, beforeDate, status, search, ...)
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).
Eingabe-Schema
{
"type": "object",
"properties": {
"formId": {
"type": "string",
"minLength": 1,
"description": "The form's public id (the formId from fillout_list_forms, also the id in the form's share URL)."
},
"afterDate": {
"description": "Only submissions submitted after this ISO 8601 date-time, e.g. 2026-09-01T00:00:00Z.",
"type": "string"
},
"beforeDate": {
"description": "Only submissions submitted before this ISO 8601 date-time.",
"type": "string"
},
"status": {
"description": "'finished' (default) or 'in_progress' for unfinished / partial submissions.",
"type": "string",
"enum": [
"finished",
"in_progress"
]
},
"search": {
"description": "Only submissions containing this text.",
"type": "string"
},
"includePreview": {
"description": "Also include preview (test) responses.",
"type": "boolean"
},
"sort": {
"description": "'asc' (default, oldest first) or 'desc'.",
"type": "string",
"enum": [
"asc",
"desc"
]
},
"max_submissions": {
"description": "Stop after this many submissions (default 500, max 3000).",
"type": "integer",
"minimum": 1,
"maximum": 3000
}
},
"required": [
"formId"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴fillout_create_submissions(formId, 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.
Eingabe-Schema
{
"type": "object",
"properties": {
"formId": {
"type": "string",
"minLength": 1,
"description": "The form's public id (the formId from fillout_list_forms, also the id in the form's share URL)."
},
"submissions": {
"minItems": 1,
"maxItems": 10,
"type": "array",
"items": {
"type": "object",
"properties": {
"questions": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "The question id (from fillout_get_form)."
},
"value": {
"description": "The answer, shaped for the question type (string, number, array of choices, object...)."
}
},
"required": [
"id",
"value"
]
},
"description": "Answers, one per question id."
},
"urlParameters": {
"description": "URL parameter values.",
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "URL parameter id (from fillout_get_form)."
},
"name": {
"type": "string",
"description": "URL parameter name."
},
"value": {
"type": "string",
"description": "URL parameter value."
}
},
"required": [
"id",
"name",
"value"
]
}
},
"submissionTime": {
"description": "When it was submitted, ISO 8601 (default now).",
"type": "string"
},
"lastUpdatedAt": {
"description": "When it was last updated, ISO 8601.",
"type": "string"
},
"scheduling": {
"description": "Scheduling (booking) answers.",
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Scheduling field id."
},
"value": {
"type": "object",
"properties": {
"fullName": {
"type": "string"
},
"email": {
"type": "string"
},
"eventStartTime": {
"type": "string",
"description": "ISO 8601."
},
"eventEndTime": {
"type": "string",
"description": "ISO 8601."
},
"timezone": {
"type": "string",
"description": "IANA timezone, e.g. Europe/Prague."
},
"userId": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"scheduledUserEmail": {
"type": "string"
},
"eventId": {
"type": "string"
},
"eventUrl": {
"type": "string"
},
"rescheduleOrCancelUrl": {
"type": "string"
},
"meetingNotes": {
"type": "string"
}
},
"required": [
"fullName",
"email",
"eventStartTime",
"eventEndTime",
"timezone"
],
"description": "Booking details."
}
},
"required": [
"id",
"value"
]
}
},
"payments": {
"description": "Payment answers (records only; no money moves).",
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Payment field id."
},
"value": {
"type": "object",
"properties": {
"paymentId": {
"type": "string",
"description": "Stripe payment id."
},
"stripeCustomerId": {
"type": "string"
},
"stripeCustomerUrl": {
"type": "string"
},
"stripePaymentUrl": {
"type": "string"
},
"totalAmount": {
"description": "Amount in cents.",
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"currency": {
"type": "string"
},
"email": {
"type": "string"
},
"status": {
"type": "string"
},
"stripeSubscriptionId": {
"type": "string"
}
},
"required": [
"paymentId"
],
"description": "A record of an existing Stripe payment — this does NOT charge anyone."
}
},
"required": [
"id",
"value"
]
}
},
"login": {
"description": "Login-page information.",
"type": "object",
"properties": {
"email": {
"type": "string",
"description": "Verified respondent email."
}
},
"required": [
"email"
]
}
},
"required": [
"questions"
]
},
"description": "1-10 submissions to create."
}
},
"required": [
"formId",
"submissions"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴fillout_create_webhook(formId, url)
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.
Eingabe-Schema
{
"type": "object",
"properties": {
"formId": {
"type": "string",
"minLength": 1,
"description": "The form's public id (the formId from fillout_list_forms, also the id in the form's share URL)."
},
"url": {
"type": "string",
"format": "uri",
"description": "The HTTPS endpoint that should receive submissions."
}
},
"required": [
"formId",
"url"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴fillout_remove_webhook(webhookId)
Stop a webhook from receiving submissions. Recoverable: create it again with fillout_create_webhook (it gets a new id). Fillout: POST /webhook/delete.
Eingabe-Schema
{
"type": "object",
"properties": {
"webhookId": {
"anyOf": [
{
"type": "string",
"minLength": 1
},
{
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
}
],
"description": "The webhook id returned by fillout_create_webhook."
}
},
"required": [
"webhookId"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Community
Nachweis