Skip to content
Photo Store

Agents, assistants and answer engines

Shop this store from Claude

Photo Store is not only a website. It is an MCP server any AI assistant can connect to, a shopping assistant on the site itself, and a catalogue laid out so search engines and LLMs can read, rank and cite it. Everything runs on the same Crystallize data and the same personalised ranking.

1Add the store to Claude

Works on claude.ai, Claude Desktop, the mobile apps and Cowork. You need a paid Claude plan for MCP Apps to render; the tools themselves work on every plan.

  1. a
    Open Customize → Connectors and click Add custom connector.
  2. b
    Name it anything, and paste this as the MCP server URL:
    https://photo-store-vector.superfast.shop/api/mcp
  3. c
    Under Authentication choose Sign in when needed. Claude will suggest “No sign-in” because the server answers without a token on purpose — the public tools work for everyone, and only the personal ones ask you to sign in.
  4. d
    If asked for an OAuth client, pick Use Claude's published identity. “Register automatically” works too. Leave Request headers empty.
  5. e
    Click Add, open a new chat, click + → Connectors and turn “Photo Store” on.

Claude Code

claude mcp add --transport http photo-store https://photo-store-vector.superfast.shop/api/mcp
claude -p "Find me a travel tripod under £150"

Type /mcp in a session to sign in when a personal tool asks.

Any other MCP host

Streamable HTTP, stateless, OAuth 2.1 with discovery at /.well-known/oauth-protected-resource/api/mcp. ChatGPT, VS Code, Cursor and the MCP Inspector connect the same way.

2Sign in — and become a customer

Ask for something personal, such as “What would you recommend for me?”, and Claude shows a Connect card. Click it and a Photo Store page opens in a popup. This demo has no passwords: you pick one of the demo customers — the same people as the profile switcher at the top of this site. The popup closes, and Claude retries the question as that person.

What changes when you sign in

Every ranking uses the customer's taste vector, built from their real order history. Prices switch to their market (GBP or USD) and their VAT mode (B2C incl., B2B excl.). Baskets are attached to their customer record.

Tools that need it

whoami, my_orders and recommendations. Everything else — search, product details, campaigns, basket, checkout — works without an account.

Under the hood

Standard OAuth 2.1 with PKCE. The store is its own authorization server for the demo; a real shop would point the discovery document at its own identity provider and keep the rest. Details in docs/mcp.md.

Switching customer: in Claude, remove the connector and add it again, or revoke access under Customize → Connectors. Tokens last an hour and refresh automatically for 30 days.

3Things to try

  • No sign-in“What's a good second lens for a Nikon Z6 III? Only what's in stock.”
  • No sign-in“A 35mm f/1.4 prime for Sony — or a 70-200 f/2.8 for Nikon Z.”
  • No sign-in“Kamera til reise? (vague on purpose — watch the “Did you mean” chips)”
  • No sign-in“I shoot wildlife. Build me a kit under £3,000 and put it in a basket.”
  • No sign-in“Which campaigns are running right now?”
  • No sign-in“Add two memory cards to that basket and give me the checkout link.”
  • Sign in“Show me what you'd recommend for me, and explain why.”
  • Sign in“What have I ordered before? What would complete my kit?”
  • Sign in“Who am I to this store — what does it think I like?”
  • Sign in“Compare my recommendations with what a new visitor sees.”

4What you see: cards, pictures, a basket

Tools return more than text. In Claude, results render as an interactive app under the tool call — a carousel of product cards with packshots, price, stock and rank score, a product detail card with gallery and specs, and the basket with quantity steppers. The Add to basket buttons call the same tools the model uses, and Checkout in store brings the basket here, into the normal checkout.

MCP Apps

Nine of the fourteen tools carry a ui:// resource. Hosts that support MCP Apps (Claude web, desktop and mobile, ChatGPT, VS Code) render it in a sandbox styled with the host's own theme variables.

Images in the answer

get_product returns the packshot as an image block, so Claude shows the product even where apps are not supported.

Always a link back

Every result starts with a “see it with pictures” link to a store page with the same cards, and each product has a one-click “add to basket” URL.

5The same brain, on the site

The Assistant button in the header opens a shopping assistant that runs on Claude with the same catalogue tools — plus a few that only make sense with the taste vector in hand: search by an explicit taste (“shop like a wildlife photographer who shoots Nikon”), blend it with the customer's own history, or find what is missing from their kit based on what they already own. Results come back as the store's own product rails with scores you can click to see the maths.

6Built to be found — by Google and by LLMs

Being connectable is half of it. The other half is being discoverable: when someone asks a search engine or an AI assistant for a camera, this store should be the source it reads and cites. Every page is structured for both classic SEO and generative engine optimisation (GEO), with nothing bolted on afterwards — it is generated from the same catalogue data.

Structured data on every page

schema.org JSON-LD: Organization, WebSite with a search action, Product with live Offer price, currency and availability, BreadcrumbList, and CollectionPage / ItemList on categories, brands and campaigns. View source on any category or product page.

Metadata that matches the page

Per-page titles and descriptions built from name, brand, key selling point, price and stock; canonical URLs that collapse filter and pagination variants; Open Graph and Twitter cards with the real packshot; search and checkout kept out of the index.

An open door for AI crawlers

robots.txt explicitly allows GPTBot, ClaudeBot, PerplexityBot, Google-Extended and the other AI agents, publishes a Content-Signal, and points at the sitemap. Non-JS crawlers get the metadata in <head> instead of streamed later.

Written for language models

/llms.txt describes the store, its markets, categories, brands and campaigns in plain markdown, and /llms-full.txt lists every product with price, stock and USP. Both regenerate hourly from Discovery.

A complete map

sitemap.xml covers every product, category, brand and campaign with images and last-modified dates, straight from the index. Plus a web manifest, icons and a default social image.

Semantics and speed

One h1 per page, landmark navigation, breadcrumbs with aria-current, a skip link, alt text on every image, prices and facts as text near the top of the product page, and preloaded hero images for a fast Largest Contentful Paint.

Try it: paste a product URL from this store into Claude or ChatGPT with web access and ask for the price and availability — the answer comes from the structured data, not from guessing.

How the personalisation works →← Back to the store