# Sample report: Shopify agent storefront check, Northstar Outdoor

2026-09-08

This is a synthetic sample of the Shopify agent storefront check report. The store Northstar Outdoor, its .myshopify.com domain, the three products, every price and every observation are invented to show the format and the depth a paying merchant receives. Nothing on this page describes a real store, and no figure here has been measured on a real storefront. A real report carries the tool call log and the redacted settings evidence as an appendix, which this sample leaves out.

## Contents

- [Engagement record](#engagement-record)
- [Decision](#decision)
- [Three-surface map](#three-surface-map)
- [Product truth matrix](#product-truth-matrix)
- [Buyer-journey evidence](#buyer-journey-evidence)
- [Correction plan](#correction-plan), C1 to C3
- [Limits and what stays unresolved](#limits-and-what-stays-unresolved)
- [Retest](#retest)
- [What this report is not](#what-this-report-is-not)

## Engagement record

| Field | Value |
| --- | --- |
| Merchant | Northstar Outdoor, invented D2C outdoor equipment store on Shopify |
| Storefront | northstar-outdoor.example, the .myshopify.com domain redacted in this sample |
| Market, language, currency | Finland, fi-FI, EUR |
| Products in scope | Trail Bottle 750 ml, blue. Merino Base Layer, size M. Camp Mug, green |
| Buyer searches in scope | Five, listed under the buyer journey |
| Preflight | 2026-09-04, public read-only. An observable agent commerce surface was found, so the check was sold |
| Written kickoff | 2026-09-05 at 09:00 EEST, after preflight, payment and settings evidence |
| Test session | 2026-09-05, one clean supported Chromium session, one anonymous shopper |
| Package delivered | 2026-09-06 at 15:40 EEST, 30 hours and 40 minutes after the kickoff |
| Retest window | Until 2026-09-20, up to two corrected items |
| Access used | Public storefront surfaces and redacted settings screenshots from the merchant. No Admin login, no credentials, no customer data |

## Decision

Correct two data mismatches before sending more agent traffic to the store. The three agent surfaces were all observable, the browser cart worked in the agreed anonymous session and the checkout handoff landed in the right store. Two of the three tested products showed a difference between surfaces: one price two euros higher on the remote catalog than on the storefront, and one variant marked unavailable on the Agentic preview while the storefront sells it. A documented match is what the merchant is paying to be able to show, and two of three products do not have one yet.

Nothing was paid, ordered or signed in. No customer detail was entered.

## Three-surface map

What is present, restricted, unavailable or not tested on each of the three surfaces, in the same session and against the same three products. PRESENT means the surface answered and was exercised within scope. RESTRICTED means it answered but refused part of the scope. UNAVAILABLE means it did not answer. NOT TESTED means the scope stopped before it.

| Surface | Status | What was verified | What was not |
| --- | --- | --- | --- |
| Browser WebMCP, in the shopper's live storefront tab | PRESENT | Ten tools registered on navigator.modelContext: browse_store, search_catalog, get_product, show_variant, update_cart, get_cart, cancel_cart, proceed_to_checkout, search_shop_policies_and_faqs and manage_orders. Eight were called within scope. One anonymous cart built and emptied. | manage_orders and browse_store were not called, and proceed_to_checkout was called once for the permitted navigation only. No customer account was opened. |
| Shopify-hosted Storefront MCP and UCP MCP | PRESENT | Catalog search and product read answered at protocol level. One remote UCP cart was created with the blue Trail Bottle and cancelled without a buyer identity. | Checkout MCP was not reached, by scope. |
| Shopify Catalog and Agentic storefront channels | PRESENT | Catalog access on, auto-enrolment of new products on, one channel active, read from the merchant's redacted settings evidence. Catalog search preview run for the three products. | Channel ranking or sales were not measured. Settings were not changed. |

Finding a surface is a fact about availability. It is not a certification, an endorsement or a security claim.

## Product truth matrix

The tested title, variant, price, currency, availability and policy facts on each surface, read in the same market, language, currency and hour. A MISMATCH was reproduced once before it was recorded.

| Product and variant | Storefront page | Browser WebMCP | Storefront and UCP MCP | Agentic Catalog preview | Result |
| --- | --- | --- | --- | --- | --- |
| Trail Bottle 750 ml, blue | 29,90 EUR, in stock | 29,90 EUR, in stock | 31,90 EUR, in stock | 29,90 EUR, in stock | MISMATCH, remote price |
| Merino Base Layer, M | 79,00 EUR, in stock | 79,00 EUR, in stock | 79,00 EUR, in stock | 79,00 EUR, unavailable | MISMATCH, variant eligibility |
| Camp Mug, green | 18,50 EUR, in stock | 18,50 EUR, in stock | 18,50 EUR, in stock | 18,50 EUR, in stock | ALIGNED |

Policy facts. The return window of 30 days, free shipping above 80 EUR and the delivery estimate of two to four working days matched on the storefront page, in the WebMCP policy tool and in the Storefront MCP policy read. The Agentic Catalog preview carries no policy fields, which is the surface's shape and not a mismatch.

The price difference was reproduced at 11:20 and 14:05 EEST in the same market, language and currency before MISMATCH was recorded. The availability difference was confirmed against the merchant's redacted Catalog settings screenshot, where the M variant is marked not eligible. No setting was changed during the test.

## Buyer-journey evidence

The five buyer searches and the cart lifecycle, each with the tool, the input, the observed result and the cart state. The session stopped before payment or order creation, and the exact stop is recorded.

| Step | Tool and input | Observed result | Cart state | Status |
| --- | --- | --- | --- | --- |
| Search 1, "light bottle for a day hike" | WebMCP search_catalog, fi-FI | Trail Bottle 750 ml returned first, blue variant listed with price and stock | Empty | ALIGNED |
| Search 2, "merino base layer size M" | WebMCP search_catalog | Merino Base Layer returned, M variant listed as in stock | Empty | ALIGNED |
| Search 3, "camp mug green" | WebMCP search_catalog | Camp Mug returned, green variant listed | Empty | ALIGNED |
| Search 4, "waterproof jacket" | WebMCP search_catalog | Two jackets returned, both outside the scope, no claim recorded | Empty | OBSERVED |
| Search 5, "return policy" | WebMCP search_shop_policies_and_faqs | 30 day return window returned, matches the storefront policy page | Empty | ALIGNED |
| Product detail | WebMCP get_product and show_variant, Trail Bottle blue | Material, volume, price 29,90 EUR and stock matched the storefront page | Empty | ALIGNED |
| Add to cart | WebMCP update_cart, one blue Trail Bottle | Cart line created, quantity 1, line price 29,90 EUR | One line, 29,90 EUR | ALIGNED |
| Cart read | WebMCP get_cart | One line, 29,90 EUR, matches the visible storefront cart drawer | One line, 29,90 EUR | ALIGNED |
| Checkout handoff | WebMCP proceed_to_checkout, the one permitted navigation | Landed on the store's own checkout page, correct store, correct line | One line, 29,90 EUR | OBSERVED |
| Payment and order | None | No form filled, no payment method entered, no order created. This is the stop | One line, 29,90 EUR | NOT TESTED |
| Remote UCP cart | Storefront MCP cart create, one blue Trail Bottle | Remote cart created with 31,90 EUR line price, the remote price of the matrix above | Separate remote cart, one line | MISMATCH, same cause as the matrix |
| Cleanup | WebMCP cancel_cart. UCP cart cancelled | Browser cart empty, storefront drawer empty, remote cart cancelled | Empty | ALIGNED |

The checkout handoff means one navigation to the checkout page. It does not mean that payment or an order was completed, and neither was.

## Correction plan

Up to five specific changes, each with its owner and an acceptance check the merchant can run without turva.dev. This plan carries three, because the check found three things to change. The order is by effect on a buyer.

## C1. Publish the Finnish price list to the remote catalog surface

**What a buyer sees today.** An agent that reads the store through the Storefront or UCP MCP quotes the blue Trail Bottle at 31,90 EUR, two euros above the storefront and the browser tools, and a remote cart is built at that price.

**Owner.** Shopify Markets and product data, on the merchant's side.

**Change.** Verify that the Finland market price list is published to the remote catalog and republish it. If the remote surface reads a default price list instead of the market list, the market assignment is the fix, not the product price.

**Acceptance check.** The same variant returns 29,90 EUR on the storefront page, in the WebMCP product read and in the Storefront MCP catalog read within one hour, in the fi-FI Finland EUR context.

## C2. Make the M variant eligible in the Agentic Catalog

**What a buyer sees today.** The M size of the Merino Base Layer is in stock and sellable on every surface except the Agentic Catalog preview, so an AI channel that reads the catalog can leave the sellable size out.

**Owner.** Agentic storefront settings and catalog mapping, on the merchant's side.

**Change.** Set the variant's eligibility in the Catalog settings and republish the mapping.

**Acceptance check.** The M variant shows as available in the Catalog preview and in a public agent answer after the propagation time the settings page states.

## C3. Run a three-surface acceptance test after every catalog or market publish

**What a buyer sees today.** Nothing yet. This change keeps C1 and C2 from coming back, because the same difference returns with the next price list, market or theme change.

**Owner.** E-commerce operations, on the merchant's side.

**Change.** Keep the three products of this check as fixtures and read them on all three surfaces after every relevant publish. The tool calls in the buyer-journey table are the script.

**Acceptance check.** For each fixture product the identity, the variant, the price in minor units, the currency and the availability match on every surface that carries them.

## Configuration changes the check does not recommend

No theme, app or product data change beyond C1 to C3 was found necessary for the three products in scope. The ten tool inventory on WebMCP is the platform's own and matched the documented set, so no tool was missing and none needed a change.

## Limits and what stays unresolved

- Ranking or sales on any external AI channel were not measured and are not promised.
- No customer account, order history or order management tool was opened.
- No payment, order or address was entered.
- Shopify Admin was not logged into and no setting was changed. Settings evidence came from the merchant as redacted screenshots.
- The result covers the three named products, the Finland market, EUR, the three surfaces and the test window of 2026-09-05. Other products, markets and hours are outside it.
- Search 4 returned products outside the scope. They were not read and no claim is made about them.

## Retest

Up to two corrected items are verified once within 14 days of this package, by 2026-09-20. C1 and C2 are the two items. Each gets the status ALIGNED, MISMATCH or UNKNOWN on direct evidence from the same tools in the same market, language and currency. A surface that cannot be read at the retest reads UNKNOWN, not ALIGNED. The retest table is printed next to the product truth matrix above.

## What this report is not

It is not a Shopify certification, an endorsement by Shopify, a penetration test or a promise of sales through any AI channel. A browser observation is not a remote MCP surface, and a navigation to the checkout page is not a payment or an order. The check reads what an AI shopper receives from one store in one session and records it.

## About this sample

Every figure on this page is invented. The surface names, the statuses and the shape of the tables are the real deliverables of the check, so that the sample shows how a real report reads, and the store, the products, the prices and the observations are fiction. A real report carries the tool call log with timestamps and the merchant's redacted settings evidence as an appendix.

The check is described on its [product page](/shopify-agent-storefront-check). To start one, [email info@turva.dev](mailto:info@turva.dev?subject=Shopify%20agent%20storefront%20check&body=Storefront%20URL%3A%20%0A.myshopify.com%20domain%3A%20%0APrimary%20market%3A%20%0AUp%20to%20three%20priority%20products%3A%20%0A) with the storefront URL, the .myshopify.com domain, the primary market and up to three priority products. The agent-readiness audit has its own [sample report](/samples/audit-report).
