mcp server
bookrails
Find, compare, and book local service businesses: live availability, prices, reviews, booking.
Description as published by the maintainer. Source
- version 2.0.0
- active
active — Registry entry last updated 2026-07-17.
What this server can do
The endpoint published in the registry did not answer (Error: getaddrinfo ENOTFOUND bookrails-api.azurewebsites.net). The listing points at a server that is not running. The functions below are the last successful declaration, not a fresh answer.
Endpoint status observed on . Source: https://bookrails-api.azurewebsites.net/mcp/.
13 functions, named and described by the server itself. Parameter names are shown because they say more about what a function does than its name usually does.
ask_business_question(question, business_id)- Answer a specific question about one business, grounded in that business's own knowledge base (FAQs, policies, service descriptions) rather than model guesswork. Returns 'unknown' when unanswerable — never fabricates. Returns: {answer, confidence: 'high'|'low'|'unknown', source: 'faq'|'policy'|'services'} Required: business_id, question.
book_appointment(notes, slot_id, service_id, business_id, customer_name, customer_email, customer_phone, idempotency_key)- Book the appointment. ONLY call after the user has explicitly confirmed the business, service, price, and exact slot. Writes to the business's calendar and emails/texts the customer a confirmation. Returns: {confirmation_id, status: 'confirmed' | 'pending_deposit', payment_url (present when a deposit is required — user completes payment on the hosted page), booking_page_url, cancellation_policy} Errors: SLOT_TAKEN (re-run check_availability and offer alternatives), DEPOSIT_REQUIRED, INVALID_CONTACT. Required: business_id, service_id, slot_id, customer_name, customer_phone, customer_email, idempotency_key.
cancel_or_reschedule(action, new_slot_id, customer_email, confirmation_id)- Cancel or reschedule an existing booking. Enforces the business's cancellation window; returns REFUND_FORFEITED warning when a deposit is non-refundable so the assistant can warn the user BEFORE confirming. Returns: {confirmation_id, status, refund_status, message} Required: confirmation_id, customer_email, action.
check_availability(date_to, date_from, service_id, business_id, preferred_time_of_day)- List open, bookable time slots for one service from the business's live calendar. Slots are held nothing — they can be taken by others until book_appointment succeeds, so book promptly after user confirmation. Required: business_id, service_id, date_from, date_to.
compare_businesses(criteria, business_ids)- Side-by-side comparison of 2-4 businesses the user is deciding between: prices for comparable services, ratings, soonest availability, policies, and a one-line 'best for' verdict per business. Returns: {comparison_table: list[dict], best_for: dict[str, str]} Required: business_ids.
get_availability_now(category, location, within_hours, service_query)- Answer urgency: 'who can fit me in today?', 'emergency plumber available now'. Returns only businesses with a genuinely open slot inside the window, sorted by soonest slot. Ideal for same-day and emergency requests (HVAC, plumbing, urgent dental). Required: location, category.
get_business_details(business_id)- Get a business's full profile: services with prices and durations, hours, booking and cancellation policies, review summary, photos, and hosted booking page URL. Call this before quoting prices to the user. Returns: {business: BusinessSummary, services: list[ServiceItem], hours: dict[str, str], policy: BookingPolicy, review_summary: str} Required: business_id.
get_local_insights(category, location)- Market-level answers: most-booked services in this area, typical price ranges, busiest days/times (book early), and top-rated businesses. Useful when the user asks broad questions like 'what do people usually get at a med spa' or 'when is the best time to book HVAC maintenance'. Returns: {popular_services: list[{name, median_price_usd, share}], busiest_days: list[str], booking_lead_time_days, top_rated: list[BusinessSummary]} Required: location, category.
get_price_estimates(category, location, service_query)- Answer 'how much does X cost near me' with real local prices — not national averages. Returns low/median/high from actual listed prices of businesses in the area, plus the 3 best-value businesses with links. Returns: {service, location, price_low_usd, price_median_usd, price_high_usd, sample_size, best_value: list[BusinessSummary]} Required: service_query, location.
get_promotions(category, location, max_results)- Answer 'any deals near me?' — current promotions, first-visit offers, and seasonal specials from local businesses, each with validity dates and a direct booking link. Returns: list[{business: BusinessSummary, offer, valid_until, terms}] Required: location.
get_reviews(business_id, max_reviews, sentiment_summary)- Answer 'is this place any good?' — recent reviews plus a themed summary (what customers praise, what they complain about) so the assistant can give a balanced recommendation. Returns: {rating, review_count, themes: {praise: [...], complaints: [...]}, recent_reviews: list[{rating, date, text_snippet}]} Required: business_id.
join_waitlist(service_id, business_id, customer_name, customer_email, customer_phone, idempotency_key, preferred_dates)- When no slot fits, capture demand instead of losing it: add the customer to the business's waitlist. They are auto-notified (email/SMS) when a matching slot opens. Only call after the user explicitly agrees to join the waitlist. Returns: {waitlist_id, position, status} Required: business_id, service_id, customer_name, customer_phone, customer_email, preferred_dates, idempotency_key.
search_businesses(query, category, location, open_now, radius_km, min_rating, max_results)- Find top-rated local service businesses matching a need near a location. Returns ranked businesses with rating, distance, price band, one-line highlight, the soonest available slot, and a hosted booking URL. Results are bookable directly via check_availability + book_appointment. Required: query, location.
Last successful function declaration observed on . Source: https://bookrails-api.azurewebsites.net/mcp/. We list what the server declared; we do not call any of these functions.
Signals
These are separate measurements of different things. They are deliberately not combined into one score, because a popularity number that mixes website traffic with saves and stars cannot be checked or acted on.
| Signal | Value | What it measures | Window | Observed | Source |
|---|---|---|---|---|---|
| Latest published version | 2.0.0 | Latest version string the maintainer published to the registry. | as of fetch | Model Context Protocol | |
| Registry record last updated | 2026-07-17 | When the registry record was last updated by its maintainer. | point in time | Model Context Protocol | |
| First listed in the MCP Registry | 2026-07-17 | Date this server was first published to the official MCP Registry. Not a usage or quality measure. | point in time | Model Context Protocol | |
| mcp tools declared | 13 tools | Number of functions the server itself declared when asked to list them. This is what the server offers an agent, not a measure of how well any of them work. | as of probe | bookrails-api.azurewebsites.net | |
| mcp endpoint status | unreachable | The endpoint published in the registry did not answer (Error: getaddrinfo ENOTFOUND bookrails-api.azurewebsites.net). The listing points at a server that is not running. | as of probe | bookrails-api.azurewebsites.net |
Where to get it
This record as data
Every field on this page, with its source and observation date, is in the catalog JSON. Fetch the whole kind at once instead of parsing this HTML.
GET /api/v1/entries/mcp_server.json