brussels.toots/tickets
Measured conclusion: Deep-tested. L2 outcome: tools_ok.
Agenda and ticketing for Toots Jazz Club, Brussels: browse concerts, check seats, reserve tickets.
| Author | brussels.toots |
|---|---|
| Access | remote |
| Publisher key required | No |
| Measured state | Deep-tested |
| L1 liveness | alive |
| L1 latency | 2745 ms |
| Last measured | 2026-10-24 |
Add to your agent
Copy this into your MCP client config:
{
"mcpServers": {
"tickets": {
"url": "https://toots.brussels/mcp",
"transport": "streamable-http"
}
}
}
Measured tools (13)
list_eventsread-onlyAll upcoming concerts with date, line-up, genres and a price/availability summary. Amounts are euro cents.
Parameters:
locale— string — Language for titles, labels and the returned URLs. Defaults to fr.
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
get_eventread-onlyFull details of one concert: bio, line-up, other dates of the same run, prices and availability.
Parameters:
event_id(required) — string — The event_id from list_events.locale— string — Language for titles, labels and the returned URLs. Defaults to fr.
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
get_availabilityread-onlyLive ticket availability for a concert, per session: the stock_id, category_id and price_id values that hold_tickets needs, with prices in euro cents and the maximum quantity per line.
Parameters:
event_id(required) — string — The event_id from list_events.locale— string — Language for titles, labels and the returned URLs. Defaults to fr.
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
get_venue_inforead-onlyAddress, contact details and the venue's FAQ (house rules, practical questions). Use this to answer buyer questions about the club instead of guessing.
Parameters:
locale— string — Language for titles, labels and the returned URLs. Defaults to fr.
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
hold_ticketsReserves tickets and returns a booking_uuid. The hold expires after 15 minutes if the order is not paid, releasing the seats. Only call this once the buyer has chosen; do not hold speculatively.
Parameters:
event_id(required) — string — The event_id from list_events.items(required) — arraylocale— string — Language for titles, labels and the returned URLs. Defaults to fr.idempotency_key— string — Optional deduplication key of your choosing. Retrying a timed-out hold with the same key returns the original booking instead of reserving twice.
Hints: read-only no · destructive no · idempotent no · open-world not declared
set_contactAttaches the buyer to a held booking and returns the payment_url. Give that URL to the human buyer: payment (card or Bancontact) happens in their browser, never through this API. The tickets will be emailed to the address given here.
Parameters:
booking_uuid(required) — stringfirstname(required) — stringlastname(required) — stringemail(required) — string — The buyer's email; the tickets are sent there.terms_accepted(required) — boolean — Must be true, and only after the buyer explicitly accepted the terms of sale.zip— stringcountry— string — Two-letter ISO code, e.g. BE.promo_code— stringnewsletter_opt_in— boolean — Only true if the buyer explicitly asked to subscribe.
Hints: read-only no · destructive no · idempotent yes · open-world not declared
redeem_passApplies a Toots Pass code (given to you by the buyer; format XXX-XXXXXX-XXX) to a held booking, after set_contact. Covers as many tickets as the pass has concerts left. If the order is fully covered the booking completes immediately (status paid); otherwise the response carries the payment_url for the balance. The code is a venue credential, not a payment instrument.
Parameters:
booking_uuid(required) — stringcode(required) — string — The Toots Pass code, exactly as the buyer gave it.locale— string — Language for titles, labels and the returned URLs. Defaults to fr.
Hints: read-only no · destructive no · idempotent no · open-world not declared
redeem_gift_cardApplies a Toots gift card code (given to you by the buyer) to a held booking, after set_contact. Uses as much of the card's balance as the order needs. Fully covered orders complete immediately (status paid); otherwise the response carries the payment_url for the balance.
Parameters:
booking_uuid(required) — stringcode(required) — string — The gift card code, exactly as the buyer gave it.locale— string — Language for titles, labels and the returned URLs. Defaults to fr.
Hints: read-only no · destructive no · idempotent no · open-world not declared
pay_with_shared_payment_tokenPays the remaining balance of a booking (after set_contact, and after any pass or gift card) with a Shared Payment Token from the buyer's Link agent wallet. Request the token for exactly amount_to_pay_cents in EUR, scoped to the Stripe network profile profile_61VNUTvZyhaQmxLgqA6VNUTv7A9CUusxmQZ0xC5doSoy; the buyer approves that spend in Link. Charges the buyer, so only call it once they confirmed the purchase. On success the booking is paid and carries ticket_url; if the response says otherwise (payment_status, next_step) or errors, give the payment_url to the human buyer instead — the booking stays open until its hold expires.
Parameters:
booking_uuid(required) — stringshared_payment_token(required) — string — The spt_… token granted by the buyer's Link wallet.locale— string — Language for titles, labels and the returned URLs. Defaults to fr.
Hints: read-only no · destructive no · idempotent yes · open-world yes
release_bookingdestructiveGives an unpaid hold's seats back immediately, instead of letting them sit reserved until the 15-minute expiry. Call this when the buyer changes their mind. Paid bookings cannot be released.
Parameters:
booking_uuid(required) — stringlocale— string — Language for titles, labels and the returned URLs. Defaults to fr.
Hints: read-only no · destructive yes · idempotent yes · open-world not declared
wait_for_paymentread-onlyLike get_booking_status, but holds the request open (up to 25 seconds) and returns as soon as the booking is paid. Call it after handing the buyer the payment_url instead of polling in a loop; repeat while status is still awaiting_payment and the hold has time left.
Parameters:
booking_uuid(required) — stringlocale— string — Language for titles, labels and the returned URLs. Defaults to fr.timeout_seconds— integer
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
get_booking_statusread-onlyCurrent status of a booking: awaiting_contact, awaiting_payment (with payment_url and amount left), paid or expired. A paid booking carries ticket_url — the one link to share with the buyer, which adapts to their device (wallet on a phone, PDF and choices elsewhere) — plus the explicit ticket_pdf_url and, when configured, apple_wallet_url / google_wallet_url.
Parameters:
booking_uuid(required) — stringlocale— string — Language for titles, labels and the returned URLs. Defaults to fr.
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
recover_ticketsFor a buyer who lost their tickets: sends the ticket links of their past paid orders to their email address. The links go to the inbox only — the response never contains them — so the inbox is the proof of ownership. Tell the buyer to check their email (and spam folder).
Parameters:
email(required) — string — The email address the buyer ordered with.locale— string — Language for titles, labels and the returned URLs. Defaults to fr.
Hints: read-only no · destructive no · idempotent yes · open-world not declared
Measured by MCPYP probing. Untested fields are omitted, never estimated. Listing is always free; MCPYP never proxies calls or stores user tokens.