Architecture — Maya → Anamaya MCP → OMS

Preferred live path when MAYA_OMS_VIA_MCP=true. Channels never call OMS or providers directly.

Gateway path Behaviour ≠ inventory Direct OMS = fallback only
End-to-end pathChannels → maya-api → MCP → OMS What lives whereMemory vs live inventory Two MCP servicesOMS gateway vs persona MisconceptionsWhat MCP is not

End-to-end request path

Preferred spine

Forbidden: WhatsApp / agent → provider or OMS HTTP without Domain API + MCP

flowchart LR
  T[Traveler] --> CH[Channel
WhatsApp / Web / iOS / Android] CH --> API[maya-api
Conversation + Agent] API --> NR[Live NRCP pack
SPEC-017 voice] API --> MCP[maya-anamaya-mcp
OMS gateway] MCP --> OMS[Anamaya OMS] OMS --> BT[Biztrip / OTA
aggregation]

What lives where

Yogi’s reading for inventory is correct: offers always come from OMS. MCP exposes the capability; it is not the source of truth for fares or rooms.

Concern Where it lives Does MCP store it?
User intent, slots, trip summary maya-api conversation state + memory Session / behaviour — yes
Chosen flight / hotel in this chat maya-api session state Choice context — yes
Reply style / NLU pack Natural Reply Capability Pack (SPEC-016/017) No — pack store / control plane
Live flight offers & prices OMS POST /flight/search/* No — queried each search
Live hotel discovery / rates / photos OMS hotel discovery / room-rate / property No — queried each search
Policy, ESPPD, approvals, e-ticket OMS booking / policy APIs Proxied on demand — not an inventory DB
Empty hotel list after training usually means OMS discovery empty for that geo, DNS split-brain, or conversation focus bug — not a missing MCP hotel cache.

Two different MCP services

“MCP” in chat is easy to conflate. There are two sibling gateways.

flowchart TB
  subgraph Channels
    WA[WhatsApp]
    WEB[Web PoC]
    APP[iOS / Android]
  end
  subgraph Maya
    API[maya-api]
    NRCP[NRCP behaviour pack]
    MEM[Session memory
intent · picks · prefs] end subgraph Gateways AMCP[maya-anamaya-mcp
OMS tools] PMCP[maya-travel-ai-mcp
persona / CI] end subgraph Backbone OMS[Anamaya OMS] CP[Control plane specs] end WA --> API WEB --> API APP --> API API --> NRCP API --> MEM API --> AMCP AMCP --> OMS PMCP --> CP
ServiceRoleTypical surface
maya-anamaya-mcp OMS capability gateway for chatbot + agents maya.suherman.net/mcp/anamaya
maya-travel-ai-mcp Persona / SPEC / CI triggers — not inventory maya.suherman.net/mcp

Misconceptions to avoid

MisconceptionReality
MCP is a database of flights/hotels MCP is a tool/REST facade over live OMS. Inventory stays dynamic in OMS/Biztrip.
Maya AI → OMS directly Preferred path is Maya → Anamaya MCP → OMS. Direct OMS is fallback for paths MCP does not expose yet.
Empty hotel list means MCP “forgot” hotels Usually OMS empty geo, DNS, or focus bug — not an MCP inventory miss.
Behaviour pack = booking rules NRCP controls how Maya speaks. Book / pay / cancel stay hard-gated in tools (CONFIRM).