For developers and assistants

Shopping MCP server for luxury boutiques

within runs a free, remote MCP server at https://shopwithin.co/mcp. Point an assistant, an app or your own code at it, and it can read the live shelves of independent luxury boutiques: what is in stock right now, in which sizes, at what price, at which shop, and the page where a shopper buys it. There is no account and no key, and all eight tools only read.

On 20 October 2026 it reads 5 boutiques and 8,028 pieces. Every boutique on within today is in Toronto. Prices come in each boutique's own currency, which today is Canadian dollars.

Updated 13 October 2026

What the server is, and what it is not

It is a Model Context Protocol (MCP) server that you reach over the internet. It reads the same shelves the site shows. Those come from each boutique's own register, its point of sale, so the sizes and stock are the shop's own. An agent and a person asking the same thing get the same answer.

It is not:

The endpoint

Address
https://shopwithin.co/mcp
Protocol
Model Context Protocol over Streamable HTTP, stateless, JSON responses. It speaks the protocol versions 2025-11-25, 2025-06-18, 2025-03-26, 2024-11-05 and 2024-10-07.
Requests
One JSON-RPC message per POST. Send accept: application/json, text/event-stream; a request that does not accept both gets a 406. There is no session, so you can call tools/list or tools/call without an initialize first.
Other methods
A plain GET answers a short JSON description: the name, the version, the endpoint and the tool names. DELETE answers 405, because there is no session to end.
Browsers
CORS is open to every origin, so code in a web page can call it. Answers are never cached (cache-control: no-store).
Server card
https://shopwithin.co/mcp/server-card, in the MCP server card format: the name, the version, the endpoint and the protocol versions, for apps and lists that look a server up before they connect.
Account and price
No account, no key, free.
Resources
within://about (one paragraph on within and its tools), within://guides (the journal's city and field guides, one per line) and within://guides/{slug} (one guide in full).

Limits and rate limits

The eight tools

Every tool is marked read only and safe to repeat, and none reaches outside within. Every answer comes twice: a short text an assistant can quote whole, and structuredContent with the fields below. Most tools answer with pieces, and a piece always has these fields:

id, boutique_domain
together, the piece's name in every other tool
title, brand, category
as the boutique lists them
price, price_max, currency, price_label
price_max only when sizes are priced differently; price_label reads like CAD 1,500
sizes_in_stock, units_in_stock
the sizes on the shelf now, and how many pieces in all
boutique
domain, name, neighbourhood, city and its page on within
collect_in_store, delivery
whether the piece can be picked up at the counter or delivered
image, url
the main photograph, and the shopwithin.co page where the shopper buys
price_drop
the earlier price and the day it changed, when the piece is marked down
condition
new, pre-owned, lightly-used, worn-once or vintage, or empty when the shop does not say
stock_checked_at
when within last read the boutique's register for this piece

search_pieces: search the shelves

Finds pieces in stock right now: clothing, shoes, bags, jewellery, watches and objects. A plain sentence works as the query, and prices in it such as "under $400" or "cheapest" are understood. With no arguments it returns the current front shelf. Every answer carries live sizes, the price in the boutique's currency, the shop and the page to buy.

Ask Black leather loafers in a 42, under 600 dollars, in Toronto.

Takes

  • query: what the shopper wants, up to 200 characters
  • brands, categories, sizes, boutiques: lists of up to 10 values each; boutiques are domains such as wdlt117.myshopify.com
  • city: only boutiques in that city
  • price_min, price_max: in the boutique's currency
  • sort: relevance, newest, price_low_to_high or price_high_to_low
  • lens: new, trending or sale, to browse a shelf instead of searching (ignored when a query or a filter is given)
  • limit: 1 to 24 pieces, 12 if you leave it out; offset: 0 to 480

Returns pieces (the piece record below), total, total_is_floor, next_offset, facets (the top 8 brands, categories, sizes and boutiques with counts), related_searches (label, query, count), view_url (the same shelf on shopwithin.co) and note (how the sentence was read, for example: Understood as: searched for "rick owens boots", priced up to 1500).

A city with no boutique gets an empty answer that says so and names the cities that have boutiques. Sizes are matched by the label each shop prints; when nothing matches exactly, a bare number such as 42 matches that number in any size system, and no conversion is implied.

get_piece: one piece in full

Everything about one piece: the description, every size with live stock, the photographs, the price and any markdown, pickup in the shop or delivery, the boutique, the page to buy, and a few pieces in the same vein.

Ask Check this jacket is still there in a medium (with a shopwithin.co product link).

Takes

  • url: a shopwithin.co/product/... link, or
  • boutique_domain and id: from any earlier result

Returns found, piece (the piece record plus description up to 1,200 characters, images, tags, variants with label, price, compare_at_price, in_stock and units, collect_at, and rating with average and count) and similar (up to 6 pieces).

A piece that has sold, or an old link, answers found: false with a plain sentence, never a guess.

similar_pieces: pieces in the same vein

Alternatives to a piece, across every boutique: the same spirit and the same department, in stock now. For a shopper who likes a piece but wants another price or another shop.

Ask Show me pieces like this one at another shop.

Takes

  • url, or boutique_domain and id: the piece to start from
  • limit: 1 to 12, 8 if you leave it out

Returns anchor (the starting piece) and pieces.

list_boutiques: the boutiques on within

The independent luxury boutiques on within, by city, with what each has on the shelf and its hours. The domain it returns names a boutique in every other tool.

Ask Which boutiques in Toronto carry Rick Owens, and can I collect today?

Takes

  • city: optional, only boutiques in that city

Returns boutiques (domain, name, neighbourhood, city, pieces_live, currency, hours, collect_in_store, delivery, collect_ready_in_minutes, url) and cities (every city with a boutique).

hours is empty when the shop has not given them. To answer the Rick Owens half, an agent follows with search_pieces and brands set to Rick Owens.

boutique_shelf: one boutique's shelf

One boutique's shelf right now, newest first, with sizes and prices. A query searches inside that shop only.

Ask What does WDLT117 have from MM6 Maison Margiela right now?

Takes

  • boutique_domain: required, as list_boutiques or any piece shows it
  • query: optional, searches inside the shop
  • limit: 1 to 24, 12 if you leave it out; offset: 0 to 480

Returns boutique (as in list_boutiques), pieces, next_offset and view_url.

An unknown domain gets an answer that says so and lists the boutiques that are on within.

convert_size: a size in every other system

Turns a ring, shoe, clothing, suit, belt or hat size into every other system, or reads one designer's own chart. It answers only from the tables on the size pages, where every row comes from a named source with the day it was read, and it returns the page that shows the answer. Called without from and size, it lists the systems and tables it has.

Ask I wear a UK N ring. What is that in US sizes?

Takes

  • kind: rings, shoes, clothing, suits, belts or hats, or designer: a designer's slug such as nike
  • from: the system the size is written in, such as us, uk or eu
  • size: as printed, such as 7, N 1/2, 42 or M
  • to, department (women or men), table: optional, to narrow the answer

Returns status (answered, nearest, out-of-range, bad-system, bad-size, no-match or need_input), scope, systems, tables, matches (each table's row in every system), sources (publisher, url, read_on), page_url, size_page_url, note, kinds and designers.

estimate_duty: duty and tax at the door

Works out what a piece costs at the door when it is shipped to the US, Canada or the UK: the duty, any extra tariff on the country it was made in, the tax, the government and carrier fees, and the total. Every line names its official source and the day it was read, and the answer links the duty calculator page that shows it.

Ask What will I pay at the door for a 1,295 dollar wool coat made in Italy, shipped from Canada to the US?

Takes

  • to: us, canada or uk
  • price and currency: CAD, USD, GBP or EUR, without shipping
  • kind: one of 47 kinds, such as coat-wool, sneakers-leather, bag-leather or watch-automatic
  • made_in and ships_from: two letter country codes such as IT and CA
  • department, ship_by (fedex, courier or post; royalmail or parcelforce for the UK), region (a Canadian province), shipping, weight_kg, usmca: optional

Returns found, to, currency, status, value, lines (label, detail, amount, sources), owed_before_delivery, tax_at_checkout, total, what_changes_it, notes, exchange_rate_date, estimate_note and page.

It is an estimate from the rules on the page. The carrier's bill is the final word.

How a shopper buys a piece the agent found

  1. The agent searches and shows the pieces, each with its url on shopwithin.co.
  2. The shopper opens that page, which reads the sizes and stock again, fresh.
  3. They pick a size and tap Buy.
  4. within hands the bag to the boutique's own checkout. Every boutique on within today sells through its own online shop, so the shopper pays the boutique there, at the boutique's own price.
  5. The boutique ships the piece or holds it at the counter for pickup. Where it ships, what shipping costs and when a piece is ready to collect all show at checkout.

Nothing is reserved or charged through the tools: every piece carries its shopwithin.co page, and the boutique's own checkout does the rest. This is the finding half of agentic commerce. The paying half stays between the shopper and the boutique, and the boutique keeps its customer.

What it never does

It never takes a payment, holds a card, or places an order. It never stores a photograph: an image sent to visual search is matched in memory and discarded. It never invents a size, a price or a stock level; when nothing matches, it says so.

How to connect

From an assistant app

Open its settings, find connectors, add a custom connector, and paste https://shopwithin.co/mcp. No key or account is needed. If it asks for a name, use within.

From a command line

Add a remote MCP server named within, transport HTTP, at the endpoint. Most command line agents take it in one line of this shape:

<your-agent> mcp add --transport http within https://shopwithin.co/mcp

From a code editor

Add it to the editor's MCP settings file. Most editors read this shape:

{
  "mcpServers": {
    "within": {
      "url": "https://shopwithin.co/mcp"
    }
  }
}

Some editors also want a type of http beside the url. The server answers the same way.

From your own code

Any MCP client library connects the same way, or you can send JSON-RPC yourself. To list the tools:

curl -s https://shopwithin.co/mcp \
  -H 'content-type: application/json' \
  -H 'accept: application/json, text/event-stream' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

To call one:

curl -s https://shopwithin.co/mcp \
  -H 'content-type: application/json' \
  -H 'accept: application/json, text/event-stream' \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{
        "name":"search_pieces",
        "arguments":{"query":"black leather loafers under $600","sizes":["42"],"limit":3}}}'

In an app that shows widgets

Search, piece and shelf answers come with a widget, ui://widget/within-shelf.html, that shows the results as a shelf of photographs, each with its price, its sizes, its shop and a link to buy on within.

Who it is for

  • People who shop with an assistant and want real stock at real shops, with the page to buy.
  • Developers building a shopping agent, a personal shopper, a gift finder or a style app who need live boutique stock without scraping shop sites.
  • Anyone who wants a size conversion or a duty estimate with its source named.
  • Boutiques that want their shelf to answer wherever their customers ask.

Who it is not for

  • Buying inside the chat. There is no checkout tool; the shopper buys on the boutique's page.
  • Comparing prices across the whole web or mass market stores. It reads only the boutiques on within.
  • Bulk copying or a product data feed. The limit is one request a second per address.
  • Style advice with no shopping in it.
  • Apps that need a shopper's account, orders or saved pieces. None of that is exposed.

The pages an agent can cite

The tools read the shelves. These pages answer the rest, one kind of page per line, each at its own address.

Boutiques

Your register is the listing. When your shop is on within, your shelf is readable from any assistant or app that connects, with your name on every piece. Invite your boutique.

Common questions

Is the within MCP server free?

Yes. There is no account, no key and no charge. The only limit is the rate: a burst of 60 requests from one address, then one a second.

What is a remote MCP server?

It is an MCP server you reach at a web address instead of one you install. You give your assistant or app the address, https://shopwithin.co/mcp, and it can call the tools. Nothing runs on your own computer.

Can an agent buy a piece for me?

No. The tools only read. Every answer carries the piece's page on shopwithin.co, and you buy there, through the boutique's own checkout.

Is this agentic commerce?

It is the finding half. An agent can search the shelves, check a size and hand you the page to buy. The paying stays between you and the boutique.

How fresh are the sizes and prices?

Each piece carries stock_checked_at, the time within last read the boutique's register. Stock moves by the hour, so the product page, read fresh when you open it, is the final word.

Which cities does it cover?

Every boutique on within today is in Toronto. A search for another city says so and names the cities that have boutiques. Boutiques anywhere can join by invitation.

Does it keep the photos I send?

No. visual_search matches the photograph in memory and drops it. Nothing is saved.

Do I need to sign in or share my details?

No. The server never asks for a name, an email or a login, and it cannot see anyone's saves, bag or orders.