# LivaGlow for agents and developers

> LivaGlow is a German shop for personalised ceramic mugs. All interfaces below are public, read-only and need no authentication. There is no order API: purchases are completed by the customer in the browser at https://livaglow.de/custom.

## Discovery
- `https://livaglow.de/llms.txt` – curated site summary (Markdown)
- `https://livaglow.de/.well-known/api-catalog` – API catalog (RFC 9727, linkset)
- `https://livaglow.de/openapi.json` – OpenAPI 3.1
- `https://livaglow.de/.well-known/mcp/server-card.json` – MCP server card
- `https://livaglow.de/.well-known/agent-skills/index.json` – agent skills index; skill: `https://livaglow.de/.well-known/agent-skills/livaglow-mug-shopping/SKILL.md`
- `https://livaglow.de/.well-known/ai-catalog.json` – ARD manifest
- `https://livaglow.de/robots.txt` – crawl rules with Content-Signal (search=yes, ai-input=yes, ai-train=no)
- `https://livaglow.de/sitemap.xml` · `https://livaglow.de/ratgeber/feed.xml` (RSS of the guide articles) · `https://livaglow.de/llms-full.txt` (all pages in one Markdown file)
- `https://livaglow.de/.well-known/tdmrep.json` – TDM reservation: no text-and-data mining for model training; use as a cited source is welcome

## Markdown instead of HTML
Every content page answers a request with `Accept: text/markdown` in Markdown (`Content-Type: text/markdown`, header `x-markdown-tokens`). Browsers keep getting HTML. Covered: `/`, `/custom`, `/faq`, `/ratgeber`, `/ratgeber/:slug`, `/tasse/:slug`, `/mug/:slug`, `/produktsicherheit`, `/partnerprogramm`.

```
curl -H "Accept: text/markdown" https://livaglow.de/faq
```

## Product feeds
- `https://livaglow.de/feed/google.xml` – RSS 2.0 with Google Merchant namespace
- `https://livaglow.de/feed/products.tsv` – TSV with Google and OpenAI (ChatGPT Shopping) field names

## MCP server
Endpoint: `https://livaglow.de/api/mcp` (Streamable HTTP, POST, JSON-RPC 2.0). Protocol versions: 2026-07-28, 2025-11-25, 2025-06-18, 2025-03-26, 2024-11-05. Modern clients send version and capabilities in `_meta` plus the headers `MCP-Protocol-Version`, `Mcp-Method` and, for `tools/call`, `Mcp-Name`; legacy clients start with `initialize`. No sessions, no auth, 120 requests per minute per IP.

Tools:
- `get_shop_overview` – Facts about LivaGlow and its single product, the personalised ceramic mug: specs, fixed prices, volume discount, shipping (Germany only), delivery, returns policy, photo requirements and key URLs.
- `calculate_price` – Exact price for a number of mugs in EUR: first mug full price, every additional mug discounted (also across different designs), shipping cost or free shipping, total. Same maths as the shop checkout, before any promo code.
- `get_delivery_estimate` – Expected delivery window for an order placed now (Germany, DHL): production start rule (cutoff 14:00 Berlin time on business days), earliest and latest delivery date.
- `list_occasions` – Occasion landing pages with ready-made templates (photo mug, birthday, couples, pet, Mother's Day, Christmas) with German and English URLs and the designer deep link that preselects the templates.
- `search_faq` – Keyword search over the shop FAQ and the occasion-page FAQs (German): designer usage, image quality, payment, shipping, returns, care. Returns the best matching questions with full answers.
- `search_guides` – Find LivaGlow guide articles (German) about printed mugs: dishwasher safety, porcelain vs ceramic, photo resolution, printing costs, print durability, gift ideas. Returns title, direct answer and URL.
- `get_page_markdown` – Full content of a LivaGlow page as Markdown. Supported paths: /, /custom, /faq, /ratgeber, /ratgeber/:slug, /tasse/:slug, /mug/:slug, /produktsicherheit, /partnerprogramm (e.g. /faq, /ratgeber/tasse-spuelmaschinenfest, /tasse/geburtstag, /mug/birthday).
- `get_store_rating` – Current Trustpilot rating of the shop (TrustScore and number of reviews) with the profile URL.
- `get_design_options` – Everything an agent needs before create_design_link: available fonts with style hints, text size range, background presets, photo shapes, clipart ids by category, templates with their text slots, print-area geometry and limits.
- `create_design_link` – Turns a design description into a link that opens the LivaGlow designer with the finished draft (texts, cliparts, background, photo placeholder, optional template). Nothing is stored or ordered: the customer opens the link, checks the 3D preview, uploads their photo if a placeholder is present, and orders. Texts are placed automatically (centred column) unless x/y are given; with a template, texts replace the template's text slots in order. Photos cannot be passed; use photo:{shape} to reserve a placeholder. Call get_design_options first for valid fonts, cliparts and templates.
- `get_care_and_safety` – Care instructions and safety warnings for the mug (dishwasher, microwave, thermal shock, damage) as published on the product safety page.

Resources: llms.txt, product page, FAQ, product safety and guide index as Markdown.

Example (modern):
```
curl -X POST https://livaglow.de/api/mcp \
  -H "Content-Type: application/json" -H "Accept: application/json, text/event-stream" \
  -H "MCP-Protocol-Version: 2026-07-28" -H "Mcp-Method: tools/call" -H "Mcp-Name: calculate_price" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"calculate_price","arguments":{"quantity":3},"_meta":{"io.modelcontextprotocol/protocolVersion":"2026-07-28","io.modelcontextprotocol/clientCapabilities":{}}}}'
```

## WebMCP (in the browser)
Every page loads `https://livaglow.de/webmcp.js`, which registers browser-side tools via `navigator.modelContext` when the API exists: get_shop_info, calculate_mug_price, get_design_options, apply_mug_design, open_mug_designer, track_order, open_page. apply_mug_design fills the open designer with a draft (or opens it with `/custom?draft=…`); nothing is ordered by the agent.

## Design drafts for agents
`create_design_link` (MCP) and `apply_mug_design` (WebMCP) take the same structure: optional template, background (preset id or colour/gradient), photo placeholder with shape, and up to 10 items (texts with font/size/colour/arc, cliparts by id). The result is a link `/custom?draft=<base64url>`, a PNG preview of the flat print area (returned inline as MCP image content and at `/api/design-preview?draft=…`) – no server state, nothing stored, nothing printed until the customer orders. The designer re-validates every draft against whitelists (fonts, cliparts, shapes, #rrggbb colours, size limits); image URLs are not part of the format.

## Status
`https://livaglow.de/api/health` returns `{"status":"ok"}`.

## Contact
mail@livaglow.de
