Skip to content

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 Log

The 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.

  1. In Kamra open Kamra Agent → Connect your AI.
  2. Click Connect Claude. Claude opens with this hotel's MCP URL filled in.
  3. Confirm Add, then sign in to Kamra if asked, pick the property, Allow.
  4. 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):

bash
claude mcp add --transport http kamra https://pms.yourhotel.com/mcp

Then /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.

JobTools
Front deskToday's board, find stays, stay detail, availability, quote, book, waitlist, amend / move, check-in / out, guest lookup and journey, occupants
BillingFolio(s), post / split / move charges, take payment, void, allowance, close folio, payment link
HousekeepingQueue, assign / claim / update tasks, room HK status, minibar / laundry post from the floor
OpsCreate, list, and advance service tickets
F&BOutlets, menu, table map, open / create / fire / pay checks, kitchen queue
LaundryBoard, rates, collect, status, deliver
RevenueRate changes inside the owner's floor / ceiling
BriefingsOwner briefing, hotel-position briefing - never change the figures
Night auditIdempotent end-of-day posting and no-shows
GroupsDraft a block, pickup status, name a guest into the block, group billing
BanquetsAvailability, catalogue, enquiry → quote → event order → close-out
Onboardingsetup_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_ready and reach out
  • Guest WhatsApp thread that posts to the folio
  • Public /try-the-agent playground 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_v2 only)
  • Tear down dormant autonomy / approvals UI
  • STR-shaped MCP (cleaning fee, deposits, access instructions)

Open source (AGPL-3.0) · docs for Kamra v2.6.17 · every feature included, always.