Skip to main content
Glama

list_submissions

Read-only

Retrieve a paginated list of form submissions processed through your Checkout Page account. Pass livemode: false to read test-mode records.

This tool is useful for customer-support and operations questions about what a person submitted on a form, which page a submission came from, and when it was captured.

Example uses:

  • "Show me recent submissions"

  • "Find submissions from jane@example.com"

  • "Find submissions for customer 6812fe6e9f39b6760576f01c"

  • "Show submissions for form X"

  • "Show submissions for the Lead Capture Form"

  • "Show failed submissions"

  • "How many submissions did I get this week?" — apply a date range and read total

Example support uses:

  • Customer says they filled in a form but is unsure it went through — search by email and check whether a matching submission exists and whether status is succeeded or failed.

  • Merchant wants all submissions for a specific person — use search with email or name, or customerId when known.

  • Merchant wants submissions from a specific form — use pageId when you know the page ID, or search with the form title.

  • Merchant wants the full payload for one result — first call list_submissions, then pass a returned id into get_submission.

Data limitations:

  • No tool in the MCP can edit or delete submissions.

  • Submission records show what was captured, but not downstream fulfillment or email delivery status.

Date filters: Always use UTC timestamps with the Z suffix (e.g. 2026-03-01T00:00:00Z). Never use local timezone offsets — dates are stored and compared in UTC.

Submissions are returned sorted newest-first. Use cursor-based pagination (starting_after / ending_before) to page through large result sets. starting_after and ending_before cannot be used simultaneously. Max limit is 100, default is 10.

This tool is read-only. You cannot modify or delete submissions through MCP. For those actions, explain what is on file and direct the merchant to the Checkout Page dashboard.

Input Schema

NameRequiredDescriptionDefault
limitNoNumber of records per page (integer, max 100, default 10).
pageIdNoFilter by the form page ID that received the submission.
searchNoSearch by `customerEmail`, `customerName`, and `formTitle`. Contains match (for example, 'jane' matches 'jane@example.com' and 'Jane Smith', while 'lead' matches 'Lead Capture Form').
statusNoFilter by submission status. Valid values: succeeded, failed.
livemodeNoSet to false to read test-mode records (created while a page was in test mode). Defaults to live records.
customerIdNoFilter by the associated customer ID.
orderStatusNoFilter by lifecycle status. Valid values: active, canceled. Without this filter, canceled submissions are included, as in the payments and bookings lists.
createdAfterNoFilter by lower bound of createdAt. Use a UTC ISO 8601 timestamp with a `Z` suffix.
createdBeforeNoFilter by upper bound of createdAt. Use a UTC ISO 8601 timestamp with a `Z` suffix.
ending_beforeNoCursor-based pagination. Pass a record `id` to return results before it. Cannot be used with `starting_after`.
starting_afterNoCursor-based pagination. Pass a record `id` to return results after it. Cannot be used with `ending_before`.

Output Schema

NameRequiredDescriptionDefault
dataYes
totalYesTotal number of records matching the query across all pages.
has_moreYesWhether more records exist beyond the current page.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed8 schema fields changed
    • addedInput schema / properties / orderStatus
      Added value: +{
      +  "description": "Filter by lifecycle status. Valid values: active, canceled. Without this filter, canceled submissions are included, as in the payments and bookings lists.",
      +  "enum": [
      +    "active",
      +    "canceled"
      +  ],
      +  "type": "string"
      +}
    • addedOutput schema / properties / data / items / properties / canceledAt
      Added value: +{
      +  "anyOf": [
      +    {
      +      "format": "date-time",
      +      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$",
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "description": "ISO 8601 timestamp when the submission was canceled."
      +}
    • addedOutput schema / properties / data / items / properties / canceledBy
      Added value: +{
      +  "description": "ID of the dashboard user who canceled the submission. Absent when it was canceled through the seller API.",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / data / items / properties / canceledByApiKey
      Added value: +{
      +  "description": "ID of the API key that canceled the submission, when it was canceled through the seller API. The key may have been deleted since; `canceledByApiKeyName` keeps its name.",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / data / items / properties / canceledByApiKeyName
      Added value: +{
      +  "description": "Name of the API key that canceled the submission, as it was at the time. Kept when the key is deleted later.",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / data / items / properties / canceledReason
      Added value: +{
      +  "description": "The reason given when the submission was canceled.",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / data / items / properties / orderStatus
      Added value: +{
      +  "default": "active",
      +  "description": "Lifecycle status set by the seller. Valid values: active, canceled. `canceled` means the seller canceled the submission: it no longer counts toward \"Prevent duplicate submissions\" and its files left the customer portal.",
      +  "enum": [
      +    "active",
      +    "canceled"
      +  ],
      +  "type": "string"
      +}
    • changedOutput schema / properties / data / items / required
      Previous value: -[
      -  "id",
      -  "status",
      -  "createdAt",
      -  "updatedAt",
      -  "dashboardUrl"
      -]New value: +[
      +  "id",
      +  "status",
      +  "orderStatus",
      +  "createdAt",
      +  "updatedAt",
      +  "dashboardUrl"
      +]
  2. First observed

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnly/destructive annotations it adds real operational context: no MCP tool can edit or delete submissions, records omit downstream fulfillment and email delivery status, results are newest-first, cursors are exclusive, and the dashboard is the fallback for write actions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose and data limitations are front-loaded, but the read-only/no-edit statement is repeated three times (mid-paragraph, under Data limitations, and the bolded closing paragraph), and the long example-use lists partially duplicate the support-use bullets.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 11-filter list tool with an output schema, everything an agent needs is present: filter semantics, timezone rules, pagination behavior, ordering, and explicit boundaries on what the data does and does not contain.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and most parameter guidance in the description (UTC Z-suffix dates, starting_after/ending_before mutual exclusion, max limit 100, default 10, livemode: false for test data) restates what the schema already documents. Baseline 3 applies; the description adds little parameter-level meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb and resource: 'Retrieve a paginated list of form submissions processed through your Checkout Page account.' It distinguishes itself from get_submission by naming that sibling as the follow-up for a single record's full payload.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete query examples ('Find submissions from jane@example.com', 'Show failed submissions') and explicit routing rules: use pageId when the page ID is known, search with the form title otherwise, and call get_submission when the full payload for one result is needed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources