ZBS Index What actually exists in applied AI, with the source next to it

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

Sources

  1. Tools declared by the MCP server at https://bookrails-api.azurewebsites.net/mcp/ — bookrails-api.azurewebsites.net, observed , trust tier 4.
  2. Official MCP Registry — Model Context Protocol, observed , trust tier 1.