mrbilit-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| MRBILIT_MCP_PROXY | No | HTTP proxy for every request, e.g. http://user:pass@host:port. Usually not needed in Iran. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| mb_search_busesA | Intercity buses on a date: company, terminal, times, price per seat, free seats, bus type, stops, refund penalties. A city id covers all its terminals; a terminal id only that terminal. price_toman is per seat (a party pays it once per seat). refund_penalties apply to every bus unless a bus lists its own: until_hours_before = the step applies until that many hours before departure (null = up to departure); free_cancel_minutes = free cancellation within that many minutes after purchase. Next: mb_bus_seats with a bus_id for seat numbers and women/men seats; other days: mb_bus_price_calendar. |
| mb_bus_price_calendarA | Cheapest bus seat per day for a route; days without buses (or not on sale yet) are left out. Use to find the cheapest day, then mb_search_buses for that day. Bus sales usually open about a month ahead. |
| mb_bus_seatsA | Seat map of one bus: free seat numbers, seats sold to women and to men, and a row-by-row layout. layout: one line per row from the front; each seat is its number plus a mark: none = free, w = sold to a woman, m = sold to a man, x = not sold online; '|' = the aisle (seats on the same side of it are neighbours), '--' = no seat, 'DR' = driver. Rule text (who may sit where) is in seat_rules. price_toman is null for most buses: use the search price. bus_id expires: take it from a fresh search. |
| mb_search_taxisA | Private door-to-door intercity taxis (whole car, up to 3 passengers) for a date, one offer per pick-up slot. price_toman is for the whole car, not per person. |
| mb_find_placeA | Turn a city, airport, station or hotel name into the code a search takes. flight: |
| mb_companiesA | List airlines (IATA code), rail operators or bus companies (id) with Persian and English names. Use to name a code seen in results (airline 'W5', bus company 4) or to find an airline code
for the |
| mb_noticesA | Notices MrBilit currently shows on its pages (disruptions, rule changes, payment options), for a service or route. Route codes build the site path the notice rules match against: /flights/THR-MHD, /trains/tehran-mashhad, /hotel/mashhad. search_mode limits a flight notice to domestic or international searches; site_wide_active counts every active notice, not only these. Use before recommending a trip, alongside the search tools. |
| mb_helpA | Search MrBilit's official rules, FAQ and help-center guides; returns the best matching passages. Use for refund and cancellation rules, ID and baggage rules, how auto-reserve works, how to request a change, etc. Passages are plain text with the section they come from. Rules of one fare are in mb_flight_fare_details / mb_search_trains / mb_search_buses instead. |
| mb_travel_guideA | MrBilit's guide for a route or city (summary, FAQ, article) and matching travel-magazine posts. Route guide: service + origin + destination (flight IATA codes, train/bus English slugs such as 'tehran'; hotel: destination city slug only). Magazine: query. Editorial text: prices or rules quoted in it can be out of date; use the search tools for live prices. |
| mb_search_flightsA | Search flights for a date: every bookable flight with price, seats left, baggage and times. price_toman is one adult's fare (taxes included); total_toman is the whole party (adult,
child and infant fares). Fares without enough seats for the party are dropped by the site.
Domestic round trips come back as two lists ( |
| mb_flight_price_calendarA | Cheapest one-adult fare per day for a route over a date range, in one call. Use to find the cheapest day to fly, then call mb_search_flights for that day. The values are the site's cached minimums and can differ from a live search; days with no known fare are left out (no flights, sold out or not cached). |
| mb_flight_fare_detailsA | Every fare of one flight with refund penalties, confirmed baggage, fare rules, notes and per-passenger prices. Re-runs the search of mb_search_flights (same route, date and party) and returns the chosen flight. baggage_checked_with_airline is true when the site re-checked the baggage with the airline (false = the search value, usually right). refund_penalties: penalty percent of the ticket price per time window before departure, refund = paid x (100 - penalty_pct) / 100; penalty_text when there is no percent (e.g. the supplier's terms). |
| mb_search_hotelsA | Hotels and stays with a free room in a city for the dates, with the cheapest room price for the whole stay. price_toman is the cheapest room for all nights (one room, after discount); per_night_toman divides it by the nights; cheapest_room_sleeps is how many that room sleeps (often 1). Guest count does not change prices: pick a room that fits with mb_hotel_rooms(guests=...). Sold-out hotels are not listed (mb_city_hotels lists every hotel). Next: mb_hotel (reviews, location), mb_hotel_rooms (every room and exact price), mb_hotel_calendar (cheapest nights). |
| mb_hotelA | One hotel: stars, guest rating (0-5) and latest reviews, location, landmarks, check-in rules, amenities, FAQ. The site shows ratings x2 out of 10. landmarks: distance in km (drive minutes). For room
prices on dates call mb_hotel_rooms with |
| mb_hotel_roomsA | Every room of a hotel with its exact price for the dates: whole stay, per night, rooms left, meals. price_toman is the whole stay for one room after discount (prices do not depend on the guest count; choose rooms whose sleeps fits, and add up several rooms for a group). rooms_left 0 = full. cancellation is the hotel's refund rule. Empty rooms list = nothing free for these dates (try mb_hotel_calendar). |
| mb_hotel_calendarA | Cheapest one-night room price per night from today, up to about 48 days (often fewer). Use to find the cheapest or the next free nights, then mb_hotel_rooms for exact prices. Nights missing inside the range have no free room; nights after the last one listed are not loaded yet (not the same as sold out). |
| mb_city_hotelsA | Every listed hotel of a city, sold out ones included, with stars, rating and address; no prices. Use to browse or find a hotel by stars or type regardless of dates; filters apply to one
page of 90 hotels at a time, so check |
| mb_search_trainsA | Trains between two stations on a date with every class (wagon), its price per adult and free seats. Seat counts are fresh (not cached). price_toman is per adult; for children, infants or a whole compartment call mb_train_price with the class_id. refund_penalties apply to every class unless a class lists its own. Stops and times: mb_train_stops. No seats left: try mb_train_price_calendar for other days or mb_alternative_routes. A round trip is two calls: the return leg with outbound_class_id. |
| mb_train_price_calendarA | Cheapest train ticket per day (one adult) for a route, only days with free seats. Use to find the cheapest or the next bookable day, then mb_search_trains for that day. Train sales open only about 18 days ahead, so later days are missing. |
| mb_train_priceA | Exact price of one train class for a party: per adult, child, infant, foreigner and empty berth, and the total. class_id comes from mb_search_trains (it expires with the search). A sold-out class still returns a price here, so check seats_left in the search first. breakdown is the adult fare's parts (they do not add up exactly to the price; the price is what is paid). |
| mb_train_stopsA | Every station a train stops at, in order, with the date and local time at each. Pass a class_id from mb_search_trains (sold-out classes work too; never a train number). The first stop can be before your station (a Tehran-Mashhad train may start in Qom). |
| mb_alternative_routesA | Alternatives when direct trains are full or dear: trips with one change, and nearby train, bus and flight routes. with_one_change: up to 7 journeys with one change, any mix of train and bus (bus+bus too; price per adult, total duration, wait at the change); a direct bus in nearby_bus_routes can be cheaper and faster. nearby_*: routes from or to stations, bus cities and airports near the two stations, with the cheapest price where known (classes_listed is the API's raw count, not the bookable classes); pass their ids to mb_search_trains, mb_search_buses or mb_search_flights. Seat counts here can be cached: confirm with a search. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 22 tools
Tools are mostly distinct by service and action (search, calendar, details, seats), and descriptions explicitly cross-reference next steps. However, some overlap exists among hotel price tools (mb_search_hotels vs mb_hotel_rooms vs mb_hotel_calendar) and between search and price-calendar tools, which could cause occasional misselection.
All tools use a consistent mb_ prefix and snake_case, but the naming pattern mixes verb_noun (mb_search_flights, mb_find_place) with noun phrases (mb_bus_price_calendar, mb_train_stops, mb_hotel_rooms). The convention is readable but not a predictable verb_noun pattern throughout.
22 tools cover five transport/accommodation services plus support utilities, so each service gets search, calendar, and detail tools. This is at the upper end of reasonable; some consolidation (e.g., fewer calendars) could reduce the surface without losing capability.
The search/planning surface is broad: flights, trains, buses, taxis, hotels, alternatives, places, companies, notices, help, and guides are covered. However, no tool performs booking, reservation, or order management, leaving a notable lifecycle gap for a travel-booking domain.