{"$schema":"https://verifymcp.io/schemas/trust-report.json","schemaVersion":1,"license":{"name":"CC BY-NC 4.0","url":"https://creativecommons.org/licenses/by-nc/4.0/"},"generatedAt":"2026-11-05T17:25:14.818Z","url":"https://verifymcp.io/servers/io-usefulapi-courtreserve/courtreserve","markdownUrl":"https://verifymcp.io/servers/io-usefulapi-courtreserve/courtreserve.md","server":{"slug":"io-usefulapi-courtreserve","name":"CourtReserve MCP by usefulapi","registryName":"io.usefulapi/courtreserve","description":"Read club members, court availability, reservations, events, attendance and revenue reports.","registryStatus":"active","deletedAt":null,"statusMessage":null,"liveness":"live","publisher":{"class":"unknown","claimed":false}},"component":{"slug":"courtreserve","type":"remote","identifier":"https://courtreserve.usefulapi.io/mcp","withdrawn":false,"url":"https://verifymcp.io/servers/io-usefulapi-courtreserve/courtreserve","version":"1.8.3","transport":null,"scoredAt":"2026-11-05T15:03:38.147Z"},"score":{"total":18,"tier":"low","status":"scored","weekDelta":-44,"history":[{"date":"2026-11-05","total":18},{"date":"2026-11-04","total":18},{"date":"2026-11-03","total":18},{"date":"2026-11-02","total":18},{"date":"2026-11-01","total":18},{"date":"2026-10-31","total":66},{"date":"2026-10-30","total":63},{"date":"2026-10-29","total":62},{"date":"2026-10-28","total":62}]},"categories":[{"name":"Endpoint Security","score":46,"verdict":"fail","reasons":["The endpoint's TLS certificate is valid, in date, and uses a strong key.","Authorisation not yet verified: we couldn't confirm whether this endpoint requires it.","HTTPS enforcement could not be verified: the plaintext port redirected somewhere other than https, so enforcement is unproven.","HSTS check failed: the Strict-Transport-Security header is absent.","DNSSEC check failed: this domain isn't protected by DNSSEC."],"codes":[{"code":"tls.valid","args":{}},{"code":"auth.unreachable","args":{}},{"code":"https.inconclusive","args":{"reason":"redirect_not_https"}},{"code":"headers.hsts_absent","args":{}},{"code":"dnssec.absent","args":{}}]},{"name":"Transport & Reachability","score":0,"verdict":"fail","reasons":["Transport check failed: declared streamable-http, but the endpoint redirected instead of responding directly."],"codes":[{"code":"transport.redirected","args":{"transport":"streamable-http"}}]},{"name":"Schema Quality & AI Usability","score":0,"verdict":"unverified","reasons":["Schema not yet verified: we couldn't read the endpoint's schema, or could read only part of its tool list."],"codes":[{"code":"schema.unreachable","args":{}}]},{"name":"Stability & Change Management","score":0,"verdict":"unverified","reasons":["Stability not yet verified: not enough scan history yet (needs a 30-day window)."],"codes":[{"code":"stability.insufficient_history","args":{}}]},{"name":"Tool Coverage","score":0,"verdict":"unverified","reasons":["Tool coverage not yet verified: we couldn't read the endpoint's tools, or could read only part of the list."],"codes":[{"code":"toolquality.unreachable","args":{}}]},{"name":"Tool Safety","score":0,"verdict":"unverified","reasons":["Tool safety not yet verified: we couldn't read the endpoint's tools, or could read only part of the list."],"codes":[{"code":"toolsafety.unreachable","args":{}}]},{"name":"Capabilities","score":0,"verdict":"unverified","reasons":["Capabilities not yet verified: we couldn't read the endpoint's capabilities."],"codes":[{"code":"cap.unreachable","args":{}}]}],"inconclusive":["Authorisation not yet verified: we couldn't confirm whether this endpoint requires it.","HTTPS enforcement could not be verified: the plaintext port redirected somewhere other than https, so enforcement is unproven.","Schema not yet verified: we couldn't read the endpoint's schema, or could read only part of its tool list.","Stability not yet verified: not enough scan history yet (needs a 30-day window).","Tool coverage not yet verified: we couldn't read the endpoint's tools, or could read only part of the list.","Tool safety not yet verified: we couldn't read the endpoint's tools, or could read only part of the list.","Capabilities not yet verified: we couldn't read the endpoint's capabilities."],"malware":[],"components":[{"slug":"courtreserve","type":"remote","identifier":"https://courtreserve.usefulapi.io/mcp","withdrawn":false,"score":18,"current":true,"url":"https://verifymcp.io/servers/io-usefulapi-courtreserve/courtreserve","markdownUrl":"https://verifymcp.io/servers/io-usefulapi-courtreserve/courtreserve.md"}],"facts":[{"label":"Endpoint","value":"https://courtreserve.usefulapi.io/mcp"},{"label":"Transports","value":"streamable-http"},{"label":"Auth","value":"none"},{"label":"Version","value":"1.8.3"}],"install":{"available":true,"bundleSha256":null},"tools":[{"name":"courtreserve_list_members","title":"List members","description":"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.","inputs":[{"name":"created_from","type":"string","required":false,"description":"Only members created at or after this club-local date-time (with created_to: at most 30 days apart)."},{"name":"created_or_updated_from","type":"string","required":false,"description":"Only members created or changed at or after this club-local date-time (with the end: at most 31 days apart)."},{"name":"created_or_updated_to","type":"string","required":false,"description":"Only members created or changed at or before this club-local date-time."},{"name":"created_to","type":"string","required":false,"description":"Only members created at or before this club-local date-time."},{"name":"email","type":"string","required":false,"description":"Exact email address (no partial matches)."},{"name":"family_id","type":"integer","required":false,"description":"Only the members of this family (organizationMemberFamilyId)."},{"name":"include_custom_fields","type":"boolean","required":false,"description":"Add the club's user-defined fields."},{"name":"include_marketing_consent","type":"boolean","required":false,"description":"Add current email/text opt-in and the consent history."},{"name":"include_ratings","type":"boolean","required":false,"description":"Add skill ratings (DUPR, UTR and so on)."},{"name":"organization_member_id","type":"integer","required":false,"description":"Only this member id."},{"name":"page","type":"integer","required":false,"description":"Page number, from 1 (default 1). Pass the previous reply's next_page."},{"name":"page_size","type":"integer","required":false,"description":"Members per page, 1-200 (default 50)."},{"name":"phone_number","type":"string","required":false,"description":"Phone number."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":373},{"name":"courtreserve_get_member_reservations","title":"Get a member's reservations","description":"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.","inputs":[{"name":"end_date","type":"string","required":false,"description":"Only reservations ending on or before this club-local date/time (default: open-ended)."},{"name":"external_id","type":"string","required":false,"description":"The member's id in your own system (the member's External Id)."},{"name":"limit","type":"integer","required":false,"description":"Most rows to return (default 100, max 500). The reply says when rows were left out."},{"name":"organization_member_id","type":"integer","required":false,"description":"CourtReserve member id (courtreserve_list_members). One of this or external_id is required."},{"name":"start_date","type":"string","required":false,"description":"Only reservations ending on or after this club-local date/time (default: now)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":201},{"name":"courtreserve_list_families","title":"List families","description":"List family accounts (family id, name, number, members and membership). Needs the Family role (Read). GET /api/v1/family/get.","inputs":[{"name":"family_id","type":"integer","required":false,"description":"Only this family (organizationMemberFamilyId)."},{"name":"limit","type":"integer","required":false,"description":"Most rows to return (default 100, max 500). The reply says when rows were left out."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":87},{"name":"courtreserve_list_membership_types","title":"List membership types","description":"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.","inputs":[{"name":"limit","type":"integer","required":false,"description":"Most rows to return (default 100, max 500). The reply says when rows were left out."},{"name":"membership_type_id","type":"integer","required":false,"description":"Only this membership type id."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":97},{"name":"courtreserve_membership_report","title":"Membership report","description":"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.","inputs":[{"name":"assignment_type","type":"string","required":false,"description":"Only family or only individual memberships (default both)."},{"name":"canceled_from","type":"string","required":false,"description":"Canceled on or after."},{"name":"canceled_to","type":"string","required":false,"description":"Canceled on or before."},{"name":"end_from","type":"string","required":false,"description":"Membership ends on or after."},{"name":"end_to","type":"string","required":false,"description":"Membership ends on or before."},{"name":"membership_type_ids","type":"array","required":false,"description":"Only these membership type ids (courtreserve_list_membership_types)."},{"name":"next_payment_from","type":"string","required":false,"description":"Next payment on or after."},{"name":"next_payment_to","type":"string","required":false,"description":"Next payment on or before."},{"name":"page","type":"integer","required":false,"description":"Page number, from 1 (default 1). Pass the previous reply's next_page."},{"name":"page_size","type":"integer","required":false,"description":"Rows per page, 1-500 (default 100)."},{"name":"start_from","type":"string","required":false,"description":"Membership started on or after."},{"name":"start_to","type":"string","required":false,"description":"Membership started on or before."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":269},{"name":"courtreserve_list_courts","title":"List courts","description":"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.","inputs":[{"name":"limit","type":"integer","required":false,"description":"Most rows to return (default 100, max 500). The reply says when rows were left out."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":82},{"name":"courtreserve_list_reservation_types","title":"List reservation types","description":"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.","inputs":[{"name":"limit","type":"integer","required":false,"description":"Most rows to return (default 100, max 500). The reply says when rows were left out."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":78},{"name":"courtreserve_get_court_availability","title":"Get court availability","description":"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.","inputs":[{"name":"court_type_id","type":"integer","required":false,"description":"Only courts of this type (see the court type in courtreserve_list_courts)."},{"name":"date","type":"string","required":false,"description":"One date, yyyy-MM-dd. Use this OR from_date + to_date."},{"name":"from_date","type":"string","required":false,"description":"First date of a range, yyyy-MM-dd."},{"name":"to_date","type":"string","required":false,"description":"Last date of the range, yyyy-MM-dd (at most 31 days after from_date)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":159},{"name":"courtreserve_list_reservations","title":"List active reservations","description":"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.","inputs":[{"name":"created_or_updated_from","type":"string","required":false,"description":"Reservations created or changed on or after."},{"name":"created_or_updated_to","type":"string","required":false,"description":"Reservations created or changed on or before."},{"name":"include_custom_fields","type":"boolean","required":false,"description":"Add user-defined fields."},{"name":"include_ratings","type":"boolean","required":false,"description":"Add player ratings."},{"name":"limit","type":"integer","required":false,"description":"Most rows to return (default 100, max 500). The reply says when rows were left out."},{"name":"reservations_from","type":"string","required":false,"description":"Reservations starting on or after."},{"name":"reservations_to","type":"string","required":false,"description":"Reservations starting on or before."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":200},{"name":"courtreserve_list_cancelled_reservations","title":"List cancelled reservations","description":"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.","inputs":[{"name":"cancelled_from","type":"string","required":false,"description":"Cancelled on or after."},{"name":"cancelled_to","type":"string","required":false,"description":"Cancelled on or before."},{"name":"limit","type":"integer","required":false,"description":"Most rows to return (default 100, max 500). The reply says when rows were left out."},{"name":"reservations_from","type":"string","required":false,"description":"Reservations starting on or after."},{"name":"reservations_to","type":"string","required":false,"description":"Reservations starting on or before."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":143},{"name":"courtreserve_whos_here","title":"Who is here","description":"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.","inputs":[{"name":"cancelled_only","type":"boolean","required":false,"description":"Only cancelled reservations (wins over include_cancelled)."},{"name":"end","type":"string","required":true,"description":"End of the window, club-local yyyy-MM-ddTHH:mm:ss."},{"name":"include_cancelled","type":"boolean","required":false,"description":"Also return cancelled reservations."},{"name":"limit","type":"integer","required":false,"description":"Most rows to return (default 100, max 500). The reply says when rows were left out."},{"name":"start","type":"string","required":true,"description":"Start of the window, club-local yyyy-MM-ddTHH:mm:ss."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":175},{"name":"courtreserve_court_utilization","title":"Court utilization","description":"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.","inputs":[{"name":"court_ids","type":"array","required":false,"description":"Only these court ids (courtreserve_list_courts)."},{"name":"court_type_ids","type":"array","required":false,"description":"Only these court type ids."},{"name":"end_date","type":"string","required":true,"description":"Last day of the period (at most 7 days after the first)."},{"name":"event_tag_ids","type":"array","required":false,"description":"Only these event tag ids."},{"name":"event_type_ids","type":"array","required":false,"description":"Only these event category ids (courtreserve_list_event_categories)."},{"name":"reservation_type_ids","type":"array","required":false,"description":"Only these reservation type ids (courtreserve_list_reservation_types)."},{"name":"start_date","type":"string","required":true,"description":"First day of the period."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":196},{"name":"courtreserve_list_event_categories","title":"List event categories","description":"Event categories (clinics, round robins, tournaments, open play...) with ids. Needs the EventCalendar role (Read). GET /api/v1/eventcalendar/categories.","inputs":[{"name":"category_id","type":"integer","required":false,"description":"Only this category id."},{"name":"is_public","type":"boolean","required":false,"description":"Only public (true) or only non-public (false) categories; omit for all."},{"name":"limit","type":"integer","required":false,"description":"Most rows to return (default 100, max 500). The reply says when rows were left out."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":111},{"name":"courtreserve_list_events","title":"List events","description":"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.","inputs":[{"name":"category_id","type":"integer","required":false,"description":"Only this event category (courtreserve_list_event_categories)."},{"name":"end_date","type":"string","required":false,"description":"Events up to this club-local date/time."},{"name":"include_price_info","type":"boolean","required":false,"description":"Add prices (default true)."},{"name":"include_rating_restrictions","type":"boolean","required":false,"description":"Add rating restrictions."},{"name":"include_tags","type":"boolean","required":false,"description":"Add event tags."},{"name":"limit","type":"integer","required":false,"description":"Most rows to return (default 100, max 500). The reply says when rows were left out."},{"name":"start_date","type":"string","required":false,"description":"Events from this club-local date/time."},{"name":"status","type":"string","required":false,"description":"Event status (default Active)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":196},{"name":"courtreserve_list_event_registrations","title":"List event registrations","description":"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.","inputs":[{"name":"event_from","type":"string","required":false,"description":"Events on or after."},{"name":"event_to","type":"string","required":false,"description":"Events on or before."},{"name":"include_courts","type":"boolean","required":false,"description":"Add court information."},{"name":"include_partner_info","type":"boolean","required":false,"description":"Add partner(s) for team events."},{"name":"limit","type":"integer","required":false,"description":"Most rows to return (default 100, max 500). The reply says when rows were left out."},{"name":"registered_from","type":"string","required":false,"description":"Registered on or after."},{"name":"registered_to","type":"string","required":false,"description":"Registered on or before."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":172},{"name":"courtreserve_list_event_waitlist","title":"List event waitlist","description":"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.","inputs":[{"name":"event_from","type":"string","required":false,"description":"Events on or after."},{"name":"event_to","type":"string","required":false,"description":"Events on or before."},{"name":"include_courts","type":"boolean","required":false,"description":"Add court information."},{"name":"include_partner_info","type":"boolean","required":false,"description":"Add partner(s) for team events."},{"name":"limit","type":"integer","required":false,"description":"Most rows to return (default 100, max 500). The reply says when rows were left out."},{"name":"registered_from","type":"string","required":false,"description":"Registered on or after."},{"name":"registered_to","type":"string","required":false,"description":"Registered on or before."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":160},{"name":"courtreserve_list_cancelled_event_registrations","title":"List cancelled event registrations","description":"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.","inputs":[{"name":"cancelled_from","type":"string","required":false,"description":"Cancelled on or after."},{"name":"cancelled_to","type":"string","required":false,"description":"Cancelled on or before."},{"name":"event_from","type":"string","required":false,"description":"Events on or after."},{"name":"event_to","type":"string","required":false,"description":"Events on or before."},{"name":"limit","type":"integer","required":false,"description":"Most rows to return (default 100, max 500). The reply says when rows were left out."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":139},{"name":"courtreserve_list_checkins","title":"List check-ins","description":"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.","inputs":[{"name":"checkin_from","type":"string","required":false,"description":"Checked in on or after."},{"name":"checkin_to","type":"string","required":false,"description":"Checked in on or before."},{"name":"include_court_booking","type":"boolean","required":false,"description":"Include court bookings (default true)."},{"name":"include_events","type":"boolean","required":false,"description":"Include events (default true)."},{"name":"limit","type":"integer","required":false,"description":"Most rows to return (default 100, max 500). The reply says when rows were left out."},{"name":"reservations_from","type":"string","required":false,"description":"Reservations starting on or after."},{"name":"reservations_to","type":"string","required":false,"description":"Reservations starting on or before."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":180},{"name":"courtreserve_list_transactions","title":"List transactions","description":"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.","inputs":[{"name":"include_promo_info","type":"boolean","required":false,"description":"Add the promo codes each fee used."},{"name":"limit","type":"integer","required":false,"description":"Most rows to return (default 100, max 500). The reply says when rows were left out."},{"name":"only_paid","type":"boolean","required":false,"description":"Only paid transactions."},{"name":"only_unpaid","type":"boolean","required":false,"description":"Only unpaid transactions."},{"name":"payment_types","type":"string","required":false,"description":"Comma-separated payment types, for example 'Cash,Credit Card,Balance'."},{"name":"reservation_from","type":"string","required":false,"description":"Reservations starting on or after."},{"name":"reservation_to","type":"string","required":false,"description":"Reservations starting on or before."},{"name":"transaction_from","type":"string","required":false,"description":"Transactions on or after."},{"name":"transaction_to","type":"string","required":false,"description":"Transactions on or before."},{"name":"transaction_types","type":"string","required":false,"description":"Comma-separated transaction types, for example 'Fee,Membership Fee,Payment' (the vendor's own names)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":261},{"name":"courtreserve_sales_summary","title":"Sales summary","description":"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.","inputs":[{"name":"include_promo_info","type":"boolean","required":false,"description":"Add the promo codes each fee used."},{"name":"payment_from","type":"string","required":true,"description":"First day of the payment period."},{"name":"payment_to","type":"string","required":true,"description":"Last day of the payment period (at most 31 days after the first)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":109},{"name":"courtreserve_list_promo_codes","title":"List promo codes","description":"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.","inputs":[{"name":"limit","type":"integer","required":false,"description":"Most rows to return (default 100, max 500). The reply says when rows were left out."},{"name":"promo_code_id","type":"integer","required":false,"description":"Only this promo code id."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":94},{"name":"courtreserve_list_leagues","title":"List leagues","description":"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.","inputs":[{"name":"include_sessions","type":"boolean","required":false,"description":"Add each league's sessions (default true)."},{"name":"league_id","type":"integer","required":false,"description":"Only this league id."},{"name":"page","type":"integer","required":false,"description":"Page number, from 1 (default 1). Pass the previous reply's next_page."},{"name":"page_size","type":"integer","required":false,"description":"Leagues per page, 1-200 (default 100)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":125},{"name":"courtreserve_list_league_sessions","title":"List league sessions","description":"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.","inputs":[{"name":"include_game_days","type":"boolean","required":false,"description":"Add each session's game days."},{"name":"include_players","type":"boolean","required":false,"description":"Add each session's registered players (use with one session)."},{"name":"league_id","type":"integer","required":false,"description":"Only this league's sessions."},{"name":"page","type":"integer","required":false,"description":"Page number, from 1 (default 1). Pass the previous reply's next_page."},{"name":"page_size","type":"integer","required":false,"description":"Sessions per page, 1-200 (default 100)."},{"name":"session_id","type":"integer","required":false,"description":"Only this session."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":154}],"toolsTruncatedAtCapture":false,"diagnostics":{"capturedAt":"2026-11-05T15:03:38.000Z","track":"remote","endpoint":"https://courtreserve.usefulapi.io/mcp","declaredUrl":null,"truncated":false,"tls":{"outcome":"valid","label":"Valid","version":"TLS 1.3","cipherSuite":"TLS_AES_128_GCM_SHA256","chainError":null,"certificates":[{"subject":"CN=usefulapi.io","issuer":"CN=WE1,O=Google Trust Services,C=US","notBefore":"2026-09-13T08:55:39Z","notAfter":"2026-12-12T09:54:12Z","keyType":"ECDSA","keyBits":256,"isCa":false},{"subject":"CN=WE1,O=Google Trust Services,C=US","issuer":"CN=GTS Root R4,O=Google Trust Services LLC,C=US","notBefore":"2023-12-13T09:00:00Z","notAfter":"2029-02-20T14:00:00Z","keyType":"ECDSA","keyBits":256,"isCa":true},{"subject":"CN=GTS Root R4,O=Google Trust Services LLC,C=US","issuer":"CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE","notBefore":"2023-11-15T03:43:21Z","notAfter":"2028-01-28T00:00:42Z","keyType":"ECDSA","keyBits":384,"isCa":true}]},"dnssec":{"result":"insecure","label":"Not signed","name":"courtreserve.usefulapi.io.","steps":[{"zone":".","outcome":"verified","label":"Verified"},{"zone":"io.","outcome":"verified","label":"Verified"},{"zone":"usefulapi.io.","outcome":"insecure_proven","label":"Unsigned (proven)"}]},"auth":{"outcome":"inconclusive","label":"Inconclusive","gate":null,"gateLabel":null,"status":302,"authorizationServers":[]},"httpsRedirect":{"outcome":"inconclusive","label":"Inconclusive","status":302},"transports":[{"transport":"streamable-http","outcome":"redirected","label":"Redirected","status":302,"followed":false}],"provenance":null,"installScripts":[],"installScriptsTotal":null,"vulnerabilities":[],"vulnerabilitiesTotal":null,"dependencies":null},"mismatches":[],"changelog":{"trackingSince":"2026-10-28","recent":[{"id":"chg_01a196a6-e6f0-7045-af61-b5438a33110d","kind":"check.unverifiable","summary":"Stability (0.10 → unverified)","materiality":"security","direction":"regression","scoreDelta":null,"occurredOn":"2026-11-01","url":"https://verifymcp.io/servers/io-usefulapi-courtreserve/courtreserve#chg-chg_01a196a6-e6f0-7045-af61-b5438a33110d"},{"id":"chg_01a196a6-e6f1-729a-8d73-34e8ce3bb2f5","kind":"check.unverifiable","summary":"Tool safety (pass → unverified)","materiality":"security","direction":"regression","scoreDelta":null,"occurredOn":"2026-11-01","url":"https://verifymcp.io/servers/io-usefulapi-courtreserve/courtreserve#chg-chg_01a196a6-e6f1-729a-8d73-34e8ce3bb2f5"},{"id":"chg_01a196a6-e6f2-70c5-80d0-db05e0cf42d7","kind":"check.unverifiable","summary":"Authorization (pass → unverified)","materiality":"security","direction":"regression","scoreDelta":null,"occurredOn":"2026-11-01","url":"https://verifymcp.io/servers/io-usefulapi-courtreserve/courtreserve#chg-chg_01a196a6-e6f2-70c5-80d0-db05e0cf42d7"},{"id":"chg_01a196a6-e6f2-751c-b43c-5d242cb9af1f","kind":"check.unverifiable","summary":"Schema quality (100 → unverified)","materiality":"functional","direction":"regression","scoreDelta":null,"occurredOn":"2026-11-01","url":"https://verifymcp.io/servers/io-usefulapi-courtreserve/courtreserve#chg-chg_01a196a6-e6f2-751c-b43c-5d242cb9af1f"},{"id":"chg_01a196a6-e6f2-79f8-9330-e54d98e4edf1","kind":"check.unverifiable","summary":"Capabilities (pass → unverified)","materiality":"functional","direction":"regression","scoreDelta":null,"occurredOn":"2026-11-01","url":"https://verifymcp.io/servers/io-usefulapi-courtreserve/courtreserve#chg-chg_01a196a6-e6f2-79f8-9330-e54d98e4edf1"},{"id":"chg_01a196a6-e6f3-734b-baec-5ff4b3d49fe2","kind":"check.unverifiable","summary":"Tool coverage (100 → unverified)","materiality":"functional","direction":"regression","scoreDelta":null,"occurredOn":"2026-11-01","url":"https://verifymcp.io/servers/io-usefulapi-courtreserve/courtreserve#chg-chg_01a196a6-e6f3-734b-baec-5ff4b3d49fe2"},{"id":"chg_01a196a6-e6f3-7746-b5c1-c80c1b4250fc","kind":"capture.status_changed","summary":"Endpoint reachability (reachable → not serving MCP)","materiality":"security","direction":"regression","scoreDelta":null,"occurredOn":"2026-11-01","url":"https://verifymcp.io/servers/io-usefulapi-courtreserve/courtreserve#chg-chg_01a196a6-e6f3-7746-b5c1-c80c1b4250fc"},{"id":"chg_01a196a6-e6f3-7b9d-bb0d-5d1301b00ddb","kind":"score.total_changed","summary":"Trust score (66 → 18)","materiality":"functional","direction":"regression","scoreDelta":-48,"occurredOn":"2026-11-01","url":"https://verifymcp.io/servers/io-usefulapi-courtreserve/courtreserve#chg-chg_01a196a6-e6f3-7b9d-bb0d-5d1301b00ddb"},{"id":"chg_01a193fd-51dd-7376-b18e-81aede0e4a1c","kind":"check.verdict","summary":"Authorization (partial → pass)","materiality":"security","direction":"improvement","scoreDelta":null,"occurredOn":"2026-10-31","url":"https://verifymcp.io/servers/io-usefulapi-courtreserve/courtreserve#chg-chg_01a193fd-51dd-7376-b18e-81aede0e4a1c"},{"id":"chg_01a193fd-51de-7268-b50e-3c12c24a0787","kind":"check.verdict","summary":"MCP protocol (fail → pass)","materiality":"functional","direction":"improvement","scoreDelta":null,"occurredOn":"2026-10-31","url":"https://verifymcp.io/servers/io-usefulapi-courtreserve/courtreserve#chg-chg_01a193fd-51de-7268-b50e-3c12c24a0787"},{"id":"chg_01a193fd-51de-79c0-b8f8-04b29ccc114c","kind":"prompt.added","summary":"New prompt “review_court_schedules_and_availability”","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-31","url":"https://verifymcp.io/servers/io-usefulapi-courtreserve/courtreserve#chg-chg_01a193fd-51de-79c0-b8f8-04b29ccc114c"},{"id":"chg_01a193fd-51de-7e3d-9309-121b1451c6b5","kind":"prompt.added","summary":"New prompt “review_event_registrations_and_waitlists”","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-31","url":"https://verifymcp.io/servers/io-usefulapi-courtreserve/courtreserve#chg-chg_01a193fd-51de-7e3d-9309-121b1451c6b5"},{"id":"chg_01a193fd-51df-7363-8ebb-5ac73684bf98","kind":"prompt.added","summary":"New prompt “summarize_club_revenue_and_membership”","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-31","url":"https://verifymcp.io/servers/io-usefulapi-courtreserve/courtreserve#chg-chg_01a193fd-51df-7363-8ebb-5ac73684bf98"},{"id":"chg_01a193fd-51df-77fc-a13a-8309ba481fc2","kind":"server.version_changed","summary":"Server version (1.4.0 → 1.6.0)","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-31","url":"https://verifymcp.io/servers/io-usefulapi-courtreserve/courtreserve#chg-chg_01a193fd-51df-77fc-a13a-8309ba481fc2"},{"id":"chg_01a193fd-51df-7c5d-9546-0b604cef8486","kind":"protocol.version_changed","summary":"MCP protocol version (2025-06-18 → 2025-11-25)","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-31","url":"https://verifymcp.io/servers/io-usefulapi-courtreserve/courtreserve#chg-chg_01a193fd-51df-7c5d-9546-0b604cef8486"},{"id":"chg_01a193fd-51e0-73c2-bb0e-df3b7df137b8","kind":"score.total_changed","summary":"Trust score (63 → 66)","materiality":"functional","direction":"improvement","scoreDelta":3,"occurredOn":"2026-10-31","url":"https://verifymcp.io/servers/io-usefulapi-courtreserve/courtreserve#chg-chg_01a193fd-51e0-73c2-bb0e-df3b7df137b8"},{"id":"chg_01a19320-da07-76a0-9eda-67871dda033e","kind":"server.version_changed","summary":"Server version (1.3.0 → 1.4.0)","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-31","url":"https://verifymcp.io/servers/io-usefulapi-courtreserve/courtreserve#chg-chg_01a19320-da07-76a0-9eda-67871dda033e"},{"id":"chg_01a191d8-6da7-7223-b774-5af5d7d5d42b","kind":"server.version_changed","summary":"Server version (1.2.2 → 1.3.0)","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-31","url":"https://verifymcp.io/servers/io-usefulapi-courtreserve/courtreserve#chg-chg_01a191d8-6da7-7223-b774-5af5d7d5d42b"},{"id":"chg_01a18dc4-21f7-7954-a4c6-570e542d17f1","kind":"server.version_changed","summary":"Server version (1.2.1 → 1.2.2)","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-30","url":"https://verifymcp.io/servers/io-usefulapi-courtreserve/courtreserve#chg-chg_01a18dc4-21f7-7954-a4c6-570e542d17f1"},{"id":"chg_01a18d1f-5dd6-70b8-9f2a-35d08972e10b","kind":"server.version_changed","summary":"Server version (1.2.0 → 1.2.1)","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-30","url":"https://verifymcp.io/servers/io-usefulapi-courtreserve/courtreserve#chg-chg_01a18d1f-5dd6-70b8-9f2a-35d08972e10b"}],"truncated":true,"feedUrl":"https://verifymcp.io/servers/io-usefulapi-courtreserve/courtreserve/changelog.json"},"links":{"html":"https://verifymcp.io/servers/io-usefulapi-courtreserve/courtreserve","markdown":"https://verifymcp.io/servers/io-usefulapi-courtreserve/courtreserve.md","changelogJson":"https://verifymcp.io/servers/io-usefulapi-courtreserve/courtreserve/changelog.json","changelogRss":"https://verifymcp.io/servers/io-usefulapi-courtreserve/courtreserve.xml","external":[{"label":"Remote endpoint","href":"https://courtreserve.usefulapi.io/mcp"},{"label":"Repository","href":"https://github.com/m190/usefulapi-mcp"},{"label":"Website","href":"https://usefulapi.io/courtreserve/"}]}}