# Little Hotelier API and MCP server

> Little Hotelier has no API for its own customers (checked 11 Oct 2026). SiteMinder APIs need a partnership agreement with SiteMinder's Ecosystem team and are listed for PMS, channel, app and booking-engine vendors, so a property cannot get a key to read its reservations or change rates from a script.

All-in-one property management system by SiteMinder for small hotels, B&Bs and guesthouses: front desk calendar, channel manager, booking engine, guest messaging and payments.

## What is the Little Hotelier API?

Cotlet's Little Hotelier API exposes 15 endpoints for your own Little Hotelier account: list reservations, get reservation, list room rates, get inventory, get statistics, get booking performance, export report, list conversations, create reservation, update reservation status, cancel reservation, update rates, update restrictions, create room closure and reply to guest. The list_reservations endpoint returns reservations with status, source, guest, occupants, dates, room, total and outstanding amount. Each endpoint takes simple JSON inputs like from, to or reservation_id and works both as an MCP tool for agents and as a REST call for scripts.

- **Category:** [Travel](https://cotlet.dev/integrations/category/travel)
- **Endpoints:** 15 (8 read, 7 write)
- **Updated:** 2026-10-11

Little Hotelier has no API for its own customers (checked 11 Oct 2026). Cotlet is a hosted MCP server and REST API for Little Hotelier with 15 endpoints (8 read, 7 write): your AI agent signs in as you and does the work.

## Does Little Hotelier have an official API?

Little Hotelier has no API for its own customers (checked 11 Oct 2026). SiteMinder APIs need a partnership agreement with SiteMinder's Ecosystem team and are listed for PMS, channel, app and booking-engine vendors, so a property cannot get a key to read its reservations or change rates from a script.

| Task | Little Hotelier official | Cotlet |
|---|---|---|
| Search and read reservations | No: Search Reservations screen and CSV export only | Yes |
| Create a Front Desk reservation | No | Yes |
| Check guests in and out | No | Yes |
| Update rates for a date range | No: Bulk Update in the inventory grid | Yes |
| Set min stay, CTA, CTD and close channels | No | Yes |
| Close rooms for maintenance | No: Room Closure on the Front Desk Calendar | Yes |
| Occupancy, ADR and RevPAR | No: Statistics report, CSV export | Yes |
| Reply to guests in the Messaging hub | No | Yes |

Sources: [SiteMinder Developer FAQ (partnership agreement required)](https://developer.siteminder.com/get-started/resources/faq), [SiteMinder APIs and who they are for](https://developer.siteminder.com/get-started/siteminder-apis), [Little Hotelier Help: inventory grid](https://helpcentre.littlehotelier.com/en/articles/8673827-front-desk-manage-rates-availability-and-restrictions-in-the-inventory-grid), [Little Hotelier Help: Messaging hub FAQ](https://helpcentre.littlehotelier.com/en/articles/9525840-messaging-hub-frequently-asked-questions), [Little Hotelier Help: Automated payments FAQ](https://helpcentre.littlehotelier.com/en/articles/8829554-automated-payments-frequently-asked-questions), [Little Hotelier Help: Release period](https://helpcentre.littlehotelier.com/en/articles/16386830-set-a-release-period-minimum-advance-reservation-restriction)

## For AI agents

```text
Little Hotelier has no API for its own customers (checked 11 Oct 2026). SiteMinder APIs need a partnership agreement with SiteMinder's Ecosystem team and are listed for PMS, channel, app and booking-engine vendors, so a property cannot get a key to read its reservations or change rates from a script.
Cotlet provides a hosted MCP server and REST API for Little Hotelier: 15 tools (8 read, 7 write).
Access       Request access at https://cotlet.dev/app/signup?app=little-hotelier; we email the API key.

MCP server   https://cotlet.dev/mcp/v1
REST base    https://cotlet.dev/api/v1/little-hotelier
Auth         Authorization: Bearer <COTLET_API_KEY>. Listing endpoints and schemas needs no key; calling an endpoint needs one.
Tools        list_reservations, get_reservation, list_room_rates, get_inventory, get_statistics, get_booking_performance, export_report, list_conversations, create_reservation, update_reservation_status, cancel_reservation, update_rates, update_restrictions, create_room_closure, reply_to_guest
Confirm      create_reservation, cancel_reservation, update_rates, update_restrictions, create_room_closure, reply_to_guest (by default the user approves each call; the user can switch this off per tool, e.g. for scheduled automations)
Markdown     https://cotlet.dev/integrations/little-hotelier-api-mcp-server.md

How access works:
1. The user requests access at https://cotlet.dev/app/signup?app=little-hotelier (Little Hotelier is pre-selected). Each request is reviewed and the API key is sent by email.
2. The user signs in to Little Hotelier once in a browser. An agent cannot do this step.
3. The API key goes into the MCP client or the REST call as a bearer token.

Fits: people who want a hosted Little Hotelier server that someone else maintains, including non-developers.

Policy: Cotlet never stores passwords, never solves CAPTCHAs, never bypasses MFA.
Company: legal details in the Terms of service at https://cotlet.dev/terms. Contact contact@cotlet.dev.
Session: the user signs in to Little Hotelier in a browser; Cotlet keeps only the session, AES-256 encrypted, revocable in the dashboard at any time.
Terms: the user stays responsible for following Little Hotelier's terms; Cotlet is not affiliated with Little Hotelier.
```

## What can an AI agent do in Little Hotelier?

Cotlet is best for small hotel, B&B and guesthouse owners who want an AI agent to check arrivals, change rates and restrictions, close rooms and answer guests without running or fixing a server.

- **[Check today's arrivals and unpaid balances](https://cotlet.dev/integrations/little-hotelier-api-mcp-server/daily-arrivals-and-balances)** (runs: daily): "Who checks in today and tomorrow, which room do they have, and which bookings still owe money?" → `list_reservations`, `get_reservation`
- **[Update hotel rates for a date range](https://cotlet.dev/integrations/little-hotelier-api-mcp-server/bulk-update-hotel-rates)**: "Raise the Double Room rate to 140 and the Twin to 130 for every Friday and Saturday in December, and show me what each night was before." → `list_room_rates`, `get_inventory`, `update_rates`
- **[Set minimum stay and closed-to-arrival](https://cotlet.dev/integrations/little-hotelier-api-mcp-server/set-minimum-stay-and-restrictions)**: "Set a 2-night minimum stay for arrivals on 30 and 31 Dec, close arrivals on 1 Jan, and warn me about nights that would be left empty." → `get_inventory`, `list_reservations`, `list_room_rates`, `update_restrictions`
- **Close a room for maintenance**: "Room 4 has a leak: close it from tomorrow for a week." → `list_room_rates`, `create_room_closure`
- **Report occupancy, ADR and RevPAR** (runs: weekly): "What was our occupancy, ADR and RevPAR last month, and which channel brought the most revenue?" → `get_statistics`, `get_booking_performance`
- **[Reply to guest messages](https://cotlet.dev/integrations/little-hotelier-api-mcp-server/reply-to-guest-messages)** (runs: daily): "Answer guest questions in the Messaging hub about late check-in, parking and breakfast using our house rules, and send me anything else." → `list_conversations`, `get_reservation`, `reply_to_guest`

## Can Little Hotelier automations run on a schedule in n8n, Make or Zapier?

Yes. Cotlet does not replace your automation platform: it gives it a Little Hotelier connection it does not have, with the same API key as your agent. Write actions ask for your OK by default; switch that off in your dashboard for the tools you choose, for example to check today's arrivals and unpaid balances, and the schedule runs on its own. Cotlet runs in the cloud, so it keeps going while your computer is off.

| Where | How to connect | How to schedule |
|---|---|---|
| Your AI agent | Add https://cotlet.dev/mcp/v1 with your API key. | A scheduled agent run, for example a Claude Code routine. |
| n8n | MCP Client node with https://cotlet.dev/mcp/v1, or an HTTP Request node to https://cotlet.dev/api/v1/little-hotelier/{tool}. | Schedule Trigger node. |
| Make | HTTP module: POST https://cotlet.dev/api/v1/little-hotelier/{tool} with an Authorization: Bearer header and a JSON body. | Scenario schedule. |
| Zapier | Webhooks by Zapier: POST https://cotlet.dev/api/v1/little-hotelier/{tool} with the same header and body. | Schedule by Zapier trigger. |
| Your own script | POST https://cotlet.dev/api/v1/little-hotelier/{tool} with your API key. | cron or GitHub Actions. |

## Tools

**For AI agents:** Every endpoint and its schema is public. The 15 endpoints on this page, with parameters and example responses, can be listed without an account. Calling one returns 403 until the account has an API key with access to Little Hotelier.

### list_reservations

Reservations with status, source, guest, occupants, dates, room, total and outstanding amount. Access: read. REST: `POST /api/v1/little-hotelier/list_reservations`.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `date_type` | enum | no | check_in, check_out or booked. Default: check_in. |
| `from` | date | no | Start of the date range. |
| `to` | date | no | End of the date range. |
| `status` | enum | no | all, confirmed, checked_in, checked_out or cancelled. Default: all. |
| `guest_last_name` | string | no | Guest last name. |
| `reservation_id` | string | no | Find one reservation by its booking reference. |
| `limit` | integer | no | 1 to 200. Default: 50. |
| `cursor` | string | no | Next page cursor. |

Searches reservations like the Reservations screen. Date type can be check-in, check-out or booked on, and status can be confirmed, checked in, checked out or cancelled. Each row has status, guest name, reference, source, occupants, dates, room, total and outstanding amount. Reservations without an assigned room show no room. Pass next_cursor back as cursor for the next page.

Example response:

```json
{
  "reservations": [
    {
      "reservation_id": "LH48213",
      "status": "confirmed",
      "guest": "Marta Kowal",
      "source": "Booking.com",
      "occupants": "2 adults",
      "check_in": "2026-10-12",
      "check_out": "2026-10-14",
      "booked": "2026-09-02",
      "room": "Double 3",
      "total": "240.00",
      "outstanding": "240.00",
      "currency": "EUR"
    },
    {
      "reservation_id": "LH48230",
      "status": "confirmed",
      "guest": "Liam Byrne",
      "source": "Direct Booking",
      "occupants": "1 adult",
      "check_in": "2026-10-12",
      "check_out": "2026-10-13",
      "booked": "2026-10-05",
      "room": null,
      "total": "95.00",
      "outstanding": "0.00",
      "currency": "EUR"
    }
  ],
  "next_cursor": null
}
```

### get_reservation

One reservation: stay, room, rate, guests, guest comments, notes, invoice and payments. No card numbers. Access: read. REST: `POST /api/v1/little-hotelier/get_reservation`.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `reservation_id` | string | yes | Reservation ID from list_reservations, e.g. LH12345. |

Returns one reservation with stay dates, room and rate, occupants, guest comments, internal notes, invoice lines and recorded payments. Card numbers are never returned. Use it after list_reservations when you need the detail behind one outstanding amount.

Example response:

```json
{
  "reservation_id": "LH48213",
  "status": "confirmed",
  "source": "Booking.com",
  "guest": {
    "name": "Marta Kowal",
    "email": "marta@example.com",
    "arrival_time": "18:00"
  },
  "stay": {
    "check_in": "2026-10-12",
    "check_out": "2026-10-14",
    "nights": 2,
    "adults": 2,
    "children": 0
  },
  "room": "Double 3",
  "room_rate": "Double Room, Standard Rate",
  "guest_comments": "Late arrival, around 18:00.",
  "notes": [],
  "invoice": {
    "lines": [
      {
        "description": "Double Room, 2 nights",
        "amount": "240.00"
      }
    ],
    "total": "240.00",
    "paid": "0.00",
    "outstanding": "240.00",
    "currency": "EUR"
  },
  "payments": []
}
```

### list_room_rates

Room types, their rooms and room rates, with which rates are derived. Access: read. REST: `POST /api/v1/little-hotelier/list_room_rates`.

No parameters.

Returns your room types with their rooms and room rates. Each rate says whether it is derived from another rate, because derived rates cannot be edited directly. Use the IDs it returns in get_inventory, update_rates, update_restrictions and create_room_closure.

Example response:

```json
{
  "room_types": [
    {
      "room_type": "Double Room",
      "rooms": [
        {
          "room_id": "rm_3",
          "name": "Double 3"
        },
        {
          "room_id": "rm_4",
          "name": "Double 4"
        }
      ],
      "room_rates": [
        {
          "room_rate_id": "rr_20417",
          "name": "Standard Rate",
          "derived_from": null
        },
        {
          "room_rate_id": "rr_20418",
          "name": "Non-refundable",
          "derived_from": "rr_20417"
        }
      ]
    }
  ]
}
```

### get_inventory

The inventory grid for a date range: availability, rates and restrictions per room rate. Access: read. REST: `POST /api/v1/little-hotelier/get_inventory`.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `from` | date | yes | First date of the range. |
| `to` | date | yes | Last date of the range, inclusive. |
| `room_rate_ids` | string[] | no | Only these room rates. Default: all. |

Returns the inventory grid for a date range: availability, rate, min and max stay, CTA, CTD and whether channels are closed, one row per room rate and date. Availability is calculated by Little Hotelier from your rooms, bookings and closures. Read it before update_rates to see what will change.

Example response:

```json
{
  "room_rates": [
    {
      "room_rate_id": "rr_20417",
      "name": "Double Room, Standard Rate",
      "days": [
        {
          "date": "2026-12-04",
          "available": 2,
          "rate": "120.00",
          "min_stay": 1,
          "max_stay": null,
          "cta": false,
          "ctd": false,
          "channels_closed": false
        },
        {
          "date": "2026-12-05",
          "available": 1,
          "rate": "120.00",
          "min_stay": 1,
          "max_stay": null,
          "cta": false,
          "ctd": false,
          "channels_closed": false
        }
      ]
    }
  ],
  "currency": "EUR"
}
```

### get_statistics

Statistics report: room nights, occupancy, ADR, RevPAR, length of stay, lead time and cancellations. Access: read. REST: `POST /api/v1/little-hotelier/get_statistics`.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `from` | date | yes | First date of the range. |
| `to` | date | yes | Last date of the range, inclusive. |
| `search_by` | enum | no | stay_date or booked_on. Default: stay_date. |
| `include_tax` | boolean | no | Include tax from taxable service charges in revenue. Default: false. |

Runs the Front Desk Statistics report for a date range. It returns total, closed, occupied and unoccupied room nights, occupancy, length of stay, lead time, average revenue per booking, ADR, RevPAR and the value of cancelled reservations. Occupancy, RevPAR and the room night counts exist only when searching by stay date. Closed room nights are taken out of the occupancy base.

Example response:

```json
{
  "from": "2026-09-01",
  "to": "2026-09-30",
  "search_by": "stay_date",
  "include_tax": false,
  "currency": "EUR",
  "total_room_nights": 240,
  "closed_room_nights": 7,
  "occupied_room_nights": 160,
  "unoccupied_room_nights": 73,
  "occupancy_pct": 68.7,
  "length_of_stay": 2.5,
  "lead_time_days": 21,
  "average_revenue_per_booking": "275.00",
  "adr": "110.00",
  "revpar": "75.54",
  "cancelled_value": "420.00"
}
```

### get_booking_performance

Revenue, reservations, room nights, ADR and cancellations, broken down by channel. Access: read. REST: `POST /api/v1/little-hotelier/get_booking_performance`.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `from` | date | yes | First date of the range. |
| `to` | date | yes | Last date of the range, inclusive. |
| `date_basis` | enum | no | booked_on or stay_date. Default: booked_on. |

Reads the Insights Booking performance report. It returns reservations after cancellations, room nights, ADR, average length of stay, lead time and cancelled reservations, with room revenue and room nights per channel, including your booking engine. Some channels record no revenue on a reservation: those count toward room nights but not ADR. Multi-currency bookings are converted to your default currency.

Example response:

```json
{
  "from": "2026-09-01",
  "to": "2026-09-30",
  "date_basis": "booked_on",
  "currency": "EUR",
  "reservations": 64,
  "room_nights": 160,
  "adr": "110.00",
  "avg_length_of_stay": 2.5,
  "avg_lead_time_days": 21,
  "cancelled_reservations": 3,
  "channels": [
    {
      "channel": "Booking.com",
      "reservations": 32,
      "room_nights": 80,
      "room_revenue": "8800.00"
    },
    {
      "channel": "Direct Booking",
      "reservations": 19,
      "room_nights": 48,
      "room_revenue": "5280.00"
    },
    {
      "channel": "Airbnb",
      "reservations": 13,
      "room_nights": 32,
      "room_revenue": "3520.00"
    }
  ]
}
```

### export_report

A Front Desk report for up to 365 days as rows, the same data as its CSV export. Access: read. REST: `POST /api/v1/little-hotelier/export_report`.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `report` | enum | yes | check_in, payments, extras, housekeeping, daily_transactions or guests. |
| `from` | date | yes | First date of the range. |
| `to` | date | yes | Last date of the range, inclusive. |

Returns a Front Desk report as rows, the same data as the report's CSV export. A single report cannot span more than 365 days. Use get_statistics for the Statistics report.

Example response:

```json
{
  "report": "daily_transactions",
  "from": "2026-10-01",
  "to": "2026-10-07",
  "currency": "EUR",
  "rows": [
    {
      "date": "2026-10-05",
      "reservation_id": "LH48230",
      "description": "Deposit",
      "amount": "30.00"
    },
    {
      "date": "2026-10-06",
      "reservation_id": "LH48199",
      "description": "Breakfast extra",
      "amount": "18.00"
    }
  ]
}
```

### list_conversations

Messaging hub conversations with the linked reservation, channel and last message. Access: read. REST: `POST /api/v1/little-hotelier/list_conversations`.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `channel` | enum | no | whatsapp, airbnb or booking_com. Default: all. |
| `limit` | integer | no | 1 to 100. Default: 20. |

Lists Messaging hub conversations, with the guest, the linked reservation, the channel and the last message. WhatsApp, Airbnb and Booking.com conversations are listed. Each row says whether a free-form reply is possible now: WhatsApp allows it within 24 hours of the guest's last message.

Example response:

```json
{
  "conversations": [
    {
      "conversation_id": "cv_5521",
      "channel": "whatsapp",
      "guest": "Marta Kowal",
      "reservation_id": "LH48213",
      "last_message": "Can we check in late, around 21:30?",
      "last_message_at": "2026-10-11T08:12:00Z",
      "free_form_reply_open": true
    }
  ]
}
```

### create_reservation

New Front Desk reservation. No card details. Access: write, asks the user first. REST: `POST /api/v1/little-hotelier/create_reservation`.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `check_in` | date | yes | Arrival date. |
| `check_out` | date | yes | Departure date. |
| `room_rate_id` | string | yes | Room rate ID from list_room_rates. |
| `guest` | object | yes | first_name, last_name, and optional email, phone, arrival_time. |
| `adults` | integer | yes | Number of adults. |
| `children` | integer | no | Number of children. Default: 0. |
| `room_id` | string | no | Assign a specific room. Default: unallocated. |
| `guest_comments` | string | no | Guest requests, shown on the confirmation email. |

Creates a Front Desk reservation with a booking reference starting with LH. It holds the room and updates availability on your connected channels. Without room_id the booking is unallocated but still reduces availability. Little Hotelier does not email a confirmation for manual reservations, and neither does this tool. Card details are not accepted. By default you confirm each call; you can switch that off for this tool.

Example response:

```json
{
  "reservation_id": "LH48311",
  "status": "confirmed",
  "room": null,
  "check_in": "2026-11-20",
  "check_out": "2026-11-22",
  "total": "240.00",
  "currency": "EUR"
}
```

### update_reservation_status

Check a guest in or out, or set a reservation back to Confirmed. Access: write. REST: `POST /api/v1/little-hotelier/update_reservation_status`.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `reservation_id` | string | yes | Reservation ID from list_reservations, e.g. LH12345. |
| `status` | enum | yes | confirmed, checked_in or checked_out. |

Sets a reservation to confirmed, checked_in or checked_out, like the status drop-down on the reservation. Checking out marks the room as needing cleaning and bookable again. It reaches no guest and one more call sets the status back, so it runs without asking first. Each reservation is changed on its own.

Example response:

```json
{
  "reservation_id": "LH48213",
  "status": "checked_in"
}
```

### cancel_reservation

Cancel a Confirmed Front Desk reservation. Permanent; OTA bookings must be cancelled on the channel. Access: write, asks the user first. REST: `POST /api/v1/little-hotelier/cancel_reservation`.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `reservation_id` | string | yes | Reservation ID from list_reservations, e.g. LH12345. |

Cancels one Confirmed reservation created in Front Desk. Channel (OTA) reservations are cancelled by the guest on the channel, and Direct Booking reservations under Direct Booking, so the call fails for them. Checked-in and checked-out reservations need their status changed first. A cancellation is permanent. The room becomes available and cancelled reservations stay in the Reservations list. Check your cancellation policy for penalties first. By default you confirm each call; you can switch that off for this tool.

Example response:

```json
{
  "reservation_id": "LH48311",
  "status": "cancelled"
}
```

### update_rates

Set the base rate of room rates over a date range, like Bulk Update. Goes live on your channels. Access: write, asks the user first. REST: `POST /api/v1/little-hotelier/update_rates`.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `room_rate_ids` | string[] | yes | Room rate IDs from list_room_rates. |
| `from` | date | yes | First date of the range. |
| `to` | date | yes | Last date of the range, inclusive. |
| `rate` | string | yes | New nightly rate, as a decimal in the property currency. |
| `days_of_week` | string[] | no | Only these weekdays (mon to sun). Default: all days. |

Sets the base rate of one or more room rates over a date range, optionally on chosen weekdays, like Bulk Update in the inventory grid. Derived rates cannot be edited and come back in skipped. A rate below the property minimum does not save. Channels receive the change within their update period. By default you confirm each call; you can switch that off for this tool.

Example response:

```json
{
  "status": "updated",
  "room_rates": 1,
  "dates": 8,
  "rate": "140.00",
  "currency": "EUR",
  "skipped": []
}
```

### update_restrictions

Set min or max stay, closed to arrival or departure, or close channels or your website. Access: write, asks the user first. REST: `POST /api/v1/little-hotelier/update_restrictions`.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `room_rate_ids` | string[] | yes | Room rate IDs from list_room_rates. |
| `from` | date | yes | First date of the range. |
| `to` | date | yes | Last date of the range, inclusive. |
| `restrictions` | object | yes | Any of min_stay, max_stay (integer), cta, ctd, close_channels, close_website (boolean). |
| `days_of_week` | string[] | no | Only these weekdays (mon to sun). Default: all days. |

Sets min_stay, max_stay, cta, ctd, close_channels and close_website for room rates over a date range, like Bulk Update. close_channels stops sales on all connected channels and your booking engine but leaves room availability unchanged. A channel that does not support a restriction ignores it. By default you confirm each call; you can switch that off for this tool.

Example response:

```json
{
  "status": "updated",
  "room_rates": 1,
  "dates": 4,
  "restrictions": {
    "min_stay": 2
  },
  "skipped": []
}
```

### create_room_closure

Close rooms for a date range; availability sent to channels and the booking engine drops. Access: write, asks the user first. REST: `POST /api/v1/little-hotelier/create_room_closure`.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `room_ids` | string[] | yes | Room IDs from list_room_rates. |
| `from` | date | yes | First date of the range. |
| `to` | date | yes | Last date of the range, inclusive. |
| `description` | string | no | Reason, e.g. renovation. |

Closes rooms or whole room types for a date range, like Room Closure on the Front Desk Calendar. The end date is included. Availability sent to channels and your booking engine drops, and the room shows in red on the Calendar. A closure is not a stop sell. It does not move guests who already booked those dates. By default you confirm each call; you can switch that off for this tool.

Example response:

```json
{
  "closure_id": "cl_7731",
  "status": "closed",
  "room_ids": [
    "rm_4"
  ],
  "from": "2026-10-12",
  "to": "2026-10-18",
  "nights": 7,
  "description": "Leak repair"
}
```

### reply_to_guest

Send a reply in a Messaging hub conversation. WhatsApp free-form only within 24 hours of the guest message. Access: write, asks the user first. REST: `POST /api/v1/little-hotelier/reply_to_guest`.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `conversation_id` | string | yes | Conversation ID from list_conversations. |
| `body` | string | yes | Message text. |

Sends a reply in a WhatsApp or Airbnb conversation in the Messaging hub, under your property. WhatsApp free-form replies work within 24 hours of the guest's last message; later, Little Hotelier requires a template. Airbnb free-form replies work only after a scheduled message went out and the guest replied. By default you confirm each call; you can switch that off for this tool.

Example response:

```json
{
  "conversation_id": "cv_5521",
  "message_id": "msg_90417",
  "status": "sent",
  "channel": "whatsapp"
}
```

## How do I connect Little Hotelier to Claude Code, Codex or Cursor?

Connecting Little Hotelier takes three steps: request access, sign in to Little Hotelier once, then add one MCP server or call the REST API with the same key.

### Connect Little Hotelier to your agent.

1. **Create an account** Sign up and add Little Hotelier in the console. Your API key is there too.

2. **Sign in to Little Hotelier once** Open the connect page from the console and sign in to Little Hotelier the way you always do. We keep the session, never your password, and you can revoke it anytime.

3. **Add Cotlet to your agent** Paste the snippet for your client. The same server and key serve every app you connect, so you do this once.

   Claude Code:

```
claude mcp add --transport http cotlet \
  https://cotlet.dev/mcp/v1 \
  --header "Authorization: Bearer $COTLET_API_KEY"
```

   Cursor:

```
{
  "mcpServers": {
    "cotlet": {
      "url": "https://cotlet.dev/mcp/v1",
      "headers": {
        "Authorization": "Bearer ${COTLET_API_KEY}"
      }
    }
  }
}
```

   Codex:

```
# ~/.codex/config.toml
[mcp_servers.cotlet]
url = "https://cotlet.dev/mcp/v1"
bearer_token_env_var = "COTLET_API_KEY"
```

4. **Ask your agent** Ask in plain words. Your agent finds the Little Hotelier tools on the server and calls them for you; anything that reaches other people waits for your OK unless you switch that off for a tool.

```
Who checks in today and tomorrow, which room do they have, and which bookings still owe money?
```

### Call Little Hotelier from your scripts.

1. **Export your API key** Your scripts use the same API key as your agent. Keep it in an environment variable, never in your code.

```
export COTLET_API_KEY="cotlet_..."
```

2. **Call a tool** Every tool is a POST endpoint at /api/v1/little-hotelier/{tool}. Send its parameters as JSON, exactly as listed in the endpoints above.

```
curl https://cotlet.dev/api/v1/little-hotelier/update_rates \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"room_rate_ids":["rr_20417"],"from":"2026-12-01","to":"2026-12-31","rate":"140.00","days_of_week":["fri","sat"]}'
```

3. **Read the result** You get plain JSON back, ready for your script. A failed call costs nothing.

```
{
  "status": "updated",
  "room_rates": 1,
  "dates": 8,
  "rate": "140.00",
  "currency": "EUR",
  "skipped": []
}
```

## Why use Cotlet for Little Hotelier?

**Built for agents**

- One MCP server for every app you connect.
- The same tools as a REST API for scripts and cron jobs.
- Works with Claude Code, Codex and Cursor.

**Your login stays yours**

- You sign in to Little Hotelier yourself. We keep only the session, encrypted with AES-256.
- The model never sees a login.
- No stored passwords, no CAPTCHA solving, no MFA bypass.

**You stay in control**

- Pick read only, or read and write.
- Anything that reaches other people waits for your OK, unless you switch it off per tool.
- Revoke access in one click.

**Kept working for you**

- We test every integration daily.
- When Little Hotelier changes, the tool pauses until we fix it.
- Failed calls cost nothing.

## Is there a Little Hotelier MCP server on GitHub?

We found no Little Hotelier MCP server on GitHub and no Little Hotelier app on Zapier (checked 11 Oct 2026). Owners use the inventory grid, Bulk Update and CSV exports by hand. Cotlet gives your AI agent the same screens as tools, hosted, and our team keeps them working when Little Hotelier changes.

|  | Little Hotelier by hand | Cotlet |
|---|---|---|
| Setup | None, you already have the login | Request access, sign in to Little Hotelier once in your browser, add one MCP server or API key |
| Rates and restrictions | Bulk Update form: dates, days, room rates and changes, one set at a time | Your agent applies a rule across dates and room rates; you confirm each change |
| Reservations and reports | Search Reservations, Statistics and Booking performance on screen, CSV export | Your agent reads reservations, occupancy, ADR and channel mix as data |
| Your session | Your browser | Encrypted in an EU vault, never your password, limited to the actions you allow, revoked in one click |
| When the session expires | Sign in again | Your agent gets a link to sign in again |
| When Little Hotelier changes | You relearn the screen | Our team tests it daily and fixes it; failed calls are free |
| Price | Free, paid for with your time | Free 7-day trial with 5,000 credits, then credits per call |

### Which one fits you

**Pick Cotlet if**

- you are not a developer, or you do not want to maintain a server
- you need it to keep working when Little Hotelier changes, without checking it yourself
- your agent or a script should run it on a schedule, also while your computer is off

**Pick an open-source server if**

- you are comfortable installing, updating and fixing it yourself
- you want the session to stay on your own computer
- you only need it now and then, from one MCP client

## How much does the Little Hotelier API cost?

Free 7-day trial with 5,000 credits, no card needed. After that, the Little Hotelier API comes with the Cotlet plan, from $29 a month for 3,000 credits, with no limit on apps. Each month's credits stay valid for 3 months, so unused credits add up.

| Size | Price | Credits / month | Per credit |
|---|---|---|---|
| Solo | $29/mo | 3,000 | about $0.0097 |
| Pro | $99/mo | 12,000 | about $0.0083 |
| Agency | $299/mo | 40,000 | $0.0075 |

Each successful call uses credits for the work it takes; failed calls and timeouts cost nothing. A hard spend cap is on by default. Authenticate with the `Authorization: Bearer` header. [See full pricing](https://cotlet.dev/pricing)

## How Cotlet holds your access

Cotlet hosts MCP servers and REST APIs for apps with no usable API. Your agent works in your own Little Hotelier account.

- **Company details:** The legal name, address and registration numbers of the company behind Cotlet are in the Terms of service. [Terms](https://cotlet.dev/terms)
- **Your session:** You sign in to Little Hotelier yourself, in your browser. We keep only the session, never your password: encrypted with AES-256 in an EU vault, isolated to your account and used only when your agent calls a Little Hotelier tool you allowed. When it expires, your agent gives you a link to sign in again. [Security](https://cotlet.dev/security)
- **Revoking access:** Disconnect Little Hotelier in your dashboard: the session is deleted and access ends at once. Actions that reach other people wait for your OK unless you switch that off per tool.
- **What we never do:** Store passwords, solve CAPTCHAs or bypass MFA.
- **Little Hotelier's terms:** You use your own Little Hotelier account and stay responsible for following Little Hotelier's terms. Cotlet is independent and not affiliated with Little Hotelier. [Terms](https://cotlet.dev/terms)
- **Contact:** Questions about the company, security or an app: [contact@cotlet.dev](mailto:contact@cotlet.dev)

## Frequently asked questions

**How do I get access?**

Request access and pick Little Hotelier. Cotlet reviews each request and emails you your API key.

**Do I need to be technical?**

No. You sign in to Little Hotelier once in your browser and paste one command into your agent, or one URL into n8n. Your agent can walk you through it. There is no server to install, update or fix.

**Is a hosted server safe? My Little Hotelier session would leave my computer.**

Cotlet keeps your Little Hotelier session encrypted with AES-256 in an EU vault, isolated to your account and used only for the tools you allow: read only, or read and write. The AI model never sees it, and you revoke it in one click. A local server keeps the same session in a file on your computer, readable by any program you run, and needs a fresh sign-in whenever it expires.

**Do I need a partner agreement with SiteMinder?**

No. Cotlet works in your own Little Hotelier account. SiteMinder's APIs require a partnership agreement with its Ecosystem team (checked 11 Oct 2026) and are not offered to individual properties.

**Can my agent cancel Booking.com or Airbnb reservations?**

No. Little Hotelier only lets staff cancel reservations created in Front Desk; channel reservations are cancelled by the guest on the channel. cancel_reservation fails for them.

**Can my agent post or send messages in Little Hotelier without asking me?**

No. Every call to create_reservation, cancel_reservation, update_rates, update_restrictions, create_room_closure or reply_to_guest waits for your OK by default. For scheduled automations you can switch confirmation off per tool in your dashboard, for example only for approvals. update_reservation_status runs without asking, because it sends nothing to anyone and one call undoes it.

**Can I use the Little Hotelier API in n8n?**

Yes. Add https://cotlet.dev/mcp/v1 with your API key in n8n's MCP Client node, or call https://cotlet.dev/api/v1/little-hotelier/{tool} from the HTTP Request node.
