
Curie Commerce
Connects to Curie's 3D product search engine covering over 5.6 million Shopify stores. Lets your LLM search products, compare them with 3D visualizations, and handle purchasing flows. The free tier gets you search and comparison, while Pro unlocks checkout functionality. Use the global endpoint to search across all stores or point to a specific shop_id to query individual merchants. Good fit if you're building shopping assistants, product research tools, or conversational commerce experiences that need access to Shopify's ecosystem without manually integrating each store.
- tools
- 30
- auth
- Secret needed
- transport
- SSE
- last updated
- May 20, 2026
Install
From registry metadata$ npx add-mcp https://chat.curie.app/api/mcp/global --name commerce --transport sseRun in your terminal. add-mcp asks which agents to add it to (Claude Code, Codex, Cursor and more). Add -g to install it for every project.
Review the command, arguments and environment values before installing. MCP servers run with your local permissions.
Other ways
Claude Code
$ claude mcp add --transport sse commerce https://chat.curie.app/api/mcp/globalRun in your terminal. Add --scope user to make it available in every project.
Tools
Verified live · 30 toolsVerified live against the running server on Nov 6, 2026.
get_recommendationsGet product recommendations similar to a given product. Useful for 'show me more like this' requests. Returns structured product items (same shape as search_products). Recommended visualization: a horizontal scrolling React Artifact with product cards labeled "More like this"...3 params
Get product recommendations similar to a given product. Useful for 'show me more like this' requests. Returns structured product items (same shape as search_products). Recommended visualization: a horizontal scrolling React Artifact with product cards labeled "More like this"...
limitnumberproduct_id*stringshop_domainstringadd_product_from_photoAdd a generated 3D model to the merchant's Shopify store as MODEL_3D media — creating the product if needed — and optionally publish it. This is the store-side 'cut-and-paste' step: pass the hosted `glb_url` of an already-generated model, OR pass just an `image_url` and (when...6 params
Add a generated 3D model to the merchant's Shopify store as MODEL_3D media — creating the product if needed — and optionally publish it. This is the store-side 'cut-and-paste' step: pass the hosted `glb_url` of an already-generated model, OR pass just an `image_url` and (when...
enginestringglb_urlstringimage_urlstringproduct_idstringpublishbooleantitle*stringget_availabilityCheck product availability and pricing across retailers. Returns all affiliate links with current prices.2 params
Check product availability and pricing across retailers. Returns all affiliate links with current prices.
product_id*stringshop_domainstringcompare_productsCompare 2 to 6 products side-by-side. Returns a comparison matrix with each product's name, price, brand, 3D model availability, key attributes, and a cascade-aware visual hint for each row. Optional criteria narrow which features are weighted (e.g. ['waterproof', 'budget unde...3 params
Compare 2 to 6 products side-by-side. Returns a comparison matrix with each product's name, price, brand, 3D model availability, key attributes, and a cascade-aware visual hint for each row. Optional criteria narrow which features are weighted (e.g. ['waterproof', 'budget unde...
criteriaarrayproduct_ids*arrayshop_domainstringget_brand_contextReturns the merchant's brand palette, typography hints, voice/tone profile, signature phrases, forbidden words, and a system_prompt_block the AI client can prepend to subsequent responses so they sound like the merchant rather than generic AI output.
Returns the merchant's brand palette, typography hints, voice/tone profile, signature phrases, forbidden words, and a system_prompt_block the AI client can prepend to subsequent responses so they sound like the merchant rather than generic AI output.
No parameters. Call it with no arguments.
get_suggested_promptsOnboarding suggestion chips for the chat surface — the same 'What's trending?' / 'Find me a gift' / 'Compare products' chips chat.curie.app shows above its input. When called on a per-shop MCP endpoint (e.g. /api/mcp/allbirds.com), returns brand-themed prompts mentioning that...2 params
Onboarding suggestion chips for the chat surface — the same 'What's trending?' / 'Find me a gift' / 'Compare products' chips chat.curie.app shows above its input. When called on a per-shop MCP endpoint (e.g. /api/mcp/allbirds.com), returns brand-themed prompts mentioning that...
categorystringcountintegerinitiate_checkoutBegin a GUEST checkout flow for one or more products — NO sign-in required. Pass `shop_domain` (e.g. "allbirds.com") on Curie's cross-merchant route so Curie resolves the shop, creates an UNAUTHENTICATED Shopify cart, and returns its `continue_url` — the shop's OWN Shopify-hos...4 params
Begin a GUEST checkout flow for one or more products — NO sign-in required. Pass `shop_domain` (e.g. "allbirds.com") on Curie's cross-merchant route so Curie resolves the shop, creates an UNAUTHENTICATED Shopify cart, and returns its `continue_url` — the shop's OWN Shopify-hos...
buyer_emailstringproduct_ids*arrayshipping_addressobjectshop_domainstringsearch_catalogSearch the store catalog by name, brand, style, color, or keywords. This is the UCP/Shopify-canonical catalog-search tool (Shopify Storefront MCP's `search_catalog`, formerly `search_shop_catalog`); `search_products` is a deprecated alias of this tool. Returns matching product...5 params
Search the store catalog by name, brand, style, color, or keywords. This is the UCP/Shopify-canonical catalog-search tool (Shopify Storefront MCP's `search_catalog`, formerly `search_shop_catalog`); `search_products` is a deprecated alias of this tool. Returns matching product...
limitnumbermax_pricenumbermin_pricenumberquery*stringshop_domainstringlookup_catalogBatch-retrieve full product objects by ID in ONE call. This is the UCP/Shopify-canonical batch product-lookup primitive (Shopify Catalog MCP's `lookup_catalog`) — the multi-id counterpart of `get_product`. Pass an array of product identifiers (the SAME identifiers `search_cata...2 params
Batch-retrieve full product objects by ID in ONE call. This is the UCP/Shopify-canonical batch product-lookup primitive (Shopify Catalog MCP's `lookup_catalog`) — the multi-id counterpart of `get_product`. Pass an array of product identifiers (the SAME identifiers `search_cata...
product_ids*arrayshop_domainstringget_product_detailsGet full details for a specific product by its ID. The UCP/Shopify-Storefront-MCP-canonical product-detail tool. Returns the full Shopify product payload (description, options, variants, selling_plan_groups, requires_selling_plan, selectedOrFirstAvailableVariant, total_variant...2 params
Get full details for a specific product by its ID. The UCP/Shopify-Storefront-MCP-canonical product-detail tool. Returns the full Shopify product payload (description, options, variants, selling_plan_groups, requires_selling_plan, selectedOrFirstAvailableVariant, total_variant...
product_id*stringshop_domainstringget_cartRead a shopper's current cart by id. Returns line items, totals, discount info, and checkout URL. Passthrough to Shopify Storefront MCP's get_cart for the target shop; requires shop scope and is not available for cross-merchant queries.2 params
Read a shopper's current cart by id. Returns line items, totals, discount info, and checkout URL. Passthrough to Shopify Storefront MCP's get_cart for the target shop; requires shop scope and is not available for cross-merchant queries.
cart_id*stringshop_domainstringupdate_cartModify a Shopify cart — add line items, update quantities, remove lines. Pass cart_id=null to create a new cart. Returns the updated cart with checkout URL ready for in-chat completion. Passthrough to Shopify Storefront MCP's update_cart.5 params
Modify a Shopify cart — add line items, update quantities, remove lines. Pass cart_id=null to create a new cart. Returns the updated cart with checkout URL ready for in-chat completion. Passthrough to Shopify Storefront MCP's update_cart.
add_itemsarraycart_idstringremove_line_idsarrayshop_domainstringupdate_itemsarraycreate_cartCreate a new Shopify cart for the target shop, optionally pre-loaded with line items. UCP-canonical dev.ucp.shopping.cart.create_cart. Returns the new cart_id + checkout_url ready for in-chat checkout handoff. Passthrough to Shopify Storefront MCP's create_cart.3 params
Create a new Shopify cart for the target shop, optionally pre-loaded with line items. UCP-canonical dev.ucp.shopping.cart.create_cart. Returns the new cart_id + checkout_url ready for in-chat checkout handoff. Passthrough to Shopify Storefront MCP's create_cart.
add_itemsarraybuyer_localestringshop_domainstringcancel_cartCancel an existing Shopify cart. UCP-canonical dev.ucp.shopping.cart.cancel_cart. Idempotent — re-cancelling a cancelled cart returns success. Passthrough to Shopify Storefront MCP's cancel_cart.2 params
Cancel an existing Shopify cart. UCP-canonical dev.ucp.shopping.cart.cancel_cart. Idempotent — re-cancelling a cancelled cart returns success. Passthrough to Shopify Storefront MCP's cancel_cart.
cart_id*stringshop_domainstringget_checkoutRead a Shopify checkout session's current state by id. Returns status, line items, shipping address, totals, brand voice. UCP-canonical dev.ucp.shopping.checkout.get_checkout. Passthrough to Shopify Checkout MCP.2 params
Read a Shopify checkout session's current state by id. Returns status, line items, shipping address, totals, brand voice. UCP-canonical dev.ucp.shopping.checkout.get_checkout. Passthrough to Shopify Checkout MCP.
checkout_id*stringshop_domainstringupdate_checkoutUpdate fields on a Shopify checkout session. UCP-canonical dev.ucp.shopping.checkout.update_checkout — Curie's wrapper performs a PUT-semantics-safe diff (fetches current state, merges your partial input, forwards the full payload) so omitting a field doesn't silently delete i...7 params
Update fields on a Shopify checkout session. UCP-canonical dev.ucp.shopping.checkout.update_checkout — Curie's wrapper performs a PUT-semantics-safe diff (fetches current state, merges your partial input, forwards the full payload) so omitting a field doesn't silently delete i...
buyer_emailstringcheckout_id*stringclear_fieldsarraydiscount_codesarrayline_itemsarrayshipping_addressobjectshop_domainstringcomplete_checkoutComplete (finalize payment + place order) a Shopify checkout session. UCP-canonical dev.ucp.shopping.checkout.complete_checkout. Requires a selected_instrument_id from the checkout's available payment instruments. Token-tier merchants complete in-protocol; Free-tier merchants...3 params
Complete (finalize payment + place order) a Shopify checkout session. UCP-canonical dev.ucp.shopping.checkout.complete_checkout. Requires a selected_instrument_id from the checkout's available payment instruments. Token-tier merchants complete in-protocol; Free-tier merchants...
checkout_id*stringselected_instrument_id*stringshop_domainstringcancel_checkoutCancel a Shopify checkout session. UCP-canonical dev.ucp.shopping.checkout.cancel_checkout. Idempotent — re-cancelling returns success. Idempotency-key auto-managed.2 params
Cancel a Shopify checkout session. UCP-canonical dev.ucp.shopping.checkout.cancel_checkout. Idempotent — re-cancelling returns success. Idempotency-key auto-managed.
checkout_id*stringshop_domainstringget_orderRead the live status of an order by id (UCP-canonical dev.ucp.shopping.order.get_order). Returns the real order body — line items, fulfillment/tracking, totals, status — when the order is visible to Curie. Visibility today is per-agent (Shopify Order MCP scope): orders placed...2 params
Read the live status of an order by id (UCP-canonical dev.ucp.shopping.order.get_order). Returns the real order body — line items, fulfillment/tracking, totals, status — when the order is visible to Curie. Visibility today is per-agent (Shopify Order MCP scope): orders placed...
order_id*stringshop_domainstringsearch_shop_policies_and_faqsGet facts about the shop's policies (returns, shipping, refunds, exchanges) or product FAQs. Example questions: "What's your return policy?", "Do you ship to Canada?", "How long do exchanges take?". Passthrough to Shopify Storefront MCP's search_shop_policies_and_faqs.2 params
Get facts about the shop's policies (returns, shipping, refunds, exchanges) or product FAQs. Example questions: "What's your return policy?", "Do you ship to Canada?", "How long do exchanges take?". Passthrough to Shopify Storefront MCP's search_shop_policies_and_faqs.
query*stringshop_domainstringcurie_try_on_3dReturns an MCP-UI UIResource for an inline 3D viewer for the given product (when a USDZ/GLB model exists). Hosts that support MCP Apps render the iframe-embedded model-viewer inline in chat; legacy hosts fall back to structured text + a direct USDZ URL. Differs from view_3d_mo...2 params
Returns an MCP-UI UIResource for an inline 3D viewer for the given product (when a USDZ/GLB model exists). Hosts that support MCP Apps render the iframe-embedded model-viewer inline in chat; legacy hosts fall back to structured text + a direct USDZ URL. Differs from view_3d_mo...
product_id*stringshop_domainstringsolve_jobEditorial 'best for the job' answer. Given a shopper's job-to-be-done (e.g. 'shoes for flat feet', 'beach wedding outfit under $200'), returns one top pick, 2 alternatives (also-great / budget / step-up), the criteria used to rank them with weights + explainers, and product ci...6 params
Editorial 'best for the job' answer. Given a shopper's job-to-be-done (e.g. 'shoes for flat feet', 'beach wedding outfit under $200'), returns one top pick, 2 alternatives (also-great / budget / step-up), the criteria used to rank them with weights + explainers, and product ci...
brand_preferencesarraygoalstringjob_description*stringmax_price_usdnumbershop_domainstringsizesarraycurie_wishlist_addSave a product to the caller's wishlist. Pinterest-style — the wishlist row is auto-created on first add (find-or-create on identity). Identity is resolved from the request: Authorization: Bearer <jwt> for authed users, X-Curie-Device-Id for anon (matches /api/v1/wishlist REST...12 params
Save a product to the caller's wishlist. Pinterest-style — the wishlist row is auto-created on first add (find-or-create on identity). Identity is resolved from the request: Authorization: Bearer <jwt> for authed users, X-Curie-Device-Id for anon (matches /api/v1/wishlist REST...
currency_codestringimage_urlstringnotesstringprice_centsnumberproduct_idstringproduct_titlestringproduct_urlstringshare_kind*stringurl · text · imageshop_domainstringsourcestringios_share · web_chat · web_product_view · mcp_toolsource_image_urlstringsource_textstringcurie_wishlist_getList items on the caller's wishlist, newest-saved first. Wishlist is auto-created on first call (matches the REST GET behaviour so iOS UI always has a stable id). Identity resolved from Authorization: Bearer <jwt> or X-Curie-Device-Id header. Optional filters: `shop_domain` (o...3 params
List items on the caller's wishlist, newest-saved first. Wishlist is auto-created on first call (matches the REST GET behaviour so iOS UI always has a stable id). Identity resolved from Authorization: Bearer <jwt> or X-Curie-Device-Id header. Optional filters: `shop_domain` (o...
limitnumbershop_domainstringwishlist_idstringcurie_wishlist_removeRemove an item from the caller's wishlist by item_id. Identity resolved from Authorization: Bearer <jwt> or X-Curie-Device-Id header (the same identity that owns the wishlist this item belongs to). Idempotent — removing an already-removed item is a no-op success. Destructive:...1 params
Remove an item from the caller's wishlist by item_id. Identity resolved from Authorization: Bearer <jwt> or X-Curie-Device-Id header (the same identity that owns the wishlist this item belongs to). Idempotent — removing an already-removed item is a no-op success. Destructive:...
item_id*stringcurie_wishlist_move_to_cartMark a wishlist item AS moved-to-cart (sets `moved_to_cart_at = now()`). This tool does NOT directly add the item to a Shopify cart — cart wrapping is the host AI's job via the existing `update_cart` MCP tool. Use this tool to record the move intent on the wishlist row; then c...3 params
Mark a wishlist item AS moved-to-cart (sets `moved_to_cart_at = now()`). This tool does NOT directly add the item to a Shopify cart — cart wrapping is the host AI's job via the existing `update_cart` MCP tool. Use this tool to record the move intent on the wishlist row; then c...
cart_idstringitem_id*stringquantitynumbercurie_cart_aggregate_addAdd a line to the caller's aggregated multi-merchant cart with UPSERT-increment semantics — re-adding the same (shop_domain, product_variant_id) increments the existing line's quantity instead of inserting a duplicate row. The cart row is auto-created on first add (find-or-cre...8 params
Add a line to the caller's aggregated multi-merchant cart with UPSERT-increment semantics — re-adding the same (shop_domain, product_variant_id) increments the existing line's quantity instead of inserting a duplicate row. The cart row is auto-created on first add (find-or-cre...
currency_codestringimage_urlstringprice_centsintegerproduct_idstringproduct_titlestringproduct_variant_id*stringquantityintegershop_domain*stringcurie_cart_aggregate_getList the caller's aggregated multi-merchant cart, grouped by shop_domain by default. The cart is auto-created on first call so iOS/web UIs always have a stable id for the cart-icon badge (matches REST GET behaviour). Identity resolved from Authorization: Bearer <jwt> or X-Curi...1 params
List the caller's aggregated multi-merchant cart, grouped by shop_domain by default. The cart is auto-created on first call so iOS/web UIs always have a stable id for the cart-icon badge (matches REST GET behaviour). Identity resolved from Authorization: Bearer <jwt> or X-Curi...
shop_domainstringcurie_cart_aggregate_removeRemove a single line from the caller's aggregated cart by line_id. Identity resolved from Authorization: Bearer <jwt> or X-Curie-Device-Id header (same identity that owns the parent cart). Idempotent — removing an already-removed line is a no-op success. Destructive: the row i...1 params
Remove a single line from the caller's aggregated cart by line_id. Identity resolved from Authorization: Bearer <jwt> or X-Curie-Device-Id header (same identity that owns the parent cart). Idempotent — removing an already-removed line is a no-op success. Destructive: the row i...
line_id*stringcurie_cart_aggregate_update_quantitySet the quantity on an aggregated cart line. Special case: `quantity: 0` DELETES the line (matches UI affordance 'set to 0' === 'remove'). Identity resolved from Authorization: Bearer <jwt> or X-Curie-Device-Id header (or the session device-id for anon). Free / device-scoped —...2 params
Set the quantity on an aggregated cart line. Special case: `quantity: 0` DELETES the line (matches UI affordance 'set to 0' === 'remove'). Identity resolved from Authorization: Bearer <jwt> or X-Curie-Device-Id header (or the session device-id for anon). Free / device-scoped —...
line_id*stringquantity*integerSponsors
Readme
Details
- Repository
- github.com/curievision/curie-shopify-app
- Website
- chat.curie.app
- Categories
- Design & Creative, Search & Web Crawling, Finance & Commerce
- Transport
- SSE
- Auth
- Required
- Registry
- MCP registry, active
- Resources
- 14
- Tools verified
- Nov 6, 2026