CourtReserve MCP by usefulapi
REMOTE · COURTRESERVE.USEFULAPI.IO
Read club members, court availability, reservations, events, attendance and revenue reports.
Available components
Last scanned (11 minutes ago)
Scores higher than 4% of remote servers
Reachable. Last reached 5 Nov 2026.
Category Project Management
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →
Endpoint Security46
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- Authorisation not yet verified: we couldn't confirm whether this endpoint requires it. View diagnostics → Unverified
- HTTPS enforcement could not be verified: the plaintext port redirected somewhere other than https, so enforcement is unproven. View diagnostics → Unverified
- HSTS check failed: the Strict-Transport-Security header is absent. See how to fix → View diagnostics → Fail
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
Transport & Reachability0
- Transport check failed: declared streamable-http, but the endpoint redirected instead of responding directly. See how to fix → View diagnostics → Fail
Schema Quality & AI Usability0
- Schema not yet verified: we couldn't read the endpoint's schema, or could read only part of its tool list.Unverified
Stability & Change Management0
- Stability not yet verified: not enough scan history yet (needs a 30-day window).Unverified
Tool Coverage0
- Tool coverage not yet verified: we couldn't read the endpoint's tools, or could read only part of the list.Unverified
Tool Safety0
- Tool safety not yet verified: we couldn't read the endpoint's tools, or could read only part of the list.Unverified
Capabilities0
- Capabilities not yet verified: we couldn't read the endpoint's capabilities.Unverified
Unverified: 5 categories
Categories scored 0 because we could not verify them: authentication we do not have, an unreachable endpoint, or not enough scan history. We only credit what we can confirm.
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 1 Nov 26 −48
- Endpoint reachability: reachable → not serving MCP ▼ security
- Stability: 0.10 → unverified ▼ security
- Tool safety: pass → unverified ▼ security
- Authorization: pass → unverified ▼ security
- Schema quality: 100 → unverified ▼ functional
- Capabilities: pass → unverified ▼ functional
- Tool coverage: 100 → unverified ▼ functional
- 31 Oct 26 +3
- Authorization: partial → pass ▲ security
- MCP protocol: fail → pass ▲ functional
- New prompt “review_court_schedules_and_availability” functional
- New prompt “review_event_registrations_and_waitlists” functional
- New prompt “summarize_club_revenue_and_membership” functional
- MCP protocol version: 2025-06-18 → 2025-11-25 functional
- Server version: 1.4.0 → 1.6.0 functional
- Server version: 1.3.0 → 1.4.0 functional
- Server version: 1.2.2 → 1.3.0 functional
- 30 Oct 26 +1
- Server version: 1.2.1 → 1.2.2 functional
- Server version: 1.2.0 → 1.2.1 functional
- 29 Oct 26 0
- Stability: unverified → 0.03 ▲ functional
- Server version: 1.1.0 → 1.2.0 functional
- Server version: 1.0.0 → 1.1.0 functional
- 28 Oct 26 62
First indexed and scored.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 5 Nov 2026 · Probed https://courtreserve.usefulapi.io/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=usefulapi.io | CN=WE1,O=Google Trust Services,C=US | 13 Sept 2026 | 12 Dec 2026 | ECDSA 256 | ECDSA-SHA256 | d9be3287b0fde9630e825ba1f79bff3f |
| SANs: usefulapi.io, *.usefulapi.io | ||||||
| CN=WE1,O=Google Trust Services,C=US (CA) | CN=GTS Root R4,O=Google Trust Services LLC,C=US | 13 Dec 2023 | 20 Feb 2029 | ECDSA 256 | ECDSA-SHA384 | 7ff31977972c224a76155d13b6d685e3 |
| CN=GTS Root R4,O=Google Trust Services LLC,C=US (CA) | CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE | 15 Nov 2023 | 28 Jan 2028 | ECDSA 384 | SHA256-RSA | 7fe530bf331343bedd821610493d8a1b |
Background: What to check on a remote MCP endpoint →
DNSSEC insecure
Validation of courtreserve.usefulapi.io. — Not signed
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| io. | present | 38690 | 8 | Verified |
| usefulapi.io. | absent | Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation |
Authentication Inconclusive
We could not reach the endpoint well enough to judge its authorisation posture.
| Result | Inconclusive |
|---|---|
| HTTP status | 302 |
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://courtreserve.usefulapi.io/mcp | Redirected | 302 | https://usefulapi.io/courtreserve/ |
| http (plaintext) | http://courtreserve.usefulapi.io/mcp | Inconclusive | 302 | http://courtreserve.usefulapi.io/mcp |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
courtreserve_court_utilization Court utilization ~196
Court utilization report (booked vs available time per time slot) for a period of at most 7 days, optionally for chosen courts, court types, event types, event tags or reservation types. Needs the ReservationReport role (Read). GET /api/v1/reservationreport/courtutilization.
| Name | Type | Req | Description |
|---|---|---|---|
| court_ids | array | – | Only these court ids (courtreserve_list_courts). |
| court_type_ids | array | – | Only these court type ids. |
| end_date | string | yes | Last day of the period (at most 7 days after the first). |
| event_tag_ids | array | – | Only these event tag ids. |
| event_type_ids | array | – | Only these event category ids (courtreserve_list_event_categories). |
| reservation_type_ids | array | – | Only these reservation type ids (courtreserve_list_reservation_types). |
| start_date | string | yes | First day of the period. |
No output schema declared.
No examples provided.
courtreserve_get_court_availability Get court availability ~159
Court availability: each court's operating hours and the time slots already booked, for one date or a date range of at most 31 days (time zone of the club in the reply). Needs the Reservation role (Read). GET /api/v1/reservation/availability.
| Name | Type | Req | Description |
|---|---|---|---|
| court_type_id | integer | – | Only courts of this type (see the court type in courtreserve_list_courts). |
| date | string | – | One date, yyyy-MM-dd. Use this OR from_date + to_date. |
| from_date | string | – | First date of a range, yyyy-MM-dd. |
| to_date | string | – | Last date of the range, yyyy-MM-dd (at most 31 days after from_date). |
No output schema declared.
No examples provided.
courtreserve_get_member_reservations Get a member's reservations ~201
A member's upcoming (or dated) court bookings and event registrations: type, start/end, courts, event name and players. For a family member the reply covers the whole family. Give the member id or your own external id. Needs the Member role (Read). GET /api/v1/member/reservations.
| Name | Type | Req | Description |
|---|---|---|---|
| end_date | string | – | Only reservations ending on or before this club-local date/time (default: open-ended). |
| external_id | string | – | The member's id in your own system (the member's External Id). |
| limit | integer | – | Most rows to return (default 100, max 500). The reply says when rows were left out. |
| organization_member_id | integer | – | CourtReserve member id (courtreserve_list_members). One of this or external_id is required. |
| start_date | string | – | Only reservations ending on or after this club-local date/time (default: now). |
No output schema declared.
No examples provided.
courtreserve_list_cancelled_event_registrations List cancelled event registrations ~139
Cancelled event registrations by cancellation date or by event date, at most 31 days each. Give at least one period. Needs the EventRegistrationReport role (Read). GET /api/v1/eventregistrationreport/listcancelled.
| Name | Type | Req | Description |
|---|---|---|---|
| cancelled_from | string | – | Cancelled on or after. |
| cancelled_to | string | – | Cancelled on or before. |
| event_from | string | – | Events on or after. |
| event_to | string | – | Events on or before. |
| limit | integer | – | Most rows to return (default 100, max 500). The reply says when rows were left out. |
No output schema declared.
No examples provided.
courtreserve_list_cancelled_reservations List cancelled reservations ~143
Cancelled court reservations by the date they were cancelled or by the reservation period, at most 31 days each. Give at least one period. Needs the ReservationReport role (Read). GET /api/v1/reservationreport/listcancelled.
| Name | Type | Req | Description |
|---|---|---|---|
| cancelled_from | string | – | Cancelled on or after. |
| cancelled_to | string | – | Cancelled on or before. |
| limit | integer | – | Most rows to return (default 100, max 500). The reply says when rows were left out. |
| reservations_from | string | – | Reservations starting on or after. |
| reservations_to | string | – | Reservations starting on or before. |
No output schema declared.
No examples provided.
courtreserve_list_checkins List check-ins ~180
Check-in report: who checked in to court bookings and events, by check-in period or reservation period (at most 31 days each). Give at least one period. Role: the key's access to attendance data. GET /api/v1/attendancereport/checkin.
| Name | Type | Req | Description |
|---|---|---|---|
| checkin_from | string | – | Checked in on or after. |
| checkin_to | string | – | Checked in on or before. |
| include_court_booking | boolean | – | Include court bookings (default true). |
| include_events | boolean | – | Include events (default true). |
| limit | integer | – | Most rows to return (default 100, max 500). The reply says when rows were left out. |
| reservations_from | string | – | Reservations starting on or after. |
| reservations_to | string | – | Reservations starting on or before. |
No output schema declared.
No examples provided.
courtreserve_list_courts List courts ~82
The club's courts: id, label, court type and order. Use the ids in court utilization and court blocks. Needs the Reservation role (Read). GET /api/v1/reservation/courts.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Most rows to return (default 100, max 500). The reply says when rows were left out. |
No output schema declared.
No examples provided.
courtreserve_list_event_categories List event categories ~111
Event categories (clinics, round robins, tournaments, open play...) with ids. Needs the EventCalendar role (Read). GET /api/v1/eventcalendar/categories.
| Name | Type | Req | Description |
|---|---|---|---|
| category_id | integer | – | Only this category id. |
| is_public | boolean | – | Only public (true) or only non-public (false) categories; omit for all. |
| limit | integer | – | Most rows to return (default 100, max 500). The reply says when rows were left out. |
No output schema declared.
No examples provided.
courtreserve_list_event_registrations List event registrations ~172
Active registrations for events, clinics and lessons with the member, event and what was paid. Give an event period or a registration period, at most 31 days each. Needs the EventRegistrationReport role (Read). GET /api/v1/eventregistrationreport/listactive.
| Name | Type | Req | Description |
|---|---|---|---|
| event_from | string | – | Events on or after. |
| event_to | string | – | Events on or before. |
| include_courts | boolean | – | Add court information. |
| include_partner_info | boolean | – | Add partner(s) for team events. |
| limit | integer | – | Most rows to return (default 100, max 500). The reply says when rows were left out. |
| registered_from | string | – | Registered on or after. |
| registered_to | string | – | Registered on or before. |
No output schema declared.
No examples provided.
courtreserve_list_event_waitlist List event waitlist ~160
People on event waitlists. Give an event period or a registration period, at most 31 days each. Needs the EventRegistrationReport role (Read). GET /api/v1/eventregistrationreport/listwaitlist.
| Name | Type | Req | Description |
|---|---|---|---|
| event_from | string | – | Events on or after. |
| event_to | string | – | Events on or before. |
| include_courts | boolean | – | Add court information. |
| include_partner_info | boolean | – | Add partner(s) for team events. |
| limit | integer | – | Most rows to return (default 100, max 500). The reply says when rows were left out. |
| registered_from | string | – | Registered on or after. |
| registered_to | string | – | Registered on or before. |
No output schema declared.
No examples provided.
courtreserve_list_events List events ~196
Events on the club calendar between two dates: name, category, start/end, courts, instructors, capacity, registered and waitlist counts, price and rating limits. SSO links are not returned. Needs the EventCalendar role (Read). GET /api/v1/eventcalendar/eventlist.
| Name | Type | Req | Description |
|---|---|---|---|
| category_id | integer | – | Only this event category (courtreserve_list_event_categories). |
| end_date | string | – | Events up to this club-local date/time. |
| include_price_info | boolean | – | Add prices (default true). |
| include_rating_restrictions | boolean | – | Add rating restrictions. |
| include_tags | boolean | – | Add event tags. |
| limit | integer | – | Most rows to return (default 100, max 500). The reply says when rows were left out. |
| start_date | string | – | Events from this club-local date/time. |
| status | string | – | Event status (default Active). |
No output schema declared.
No examples provided.
courtreserve_list_families List families ~87
List family accounts (family id, name, number, members and membership). Needs the Family role (Read). GET /api/v1/family/get.
| Name | Type | Req | Description |
|---|---|---|---|
| family_id | integer | – | Only this family (organizationMemberFamilyId). |
| limit | integer | – | Most rows to return (default 100, max 500). The reply says when rows were left out. |
No output schema declared.
No examples provided.
courtreserve_list_league_sessions List league sessions ~154
League sessions, for one league or one session, optionally with their game days and registered players. Paged. Needs the League role (Read). GET /api/v1/league/sessions.
| Name | Type | Req | Description |
|---|---|---|---|
| include_game_days | boolean | – | Add each session's game days. |
| include_players | boolean | – | Add each session's registered players (use with one session). |
| league_id | integer | – | Only this league's sessions. |
| page | integer | – | Page number, from 1 (default 1). Pass the previous reply's next_page. |
| page_size | integer | – | Sessions per page, 1-200 (default 100). |
| session_id | integer | – | Only this session. |
No output schema declared.
No examples provided.
courtreserve_list_leagues List leagues ~125
The club's leagues, with their sessions (id and name) when include_sessions is true (default). Paged. Needs the League role (Read). GET /api/v1/league/get.
| Name | Type | Req | Description |
|---|---|---|---|
| include_sessions | boolean | – | Add each league's sessions (default true). |
| league_id | integer | – | Only this league id. |
| page | integer | – | Page number, from 1 (default 1). Pass the previous reply's next_page. |
| page_size | integer | – | Leagues per page, 1-200 (default 100). |
No output schema declared.
No examples provided.
courtreserve_list_members List members ~373
List the club's members (name, email, phone, membership type and status, start/end/next payment dates, family id). Filter by member id, family, exact email, phone or the created (at most 30 days) / created-or-updated (at most 31 days) time. Paged: pass next_page back as page. PIN codes and SSO links are not returned. Needs the Member role (Read). GET /api/v1/member/get.
| Name | Type | Req | Description |
|---|---|---|---|
| created_from | string | – | Only members created at or after this club-local date-time (with created_to: at most 30 days apart). |
| created_or_updated_from | string | – | Only members created or changed at or after this club-local date-time (with the end: at most 31 days apart). |
| created_or_updated_to | string | – | Only members created or changed at or before this club-local date-time. |
| created_to | string | – | Only members created at or before this club-local date-time. |
| string | – | Exact email address (no partial matches). | |
| family_id | integer | – | Only the members of this family (organizationMemberFamilyId). |
| include_custom_fields | boolean | – | Add the club's user-defined fields. |
| include_marketing_consent | boolean | – | Add current email/text opt-in and the consent history. |
| include_ratings | boolean | – | Add skill ratings (DUPR, UTR and so on). |
| organization_member_id | integer | – | Only this member id. |
| page | integer | – | Page number, from 1 (default 1). Pass the previous reply's next_page. |
| page_size | integer | – | Members per page, 1-200 (default 50). |
| phone_number | string | – | Phone number. |
No output schema declared.
No examples provided.
courtreserve_list_membership_types List membership types ~97
The club's membership types (id, name, price, billing and status). Use the ids to filter the membership report. Needs the MembershipType role (Read). GET /api/v1/membershiptype/get.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Most rows to return (default 100, max 500). The reply says when rows were left out. |
| membership_type_id | integer | – | Only this membership type id. |
No output schema declared.
No examples provided.
courtreserve_list_promo_codes List promo codes ~94
The club's promo codes: code, name, type, value, dates, limits and what they apply to. Needs the PromoCodes role (Read). GET /api/v1/promocode/get.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Most rows to return (default 100, max 500). The reply says when rows were left out. |
| promo_code_id | integer | – | Only this promo code id. |
No output schema declared.
No examples provided.
courtreserve_list_reservation_types List reservation types ~78
The club's reservation types (court booking, lesson, court block and so on) with ids. Needs the Reservation role (Read). GET /api/v1/reservation/reservationtypes.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Most rows to return (default 100, max 500). The reply says when rows were left out. |
No output schema declared.
No examples provided.
courtreserve_list_reservations List active reservations ~200
Active court reservations for a reservation period (the dates played) or a created/updated period, at most 31 days each: type, courts, start/end, players with contact details and what they owe/paid. Give at least one period. PIN codes are not returned. Needs the ReservationReport role (Read). GET /api/v1/reservationreport/listactive.
| Name | Type | Req | Description |
|---|---|---|---|
| created_or_updated_from | string | – | Reservations created or changed on or after. |
| created_or_updated_to | string | – | Reservations created or changed on or before. |
| include_custom_fields | boolean | – | Add user-defined fields. |
| include_ratings | boolean | – | Add player ratings. |
| limit | integer | – | Most rows to return (default 100, max 500). The reply says when rows were left out. |
| reservations_from | string | – | Reservations starting on or after. |
| reservations_to | string | – | Reservations starting on or before. |
No output schema declared.
No examples provided.
courtreserve_list_transactions List transactions ~261
Transactions (fees, membership fees, payments, refunds...) by transaction date or reservation date: id, type, date, subtotal, tax, total, unpaid amount, payment type, category and the member's name, email and phone. Filter by type, paid/unpaid and payment type. Give at least one period. Needs the Transactions role (Read). GET /api/v1/transactions/list.
| Name | Type | Req | Description |
|---|---|---|---|
| include_promo_info | boolean | – | Add the promo codes each fee used. |
| limit | integer | – | Most rows to return (default 100, max 500). The reply says when rows were left out. |
| only_paid | boolean | – | Only paid transactions. |
| only_unpaid | boolean | – | Only unpaid transactions. |
| payment_types | string | – | Comma-separated payment types, for example 'Cash,Credit Card,Balance'. |
| reservation_from | string | – | Reservations starting on or after. |
| reservation_to | string | – | Reservations starting on or before. |
| transaction_from | string | – | Transactions on or after. |
| transaction_to | string | – | Transactions on or before. |
| transaction_types | string | – | Comma-separated transaction types, for example 'Fee,Membership Fee,Payment' (the vendor's own names). |
No output schema declared.
No examples provided.
courtreserve_membership_report Membership report ~269
The Membership report: one row per member or family membership with status, billing cadence, start/end, next payment and cancellation history. Filter by type, assignment (family or individual) and the start, end, next-payment or cancellation dates. Paged. Needs the Membership Report role (Read). GET /api/v1/membershipreport/list.
| Name | Type | Req | Description |
|---|---|---|---|
| assignment_type | string | – | Only family or only individual memberships (default both). |
| canceled_from | string | – | Canceled on or after. |
| canceled_to | string | – | Canceled on or before. |
| end_from | string | – | Membership ends on or after. |
| end_to | string | – | Membership ends on or before. |
| membership_type_ids | array | – | Only these membership type ids (courtreserve_list_membership_types). |
| next_payment_from | string | – | Next payment on or after. |
| next_payment_to | string | – | Next payment on or before. |
| page | integer | – | Page number, from 1 (default 1). Pass the previous reply's next_page. |
| page_size | integer | – | Rows per page, 1-500 (default 100). |
| start_from | string | – | Membership started on or after. |
| start_to | string | – | Membership started on or before. |
No output schema declared.
No examples provided.
courtreserve_sales_summary Sales summary ~109
Detailed sales summary for a payment period of at most 31 days: paid fees plus refunds by category and payment type. Needs the Transactions role (Read). GET /api/v1/transactions/salessummarydetailed.
| Name | Type | Req | Description |
|---|---|---|---|
| include_promo_info | boolean | – | Add the promo codes each fee used. |
| payment_from | string | yes | First day of the payment period. |
| payment_to | string | yes | Last day of the payment period (at most 31 days after the first). |
No output schema declared.
No examples provided.
courtreserve_whos_here Who is here ~175
Who is booked in a time window (for example today): member reservations and event registrations with the member, court and time, optionally including or only cancelled ones. The window can be at most 31 days. Needs the ReservationReport role (Read). GET /api/v1/reservationreport/whoisheretoday.
| Name | Type | Req | Description |
|---|---|---|---|
| cancelled_only | boolean | – | Only cancelled reservations (wins over include_cancelled). |
| end | string | yes | End of the window, club-local yyyy-MM-ddTHH:mm:ss. |
| include_cancelled | boolean | – | Also return cancelled reservations. |
| limit | integer | – | Most rows to return (default 100, max 500). The reply says when rows were left out. |
| start | string | yes | Start of the window, club-local yyyy-MM-ddTHH:mm:ss. |
No output schema declared.
No examples provided.
How do I install the CourtReserve MCP by usefulapi server?
CourtReserve MCP by usefulapi is a hosted endpoint at https://courtreserve.usefulapi.io/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
remote · courtreserve.usefulapi.io
claude mcp add --transport http io-usefulapi-courtreserve 'https://courtreserve.usefulapi.io/mcp'
What is the CourtReserve MCP by usefulapi server?
CourtReserve MCP by usefulapi is listed in the public MCP registry as io.usefulapi/courtreserve. Read club members, court availability, reservations, events, attendance and revenue reports. This page covers its hosted endpoint (https://courtreserve.usefulapi.io/mcp).
Is the CourtReserve MCP by usefulapi server safe to use?
CourtReserve MCP by usefulapi scores 18 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the CourtReserve MCP by usefulapi server expose?
CourtReserve MCP by usefulapi exposes 23 tools: courtreserve_list_members, courtreserve_get_member_reservations, courtreserve_list_families, courtreserve_list_membership_types, courtreserve_membership_report, and 18 more. Their descriptions and schemas cost roughly 3,761 tokens of context every time the server is loaded.
Does the CourtReserve MCP by usefulapi server require authentication?
Its publisher declares no required credentials for CourtReserve MCP by usefulapi. We have not been able to confirm that against the live endpoint, and a server can require authorisation without declaring it here.
Is the CourtReserve MCP by usefulapi server still maintained?
CourtReserve MCP by usefulapi is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.