# io.usefulapi/beds24 (remote · beds24.usefulapi.io)

Check bookings, quote stays, read guest messages and reviews, and update calendars in Beds24.

- Trust score: 75/100 (medium)
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-10-04

## Components

- remote · `beds24.usefulapi.io`: 75/100 (this document), [markdown](https://verifymcp.io/servers/io-usefulapi-beds24/beds24.md), [page](https://verifymcp.io/servers/io-usefulapi-beds24/beds24)

## Channel facts

- Endpoint: `https://beds24.usefulapi.io/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `1.0.0`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-10-04.

- **Endpoint Security**: 89/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation is enforced on tool calls, advertised via RFC 9728 protected-resource metadata. Discovery is public, which costs nothing: no tool can be invoked without a token.
  - HTTPS is enforced; there's no plaintext access path.
  - HSTS check failed: the Strict-Transport-Security header is absent.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
  - The authorisation server offers only Dynamic Client Registration (RFC 7591), which MCP 2026-07-28 deprecated in favour of Client ID Metadata Documents.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 64/100
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 3732 tokens (~207/item across 18 items; 18 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 13/100
  - Stability observed for 4 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 91/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 74% of tool parameters carry a description.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - All 1 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.
  - An AI judge read all 18 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 60/100
  - Spec-recency check failed: implements MCP spec 2025-06-18; the latest is 2026-07-28.

## Install

### How do I install the io.usefulapi/beds24 MCP server?

io.usefulapi/beds24 is a hosted endpoint at https://beds24.usefulapi.io/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add --transport http io-usefulapi-beds24 'https://beds24.usefulapi.io/mcp'
```

### Cursor

```json
{
  "mcpServers": {
    "io-usefulapi-beds24": {
      "url": "https://beds24.usefulapi.io/mcp"
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "io-usefulapi-beds24": {
      "type": "http",
      "url": "https://beds24.usefulapi.io/mcp"
    }
  }
}
```

### Codex

```toml
[mcp_servers.io-usefulapi-beds24]
url = "https://beds24.usefulapi.io/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "io-usefulapi-beds24": {
      "type": "remote",
      "url": "https://beds24.usefulapi.io/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add io-usefulapi-beds24 --url 'https://beds24.usefulapi.io/mcp' --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  io-usefulapi-beds24:
    url: "https://beds24.usefulapi.io/mcp"
```

### Netclaw

```json
{
  "McpServers": {
    "io-usefulapi-beds24": {
      "Transport": "http",
      "Url": "https://beds24.usefulapi.io/mcp"
    }
  }
}
```

### Vellum

```bash
assistant mcp add io-usefulapi-beds24 -t streamable-http -u 'https://beds24.usefulapi.io/mcp'
```

### Other

```json
{
  "mcpServers": {
    "io-usefulapi-beds24": {
      "type": "http",
      "url": "https://beds24.usefulapi.io/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-10-04 (score 75, +1)

No change was recorded against any check on this day. Stability & Change Management went from 10 to 13. That category is still filling its 30-day observation window: 3 days of observed history at the previous scan, 4 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-02 (score 74, +41)

- [security improvement] Authorization: unverified → pass
- [security improvement] Injection markers: unverified → pass
- [functional regression] MCP protocol: unverified → fail
- [functional improvement] Endpoint reachability: behind authorisation → reachable
- [functional improvement] Stability: unverified → 0.07
- [functional improvement] Tool coverage: unverified → 100
- [functional] Server version: 1.0.0 → 1.5.1

### 2026-10-01 (score 33, −35)

- [security regression] Endpoint reachability: reachable → behind authorisation
- [security regression] Authorization: pass → unverified
- [security regression] Tool safety: pass → unverified
- [security improvement] HTTPS: unverified → pass
- [functional regression] Capabilities: fail → unverified
- [functional regression] Tool coverage: 100 → unverified

### 2026-09-30 (score 68, +40)

- [security improvement] Authorization: unverified → pass
- [security improvement] Injection markers: unverified → pass
- [security] First check of Judged manipulation: pass
- [security] First check of Authorization: partial
- [functional regression] MCP protocol: unverified → fail
- [functional improvement] Tool coverage: unverified → 100
- [functional] First check of Schema quality: fail
- [functional] First check of Schema quality: excellent
- [functional] First check of Schema quality: fail
- [functional] First check of Tool coverage: 74
- [functional] First check of Destructive annotations: 100

### 2026-09-29 (score 28)

First indexed and scored.

## MCP tools (18)

### `beds24_get_token_details` (~77 tokens)

Get token details

Check the configured Beds24 token: whether it is valid, its scopes, owner id, expiry, and whether it is restricted to one property. A cheap way to confirm setup and see which scopes are granted. Note Beds24 answers HTTP 200 with validToken=false for a bad token. Beds24: GET /authentication/details.

### `beds24_list_properties` (~223 tokens)

List properties

List the properties in the account with their address, currency, check-in times and room types (roomTypes). Optional flags include texts, pictures, offers, unit details and all rooms. Requires the properties scope. Beds24: GET /properties.

Input parameters:

- `includeAllRooms` (boolean): Include every room type of each property.
- `includeLanguages` (array): Languages for texts, e.g. ["en"] or ["all"].
- `includeOffers` (boolean): Include offers per room.
- `includePictures` (boolean)
- `includePriceRules` (boolean)
- `includeTexts` (array): Which descriptive texts to include.
- `includeUnitDetails` (boolean): Include full unit details (by default only unit names).
- `includeUpsellItems` (boolean)
- `page` (integer): Page number beyond the first (2, 3, ...). Check pages.nextPageExists in the previous response.
- `propertyIds` (array): One or more property ids.
- `roomIds` (array): One or more room ids.

### `beds24_list_bookings` (~438 tokens)

List bookings

Search bookings by arrival/departure date range, booking or modified time, property, room, channel, status, or a free-text search over guest name, email, booking id and API reference. With NO filters Beds24 returns only upcoming bookings. `filter` shortcuts: arrivals (arriving today), departures (departing today), new (created in the last 24h), current (in-house). Guest data needs the bookings-personal scope, invoice items bookings-financial. Beds24: GET /bookings.

Input parameters:

- `apiReferences` (array): Channel / API references.
- `arrival` (string): Exact arrival date.
- `arrivalFrom` (string): Date, YYYY-MM-DD.
- `arrivalTo` (string): Date, YYYY-MM-DD.
- `bookingIds` (array): One or more booking ids.
- `bookingTimeFrom` (string): Booked after this time (UTC).
- `bookingTimeTo` (string): Booked before this time (UTC).
- `channel` (string): Only bookings from this channel.
- `departure` (string): Exact departure date.
- `departureFrom` (string): Date, YYYY-MM-DD.
- `departureTo` (string): Date, YYYY-MM-DD.
- `filter` (string)
- `includeBookingGroup` (boolean)
- `includeGuests` (boolean): Include additional guests (bookings-personal scope).
- `includeInfoItems` (boolean)
- `includeInvoiceItems` (boolean)
- `masterIds` (array): One or more group master booking ids.
- `modifiedFrom` (string): Modified after this time.
- `modifiedTo` (string): Modified before this time.
- `page` (integer): Page number beyond the first (2, 3, ...). Check pages.nextPageExists in the previous response.
- `propertyIds` (array): One or more property ids.
- `roomIds` (array): One or more room ids.
- `searchString` (string): Matches guest name, email, apiReference or booking id.
- `status` (array): Statuses to include. Defaults to all except cancelled.

### `beds24_get_booking` (~56 tokens)

Get a booking

Fetch one booking by id with its invoice items, info items and additional guests. Works for any status, including cancelled. Beds24: GET /bookings?id=<id>.

Input parameters:

- `bookingId` (integer, required): The booking id.

### `beds24_list_booking_messages` (~200 tokens)

List booking messages

Read the guest conversation on bookings — messages from guests, host replies, internal notes and system messages — across channels (Airbnb, Booking.com, Vrbo, direct). Filter by booking, property, room, read/unread, source and age. Beds24: GET /bookings/messages.

Input parameters:

- `bookingIds` (array): One or more booking ids.
- `filter` (string)
- `masterIds` (array): One or more group master booking ids.
- `maxAge` (integer): Only messages from the last N days.
- `messageIds` (array): One or more message ids.
- `page` (integer): Page number beyond the first (2, 3, ...). Check pages.nextPageExists in the previous response.
- `propertyIds` (array): One or more property ids.
- `roomIds` (array): One or more room ids.
- `source` (string): Only messages from one side.

### `beds24_list_booking_invoices` (~92 tokens)

List booking invoices

List invoices and their line items (charges and payments) for bookings. Requires the bookings-financial scope. Beds24 marks this endpoint Alpha. Beds24: GET /bookings/invoices.

Input parameters:

- `bookingIds` (array): One or more booking ids.
- `page` (integer): Page number beyond the first (2, 3, ...). Check pages.nextPageExists in the previous response.

### `beds24_get_room_offers` (~195 tokens)

Get room offers (quote)

Quote a stay: bookable offers with total price and units available per room for given dates and guests. Use before creating a booking. Beds24: GET /inventory/rooms/offers.

Input parameters:

- `agentCode` (string)
- `arrival` (string, required): Arrival date, YYYY-MM-DD.
- `departure` (string, required): Departure date, YYYY-MM-DD.
- `includeTexts` (array): Include descriptive texts in these 2-letter languages, e.g. ["en"].
- `numAdults` (integer, required): Number of adults.
- `numChildren` (integer)
- `offerIds` (array): One or more offer ids.
- `page` (integer): Page number beyond the first (2, 3, ...). Check pages.nextPageExists in the previous response.
- `propertyIds` (array): One or more property ids.
- `roomIds` (array): One or more room ids.

### `beds24_get_room_availability` (~140 tokens)

Get room availability

Per-date availability (true/false) for rooms over a range of nights. endDate is the LAST NIGHT (the day before check-out). Beds24: GET /inventory/rooms/availability.

Input parameters:

- `endDate` (string): Last night (day before check-out), YYYY-MM-DD.
- `page` (integer): Page number beyond the first (2, 3, ...). Check pages.nextPageExists in the previous response.
- `propertyIds` (array): One or more property ids.
- `roomIds` (array): One or more room ids.
- `startDate` (string): First night, YYYY-MM-DD.

### `beds24_get_unit_bookings` (~139 tokens)

Get unit bookings (occupancy grid)

Which units of each room type are booked on each date — an occupancy grid keyed by date. endDate is the last night. Beds24 marks this endpoint Beta. Beds24: GET /inventory/rooms/unitBookings.

Input parameters:

- `endDate` (string): Last night, YYYY-MM-DD.
- `page` (integer): Page number beyond the first (2, 3, ...). Check pages.nextPageExists in the previous response.
- `propertyIds` (array): One or more property ids.
- `roomIds` (array): One or more room ids.
- `startDate` (string): First night, YYYY-MM-DD.

### `beds24_get_room_calendar` (~245 tokens)

Get room calendar

Per-day calendar values for rooms: units available, min/max stay, multiplier, override (blackout, no check-in, ...) and the price slots price1..price16, as date ranges. Choose fields with the include flags; if none are set this tool asks for numAvail, minStay, maxStay, override and prices. Beds24: GET /inventory/rooms/calendar.

Input parameters:

- `endDate` (string, required): Last date, YYYY-MM-DD.
- `includeChannels` (boolean): Include per-channel booking limits.
- `includeLinkedPrices` (boolean)
- `includeMaxStay` (boolean)
- `includeMinStay` (boolean)
- `includeMultiplier` (boolean)
- `includeNumAvail` (boolean)
- `includeOverride` (boolean)
- `includePrices` (boolean)
- `page` (integer): Page number beyond the first (2, 3, ...). Check pages.nextPageExists in the previous response.
- `propertyIds` (array): One or more property ids.
- `roomIds` (array): One or more room ids.
- `startDate` (string, required): First date, YYYY-MM-DD.

### `beds24_list_fixed_prices` (~132 tokens)

List fixed prices

List fixed price rules (seasonal rates): date span, min/max nights, per-room and per-person prices, discounts, allowed arrival days and channel export. Beds24: GET /inventory/fixedPrices.

Input parameters:

- `fixedPriceIds` (array): One or more fixed price ids.
- `includeRateCodes` (boolean)
- `page` (integer): Page number beyond the first (2, 3, ...). Check pages.nextPageExists in the previous response.
- `propertyIds` (array): One or more property ids.
- `roomIds` (array): One or more room ids.

### `beds24_list_booking_com_reviews` (~91 tokens)

List Booking.com reviews

Guest reviews from Booking.com for one property, made on or after a date: scores, content, reviewer and any reply. At most 100 per call. Beds24 marks this endpoint Alpha. Beds24: GET /channels/booking/reviews.

Input parameters:

- `from` (string, required): Reviews made on or after this date, YYYY-MM-DD.
- `propertyId` (integer, required): The property id.

### `beds24_list_airbnb_reviews` (~79 tokens)

List Airbnb reviews

Guest reviews from Airbnb for one room: overall and category ratings, public review, private feedback and the host response. At most 100 per call. Beds24 marks this endpoint Beta. Beds24: GET /channels/airbnb/reviews.

Input parameters:

- `roomId` (integer, required): The Beds24 room id linked to the Airbnb listing.

### `beds24_create_booking` (~486 tokens)

Create a booking

Create a new booking in a room for given dates and guest details. It immediately blocks inventory and is synced to connected channels. Set checkAvailability=true to refuse the booking if the room is not free, and notifyGuest / notifyHost to send confirmation emails. Undo by setting status cancelled with beds24_update_booking. Requires a token with bookings write access. Beds24: POST /bookings.

Input parameters:

- `address` (string)
- `arrival` (string, required): Arrival date, YYYY-MM-DD.
- `arrivalTime` (string): Expected arrival time (free text).
- `assignBooking` (boolean): Let Beds24 assign the first free unit / room using room dependency settings.
- `checkAvailability` (boolean): Do not save the booking if the room has no availability. Recommended.
- `city` (string)
- `comments` (string): Guest comments.
- `company` (string)
- `country` (string): Free text country.
- `country2` (string): 2-letter country code, e.g. DE.
- `departure` (string, required): Departure (check-out) date, YYYY-MM-DD.
- `deposit` (number)
- `email` (string)
- `firstName` (string)
- `flagColor` (string): Flag colour, 6-character hex (e.g. ff0000) or empty string to clear.
- `flagText` (string)
- `lang` (string): Guest language, 2-letter code, e.g. en.
- `lastName` (string)
- `mobile` (string)
- `notes` (string): Internal host notes.
- `notifyGuest` (boolean): Email the guest a booking confirmation.
- `notifyHost` (boolean): Email the host a booking confirmation.
- `numAdult` (integer): Number of adults.
- `numChild` (integer): Number of children.
- `phone` (string)
- `postcode` (string)
- `price` (number): Total booking price.
- `reference` (string): Your own reference.
- `roomId` (integer, required): Room (room type) id.
- `state` (string)
- `status` (string): Booking status.
- `tax` (number)
- `title` (string): Guest title, e.g. Mr, Ms.
- `unitId` (integer): Specific unit within the room type.

### `beds24_update_booking` (~462 tokens)

Update a booking

Change an existing booking: dates, room/unit, guest counts, guest details, notes, flag, price, or status (e.g. confirmed, or cancelled to cancel — reversible by setting it back). Only the fields you pass change. Optionally add info items (code/text pairs). Changes sync to channels where allowed. Beds24: POST /bookings with the booking id.

Input parameters:

- `addInfoItems` (array): Info items to ADD to the booking (existing ones are untouched).
- `address` (string)
- `arrival` (string): Arrival date, YYYY-MM-DD.
- `arrivalTime` (string): Expected arrival time (free text).
- `bookingId` (integer, required): The booking id to change.
- `city` (string)
- `comments` (string): Guest comments.
- `company` (string)
- `country` (string): Free text country.
- `country2` (string): 2-letter country code, e.g. DE.
- `departure` (string): Departure (check-out) date, YYYY-MM-DD.
- `deposit` (number)
- `email` (string)
- `firstName` (string)
- `flagColor` (string): Flag colour, 6-character hex (e.g. ff0000) or empty string to clear.
- `flagText` (string)
- `lang` (string): Guest language, 2-letter code, e.g. en.
- `lastName` (string)
- `mobile` (string)
- `notes` (string): Internal host notes.
- `notifyGuest` (boolean): Email the guest an updated confirmation.
- `numAdult` (integer): Number of adults.
- `numChild` (integer): Number of children.
- `phone` (string)
- `postcode` (string)
- `price` (number): Total booking price.
- `reference` (string): Your own reference.
- `roomId` (integer): Room (room type) id.
- `state` (string)
- `status` (string): Booking status.
- `tax` (number)
- `title` (string): Guest title, e.g. Mr, Ms.
- `unitId` (integer): Specific unit within the room type.

### `beds24_send_booking_message` (~114 tokens)

Send a booking message

Send a message on a booking's conversation. With source host (default) it is delivered to the GUEST through their channel (Airbnb, Booking.com, Vrbo, email) and cannot be unsent; with source internalNote it is a private host note. Beds24: POST /bookings/messages.

Input parameters:

- `bookingId` (integer, required): The booking id.
- `message` (string, required): Message text.
- `source` (string): host (to the guest, default) or internalNote (private).

### `beds24_mark_messages_read` (~68 tokens)

Mark messages read

Mark one or more booking messages as read (or unread with read=false). Beds24: POST /bookings/messages with [{ id, read }].

Input parameters:

- `messageIds` (array, required): Message ids.
- `read` (boolean): true (default) = read, false = unread.

### `beds24_update_room_calendar` (~495 tokens)

Update room calendar

Set per-day calendar values for ONE room over a date range: units available (numAvail), minStay, maxStay, multiplier, override (none, blackout, exception, noCheckIn, noCheckOut, noCheckInOrCheckOut) and price slots price1..price16. Set a price to null to remove it. These values sync to channels. Read the current values first with beds24_get_room_calendar so you can restore them. Beds24: POST /inventory/rooms/calendar.

Input parameters:

- `from` (string, required): First date, YYYY-MM-DD.
- `maxStay` (integer)
- `minStay` (integer)
- `multiplier` (number)
- `numAvail` (integer): Units available per day.
- `override` (string)
- `price1` (number|null): Calendar price1 for these dates. null removes it.
- `price10` (number|null): Calendar price10 for these dates. null removes it.
- `price11` (number|null): Calendar price11 for these dates. null removes it.
- `price12` (number|null): Calendar price12 for these dates. null removes it.
- `price13` (number|null): Calendar price13 for these dates. null removes it.
- `price14` (number|null): Calendar price14 for these dates. null removes it.
- `price15` (number|null): Calendar price15 for these dates. null removes it.
- `price16` (number|null): Calendar price16 for these dates. null removes it.
- `price2` (number|null): Calendar price2 for these dates. null removes it.
- `price3` (number|null): Calendar price3 for these dates. null removes it.
- `price4` (number|null): Calendar price4 for these dates. null removes it.
- `price5` (number|null): Calendar price5 for these dates. null removes it.
- `price6` (number|null): Calendar price6 for these dates. null removes it.
- `price7` (number|null): Calendar price7 for these dates. null removes it.
- `price8` (number|null): Calendar price8 for these dates. null removes it.
- `price9` (number|null): Calendar price9 for these dates. null removes it.
- `roomId` (integer, required): The room id.
- `to` (string, required): Last date, YYYY-MM-DD.

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/io-usefulapi-beds24/beds24#diagnostics

## Score history

- 2026-10-04: 75
- 2026-10-03: 74
- 2026-10-02: 74
- 2026-10-01: 33
- 2026-09-30: 68
- 2026-09-29: 28

## Common questions

### What is the io.usefulapi/beds24 MCP server?

io.usefulapi/beds24 is an MCP server listed in the public MCP registry as io.usefulapi/beds24. Check bookings, quote stays, read guest messages and reviews, and update calendars in Beds24. This page covers its hosted endpoint (https://beds24.usefulapi.io/mcp).

### Is the io.usefulapi/beds24 MCP server safe to use?

io.usefulapi/beds24 scores 75 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the io.usefulapi/beds24 MCP server expose?

io.usefulapi/beds24 exposes 18 tools: beds24_get_token_details, beds24_list_properties, beds24_list_bookings, beds24_get_booking, beds24_list_booking_messages, and 13 more. Their descriptions and schemas cost roughly 3,732 tokens of context every time the server is loaded.

### Does the io.usefulapi/beds24 MCP server require authentication?

Yes. io.usefulapi/beds24 asked us for credentials when we connected, so you will need to authorise it in your MCP client before it can do anything.

### Is the io.usefulapi/beds24 MCP server still maintained?

io.usefulapi/beds24 is still listed as active in the MCP registry. We last reached this channel on 4 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

## Links

- Remote endpoint: https://beds24.usefulapi.io/mcp
- Repository: https://github.com/m190/usefulapi-mcp
- Changelog RSS feed: https://verifymcp.io/servers/io-usefulapi-beds24/beds24.xml
- Changelog JSON feed: https://verifymcp.io/servers/io-usefulapi-beds24/beds24.json
- HTML version of this page: https://verifymcp.io/servers/io-usefulapi-beds24/beds24
