Connect your AI (MCP)
This is Kamra's highlight. Everything staff can do through a governed tool, an agent can do - through the same layer. Prices come from the pricing engine, guardrails and policies apply, and every action lands in the activity ledger with who / what / why. Other PMS products market AI; Kamra ships a real MCP server over the hotel's own APIs.
There are two ways to put an AI to work, and they can run side by side.
How it works
Claude → HTTPS /mcp (OAuth as you) → Kamra tools → pricing engine,
RBAC, folio rules, night audit, Activity LogThe model never invents a rate or skips a cancellation fee. It calls a tool; the tool refuses if the number is wrong or the role is short. Kamra Agent, the in-app assistant (bring-your-own key), uses the same APIs.
Staff connect as themselves. A front-desk session can quote, book and check in; it cannot change rates or run finance. Unattended jobs (HeyKoala, night scripts) use a service key from Developers.
1. Connect Claude (the usual path)
Your Kamra site must be public HTTPS - Claude talks to it from Anthropic's cloud, not from the laptop.
- In Kamra open Kamra Agent → Connect your AI.
- Click Connect Claude. Claude opens with this hotel's MCP URL filled in.
- Confirm Add, then sign in to Kamra if asked, pick the property, Allow.
- In a Claude chat, open the + menu → Connectors and enable Kamra.
Then talk in hotel language: "Book Mr. Rao a deluxe Fri-Sun with breakfast, company Acme pays the stay" - it quotes, books, routes billing by the company's rules, and logs everything.
Claude Code (same OAuth, from a terminal):
claude mcp add --transport http kamra https://pms.yourhotel.com/mcpThen /mcp in the session and complete the browser sign-in.
Disconnect from the same Connect panel - that revokes the grant. Claude must sign in again.
Localhost and air-gapped sites
If the origin is http:// or *.localhost, Connect Claude is disabled: Anthropic cannot reach you. Use Claude Code against the same /mcp URL on that machine, or the stdio sidecar in mcp/kamra_mcp.py with a personal API key from Developers.
Cloudflare / WAF
Remote MCP requests come from Anthropic's egress range 160.79.104.0/21. If Super Bot Fight Mode is on, allowlist that range on the MCP host or Claude will OAuth successfully and then fail to call tools.
2. Kamra Agent, the in-app assistant (bring your own key)
An optional chat assistant for staff, inside the console.
Enable it: Settings → AI assistant → pick a provider (OpenAI, Gemini, Groq, OpenRouter, Ollama, Azure, or Custom) → paste the key → Test connection → Save.
- OpenAI-compatible only in this form. An Anthropic
sk-ant-…key will fail here on purpose - use Connect Claude (MCP) instead, or put Claude behind the OpenRouter preset. - Gemini uses Google's OpenAI-compatible base URL (
generativelanguage.googleapis.com/v1beta/openai). - Your key, your data. No markup - requests go from your server to your provider.
- Governed: the model only calls Kamra's tools.
- Role-scoped: tools match the signed-in user's roles.
What work it can do
Kamra ships 101 governed tools on MCP (see the tool reference). Visibility is the intersection of the connected user's roles and the property's enabled modules - a house without F&B never sees POS tools; Front Desk still cannot change rates.
| Job | Tools |
|---|---|
| Front desk | Today's board, find stays, stay detail, availability, quote, book, waitlist, amend / move, check-in / out, guest lookup and journey, occupants |
| Billing | Folio(s), post / split / move charges, take payment, void, allowance, close folio, payment link |
| Housekeeping | Queue, assign / claim / update tasks, room HK status, minibar / laundry post from the floor |
| Ops | Create, list, and advance service tickets |
| F&B | Outlets, menu, table map, open / create / fire / pay checks, kitchen queue |
| Laundry | Board, rates, collect, status, deliver |
| Revenue | Rate changes inside the owner's floor / ceiling |
| Briefings | Owner briefing, hotel-position briefing - never change the figures |
| Night audit | Idempotent end-of-day posting and no-shows |
| Groups | Draft a block, pickup status, name a guest into the block, group billing |
| Banquets | Availability, catalogue, enquiry → quote → event order → close-out |
| Onboarding | setup_property, import_bookings - only if the user's role allows |
How to talk to it
Say the hotel work, not the API:
- "Who's arriving today, and who still owes?"
- "Quote a deluxe Friday to Sunday, two adults, breakfast."
- "Book that for Priya Sharma, 98765 43210."
- "The Rao booking wants to cancel - what's the fee?"
- "Post ₹450 minibar to 214, not alcohol."
- "Do we have the hall on 14 December for 180 pax?"
- "Morning briefing for the owner."
Confirm irreversible steps (checkout with a balance, cancelling inside the window, closing a folio) in the chat before the tool runs.
Keep using it
- Enable the connector per conversation in Claude's + menu. It does not stay sticky across every chat unless you pin it.
- Check Activity in Kamra - every MCP call is a row with your name.
- Rotate access with Disconnect on the Connect panel, not by rotating a Frappe API key.
- Kamra Agent is still there for a desk terminal that should not leave the browser.
Named always-on jobs (a night auditor that runs at 3am, an owner brief on WhatsApp, waitlist chase) are on the backlog below. Until they ship, Claude is the loop: you open a chat, it uses the tools.
Limitations
Be honest with the model, and with buyers:
- Channel / OTA and deep ledger / cashier tools are not on MCP yet (AR aging, FX desk, till open/close). REST + roles still cover them.
- Claude must reach the site. NAT / private bench → stdio fallback.
- Custom connector confirm. Until Kamra is in Anthropic's directory, Claude shows "this URL came from an external link" - click through it.
- Front Desk cannot change rates. Revenue Manager (or admin) can, inside guardrails. Tools the property has disabled never appear.
- Irreversible actions still need a human in the Claude chat. The tools will not phone the guest for you.
The autonomy rails
- Rate guardrails - floors / ceilings per room type; agents literally cannot price outside them.
- Deterministic money - pricing, GST, availability and policy fees are code, verified by the eval suite in CI on every change.
- Hard rules - alcohol never bills to a company folio; cancellations cannot skip the policy; night posting is idempotent.
- Audit - every action is in the Activity Log; click a row for the full before / after story.
Backlog (not in this release)
Kept visible so the differentiator has a next chapter. None of this is required to Connect Claude today.
Named jobs
- Night Auditor - scheduled close + morning WhatsApp, every line a tool call
- Public quote-and-book number (voice)
- Owner Brief - daily occupancy / arrivals / cash
- Villa turnover agent - checkout → housekeeping → availability
- Waitlist chase - poll
waitlist_readyand reach out - Guest WhatsApp thread that posts to the folio
- Public
/try-the-agentplayground with a tool trace - Submit Kamra to Anthropic's Connectors Directory
Tool holes
- Channel manager / OTA sync tools on MCP
- Cashier till open/close, city ledger, FX desk
- Inventory / recipes
- WhatsApp thread → folio from MCP
Housekeeping
[email protected]created on install (today:seed_rbac_v2only)- Tear down dormant autonomy / approvals UI
- STR-shaped MCP (cleaning fee, deposits, access instructions)