GymFlexa Gym Management
What this MCP does
Provides tenant-scoped gym configuration, service catalogs, availability, schedule counts, and aggregated payment summaries.
Tools
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['gymId'], 'properties': {'gymId': {'type': 'string', 'pattern': '^[0-9a-f]{24}$', 'description': "Id of one of the user's gyms, as the gym list returns it (24 lowercase hex characters)"}}, 'additionalProperties': False}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['status', 'gym'], 'properties': {'gym': {'anyOf': [{'type': 'object', 'required': ['id', 'name', 'currency', 'defaultLocale', 'timezone', 'countryCode', 'firstDayOfTheWeek', 'appointmentDuration', 'openingHours', 'lastEditTime'], 'properties': {'id': {'type': 'string', 'pattern': '^[0-9a-f]{24}$'}, 'name': {'type': 'string', 'maxLength': 200}, 'currency': {'anyOf': [{'type': 'string', 'pattern': '^[A-Z]{3}$'}, {'type': 'null'}]}, 'timezone': {'anyOf': [{'type': 'string', 'maxLength': 64}, {'type': 'null'}]}, 'countryCode': {'anyOf': [{'type': 'string', 'pattern': '^[A-Z]{2}$'}, {'type': 'null'}]}, 'lastEditTime': {'anyOf': [{'type': 'string', 'maxLength': 32}, {'type': 'null'}]}, 'openingHours': {'type': 'array', 'items': {'type': 'object', 'required': ['day', 'open', 'close'], 'properties': {'day': {'enum': ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'], 'type': 'string'}, 'open': {'anyOf': [{'type': 'string', 'pattern': '^\\d{2}:\\d{2}$'}, {'type': 'null'}]}, 'close': {'anyOf': [{'type': 'string', 'pattern': '^\\d{2}:\\d{2}$'}, {'type': 'null'}]}}, 'additionalProperties': False}, 'maxItems': 14}, 'defaultLocale': {'anyOf': [{'type': 'string', 'maxLength': 16}, {'type': 'null'}]}, 'firstDayOfTheWeek': {'anyOf': [{'enum': ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'], 'type': 'string'}, {'type': 'null'}]}, 'appointmentDuration': {'type': ['number', 'null'], 'description': 'Default session length in minutes'}}, 'additionalProperties': False}, {'type': 'null'}], 'description': 'Scheduling settings of the gym; null when not found. Address, phone, website, organization, billing, integrations, reminders, members and arbitrary metadata are excluded.'}, 'status': {'enum': ['found', 'not-found'], 'type': 'string'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['gymId'], 'properties': {'gymId': {'type': 'string', 'pattern': '^[0-9a-f]{24}$', 'description': "Id of one of the user's gyms, as the gym list returns it (24 lowercase hex characters)"}}, 'additionalProperties': False}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['timezone', 'availableDayCount', 'availableSlotCount', 'days'], 'properties': {'days': {'type': 'array', 'items': {'type': 'object', 'required': ['day', 'slotCount', 'firstStartTime', 'lastEndTime'], 'properties': {'day': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$'}, 'slotCount': {'type': 'integer', 'minimum': 0}, 'lastEndTime': {'anyOf': [{'type': 'string', 'maxLength': 32}, {'type': 'null'}]}, 'firstStartTime': {'anyOf': [{'type': 'string', 'maxLength': 32}, {'type': 'null'}]}}, 'additionalProperties': False}, 'maxItems': 14, 'description': "One row per day with open online-booking slots inside the gym's booking window, in date order. Slot counts and times only; members, appointments, trainers and the reason a time is unavailable are never exposed."}, 'timezone': {'anyOf': [{'type': 'string', 'maxLength': 64}, {'type': 'null'}]}, 'availableDayCount': {'type': 'integer', 'minimum': 0}, 'availableSlotCount': {'type': 'integer', 'minimum': 0}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['gymId'], 'properties': {'gymId': {'type': 'string', 'pattern': '^[0-9a-f]{24}$', 'description': "Id of one of the user's gyms, as the gym list returns it (24 lowercase hex characters)"}, 'endTime': {'type': 'string', 'maxLength': 32, 'description': 'End of the range as an ISO 8601 date-time, after startTime and at most 31 days later; defaults to 7 days after the start'}, 'startTime': {'type': 'string', 'maxLength': 32, 'description': 'Start of the range as an ISO 8601 date-time, matched against when each payment was recorded; defaults to now, so pass a past date for past takings'}}, 'additionalProperties': False}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['range', 'recordCount', 'recordCountIsLowerBound', 'totalsArePartial', 'totals', 'statuses'], 'properties': {'range': {'type': 'object', 'required': ['startTime', 'endTime'], 'properties': {'endTime': {'type': 'string', 'maxLength': 32}, 'startTime': {'type': 'string', 'maxLength': 32}}, 'additionalProperties': False}, 'totals': {'type': 'array', 'items': {'type': 'object', 'required': ['currency', 'amount'], 'properties': {'amount': {'type': 'number'}, 'currency': {'type': 'string', 'pattern': '^(?:[A-Z]{3}|UNSPECIFIED)$'}}, 'additionalProperties': False}, 'maxItems': 100, 'description': 'Amount totals per currency, summed over every status including FAILED and CANCELED payments. Payment and member ids, processor or card data, contacts, notes, discounts, decline reasons, services and individual transactions are never returned.'}, 'statuses': {'type': 'array', 'items': {'type': 'object', 'required': ['status', 'count'], 'properties': {'count': {'type': 'integer', 'minimum': 0}, 'status': {'type': 'string', 'pattern': '^[A-Z0-9_-]{1,48}$'}}, 'additionalProperties': False}, 'maxItems': 100, 'description': 'Payment counts per status, such as SUCCEEDED, FAILED, CANCELED or OTHER'}, 'recordCount': {'type': 'integer', 'minimum': 0}, 'totalsArePartial': {'type': 'boolean', 'description': 'True when more than 100 payments fall in the range or any returned amount is missing or invalid'}, 'recordCountIsLowerBound': {'type': 'boolean'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['gymId'], 'properties': {'gymId': {'type': 'string', 'pattern': '^[0-9a-f]{24}$', 'description': "Id of one of the user's gyms, as the gym list returns it (24 lowercase hex characters)"}, 'endTime': {'type': 'string', 'maxLength': 32, 'description': 'End of the range as an ISO 8601 date-time, after startTime and at most 31 days later; defaults to 7 days after the start'}, 'startTime': {'type': 'string', 'maxLength': 32, 'description': 'Start of the range as an ISO 8601 date-time; defaults to now'}}, 'additionalProperties': False}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['range', 'recordCount', 'recordCountIsLowerBound', 'days'], 'properties': {'days': {'type': 'array', 'items': {'type': 'object', 'required': ['day', 'count'], 'properties': {'day': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$'}, 'count': {'type': 'integer', 'minimum': 0}}, 'additionalProperties': False}, 'maxItems': 100, 'description': 'One row per UTC day that has bookings, canceled ones included. Aggregate counts only: appointment ids and times, member information, services, notes, trainer data and attendance history are never returned.'}, 'range': {'type': 'object', 'required': ['startTime', 'endTime'], 'properties': {'endTime': {'type': 'string', 'maxLength': 32}, 'startTime': {'type': 'string', 'maxLength': 32}}, 'additionalProperties': False}, 'recordCount': {'type': 'integer', 'minimum': 0}, 'recordCountIsLowerBound': {'type': 'boolean', 'description': 'True when more than 100 bookings fall in the range'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'limit': {'type': 'integer', 'maximum': 100, 'description': 'Maximum number of gyms to return (default 25, maximum 100)', 'exclusiveMinimum': 0}, 'cursor': {'type': 'string', 'maxLength': 4096, 'description': 'The nextCursor of the previous page of this listing; absent for the first page'}}, 'additionalProperties': False}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['gyms', 'hasMore', 'nextCursor'], 'properties': {'gyms': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'name', 'currency', 'defaultLocale', 'lastEditTime'], 'properties': {'id': {'type': 'string', 'pattern': '^[0-9a-f]{24}$'}, 'name': {'type': 'string', 'maxLength': 200}, 'currency': {'anyOf': [{'type': 'string', 'pattern': '^[A-Z]{3}$'}, {'type': 'null'}]}, 'lastEditTime': {'anyOf': [{'type': 'string', 'maxLength': 32}, {'type': 'null'}]}, 'defaultLocale': {'anyOf': [{'type': 'string', 'maxLength': 16}, {'type': 'null'}]}}, 'additionalProperties': False}, 'maxItems': 100, 'description': 'Gyms in the signed-in organization, alphabetical. Organization, address, contact, billing, integration and member data are never returned.'}, 'hasMore': {'type': 'boolean'}, 'nextCursor': {'anyOf': [{'type': 'string', 'maxLength': 4096}, {'type': 'null'}], 'description': 'Cursor for the next page; null on the last page'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['gymId'], 'properties': {'gymId': {'type': 'string', 'pattern': '^[0-9a-f]{24}$', 'description': "Id of one of the user's gyms, as the gym list returns it (24 lowercase hex characters)"}, 'limit': {'type': 'integer', 'maximum': 100, 'description': 'Maximum services to return (default 25, maximum 100)', 'exclusiveMinimum': 0}, 'cursor': {'type': 'string', 'maxLength': 4096, 'description': 'The nextCursor of the previous page of this listing; absent for the first page'}}, 'additionalProperties': False}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['services', 'hasMore', 'nextCursor'], 'properties': {'hasMore': {'type': 'boolean'}, 'services': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'price', 'lastEditTime'], 'properties': {'name': {'type': 'string', 'maxLength': 200}, 'price': {'type': ['number', 'null'], 'description': "Price in the gym's currency"}, 'lastEditTime': {'anyOf': [{'type': 'string', 'maxLength': 32}, {'type': 'null'}]}}, 'additionalProperties': False}, 'maxItems': 100, 'description': 'Service catalog entries, alphabetical. Service ids, member history, notes, staff commissions, organization ids and arbitrary metadata are excluded.'}, 'nextCursor': {'anyOf': [{'type': 'string', 'maxLength': 4096}, {'type': 'null'}], 'description': 'Cursor for the next page; null on the last page'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['gymId'], 'properties': {'gymId': {'type': 'string', 'pattern': '^[0-9a-f]{24}$', 'description': "Id of one of the user's gyms, as the gym list returns it (24 lowercase hex characters)"}}}
Output schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['gym', 'scheduleRange', 'appointmentCount', 'appointmentCountIsLowerBound', 'scheduleDays', 'serviceCount', 'serviceCountIsLowerBound', 'services', 'availableDayCount', 'availableSlotCount', 'availabilityDays'], 'properties': {'gym': {'anyOf': [{'type': 'object', 'required': ['id', 'name', 'currency', 'defaultLocale', 'timezone'], 'properties': {'id': {'type': 'string', 'pattern': '^[0-9a-f]{24}$'}, 'name': {'type': 'string', 'maxLength': 200}, 'currency': {'anyOf': [{'type': 'string', 'pattern': '^[A-Z]{3}$'}, {'type': 'null'}]}, 'timezone': {'anyOf': [{'type': 'string', 'maxLength': 64}, {'type': 'null'}]}, 'defaultLocale': {'anyOf': [{'type': 'string', 'maxLength': 16}, {'type': 'null'}]}}, 'additionalProperties': False}, {'type': 'null'}], 'description': 'Gym metadata; null when not found. The overview never reads or returns member records, individual appointments or payments, attendance or service history, trainers, notes or health and fitness details.'}, 'services': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'price', 'lastEditTime'], 'properties': {'name': {'type': 'string', 'maxLength': 200}, 'price': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}, 'lastEditTime': {'anyOf': [{'type': 'string', 'maxLength': 32}, {'type': 'null'}]}}, 'additionalProperties': False}, 'maxItems': 12}, 'scheduleDays': {'type': 'array', 'items': {'type': 'object', 'required': ['day', 'count'], 'properties': {'day': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$'}, 'count': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}, 'additionalProperties': False}, 'maxItems': 100}, 'serviceCount': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'scheduleRange': {'type': 'object', 'required': ['startTime', 'endTime'], 'properties': {'endTime': {'type': 'string', 'maxLength': 32}, 'startTime': {'type': 'string', 'maxLength': 32}}, 'additionalProperties': False}, 'appointmentCount': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'availabilityDays': {'type': 'array', 'items': {'type': 'object', 'required': ['day', 'count'], 'properties': {'day': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$'}, 'count': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}, 'additionalProperties': False}, 'maxItems': 14}, 'availableDayCount': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'availableSlotCount': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'serviceCountIsLowerBound': {'type': 'boolean'}, 'appointmentCountIsLowerBound': {'type': 'boolean'}}, 'additionalProperties': False}
Recent tool changes
Similar MCP servers
AdButler
Manages AdButler advertisers, campaigns, ad items, audiences, zones, creatives, catalogs, and advertising reports.
Duvo MCP
Provides governed retail and CPG operations for cases, queues, approvals, automations, process documentation, integrations, and a…
Lovie Company Formation
Supports company formation and business administration with bank accounts, cards, invoicing, bookkeeping, accounting periods, and…
freedom-mcp
Supports company operations through commitments, teams, agents, customer evidence, leads, content workflows, spreadsheets, commer…
独行录 / opcmenu
Supports founder and company discovery, collaboration goals and tasks, events and signups, networking, messaging, profiles, produ…
Meta Council
Provides governed workflows for consulting, outreach, sales deals, invoices, marketing campaigns, content approvals, accounting a…
synter-ads
Manages cross-platform advertising campaigns, audiences, tracking, creative, landing pages, campaign audits, technology intellige…
synter-ads
Manages cross-platform advertising campaigns, audiences, tracking, creative, landing pages, campaign audits, technology intellige…