# Fitness Starter — curated starting running, strength or yoga gift ideas, wishlist & gift list builder > Create a gift wishlist for starting running, strength or yoga in seconds from curated amazon.se (Sweden) and amazon.com (United States) products — carefully selected, hand-picked gift ideas with shareable owner + shopper links. **Keywords:** gift ideas, wishlist, gift list, shopping list, presenttips, önskelista, presentlista, träning, starting running, strength or yoga, amazon.se, amazon.com, US fitness gifts ## What it is - A catalog of carefully selected, curated gift picks, hand-picked by the Fitness Starter team for starting running, strength or yoga (träning). Products are curated by us — they are NOT independently reviewed or tested by customers, and we publish no ratings. - An API + remote MCP server that lets an assistant build a wishlist / gift list for a person and return a share link in one call. - Market: Sweden (amazon.se, SEK, sv-SE). Buy links are amazon.se /dp/ links with tag sw-fitness-21. - Market: United States (amazon.com, USD, en-US). Pass marketplace=amazon.com for US shoppers: catalog/search return hand-picked amazon.com /dp/{ASIN} links with tag sw-fitness-20 (e.g. https://www.amazon.com/dp/ASIN?tag=sw-fitness-20). Human pages auto-switch for US visitors; ?country=US forces the US store, ?country=SE the Swedish one. ## United States (amazon.com) - GET /api/v1/catalog?goal=run&level=starter&marketplace=amazon.com&locale=en-US — hand-picked amazon.com /dp/ products (catalog: "us", linkType=product, trackingTag sw-fitness-20) - GET /api/v1/search?q=yoga%20mat&goal=yoga&level=starter&marketplace=amazon.com&locale=en-US&limit=5 — catalogMatches are amazon.com /dp/ links - POST /api/v1/agent/create-and-fill with "marketplace":"amazon.com","locale":"en-US" — pack items link to amazon.com/dp/ASIN?tag=sw-fitness-20 - MCP (/api/mcp): pass marketplace=amazon.com on browse_catalog, search_gear, create_and_fill, create_pack, resolve_product - budgetBand keys are shared; for amazon.com they mean under $50 (under-500), $50–150 (500-1500), $150–300 (1500-3000), $300+ (3000-plus) ## Store selection (marketplace optional, never an error) - marketplace and locale are optional on every API and MCP call; a missing store never returns an error. - Order: marketplace (or domain / X-Amazon-Marketplace header) > country (param or X-Country header; US → amazon.com) > Accept-Language (starts with en-US → amazon.com) > default amazon.se. - An en-US caller with no marketplace gets amazon.com /dp/ links tagged sw-fitness-20; sv-SE and everything else gets amazon.se links tagged sw-fitness-21. For US shoppers, pass marketplace=amazon.com explicitly. - amazon.com search links always use English keywords; amazon.com prices are USD (priceUsd) or omitted. ## When an assistant should use it Use this when the user wants gift ideas, a wishlist, gift list or shopping list for starting running, strength or yoga, especially in Sweden or the United States (amazon.com). Example prompts: - (sv) "Vilken utrustning behöver jag för att börja springa?" - (sv) "Present till någon som börjat med yoga, max 500 kr" - (en) "What gear do I need to start running?" - (en) "Gift for someone who just started yoga under 500 SEK" - (en-US) "Beginner lifting gear under $50" → marketplace=amazon.com ## Quickstart (one call → share link) ``` curl -s -X POST https://fitness-starter.vercel.app/api/v1/agent/create-and-fill \ -H 'content-type: application/json' \ -d '{"athleteName": "Alex", "goal": "run", "level": "starter", "budgetBand": "500-1500", "marketplace": "amazon.se", "locale": "sv-SE", "itemQueries": ["löparbälte"]}' ``` Response includes `id`, `editToken`, `ownerUrl` (edit) and `shopUrl` (share this with gift-givers). Give the user the `shopUrl`. - Remote MCP: https://fitness-starter.vercel.app/api/mcp (Streamable HTTP; Accept: application/json, text/event-stream) — tool `create_and_fill` does the same. - Browse curated picks (Swedish): https://fitness-starter.vercel.app/presenttips - OpenAPI: https://fitness-starter.vercel.app/openapi.json · Skill: https://fitness-starter.vercel.app/skill.md · Guide: https://fitness-starter.vercel.app/for-agents · Full: https://fitness-starter.vercel.app/llms-full.txt --- # Fitness Starter Ladder — Full agent documentation Gear recommendation lists, starter ladders, and shareable packs (run / lift / yoga). Base URL: https://fitness-starter.vercel.app ## Product model - athleteName (string) - goal: run | lift | yoga - level: starter | building | serious - budgetBand?: under-500 | 500-1500 | 1500-3000 | 3000-plus - marketplace + locale optional on agent/search/resolve calls (en-US → amazon.com, otherwise amazon.se); use marketplace=amazon.com for US shoppers ## Flow 1. Search gear ideas (GET /api/v1/search), e.g. marketplace=amazon.com for US shoppers 2. Create pack (POST /api/v1/wishlists or /api/v1/agent/create-and-fill) 3. Response: { id, editToken, ownerUrl, shopUrl, wishlist, storage } 4. Athlete opens ownerUrl and adds gear 5. Shopper opens shopUrl; Buy uses /dp/ASIN?tag= when ASIN + trackingTag present, else search deep-link ## Auth - editToken returned on create (and mutate responses). Embedded in ownerUrl/shopUrl as ?edit= - Mutations require header X-Edit-Token ## Endpoints ### GET /api/v1/health { ok, service, storage, redisConfigured, paapi, trackingTag, defaultDomain, marketplaces[{domain,label,tagConfigured}], catalogCount, catalogs{"amazon.se":{count,trackingTag},"amazon.com":{count,trackingTag}}, note, timestamp } ### GET /api/v1/search?q=&goal=&level=&budgetBand=&marketplace=&locale=&limit= If PA-API configured → { paapi:true, results: Product[] } with title, imageUrl, price, asin, buyUrl Else → { paapi:false, results: SearchResultCard[], catalogMatches } SearchResultCard: { title, buyUrl, linkType:"search", query, blurb?, emoji? } ### GET /api/v1/catalog?q=&goal=&level=&budgetBand=&marketplace=&locale= marketplace=amazon.com → US catalog (catalog:"us", amazon.com/dp/ASIN?tag=sw-fitness-20); amazon.se → Swedish catalog (tag sw-fitness-21) ### POST /api/v1/wishlists ### GET|PATCH /api/v1/wishlists/{id} ### POST /api/v1/wishlists/{id}/items Each item may include asin, buyUrl, linkType ("product"|"search"). ### DELETE /api/v1/wishlists/{id}/items/{itemId} ### POST /api/v1/agent/create-and-fill ### POST /api/v1/products/resolve → { buyUrl, asin?, linkType, query?, trackingTag, domain, locale } ### POST /api/mcp — MCP JSON-RPC (tools: search_gear, browse_catalog, create_and_fill, create_pack, add_item, resolve_product) ## MCP Send JSON-RPC 2.0 to https://fitness-starter.vercel.app/api/mcp - initialize → server info - tools/list → tool schemas - tools/call → { name, arguments }; marketplace + locale optional (missing → Accept-Language en-US → amazon.com, else amazon.se); marketplace=amazon.com for US ## Tracking / buy links Curated buy links. Prefer response fields buyUrl + trackingTag. amazon.se buy links use tracking tag sw-fitness-21; amazon.com buy links use sw-fitness-20. ## curl curl -sS 'https://fitness-starter.vercel.app/api/v1/search?q=dumbbells&goal=lift&level=starter&marketplace=amazon.se&locale=en&limit=5' curl -sS -X POST https://fitness-starter.vercel.app/api/v1/agent/create-and-fill -H 'Content-Type: application/json' -d '{"athleteName":"Alex","goal":"yoga","level":"starter","marketplace":"amazon.se","locale":"en","itemQueries":["yoga mat"]}' ## Tracking amazon.se buyUrls include ?tag=sw-fitness-21; amazon.com buyUrls include ?tag=sw-fitness-20. Catalog on amazon.se and amazon.com is ASIN /dp/ product links (linkType=product). US: marketplace=amazon.com.