Sign Customiser

Count and locate shopper submissions, and obtain the ids get_quote takes, without pulling shopper free text into the answer.

Overview

Lists the quote requests and custom-design submissions shoppers made through the connected Store customisers, with each submission id, its type, its submission number, the customiser and form it came from, and its creation date. Filters narrow it by type, customiser, form and UTC date range. Form responses, the design snapshot and any attached files are a separate per-submission read. It requires the quotes:read scope and has no side effects.

Permission

Requires thequotes:readpermission. A connection without it answersinsufficient_scopenaming the permission to approve.

Annotations

readOnlyHinttrue
destructiveHintfalse
idempotentHinttrue
openWorldHintfalse

Prerequisites

  • A merchant has connected this store and approved the quotes:read scope.

Arguments

limitinteger

How many submissions to return per page, between 1 and 100. Defaults to 20.

cursorstring

The opaque next_cursor value from the previous page, sent back with identical filters.

filterobject

Optional filters. An unknown filter is rejected, never ignored.

filter.typestring

Only submissions of this kind. Expected to grow: tolerate unknown values.

One of: quote, custom_design

filter.customiser_idinteger

Only submissions made through this customiser.

filter.form_idinteger

Only submissions of this form.

filter.created_fromstring

Inclusive UTC start date, YYYY-MM-DD.

filter.created_tostring

Inclusive UTC end date, YYYY-MM-DD.

Result

Up to `limit` submission summaries plus the cursor for the next page. Deliberately narrower than the public API row, which returns each submission in full: responses, files and the design snapshot are get_quote.

request_idstringalways present
storeobjectalways present
store.idintegeralways present
store.namestringalways present
quotesarray of objectalways present

The page of submission summaries. Responses, files and the design snapshot are get_quote.

quotes[].idintegeralways present
quotes[].typestringalways present

One of: quote, custom_design

quotes[].submission_numberinteger or null
quotes[].customiser_idinteger or null
quotes[].form_idinteger or null
quotes[].created_atstring or null
paginationobjectalways present
pagination.has_morebooleanalways present
pagination.next_cursorstring or null

Error cases

insufficient_scope

The connection was approved without quotes:read.

invalid_cursor

The cursor was altered or reused with different filters; restart with no cursor.

invalid_parameter

A date filter is not YYYY-MM-DD in UTC, or an id filter is out of range.

unsupported_value

A filter value is not one this API accepts; allowed_values lists the accepted set.

Custom-design submissions from one customiser

tools/call
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "list_quotes",
    "arguments": {
      "limit": 1,
      "filter": {
        "type": "custom_design",
        "customiser_id": 42
      }
    }
  }
}
result
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "structuredContent": {
      "request_id": "req_01jz9x2k7c8f3m5n6p7q8r9s0t",
      "store": {
        "id": 12,
        "name": "Demo Signs"
      },
      "quotes": [
        {
          "id": 8123,
          "type": "custom_design",
          "submission_number": 14,
          "customiser_id": 42,
          "form_id": 7,
          "created_at": "2026-07-19T01:00:00Z"
        }
      ],
      "pagination": {
        "has_more": false,
        "next_cursor": null
      }
    }
  }
}

A submission type that does not exist (error)

tools/call
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "list_quotes",
    "arguments": {
      "filter": {
        "type": "enquiry"
      }
    }
  }
}
result
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "isError": true,
    "structuredContent": {
      "error": {
        "code": "invalid_parameter",
        "title": "Invalid query parameter",
        "detail": "The filter[type] value is not a supported submission type.",
        "recovery": "Correct the parameter named in parameter. Dates are YYYY-MM-DD in UTC and identifiers are integers between 1 and 2147483647.",
        "parameter": "filter[type]",
        "allowed_values": [
          "quote",
          "custom_design"
        ]
      }
    }
  }
}