RoomLast - Last-Minute Hotels
Find last-minute hotels, compare room offers, and continue on RoomLast to book.
Should I use this
Quality & Safety
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"roomlast": {
"url": "https://mcp.roomlast.com/mcp"
}
}
}Remote endpoints
https://mcp.roomlast.com/mcpstreamable-httpWhat it can do
Tool inventory
Tools (3)
🟢search_accommodations(destination, checkinDate, checkoutDate, dateIntent, timeZone, ...)
Finds last-minute hotels in a city, neighborhood, airport, or landmark for tonight or specified upcoming dates. Dates are represented by dateIntent tonight or by checkinDate and checkoutDate. Supports occupancy, price, stars, guest score, property type, amenities, cancellation, and sort filters. Returns hotel IDs, facts, masked RoomLast price bands, public-rate comparisons, and RoomLast links. Room choices and exact private prices are not included in these results.
Input Schema
{
"type": "object",
"properties": {
"destination": {
"type": "string",
"minLength": 2,
"maxLength": 160,
"description": "City, neighborhood, airport, landmark, or other broad destination."
},
"checkinDate": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Explicit check-in date in YYYY-MM-DD; paired with checkoutDate."
},
"checkoutDate": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Explicit check-out date in YYYY-MM-DD; paired with checkinDate."
},
"dateIntent": {
"type": "string",
"enum": [
"tonight"
],
"description": "Relative stay intent. Tonight resolves check-in as the current local date and check-out as the following date."
},
"timeZone": {
"type": "string",
"minLength": 3,
"maxLength": 80,
"description": "Optional IANA time-zone fallback for resolving relative stay dates; destination or property location takes precedence."
},
"adults": {
"type": "integer",
"minimum": 1,
"maximum": 16,
"description": "Total adult guests. When omitted, RoomLast defaults to 2 adults per room."
},
"children": {
"type": "integer",
"minimum": 0,
"maximum": 8,
"description": "Total child guests; equals childrenAges.length."
},
"childrenAges": {
"type": "array",
"items": {
"type": "integer",
"minimum": 0,
"maximum": 17
},
"maxItems": 8,
"default": [],
"description": "Age of every child at check-in. The array length must equal children."
},
"rooms": {
"type": "integer",
"minimum": 1,
"maximum": 3,
"default": 1,
"description": "Number of rooms. Each room receives the default of 2 adults when adults is omitted."
},
"currency": {
"type": "string",
"minLength": 3,
"maxLength": 3,
"default": "USD"
},
"page": {
"type": "integer",
"minimum": 1,
"default": 1
},
"sort": {
"type": "string",
"enum": [
"top-picks",
"distance",
"total",
"total-desc",
"reviews"
],
"default": "top-picks",
"description": "Result order: top-picks, distance, total price ascending, total price descending, or guest reviews."
},
"minimumPrice": {
"type": "number",
"minimum": 0,
"description": "Minimum nightly price in the selected currency."
},
"maximumPrice": {
"type": "number",
"exclusiveMinimum": 0,
"description": "Maximum nightly price in the selected currency."
},
"minimumStarRating": {
"type": "number",
"minimum": 1,
"maximum": 5,
"description": "Minimum hotel star classification from 1 to 5; distinct from guest review score."
},
"starRatings": {
"type": "array",
"items": {
"type": "integer",
"minimum": 1,
"maximum": 5
},
"maxItems": 5,
"description": "Exact accepted hotel star classifications."
},
"minimumReviewScore": {
"type": "number",
"minimum": 0,
"maximum": 10,
"description": "Minimum guest review score out of 10; distinct from hotel star classification."
},
"propertyTypes": {
"type": "array",
"items": {
"type": "string",
"enum": [
"hotel",
"motel",
"resort",
"hostel",
"apartment",
"apart-hotel",
"extended-stay",
"condo",
"studio",
"house",
"townhome",
"guesthouse",
"bed-and-breakfast",
"villa",
"cabin",
"cottage",
"campground",
"rv",
"estate",
"boat",
"chateau",
"hotel-suites",
"corporate-apartment",
"farm-house",
"lodge",
"barn",
"mobile-home",
"house-boat",
"castle",
"mas",
"tower",
"mill",
"building"
]
},
"maxItems": 12,
"description": "Accepted accommodation types, such as hotel, motel, resort, hostel, or apartment."
},
"freeCancellationOnly": {
"type": "boolean",
"default": false,
"description": "Whether results require free cancellation or refundable rates."
},
"amenities": {
"type": "array",
"items": {
"type": "string",
"enum": [
"pool",
"parking",
"wifi",
"free-wifi",
"kitchen",
"fireplace",
"beachfront",
"washer",
"dryer",
"air-conditioning",
"tv",
"heating",
"family-friendly",
"kids-friendly",
"pet-friendly",
"hot-tub",
"free-breakfast",
"free-cancellation",
"laundry-in-unit",
"laundry-on-site",
"accessible",
"for-couples",
"solarium",
"long-term-deals",
"pay-over-time",
"accept-local"
]
},
"maxItems": 12,
"description": "Amenities required in every result."
}
},
"required": [
"destination",
"children"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Output Schema
{
"type": "object",
"properties": {
"accommodations": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"address": {
"type": [
"string",
"null"
]
},
"city": {
"type": [
"string",
"null"
]
},
"stateCode": {
"type": [
"string",
"null"
]
},
"propertyType": {
"type": [
"string",
"null"
]
},
"imageUrl": {
"type": [
"string",
"null"
]
},
"images": {
"type": "array",
"items": {
"type": "string"
}
},
"latitude": {
"type": [
"number",
"null"
]
},
"longitude": {
"type": [
"number",
"null"
]
},
"starRating": {
"type": [
"number",
"null"
]
},
"reviewScore": {
"type": [
"number",
"null"
]
},
"reviewScale": {
"type": [
"number",
"null"
]
},
"reviewCount": {
"type": [
"number",
"null"
]
},
"ratingLabel": {
"type": [
"string",
"null"
]
},
"refundable": {
"type": [
"boolean",
"null"
]
},
"highlights": {
"type": "array",
"items": {
"type": "string"
}
},
"pointsOfInterest": {
"type": [
"string",
"null"
]
},
"highlightReview": {
"type": [
"string",
"null"
]
},
"consecutivePositiveReviewCount": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
]
},
"wholesale": {
"type": "object",
"properties": {
"label": {
"type": "string"
},
"url": {
"type": [
"string",
"null"
]
},
"nightly": {
"type": [
"number",
"null"
]
},
"total": {
"type": [
"number",
"null"
]
},
"maskedTotal": {
"type": [
"string",
"null"
]
},
"currency": {
"type": "string"
},
"includesTaxesAndFees": {
"type": [
"boolean",
"null"
]
}
},
"required": [
"label",
"url",
"nightly",
"total",
"maskedTotal",
"currency",
"includesTaxesAndFees"
],
"additionalProperties": false
},
"comparison": {
"anyOf": [
{
"$ref": "#/properties/accommodations/items/properties/wholesale"
},
{
"type": "null"
}
]
},
"savings": {
"type": [
"number",
"null"
]
},
"savingsPercent": {
"type": [
"number",
"null"
]
},
"detailsUrl": {
"type": [
"string",
"null"
]
},
"availabilityToken": {
"type": [
"string",
"null"
]
}
},
"required": [
"id",
"name",
"address",
"city",
"stateCode",
"propertyType",
"imageUrl",
"images",
"latitude",
"longitude",
"starRating",
"reviewScore",
"reviewScale",
"reviewCount",
"ratingLabel",
"refundable",
"highlights",
"pointsOfInterest",
"highlightReview",
"consecutivePositiveReviewCount",
"wholesale",
"comparison",
"savings",
"savingsPercent",
"detailsUrl",
"availabilityToken"
],
"additionalProperties": false
}
},
"page": {
"type": "integer"
},
"total": {
"type": "integer"
},
"totalPages": {
"type": "integer"
},
"search": {
"type": "object",
"properties": {
"destination": {
"type": "string"
},
"checkinDate": {
"type": "string"
},
"checkoutDate": {
"type": "string"
},
"adults": {
"type": "integer"
},
"children": {
"type": "integer"
},
"childrenAges": {
"type": "array",
"items": {
"type": "integer"
}
},
"rooms": {
"type": "integer"
},
"currency": {
"type": "string"
},
"sort": {
"type": "string",
"enum": [
"top-picks",
"distance",
"total",
"total-desc",
"reviews"
]
}
},
"required": [
"destination",
"checkinDate",
"checkoutDate",
"adults",
"children",
"childrenAges",
"rooms",
"currency",
"sort"
],
"additionalProperties": false
},
"priceDisclosure": {
"type": "string"
}
},
"required": [
"accommodations",
"page",
"total",
"totalPages",
"search",
"priceDisclosure"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢get_accommodation_details(propertyId, currency)
Returns undated facts for one identified RoomLast property ID, including address, description, photos, amenities, check-in and checkout times, star rating, and guest-review data. Availability, room offers, prices, breakfast, and cancellation terms are not included.
Input Schema
{
"type": "object",
"properties": {
"propertyId": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"currency": {
"type": "string",
"minLength": 3,
"maxLength": 3,
"default": "USD"
}
},
"required": [
"propertyId"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Output Schema
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"address": {
"type": [
"string",
"null"
]
},
"description": {
"type": [
"string",
"null"
]
},
"images": {
"type": "array",
"items": {
"type": "string"
}
},
"latitude": {
"type": [
"number",
"null"
]
},
"longitude": {
"type": [
"number",
"null"
]
},
"starRating": {
"type": [
"number",
"null"
]
},
"reviewScore": {
"type": [
"number",
"null"
]
},
"reviewScale": {
"type": [
"number",
"null"
]
},
"reviewCount": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
]
},
"highlights": {
"type": "array",
"items": {
"type": "string"
}
},
"amenities": {
"type": "array",
"items": {
"type": "string"
}
},
"checkinFrom": {
"type": [
"string",
"null"
]
},
"checkoutUntil": {
"type": [
"string",
"null"
]
},
"propertyType": {
"type": [
"string",
"null"
]
}
},
"required": [
"id",
"name",
"address",
"description",
"images",
"latitude",
"longitude",
"starRating",
"reviewScore",
"reviewScale",
"reviewCount",
"highlights",
"amenities",
"checkinFrom",
"checkoutUntil",
"propertyType"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢get_accommodation_offers(propertyId, hotelName, destination, checkinDate, checkoutDate, ...)
Returns one named or identified hotel's live room offers for tonight or specified upcoming dates. Dates are represented by dateIntent tonight or by checkinDate and checkoutDate. Results include room types, photos, breakfast, refundability, cancellation terms, public-rate comparisons, masked RoomLast price bands, and RoomLast links. Supports single-room and multi-room occupancy. Exact private prices and booking are available on RoomLast.
Input Schema
{
"type": "object",
"properties": {
"propertyId": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "RoomLast property ID from a search result or RoomLast stay URL."
},
"hotelName": {
"type": "string",
"minLength": 2,
"maxLength": 200,
"description": "Exact hotel name when propertyId is unavailable."
},
"destination": {
"type": "string",
"minLength": 2,
"maxLength": 160,
"description": "Optional city or region for disambiguating hotelName."
},
"checkinDate": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Explicit check-in date in YYYY-MM-DD; paired with checkoutDate."
},
"checkoutDate": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Explicit check-out date in YYYY-MM-DD; paired with checkinDate."
},
"dateIntent": {
"type": "string",
"enum": [
"tonight"
],
"description": "Relative stay intent. Tonight resolves check-in as the current local date and check-out as the following date."
},
"timeZone": {
"type": "string",
"minLength": 3,
"maxLength": 80,
"description": "Optional IANA time-zone fallback for resolving relative stay dates; destination or property location takes precedence."
},
"adults": {
"type": "integer",
"minimum": 1,
"maximum": 16,
"default": 2,
"description": "Total adult guests."
},
"childrenAges": {
"type": "array",
"items": {
"type": "integer",
"minimum": 0,
"maximum": 17
},
"maxItems": 8,
"default": [],
"description": "Age of each child at check-in."
},
"rooms": {
"type": "integer",
"minimum": 1,
"maximum": 3,
"default": 1,
"description": "Number of rooms. Each room requires at least one adult."
},
"roomArrangements": {
"type": "array",
"items": {
"type": "object",
"properties": {
"adults": {
"type": "integer",
"minimum": 1,
"maximum": 8,
"description": "Adults staying in this specific room."
},
"childrenAges": {
"type": "array",
"items": {
"type": "integer",
"minimum": 0,
"maximum": 17
},
"maxItems": 8,
"default": [],
"description": "Ages of children staying in this specific room."
},
"infants": {
"type": "integer",
"minimum": 0,
"maximum": 4,
"default": 0,
"description": "Number of infants staying in this room."
}
},
"required": [
"adults"
],
"additionalProperties": false
},
"minItems": 1,
"maxItems": 3,
"description": "Exact per-room occupancy. Example: room 1 has 2 adults and room 2 has 2 adults plus children ages 4 and 2 => [{adults:2,childrenAges:[],infants:0},{adults:2,childrenAges:[4,2],infants:0}]. Array length equals rooms, and aggregate guests equal adults and childrenAges."
},
"availabilityToken": {
"type": "string",
"maxLength": 500
},
"currency": {
"type": "string",
"minLength": 3,
"maxLength": 3,
"default": "USD"
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Output Schema
{
"type": "object",
"properties": {
"propertyId": {
"type": "string"
},
"property": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"address": {
"type": [
"string",
"null"
]
},
"description": {
"type": [
"string",
"null"
]
},
"images": {
"type": "array",
"items": {
"type": "string"
}
},
"latitude": {
"type": [
"number",
"null"
]
},
"longitude": {
"type": [
"number",
"null"
]
},
"starRating": {
"type": [
"number",
"null"
]
},
"reviewScore": {
"type": [
"number",
"null"
]
},
"reviewScale": {
"type": [
"number",
"null"
]
},
"reviewCount": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
]
},
"highlights": {
"type": "array",
"items": {
"type": "string"
}
},
"amenities": {
"type": "array",
"items": {
"type": "string"
}
},
"checkinFrom": {
"type": [
"string",
"null"
]
},
"checkoutUntil": {
"type": [
"string",
"null"
]
},
"propertyType": {
"type": [
"string",
"null"
]
}
},
"required": [
"id",
"name",
"address",
"description",
"images",
"latitude",
"longitude",
"starRating",
"reviewScore",
"reviewScale",
"reviewCount",
"highlights",
"amenities",
"checkinFrom",
"checkoutUntil",
"propertyType"
],
"additionalProperties": false
},
"offers": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"propertyId": {
"type": "string"
},
"roomTypeName": {
"type": "string"
},
"name": {
"type": "string"
},
"description": {
"type": [
"string",
"null"
]
},
"images": {
"type": "array",
"items": {
"type": "string"
}
},
"beds": {
"type": [
"string",
"null"
]
},
"roomSize": {
"type": [
"string",
"null"
]
},
"occupancyMax": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
]
},
"amenities": {
"type": "array",
"items": {
"type": "string"
}
},
"breakfastIncluded": {
"type": "boolean"
},
"refundable": {
"type": [
"boolean",
"null"
]
},
"cancellationSummary": {
"type": [
"string",
"null"
]
},
"wholesale": {
"type": "object",
"properties": {
"label": {
"type": "string"
},
"url": {
"type": [
"string",
"null"
]
},
"nightly": {
"type": [
"number",
"null"
]
},
"total": {
"type": [
"number",
"null"
]
},
"maskedTotal": {
"type": [
"string",
"null"
]
},
"currency": {
"type": "string"
},
"includesTaxesAndFees": {
"type": [
"boolean",
"null"
]
}
},
"required": [
"label",
"url",
"nightly",
"total",
"maskedTotal",
"currency",
"includesTaxesAndFees"
],
"additionalProperties": false
},
"comparison": {
"anyOf": [
{
"$ref": "#/properties/offers/items/properties/wholesale"
},
{
"type": "null"
}
]
},
"savings": {
"type": [
"number",
"null"
]
},
"savingsPercent": {
"type": [
"number",
"null"
]
},
"upgradeTotal": {
"type": [
"number",
"null"
]
},
"upgradeMaskedTotal": {
"type": [
"string",
"null"
]
},
"payAtProperty": {
"type": [
"string",
"null"
]
},
"detailsUrl": {
"type": "string"
}
},
"required": [
"id",
"propertyId",
"roomTypeName",
"name",
"description",
"images",
"beds",
"roomSize",
"occupancyMax",
"amenities",
"breakfastIncluded",
"refundable",
"cancellationSummary",
"wholesale",
"comparison",
"savings",
"savingsPercent",
"upgradeTotal",
"upgradeMaskedTotal",
"payAtProperty",
"detailsUrl"
],
"additionalProperties": false
}
},
"stay": {
"type": "object",
"properties": {
"checkinDate": {
"type": "string"
},
"checkoutDate": {
"type": "string"
},
"adults": {
"type": "integer"
},
"children": {
"type": "integer"
},
"childrenAges": {
"type": "array",
"items": {
"type": "integer"
}
},
"rooms": {
"type": "integer"
},
"roomArrangements": {
"type": "array",
"items": {
"type": "object",
"properties": {
"adults": {
"type": "integer"
},
"childrenAges": {
"type": "array",
"items": {
"type": "integer"
}
},
"infants": {
"type": "integer"
}
},
"required": [
"adults",
"childrenAges",
"infants"
],
"additionalProperties": false
}
},
"currency": {
"type": "string"
}
},
"required": [
"checkinDate",
"checkoutDate",
"adults",
"children",
"childrenAges",
"rooms",
"roomArrangements",
"currency"
],
"additionalProperties": false
},
"priceDisclosure": {
"type": "string"
}
},
"required": [
"propertyId",
"property",
"offers",
"stay",
"priceDisclosure"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Community
Evidence