MCP tool behavior issue

ISSUE 1

Affected tools: search_catalog get_product_details

Observed behavior: The MCP response includes prices with currency USD, but the numeric amount appears to be in minor currency units/cents.

For example, $25.00 appears as 2500, and $6.00 appears as 600 with currency USD. The LLM interprets these numbers as dollar amounts and tells the user the wrong price. Examples from our eval:

Expected: Short Sleeve t shirt is $6.00 USD

Actual LLM response: $600 USD Expected: Baby Bath seat is $25.00 USDActual LLM response: $2,500 USD

ISSUE 2

Affected tool: search_catalog

Observed behavior: When the user asks a broad browse question like “What products do you have available in your store?”, the LLM may call: search_catalog({“catalog”: {“query”: “all products”}}) This can return no products, even though the store has products. The correct behavior appears to be calling: search_catalog({“catalog”: {}})

Example from our eval: User asked: “What products do you have available in your store?” Expected tool call: search_catalog({“catalog”: {}})
Actual tool call: search_catalog({“catalog”: {“query”: “all products”}})

Tool returned no products. LLM incorrectly answered that the store had no products available. This seems to happen when the model turns a broad browse request into a literal search query. If the query term does not appear in the product title, description, or tags, search can fail.

Hey @Sneha_Avuthu - thanks for flagging these.

For search_catalog, prices are returned in minor currency units (there’s a good explanation of minor units here) under UCP, so 600 USD represents $6.00: Storefront Catalog MCP

For broad browsing, I agree the agent shouldn’t turn “all products” into a literal search query, although I couldn’t find public documentation explicitly prescribing { "catalog": {} }.

Could you share the endpoint and one raw get_product_details response? The current UCP endpoint uses get_product, as outlined here: Storefront Catalog MCP now implements UCP - Shopify developer changelog

That’ll help confirm whether you’re using the older endpoint or seeing an inconsistent response - happy to look into things further if needed!