MCP connector: https://decathlon-agent.demos.42a.ai/mcp

RUN OF SHOW · 42a

Decathlon × 42a: demo run-of-show

The script for the person driving the demo. Every scenario here runs on a tool that really exists (src/core/tools/shop-tools.ts, src/core/storefront/live-tools.ts) and on real products from www.decathlon.com, Decathlon's US store: 550 products, read from the store on September 27, 2026.

The sentences to type are the blockquotes. Everything else is for you, not for the shopper.

Before you start

SurfaceURL
MCP connectorhttps://decathlon-agent.demos.42a.ai/mcp?token=jordan
Hosted advisor, no installhttps://decathlon-agent.demos.42a.ai/preview
Operator consolehttps://decathlon-agent.demos.42a.ai/dashboard
Flow editorhttps://decathlon-agent.demos.42a.ai/dashboard/flows-app
Customer journeyshttps://decathlon-agent.demos.42a.ai/journeys
This pagehttps://decathlon-agent.demos.42a.ai/scenarios
Chrome extensionload unpacked from decathlon/decathlon-extension/

Identities: ?token=jordan is Jordan Reyes of Boulder, CO, planning a first fall backpacking trip in the Rockies. Their bag already holds the Quechua NH500 Escape 23 L Hiking Backpack in Dark Blue ($69.99, a store best seller, 4.8 stars from 6,548 reviews), and they have one delivered order: a Forclaz Men's MT100 Hooded Synthetic Jacket in size M. With no token you are a guest with every tool and temporary state, which is worth showing too.

What is real and what is sandbox:

Three facts to know before you walk in:

  1. Free shipping over $49 has a catch, and the demo tells it. Decathlon's own policy: sale and clearance items do not qualify, and one of them in the bag makes the whole order ineligible. The bag says so instead of drawing a progress bar toward $49.
  2. No promo codes, no loyalty club, no welcome gift, no member prices. The assistant says "there isn't one". Sales exist, but only as struck prices on the product.
  3. Sizes are never guessed. The bag refuses to pick a size for the shopper and answers with the sizes actually in stock.

Before every demo: say "reset the demo" (the reset_demo tool).


Running order

#ScenarioPersonaTimeWhat it proves
1First overnight in the Rockiesjordan3 minIt shops by the trip, not by product name
2Your size, not a guessjordan2 minReal stock per size; it asks instead of guessing
3Free shipping, honestlyjordan1 minIt knows the store's own fine print
4Sold out, said out loudguest1 min"We have it, it's sold out", not silence
5"What's on sale for skiing?"guest1 minReal markdowns, and the shipping catch that comes with
6The bag goes homejordan2 minIt hands off to Decathlon's own checkout, exact sizes
-The console (/journeys, /dashboard)-3 minThe half that is not a chatbot

Short run (5 minutes): 1 → 2 → 6. A real trip, a real size problem, and a bag that ends in Decathlon's real checkout.


1 · First overnight in the Rockies

Persona: jordan

Real: the catalog, prices, ratings and stock.

Sandbox: nothing written yet. Read-only.

Nobody types "Simond MT100 Easyfit 50 L". They type the trip. The layer turns a trip into the handful of catalog searches it actually needs, and answers like a store associate who has done that trip.

What to type

  1. I'm planning my first overnight backpacking trip in the Colorado Rockies in October. What do I need?

  2. What would keep me warm at camp at night?

What runs

StepToolWhat happens
1search_products (several)The router splits the trip into catalog searches (a backpacking pack, a warm layer, a tent), each merged live with the index
2search_products or get_product"down jacket" or a question about the jacket on screen

What you see

A products widget with real cards. Typical picks, all real and in stock on September 27:

Every card: photo from Decathlon's CDN, price, struck price where there is one, Decathlon's own stars with the review count, and the house brand (Simond, Quechua) under the name. Tap a card: the drawer shows the colors and sizes, with sold-out sizes greyed out.

What to say

"Nothing in that sentence is a product name. The layer read the trip, and the stars are Decathlon's own customers, with the count next to them."


2 · Your size, not a guess

Persona: jordan

Real: stock per size and color, right now.

Sandbox: the bag.

What to type

  1. Add the Simond MT100 down puffer, men's medium.

  2. OK, XL in Smoked Black then.

  3. And the Kiprun Kipsummit trail shoes in a 10.5.

What runs

StepToolWhat happens
1add_to_cartRefused: sold out in M in every color. The answer lists what is in stock (S, XL, 2XL, 3XL by color)
2add_to_cartAdds Smoked Black · XL at $80
3add_to_cartAsks which color: the 10.5 comes in Black Orange, Dark Green and Yellow

What you see

The bag widget with each line's size and color, and the header chip counting the bag. In the product drawer, M is greyed out on every color.

What to say

"It did not quietly put a size S in the bag because S happened to be first. On a sports store that is the difference between a sale and a return."

What not to say

Don't say "it's out of stock" for the whole product. It is out of stock in M. XL and others are available, and that is what the assistant says.


3 · Free shipping, honestly

Persona: jordan (continue from scenario 2)

Real: Decathlon's published shipping policy.

Sandbox: the bag.

What to type

What's in my bag, and do I get free shipping?

What runs

StepToolWhat happens
1view_cartThe bag, its subtotal, and the shipping line computed from the real policy

What you see

The NH500 day pack plus the marked-down puffer, subtotal well over $49, and instead of "Free shipping ✓": "Sale items do not qualify for free shipping", shipping "Calculated at checkout". Remove the puffer and the bag goes back to "Free shipping ✓".

What to say

"That is Decathlon's own policy, the line most chatbots would get wrong: one sale item makes the whole order ineligible. And there is no invented $5.99: Decathlon doesn't publish a flat fee, so neither do we."


4 · Sold out, said out loud

Persona: guest (no token)

Real: live availability from the storefront.

What to type

I need a sleeping bag for 30-degree nights.

What runs

StepToolWhat happens
1search_productsThe live search and the full index agree: the sleeping bags exist, and are sold out

What you see

Simond MT500 32°F Polyester Sleeping Bag ($80) and its 23°F and 41°F siblings, each marked Sold out with a disabled button, and the assistant saying so plainly, then offering what is in stock (a down jacket for camp, a sleeping pad) rather than pretending.

What not to say

Don't promise when it's back. The store publishes no restock date, and the demo doesn't invent one. It can offer to watch the product and check daily.


5 · "What's on sale for skiing?"

Persona: guest

Real: Decathlon's struck prices.

What to type

Anything on sale for skiing?

What runs

StepToolWhat happens
1list_dealsThe Snow & Ski shelf's real markdowns, deepest first, with the original price

What you see

Real markdowns such as the Wedze Women's BL900 Merino Wool Ski Base Layer Top at $60 (was $99.99) and the Wedze Men's Warm Ski Jacket 500 at $90 (was $149), each with its percentage badge. The assistant adds the catch: sale items don't count toward free shipping.

What to say

"Every one of those is the store's own struck price. No code, no 'members only'. Decathlon doesn't run those, and the assistant says so if asked."


6 · The bag goes home

Persona: jordan

Real: the checkout link.

Sandbox: the order record.

What to type

  1. Great, let's check out.

  2. Click "Check out on decathlon.com →".

What runs

StepToolWhat happens
1checkoutA sandbox order record, plus a real cart permalink: www.decathlon.com/cart/<variant>:<qty>,…

What you see

The order widget and the handoff button. The link opens Decathlon's own Shopify checkout with exactly this bag: the Dark Blue day pack, the Smoked Black XL puffer, the shoes in the color and size picked. One Shopify variant per line.

What to say

"This link is completely real. It builds this bag in Decathlon's checkout. What the demo never does is pay: payment stays with the customer, on the site."

What not to say

Don't say "the agent placed the order". It built a bag and handed it over. Nothing was charged.


The console: the half that is not a chatbot

After two or three scenarios:

  1. /journeys: every tool call, grouped into one customer story per conversation, because every call carries a request_intent in the shopper's own words.
  2. /dashboard: the funnel (search → product viewed → added to bag → checkout), the conversations behind it, and searches that came back empty: a merchandising report Decathlon's analytics doesn't produce today. "How many people asked for the puffer in a men's M this week" is a question the journeys answer and the store's own analytics can't.
  3. /dashboard/flows-app: one flow per tool. Change a ranking, save, ask again, no deploy.
  4. /dashboard/search: ranking weights, a push list and hidden items. Move a slider, search again.
  5. The extension: the same advisor on www.decathlon.com itself, a launcher in the header, a question about any product in one click, and add to the real cart, because there, in the shopper's own browser, the Shopify cart really is theirs.

What not to say, and what the demo does not do

Read this before you walk in.

Don't sayThe truth
"The agent placed the order"It built a bag and handed it to Decathlon's Shopify checkout with a real cart link. Nothing is ever charged.
"The bag is the customer's real cart"Not from the server: a Shopify cart belongs to whoever calls it. In the extension, yes: that is their browser.
"It's connected to your inventory system"Availability is read live from the storefront, which is real. An ERP connection is a later step.
"Use code WELCOME10" / "as a member you get…"There are no codes, no club and no member prices on decathlon.com. The demo says so out loud.
"Free shipping on everything over $49"Not with a sale item in the bag. That is Decathlon's own policy, and the bag shows it.
"Shipping is $5.99"Decathlon publishes no flat fee below $49. It is calculated at checkout, and the demo never quotes a number.
"We connected Shopify's UCP/MCP"Not yet. The endpoint exists and answers, but needs a published agent profile. See LIVE-SHOPIFY-RESEARCH.md.
"These are your customers' questions"/journeys shows what was asked in this demo, in memory, and it resets.

Things the demo simply does not do (on purpose):

Things worth showing break gracefully:

This page is served from the demo’s SCENARIOS.md, the one source of truth for the run of show. To update it, edit the file, run bun run gen-scenarios and deploy.