# Get customiser (`get_customiser`)

Reads one customiser of the connected Store: its name, active state, pricing model, sign category, product family and styling selection mode. The optional include array adds the customiser behavioural settings document or its editable storefront labels in the same call. It takes the integer customiser id list_customisers returns, requires the customisers:read scope, has no side effects and is safe to retry.

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

## Purpose

Read one customiser before changing it, and read its settings or labels document in the same call.

## 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 customisers:read scope.

## Arguments

| Property | Type | Required | Description |
| --- | --- | --- | --- |
| `customiser_id` | integer | yes | The customiser id, from list_customisers. |
| `include` | array of string | no | Extra documents to return alongside the customiser: settings for its behavioural configuration, labels for its editable storefront text. Both require only customisers:read. |

## Result

One customiser object, the requested include documents, and the merchant-admin deep link for the customiser. Both include documents are fixed-shape configuration records, so the response size does not grow with the size of the store.

| Property | Type | Required | Description |
| --- | --- | --- | --- |
| `request_id` | string | yes |  |
| `store` | object | yes |  |
| `store.id` | integer | yes |  |
| `store.name` | string | yes |  |
| `customiser` | object | yes | The customiser record. |
| `customiser.id` | integer | yes |  |
| `customiser.name` | string or null | no |  |
| `customiser.active` | boolean | yes |  |
| `customiser.pricing_model` | string | yes | One of: `simple_letter`, `advanced_letter`, `frame_fit`. |
| `customiser.pricing_model_display_name` | string | yes |  |
| `customiser.sign_category` | string or null | no |  |
| `customiser.product_family` | string or null | no |  |
| `customiser.selection_mode` | string | yes |  |
| `customiser.created_at` | string or null | no |  |
| `customiser.updated_at` | string or null | no |  |
| `settings` | object | no | The behavioural settings document, present only when include contained settings. Its members are the settings fields /api/v3 publishes. |
| `labels` | object | no | The editable storefront labels document, present only when include contained labels. |
| `links` | object | yes | Where the merchant edits this customiser. |
| `links.admin_url` | string | yes |  |

## Error cases

| Code | Recovery |
| --- | --- |
| `insufficient_scope` | The connection was approved without customisers:read. |
| `resource_not_found` | No customiser with that id belongs to this store. Call list_customisers to rediscover a valid id. |

## Example: Read a customiser with its settings

Request:

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "get_customiser",
    "arguments": {
      "customiser_id": 42,
      "include": [
        "settings"
      ]
    }
  }
}
```

Response:

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "structuredContent": {
      "request_id": "req_01jz9x2k7c8f3m5n6p7q8r9s0t",
      "store": {
        "id": 12,
        "name": "Demo Signs"
      },
      "customiser": {
        "id": 42,
        "name": "Neon sign builder",
        "active": true,
        "pricing_model": "frame_fit",
        "pricing_model_display_name": "Frame Fit",
        "sign_category": "neon",
        "product_family": "neon",
        "selection_mode": "per_word",
        "created_at": "2026-08-14T00:00:00Z",
        "updated_at": "2026-08-14T00:00:00Z"
      },
      "settings": {
        "customiser_id": 42,
        "currency": "USD",
        "add_to_cart": true
      },
      "links": {
        "admin_url": "https://web.signcustomiser.com/app/customisers/42"
      }
    }
  }
}
```

## Example: An id that belongs to another store (error)

Request:

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

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."
      }
    }
  }
}
```
