MCP App Store
by KeenEthics

Overview

Instantly find and book open courts for tennis, pickleball, padel, and more, directly within ChatGPT. Powered by CourtsApp, Hey Courtney is an AI booking concierge that finds and reserves nearby courts across every racquet sport. From search to confirmation, bookings are handled with real-time availability, transparent pricing, and secure payments. Access courts via chat, voice, text, or in-app, all in one seamless experience within the LLM. No calls. No hassle. Just play.

Tools

get_facility_details

ChatGPT
Look 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

ChatGPT
List 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

ChatGPT
Search 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

ChatGPT
Find 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_facility_details

Claude
Look 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

Claude
List 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

Claude
Search 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

Claude
Find 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.

Capabilities

Interactive

Example Prompts

Click any prompt to copy it.

Similar Apps