fillout

Read Fillout forms and submissions, export responses, and create submissions and webhooks.

我该使用它吗

质量与安全性

A
描述质量
98%
模式完整度
90%
命名质量
80%
投毒风险
100%
权限匹配度
100%
协议合规性
100%

基于对工具定义和协议合规性的自动分析。

上下文开销

~2,638token 数(工具定义)
~2.6 KB典型响应大小
对注意力有显著影响(占 128k 上下文窗口的 2.06%)

这是每次将服务器的工具加载到模型上下文窗口时所消耗的大致 token 数。数值越高,可用于其他任务的注意力就越少。

安装

一键安装

将以下内容添加到你的 `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"
}

社区

评价此服务器

证据

最近观测

已验证未记录版本9 个工具