courtreserve-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| COURTRESERVE_PASSWORD | Yes | Your CourtReserve API password | |
| COURTRESERVE_USERNAME | Yes | Your CourtReserve API username (format: Org_<numeric>) |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| health_checkA | Verify credentials work. Returns location list as a smoke test. Use when: "is my CourtReserve API key valid?" - if this fails, all other tools will too. Check COURTRESERVE_USERNAME / COURTRESERVE_PASSWORD and that the API key is enabled on an Advance/Momentum/Enterprise plan. |
| list_membersA | List club members with optional paging and search filter. Use when: "show me all members", "find member Jane Doe", "list active members at our downtown location". Args: skip: Records to skip (paging offset). Default 0. take: Page size (max records returned). Default 100. q: Search query - matches name/email substring. location_id: Filter to a single location (multi-location clubs only). |
| get_memberA | Fetch a single member's full profile by id. Use when: "show member 12345's profile", "what membership tier does Sarah have?". Returns the full record including family, membership, contact info, and account status. |
| create_memberA | Create a new club member. Use when: "add Jane Doe to the club", "register a new member". Args: first_name: Member's first name (required). last_name: Member's last name (required). email: Primary email - used for login (required). phone: Optional phone number. location_id: Home location for multi-location clubs. notes: Internal admin notes. |
| update_memberA | Update an existing member. Partial updates are supported. Use when: "change Jane's phone number", "fix typo in member 12345 email". Only fields passed in are updated. |
| delete_memberA | Remove a member from the club. Use with caution - often irreversible. Use when: "delete member 12345". Consider cancelling the membership instead - cancellation preserves the history while removing billing. |
| list_membershipsA | List memberships, optionally filtered by member or location. Use when: "what memberships are active?", "show member 12345's membership history", "list all memberships at location 1". |
| get_membershipA | Fetch a single membership by id - tier, status, dates, billing. Use when: "show membership 67890's full details". |
| create_membershipA | Assign a membership tier to a member. Use when: "give Jane a Gold membership starting today". Args: member_id: Target member id. tier: Membership tier name as configured in CourtReserve (e.g. "Gold", "Family", "Junior"). Exact strings depend on club configuration. start_date: ISO date (YYYY-MM-DD). Defaults to today. end_date: ISO date (YYYY-MM-DD). Open-ended if omitted. location_id: Location (multi-location clubs only). |
| update_membershipB | Update a membership tier, end date, or status. Use when: "extend membership 67890 to year-end", "change tier to Gold". |
| cancel_membershipA | Cancel (terminate) a membership. Preserves the historical record. Use when: "cancel membership 67890". Preferable to deleting the member outright - keeps the audit trail. |
| list_familiesC | List family accounts (linked members under a primary contact). Use when: "list all families", "find family accounts at our west location". |
| get_familyA | Fetch a single family account by id - includes linked members. Use when: "show family 555's profile - which members are linked?". |
| add_family_memberA | Link an existing member into a family account. Use when: "add Sarah to the Doe family account". Args: family_id: Target family id. member_id: Member to add to the family. relationship: Optional relationship string ("spouse", "child", etc.). |
| list_reservationsA | List court reservations, with optional filters by location, court, member, and date range. Use when: "what reservations are on court 3 this Saturday?", "show all reservations for member 12345 in the next 30 days". Args: skip: Paging offset. take: Page size (default 100). location_id: Filter to one location. court_id: Filter to one court. member_id: Filter to one member's reservations. start_date: ISO date (YYYY-MM-DD) lower bound. end_date: ISO date (YYYY-MM-DD) upper bound. |
| get_reservationA | Fetch a single reservation by id - full player list, court, time, cost. Use when: "show reservation 8888 - who booked it?". |
| create_reservationA | Create a new court reservation. Use when: "book court 3 for Sarah at 2pm for 90 minutes with John". Args: court_id: Target court id. start_time: ISO datetime (YYYY-MM-DDTHH:MM:SS) in club local time. duration_minutes: Reservation length in minutes. primary_member_id: Booking member id. additional_member_ids: Optional list of additional member ids (for doubles, group play, etc.). notes: Optional admin notes. |
| cancel_reservationA | Cancel (delete) a court reservation. Use when: "cancel reservation 8888". Sends a courtesy email to the primary member if CourtReserve is configured to do so. |
| list_eventsB | List events (clinics, lessons, tournaments, round robins, open play). Use when: "what events are happening next month?", "list all tournaments in Q3". |
| get_eventA | Fetch a single event by id - description, schedule, capacity, price. Use when: "show event 4444 - when does it start, what's the cost?". |
| list_event_registrationsB | List registrations (signups) for an event. Use when: "who's signed up for the Tuesday clinic?". |
| register_for_eventA | Register a member for an event. Use when: "sign Sarah up for the Tuesday clinic". Args: event_id: Target event id. member_id: Member to register. notes: Optional notes (partner name, skill level, etc.). |
| cancel_event_registrationA | Cancel a member's event registration. Use when: "pull Sarah out of the Tuesday clinic". |
| list_transactionsA | List payment transactions - charges, credits, refunds. Use when: "show me yesterday's revenue", "what did member 12345 spend this month?". Args: skip: Paging offset. take: Page size (default 100). location_id: Filter to one location. member_id: Filter to one member. start_date: ISO date lower bound. end_date: ISO date upper bound. |
| get_transactionA | Fetch a single transaction by id - amount, type, payment method, status. Use when: "show transaction 9999 - what was it for?". |
| list_courtsA | List courts at one or all locations. Use when: "what courts do we have at location 1?", "list all 12 courts". |
| get_courtA | Fetch a single court by id - surface type, location, hourly rate. Use when: "show court 5 - what's the surface and rate?". |
| list_locationsA | List the club's locations (sites / branches). Use when: "list all our club locations". Single-location clubs get a 1-item list. |
| get_locationA | Fetch a single location by id - address, hours, contact info. Use when: "show our downtown location's details". |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/sanjibani/courtreserve-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server