KaliCart Bridge

Ein kostenloses WooCommerce-Plugin, das Ihren Live-Katalog als strukturierte REST-API für KI-Shopping-Agenten verfügbar macht. Kein LLM, keine Cloud, kein externer Dienst — alles läuft auf Ihrem Server.

Alle Katalog-Endpunkte lesen zum Zeitpunkt der Abfrage direkt aus der WooCommerce-Datenbank. Preisänderungen, Lagerbestandsaktualisierungen und neue Produkte werden sofort widergespiegelt — keine Synchronisierung, kein Snapshot, keine Verzögerung.

Version1.0.114
BenötigtWooCommerce 7.0+
DatenquelleLive WooCommerce DB

Installation

  1. kalicart-bridge-1.0.114.zip herunterladen
  2. Hochladen und aktivieren über WP Admin → Plugins → Neu hinzufügen → Hochladen
  3. WooCommerce muss aktiv sein — das Plugin prüft dies und warnt, falls nicht
  4. Bei der Aktivierung sind standardmäßig alle Signale aktiviert (Badge, robots.txt, Sitemap)
  5. Besuchen Sie WP Admin → KaliCart, um das Katalog-Gesundheits-Dashboard zu sehen

Endpunkte

Alle Endpunkte unter /wp-json/kalicart/v1/.

GET/discoverypublicEinstiegspunkt. Merchant-Info, Fähigkeiten, alle Endpunkt-URLs, Versandrichtlinie, Coupon-Richtlinie, Agentenanweisungen.
GET/catalog/metapublicAkzeptierte Filterwerte: Kategorie-Slugs, Preisspanne, Geschlechtswerte, Farbfamilien.
GET/catalog/categoriespublicVollständiger Merchant-Kategoriebaum (nativ WooCommerce). Jeder Knoten enthält das Flag has_products.
GET/catalog/searchpublicVolltext- + strukturierte Filtersuche.
GET/catalog/productspublicPaginierte Produktliste ohne Textabfrage. Alle Filter gelten.
GET/catalog/product/{id}publicEinzelnes Produkt mit vollständigem normalisiertem Payload inklusive Versand und aktiven Coupons.
GET/catalog/healthadmin onlyKatalog-Qualitätsbericht. Fügen Sie ?force=true hinzu, um den 5-Minuten-Cache zu umgehen.
POST/checkout/sessionpublicErstellt Warenkorb-Sitzung — Agent übergibt product_id oder items[], erhält cart_url und checkout_url für die Übergabe an den Käufer. WooCommerce ist die Zahlungsautorität.
GET/ucppublicUCP-Profil (v2026-04-08) — deklariert die Fähigkeiten catalog.search und catalog.lookup für UCP-konforme Agenten (ChatGPT, Copilot, Gemini). Immer erreichbar, unabhängig davon, wie der Host /.well-known/ bereitstellt.
GET/.well-known/ucp.jsonpublicDasselbe UCP-Profil als physischer .json-Spiegel, ausgeliefert als application/json auf jedem Host.
GET/.well-known/kalicart-bridge.jsonpublicKaliCart-Bridge-Discovery-Einstiegspunkt — Verweis auf das UCP-Profil und das Discovery-Dokument. Physischer .json-Spiegel, ausgeliefert als application/json auf jedem Host.

Discovery-Dokument

Der einzige Einstiegspunkt. Wichtige Felder, die ein Agent lesen muss:

  • kalicart_agent_catalog.taxonomy — immer merchant_native_woocommerce. /catalog/categories lesen, um sie aufzuzählen.
  • public_catalog.query_construction — kritische Regeln für den korrekten Aufbau von Suchanfragen.
  • public_catalog.search_filters — akzeptierte Parameter mit erlaubten Werten.
  • merchant_shipping_policy — deklarative Versandzonen, Methoden und Schwellenwerte für kostenlosen Versand.
  • coupon_policy.price_rule — Coupons sind immer bedingte Checkout-Ersparnisse; ersetzen niemals price.current.
  • agent_instructions — geordnete Schritte, die der Agent befolgen muss.
// Minimal agent bootstrap
GET /wp-json/kalicart/v1/discovery
 read public_catalog.* for all endpoint URLs
 read merchant_shipping_policy for shipping reasoning
 read agent_instructions for query rules

Produkt-Payload

Preis

  • price.encoding: decimal_major_units — Werte sind Dezimalzahlen in vollen Währungseinheiten (z.B. 29.99 = 29,99 EUR). Keine ISO-4217-Untereinheiten.
  • price.display: als reiner Text formatierte Zeichenkette (z.B. „29,99 €") — eindeutig, zur Darstellung verwenden.
  • price.vat_included: ob die Preise laut WooCommerce-Steuereinstellungen die MwSt. enthalten.
  • price.price_type: STATIC für Standardprodukte. Abgestimmt auf das KaliCart-Global-Format.
  • list_price: ursprünglicher Listenpreis vor Rabatten (nur einfache Produkte).
  • price.current — der maßgebliche Katalogpreis. Immer für Handelsentscheidungen verwenden.
  • price.on_sale, price.discount_pct — Verkaufsstatus und Rabattprozentsatz auf den regulären Preis.
  • Variable Produkte liefern price.type: "range" mit min_regular, max_regular, min_sale, max_sale.

Stock

  • stock.in_stock — boolescher Wert, vor jedem Angebot prüfen.
  • stock.availability_status — UCP-Standardwerte: in_stock, out_of_stock, backorder.
  • stock.quantity — numerisch, wenn der Merchant die Lagermenge verwaltet; sonst null.
  • stock.quantity_tracked — boolescher Wert, ob der Merchant die numerische Lagermenge verwaltet.
  • stock.backorder_allowed — boolescher Wert, true, wenn Nachbestellung notify oder yes ist.
  • stock.confidencenumeric_stock_quantity (exakte Anzahl), availability_status_only (Merchant zeigt die Menge nicht — als verfügbar behandeln, nicht als bestätigten Bestand) oder variant_dependent (zuerst eine Variante auswählen).
  • stock.agent_note — vorhanden, wenn die Konfidenz nicht numeric_stock_quantity ist. Vor der Meldung der Verfügbarkeit lesen.

Berechnete Attribute

  • gender — abgeleitet aus dem Attribut pa_gender, Schlüsselwörtern im Kategoriepfad, Tags, Produktname. null, wenn unbestimmbar.
  • colors[] — Farbfamilien, gemappt aus pa_color / pa_colore. Jeder Eintrag hat family und raw.
  • sizes — extrahiert aus pa_size / pa_taglia. Typ automatisch erkannt: clothing, numeric oder shoes.

Kaufbereitschaft

  • purchase_readiness.statusdirect_cart_possible (einfaches vorrätiges Produkt, checkout_url direkt verwenden) oder variant_selection_required (variables Produkt, Nutzer muss zuerst eine Variante auswählen).
  • purchase_readiness.blocking_fields[] — Attribute, die der Nutzer vor dem Checkout wählen muss (z.B. ["size"]).
  • purchase_readiness.can_add_to_cart_directly — boolesche Abkürzung.

Varianten & Variationen

  • variants[] — immer ein Array, nie null. Produktdetail: variable Produkte zeigen alle Variationen mit attributes, price, in_stock, availability_status, sku, barcodes; einfache Produkte zeigen einen einzigen Eintrag mit den eigenen Daten des Produkts. Listen- und Suchantworten: einfache Produkte behalten ihren einzelnen Eintrag, variable Produkte liefern aus Performance-Gründen ein leeres Array — /catalog/product/{id} abrufen für die vollständige Variantenliste.
  • variations[] — Alias nur für variable Produkte (Abwärtskompatibilität).
  • variation_id im Checkout-Session-Payload übergeben, wenn eine Sitzung für ein variables Produkt erstellt wird.
  • availability_status — UCP-Standardwerte: in_stock, out_of_stock, backorder. Vorhanden sowohl beim Produktbestand als auch bei jeder Variante.
  • list_price — ursprünglicher Listenpreis vor Rabatten (durchgestrichen). Vorhanden bei einfachen Produkten; null bei variablen (Preis variiert pro Variante).
  • barcodes[] — branchenübliche Kennungen (EAN, GTIN, UPC), gelesen aus den WooCommerce-Produkt-Metadaten. Leeres Array, wenn vom Merchant nicht gesetzt.

Metadata

  • metadata.purchase_readiness — dasselbe wie das übergeordnete purchase_readiness, hier für UCP-kompatible Agenten bereitgestellt, die metadata lesen.
  • metadata.stock_confidence — Konfidenzniveau der Lagerbestandsdaten.
  • metadata.bridge_version — Plugin-Version, die diese Antwort erzeugt hat.

Versandzonen

shipping.zones[] zeigt die vollständige WooCommerce-Versandkonfiguration: Zonenname, Länder-/Regionscodes, Methoden (free_shipping, flat_rate, local_pickup) mit Kosten und Schwellenwert für kostenlosen Versand. Einmal pro Anfrage berechnet und gecacht. Der maßgebliche Versandpreis ist immer der WooCommerce-Checkout.

Checkout

checkout_url — direkte Warenkorb-Zufügung für einfache vorrätige Produkte. Produktseite für variable Produkte, bei denen eine Variantenauswahl erforderlich ist.

Für Multi-Produkt-Abläufe die Checkout-Sitzungen weiter unten verwenden.

Versand & Coupons

Versand

Das Discovery-Dokument enthält merchant_shipping_policy — einen Snapshot der WooCommerce-Versandzonen, -methoden und Schwellenwerte für kostenlosen Versand. Jedes Produkt trägt zudem ein shipping-Feld mit Kontext auf Produktebene (Klasse, Gewicht, Berechtigung zum kostenlosen Versand beim aktuellen Preis). Der WooCommerce-Checkout ist die letzte Instanz für zielortspezifische Kosten.

Coupons

Jedes Produkt trägt active_coupons[] — aktive Coupons, die auf dieses Produkt oder diese Kategorie anwendbar sind. Ersetzen Sie price.current niemals durch einen coupon-angepassten Wert. Zeigen Sie den Katalogpreis; bieten Sie den Code als bedingte Ersparnis beim Checkout an.

Jeder Coupon-Eintrag enthält combinable_with_sale: "unknown — verify at checkout" und verification_required: true. Ein Coupon wird erst bestätigt, nachdem der WooCommerce-Warenkorb/-Checkout ihn akzeptiert und die Summen ändert. Coupons können mit Verkaufspreisen kombinierbar sein, aber nur der Checkout kann dies bestätigen.

// Korrekte Agentendarstellung
"Price is €89. Use code SAVE20 at checkout for 20% off (≈ €17 saving)."

// Falsch
"Price is €71.20"  ← Coupon niemals in den Preis einrechnen

Checkout-Sitzungen (optional)

Wenn vom Merchant aktiviert, können Agenten Checkout-Sitzungen mit einem oder mehreren Produkten erstellen. Jede Sitzung liefert zwei URLs für den Nutzer zurück — kein OAuth, keine PII, keine Zahlung auf Agentenseite.

POST/checkout/sessionpublicSitzung erstellen — einzelnes Produkt oder items[]-Array (max. 20)
GET/checkout/session/{id}publicSitzung abrufen — items, subtotal, cart_url, checkout_url, status
DELETE/checkout/session/{id}publicSitzung stornieren

Sitzungsantwort

  • cart_url — ein Klick: fügt alle Artikel dem Warenkorb hinzu, landet auf der WooCommerce-Warenkorbseite. Nutzer prüft vor der Zahlung.
  • checkout_url — ein Klick: fügt alle Artikel dem Warenkorb hinzu, leitet direkt zum Checkout weiter.
  • subtotal — Summe aller Artikelgesamtbeträge zu Katalogpreisen. Enthält keinen Versand und keine Coupons.
  • Die Sitzung läuft nach 30 Minuten ab. Statusübergänge: pendingcart_loaded.
// Mehrprodukt-Sitzung
POST /checkout/session
{
  "items": [
    { "product_id": 1326, "quantity": 1, "variation_id": 1477 },  // erforderlich für variable Produkte
    { "product_id": 1307, "quantity": 2 }
  ]
}
 { "cart_url": "...", "checkout_url": "...", "subtotal": 651 }

Agentensignale

Alle vier Signale werden bei der Aktivierung automatisch injiziert — kein manueller Code erforderlich.

<link rel="kalicart-agent"> in <head>Verweist auf das Discovery-Dokument. Wird von Agenten erkannt, die den HTML-Head parsen.
/.well-known/kalicart-bridge.json & /.well-known/agent-catalog.jsonPhysische .json-Spiegel, ausgeliefert als Content-Type: application/json auf jedem Host. Die erweiterungslosen Formen (/.well-known/kalicart-bridge, /.well-known/agent-catalog) werden ebenfalls über WordPress-Rewrite ausgeliefert, sofern der Host /.well-known/ durch WordPress leitet; auf Hosts, die /.well-known/ als statisches Verzeichnis bereitstellen, sind sie nicht verfügbar — Agenten sollten daher die .json-Formen abfragen. Beide werden im Discovery-Dokument unter well_known.* offengelegt.
/.well-known/ucp.jsonUCP-Profil (Universal Commerce Protocol v2026-04-08), das die Fähigkeiten dev.ucp.shopping.catalog.search und dev.ucp.shopping.catalog.lookup deklariert. Physischer .json-Spiegel, ausgeliefert als application/json auf jedem Host; dasselbe Profil ist immer über den REST-Endpunkt /wp-json/kalicart/v1/ucp erreichbar. Wird von UCP-konformen Agenten (ChatGPT, Copilot, Gemini) erkannt. Enthält Verweis zurück zur KaliCart-Bridge-Discovery.
AI catalog badgeEin sprechender <a>-Anker im Seitenkörper mit rel="kalicart-agent", beschreibendem title und aria-label. Position im wp-admin konfigurierbar.
robots.txtFügt Allow: /wp-json/kalicart/v1/ und den Sitemap:-Verweis über den WP-Filter robots_txt hinzu. Keine Datei wird auf die Festplatte geschrieben.
[kalicart_agent_index] shortcodeOptional. Zu einer beliebigen WordPress-Seite hinzufügen, um ein für Mensch und Maschine navigierbares Verzeichnis aller Endpunkte und des Live-Kategoriebaums zu veröffentlichen. Nach der Veröffentlichung die Seiten-URL in WP Admin → KaliCart → Settings → Agent index page URL einfügen — sie erscheint dann im Discovery-Dokument als agent_index_url.
sitemap-agentic-bridge.xmlWird dynamisch unter /sitemap-agentic-bridge.xml ausgeliefert. Listet alle Katalog-Endpunkte mit agent:role- und agent:note-Annotationen auf.

Föderierter Katalog

Ein optionales, offenes Discovery-Netzwerk. Der Bridge macht Ihren Katalog für Agenten lesbar, die bereits auf Ihrer Domain sind; der Föderierte Katalog macht ihn auffindbar für Agenten, die Ihren Shop noch nicht kennen. Opt-in, separater Dienst, jederzeit widerrufbar.

Zwei unterschiedliche Discovery-Pfade — leicht zu verwechseln, daher hier klar dargestellt:

Lokale Signale (siehe Agentensignale)Die .well-known-Dateien, robots.txt-Einträge und der rel="kalicart-agent"-Head-Link sind Erstkontakt-Hinweise für einen Agenten, der direkt auf Ihrer Domain landet. Sie speisen den föderierten Index nicht.
Föderierter IndexEin separater, händlerübergreifender Index, gehostet von KaliCart Global. Ein Agent kann ihn einmal durchsuchen und strukturierte Ergebnisse über alle föderierten Shops hinweg erhalten, ohne einen davon im Voraus zu kennen.

So funktioniert es, Schritt für Schritt:

1. Opt-inÜber WP Admin → KaliCart Bridge setzen Sie das Häkchen bei der Zustimmung zur Global-Indexierung und klicken auf Activate Federated Catalog. Das Plugin sendet einen Datenpunkt — die öffentliche URL Ihrer Website. Es werden keine Katalogdaten übertragen.
2. PullKaliCart Global liest Ihren bereits öffentlichen Katalog über dieselben oben dokumentierten Endpunkte /discovery und /catalog/*. Es liest nur; es schreibt niemals in Ihren Shop.
3. Index & searchIhre Produkte werden in den gemeinsamen Index normalisiert. Agenten fragen ihn über die öffentliche globale Suchoberfläche ab — einschließlich des schlüssellosen MCP-Tools global_search — und erhalten strukturierte, händlerübergreifende Ergebnisse.
4. Route backWenn Ihre Produkte übereinstimmen, verweist das Ergebnis den Agenten zurück zu Ihrem Shop. Der föderierte Index ist eine Discovery-/Routing-Schicht — maßgeblicher Preis, Verfügbarkeit und Checkout bleiben immer auf Ihrer Website und werden live von Ihrem Bridge bereitgestellt.

Der Widerruf ist symmetrisch: Häkchen bei der Zustimmung entfernen, und das Plugin signalisiert KaliCart Global die Abmeldung; Ihr Katalog wird geparkt und verlässt die föderierten Ergebnisse, während der direkte Agentenzugriff auf Ihren Shop aktiv bleibt.

Katalog-Gesundheits-Dashboard

Echtzeit-Qualitätsbericht des Katalogs über WP Admin → KaliCart.

  • Quality score — 0–100 gewichteter Durchschnitt über alle Produkte basierend auf der Schwere der Probleme.
  • Quality signals — Produkte mit hoher oder mittlerer Problemschwere (fehlende Beschreibung, Nullpreis, keine Kategorie). Nichts wird blockiert: Diese Produkte werden weiterhin vollständig an Agenten ausgeliefert, aber die Probleme werden als deklarierte Qualitäts-Flags mitgeführt und senken den Score. Jeder Eintrag verlinkt direkt zum WP-Produktbearbeitungsbildschirm.
  • Soft alerts — fehlende Bilder und fehlende SKUs erscheinen als Vorschläge mit niedriger Priorität und zählen nicht als Quality Signals.
  • Suggestions — priorisierte Liste von Katalogverbesserungen mit betroffener Produktanzahl.

Design-Regeln

  • Kein LLM. Kein externer Dienst. Keine Cloud. Alles läuft auf dem Server des Merchants.
  • Keine benutzerdefinierte Patch für ein einzelnes Produkt. Jede Normalisierung muss generisch und für jeden WooCommerce-Katalog gültig sein.
  • Die Taxonomie ist immer merchant-nativ. Nie eine globale Kategoriestruktur annehmen.
  • price.current ist immer der Katalogpreis. Coupons sind Ersparnisse beim Checkout, niemals Preisersetzungen.
  • Die Versandrichtlinie ist deklarativ. Der WooCommerce-Checkout ist die letzte Instanz für zielortspezifische Kosten.
  • Der Parameter q akzeptiert nur das reine Produkt-Substantiv. Attribute müssen in ihre eigenen Filter.