Bronjoy Marketplace
Search and book appointments at service businesses across Uzbekistan.
使うべきか
品質と安全性
検出事項(6)
- LOWsearch-venues 内
- LOWget-venue 内
- LOWreveal-phone 内
- LOWcheck-availability 内
- LOWrequest-booking-code 内
- LOWbook-appointment 内
ツール定義とプロトコルへの準拠に関する自動分析に基づいています。
コンテキストコスト
これは、サーバーのツールがモデルのコンテキストに読み込まれるたびに消費されるおおよそのトークン数です。数が多いほど、ほかのタスクに使える注意が減ります。
インストール
ワンクリックインストール
これを `claude_desktop_config.json` ファイルに追加してください:
{
"mcpServers": {
"marketplace": {
"url": "https://api.bronjoy.com/api/mcp"
}
}
}リモートエンドポイント
https://api.bronjoy.com/api/mcpstreamable-httpできること
ツール一覧
ツール(6)
🟢search-venues(query, city, category, bookable_only, limit)
Search 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.
入力スキーマ
{
"type": "object",
"properties": {
"query": {
"description": "Free text: a business name, a service (\"стрижка\", \"haircut\"), or a landmark. Matches across Latin and Cyrillic.",
"type": "string"
},
"city": {
"description": "City slug or name, e.g. \"tashkent\", \"samarkand\", \"Бухара\".",
"type": "string"
},
"category": {
"description": "Category slug, e.g. \"barber\", \"dental\", \"car-wash\". Use the slug from a previous result when narrowing.",
"type": "string"
},
"bookable_only": {
"description": "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.",
"type": "boolean"
},
"limit": {
"description": "How many venues to return, 1-20. Default 5 — prefer a small number and refine.",
"type": "integer"
}
}
}🟢get-venue(slug)
Full 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.
入力スキーマ
{
"type": "object",
"properties": {
"slug": {
"description": "The venue slug from search-venues, e.g. \"demo-barber\".",
"type": "string"
}
},
"required": [
"slug"
]
}🟢reveal-phone(slug)
The 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.
入力スキーマ
{
"type": "object",
"properties": {
"slug": {
"description": "The venue slug from search-venues.",
"type": "string"
}
},
"required": [
"slug"
]
}🟢check-availability(slug, date, service_id)
Bookable 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.
入力スキーマ
{
"type": "object",
"properties": {
"slug": {
"description": "The venue slug from search-venues.",
"type": "string"
},
"date": {
"description": "Day to check, Y-m-d. Today or later, at most 30 days ahead.",
"type": "string"
},
"service_id": {
"description": "Which service to check. Omit on the first call to list the services with their ids, durations and prices.",
"type": "integer"
}
},
"required": [
"slug",
"date"
]
}🟡request-booking-code(slug, email, phone)
Send 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.
入力スキーマ
{
"type": "object",
"properties": {
"slug": {
"description": "The venue slug the user is booking.",
"type": "string"
},
"email": {
"description": "The user's email address. Give this or phone.",
"type": "string"
},
"phone": {
"description": "The user's phone in international format, e.g. +998901234567. Preferred when the venue will need to call them.",
"type": "string"
}
},
"required": [
"slug"
]
}🟢book-appointment(slug, service_id, start_time, name, verification_code, ...)
Book 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`.
入力スキーマ
{
"type": "object",
"properties": {
"slug": {
"description": "The venue slug.",
"type": "string"
},
"service_id": {
"description": "Service id from check-availability.",
"type": "integer"
},
"start_time": {
"description": "Exact `start_time` value from a check-availability slot. Do not invent or round times.",
"type": "string"
},
"name": {
"description": "The user's name, as the business should see it.",
"type": "string"
},
"verification_code": {
"description": "The 6-digit code the user received. Ask them for it — you never see it yourself.",
"type": "string"
},
"email": {
"description": "The email the code was sent to, if that is the channel used.",
"type": "string"
},
"phone": {
"description": "The phone the code was sent to, if that is the channel used.",
"type": "string"
},
"notes": {
"description": "Anything the business should know, max 500 characters.",
"type": "string"
}
},
"required": [
"slug",
"service_id",
"start_time",
"name",
"verification_code"
]
}コミュニティ
エビデンス