# agentic-commerce.md — xl0g und die Handelsprotokolle

> Dieses Dokument sagt einem Agenten, **welche Handelsprotokolle xl0g spricht** — und
> ausdrücklich, welche nicht. Wie bei [`/auth.md`](/auth.md) ist der zweite Teil der
> nützlichere: er erspart die Suche nach Endpunkten, die es nicht gibt.

**Kurzfassung:** xl0g ist **kein Händler**. Es betreibt keinen Warenkorb, keine Kaufsitzung und
keine Zahlung, und es ist nicht Merchant of Record. xl0g liefert **ein Feld**: den aus Kapazität
berechneten Liefertermin. Wer kaufen will, spricht mit dem Shop — nicht mit uns.

---

## Was es NICHT gibt — bitte nicht danach suchen

| Pfad / Mechanismus | Zustand | Grund |
|---|---|---|
| `/.well-known/acp.json` | **existiert nicht** | `protocol.name` ist die Konstante `"acp"` — jedes solche Dokument sagt „ich bin ACP-Verkäufer". xl0g führt keine Kaufsitzung. Laut ACP-Spezifikation ist ein **404 hier die gültige Aussage** „Seller does not support ACP". |
| `/.well-known/ucp` | **existiert nicht** | UCP kennt vier Fähigkeiten — Cart, Checkout, Identity Linking, Order — und **alle vier setzen den Kaufvorgang voraus**. Fulfillment ist dort eine *Erweiterung des Checkout*, keine eigenständige Rolle. Ein Profil verlangt zudem `signing_keys` für ein Protokoll, das wir nicht sprechen. |
| `x402` / `HTTP 402` auf irgendeiner Route | **existiert nicht** | Zugang ist vertraglich, nicht per Zahlung. Siehe [`/auth.md`](/auth.md). |
| MPP `x-payment-info` in der OpenAPI | **existiert nicht** | Es gibt keinen Preis je Abruf; xl0g wird im Monatsmodell verkauft. |

**Ein 404 ist hier eine Antwort, kein Ausfall.** Ein Dokument zu veröffentlichen, das eine
Kaufrolle behauptet, wäre schlimmer: ein Agent liefe dagegen, **nachdem** er uns geglaubt hat.

---

## Was es gibt

**Der Liefertermin.** Nicht „2–3 Werktage", sondern ein Datum, das aus Team-Kapazität, Schichtplan,
Cut-off-Zeit, Feiertagen und der Laufzeit des Frachtführers gerechnet ist. Steigt die Auslastung,
rutscht das Datum — automatisch und nachvollziehbar.

| Weg | Adresse | Zugang |
|---|---|---|
| **MCP** (für Agenten empfohlen) | `https://xl0g.com/{tenant}/mcp` | `X-API-Key`, Werkzeug `delivery_date` |
| Liefertermin je Versandart | `https://xl0g.com/{tenant}/api/promise` | `X-API-Key`, Recht `promise:read` |
| Öffentlicher Produktfeed | `https://xl0g.com/{tenant}/api/ucp-feed` | auth-frei, je Mandant freigeschaltet |
| Vorführfeed (erfundene Daten) | `https://xl0g.com/stage/api/ucp-feed` | auth-frei, zum Ansehen ohne Kundendaten |
| Einstieg | `https://xl0g.com/{tenant}/.well-known/api-catalog` | auth-frei |

### Zum Namen des Feed-Pfads

Der Pfad heißt historisch `ucp-feed`, und sein Envelope trug bis 21.10.2026 (Version 1.5.334) die Bezeichnung
`agentic-commerce/v0`; seither `xl0g-ucp/v0`. **Das war irreführend.** Der Feed folgt einem **xl0g-eigenen Schema (v0)**
auf Basis von Schema.org — er ist **nicht** konform zum Universal Commerce Protocol und **nicht**
zum Agentic Commerce Protocol. Der Pfad bleibt vorerst, damit bestehende Integrationen nicht
brechen; die Beschreibungen sind korrigiert.

---

## Für Shop-Betreiber, die ACP oder UCP sprechen

Wenn **du** die Kaufsitzung führst, ist xl0g dein Zulieferer für genau ein Feld. Beide Standards
haben dafür einen Platz vorgesehen:

- **ACP:** `EstimatedDelivery` bzw. `FulfillmentOptionShipping` innerhalb deiner Session
- **UCP:** die Fulfillment-Erweiterung des Checkout (`dev.ucp.shopping.fulfillment`)

Du holst den Termin über MCP oder `/api/promise` und trägst ihn in deine Sitzung ein. **Die
Umrechnung liegt bei dir** — und zwar bewusst:

> xl0g liefert **ein Datum**, kein Zeitfenster. ACP modelliert eine Spanne
> (`{earliest, latest}`) im Format RFC 3339. Wir könnten daraus eine Spanne machen, aber jede
> Uhrzeit darin wäre erfunden. Lieber ein ehrliches Datum als ein plausibles Fenster.

---

## Warum das so bleibt

xl0g ist Infrastruktur für Logistikbetriebe. Die Ware gehört unseren Kunden, der Verkauf findet in
deren Shops statt, das Geld fließt dort. Ein Handelsprotokoll zu sprechen hieße, eine Rolle zu
behaupten, die wir nicht haben — und die Standards selbst sind an dieser Stelle eindeutig: sie
kennen keine Rolle für jemanden, der nur Daten zum Vorgang liefert.

Sollte sich das ändern, steht es zuerst hier.

---

*Stand 25.10.2026 (Umbenennung des Feed-Schemas vom 21.10.2026 eingearbeitet). Bei Widerspruch zwischen diesem Dokument und dem Verhalten der API gilt die
API — und wir haben hier einen Fehler gemacht, den wir hören wollen.*
