VibeBooking

Find and price independent hotels and inns in Japan, then book on the hotel's own site.

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
100%
Naming quality
92%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~1,405Tokens (tool definitions)
~1.4 KBTypical response size
Moderate attention impact (1.10% of 128k context)

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": {
    "vibebook": {
      "url": "https://vibebook.vibebooking.ai/mcp"
    }
  }
}

Remote endpoints

https://vibebook.vibebooking.ai/mcpstreamable-http

What it can do

Tool inventory

Tools (5)

🟒 Read-only🟑 WriteπŸ”΄ Deleteβšͺ Unknown
🟒book_link(checkin, currency, guests, hotel, nights, ...)

The link that hands the traveller to the hotel's own booking page for a stay, optionally for one offer from get_rates (its id, and total.minor and total.currency as get_rates gave them, so the price is re-checked when they click). Nothing is booked, held or paid here: the traveller books and pays on the hotel's page. Never call it a confirmed booking.

Input Schema

{
  "type": "object",
  "properties": {
    "checkin": {
      "description": "Check-in date, YYYY-MM-DD.",
      "type": "string"
    },
    "currency": {
      "description": "With offer: total.currency from get_rates, such as JPY.",
      "type": "string"
    },
    "guests": {
      "description": "Number of adult guests.",
      "type": "integer"
    },
    "hotel": {
      "description": "The hotel id from search_hotels or resolve_hotel, or the hotel's website domain.",
      "type": "string"
    },
    "nights": {
      "description": "Number of nights, 1 or more.",
      "type": "integer"
    },
    "offer": {
      "description": "The offer's id from get_rates; leave out to open the hotel's booking page for the stay.",
      "type": "string"
    },
    "total": {
      "description": "With offer: total.minor from get_rates, the whole-stay total in minor units.",
      "type": "integer"
    }
  },
  "required": [
    "hotel",
    "checkin",
    "nights",
    "guests"
  ],
  "additionalProperties": false
}
🟒get_hotel(hotel, room)

A VibeBooking hotel's published facts, with no dates needed: name, address, check-in and cancellation terms, images and its room types (rooms[].ref, name, max_occupancy, size_m2 and each room's own facts). With room, a ref from rooms[].ref, one room type's page instead. hotel is the id from search_hotels or resolve_hotel, or the hotel's domain. For a hotel that is not ours the answer is its own site's address.

Input Schema

{
  "type": "object",
  "properties": {
    "hotel": {
      "description": "The hotel id from search_hotels or resolve_hotel, or the hotel's website domain.",
      "type": "string"
    },
    "room": {
      "description": "A room type's ref, from get_hotel's rooms[].ref; leave out for the whole hotel.",
      "type": "string"
    }
  },
  "required": [
    "hotel"
  ],
  "additionalProperties": false
}
🟒get_rates(checkin, guests, hotel, nights)

Live rates for a stay at a VibeBooking hotel: each room and plan's whole-stay total with its currency, tax and cancellation terms, when the rate was read (observed_at), and book: the link to give the traveller for the cheapest offer. For another offer, call book_link with its id and total. hotel is the id from search_hotels or resolve_hotel, or the hotel's domain. For a hotel that is not ours there are no rates here: the answer is its own site's address.

Input Schema

{
  "type": "object",
  "properties": {
    "checkin": {
      "description": "Check-in date, YYYY-MM-DD.",
      "type": "string"
    },
    "guests": {
      "description": "Number of adult guests.",
      "type": "integer"
    },
    "hotel": {
      "description": "The hotel id from search_hotels or resolve_hotel, or the hotel's website domain.",
      "type": "string"
    },
    "nights": {
      "description": "Number of nights, 1 or more.",
      "type": "integer"
    }
  },
  "required": [
    "hotel",
    "checkin",
    "nights",
    "guests"
  ],
  "additionalProperties": false
}
🟒resolve_hotel(domain_or_name)

Call this whenever the user gives you, or your web search finds, a hotel's website. Pass its domain or URL. For a VibeBooking hotel it answers the hotel id and its agent page, which get_hotel, get_rates and book_link take; for any other hotel, its own site to send the traveller to and, when we have probed it, its agent-readiness level and the surfaces an agent can use there. A hotel name alone cannot be resolved: find its website first.

Input Schema

{
  "type": "object",
  "properties": {
    "domain_or_name": {
      "description": "The hotel's website domain or URL, such as inn.example.jp. A name alone is not enough.",
      "type": "string"
    }
  },
  "required": [
    "domain_or_name"
  ],
  "additionalProperties": false
}
🟒search_hotels(area, checkin, guests, min_level, nights)

Search VibeBooking's registry of independent hotels and inns in Japan by destination area: a city, ward, district or station name as it appears in a hotel's address (ζ—₯本θͺž or English, e.g. δΊ¬ιƒ½εΈ‚ζ±ε±±εŒΊ, Gion, ζ²³εŽŸη”Ί). This is where the traveller wants to stay, not where they are. The registry is small and growing: when it has no match, use your own web search to find hotels' websites, then call resolve_hotel with each domain. Each hit carries the hotel id to pass to get_hotel (its facts and room types) or get_rates. other_hotels lists hotels in the same prefecture that are not VibeBooking's, from our agent-readiness index: each one's own site and how far an agent can get there (level 0 invisible, 1 discoverable, 2 priceable, 3 machine-readable, 4 transactable), at min_level or above. There are no rates for them here, but they are real places to stay: list them to the traveller by their site, beside any hit, so they can check dates and book there.

Input Schema

{
  "type": "object",
  "properties": {
    "area": {
      "description": "Where the traveller wants to stay: a city, ward, district or station name.",
      "type": "string"
    },
    "checkin": {
      "description": "Check-in date, YYYY-MM-DD.",
      "type": "string"
    },
    "guests": {
      "description": "Number of adult guests.",
      "type": "integer"
    },
    "min_level": {
      "description": "Lowest agent-readiness level to list in other_hotels, 0 to 4; default 1.",
      "type": "integer"
    },
    "nights": {
      "description": "Number of nights, 1 or more.",
      "type": "integer"
    }
  },
  "required": [
    "area"
  ],
  "additionalProperties": false
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded5 tools