Write us on Telegram@Odilient

AI & AUTOMATION

Bronjoy MCP Servers

Two Model Context Protocol servers for Bronjoy: a public one that lets AI assistants search venues in Uzbekistan and book appointments, and a private one for each business.

In-house product
Client
Local Services
Industry
Ongoing
Duration
2026
Year
Where it started

The Challenge

AI assistants are becoming a way to find a place and book it, but most of Bronjoy's catalog is directory data: real businesses with hours and a phone number, and no online booking. An assistant that assumes every venue is bookable promises what the platform cannot deliver. A public booking endpoint without the website's browser checks could also let a script put fake appointments on a real business's calendar.

What we did

The Solution

We built two MCP servers on Laravel MCP inside the booking backend. The public marketplace server needs no account, exposes six tools, marks every venue as bookable or directory-only, and creates an appointment only with a six-digit code sent to the user's own phone or email. The organization server gives each business a token-scoped, booking-only endpoint for its own assistant.

Built with
Laravel MCPModel Context ProtocolLaravel 12PHP 8.4Laravel SanctumMeilisearchPostgreSQLRedis
Inside the build

How It Came Together

MCP servers for appointment booking with AI assistants

Bronjoy speaks the Model Context Protocol (MCP), so Claude or any other MCP client can search the Bronjoy catalog of service businesses in Uzbekistan, answer questions about a venue and book an appointment. There are two servers for two audiences: a free public server over the whole marketplace, and a private, authenticated server that a business connects its own assistant to. Both are documented publicly, with setup snippets for Claude Code and Claude Desktop, and the public server also works as a connector in Claude.

Key features

Marketplace server

  • No account or token — a Streamable HTTP endpoint at https://api.bronjoy.com/api/mcp exposes only what the public website already serves.
  • Six tools in booking order — search-venues, get-venue, reveal-phone, check-availability, request-booking-code and book-appointment.
  • Bookable or directory-only — every result carries is_bookable, and the server instructions tell the assistant to say plainly when a venue can only be phoned.
  • A code the assistant never sees — request-booking-code sends six digits to the user's own email or phone; the user reads them back, and the code lasts five minutes for one booking.
  • Honest bookings — appointments are created as pending for the business to confirm, and venues that take prepayment return a payment link.
  • Local data as-is — searches match across Latin and Cyrillic, and names and addresses come back in the Russian or Uzbek they were written in, ready to show a taxi driver.

Organization server

  • Token-scoped access — an owner issues a token from the dashboard or the API; it reaches one organization only and expires after 90 days by default, 365 at most.
  • Booking-only tools — list-services, search-availability, create-appointment, check-appointment and cancel-appointment, with the client's phone number verifying check and cancel.
  • Context in one read — an organization://profile resource describes services, staff, branches, timezone and currency, and a booking-assistant prompt opens a booking conversation.

Architecture and security

Both servers are Laravel MCP classes registered beside the REST routes of the Laravel 12 backend, so the tools call the same search, availability and booking services as the website. Each tool declares MCP annotations such as read-only, idempotent or destructive, so a client can tell a search from a write.

The public server needed its own abuse controls. On the website the code endpoint sits behind Cloudflare Turnstile, which an MCP client cannot solve, so the server caps each caller at 30 requests a minute, 10 phone reveals a minute and 10 code sends an hour, on top of the existing per-recipient limit. Phone numbers are masked in get-venue and appear only through reveal-phone, which an assistant is told to call only for the venue the user chose.

The public server shipped together with a fix to guest booking on the website. The old flow created the appointment first and sent a code afterwards, so a name and any phone number could put a real booking on a partner's calendar. The verification service now requires the code before anything is written, and the MCP tools call that same service, so an assistant cannot book on terms a browser could not.

Organization tokens are Laravel Sanctum tokens bound to one organization by middleware, limited to 60 requests a minute per token and 120 per organization, and every operation is logged for audit. MCP access for a business is a paid plan feature.

Timeline and our role

We built the organization server in February 2026 as the first iteration of Bronjoy's AI integration, and added the public marketplace server in August 2026, the day after the marketplace went live. We designed the tool contracts and instructions, implemented the servers and limits, and wrote the public documentation.

This work is part of our AI integration and automation service. The venues the server searches come from the Bronjoy business directory pipeline, and the same rule of never claiming an action that did not happen runs through the Bronjoy AI receptionist.

Let's Build

Want something like Bronjoy MCP Servers?

Tell us what your product needs to do. We'll shape the scope, map a timeline and send a fixed price — free, and with no obligation to proceed.

Free consultation No commitment Fast reply