Model Context Protocol

The KaribuKit MCP server

Connect Claude, Codex, or any MCP client to your property. Bookings, folios, availability and rates — over one secure endpoint, with an API key you control.

What your assistant can do

Run the property in plain language.

Bookings & groups

Create single and multi-room reservations, confirm them, and check guests in and out.

Folios & payments

Post charges, take payments, split and transfer folios, and raise invoices.

Availability & rates

Check availability, quote stays, and manage rate plans and date overrides.

Reports & ops

Today's dashboard, occupancy, night audit, and the property audit trail.

Quickstart

Connect in three steps.

  1. 1

    Create an API key

    In KaribuKit, open Settings → API Keys and create a key — read-only for a lookup assistant, or scoped write for one that books and bills. Copy it; the key is shown only once.

  2. 2

    Add it to your client

    Pick your client below and paste the config, swapping in your key. One endpoint, one header — that is the whole connection.

  3. 3

    Ask your assistant

    “What arrivals do we have today?” · “Book the Acacia suite for the Okello family, 12–15 June.” Your client now works directly against your property.

Connect your client

Copy the config, paste in your key.

toml
# ~/.codex/config.toml
[mcp_servers.karibukit]
url = "https://api.karibukit.com/api/mcp"
http_headers = { "X-Api-Key" = "kk_live_your_key_here" }

Codex speaks Streamable HTTP natively — no bridge needed. Add this to your config and restart Codex.

Any other client

Cursor, VS Code, Windsurf and most other MCP clients connect the same way — point them at the endpoint and send your key as a header.

connection
Transport   Streamable HTTP
URL         https://api.karibukit.com/api/mcp
Auth        X-Api-Key: kk_live_your_key_here
Tools

72 tools across 16 areas.

Every tool respects the calling key’s role and scopes. Read keys see read tools; write tools need a write scope.

check_availability
Room availability for a date range, by type and unit.
get_calendar
Reservations and room blocks across a date range.
book_stay
Create a single-room reservation with guest, dates and pricing.
book_group
Create a multi-room group reservation in one call.
book_services
Add guest services (activities, transfers) to a stay.
search_reservations
Search and filter reservations with pagination.
get_reservation
Full detail for one reservation.
get_reservation_summary
Lightweight reservation summary.
get_reservation_services
Service bookings attached to a reservation.
update_reservation
Edit guest details, notes and stay fields.
check_in
Check a guest in.
check_out
Check a guest out and settle the balance.
extend_stay
Push the check-out date out.
shorten_stay
Pull the check-out date in.
change_room_type
Move a stay to a different room type.
quote_room_change
Preview the cost of a room-type change.
change_room
Reassign a stay to a specific room.
confirm_group
Confirm every tentative room in a group.
get_group_checkout_preview
Preview charges before a group checkout.
checkout_group
Check out and settle a whole group.
get_folio
A folio with its line items.
list_folios
Search folios by guest, date or status.
post_charge
Add a charge to a folio.
record_payment
Record a payment against a folio.
void_charge
Void an existing charge.
transfer_charge
Move a charge between folios.
create_split_folio
Split a folio for multi-party billing.
list_invoices
Search invoices.
get_invoice
A single invoice.
create_invoice_from_folio
Generate an invoice from a folio.
void_invoice
Void an invoice.
quote_stay
Real-time nightly quote for a stay.
list_rate_plans
Active rate plans.
get_rate_configuration
A rate plan's rules and definition.
list_rate_overrides
Date-specific rate overrides.
update_rate_plan
Edit a rate plan.
upsert_room_type_rate
Set the rate for a room type and plan.
create_rate_overrides
Create bulk date-range rate overrides.
list_room_types
Room types with occupancy rules.
list_rooms
Individual rooms with status.
list_room_blocks
OTA and group holds.
create_room_block
Block rooms for a date range.
delete_room_block
Remove a room block.
search_guests
Find guests by name or email.
upsert_guest
Create or update a guest profile.
add_guest_note
Add an internal note to a guest.
list_service_types
Bookable services with pricing.
get_service_booking
A single service booking.
update_service_booking
Update vendor, status or notes.
create_lead
Capture an enquiry.
search_leads
Search leads.
get_lead
A single lead.
update_lead
Update lead status or detail.
create_proposal
Start a proposal / quote.
update_proposal
Edit proposal metadata.
get_proposal
A proposal with its line items.
add_proposal_line_item
Add a room or service line.
update_proposal_line_item
Adjust a line item.
remove_proposal_line_item
Remove a line item.
get_proposal_share_link
Public share link for a proposal.
send_proposal
Email the proposal to the guest.
convert_proposal_to_reservation
Turn an accepted proposal into a booking.
list_proposal_kb
Browse the proposal template library.
get_dashboard
Today's occupancy, arrivals and departures.
get_report_summary
Multi-metric summary report.
get_occupancy_report
Occupancy by room type and date.
get_month_summary
Revenue and occupancy for a month.
get_night_audit_log
Night-audit results and failures.
trigger_night_audit
Run the night audit manually.
get_property
Property metadata (name, timezone, currency).
update_property_settings
Update property settings.
get_audit_log
Read the audit trail (managers only).
Authentication

One key. One property. Your scopes.

  • Authenticate with an API key in the X-Api-Key header. No OAuth setup, no callback URLs.
  • Each key is scoped to a single property, so a connected client only ever sees that property’s data.
  • Scopes gate what a key can do — issue read-only keys for assistants that should never change anything.
  • Writes are idempotent: the server de-duplicates retries, so a dropped request won’t double-book or double-charge.
reference
Endpoint    https://api.karibukit.com/api/mcp
Transport   Streamable HTTP
Auth        X-Api-Key request header
FAQ

Before you connect.

Still stuck? Email us.

Anything that speaks MCP over Streamable HTTP and lets you set a request header. Codex and Claude Code connect natively; Claude Desktop connects through the mcp-remote bridge. Cursor, VS Code and Windsurf work too — point them at the endpoint and add the X-Api-Key header (see "Any other client").

Yes. Every API key is scoped to a single property. The server resolves the property from the key, so a connected client can only ever read and change that one property’s data.

Yes. API keys carry scopes (read versus write, per area). Create a read-only key for an assistant that should never change anything, and a scoped write key for one that books and bills. You choose the scopes when you create the key in Settings → API Keys.

API-key requests are limited to 300 per minute per key. Writes are idempotent — the server de-duplicates retries automatically, so a dropped connection won’t double-book or double-charge.

Not yet. ChatGPT’s connectors require an OAuth flow we don’t expose for third-party clients. Use Codex, Claude, or another header-capable client for now.

Put your property in your assistant.

Generate a key and connect your first client in a couple of minutes.

Get an API key