Submission and analytics tools
Use these MCP tools to read form submissions, export submission data, and track submission counts over time.
These tools do not change form or submission data. Every invocation attempts to append a private audit record, and each tool has readOnlyHint: false. Successful results carry JSON in content[0].text and matching structuredContent.
list_submissions
Lists submissions for a form. Team visibility rules apply to hidden or masked fields, and deleted submissions are excluded. This tool requires submissions access.
Input
| Name | Type | Required | Description |
|---|---|---|---|
form_id | string | Yes | Form to list submissions for. |
since | ISO date | No | Include submissions from this date. |
until | ISO date | No | Include submissions through this date. A date-only value includes the whole UTC day. |
ref | string | No | Match the submission's source. |
limit | integer, 1–100 | No | Maximum number of submissions to return. Defaults to 25. |
cursor | string | No | Continue from the opaque next_cursor value. |
What it returns
Returns submissions, an array of submission objects with id, form_id, submitted_at, status, ref, and responses, plus optional email_verification and email_risk fields. Items from a Headless endpoint have ref: "headless". The result also includes total, limit, has_more, and next_cursor for pagination.
Each responses value depends on its field type. Values can be strings, numbers, arrays, or null. Matrix answers use keys such as field_name.row_id, and ranking answers are JSON-encoded strings. See field value shapes.
Example call
{
"form_id": "FORM_ID",
"since": "2026-10-01",
"until": "2026-10-31",
"limit": 25
}get_submission
Gets one submission by its ID.
Input
| Name | Type | Required | Description |
|---|---|---|---|
submission_id | string | Yes | Submission to retrieve. |
What it returns
Returns the same submission object as an item from list_submissions, plus questions, an array of question objects with id, label, and type.
Example call
{
"submission_id": "SUBMISSION_ID"
}export_submissions
Exports up to 5,000 submission rows as CSV.
Input
| Name | Type | Required | Description |
|---|---|---|---|
form_id | string | Yes | Form to export submissions for. |
format | "csv" | No | Export format. |
start_date | ISO 8601 date string | No | Include submissions from this date. |
end_date | ISO 8601 date string | No | Include submissions through this date. |
include_email_verification | boolean | No | Add an email_verification column to the CSV. |
The CSV header starts with "id","submitted_at","status", followed by the field names. The CSV is inline in a data:text/csv;charset=utf-8,... data URL; there is no hosted file.
Example call
{
"form_id": "FORM_ID",
"format": "csv",
"start_date": "2026-10-01",
"end_date": "2026-10-31",
"include_email_verification": true
}get_analytics_summary
Gets submission counts for a form over a selected period. These are submission counts, not visits.
Input
| Name | Type | Required | Description |
|---|---|---|---|
form_id | string | Yes | Form to summarize. |
period | "7d", "30d", or "90d" | No | Time period. Defaults to "30d". |
What it returns
Returns submissions, period, period_start, period_end, completed_submissions, and partial_submissions.
Example call
{
"form_id": "FORM_ID",
"period": "30d"
}get_submission_trend
Gets submission counts grouped by day or week for a form.
Input
| Name | Type | Required | Description |
|---|---|---|---|
form_id | string | Yes | Form to measure. |
period | string | No | Time period. Defaults to "30d". |
granularity | "day" or "week" | No | Group counts by day or week. Defaults to "day". |
What it returns
Returns data_points, an array of { date, count } objects, plus period, granularity, and total.
Example call
{
"form_id": "FORM_ID",
"period": "30d",
"granularity": "day"
}Errors
Tool errors return HTTP 200 with result.isError: true. The error text in content[0].text contains a JSON object with jsonrpc_error, an error code, a message, and data.name. Input schema failures start with MCP error -32602: Input validation error.