{"openapi":"3.1.0","info":{"title":"LivaGlow public endpoints","version":"1.0.0","summary":"Read-only, unauthenticated endpoints for search engines, shopping assistants and AI agents.","description":"LivaGlow is a German shop for personalised ceramic mugs. There is no order API: purchases happen in the browser at https://livaglow.de/custom. Agents can read product data (feeds), page content (Markdown negotiation) and call the read-only MCP server.","contact":{"name":"LivaGlow","email":"mail@livaglow.de","url":"https://livaglow.de"},"termsOfService":"https://livaglow.de/agb"},"servers":[{"url":"https://livaglow.de"}],"tags":[{"name":"Discovery","description":"Machine-readable site descriptions"},{"name":"Feeds","description":"Product data for Google Merchant Center and OpenAI/ChatGPT Shopping"},{"name":"Content","description":"Public pages, also available as Markdown"},{"name":"MCP","description":"Model Context Protocol server (Streamable HTTP, JSON-RPC 2.0)"},{"name":"Status","description":"Health"}],"paths":{"/llms.txt":{"get":{"operationId":"getLlmsTxt","summary":"Site summary for LLMs (llms.txt)","description":"Curated Markdown map of the shop: product, prices, occasions, guides, each with a one-line summary. Start here to learn what this site offers before fetching individual pages.","tags":["Discovery"],"responses":{"200":{"description":"Markdown","content":{"text/plain":{"schema":{"type":"string"}}}}}}},"/sitemap.xml":{"get":{"operationId":"getSitemap","summary":"XML sitemap","description":"Every indexable URL with its last modification date. Use it to find pages, not to read them.","tags":["Discovery"],"responses":{"200":{"description":"Sitemap","content":{"application/xml":{"schema":{"type":"string","contentMediaType":"application/xml"}}}}}}},"/feed/google.xml":{"get":{"operationId":"getGoogleProductFeed","summary":"Product feed (RSS 2.0 with Google Merchant namespace)","description":"The mug plus one variant per design template, with price, availability, shipping and image. Same data as the TSV feed, in the format Google Merchant Center reads.","tags":["Feeds"],"responses":{"200":{"description":"One item: the personalised mug","content":{"application/xml":{"schema":{"type":"string","contentMediaType":"application/xml"}}}}}}},"/feed/products.tsv":{"get":{"operationId":"getProductFeedTsv","summary":"Product feed (TSV, Google and OpenAI field names)","description":"Tab-separated product data using the field names of both the Google Merchant and the OpenAI product feed specification, so a shopping agent can read it without mapping.","tags":["Feeds"],"responses":{"200":{"description":"Header row plus one product row","content":{"text/tab-separated-values":{"schema":{"type":"string"}}}}}}},"/":{"get":{"operationId":"getPageHome","summary":"Page / (HTML, or Markdown with Accept: text/markdown)","description":"Returns the page at /. Send `Accept: text/markdown` to get the same content as clean Markdown without navigation, cookie banner or scripts - cheaper to read and easier to quote than the HTML.","tags":["Content"],"parameters":[],"responses":{"200":{"description":"HTML for browsers; Markdown when the request carries `Accept: text/markdown`.","content":{"text/html":{"schema":{"type":"string"}},"text/markdown":{"schema":{"type":"string"}}}}}}},"/custom":{"get":{"operationId":"getPageCustom","summary":"Page /custom (HTML, or Markdown with Accept: text/markdown)","description":"Returns the page at /custom. Send `Accept: text/markdown` to get the same content as clean Markdown without navigation, cookie banner or scripts - cheaper to read and easier to quote than the HTML.","tags":["Content"],"parameters":[],"responses":{"200":{"description":"HTML for browsers; Markdown when the request carries `Accept: text/markdown`.","content":{"text/html":{"schema":{"type":"string"}},"text/markdown":{"schema":{"type":"string"}}}}}}},"/faq":{"get":{"operationId":"getPageFaq","summary":"Page /faq (HTML, or Markdown with Accept: text/markdown)","description":"Returns the page at /faq. Send `Accept: text/markdown` to get the same content as clean Markdown without navigation, cookie banner or scripts - cheaper to read and easier to quote than the HTML.","tags":["Content"],"parameters":[],"responses":{"200":{"description":"HTML for browsers; Markdown when the request carries `Accept: text/markdown`.","content":{"text/html":{"schema":{"type":"string"}},"text/markdown":{"schema":{"type":"string"}}}}}}},"/ratgeber":{"get":{"operationId":"getPageRatgeber","summary":"Page /ratgeber (HTML, or Markdown with Accept: text/markdown)","description":"Returns the page at /ratgeber. Send `Accept: text/markdown` to get the same content as clean Markdown without navigation, cookie banner or scripts - cheaper to read and easier to quote than the HTML.","tags":["Content"],"parameters":[],"responses":{"200":{"description":"HTML for browsers; Markdown when the request carries `Accept: text/markdown`.","content":{"text/html":{"schema":{"type":"string"}},"text/markdown":{"schema":{"type":"string"}}}}}}},"/ratgeber/{slug}":{"get":{"operationId":"getPageRatgeberBySlug","summary":"Page /ratgeber/:slug (HTML, or Markdown with Accept: text/markdown)","description":"Returns the page at /ratgeber/:slug. Send `Accept: text/markdown` to get the same content as clean Markdown without navigation, cookie banner or scripts - cheaper to read and easier to quote than the HTML.","tags":["Content"],"parameters":[{"name":"slug","in":"path","required":true,"description":"Slug eines Ratgeber-Artikels. Gültige Werte listet https://livaglow.de/ratgeber.","schema":{"type":"string","pattern":"^[a-z0-9-]+$","examples":["tasse-spuelmaschinenfest"]}}],"responses":{"200":{"description":"HTML for browsers; Markdown when the request carries `Accept: text/markdown`.","content":{"text/html":{"schema":{"type":"string"}},"text/markdown":{"schema":{"type":"string"}}}}}}},"/tasse/{slug}":{"get":{"operationId":"getPageTasseBySlug","summary":"Page /tasse/:slug (HTML, or Markdown with Accept: text/markdown)","description":"Returns the page at /tasse/:slug. Send `Accept: text/markdown` to get the same content as clean Markdown without navigation, cookie banner or scripts - cheaper to read and easier to quote than the HTML.","tags":["Content"],"parameters":[{"name":"slug","in":"path","required":true,"description":"Slug einer deutschen Anlassseite. Gültige Werte listet https://livaglow.de/llms.txt.","schema":{"type":"string","pattern":"^[a-z0-9-]+$","examples":["geburtstag"]}}],"responses":{"200":{"description":"HTML for browsers; Markdown when the request carries `Accept: text/markdown`.","content":{"text/html":{"schema":{"type":"string"}},"text/markdown":{"schema":{"type":"string"}}}}}}},"/mug/{slug}":{"get":{"operationId":"getPageMugBySlug","summary":"Page /mug/:slug (HTML, or Markdown with Accept: text/markdown)","description":"Returns the page at /mug/:slug. Send `Accept: text/markdown` to get the same content as clean Markdown without navigation, cookie banner or scripts - cheaper to read and easier to quote than the HTML.","tags":["Content"],"parameters":[{"name":"slug","in":"path","required":true,"description":"Slug of an English occasion page. Gültige Werte listet https://livaglow.de/llms.txt.","schema":{"type":"string","pattern":"^[a-z0-9-]+$","examples":["birthday"]}}],"responses":{"200":{"description":"HTML for browsers; Markdown when the request carries `Accept: text/markdown`.","content":{"text/html":{"schema":{"type":"string"}},"text/markdown":{"schema":{"type":"string"}}}}}}},"/vorlagen":{"get":{"operationId":"getPageVorlagen","summary":"Page /vorlagen (HTML, or Markdown with Accept: text/markdown)","description":"Returns the page at /vorlagen. Send `Accept: text/markdown` to get the same content as clean Markdown without navigation, cookie banner or scripts - cheaper to read and easier to quote than the HTML.","tags":["Content"],"parameters":[],"responses":{"200":{"description":"HTML for browsers; Markdown when the request carries `Accept: text/markdown`.","content":{"text/html":{"schema":{"type":"string"}},"text/markdown":{"schema":{"type":"string"}}}}}}},"/vorlagen/{slug}":{"get":{"operationId":"getPageVorlagenBySlug","summary":"Page /vorlagen/:slug (HTML, or Markdown with Accept: text/markdown)","description":"Returns the page at /vorlagen/:slug. Send `Accept: text/markdown` to get the same content as clean Markdown without navigation, cookie banner or scripts - cheaper to read and easier to quote than the HTML.","tags":["Content"],"parameters":[{"name":"slug","in":"path","required":true,"description":"Slug einer Design-Vorlage. Gültige Werte listet https://livaglow.de/vorlagen.","schema":{"type":"string","pattern":"^[a-z0-9-]+$","examples":["geburtstag-klassisch"]}}],"responses":{"200":{"description":"HTML for browsers; Markdown when the request carries `Accept: text/markdown`.","content":{"text/html":{"schema":{"type":"string"}},"text/markdown":{"schema":{"type":"string"}}}}}}},"/produktsicherheit":{"get":{"operationId":"getPageProduktsicherheit","summary":"Page /produktsicherheit (HTML, or Markdown with Accept: text/markdown)","description":"Returns the page at /produktsicherheit. Send `Accept: text/markdown` to get the same content as clean Markdown without navigation, cookie banner or scripts - cheaper to read and easier to quote than the HTML.","tags":["Content"],"parameters":[],"responses":{"200":{"description":"HTML for browsers; Markdown when the request carries `Accept: text/markdown`.","content":{"text/html":{"schema":{"type":"string"}},"text/markdown":{"schema":{"type":"string"}}}}}}},"/partnerprogramm":{"get":{"operationId":"getPagePartnerprogramm","summary":"Page /partnerprogramm (HTML, or Markdown with Accept: text/markdown)","description":"Returns the page at /partnerprogramm. Send `Accept: text/markdown` to get the same content as clean Markdown without navigation, cookie banner or scripts - cheaper to read and easier to quote than the HTML.","tags":["Content"],"parameters":[],"responses":{"200":{"description":"HTML for browsers; Markdown when the request carries `Accept: text/markdown`.","content":{"text/html":{"schema":{"type":"string"}},"text/markdown":{"schema":{"type":"string"}}}}}}},"/status":{"get":{"operationId":"getPageStatus","summary":"Page /status (HTML, or Markdown with Accept: text/markdown)","description":"Returns the page at /status. Send `Accept: text/markdown` to get the same content as clean Markdown without navigation, cookie banner or scripts - cheaper to read and easier to quote than the HTML.","tags":["Content"],"parameters":[],"responses":{"200":{"description":"HTML for browsers; Markdown when the request carries `Accept: text/markdown`.","content":{"text/html":{"schema":{"type":"string"}},"text/markdown":{"schema":{"type":"string"}}}}}}},"/api/mcp":{"post":{"operationId":"postMcpJsonRpc","summary":"MCP endpoint (Streamable HTTP)","tags":["MCP"],"description":"JSON-RPC 2.0. Supports protocol versions 2026-07-28, 2025-11-25, 2025-06-18, 2025-03-26, 2024-11-05. Tools: get_shop_overview, calculate_price, get_delivery_estimate, list_occasions, search_faq, search_guides, get_page_markdown, get_store_rating, get_design_options, create_design_link, get_care_and_safety. No authentication. Server card: https://livaglow.de/.well-known/mcp/server-card.json.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["jsonrpc","method"],"properties":{"jsonrpc":{"type":"string","const":"2.0"},"id":{"oneOf":[{"type":"string"},{"type":"integer"}]},"method":{"type":"string","examples":["server/discover","tools/list","tools/call"]},"params":{"type":"object"}}},"examples":{"toolsList":{"value":{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{"_meta":{"io.modelcontextprotocol/protocolVersion":"2026-07-28","io.modelcontextprotocol/clientCapabilities":{}}}}}}}}},"responses":{"200":{"description":"JSON-RPC result or error","content":{"application/json":{"schema":{"type":"object","required":["jsonrpc"],"properties":{"jsonrpc":{"type":"string","const":"2.0"},"id":{"oneOf":[{"type":"string"},{"type":"integer"}]},"result":{"type":"object"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{}}}}}}}},"202":{"description":"Notification accepted"},"400":{"description":"Malformed request, header mismatch or unsupported protocol version"}}}},"/api/health":{"get":{"operationId":"getHealth","summary":"Health check","description":"Returns 200 while the shop is serving. No authentication, no side effects.","tags":["Status"],"responses":{"200":{"description":"Service is up","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string"},"time":{"type":"string"}}}}}}}}}},"externalDocs":{"description":"Documentation for agents","url":"https://livaglow.de/docs/api"}}