Productivity
Overview
Court Reservation lets signed-in club members find free tennis and padel courts, look up club booking rules, search partners by name, book a ball machine with a court, join club events when attaching is enabled, issue pyramid challenges, create a booking, reschedule it, or cancel it. ChatGPT talks to the Court Reservation MCP at https://mcp.courtreservation.io/mcp. You sign in with your existing Court Reservation account via OAuth. The assistant only acts as that member. Club rules stay on the Court Reservation API. Create, cancel, reschedule, event join/leave, challenges and match results require an explicit confirmation in the chat. Paid slots are not completed here; the member pays in Court Reservation if the API requires payment.
Tools
Accept an incoming Forderung by booking a court and time. Identify challenge_id with get_my_challenges. Call only after the user confirmed court and slot, with confirmed=true. This creates the match reservation via the Court Reservation API.
cancel_booking
ChatGPTCancel an existing reservation. Identify booking_id with get_my_bookings first. Call only after the user explicitly confirmed the cancellation, with confirmed=true. This permanently releases the slot (subject to club cancellation rules on the API).
create_booking
ChatGPTCreate a court reservation for the signed-in member. Call only after the user explicitly confirmed the slot, with confirmed=true. Pass court_id from find_available_courts and player_ids from search_members when a partner is required. Set uses_ball_machine=true to add a club ball machine (only when get_club_rules.ball_machine_enabled is true and the slot still has remaining machines). Does not check availability by itself. Club rules and conflicts are enforced by the Court Reservation API. COURT_NOT_AVAILABLE means the slot was taken; PAYMENT_REQUIRED means the user must pay in the Court Reservation app.
create_challenge
ChatGPTIssue a Forderung against another pyramid player. Use get_pyramids first and pass challenged_id of a player with challengeable=true. Call only after the user explicitly confirmed, with confirmed=true. Club pyramid rules (rank geometry, lock time, one active challenge) are enforced by the API.
find_available_courts
ChatGPTLook up free courts at a club. Pass start_time alone for one slot. Pass start_time and end_time to search a window of start times (e.g. 18:00–21:00). Omit both times to search the whole day; window mode returns only available slots. When the club has a ball machine, each slot includes ball_machine_remaining. Does not reserve a court. Read-only.
get_club_events
ChatGPTSupported by this connector. List club calendar events (training, club night, meetings, AGM). Omit club_id to use the member’s first club. Pass date for one day, date+end_date for a window, or omit both to scan the next two weeks. can_join=true means dazuhängen/attach is enabled, you are not already signed up, and the event is not full. Read-only. Do not say event listing is unsupported.
get_club_rules
ChatGPTReturn booking rules for a club: timezone, how far ahead members may book, duration and partner limits per reservation type (Einzel/Doppel), whether a partner is required, whether a ball machine can be booked (and how many), and court opening hours. Call this before inventing durations or partner counts. Read-only.
get_my_bookings
ChatGPTList the signed-in member's court reservations. Use before cancel_booking or reschedule_booking to get booking_id (reservation gid). Optional start_date and end_date are YYYY-MM-DD. Read-only.
get_my_challenges
ChatGPTList pyramid challenges (Forderungen) involving the signed-in member. Use this before accept_challenge or record_challenge_result. Read-only.
get_my_clubs
ChatGPTList the tennis/padel clubs the signed-in member belongs to. Call this first to obtain club_id. Read-only; does not change any booking.
get_pyramids
ChatGPTList active ranking pyramids (ladders) at a club, including player ranks and who you may challenge (Forderung). challengeable=true uses the same geometry as the club UI; the API still enforces the rule. Read-only.
join_event
ChatGPTSupported by this connector. Join/attach the signed-in member to a club event (calendar action “dazuhängen”). Do not say this action is unsupported. Identify event_id and occurrence_date with get_club_events. Omit club_id to use the member’s first club. Call only after the user confirmed, with confirmed=true. Only works when can_join=true. EVENT_ATTACH_NOT_ALLOWED means attach is off, full, or already joined — that is a club setting, not a missing connector feature.
leave_event
ChatGPTSupported by this connector. Leave a club event occurrence (undo dazuhängen). Identify event_id and occurrence_date with get_club_events. Omit club_id to use the member’s first club. Call only after the user confirmed, with confirmed=true.
record_challenge_result
ChatGPTRecord the winner of a scheduled pyramid challenge. Identify challenge_id with get_my_challenges. Call only after the user confirmed the winner, with confirmed=true. Ranking changes stay on the Court Reservation API.
reschedule_booking
ChatGPTMove an existing reservation to a new start time. Identify booking_id with get_my_bookings first. Call only after the user explicitly confirmed the new time, with confirmed=true. Optional new_duration_minutes keeps the original duration when omitted. COURT_NOT_AVAILABLE means the new slot was taken.
search_members
ChatGPTFind booking partners at a club by name. Returns member id and display name only (no emails). Use the ids as player_ids on create_booking. Read-only.
Capabilities
Writes






