# Little Hotelier MCP tools

> Every Little Hotelier MCP tool on the Cotlet server: tool names, input schemas, a tools/call example and an example result for each tool.

Source: https://cotlet.dev/docs/mcp/little-hotelier

Docs sections: [Get started](https://cotlet.dev/docs.md) · [REST API](https://cotlet.dev/docs/api.md) · [MCP](https://cotlet.dev/docs/mcp.md) · [SDKs & CLI](https://cotlet.dev/docs/sdks.md) · [Integrations](https://cotlet.dev/docs/integrations.md)

15 tools for Little Hotelier on the Cotlet MCP server. Your agent picks them from tools/list.

- MCP server: `https://cotlet.dev/mcp/v1`
- Connects with: Your own Little Hotelier account (a user who can open Front Desk, Channel Manager and Insights for the tools you use)
- Integration page: https://cotlet.dev/integrations/little-hotelier-api-mcp-server

## Endpoints

| Endpoint | Access | Description |
|---|---|---|
| `little-hotelier_list_reservations` | read | Reservations with status, source, guest, occupants, dates, room, total and outstanding amount. |
| `little-hotelier_get_reservation` | read | One reservation: stay, room, rate, guests, guest comments, notes, invoice and payments. No card numbers. |
| `little-hotelier_list_room_rates` | read | Room types, their rooms and room rates, with which rates are derived. |
| `little-hotelier_get_inventory` | read | The inventory grid for a date range: availability, rates and restrictions per room rate. |
| `little-hotelier_get_statistics` | read | Statistics report: room nights, occupancy, ADR, RevPAR, length of stay, lead time and cancellations. |
| `little-hotelier_get_booking_performance` | read | Revenue, reservations, room nights, ADR and cancellations, broken down by channel. |
| `little-hotelier_export_report` | read | A Front Desk report for up to 365 days as rows, the same data as its CSV export. |
| `little-hotelier_list_conversations` | read | Messaging hub conversations with the linked reservation, channel and last message. |
| `little-hotelier_create_reservation` | write | New Front Desk reservation. No card details. |
| `little-hotelier_update_reservation_status` | write | Check a guest in or out, or set a reservation back to Confirmed. |
| `little-hotelier_cancel_reservation` | write | Cancel a Confirmed Front Desk reservation. Permanent; OTA bookings must be cancelled on the channel. |
| `little-hotelier_update_rates` | write | Set the base rate of room rates over a date range, like Bulk Update. Goes live on your channels. |
| `little-hotelier_update_restrictions` | write | Set min or max stay, closed to arrival or departure, or close channels or your website. |
| `little-hotelier_create_room_closure` | write | Close rooms for a date range; availability sent to channels and the booking engine drops. |
| `little-hotelier_reply_to_guest` | write | Send a reply in a Messaging hub conversation. WhatsApp free-form only within 24 hours of the guest message. |

## List reservations

MCP tool: `little-hotelier_list_reservations`

Access: read.

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.

### Parameters

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

### tools/call

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "little-hotelier_list_reservations",
    "arguments": {
      "date_type": "check_in",
      "from": "2026-10-12",
      "to": "2026-10-13",
      "status": "confirmed"
    }
  }
}
```

### Example response

```json
{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "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
  },
  "isError": false
}
```

## Get reservation

MCP tool: `little-hotelier_get_reservation`

Access: read.

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.

### Parameters

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

### tools/call

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "little-hotelier_get_reservation",
    "arguments": {
      "reservation_id": "reservation_8c41d2"
    }
  }
}
```

### Example response

```json
{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "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": []
  },
  "isError": false
}
```

## List room rates

MCP tool: `little-hotelier_list_room_rates`

Access: read.

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.

### Parameters

No parameters.

### tools/call

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "little-hotelier_list_room_rates",
    "arguments": {}
  }
}
```

### Example response

```json
{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "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"
          }
        ]
      }
    ]
  },
  "isError": false
}
```

## Get inventory

MCP tool: `little-hotelier_get_inventory`

Access: read.

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.

### Parameters

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

### tools/call

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "little-hotelier_get_inventory",
    "arguments": {
      "from": "2026-10-01",
      "to": "2026-10-01"
    }
  }
}
```

### Example response

```json
{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "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"
  },
  "isError": false
}
```

## Get statistics

MCP tool: `little-hotelier_get_statistics`

Access: read.

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.

### Parameters

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

### tools/call

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "little-hotelier_get_statistics",
    "arguments": {
      "from": "2026-10-01",
      "to": "2026-10-01"
    }
  }
}
```

### Example response

```json
{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "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"
  },
  "isError": false
}
```

## Get booking performance

MCP tool: `little-hotelier_get_booking_performance`

Access: read.

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.

### Parameters

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

### tools/call

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "little-hotelier_get_booking_performance",
    "arguments": {
      "from": "2026-10-01",
      "to": "2026-10-01"
    }
  }
}
```

### Example response

```json
{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "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"
      }
    ]
  },
  "isError": false
}
```

## Export report

MCP tool: `little-hotelier_export_report`

Access: read.

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.

### Parameters

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

### tools/call

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "little-hotelier_export_report",
    "arguments": {
      "report": "check_in",
      "from": "2026-10-01",
      "to": "2026-10-01"
    }
  }
}
```

### Example response

```json
{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "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"
      }
    ]
  },
  "isError": false
}
```

## List conversations

MCP tool: `little-hotelier_list_conversations`

Access: read.

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.

### Parameters

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

### tools/call

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "little-hotelier_list_conversations",
    "arguments": {}
  }
}
```

### Example response

```json
{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "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
      }
    ]
  },
  "isError": false
}
```

## Create reservation

MCP tool: `little-hotelier_create_reservation`

Access: write. Confirm: waits for the user's OK before it runs.

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.

### Parameters

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

### tools/call

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "little-hotelier_create_reservation",
    "arguments": {
      "check_in": "2026-10-01",
      "check_out": "2026-10-01",
      "room_rate_id": "room_rate_8c41d2",
      "guest": "guest",
      "adults": 1
    }
  }
}
```

### Example response

```json
{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "reservation_id": "LH48311",
    "status": "confirmed",
    "room": null,
    "check_in": "2026-11-20",
    "check_out": "2026-11-22",
    "total": "240.00",
    "currency": "EUR"
  },
  "isError": false
}
```

## Update reservation status

MCP tool: `little-hotelier_update_reservation_status`

Access: write.

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.

### Parameters

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

### tools/call

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "little-hotelier_update_reservation_status",
    "arguments": {
      "reservation_id": "reservation_8c41d2",
      "status": "confirmed"
    }
  }
}
```

### Example response

```json
{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "reservation_id": "LH48213",
    "status": "checked_in"
  },
  "isError": false
}
```

## Cancel reservation

MCP tool: `little-hotelier_cancel_reservation`

Access: write. Confirm: waits for the user's OK before it runs.

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.

### Parameters

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

### tools/call

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "little-hotelier_cancel_reservation",
    "arguments": {
      "reservation_id": "reservation_8c41d2"
    }
  }
}
```

### Example response

```json
{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "reservation_id": "LH48311",
    "status": "cancelled"
  },
  "isError": false
}
```

## Update rates

MCP tool: `little-hotelier_update_rates`

Access: write. Confirm: waits for the user's OK before it runs.

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.

### Parameters

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

### tools/call

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "little-hotelier_update_rates",
    "arguments": {
      "room_rate_ids": [
        "rr_20417"
      ],
      "from": "2026-12-01",
      "to": "2026-12-31",
      "rate": "140.00",
      "days_of_week": [
        "fri",
        "sat"
      ]
    }
  }
}
```

### Example response

```json
{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "status": "updated",
    "room_rates": 1,
    "dates": 8,
    "rate": "140.00",
    "currency": "EUR",
    "skipped": []
  },
  "isError": false
}
```

## Update restrictions

MCP tool: `little-hotelier_update_restrictions`

Access: write. Confirm: waits for the user's OK before it runs.

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.

### Parameters

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

### tools/call

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "little-hotelier_update_restrictions",
    "arguments": {
      "room_rate_ids": [
        "rr_20417"
      ],
      "from": "2026-12-30",
      "to": "2026-12-31",
      "restrictions": {
        "min_stay": 2
      }
    }
  }
}
```

### Example response

```json
{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "status": "updated",
    "room_rates": 1,
    "dates": 4,
    "restrictions": {
      "min_stay": 2
    },
    "skipped": []
  },
  "isError": false
}
```

## Create room closure

MCP tool: `little-hotelier_create_room_closure`

Access: write. Confirm: waits for the user's OK before it runs.

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.

### Parameters

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

### tools/call

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "little-hotelier_create_room_closure",
    "arguments": {
      "room_ids": [
        "room ids"
      ],
      "from": "2026-10-01",
      "to": "2026-10-01"
    }
  }
}
```

### Example response

```json
{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "closure_id": "cl_7731",
    "status": "closed",
    "room_ids": [
      "rm_4"
    ],
    "from": "2026-10-12",
    "to": "2026-10-18",
    "nights": 7,
    "description": "Leak repair"
  },
  "isError": false
}
```

## Reply to guest

MCP tool: `little-hotelier_reply_to_guest`

Access: write. Confirm: waits for the user's OK before it runs.

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.

### Parameters

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

### tools/call

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "little-hotelier_reply_to_guest",
    "arguments": {
      "conversation_id": "cv_5521",
      "body": "Yes, late check-in at 21:30 is fine. Reception is open until 22:00."
    }
  }
}
```

### Example response

```json
{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "conversation_id": "cv_5521",
    "message_id": "msg_90417",
    "status": "sent",
    "channel": "whatsapp"
  },
  "isError": false
}
```
