# Get integration product (`get_integration_product`)

Reads one synchronised product of the connected Store: its title, price and comparison price in integer minor units, currency, dimensions in centimetres, image and artwork references. With include selections it also returns the Store-local option ids the design used, each carrying a stable integer value alongside the merchant-editable display name. It requires the products:read scope and has no side effects.

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

## Purpose

Read one product in full, and resolve the option ids its design captured back to the customiser configuration.

## Annotations

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

## Prerequisites

- A product id from list_integration_products.
- A merchant has connected this store and approved the products:read scope.

## Arguments

| Property | Type | Required | Description |
| --- | --- | --- | --- |
| `product_id` | integer | yes | The product id, from list_integration_products. |
| `include` | array of string | no | Add selections to return the option ids the design captured alongside the product. |

## Result

One product object, and with include selections one selections object. Both are single records; neither grows 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 |  |
| `product` | object | yes | The product record, with the field names the public API publishes. |
| `selections` | object | no | The option ids captured for the design, present only when include contained selections. A selection the product did not use, or that no longer resolves against its customiser, is null. |

## Error cases

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

## Example: Read a product with its captured selections

Request:

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "get_integration_product",
    "arguments": {
      "product_id": 731,
      "include": [
        "selections"
      ]
    }
  }
}
```

Response:

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "structuredContent": {
      "request_id": "req_01jz9x2k7c8f3m5n6p7q8r9s0t",
      "store": {
        "id": 12,
        "name": "Demo Signs"
      },
      "product": {
        "id": 731,
        "customiser_id": 42,
        "title": "Custom neon sign",
        "price_amount": 12900,
        "currency": "AUD",
        "width_cm": 80.5,
        "height_cm": 31.5
      },
      "selections": {
        "letter_type": {
          "value": 18,
          "display_name": "Front and halo lit"
        },
        "colours": [
          {
            "value": 12,
            "display_name": "Warm white"
          }
        ]
      }
    }
  }
}
```

## Example: A product id from another store (error)

Request:

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "get_integration_product",
    "arguments": {
      "product_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."
      }
    }
  }
}
```
