# List customiser length pricings (`list_customiser_length_pricings`)

Lists the length pricings of one customiser, oldest first. A length pricing is a named price list of boundary rows by sign size that an advanced_letter or frame_fit customiser charges by. Each entry gives the price list id, name, letter pricing mode and method, shipping settings, Store currency and row count, without the rows; get_customiser_length_pricing returns one price list with its rows. Sheet pricing is not part of this family. Results are paginated and limited to the connected Store. It requires the pricing:read scope and has no side effects.

- Source URL: https://www.signcustomiser.com/help/mcp/tools/list_customiser_length_pricings/
- Markdown URL: https://www.signcustomiser.com/help/mcp/tools/list_customiser_length_pricings.md
- MCP endpoint: https://mcp.signcustomiser.com
- Required scope: `pricing:read`
- Behaviour: read

## Purpose

Find the length pricings an advanced_letter or frame_fit customiser charges by, and obtain the ids the other length pricing tools take.

## Annotations

| Hint | Value |
| --- | --- |
| readOnlyHint | true |
| destructiveHint | false |
| idempotentHint | true |
| openWorldHint | false |

## Prerequisites

- A customiser id from list_customisers.
- A merchant has connected this store and approved the pricing:read scope.

## Arguments

| Property | Type | Required | Description |
| --- | --- | --- | --- |
| `customiser_id` | integer | yes | The customiser id, from list_customisers. |
| `limit` | integer | no | How many price lists to return per page, between 1 and 100. Defaults to 20. |
| `cursor` | string | no | The opaque next_cursor value from the previous page. Omit it for the first page. |

## Result

Up to limit price list summaries, oldest first, each with id, name, letter_pricing_mode, letter_pricing_method, shipping, currency, row_count and timestamps, plus the cursor for the next page. A customiser that does not price by length pricing returns an empty list.

| Property | Type | Required | Description |
| --- | --- | --- | --- |
| `request_id` | string | yes |  |
| `store` | object | yes |  |
| `store.id` | integer | yes |  |
| `store.name` | string | yes |  |
| `customiser_id` | integer | yes |  |
| `length_pricings` | array of object | yes | The page of price list summaries, oldest first. row_count is the number of boundary rows the price list holds. |
| `length_pricings[].id` | integer | yes |  |
| `length_pricings[].customiser_id` | integer | no |  |
| `length_pricings[].name` | string or null | no |  |
| `length_pricings[].letter_pricing_mode` | string or null | no |  |
| `length_pricings[].letter_pricing_method` | string or null | no |  |
| `length_pricings[].shipping` | object | no |  |
| `length_pricings[].currency` | string or null | no |  |
| `length_pricings[].row_count` | integer | yes |  |
| `length_pricings[].created_at` | string or null | no |  |
| `length_pricings[].updated_at` | string or null | no |  |
| `pagination` | object | yes |  |
| `pagination.has_more` | boolean | yes |  |
| `pagination.next_cursor` | string or null | no |  |

## Error cases

| Code | Recovery |
| --- | --- |
| `insufficient_scope` | The connection was approved without pricing:read. |
| `invalid_cursor` | The cursor was altered or reused for a different customiser; restart with no cursor. |
| `resource_not_found` | No customiser with that id belongs to this store. Call list_customisers to rediscover a valid id. |

## Example: First page of a customiser length pricings

Request:

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "list_customiser_length_pricings",
    "arguments": {
      "customiser_id": 42
    }
  }
}
```

Response:

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "structuredContent": {
      "request_id": "req_01jz9x2k7c8f3m5n6p7q8r9s0t",
      "store": {
        "id": 12,
        "name": "Demo Signs"
      },
      "customiser_id": 42,
      "length_pricings": [
        {
          "id": 9,
          "customiser_id": 42,
          "name": "Standard",
          "letter_pricing_mode": "every_letter_cost",
          "letter_pricing_method": "fixed_letter",
          "shipping": {
            "calculation": "physical",
            "volumetric_divisor": null,
            "add_weight_to_product": false
          },
          "currency": "USD",
          "created_at": "2026-08-13T00:00:00Z",
          "updated_at": "2026-08-13T00:00:00Z",
          "row_count": 1
        }
      ],
      "pagination": {
        "has_more": false,
        "next_cursor": null
      }
    }
  }
}
```

## Example: A customiser of another Store (error)

Request:

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "list_customiser_length_pricings",
    "arguments": {
      "customiser_id": 999
    }
  }
}
```

Response:

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "isError": true,
    "structuredContent": {
      "error": {
        "code": "resource_not_found",
        "title": "Resource not found",
        "detail": "The requested resource does not exist or does not belong to the authenticated store.",
        "recovery": "The identifier does not exist in this store. Use the matching list tool to rediscover a valid id."
      }
    }
  }
}
```
