★ Nur Einzelstücke ★ Wenn's weg ist, ist's weg ★ Versichert verschickt aus der Schweiz ★ EU-Lieferung möglich ★ Sicher zahlen mit Stripe ★ Nur Einzelstücke ★ Wenn's weg ist, ist's weg ★ Versichert verschickt aus der Schweiz ★ EU-Lieferung möglich ★ Sicher zahlen mit Stripe
MarktplatzMia x Klausi

Für Entwickler & KI-Agenten

Agenten-Integration

Mia x Klausi bietet eine öffentliche REST-API und einen MCP-Server, damit KI-Agenten Produkte finden, einen Warenkorb vorbereiten und einen sicheren Stripe-Checkout-Link erstellen können. Es werden nur Einzelstücke verkauft — jedes Produkt gibt es genau einmal.

Was Agenten können

🟢 Nur lesend: Produkte suchen, Details/Kategorien lesen, Empfehlungen, Bestellstatus (mit Token).

🟠 Datenverändernd: Warenkorb erstellen/ändern.

🔴 Kostenrelevant + bestätigungspflichtig: Checkout-Link erstellen. Nur nach ausdrücklicher Nutzerbestätigung. Es wird ausschließlich ein Stripe-Link erzeugt — der Nutzer zahlt direkt bei Stripe.

Endpunkte & Discovery

REST-Basis: https://www.miaxklausi.ch/api/agent/v1

OpenAPI: /openapi.json

MCP-Endpunkt: https://www.miaxklausi.ch/mcp (Streamable HTTP)

Health-Check: /api/agent/health

Capabilities: /.well-known/agent.json

llms.txt: /llms.txt

Authentifizierung

Lesende Produkt-Endpunkte sind öffentlich (rate-limited).

Geschützte Aktionen nutzen kurzlebige, signierte Bearer-Tokens:

cartToken (aus POST /carts) → Warenkorb ändern, Checkout erstellen.

orderAccessToken (aus POST /checkouts) → Bestellstatus lesen.

Ablauf eines Kaufs

  1. Produkte suchen (search_products / GET /products).
  2. Dem Nutzer Produkt, Preis, Zustand und Versand zeigen.
  3. Nutzer bestätigt den Artikel.
  4. Warenkorb erstellen (POST /carts).
  5. Vollständige Kostenübersicht zeigen (GET /carts/:id).
  6. Nutzer bestätigt den Checkout ausdrücklich.
  7. Checkout-Link erstellen (POST /checkouts, userConfirmed: true).
  8. Nutzer zahlt direkt bei Stripe.
  9. Stripe bestätigt die Zahlung per Webhook — erst dann gilt der Verkauf.

Beispiele

Produktsuche (curl)

curl "https://www.miaxklausi.ch/api/agent/v1/products?availableOnly=true&sort=price_asc&limit=5"

Warenkorb & Checkout (JavaScript)

// 1) Warenkorb anlegen
const cart = await fetch("https://www.miaxklausi.ch/api/agent/v1/carts", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({ productId: "prod_xxx" }),
}).then(r => r.json());

// 2) Nutzer bestätigt -> Checkout-Link erstellen
const checkout = await fetch("https://www.miaxklausi.ch/api/agent/v1/checkouts", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    "Authorization": "Bearer " + cart.cartToken,
    "Idempotency-Key": crypto.randomUUID(),
  },
  body: JSON.stringify({
    cartId: cart.cartId,
    userConfirmed: true,
    successUrl: "https://www.miaxklausi.ch/erfolg",
    cancelUrl: "https://www.miaxklausi.ch/",
  }),
}).then(r => r.json());

// checkout.checkoutUrl -> Nutzer zahlt bei Stripe
// checkout.orderId + checkout.orderAccessToken -> Status abfragen

MCP-Verbindung

{
  "mcpServers": {
    "miaxklausi": {
      "url": "https://www.miaxklausi.ch/mcp"
    }
  }
}

Fehlercodes

CodeBedeutung
INVALID_REQUESTUngültige Eingabe (400)
UNAUTHORIZEDToken fehlt/ungültig (401)
FORBIDDENToken passt nicht (403)
PRODUCT_NOT_FOUNDProdukt existiert nicht (404)
PRODUCT_NOT_AVAILABLEBereits verkauft/reserviert (409)
CART_NOT_FOUND / CART_EXPIREDWarenkorb weg/abgelaufen (404/410)
CONFIRMATION_REQUIREDNutzerbestätigung fehlt (428)
RATE_LIMITEDZu viele Anfragen (429)
ORDER_NOT_FOUND / PAYMENT_PENDINGBestellung offen (404/409)
INTERNAL_ERRORServerfehler (500)

Format: { "error": { "code", "message", "retryable", "requestId" } }

Rate-Limit, Einzelstücke & Datenschutz

Rate-Limit: pro IP begrenzt; bei Überschreitung kommt RATE_LIMITED (429).

Einzelstücke: Menge ist immer 1. Verfügbarkeit wird vor dem Checkout erneut geprüft; der Verkauf gilt erst nach verifizierter Stripe-Zahlung.

Idempotenz: Sende einen Idempotency-Key-Header bei POST /carts und POST /checkouts, um Doppelaktionen zu vermeiden.

Datenschutz: Die API gibt keine personenbezogenen Kundendaten aus. Details in der Datenschutzerklärung.

Kontakt

Fragen zur Integration? Über das Kontaktformular.

Hinweis: Ein MCP-Server wird nicht automatisch von allen Agenten gefunden — Nutzer oder Plattformen müssen ihn verbinden. OpenAPI, strukturierte Daten, Sitemap und llms.txt ergänzen die Auffindbarkeit, garantieren sie aber nicht.