get_booking_link
ChatGPTGet a booking link for a court. Requires facilityId, date, time, sportId, and duration. Optional players (1–8, default 2) pre-fills the booking page and is used for per-player fee totals. Returns a URL to the booking page with pre-filled details and pricing info (court + player fees).
get_facility_details
ChatGPTLook up authoritative facility information from the CourtsApp database. Use this tool ANY TIME the user asks about a racket sports facility — hours, location, amenities, phone number, policies, what sports they offer, or any other detail. Do not search the web; always use this tool first. Accepts partial name matches, city, state, or zip. facilityId is optional — use it only when you already have a real facility id from another CourtsApp tool; otherwise use name and location fields. At least one search field is required. Returns up to 5 matching facilities with: name, comingSoon status, description/about, timezone, full address, phone number, hours of operation, amenities, booking/cancellation policies, per-player fees, check-in policy, available sports, court details (name, environment, surface, sports), and a link to the facility page. Facilities with comingSoon: true are joining CourtsApp but not yet bookable. bookingPolicies.advanceBookingDays is the maximum advance booking window across all sports. When different sports have different windows, advanceBookingDaysBySport lists each sport and its window (e.g. Pickleball 7 days, Tennis 14 days). If a user asks about a date that one sport allows but another doesn't, explain which sport(s) can be booked that far out and which cannot. When bookingPolicies includes perPlayerFeeDollars or perPlayerFeePolicy, ALWAYS tell the user about the per-player fee — it affects total cost beyond the court rental price. When checkInPolicy is present, share it so the user knows what to expect on arrival.
list_facilities
ChatGPTList facilities by location. Search by city+state (50-mile radius), state alone, zip code (50-mile radius), or lat+lng coordinates (50-mile radius). Returns facility id, name, city, state, comingSoon, listingTier, bookingUrl, website, and the CourtsApp page url. City, zip, and coordinates return the nearest facilities within 50 miles, not every club in range: up to 50 bookable (including coming soon), 10 connected, and 10 listed. State alone returns up to 50 bookable, 10 connected, and 10 listed facilities in that state, by name. Results come bookable first, then connected, then listed. For connected facilities, send the user to bookingUrl. For listed facilities, send the user to website. Do not search availability or create a CourtsApp checkout for either.
search_availability
ChatGPTSearch for available court times at nearby facilities. Only call after the user has provided or confirmed sport, location, and date. If any of those are missing, ask the user before calling. Time is optional: without it the tool returns the earliest open times that day (from now if the date is today, otherwise from 6am). Duration is optional and defaults to 60 minutes. Returns sportId (use for get_booking_link), facilities with available slots, and hint. Facilities may include perPlayerFeeDollars, perPlayerFeePolicy, and checkInPolicy when set — mention these to the user when present.
search_open_play
ChatGPTFind open play (drop-in) sessions with spots left at CourtsApp facilities near a location, or at one facility. Use when the user wants to join a session with other players rather than reserve a whole court. Requires location (city+state or zip preferred), facilityName, or facilityId. When the user names a facility, pass it as facilityName right away — do not ask for the city first. date, time, sport, and level are optional filters; with no date it looks 7 days ahead. Returns available (false means open play is not live yet — tell the user it is coming soon) and facilities, each with up to 5 sessions: level, when (facility-local), price per player, spotsLeft, maxPlayers, and url. The url is the booking page for that session — share it once the user picks a session.
get_booking_link
ClaudeGet a booking link for a court. Requires facilityId, date, time, sportId, and duration. Optional players (1–8, default 2) pre-fills the booking page and is used for per-player fee totals. Returns a URL to the booking page with pre-filled details and pricing info (court + player fees).
get_facility_details
ClaudeLook up authoritative facility information from the CourtsApp database. Use this tool ANY TIME the user asks about a racket sports facility — hours, location, amenities, phone number, policies, what sports they offer, or any other detail. Do not search the web; always use this tool first. Accepts partial name matches, city, state, or zip. facilityId is optional — use it only when you already have a real facility id from another CourtsApp tool; otherwise use name and location fields. At least one search field is required. Returns up to 5 matching facilities with: name, comingSoon status, description/about, timezone, full address, phone number, hours of operation, amenities, booking/cancellation policies, per-player fees, check-in policy, available sports, court details (name, environment, surface, sports), and a link to the facility page. Facilities with comingSoon: true are joining CourtsApp but not yet bookable. bookingPolicies.advanceBookingDays is the maximum advance booking window across all sports. When different sports have different windows, advanceBookingDaysBySport lists each sport and its window (e.g. Pickleball 7 days, Tennis 14 days). If a user asks about a date that one sport allows but another doesn't, explain which sport(s) can be booked that far out and which cannot. When bookingPolicies includes perPlayerFeeDollars or perPlayerFeePolicy, ALWAYS tell the user about the per-player fee — it affects total cost beyond the court rental price. When checkInPolicy is present, share it so the user knows what to expect on arrival.
list_facilities
ClaudeList facilities by location. Search by city+state (50-mile radius), state alone, zip code (50-mile radius), or lat+lng coordinates (50-mile radius). Returns a list of facility IDs, names, and comingSoon status. Includes both bookable and coming-soon facilities. Use this when the user wants to browse or pick from facilities in an area.
search_availability
ClaudeSearch for available court times at nearby facilities. Only call after the user has provided or confirmed sport, location, date, and time. If any are missing, ask the user before calling. Duration is optional and defaults to 60 minutes. Returns sportId (use for get_booking_link), facilities with available slots, and hint. Facilities may include perPlayerFeeDollars, perPlayerFeePolicy, and checkInPolicy when set — mention these to the user when present.
search_open_play
ClaudeFind open play (drop-in) sessions with spots left at CourtsApp facilities near a location, or at one facility. Use when the user wants to join a session with other players rather than reserve a whole court. Requires location (city+state or zip preferred) or facilityId. date, time, sport, and level are optional filters; with no date it looks 7 days ahead. Returns available (false means open play is not live yet — tell the user it is coming soon) and facilities, each with up to 5 sessions: level, when (facility-local), price per player, spotsLeft, maxPlayers, and url. The url is the booking page for that session — share it once the user picks a session.