Endpoints: 28,729MCP servers: 18,413Payout addresses: 2,070Paid calls: 1,528Letters: 13Defects: 1,322counted 3 min ago
teppi

Server definition

Hash
sha256:c7185155068291b617f5e755fa00c6f1bfa314dd14d970238beaae8c7c6d9367
What it is
What a remote MCP server returned when asked what it offers: 13 tools

The blob, as servednamed by its sha256

{ "instructions": "Ticketing for Toots, the jazz club in Brussels. The purchase flow is:\n1. list_events / get_event to find a concert, get_availability for its live seats and prices (amounts are euro cents).\n2. hold_tickets reserves seats and returns a booking_uuid. The hold expires after 15 minutes; only hold tickets a buyer actually asked for, and release_booking gives the seats back early if the buyer changes their mind.\n3. set_contact attaches the buyer (name + email required) and returns a payment_url.\n4. Card payment is never handled here: give the payment_url to the human buyer, who pays in their own browser (card or Bancontact). Never ask for card details. If the buyer has a Toots Pass or gift card code, redeem_pass / redeem_gift_card apply it — a fully covered order completes without any payment step.\n5. get_booking_status tells you when the order is paid. Share its ticket_url with the buyer — that one link adapts to their device (wallet pass on a phone, PDF elsewhere). The tickets are also emailed to the buyer.\nAgents with a Link agent wallet can settle the balance themselves: after set_contact (and any pass or gift card), request a Shared Payment Token for exactly amount_to_pay_cents in EUR from the buyer's Link wallet, scoped to the Stripe network profile profile_61VNUTvZyhaQmxLgqA6VNUTv7A9CUusxmQZ0xC5doSoy — the buyer approves that spend request — then call pay_with_shared_payment_token with it. That replaces step 4; if it fails, the payment_url still works.", "tools": [ { "description": "Live 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.", "inputSchema": { "properties": { "event_id": { "description": "The event_id from list_events.", "type": "string" }, "locale": { "description": "Language for titles, labels and the returned URLs. Defaults to fr.", "enum": [ "fr", "en", "nl" ], "type": "string" } }, "required": [ "event_id" ], "type": "object" }, "name": "get_availability", "outputSchema": { "properties": { "result": { "additionalProperties": true, "properties": { "as_of": { "type": "string" }, "max_age_seconds": { "type": "integer" }, "sessions": { "items": { "additionalProperties": true, "type": "object" }, "type": "array" } }, "required": [ "sessions" ], "type": "object" } }, "required": [ "result" ], "type": "object" } }, { "description": "Current 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.", "inputSchema": { "properties": { "booking_uuid": { "type": "string" }, "locale": { "description": "Language for titles, labels and the returned URLs. Defaults to fr.", "enum": [ "fr", "en", "nl" ], "type": "string" } }, "required": [ "booking_uuid" ], "type": "object" }, "name": "get_booking_status", "outputSchema": { "properties": { "result": { "additionalProperties": true, "properties": { "amount_to_pay_cents": { "type": "integer" }, "booking_uuid": { "type": "string" }, "expires_at": { "type": [ "string", "null" ] }, "expires_in_seconds": { "type": [ "integer", "null" ] }, "payment_url": { "type": [ "string", "null" ] }, "status": { "enum": [ "awaiting_contact", "awaiting_payment", "paid", "expired" ], "type": "string" }, "ticket_pdf_url": { "type": "string" }, "ticket_url": { "type": "string" }, "total_cents": { "type": "integer" } }, "required": [ "booking_uuid", "status" ], "type": "object" } }, "required": [ "result" ], "type": "object" } }, { "description": "Full details of one concert: bio, line-up, other dates of the same run, prices and availability.", "inputSchema": { "properties": { "event_id": { "description": "The event_id from list_events.", "type": "string" }, "locale": { "description": "Language for titles, labels and the returned URLs. Defaults to fr.", "enum": [ "fr", "en", "nl" ], "type": "string" } }, "required": [ "event_id" ], "type": "object" }, "name": "get_event", "outputSchema": { "properties": { "result": { "additionalProperties": true, "type": "object" } }, "required": [ "result" ], "type": "object" } }, { "description": "Address, contact details and the venue's FAQ (house rules, practical questions). Use this to answer buyer questions about the club instead of guessing.", "inputSchema": { "properties": { "locale": { "description": "Language for titles, labels and the returned URLs. Defaults to fr.", "enum": [ "fr", "en", "nl" ], "type": "string" } }, "type": "object" }, "name": "get_venue_info", "outputSchema": { "properties": { "result": { "additionalProperties": true, "type": "object" } }, "required": [ "result" ], "type": "object" } }, { "description": "Reserves 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.", "inputSchema": { "properties": { "event_id": { "description": "The event_id from list_events.", "type": "string" }, "idempotency_key": { "description": "Optional deduplication key of your choosing. Retrying a timed-out hold with the same key returns the original booking instead of reserving twice.", "type": "string" }, "items": { "items": { "properties": { "category_id": { "description": "From get_availability.", "type": "string" }, "price_id": { "description": "From get_availability.", "type": "string" }, "quantity": { "minimum": 1, "type": "integer" }, "stock_id": { "description": "From get_availability.", "type": "string" } }, "required": [ "stock_id", "category_id", "price_id", "quantity" ], "type": "object" }, "minItems": 1, "type": "array" }, "locale": { "description": "Language for titles, labels and the returned URLs. Defaults to fr.", "enum": [ "fr", "en", "nl" ], "type": "string" } }, "required": [ "event_id", "items" ], "type": "object" }, "name": "hold_tickets", "outputSchema": { "properties": { "result": { "additionalProperties": true, "properties": { "amount_to_pay_cents": { "type": "integer" }, "booking_uuid": { "type": "string" }, "expires_at": { "type": [ "string", "null" ] }, "expires_in_seconds": { "type": [ "integer", "null" ] }, "payment_url": { "type": [ "string", "null" ] }, "status": { "enum": [ "awaiting_contact", "awaiting_payment", "paid", "expired" ], "type": "string" }, "ticket_pdf_url": { "type": "string" }, "ticket_url": { "type": "string" }, "total_cents": { "type": "integer" } }, "required": [ "booking_uuid", "status" ], "type": "object" } }, "required": [ "result" ], "type": "object" } }, { "description": "All upcoming concerts with date, line-up, genres and a price/availability summary. Amounts are euro cents.", "inputSchema": { "properties": { "locale": { "description": "Language for titles, labels and the returned URLs. Defaults to fr.", "enum": [ "fr", "en", "nl" ], "type": "string" } }, "type": "object" }, "name": "list_events", "outputSchema": { "properties": { "result": { "items": { "additionalProperties": true, "type": "object" }, "type": "array" } }, "required": [ "result" ], "type": "object" } }, { "description": "Pays 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.", "inputSchema": { "properties": { "booking_uuid": { "type": "string" }, "locale": { "description": "Language for titles, labels and the returned URLs. Defaults to fr.", "enum": [ "fr", "en", "nl" ], "type": "string" }, "shared_payment_token": { "description": "The spt_… token granted by the buyer's Link wallet.", "type": "string" } }, "required": [ "booking_uuid", "shared_payment_token" ], "type": "object" }, "name": "pay_with_shared_payment_token", "outputSchema": { "properties": { "result": { "additionalProperties": true, "properties": { "amount_to_pay_cents": { "type": "integer" }, "booking_uuid": { "type": "string" }, "expires_at": { "type": [ "string", "null" ] }, "expires_in_seconds": { "type": [ "integer", "null" ] }, "payment_url": { "type": [ "string", "null" ] }, "status": { "enum": [ "awaiting_contact", "awaiting_payment", "paid", "expired" ], "type": "string" }, "ticket_pdf_url": { "type": "string" }, "ticket_url": { "type": "string" }, "total_cents": { "type": "integer" } }, "required": [ "booking_uuid", "status" ], "type": "object" } }, "required": [ "result" ], "type": "object" } }, { "description": "For 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).", "inputSchema": { "properties": { "email": { "description": "The email address the buyer ordered with.", "type": "string" }, "locale": { "description": "Language for titles, labels and the returned URLs. Defaults to fr.", "enum": [ "fr", "en", "nl" ], "type": "string" } }, "required": [ "email" ], "type": "object" }, "name": "recover_tickets", "outputSchema": { "properties": { "result": { "additionalProperties": true, "properties": { "message": { "type": "string" } }, "required": [ "message" ], "type": "object" } }, "required": [ "result" ], "type": "object" } }, { "description": "Applies 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.", "inputSchema": { "properties": { "booking_uuid": { "type": "string" }, "code": { "description": "The gift card code, exactly as the buyer gave it.", "type": "string" }, "locale": { "description": "Language for titles, labels and the returned URLs. Defaults to fr.", "enum": [ "fr", "en", "nl" ], "type": "string" } }, "required": [ "booking_uuid", "code" ], "type": "object" }, "name": "redeem_gift_card", "outputSchema": { "properties": { "result": { "additionalProperties": true, "properties": { "amount_to_pay_cents": { "type": "integer" }, "booking_uuid": { "type": "string" }, "expires_at": { "type": [ "string", "null" ] }, "expires_in_seconds": { "type": [ "integer", "null" ] }, "payment_url": { "type": [ "string", "null" ] }, "status": { "enum": [ "awaiting_contact", "awaiting_payment", "paid", "expired" ], "type": "string" }, "ticket_pdf_url": { "type": "string" }, "ticket_url": { "type": "string" }, "total_cents": { "type": "integer" } }, "required": [ "booking_uuid", "status" ], "type": "object" } }, "required": [ "result" ], "type": "object" } }, { "description": "Applies 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.", "inputSchema": { "properties": { "booking_uuid": { "type": "string" }, "code": { "description": "The Toots Pass code, exactly as the buyer gave it.", "type": "string" }, "locale": { "description": "Language for titles, labels and the returned URLs. Defaults to fr.", "enum": [ "fr", "en", "nl" ], "type": "string" } }, "required": [ "booking_uuid", "code" ], "type": "object" }, "name": "redeem_pass", "outputSchema": { "properties": { "result": { "additionalProperties": true, "properties": { "amount_to_pay_cents": { "type": "integer" }, "booking_uuid": { "type": "string" }, "expires_at": { "type": [ "string", "null" ] }, "expires_in_seconds": { "type": [ "integer", "null" ] }, "payment_url": { "type": [ "string", "null" ] }, "status": { "enum": [ "awaiting_contact", "awaiting_payment", "paid", "expired" ], "type": "string" }, "ticket_pdf_url": { "type": "string" }, "ticket_url": { "type": "string" }, "total_cents": { "type": "integer" } }, "required": [ "booking_uuid", "status" ], "type": "object" } }, "required": [ "result" ], "type": "object" } }, { "description": "Gives 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.", "inputSchema": { "properties": { "booking_uuid": { "type": "string" }, "locale": { "description": "Language for titles, labels and the returned URLs. Defaults to fr.", "enum": [ "fr", "en", "nl" ], "type": "string" } }, "required": [ "booking_uuid" ], "type": "object" }, "name": "release_booking", "outputSchema": { "properties": { "result": { "additionalProperties": true, "properties": { "amount_to_pay_cents": { "type": "integer" }, "booking_uuid": { "type": "string" }, "expires_at": { "type": [ "string", "null" ] }, "expires_in_seconds": { "type": [ "integer", "null" ] }, "payment_url": { "type": [ "string", "null" ] }, "status": { "enum": [ "awaiting_contact", "awaiting_payment", "paid", "expired" ], "type": "string" }, "ticket_pdf_url": { "type": "string" }, "ticket_url": { "type": "string" }, "total_cents": { "type": "integer" } }, "required": [ "booking_uuid", "status" ], "type": "object" } }, "required": [ "result" ], "type": "object" } }, { "description": "Attaches 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.", "inputSchema": { "properties": { "booking_uuid": { "type": "string" }, "country": { "description": "Two-letter ISO code, e.g. BE.", "type": "string" }, "email": { "description": "The buyer's email; the tickets are sent there.", "type": "string" }, "firstname": { "type": "string" }, "lastname": { "type": "string" }, "newsletter_opt_in": { "description": "Only true if the buyer explicitly asked to subscribe.", "type": "boolean" }, "promo_code": { "type": "string" }, "terms_accepted": { "description": "Must be true, and only after the buyer explicitly accepted the terms of sale.", "type": "boolean" }, "zip": { "type": "string" } }, "required": [ "booking_uuid", "firstname", "lastname", "email", "terms_accepted" ], "type": "object" }, "name": "set_contact", "outputSchema": { "properties": { "result": { "additionalProperties": true, "properties": { "amount_to_pay_cents": { "type": "integer" }, "booking_uuid": { "type": "string" }, "expires_at": { "type": [ "string", "null" ] }, "expires_in_seconds": { "type": [ "integer", "null" ] }, "payment_url": { "type": [ "string", "null" ] }, "status": { "enum": [ "awaiting_contact", "awaiting_payment", "paid", "expired" ], "type": "string" }, "ticket_pdf_url": { "type": "string" }, "ticket_url": { "type": "string" }, "total_cents": { "type": "integer" } }, "required": [ "booking_uuid", "status" ], "type": "object" } }, "required": [ "result" ], "type": "object" } }, { "description": "Like 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.", "inputSchema": { "properties": { "booking_uuid": { "type": "string" }, "locale": { "description": "Language for titles, labels and the returned URLs. Defaults to fr.", "enum": [ "fr", "en", "nl" ], "type": "string" }, "timeout_seconds": { "default": 20, "maximum": 25, "minimum": 1, "type": "integer" } }, "required": [ "booking_uuid" ], "type": "object" }, "name": "wait_for_payment", "outputSchema": { "properties": { "result": { "additionalProperties": true, "properties": { "amount_to_pay_cents": { "type": "integer" }, "booking_uuid": { "type": "string" }, "expires_at": { "type": [ "string", "null" ] }, "expires_in_seconds": { "type": [ "integer", "null" ] }, "payment_url": { "type": [ "string", "null" ] }, "status": { "enum": [ "awaiting_contact", "awaiting_payment", "paid", "expired" ], "type": "string" }, "ticket_pdf_url": { "type": "string" }, "ticket_url": { "type": "string" }, "total_cents": { "type": "integer" } }, "required": [ "booking_uuid", "status" ], "type": "object" } }, "required": [ "result" ], "type": "object" } } ] }
Verify it yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:c7185155068291b617f5e755fa00c6f1bfa314dd14d970238beaae8c7c6d9367 | sha256sum