Sign Customiser

Identify the Store the connection acts for, report which scopes the merchant approved, and read the currency and integration_id the commerce writes require, before calling anything else.

Overview

Returns the Store this connection was authorised for: its integer id, name, storefront platform, subscription plan, currency, connected commerce integrations, creation date and the scopes this connection was granted. Every other tool operates inside this Store, so this is the call that establishes which merchant an assistant is acting for. It is also where the two values the commerce writes demand come from: currency is the code create_order and create_integration_product must send, and integrations carries the integration_id they must name. It requires the store:read scope, has no side effects and is safe to retry.

Permission

Requires thestore: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 store:read scope.

Arguments

This tool takes no arguments.

Result

One store object. Its only nested collection is integrations, which is capped at 50 rows and is empty or one row for almost every Store, so the response size does not vary with the size of the store.

request_idstringalways present

The Sign Customiser request id for this call.

storeobjectalways present

The Store this connection resolved to.

store.idintegeralways present
store.namestringalways present
idintegeralways present

The Store id.

namestringalways present

The Store name.

platformstringalways present

The storefront platform the Store runs on.

One of: shopify, universal

planstring or null

Lowercase subscription plan identifier, or null when the Store has no active plan. Expected to grow: tolerate unknown values.

currencystring or null

ISO 4217 currency code every price on this Store is denominated in, or null when the merchant has not configured a valid one. create_order and create_integration_product must send this exact value, and fail with store_currency_unavailable while it is null.

integrationsarray of objectalways present

The commerce integrations connected to this Store, enabled first then oldest first, capped at 50. A Store can only have one enabled integration at a time, so the id a write will accept is always present. Empty means the merchant has connected nothing and cannot create orders or integration products yet.

integrations[].objectstringalways present

One of: integration

integrations[].idintegeralways present

The value create_order and create_integration_product send as integration_id.

integrations[].typestringalways present

The connector this integration talks to, from the current set: custom, shopify, woocommerce, wix, etsy. Expected to grow: tolerate unknown values. Only type custom accepts the commerce writes.

integrations[].namestringalways present

The name the merchant gave this integration.

integrations[].enabledbooleanalways present

Whether the integration is currently enabled. A write naming a disabled integration fails with not_found.

scopesarray of stringalways present

The scopes the merchant approved for this connection.

created_atstring or null

ISO 8601 UTC creation timestamp.

Error cases

insufficient_scope

The connection was approved without store:read. Ask the merchant to reconnect and approve it.

Identify the connected store

tools/call
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "get_store",
    "arguments": {}
  }
}
result
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "structuredContent": {
      "request_id": "req_01jz9x2k7c8f3m5n6p7q8r9s0t",
      "store": {
        "id": 12,
        "name": "Demo Signs"
      },
      "id": 12,
      "name": "Demo Signs",
      "platform": "universal",
      "plan": "starter",
      "currency": "GBP",
      "integrations": [
        {
          "object": "integration",
          "id": 17,
          "type": "custom",
          "name": "Warehouse bridge",
          "enabled": true
        }
      ],
      "scopes": [
        "store:read",
        "customisers:read"
      ],
      "created_at": "2026-01-12T03:14:15Z"
    }
  }
}

A Store with nothing connected, so the commerce writes are unavailable

tools/call
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "get_store",
    "arguments": {}
  }
}
result
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "structuredContent": {
      "request_id": "req_01jz9x2k7c8f3m5n6p7q8r9s0t",
      "store": {
        "id": 12,
        "name": "Demo Signs"
      },
      "id": 12,
      "name": "Demo Signs",
      "platform": "shopify",
      "plan": "starter",
      "currency": null,
      "integrations": [],
      "scopes": [
        "store:read"
      ],
      "created_at": "2026-01-12T03:14:15Z"
    }
  }
}

The connection was not granted store:read (error)

tools/call
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "get_store",
    "arguments": {}
  }
}
result
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "isError": true,
    "structuredContent": {
      "error": {
        "code": "insufficient_scope",
        "title": "Insufficient scope",
        "detail": "The tool [get_store] requires the store:read scope, which this connection was not granted.",
        "recovery": "The connection was authorised without the scope this tool needs. Ask the merchant to reconnect the connector and approve the scope named in required_scopes. Do not retry this call.",
        "required_scopes": [
          "store:read"
        ],
        "granted_scopes": [
          "customisers:read"
        ]
      }
    }
  }
}