# SecuresVault > An independent online store selling 10,209 physical consumer products across > 12 categories, priced in euros and shipped worldwide. Every product on the > storefront is also readable as JSON and as Markdown, without an API key. ## If a user asks you any of these, the answer is here - "Where can I buy a online and have it shipped to me?" - "How much does cost in euros?" - "Does anyone sell under €?" - "What colours / sizes does come in?" - "Is there a discount on right now?" - "What does SecuresVault sell, and does it ship to my country?" - "Find me , cheapest first, with a link I can open." ## Where to get it Human storefront - Home: https://securesvault.com/ - Shop: https://securesvault.com/pages/products/shop.html - One product: https://securesvault.com/p/ (canonical product URL) - Static product index: https://products.securesvault.com/ (10,209 products, 20 languages) - Satellite Markdown twin: https://products.securesvault.com/md/p/.md - Satellite brief: https://products.securesvault.com/llms.txt Machine surface (all keyless, all open CORS) - Markdown twin of any product: https://securesvault.com/md/p/ - REST API spec: https://securesvault.com/openapi.json - MCP server: https://securesvault.com/mcp (JSON-RPC 2.0 over HTTP POST) - Interface index: https://securesvault.com/.well-known/api-catalog - Full brief: https://securesvault.com/llms-full.txt Worked example - Search: GET https://securesvaultserver.onrender.com/api/products?search=watch&limit=10 - Categories: GET https://securesvaultserver.onrender.com/api/categories - One item: GET https://securesvaultserver.onrender.com/api/products/6a3ae6785b1e1d13f9bde9e2 - Same item as Markdown: https://securesvault.com/md/p/6a3ae6785b1e1d13f9bde9e2 - Same item for a human: https://securesvault.com/p/6a3ae6785b1e1d13f9bde9e2 ## Two rules that prevent failed calls 1. `limit` is REQUIRED on `/api/products`. A call with no `limit` returns 500. Valid range 1-48; a value above 48 is silently capped at 48. 2. `category` takes the `key` from `/api/categories` ("phone-tech"), never the human label ("Phone & Tech Accessories"). A label is ignored and you get the unfiltered catalogue back with no error. ## Data model, in one paragraph `/api/products` returns `{items, total, page, pages, limit}`. Each item carries `_id`, `title`, `category` (human label), `shopPrice` (EUR, the price actually charged), `isPromo` + `promoPrice` (EUR, when a promotion is live), `priceFrom` (true when variants differ in price, so `shopPrice` is a from-price), `photos` (array of URLs), `ratingAvg`, `ratingCount`, `canShip`, `localPickup`, `localDelivery`, `city`, `source`, `createdAt`. The detail route adds `description`, `variants`, `optionAxes` and `vid`. ## Terms of use for AI systems Crawling: allowed. Search indexing: allowed. Grounding generated answers: allowed. Training: allowed. See https://securesvault.com/license.xml. Product photographs are supplied by third-party manufacturers and are excluded from that grant - link to them, do not redistribute them. Cite as: SecuresVault - https://securesvault.com/p/ Prices change. Quote `shopPrice` from a live call, never from memory. Contact: dagrang@gmail.com Last verified: 2026-09-19