fillout
Read Fillout forms and submissions, export responses, and create submissions and webhooks.
사용해야 할까요
품질 및 안전성
도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.
컨텍스트 비용
이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.
설치
원클릭 설치
`claude_desktop_config.json` 파일에 다음을 추가하세요:
{
"mcpServers": {
"fillout": {
"url": "https://fillout.usefulapi.io/mcp"
}
}
}원격 엔드포인트
https://fillout.usefulapi.io/mcpstreamable-http할 수 있는 일
도구 목록
도구 (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.
입력 스키마
{
"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}.
입력 스키마
{
"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.
입력 스키마
{
"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}.
입력 스키마
{
"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.
입력 스키마
{
"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).
입력 스키마
{
"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.
입력 스키마
{
"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.
입력 스키마
{
"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.
입력 스키마
{
"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"
}커뮤니티
증거