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

NameTypeRequiredDescription
form_idstringYesForm to list submissions for.
sinceISO dateNoInclude submissions from this date.
untilISO dateNoInclude submissions through this date. A date-only value includes the whole UTC day.
refstringNoMatch the submission's source.
limitinteger, 1–100NoMaximum number of submissions to return. Defaults to 25.
cursorstringNoContinue 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

NameTypeRequiredDescription
submission_idstringYesSubmission 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

NameTypeRequiredDescription
form_idstringYesForm to export submissions for.
format"csv"NoExport format.
start_dateISO 8601 date stringNoInclude submissions from this date.
end_dateISO 8601 date stringNoInclude submissions through this date.
include_email_verificationbooleanNoAdd 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

NameTypeRequiredDescription
form_idstringYesForm to summarize.
period"7d", "30d", or "90d"NoTime 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

NameTypeRequiredDescription
form_idstringYesForm to measure.
periodstringNoTime period. Defaults to "30d".
granularity"day" or "week"NoGroup 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.