Skip to main content
Glama

Get a product's full details

get_product_details
Read-onlyIdempotent

Reads exact product or variant details from Shop Nobi's public catalog. Supply one selector: id or variantId for a Nobi variant, productId for a Nobi parent product, sourceVariantId or sourceProductId for the store's own catalog ID, sku, or productUrl for an exact stored URL. Shopify product or variant IDs must be paired with the selling merchant: send storeDomain, such as example.com, or a known Nobi merchantId. Source IDs and SKUs are never resolved globally. Nobi IDs accept a UUID or the Base62 ID returned by search. Shopify source IDs accept numeric IDs or correctly typed Shopify GIDs. A parent selection returns parent information and variant choices, with id, variantId, price, currency, stock, inventory and variant specifications unset until a variant is selected. Ambiguous or conflicting selectors are refused. The tool never fetches a supplied URL. Catalogs contain no reviews or ratings. For follow-up calls in this conversation, send the visitorId returned by a previous result unchanged. Omit it on the first call; do not invent one.

Input Schema

NameRequiredDescriptionDefault
idNoLegacy alias for variantId, returned as id by search.
skuNoLiteral exact SKU within one store. Duplicate matches are refused. Requires merchant context.
productIdNoNobi parent product UUID or Base62 product ID; selects no variant.
variantIdNoNobi variant UUID or Base62 variant ID.
visitorIdNoFor follow-up calls in this conversation, send the visitorId returned by a previous result unchanged. Omit it on the first call; do not invent one.
merchantIdNoThe store's Nobi merchant UUID, returned by search.
productUrlNoAn exact HTTPS catalog product URL, optionally with its numeric Shopify variant selector. Never fetched.
storeDomainNoThe store's exact hostname, such as example.com, or its HTTPS address.
sourceProductIdNoThe store's parent product ID, such as a Shopify numeric product ID or Product GID. Pair it with storeDomain (the selling merchant's hostname) or a known Nobi merchantId.
sourceVariantIdNoThe store's variant ID, such as a Shopify numeric variant ID or ProductVariant GID. Pair it with storeDomain (the selling merchant's hostname) or a known Nobi merchantId.

Output Schema

NameRequiredDescriptionDefault
foundYes
productYes
visitorIdNoFor follow-up calls in this conversation, send the visitorId returned by a previous result unchanged. Omit it on the first call; do not invent one.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • addedInput schema / properties / visitorId
      Added value: +{
      +  "description": "For follow-up calls in this conversation, send the visitorId returned by a previous result unchanged. Omit it on the first call; do not invent one.",
      +  "format": "uuid",
      +  "maxLength": 36,
      +  "minLength": 1,
      +  "type": "string"
      +}
    • addedOutput schema / properties / visitorId
      Added value: +{
      +  "description": "For follow-up calls in this conversation, send the visitorId returned by a previous result unchanged. Omit it on the first call; do not invent one.",
      +  "format": "uuid",
      +  "maxLength": 36,
      +  "minLength": 1,
      +  "type": "string"
      +}
  2. Changed26 schema fields changed
    • addedInput schema / additionalProperties
      Added value: +false
    • addedInput schema / oneOf
      Added value: +[
      +  {
      +    "not": {
      +      "anyOf": [
      +        {
      +          "required": [
      +            "variantId"
      +          ]
      +        },
      +        {
      +          "required": [
      +            "productId"
      +          ]
      +        },
      +        {
      +          "required": [
      +            "sourceVariantId"
      +          ]
      +        },
      +        {
      +          "required": [
      +            "sourceProductId"
      +          ]
      +        },
      +        {
      +          "required": [
      +            "sku"
      +          ]
      +        },
      +        {
      +          "required": [
      +            "productUrl"
      +          ]
      +        }
      +      ]
      +    },
      +    "required": [
      +      "id"
      +    ]
      +  },
      +  {
      +    "not": {
      +      "anyOf": [
      +        {
      +          "required": [
      +            "id"
      +          ]
      +        },
      +        {
      +          "required": [
      +            "productId"
      +          ]
      +        },
      +        {
      +          "required": [
      +            "sourceVariantId"
      +          ]
      +        },
      +        {
      +          "required": [
      +            "sourceProductId"
      +          ]
      +        },
      +        {
      +          "required": [
      +            "sku"
      +          ]
      +        },
      +        {
      +          "required": [
      +            "productUrl"
      +          ]
      +        }
      +      ]
      +    },
      +    "required": [
      +      "variantId"
      +    ]
      +  },
      +  {
      +    "not": {
      +      "anyOf": [
      +        {
      +          "required": [
      +            "id"
      +          ]
      +        },
      +        {
      +          "required": [
      +            "variantId"
      +          ]
      +        },
      +        {
      +          "required": [
      +            "sourceVariantId"
      +          ]
      +        },
      +        {
      +          "required": [
      +            "sourceProductId"
      +          ]
      +        },
      +        {
      +          "required": [
      +            "sku"
      +          ]
      +        },
      +        {
      +          "required": [
      +            "productUrl"
      +          ]
      +        }
      +      ]
      +    },
      +    "required": [
      +      "productId"
      +    ]
      +  },
      +  {
      +    "anyOf": [
      +      {
      +        "required": [
      +          "merchantId"
      +        ]
      +      },
      +      {
      +        "required": [
      +          "storeDomain"
      +        ]
      +      }
      +    ],
      +    "not": {
      +      "anyOf": [
      +        {
      +          "required": [
      +            "id"
      +          ]
      +        },
      +        {
      +          "required": [
      +            "variantId"
      +          ]
      +        },
      +        {
      +          "required": [
      +            "productId"
      +          ]
      +        },
      +        {
      +          "required": [
      +            "sourceProductId"
      +          ]
      +        },
      +        {
      +          "required": [
      +            "sku"
      +          ]
      +        },
      +        {
      +          "required": [
      +            "productUrl"
      +          ]
      +        }
      +      ]
      +    },
      +    "required": [
      +      "sourceVariantId"
      +    ]
      +  },
      +  {
      +    "anyOf": [
      +      {
      +        "required": [
      +          "merchantId"
      +        ]
      +      },
      +      {
      +        "required": [
      +          "storeDomain"
      +        ]
      +      }
      +    ],
      +    "not": {
      +      "anyOf": [
      +        {
      +          "required": [
      +            "id"
      +          ]
      +        },
      +        {
      +          "required": [
      +            "variantId"
      +          ]
      +        },
      +        {
      +          "required": [
      +            "productId"
      +          ]
      +        },
      +        {
      +          "required": [
      +            "sourceVariantId"
      +          ]
      +        },
      +        {
      +          "required": [
      +            "sku"
      +          ]
      +        },
      +        {
      +          "required": [
      +            "productUrl"
      +          ]
      +        }
      +      ]
      +    },
      +    "required": [
      +      "sourceProductId"
      +    ]
      +  },
      +  {
      +    "anyOf": [
      +      {
      +        "required": [
      +          "merchantId"
      +        ]
      +      },
      +      {
      +        "required": [
      +          "storeDomain"
      +        ]
      +      }
      +    ],
      +    "not": {
      +      "anyOf": [
      +        {
      +          "required": [
      +            "id"
      +          ]
      +        },
      +        {
      +          "required": [
      +            "variantId"
      +          ]
      +        },
      +        {
      +          "required": [
      +            "productId"
      +          ]
      +        },
      +        {
      +          "required": [
      +            "sourceVariantId"
      +          ]
      +        },
      +        {
      +          "required": [
      +            "sourceProductId"
      +          ]
      +        },
      +        {
      +          "required": [
      +            "productUrl"
      +          ]
      +        }
      +      ]
      +    },
      +    "required": [
      +      "sku"
      +    ]
      +  },
      +  {
      +    "not": {
      +      "anyOf": [
      +        {
      +          "required": [
      +            "id"
      +          ]
      +        },
      +        {
      +          "required": [
      +            "variantId"
      +          ]
      +        },
      +        {
      +          "required": [
      +            "productId"
      +          ]
      +        },
      +        {
      +          "required": [
      +            "sourceVariantId"
      +          ]
      +        },
      +        {
      +          "required": [
      +            "sourceProductId"
      +          ]
      +        },
      +        {
      +          "required": [
      +            "sku"
      +          ]
      +        }
      +      ]
      +    },
      +    "required": [
      +      "productUrl"
      +    ]
      +  }
      +]
    • changedInput schema / properties / id / description
      Previous value: -"The id of the product, from a product search result."New value: +"Legacy alias for variantId, returned as id by search."
    • changedInput schema / properties / id / maxLength
      Previous value: -22New value: +36
    • changedInput schema / properties / id / minLength
      Previous value: -22New value: +1
    • addedInput schema / properties / merchantId
      Added value: +{
      +  "description": "The store's Nobi merchant UUID, returned by search.",
      +  "maxLength": 36,
      +  "minLength": 1,
      +  "type": "string"
      +}
    • addedInput schema / properties / productId
      Added value: +{
      +  "description": "Nobi parent product UUID or Base62 product ID; selects no variant.",
      +  "maxLength": 36,
      +  "minLength": 1,
      +  "type": "string"
      +}
    • addedInput schema / properties / productUrl
      Added value: +{
      +  "description": "An exact HTTPS catalog product URL, optionally with its numeric Shopify variant selector. Never fetched.",
      +  "maxLength": 2048,
      +  "minLength": 1,
      +  "type": "string"
      +}
    • addedInput schema / properties / sku
      Added value: +{
      +  "description": "Literal exact SKU within one store. Duplicate matches are refused. Requires merchant context.",
      +  "maxLength": 2048,
      +  "minLength": 1,
      +  "type": "string"
      +}
    • addedInput schema / properties / sourceProductId
      Added value: +{
      +  "description": "The store's parent product ID, such as a Shopify numeric product ID or Product GID. Pair it with storeDomain (the selling merchant's hostname) or a known Nobi merchantId.",
      +  "maxLength": 2048,
      +  "minLength": 1,
      +  "type": "string"
      +}
    • addedInput schema / properties / sourceVariantId
      Added value: +{
      +  "description": "The store's variant ID, such as a Shopify numeric variant ID or ProductVariant GID. Pair it with storeDomain (the selling merchant's hostname) or a known Nobi merchantId.",
      +  "maxLength": 2048,
      +  "minLength": 1,
      +  "type": "string"
      +}
    • addedInput schema / properties / storeDomain
      Added value: +{
      +  "description": "The store's exact hostname, such as example.com, or its HTTPS address.",
      +  "maxLength": 2048,
      +  "minLength": 1,
      +  "type": "string"
      +}
    • addedInput schema / properties / variantId
      Added value: +{
      +  "description": "Nobi variant UUID or Base62 variant ID.",
      +  "maxLength": 36,
      +  "minLength": 1,
      +  "type": "string"
      +}
    • removedInput schema / required
      Removed value: -[
      -  "id"
      -]
    • changedOutput schema / properties / product / properties / currency / type
      Previous value: -"string"New value: +[
      +  "string",
      +  "null"
      +]
    • addedOutput schema / properties / product / properties / id / description
      Added value: +"Legacy alias for the selected Nobi variantId; null for parent details. productId identifies the parent."
    • changedOutput schema / properties / product / properties / id / type
      Previous value: -"string"New value: +[
      +  "string",
      +  "null"
      +]
    • changedOutput schema / properties / product / properties / inStock / type
      Previous value: -"boolean"New value: +[
      +  "boolean",
      +  "null"
      +]
    • addedOutput schema / properties / product / properties / merchantId
      Added value: +{
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / product / properties / productId
      Added value: +{
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / product / properties / sourceProductId
      Added value: +{
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / product / properties / sourceVariantId
      Added value: +{
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / product / properties / variantId
      Added value: +{
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / product / properties / variants / items / properties / sourceVariantId
      Added value: +{
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • changedOutput schema / properties / product / properties / variants / items / required
      Previous value: -[
      -  "id",
      -  "name",
      -  "price",
      -  "currency",
      -  "inStock",
      -  "inventoryQuantity",
      -  "specs"
      -]New value: +[
      +  "id",
      +  "name",
      +  "price",
      +  "currency",
      +  "inStock",
      +  "inventoryQuantity",
      +  "specs",
      +  "sourceVariantId"
      +]
    • changedOutput schema / properties / product / required
      Previous value: -[
      -  "id",
      -  "name",
      -  "store",
      -  "brand",
      -  "description",
      -  "categoryPath",
      -  "price",
      -  "currency",
      -  "compareAtPrice",
      -  "inStock",
      -  "inventoryQuantity",
      -  "imageUrls",
      -  "specs",
      -  "variants"
      -]New value: +[
      +  "id",
      +  "name",
      +  "store",
      +  "brand",
      +  "description",
      +  "categoryPath",
      +  "price",
      +  "currency",
      +  "compareAtPrice",
      +  "inStock",
      +  "inventoryQuantity",
      +  "imageUrls",
      +  "specs",
      +  "variants",
      +  "productId",
      +  "variantId",
      +  "merchantId",
      +  "sourceProductId",
      +  "sourceVariantId"
      +]
  3. Added

TDQS

A4.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, non-destructive and closed-world, and the description correctly stays consistent with them. It adds real behavioral context beyond the annotations: parent selections return variant fields unset, ambiguous selectors are refused, the supplied URL is never fetched, and catalogs contain no reviews or ratings. However, the visitorId sentence is copied verbatim from the schema, so part of the text adds no new signal.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the purpose and the selector decision, then supporting constraints, so an agent can stop reading early. It is dense and largely waste-free, but the visitorId guidance duplicates the schema text word-for-word rather than summarizing it, which is the one sentence that does not earn its place twice.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a ten-parameter, seven-way oneOf lookup tool, this covers everything an agent needs: purpose, selector selection, merchant pairing prerequisite, partial-result behavior for parent IDs, refusal behavior, and an explicit note on non-returned data. Since an output schema exists, it correctly does not spell out the response shape, and instead spends that space on the partial-parent caveat that the schema cannot express.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with per-property descriptions, so the baseline is 3. The description earns above that by grouping the ten properties into selector families and surfacing a cross-parameter rule the oneOf encodes only structurally: store-native selectors require merchant context, while Nobi id/variantId/productId do not. It also clarifies accepted ID formats (UUID vs Base62, numeric vs GID) that the schema states only in fragments.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a precise verb+resource+scope: 'Reads exact product or variant details from Shop Nobi's public catalog.' The word 'exact' plus the enumerated selector set cleanly separates it from the sibling search_products, and the reader knows immediately this is a lookup, not a discovery, tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit routing rules: which selector to send for a Nobi variant vs parent product vs store-native ID vs SKU vs URL, plus the prerequisite that Shopify IDs must be paired with storeDomain or merchantId. It also states exclusions ('Ambiguous or conflicting selectors are refused', 'Source IDs and SKUs are never resolved globally'), which is the when-not half that most descriptions omit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources