Bronjoy Marketplace

Search and book appointments at service businesses across Uzbekistan.

¿Debería usar esto?

Calidad y seguridad

A
Calidad de la descripción
100%
Integridad del esquema
98%
Calidad de los nombres
60%
Riesgo de envenenamiento
100%
Coincidencia de permisos
100%
Cumplimiento del protocolo
100%

Hallazgos (6)

  • LOWTool 'search-venues' doesn't follow camelCase/snake_caseen search-venues
  • LOWTool 'get-venue' doesn't follow camelCase/snake_caseen get-venue
  • LOWTool 'reveal-phone' doesn't follow camelCase/snake_caseen reveal-phone
  • LOWTool 'check-availability' doesn't follow camelCase/snake_caseen check-availability
  • LOWTool 'request-booking-code' doesn't follow camelCase/snake_caseen request-booking-code
  • LOWTool 'book-appointment' doesn't follow camelCase/snake_caseen book-appointment

Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.

Costo de contexto

~1,665Tokens (definiciones de herramientas)
~1.4 KBTamaño de respuesta típico
Impacto moderado en la atención (1.30% del contexto de 128k)

Este es el número aproximado de tokens que se consumen cada vez que las herramientas del servidor se cargan en el contexto de un modelo. Los recuentos más altos reducen la atención disponible para otras tareas.

Instalar

Instalación con un clic

Agrega esto a tu archivo `claude_desktop_config.json`:

{
  "mcpServers": {
    "marketplace": {
      "url": "https://api.bronjoy.com/api/mcp"
    }
  }
}

Puntos de conexión remotos

https://api.bronjoy.com/api/mcpstreamable-http

Qué puede hacer

Inventario de herramientas

Herramientas (6)

🟢 Solo lectura🟡 Escritura🔴 Eliminación⚪ Desconocido
🟢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.

Esquema de entrada

{
  "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.

Esquema de entrada

{
  "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.

Esquema de entrada

{
  "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.

Esquema de entrada

{
  "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.

Esquema de entrada

{
  "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`.

Esquema de entrada

{
  "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"
  ]
}

Comunidad

Califica este servidor

Evidencia

Observaciones recientes

verificadoversión no registrada6 herramientas
verificadoversión no registrada6 herramientas