Shopify Deprecated Its Own AI Tools to Migrate to UCP
On 31 August 2026, the cart tools that most Shopify AI integrations were built on stopped being supported. They had been deprecated on 24 June, in favour of tools conforming to UCP. The catalog side moved earlier and faster: Shopify’s Storefront Catalog MCP switched to UCP on 22 April 2026, with the old tools kept alive only until 15 June.
None of this arrived as a merchant announcement. It arrived as developer changelog entries. If you were running an AI assistant on your store and nobody on your side reads that changelog, the first signal would have been the assistant failing during the week of 1 September.
We had eSquad, our AI agent for Shopify merchants, running on those tools. This is what we found rebuilding it on UCP, including the one design decision we think most teams will get wrong.
What UCP actually is
UCP, the Universal Commerce Protocol, is an open standard for AI agents doing commerce. Shopify co-develops it with Google.
The idea is simple. Instead of every AI platform learning every store’s private API, a store publishes a profile document saying which capabilities it supports (catalog search, cart, checkout). The agent publishes one saying what it can handle. The two are compared, and only the capabilities both sides declare are available for that conversation. Everything else is simply not offered.
Shopify storefronts now run version 2026-08-25. If you want the commercial picture rather than the plumbing, we covered why Google is betting on UCP adoption separately.
What changed for merchants running an AI assistant
This was not a rename. Four things changed underneath.
The endpoint moved to https://{shop}/api/ucp/mcp, separate from the older Storefront MCP.
Every single call now carries a URL pointing at a public agent profile document, which Shopify fetches server-side to negotiate capabilities. That is the part that surprises teams: your integration has to expose a new public endpoint of its own, or nothing works at all.
Prices became integers in the currency’s minor units. So $18.99 arrives like this:
{ "amount": 1899, "currency": "USD" }
And cart updates became full replacements rather than patches. You send the complete list of line items on every update. Send only the line you changed and you have just emptied the rest of the cart.
The part most people will get wrong
When these agents are built for merchants, they are built to upsell into the shopper’s existing cart. UCP works the other way: its cart is universal, designed to combine several merchants into one. So the UCP tools have to be pointed back at the merchant’s own cart.
Our answer was to split the work by direction. We kept UCP for reading the product catalog, where it is genuinely excellent and where the structured data makes an assistant far better at recommending, something we dug into when testing whether products actually surface in the Catalog API. For writing to the cart, we do not use UCP at all. We write from the shopper’s browser using Shopify’s standard storefront actions, which shipped on 17 June 2026 and operate on the shopper’s real session cart.
The result is one cart. The assistant adds an item, the theme’s cart drawer updates itself, and the shopper sees exactly what they expect. Read through the protocol, write through the browser.
What we learned along the way
A handful of details that cost us time and would cost anyone else the same.
- The agent profile has to be reachable from the public internet. Shopify fetches it server-side, so in local development you need a tunnel URL. Pointing at localhost fails in a way that looks like an authentication problem.
- Capabilities are gated individually. Looking up a specific product is a separate capability from searching the catalog. Forget to declare it and the server simply does not offer you the tool.
- Minor units are currency-specific. Two decimal places for USD, zero for JPY, three for BHD. Dividing everything by 100 silently mis-prices every shop that does not sell in a two-decimal currency, and nothing in your tests will catch it if you only test in dollars.
- Setting a quantity and adding to a quantity are different calls that look nearly identical. Get it wrong, and a shopper who already has two of an item and asks for three ends up with five.
One more, and it belongs in a different category. Because capabilities are declared rather than assumed, declaring only the ones you actually use keeps payment-capable tools out of the AI model’s reach entirely. The model cannot misuse a tool it was never offered. That is a security decision available to you at configuration time, and it fits the same principle we wrote about when Shopify’s Sidekick moved from chatbot to co-pilot: decide in advance what the agent is allowed to touch.
What this means if you run a store
Nothing about this migration was dramatic. There was no outage headline, no email from Shopify to merchants, no banner in the admin. There was a date in a changelog, and then things stopped working for anyone who missed it.
That is how platform changes tend to arrive now. Agentic commerce is moving fast enough that the interval between “announced” and “required” is measured in weeks, and the announcement lives in a developer changelog that no in-house generalist has time to read every week. The work itself was not especially hard. Knowing it was coming, and knowing that the obvious cart implementation would have shipped a two-cart bug, is the part that takes attention.
This work went into eSquad, and for merchants clients to Junifia, catching a change like this one is part of the arrangement rather than a project someone has to notice and approve first. If you are running an AI integration on Shopify and nobody on your side is reading the developer changelog every week, an audit of your ecommerce architecture is the simplest way to see where you are exposed, and you are welcome to tell us what your assistant is built on.