Toots Jazz Club · API & MCP
Programmatic access to the agenda and ticketing of Toots, the jazz club in Brussels.
Read the agenda over plain JSON; reserve tickets through the Model Context Protocol.
Amounts are euro cents. Content is available in French, English and Dutch (?locale=fr|en|nl, default fr).
payment_url that the human buyer opens in their own browser
(card or Bancontact, via Stripe). No tool accepts card details, and none ever will. Venue-issued codes are
different: a Toots Pass or gift card the buyer provides can be redeemed directly, since no money moves.
MCP server
Endpoint: https://toots.brussels/mcp — Streamable HTTP, stateless, no authentication required.
Also advertised at /.well-known/mcp.json.
Connect from Claude Code:
claude mcp add --transport http toots-tickets https://toots.brussels/mcp
Or add it as a custom connector in claude.ai / any MCP-capable client using the endpoint URL above.
Tools
| Tool | What it does |
|---|---|
list_events | Upcoming concerts with date, line-up, genres, prices and availability. |
get_event | Full detail of one concert, including the other dates of the same run. |
get_availability | Live seats per session: the stock_id / category_id / price_id lines a hold needs. |
hold_tickets | Reserves seats and returns a booking_uuid. The hold expires after 15 minutes if unpaid. |
set_contact | Attaches the buyer (name, email, accepted terms) and returns the payment_url. |
redeem_pass / redeem_gift_card | Applies a Toots Pass or gift card code the buyer provided. A fully covered order completes with no payment step; otherwise the balance stays on the payment_url. |
release_booking | Gives an unpaid hold's seats back early, when the buyer changes their mind. |
get_venue_info | Address, contact and the venue FAQ — so agents answer house questions from facts. |
wait_for_payment | Long-polls a booking (≤25 s) and returns the moment it is paid. |
recover_tickets | Re-sends a buyer's ticket links to their email. Links go to the inbox only — the inbox is the proof of ownership. |
get_booking_status | Polls the order: awaiting_payment, paid (with the ticket PDF URL and, when configured, Apple/Google Wallet links) or expired. |
Tools declare annotations (read-only tools can be auto-approved by clients) and
outputSchema; tool errors carry a stable error_code in
structuredContent. The concert pages are also exposed as MCP resources
(their Markdown twins). One honesty note for developers: holds are real —
hold_tickets reserves actual inventory (released after 15 minutes or via
release_booking), so test gently.
Flow
list_events→get_availabilityto find the concert and its price lines.hold_ticketsonce the buyer has chosen — never speculatively.set_contactwith the buyer's details; the tickets will be emailed to that address.- Hand the returned
payment_urlto the buyer; they pay in their browser. get_booking_statusuntilpaid; the response then carries the ticket PDF URL.
Rate limits: 60 requests/minute per IP overall, 5 holds per 15 minutes per IP.
Read-only JSON API
| Endpoint | Returns |
|---|---|
GET /api/events.json | Upcoming concerts with prices, availability and page URLs. Cached 2 min. |
GET /api/events/{id}.json | One concert in full: bio, line-up, other dates, offer. |
GET /api/events/{id}/availability.json | Live seats per session — same shape as the MCP get_availability tool. Cached 1 min. |
GET /agenda.json | The original agenda feed (bios in the three languages), kept for existing consumers, now with prices and URLs. |
POST /api/tickets/recover | Body {"email": "…"}. Re-sends the ticket links of that address's paid orders — to that address. Always answers a neutral 202; rate limited. |
Agent-side payment (future)
We're watching Stripe's Machine Payments Protocol as an
optional future path: agents holding a delegated payment credential (a Link
Shared Payment Token) would settle the order directly, with the
payment_url handoff remaining the fallback for everyone else.
Not offered today — MPP is in preview and EUR/Bancontact coverage is unclear —
so for now the flow above is the only way to pay.
Markdown & discovery
/llms.txt— index of the whole site for answer engines; every page also exists as Markdown by adding.mdto its address./.well-known/mcp.json— MCP server manifest for this domain.