# Virail — LLM / agent context > Virail compares trains, buses, and flights. Product chat and tools keep live inventory off the model. ## Product assistant (humans) - Chat UI: `/assistant` on market hosts (same-origin `/api/v1/assistant/*`) - Architecture: LLM picks a tool; Virail executes search/resolve; UI gets slim blocks (no trip dumps in the model) ## MCP server (agents) Local stdio MCP wrapping the same tool defs: ```bash cd virail-core && npm run assistant-mcp ``` Cursor MCP example: ```json { "mcpServers": { "virail": { "command": "npx", "args": ["tsx", "src/cli/assistant-mcp.ts"], "cwd": "/path/to/virail-api/virail-core" } } } ``` Tools: `resolve_place`, `get_price_calendar`, `open_full_results`, `search_accommodation` (Booking.com), `get_italian_train_status`, `get_italian_station_departures` (RitardoTreni, IT market / best-effort). Live transport search uses the HTTP assistant session API (Redis + workers). Discovery (machine-readable): - `/.well-known/mcp/server-card.json` - Official catalog: https://registry.modelcontextprotocol.io (publish when remote HTTP MCP is ready) ## Optional - Contact / methodology: see site footer and help center - Italian train delays: RitardoTreni public API on `.it` only; tools soft-fail when upstream is down