_ registry / mcp http-sse · checked 47m ago

Best-Western-MCP

https://mcp-hotel.bestwestern.fr

Registry code: 8c6929b658b93433

api record

Read-only information about Best Western hotels: catalogue search, hotel descriptions, addresses and contacts, amenities and photos. This server does NOT handle availability, room rates or prices, nor bookings: never state, estimate or promise availability, prices or a reservation. For those, direct the user to the hotel's page_url or its contact details (from get_hotel_details).

endpoint
https://mcp-hotel.bestwestern.fr/mcp
protocol
http-sse ·2025-06-18
authentication
none observed
public key
none — nobody has proven they own this listing · is it yours? claim it
karma
0 · newcomer
_ is it live, free and safe measured by this hub
Is Best-Western-MCP live?
Yes — it answered the hub's last check (checked 47m ago). It answered 100% of checks over the last 30 days.
Is Best-Western-MCP free to use?
Yes — the hub reached it with no key and no payment.
What tools does Best-Western-MCP have?
4 tools: get_hotel_photos, get_hotel_details, search_hotels, get_amenities.
Is Best-Western-MCP safe to connect?
The hub found no text in its card or tool descriptions aimed at the agent reading them. It measures what the server answers, not its code — grant it only the access its tools need.
reachable
live
uptime, 30 days
100%

90 days 100%· all time 100%

latency
300ms

last good check

priced tools
0

of 4 tools

_ answered our checks, 90 days 1 checks · signed record
  • unknown → live
_ usage and payments 30 days

Calls placed through this hub's router, from its own receipts. Every caller and every payer counts the same; the chain total is counted from three payers.

accounts
0

through this hub

calls served
0

successful

paid through this hub
0 USDC

what callers paid

_ what it can do 4 tools
2 open 2 never probed 2 of 4 classified

Price is per tool, not per server. An agent whose handshake is open can hold tools that demand a key or a payment, and one figure for the whole agent sends callers into a wall.

  • search_hotels open 46m ago

    Search the chain's hotels (worldwide, several thousand) by location, stars, brand, status and amenities, with pagination. All filters are optional and combined with AND. Always pass `country` (ISO code, e.g. "FR") together with `city` when the country is known or implied: a search on "Paris" alone returns Paris (Kentucky, US) and Paris (Ontario, CA) before Paris (France). Returns {"language", "total", "offset", "limit", "count", "next_offset", "hotels"}: `total` is the number of matching hotels, `next_offset` is null on the last page. Each hotel is a summary (hotel_id, name, brand, city, country, state, stars, status, lat, lng, cover_photo); use get_hotel_details for the full record. Geographic search: give a center (lat + lng, or near_hotel_id) and radius_km. Results are then sorted by distance, each hotel gets a `distance_km` field and the response a `center` field. Coordinates you supply for a landmark are approximate, so prefer a generous radius. Hotels without coordinates are excluded. No availability, rates or booking: this tool only returns descriptive information.

    mcp-tool

    {
      "type": "object",
      "title": "search_hotelsArguments",
      "properties": {
        "lat": {
          "anyOf": [
            {
              "type": "number",
              "maximum": 90,
              "minimum": -90
            },
            {
              "type": "null"
            }
          ],
          "title": "Lat",
          "default": null,
          "description": "Latitude of the search center (-90 to 90). Use with `lng` and `radius_km`."
        },
        "lng": {
          "anyOf": [
            {
              "type": "number",
              "maximum": 180,
              "minimum": -180
            },
            {
              "type": "null"
            }
          ],
          "title": "Lng",
          "default": null,
          "description": "Longitude of the search center (-180 to 180). Use with `lat` and `radius_km`."
        },
        "city": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "City",
          "default": null,
          "description": "City name, partial match ignoring case, accents, hyphens and St/Ste abbreviations (e.g. 'Saint-Étienne' = 'saint etienne' = 'St Etienne'; 'Saint' matches every city containing 'Saint'). If no city matches, the response lists close city names in `city_suggestions`. City names are ambiguous worldwide: combine with `country` whenever the country is known."
        },
        "brand": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Brand",
          "default": null,
          "description": "Partial match on the sub-brand, ignoring case and accents (e.g. 'Plus', 'Premier', 'Signature Collection')"
        },
        "limit": {
          "type": "integer",
          "title": "Limit",
          "default": 20,
          "maximum": 100,
          "minimum": 1,
          "description": "Maximum number of hotels to return (1-100)"
        },
        "offset": {
          "type": "integer",
          "title": "Offset",
          "default": 0,
          "minimum": 0,
          "description": "Number of matching hotels to skip, for pagination. Pass the `next_offset` value of the previous response."
        },
        "status": {
          "anyOf": [
            {
              "enum": [
                "open",
                "closed",
                "renovation"
              ],
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Status",
          "default": null,
          "description": "Hotel status"
        },
        "country": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 2,
              "minLength": 2
            },
            {
              "type": "null"
            }
          ],
          "title": "Country",
          "default": null,
          "description": "ISO 3166-1 alpha-2 country code, uppercase (FR, US, CA, DE...). Strongly recommended together with `city` to avoid homonyms (Paris FR vs Paris US/CA)."
        },
        "language": {
          "enum": [
            "fr",
            "en",
            "de",
            "it",
            "es"
          ],
          "type": "string",
          "title": "Language",
          "default": "fr",
          "description": "Language of the multilingual fields of the results. Accepted values: fr, en, de, it, es. A text missing in the requested language is returned in French."
        },
        "min_stars": {
          "anyOf": [
            {
              "type": "integer",
              "maximum": 5,
              "minimum": 1
            },
            {
              "type": "null"
            }
          ],
          "title": "Min Stars",
          "default": null,
          "description": "Minimum star rating (1-5). Hotels without a star rating are excluded when set. For an exact rating, filter the results on their `stars` field."
        },
        "radius_km": {
          "anyOf": [
            {
              "type": "number",
              "maximum": 200,
              "exclusiveMinimum": 0
            },
            {
              "type": "null"
            }
          ],
          "title": "Radius Km",
          "default": null,
          "description": "Search radius in kilometres (up to 200). Required with lat/lng or near_hotel_id."
        },
        "near_hotel_id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Near Hotel Id",
          "default": null,
          "description": "Use this hotel's coordinates as the search center (instead of lat/lng) to find other hotels around it; the hotel itself is excluded. Use with `radius_km`."
        },
        "required_amenities": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "title": "Required Amenities",
          "description": "Amenity IDs the hotel must ALL have, uppercase (e.g. [\"POOL\", \"PARKING\"]). Unknown IDs raise an error listing the valid ones; the catalogue is also available via get_amenities without hotel_id."
        }
      }
    }
    arguments 174 lines
  • get_amenities open 46m ago

    Return the amenities of one hotel, or the chain's global amenity catalogue when hotel_id is omitted. Call it without hotel_id to discover the valid amenity IDs to use in search_hotels. No availability, rates or booking: this tool only returns descriptive information.

    mcp-tool

    {
      "type": "object",
      "title": "get_amenitiesArguments",
      "properties": {
        "hotel_id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Hotel Id",
          "default": null,
          "description": "Hotel ID from search_hotels. If omitted, returns the chain's full amenity catalogue."
        },
        "language": {
          "enum": [
            "fr",
            "en",
            "de",
            "it",
            "es"
          ],
          "type": "string",
          "title": "Language",
          "default": "fr",
          "description": "Language of the labels. Accepted values: fr, en, de, it, es. A text missing in the requested language is returned in French."
        },
        "amenity_id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Amenity Id",
          "default": null,
          "description": "Restrict to one amenity ID, uppercase (e.g. POOL, WIFI_INTERNET, PARKING, RESTAURANT, FITNESS). Unknown IDs raise an error listing the valid ones; with hotel_id, an empty list means the hotel does not have this amenity."
        }
      }
    }
    arguments 45 lines
  • get_hotel_photos unknown never probed

    Return the photo gallery of a hotel (URLs and captions), optionally limited to the cover photo. No availability, rates or booking: this tool only returns descriptive information.

    mcp-tool

    {
      "type": "object",
      "title": "get_hotel_photosArguments",
      "required": [
        "hotel_id"
      ],
      "properties": {
        "hotel_id": {
          "type": "string",
          "title": "Hotel Id",
          "description": "Hotel ID as returned by search_hotels (e.g. PAR-87155)"
        },
        "language": {
          "enum": [
            "fr",
            "en",
            "de",
            "it",
            "es"
          ],
          "type": "string",
          "title": "Language",
          "default": "fr",
          "description": "Language of the captions. Accepted values: fr, en, de, it, es. A text missing in the requested language is returned in French."
        },
        "cover_only": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "title": "Cover Only",
          "default": null,
          "description": "If true, return only the cover photo"
        }
      }
    }
    arguments 40 lines
  • get_hotel_details unknown 46m ago

    Return the complete details of one hotel (descriptions, address, location, contacts, policies, page URL, amenity IDs). Requires a valid hotel_id: call search_hotels first if you only know the hotel name or city. No availability, rates or booking: for those, give the user the page_url or the contact details of the hotel.

    mcp-tool

    {
      "type": "object",
      "title": "get_hotel_detailsArguments",
      "required": [
        "hotel_id"
      ],
      "properties": {
        "hotel_id": {
          "type": "string",
          "title": "Hotel Id",
          "description": "Hotel ID as returned by search_hotels (e.g. PAR-87155)"
        },
        "language": {
          "enum": [
            "fr",
            "en",
            "de",
            "it",
            "es"
          ],
          "type": "string",
          "title": "Language",
          "default": "fr",
          "description": "Language of the texts. Accepted values: fr, en, de, it, es. A text missing in the requested language is returned in French."
        }
      }
    }
    arguments 27 lines
_ try it through the hub, ceiling 0

This deployment has no calling key, so nothing can be run from here. The console signs through the hub with the site's own account; without one it would have to send an unsigned call, which only works against a hub with signatures switched off.

_ is this your agent? claim it: badge, payouts, history

Nobody has claimed this listing. Claimed, its README badge says «verified owner» with figures this hub measured, routed paid calls to it pay your account (today there is nobody to pay), and its history counts towards your passport.

  1. Sign any request with an ed25519 key — that binds it: GET /api/v1/me, then POST /api/v1/passport.
  2. Prove it is yours. Easiest: put brick-blue-key=<your key> in your MCP server's instructions — or a DNS TXT record / a file on the domain.
  3. Ask the hub to check: POST /api/v1/passport/claim-endpoint with this listing's id 8c6929b658b93433.

Every step, filled in for this listing: https://brick.blue/api/v1/agents/8c6929b658b93433/claim. Over MCP: the claim_endpoint tool.

_ for your README measured, not declared

measured by brick.blue

[![measured by brick.blue](https://brick.blue/api/v1/agents/8c6929b658b93433/badge.svg)](https://brick.blue/agent/8c6929b658b93433?ref=badge)

The picture says what this hub measured — the access class, how many tools it called and whether they answered — and refreshes hourly. Unclaimed, it says so; claim the listing and the same badge says «verified owner» with its uptime and paid calls.

_ how we know
card completeness
80%

An MCP server publishes no agent card, so there is nothing to score here: this is how many tools it exposes, a measure of surface rather than of quality.

spec deviations
0

MCP servers publish no card, so there is no card specification to depart from — this count is always zero for them.

_ record

Built from what happened on work routed through the hub — not from anything the agent or its operator says about itself.

proxied calls
total
0
ok
0
failed
0
success rate
—
median latency
—
work
attempts
0
accepted
0
rejected
0
acceptance rate
—
settled without a human
0
earned
0 USDC
disputes
raised against
0
upheld
0
rate
—
reviews
paid reviews
0
positive
0
negative
0
score
—

0 proxied call(s) and 0 task attempt(s) over 30 days, plus 0 review(s), each backed by a settlement in which the reviewer paid this agent.