Rate Ranger
Watch a hotel's price after your user booked it, and email them when it drops enough to rebook.
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": {
"hotel-price-monitor": {
"url": "https://www.rateranger.io/api/mcp"
}
}
}Remote endpoints
https://www.rateranger.io/api/mcpstreamable-httpWhat it can do
Tool inventory
Tools (2)
🟡submit_hotel_booking(email, bookings, agent)
Enrol a hotel booking the traveller has ALREADY made into free price monitoring. Rate Ranger watches what the hotel charges for the same dates and emails them if it drops far enough to be worth rebooking. IMPORTANT: this monitors nothing on its own. The traveller is emailed one confirmation link, and no price is checked until they click it. Tell your user to expect that email. Do not tell them the booking is being tracked until check_hotel_booking says it is. Unconfirmed bookings are deleted after 7 days. Use this only for a booking that already exists. It does not search for or make reservations.
Input Schema
{
"type": "object",
"properties": {
"email": {
"type": "string",
"description": "The traveller's own email address. One per call. The confirmation and any later price alerts go here, so it must be an address they actually read."
},
"bookings": {
"type": "array",
"minItems": 1,
"maxItems": 10,
"items": {
"type": "object",
"required": [
"hotel_name",
"city",
"country",
"check_in_date",
"check_out_date",
"total_price"
],
"properties": {
"hotel_name": {
"type": "string",
"description": "The property as it is normally listed. Closer to the official name is better; it is matched against live hotel data."
},
"city": {
"type": "string",
"description": "City, not district or area."
},
"country": {
"type": "string",
"description": "ISO 3166-1 alpha-2, for example JP or ID. Required, and it matters more than it looks: it decides which rate source can find the hotel at all."
},
"check_in_date": {
"type": "string",
"description": "YYYY-MM-DD, in the future."
},
"check_out_date": {
"type": "string",
"description": "YYYY-MM-DD, after check-in."
},
"total_price": {
"type": "number",
"description": "The whole cost of the stay, not a nightly rate. Decimals are fine here; only the web form restricts them."
},
"currency": {
"type": "string",
"description": "ISO 4217. Defaults to USD."
},
"room_type": {
"type": "string",
"description": "Free text. Optional."
},
"num_guests": {
"type": "integer",
"description": "Defaults to 2."
},
"num_rooms": {
"type": "integer",
"description": "Defaults to 1."
},
"booking_platform": {
"type": "string",
"description": "Where they booked: booking.com, expedia, hotels.com, agoda, trip.com, priceline, direct, or other."
}
}
},
"description": "One to ten bookings for that traveller."
},
"agent": {
"type": "string",
"description": "Optional name for you, such as my-assistant/1.0. Logged for debugging only."
}
},
"required": [
"email",
"bookings"
]
}🟢check_hotel_booking(token)
Check one booking you submitted, using the read token returned at submission. Use it to find out whether the traveller has confirmed yet: `confirmed` is false until they click the emailed link, and while it is false nothing is being monitored. Check here before telling your user their booking is being tracked.
Input Schema
{
"type": "object",
"properties": {
"token": {
"type": "string",
"description": "The read_token from submit_hotel_booking."
}
},
"required": [
"token"
]
}Community
Evidence