# com.stayker/1stay (remote · mcp.stayker.com)

Hotel booking MCP server. Search, book, and manage reservations across 250K+ properties worldwide.

- Trust score: 65/100 (medium)
- Change this week: +4
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- remote · `mcp.stayker.com`: 65/100 (this document), [markdown](https://verifymcp.io/servers/com-stayker-1stay/mcp.md), [page](https://verifymcp.io/servers/com-stayker-1stay/mcp)

## Channel facts

- Endpoint: `https://mcp.stayker.com/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-08-03.

- **Endpoint Security**: 57/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation check failed: no authorisation is required to call this server, and it exposes a tool marked destructive (cancel_booking).
  - 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.
- **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 1673 tokens (~209/item across 8 items; 8 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 27/100
  - Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### Claude

```bash
claude mcp add --transport http com-stayker-1stay https://mcp.stayker.com/mcp
```

### Codex

```toml
[mcp_servers.com-stayker-1stay]
url = "https://mcp.stayker.com/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "com-stayker-1stay": {
      "type": "remote",
      "url": "https://mcp.stayker.com/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add com-stayker-1stay --url https://mcp.stayker.com/mcp --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  com-stayker-1stay:
    url: "https://mcp.stayker.com/mcp"
```

### Other

```json
{
  "mcpServers": {
    "com-stayker-1stay": {
      "type": "http",
      "url": "https://mcp.stayker.com/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-08-03 (score 65, +1)

- [security] Tool “get_booking” rewrote its description, which is the text the model reads
- [security] Tool “resend_confirmation” rewrote its description, which is the text the model reads
- [security] Tool “cancel_booking” rewrote its description, which is the text the model reads
- [functional regression] Schema quality: 187 → 209
- [cosmetic] “get_booking” added an optional parameter “verification_token”
- [cosmetic] “cancel_booking” added an optional parameter “cancellation_token”
- [cosmetic] “search_hotels” reworded the description of “location”
- [cosmetic] “resend_confirmation” dropped the optional parameter “updated_email”
- [cosmetic] “search_hotels” made “location” optional

### 2026-07-31 (score 64, +1)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-30 (score 63, 0)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-29 (score 63, +1)

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

### 2026-07-28 (score 62, +1)

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

### 2026-07-27 (score 61, 0)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-26 (score 61)

First indexed and scored.

## MCP tools (8)

### `search_hotels` (~361 tokens)

Search and book hotels by location and dates. Returns available properties with nightly rates across major brands, boutique, and independent hotels.

Guest pays the hotel directly. Hotel's own confirmation number. Loyalty points apply.

Input parameters:

- `chain_code` (string): Two-letter hotel chain filter. MC=Marriott, HH=Hilton, HI=IHG, YX=Hyatt, BW=Best Western, WY=Wyndham, EL=Choice. Omit for boutique, independent, or unbranded searches.
- `check_in` (string, required): Check-in date in YYYY-MM-DD format (e.g. 2026-05-06). Must be today or later.
- `check_out` (string, required): Check-out date in YYYY-MM-DD format (e.g. 2026-05-07). Must be after check_in.
- `currency` (string): Currency code (default USD)
- `cursor` (string): Pagination cursor from previous search response
- `guests_per_room` (integer): Guests per room (default 2)
- `latitude` (number): Latitude — must be provided together with longitude
- `location` (string): City, address, venue, or landmark (e.g. 'Nashville, TN' or 'Times Square, NYC'). Required unless latitude and longitude are both provided.
- `longitude` (number): Longitude — must be provided together with latitude
- `max_results` (integer): Max hotels to return, max 15 (default 10)
- `radius` (integer): Search radius in miles (default 25, max 100)
- `rooms` (integer): Number of rooms (default 1)
- `search_id` (string): Search ID from previous results — pass with cursor for next page

### `get_hotel_details` (~217 tokens)

Get rates and room details for a specific hotel. Returns room types, live rates, amenities, cancellation policies, and rate_codes required by book_hotel.

Guest pays the hotel directly. Rates shown are what the hotel charges. A 1Stay Booking Fee is added at checkout. Loyalty points eligible.

Room type notes: "Run of house" means the hotel assigns the room at check-in. "Suite" at select-service brands usually means a larger room with a sofa, not a separate bedroom. Non-refundable rates are cheaper but cannot be changed or canceled.

Input parameters:

- `check_in` (string, required): Check-in date in YYYY-MM-DD format (e.g. 2026-05-06)
- `check_out` (string, required): Check-out date in YYYY-MM-DD format (e.g. 2026-05-07)
- `guests` (integer): Number of guests (default 2)
- `hotel_id` (string, required): Hotel ID from search results
- `rooms` (integer): Number of rooms (default 1)

### `book_hotel` (~269 tokens)

Book a hotel room. Returns a secure checkout URL where the guest completes payment. Do not collect credit card numbers, payment info, or billing details in conversation.

Guest pays the hotel directly. Their credit card statement shows the hotel name, not 1Stay. Hotel's own confirmation number. Loyalty points apply automatically. A 1Stay Booking Fee is added at checkout.

Requires rate_code from get_hotel_details (expires in approximately 15 minutes). If expired, call get_hotel_details again for a fresh code.

Input parameters:

- `check_in` (string, required): Check-in date in YYYY-MM-DD format (e.g. 2026-05-06)
- `check_out` (string, required): Check-out date in YYYY-MM-DD format (e.g. 2026-05-07)
- `external_reference_id` (string): Your unique reference ID for this booking (for idempotency and retrieval)
- `guest_email` (string, required): Guest email for confirmation
- `guest_name` (string, required): Guest full name
- `guests` (integer, required): Number of guests
- `hotel_id` (string, required): Hotel ID from search or details
- `rate_code` (string, required): Rate code from get_hotel_details — you MUST call get_hotel_details first to get a valid rate_code before booking

### `lookup_booking` (~241 tokens)

Look up a reservation by verifying the guest's identity. Returns the confirmation number and booking summary in conversation.

Required before calling:
1\. Guest full name (first and last)
2\. At least one verification factor: email address used when booking, hotel confirmation number, or last 4 digits of the card used to book (check-in date also required for card verification)

Do not call this tool without the guest's full name and at least one verification factor. If the guest cannot provide any verification factor, their reservation cannot be looked up — this is for the security of their booking.

To resend the confirmation email, use resend_confirmation after verifying identity with this tool. To cancel, use cancel_booking.

Input parameters:

- `check_in_date` (string): Check-in date (YYYY-MM-DD) — required with last_four_card
- `confirmation_number` (string): Hotel confirmation number
- `email` (string): Email address used when booking
- `first_name` (string, required): Guest first name on the reservation
- `last_four_card` (string): Last 4 digits of the card used to book
- `last_name` (string, required): Guest last name on the reservation

### `resend_confirmation` (~96 tokens)

Resend a hotel reservation confirmation email. Use after verifying the guest's identity with lookup_booking.

The confirmation is always sent to the email address on the booking record. There is no way to redirect it to a different address. If the guest can no longer access that inbox, direct them to support at https://stayker.com/service — a different address cannot be set through this tool.

Input parameters:

- `confirmation_number` (string, required): Hotel confirmation number

### `get_booking` (~174 tokens)

Look up a reservation by booking ID (stk_bk_xxxx) or hotel confirmation number. Returns full booking details including hotel, dates, guest info, rate, and status.

Guest-facing (anonymous) callers must first call lookup_booking to verify the guest's identity — that returns a verification_token, which you then pass here. Without a valid token, this tool returns no booking data. Developers authenticated with their own API key do not need a token; their access is scoped to their own bookings.

Input parameters:

- `booking_id` (string, required): Booking ID (e.g. stk_bk_xxxx) or confirmation number
- `verification_token` (string): Verification token returned by lookup_booking. Required for guest-facing (anonymous) lookups; obtain it by calling lookup_booking first. Not needed when authenticated with your own developer API key.

### `cancel_booking` (~248 tokens)

Cancel a hotel reservation. This is a two-step, server-confirmed action.

Call 1 — provide guest first name, last name, and hotel confirmation number, and leave cancellation_token empty. The tool verifies the guest's identity and returns the cancellation terms (penalty, refundable amount, free-cancellation deadline, and a warning if the rate is non-refundable) plus a single-use cancellation_token. Nothing is cancelled yet.

Call 2 — call again with the same details and the cancellation_token to execute the cancellation. The token is single-use and expires in about 10 minutes.

Share the terms with the guest and get their confirmation before the second call. Non-refundable rates forfeit the full amount. Cancellation confirmation is emailed to the address on file.

Input parameters:

- `cancellation_token` (string): Leave empty on the first call to preview the cancellation terms (penalty, refund, deadline) and receive a cancellation_token. Call again with that token to actually cancel. Single-use; expires in ~10…
- `confirmation_number` (string, required): Hotel confirmation number
- `first_name` (string, required): Guest first name on the reservation
- `last_name` (string, required): Guest last name on the reservation

### `search_tools` (~67 tokens)

List available 1Stay hotel booking tools. Filter by keyword: search, book, cancel, details. Omit keyword to list all tools.

Input parameters:

- `keyword` (string): Keyword to filter tools (e.g. 'book', 'search', 'cancel'). Omit to list all tools.

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/com-stayker-1stay/mcp#diagnostics

## Score history

- 2026-08-03: 65
- 2026-08-02: 64
- 2026-08-01: 64
- 2026-07-31: 64
- 2026-07-30: 63
- 2026-07-29: 63
- 2026-07-28: 62
- 2026-07-27: 61
- 2026-07-26: 61

## Links

- Remote endpoint: https://mcp.stayker.com/mcp
- Repository: https://github.com/STAYKER-COM/1Stay-mcp
- Changelog RSS feed: https://verifymcp.io/servers/com-stayker-1stay/mcp/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/com-stayker-1stay/mcp/changelog.json
- HTML version of this page: https://verifymcp.io/servers/com-stayker-1stay/mcp
