📦 Free shipping over $50 📦
developers.txt
Everything this storefront exposes to scripts, crawlers and shopping agents. All of it is public, none of it needs a key.
Machine-readable copy of this page: /developers.md. Agent instructions: /agents.md. Index: /llms.txt.
Good fit:
Not a fit:
Every endpoint below is public and unauthenticated. There are no API keys to request and no rate-limit headers to parse; be reasonable and back off on HTTP 429. Cross-origin reads are allowed on the JSON endpoints, so browser-based agents can fetch them directly.
There is no separate sandbox. Reads are safe to run against production: none of the endpoints below mutate anything. Writes (cart, checkout, orders) are not served here at all. They happen on Shopify's hosted commerce endpoint, which has its own test mode.
Read the index
curl -s https://unforgettableluncheon.com/llms.txtRead one product as JSON
curl -s https://unforgettableluncheon.com/products/bort-tshirt.jsonRead one product as markdown
curl -s https://unforgettableluncheon.com/products/bort-tshirt.mdRead every price at once
curl -s https://unforgettableluncheon.com/pricing.jsonDiscover the commerce endpoint
curl -s https://unforgettableluncheon.com/.well-known/ucpProduct data as JSON, in Shopify's AJAX-endpoint shape. Numeric ids match the ids in our analytics and product feeds. Prices are major units plus a currency code, never a formatted string.
The whole catalogue in one request, each entry identical to /products/{handle}.json. Takes Shopify's `limit` (1-250) and 1-based `page`; defaults return everything.
Content-Type: application/json
curl -s https://unforgettableluncheon.com/products.jsonOne product: title, description, price, images, options, variants with per-variant price, sku and availability.
Content-Type: application/json
curl -s https://unforgettableluncheon.com/products/bort-tshirt.jsonIdentical payload to .json. Kept because price extensions and the Shop channel request this Shopify convention.
Content-Type: application/json
Every product with its current price, plus shipping thresholds and currency. One request instead of one per product.
Content-Type: application/json
curl -s https://unforgettableluncheon.com/pricing.jsonEvery content URL has a markdown twin, which costs roughly a tenth of the tokens of the HTML. Two ways to ask for it: append .md, or send an Accept header.
Markdown rendering of any product, collection, page, policy or blog article. Response carries X-Markdown-Tokens with an approximate token count.
Content-Type: text/markdown
curl -s https://unforgettableluncheon.com/products/bort-tshirt.mdSame markdown, negotiated by header rather than suffix. Responses set Vary: Accept.
Content-Type: text/markdown
curl -s -H "Accept: text/markdown" https://unforgettableluncheon.com/collections/simpsons-tshirtsThe index: when to use this store, every product with its price, collections, blog, pages and policies.
Content-Type: text/plain
curl -s https://unforgettableluncheon.com/llms.txtThe whole corpus in one file, for when fetching page by page is not worth it.
Content-Type: text/plain
Agent operating instructions: when to use the store, how to transact, business identity, the rules on buyer approval.
Content-Type: text/markdown
Every indexable URL with its last-modified date.
Content-Type: application/xml
Well-known documents that let an agent find the surfaces above without being told about them. Also advertised as RFC 8288 Link headers on every HTML response.
RFC 9727 linkset pointing at every machine-readable doc.
Content-Type: application/linkset+json
Universal Commerce Protocol discovery document, proxied live from Shopify. This is where the transactional capabilities are declared.
Content-Type: application/json
MCP server card for the commerce endpoint.
Content-Type: application/json
Agent-skills index for skill-aware clients.
Content-Type: application/json
Explicit allow groups for named AI crawlers, plus Content-Signal preferences (search yes, ai-input yes, ai-train no).
Content-Type: text/plain
We do not host a checkout. Carts, checkouts and orders are served by Shopify over the Universal Commerce Protocol, on an endpoint that is independent of this storefront.
MCP endpoint. Call tools/list to discover the available tools and their schemas. Checkout requires contemporaneous buyer approval, without exception.
Content-Type: application/json
curl -s -X POST https://unforgettable-luncheon.myshopify.com/api/ucp/mcp -H "Content-Type: application/json" -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'A URL that does not exist returns HTTP 404 with a recovery map in the body, in HTML or markdown depending on the Accept header. A 404 means that one URL is missing, not that the site is unavailable. Server errors return 5xx; retry with backoff.
A small CLI wraps the endpoints above so you can script them without writing a client.
node packages/ul-cli/bin/ul.mjs products List every product with its price.node packages/ul-cli/bin/ul.mjs product <handle> Print one product as JSON.node packages/ul-cli/bin/ul.mjs pricing Print the pricing summary, including shipping thresholds.node packages/ul-cli/bin/ul.mjs read <path> Print any content URL as markdown.node packages/ul-cli/bin/ul.mjs llms Print the llms.txt index.The npm package unforgettable-luncheon is not published yet. Run it from source: packages/ul-cli.