Booking MCP server
The booking flow as MCP tools, so any MCP-compatible AI assistant or agent can find venues, get quotes, negotiate, and book on a buyer's behalf, always within each venue's pricing and negotiating rules. It runs the same engine as the Booking API, with no API key required.
Connect
| Environment | URL (SSE transport) |
|---|---|
| Production | https://groupsales-mcp-production.up.railway.app/sse |
| Sandbox | https://groupsales-mcp-sandbox.up.railway.app/sse |
Add the URL as a custom connector in Claude, or point any MCP client that supports SSE at it. For example, with the Python SDK:
import asyncio
from mcp import ClientSession
from mcp.client.sse import sse_client
async def main():
url = "https://groupsales-mcp-sandbox.up.railway.app/sse"
async with sse_client(url) as (read, write):
async with ClientSession(read, write) as session:
await session.initialize()
tools = await session.list_tools()
print([tool.name for tool in tools.tools])
asyncio.run(main())
Tools
| Tool | What it does |
|---|---|
search_venues |
List venues available for group bookings, with location, to narrow the search. |
identify |
Identify the buyer by email. Call it first; later tools need the same email. |
qualify_group |
Check whether a group is large enough for a group booking. |
find_availability |
Find bookable options with capacity for the group, optionally by date and venue. |
request_quotes |
Send one request to every matching venue and collect a quote from each to compare. |
get_quote |
Get a demand-priced quote for one option. A preview only: nothing is committed. |
make_counter_offer |
Answer price pushback with a counter-offer on an existing quote. |
confirm_booking |
Commit a quote as a booking. Returns pending_approval if the venue must sign off. |
Flows
One venue. A buyer negotiating with a single venue:
identify → qualify_group → find_availability → get_quote
→ make_counter_offer (optional) → confirm_booking
Many venues. A planner comparing venues side by side:
identify → request_quotes → pick a quote
→ make_counter_offer (optional) → confirm_booking
What the agent can and can't commit
get_quoteandrequest_quotesare previews. Venues see nothing untilconfirm_bookingis called.- Prices come from each venue's configured price band and live demand, never from the model.
- If a quote needs a deposit, the result says so (
deposit_required,deposit_amount,deposit_refundable). Relay those figures to the buyer as returned. - Deals outside a venue's rules come back as
pending_approvaland wait for a staff decision rather than booking automatically.