Bronjoy Marketplace
Measured conclusion: Deep-tested. L2 outcome: tools_ok.
Search and book appointments at service businesses across Uzbekistan.
| Author | com.bronjoy |
|---|---|
| Access | remote |
| Publisher key required | No |
| Measured state | Deep-tested |
| L1 liveness | alive |
| L1 latency | 493 ms |
| Last measured | 2026-10-26 |
Add to your agent
Copy this into your MCP client config:
{
"mcpServers": {
"Bronjoy Marketplace": {
"url": "https://api.bronjoy.com/api/mcp",
"transport": "streamable-http"
}
}
}
Measured tools (6)
search-venuesread-onlySearch Bronjoy's catalogue of service businesses in Uzbekistan by keyword, city and category. WHEN TO USE: the user is looking for a place ("barbershop in Tashkent", "dentist near Chilanzar", "car wash open now"). Start here — every other tool takes the `slug` this returns. Results are ranked, compact, and include `is_bookable`, which decides what you can offer next: bookable venues can go through check-availability → request-booking-code → book-appointment, the rest can only be described and phoned. Names and addresses come back in Russian or Uzbek; quote them as-is.
Parameters:
city— string — City slug or name, e.g. "tashkent", "samarkand", "Бухара".limit— integer — How many venues to return, 1-20. Default 5 — prefer a small number and refine.query— string — Free text: a business name, a service ("стрижка", "haircut"), or a landmark. Matches across Latin and Cyrillic.category— string — Category slug, e.g. "barber", "dental", "car-wash". Use the slug from a previous result when narrowing.bookable_only— boolean — Return only venues that can take an online booking. Set this when the user wants to book rather than to be told about places — most of the catalogue cannot be booked, and without this the bookable ones are buried.
Hints: read-only yes · destructive not declared · idempotent yes · open-world yes
get-venueread-onlyFull public profile for one venue: address, opening hours, what it offers, amenities, payment methods, website and whether it can be booked online. WHEN TO USE: after search-venues, when the user asks anything about a specific place — "are they open on Sunday", "do they do colouring", "where exactly is it", "how much". This is the right tool for the ~99% of the catalogue that is not bookable: it carries everything needed to answer a question or send the user there in person. The phone number is masked here — call reveal-phone only when the user actually wants to ring them.
Parameters:
slug(required) — string — The venue slug from search-venues, e.g. "demo-barber".
Hints: read-only yes · destructive not declared · idempotent yes · open-world yes
reveal-phoneread-onlyThe venue's real phone number. WHEN TO USE: the user wants to call — typically because the venue is not bookable online, or they want to ask something no profile field answers. Deliberately a separate call from get-venue, which returns a masked number. Reveals are rate limited per caller: request them one at a time, for a venue the user has actually chosen, never in bulk across search results.
Parameters:
slug(required) — string — The venue slug from search-venues.
Hints: read-only yes · destructive not declared · idempotent yes · open-world yes
check-availabilityread-onlyBookable services and open time slots for a venue on a given date. WHEN TO USE: the user has picked a venue with `is_bookable: true` and wants a time. Call without `service_id` first to see the services and their prices, then again with one to get its slots. Returns an explicit refusal for venues that are not set up for online booking — do not try to work around it, offer the phone number instead. Slot times are in the venue's timezone and are exactly the values book-appointment expects.
Parameters:
slug(required) — string — The venue slug from search-venues.date(required) — string — Day to check, Y-m-d. Today or later, at most 30 days ahead.service_id— integer — Which service to check. Omit on the first call to list the services with their ids, durations and prices.
Hints: read-only yes · destructive not declared · idempotent yes · open-world yes
request-booking-codeSend the user a 6-digit confirmation code, which book-appointment then requires. WHEN TO USE: the user has chosen a venue, a service and a slot, and has given you their email address or phone number. Call this before book-appointment — a booking without a code is rejected. YOU DO NOT RECEIVE THE CODE. It goes to the user's own inbox or phone; ask them to read it back to you. That is the point: it proves the contact belongs to the person booking, so a business does not get appointments from numbers nobody answers. The code lasts 5 minutes and covers one booking. Only a few codes may be sent to one contact — do not loop.
Parameters:
slug(required) — string — The venue slug the user is booking.email— string — The user's email address. Give this or phone.phone— string — The user's phone in international format, e.g. +998901234567. Preferred when the venue will need to call them.
Hints: read-only no · destructive no · idempotent no · open-world yes
book-appointmentBook a slot, using the code the user received from request-booking-code. WHEN TO USE: last step, once the user has confirmed the venue, service and exact time AND has read you their 6-digit code. Requires the same contact the code was sent to. The booking is created as "pending": the business still confirms it, so tell the user it is requested and they will hear back — not that it is guaranteed. If the venue takes prepayment, the response carries a link the user must open to pay; the slot is not held indefinitely. Only works for venues with `is_bookable: true`.
Parameters:
slug(required) — string — The venue slug.service_id(required) — integer — Service id from check-availability.start_time(required) — string — Exact `start_time` value from a check-availability slot. Do not invent or round times.name(required) — string — The user's name, as the business should see it.verification_code(required) — string — The 6-digit code the user received. Ask them for it — you never see it yourself.email— string — The email the code was sent to, if that is the channel used.notes— string — Anything the business should know, max 500 characters.phone— string — The phone the code was sent to, if that is the channel used.
Hints: read-only no · destructive no · idempotent no · open-world yes
Measured by MCPYP probing. Untested fields are omitted, never estimated. Listing is always free; MCPYP never proxies calls or stores user tokens.