Request path & one chat turn

How a traveler message becomes a grounded reply — and where corporate booking sits on the Anamaya order spine.

Search is AUTO Book needs CONFIRM ×2 ESPPD-first corporate

One chat turn (hotel search example)

Session remembers picks — inventory stays live

Maya does not invent a hotel list when OMS returns empty

sequenceDiagram
  participant U as Traveler
  participant M as maya-api Agent
  participant P as NRCP pack
  participant G as Anamaya MCP
  participant O as OMS

  U->>M: Hotel dekat Seminyak 2 malam
  M->>P: load live reply / NLU rules
  M->>M: intent + slots + session context
  Note over M: remembers flight pick / dates
does NOT invent hotel list M->>G: search_hotels / discovery tool G->>O: POST /hotel/discovery live O-->>G: properties + photos or empty G-->>M: canonical offers M->>M: rank ≤3, grounded facts M-->>U: Hotel options or honest empty

Corporate booking spine

flowchart LR
  A[ESPPD + Surat Jalan] --> B[Policy-filtered search]
  B --> C[Top 3 options]
  C --> D[Traveler confirms]
  D --> E[Submit package]
  E --> F[Manager approval]
  F --> G[Issued / Failed]
  G --> H[E-ticket on channel]
          
Chat stops at recap until an explicit second confirmation before mutating OMS bookings. First “Ya, book” = itinerary recap only.

Deployed runtime (PoC / DEV)

ServiceRoleTypical host
maya-apiAgent + domain APICloud Run anamaya-g
maya-pocWeb chat + /simulasimaya.suherman.net
maya-anamaya-mcpOMS MCP + REST facade/mcp/anamaya
maya-travel-ai-mcpPersona / SPEC MCP/mcp
Anamaya OMSOrder spinedev-anamaya.biztrip.id (API VM)
Control planeSpecs / SDDprivate sibling repo
Ops caveat: if dev-anamaya.biztrip.id has DNS split-brain (API + Vite site), calls look flaky. That is not an MCP inventory bug.