GymFlexa Gym Management

See your gym's open slots, services, how busy each day is and your payment totals.

¿Debería usar esto?

Calidad y seguridad

A
Calidad de la descripción
100%
Integridad del esquema
99%
Calidad de los nombres
100%
Riesgo de envenenamiento
100%
Coincidencia de permisos
100%
Cumplimiento del protocolo
100%

Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.

Costo de contexto

~3,913Tokens (definiciones de herramientas)
~5.3 KBTamaño de respuesta típico
Impacto significativo en la atención (3.06% del contexto de 128k)

Este es el número aproximado de tokens que se consumen cada vez que las herramientas del servidor se cargan en el contexto de un modelo. Los recuentos más altos reducen la atención disponible para otras tareas.

Instalar

Instalación con un clic

Agrega esto a tu archivo `claude_desktop_config.json`:

{
  "mcpServers": {
    "gymflexa": {
      "url": "https://mcp.gymflexa.com/mcp"
    }
  }
}

Puntos de conexión remotos

https://mcp.gymflexa.com/mcpstreamable-http

Qué puede hacer

Inventario de herramientas

Herramientas (7)

🟢 Solo lectura🟡 Escritura🔴 Eliminación⚪ Desconocido
🟢list_gyms(limit, cursor)

Use this when someone asks which gyms or studios they run in GymFlexa, or a gym's id is needed. Returns gyms with id, name, currency, default language and last edit time, alphabetical, 25 per page by default. Not for finding a member.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "limit": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100,
      "description": "Maximum number of gyms to return (default 25, maximum 100)"
    },
    "cursor": {
      "type": "string",
      "maxLength": 4096,
      "description": "The nextCursor of the previous page of this listing; absent for the first page"
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Esquema de salida

{
  "type": "object",
  "properties": {
    "gyms": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^[0-9a-f]{24}$"
          },
          "name": {
            "type": "string",
            "maxLength": 200
          },
          "currency": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^[A-Z]{3}$"
              },
              {
                "type": "null"
              }
            ]
          },
          "defaultLocale": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 16
              },
              {
                "type": "null"
              }
            ]
          },
          "lastEditTime": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 32
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "id",
          "name",
          "currency",
          "defaultLocale",
          "lastEditTime"
        ],
        "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"
    }
  },
  "required": [
    "gyms",
    "hasMore",
    "nextCursor"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_gym(gymId)

Use this when someone asks for one gym's opening hours, timezone, currency or default session length. Returns the gym's scheduling settings with up to 14 opening-hour rows, Monday first; an id outside the organization returns not-found. Not for free session slots.

Esquema de entrada

{
  "type": "object",
  "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)"
    }
  },
  "required": [
    "gymId"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Esquema de salida

{
  "type": "object",
  "properties": {
    "status": {
      "type": "string",
      "enum": [
        "found",
        "not-found"
      ]
    },
    "gym": {
      "anyOf": [
        {
          "type": "object",
          "properties": {
            "id": {
              "type": "string",
              "pattern": "^[0-9a-f]{24}$"
            },
            "name": {
              "type": "string",
              "maxLength": 200
            },
            "currency": {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^[A-Z]{3}$"
                },
                {
                  "type": "null"
                }
              ]
            },
            "defaultLocale": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 16
                },
                {
                  "type": "null"
                }
              ]
            },
            "timezone": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 64
                },
                {
                  "type": "null"
                }
              ]
            },
            "countryCode": {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^[A-Z]{2}$"
                },
                {
                  "type": "null"
                }
              ]
            },
            "firstDayOfTheWeek": {
              "anyOf": [
                {
                  "type": "string",
                  "enum": [
                    "Monday",
                    "Tuesday",
                    "Wednesday",
                    "Thursday",
                    "Friday",
                    "Saturday",
                    "Sunday"
                  ]
                },
                {
                  "type": "null"
                }
              ]
            },
            "appointmentDuration": {
              "type": [
                "number",
                "null"
              ],
              "description": "Default session length in minutes"
            },
            "openingHours": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "day": {
                    "type": "string",
                    "enum": [
                      "Monday",
                      "Tuesday",
                      "Wednesday",
                      "Thursday",
                      "Friday",
                      "Saturday",
                      "Sunday"
                    ]
                  },
                  "open": {
                    "anyOf": [
                      {
                        "type": "string",
                        "pattern": "^\\d{2}:\\d{2}$"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "close": {
                    "anyOf": [
                      {
                        "type": "string",
                        "pattern": "^\\d{2}:\\d{2}$"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "required": [
                  "day",
                  "open",
                  "close"
                ],
                "additionalProperties": false
              },
              "maxItems": 14
            },
            "lastEditTime": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 32
                },
                {
                  "type": "null"
                }
              ]
            }
          },
          "required": [
            "id",
            "name",
            "currency",
            "defaultLocale",
            "timezone",
            "countryCode",
            "firstDayOfTheWeek",
            "appointmentDuration",
            "openingHours",
            "lastEditTime"
          ],
          "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."
    }
  },
  "required": [
    "status",
    "gym"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_gym_availability(gymId)

Use this when someone asks when their gym has free slots or openings for a class or session, or which coming days are fully booked. Returns, per day, how many online-booking slots are open plus the first start and last end time, for the next 14 days that have openings, so a skipped day has none (no member or trainer names). Not for booking a session.

Esquema de entrada

{
  "type": "object",
  "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)"
    }
  },
  "required": [
    "gymId"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Esquema de salida

{
  "type": "object",
  "properties": {
    "timezone": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 64
        },
        {
          "type": "null"
        }
      ]
    },
    "availableDayCount": {
      "type": "integer",
      "minimum": 0
    },
    "availableSlotCount": {
      "type": "integer",
      "minimum": 0
    },
    "days": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "day": {
            "type": "string",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
          },
          "slotCount": {
            "type": "integer",
            "minimum": 0
          },
          "firstStartTime": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 32
              },
              {
                "type": "null"
              }
            ]
          },
          "lastEndTime": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 32
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "day",
          "slotCount",
          "firstStartTime",
          "lastEndTime"
        ],
        "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."
    }
  },
  "required": [
    "timezone",
    "availableDayCount",
    "availableSlotCount",
    "days"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_gym_schedule_summary(gymId, startTime, endTime)

Use this when someone asks how busy their gym is or how many appointments or sessions are booked each day, past or upcoming. Returns booking counts per UTC day for one gym, whatever their status, for any window of at most 31 days (the next 7 by default); counting stops at 100. Not for counting cancellations or seeing which members are booked.

Esquema de entrada

{
  "type": "object",
  "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)"
    },
    "startTime": {
      "type": "string",
      "maxLength": 32,
      "description": "Start of the range as an ISO 8601 date-time; defaults to now"
    },
    "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"
    }
  },
  "required": [
    "gymId"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Esquema de salida

{
  "type": "object",
  "properties": {
    "range": {
      "type": "object",
      "properties": {
        "startTime": {
          "type": "string",
          "maxLength": 32
        },
        "endTime": {
          "type": "string",
          "maxLength": 32
        }
      },
      "required": [
        "startTime",
        "endTime"
      ],
      "additionalProperties": false
    },
    "recordCount": {
      "type": "integer",
      "minimum": 0
    },
    "recordCountIsLowerBound": {
      "type": "boolean",
      "description": "True when more than 100 bookings fall in the range"
    },
    "days": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "day": {
            "type": "string",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
          },
          "count": {
            "type": "integer",
            "minimum": 0
          }
        },
        "required": [
          "day",
          "count"
        ],
        "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."
    }
  },
  "required": [
    "range",
    "recordCount",
    "recordCountIsLowerBound",
    "days"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_gym_payment_summary(gymId, startTime, endTime)

Use this when someone asks how much their gym took in, or how many payments succeeded, failed or were canceled. Returns payment counts by status and totals by currency; totals include every status. Covers up to 31 days and 100 payments and defaults to the next 7 days, which hold no payments yet. Not for moving money: it cannot charge, refund or transfer.

Esquema de entrada

{
  "type": "object",
  "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)"
    },
    "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"
    },
    "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"
    }
  },
  "required": [
    "gymId"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Esquema de salida

{
  "type": "object",
  "properties": {
    "range": {
      "type": "object",
      "properties": {
        "startTime": {
          "type": "string",
          "maxLength": 32
        },
        "endTime": {
          "type": "string",
          "maxLength": 32
        }
      },
      "required": [
        "startTime",
        "endTime"
      ],
      "additionalProperties": false
    },
    "recordCount": {
      "type": "integer",
      "minimum": 0
    },
    "recordCountIsLowerBound": {
      "type": "boolean"
    },
    "totalsArePartial": {
      "type": "boolean",
      "description": "True when more than 100 payments fall in the range or any returned amount is missing or invalid"
    },
    "totals": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "currency": {
            "type": "string",
            "pattern": "^(?:[A-Z]{3}|UNSPECIFIED)$"
          },
          "amount": {
            "type": "number"
          }
        },
        "required": [
          "currency",
          "amount"
        ],
        "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",
        "properties": {
          "status": {
            "type": "string",
            "pattern": "^[A-Z0-9_-]{1,48}$"
          },
          "count": {
            "type": "integer",
            "minimum": 0
          }
        },
        "required": [
          "status",
          "count"
        ],
        "additionalProperties": false
      },
      "maxItems": 100,
      "description": "Payment counts per status, such as SUCCEEDED, FAILED, CANCELED or OTHER"
    }
  },
  "required": [
    "range",
    "recordCount",
    "recordCountIsLowerBound",
    "totalsArePartial",
    "totals",
    "statuses"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢list_services(gymId, limit, cursor)

Use this when someone asks what their gym charges for a class, personal training session or other service. Returns catalog service names with price and last edit time for one gym, alphabetical, 25 per page by default. Not for what a particular member bought or attended.

Esquema de entrada

{
  "type": "object",
  "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",
      "exclusiveMinimum": 0,
      "maximum": 100,
      "description": "Maximum services to return (default 25, maximum 100)"
    },
    "cursor": {
      "type": "string",
      "maxLength": 4096,
      "description": "The nextCursor of the previous page of this listing; absent for the first page"
    }
  },
  "required": [
    "gymId"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Esquema de salida

{
  "type": "object",
  "properties": {
    "services": {
      "type": "array",
      "items": {
        "type": "object",
        "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"
              }
            ]
          }
        },
        "required": [
          "name",
          "price",
          "lastEditTime"
        ],
        "additionalProperties": false
      },
      "maxItems": 100,
      "description": "Service catalog entries, alphabetical. Service ids, member history, notes, staff commissions, organization ids and arbitrary metadata are excluded."
    },
    "hasMore": {
      "type": "boolean"
    },
    "nextCursor": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 4096
        },
        {
          "type": "null"
        }
      ],
      "description": "Cursor for the next page; null on the last page"
    }
  },
  "required": [
    "services",
    "hasMore",
    "nextCursor"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢show_gym_overview(gymId)

Use this when someone wants a quick overview or dashboard of one gym. Returns an overview card with the gym's details, booking counts for the next 7 days, open online-booking slots across up to 14 days with openings and up to 12 services with prices (no member, trainer or payment data). Not for a single member or booking.

Esquema de entrada

{
  "type": "object",
  "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)"
    }
  },
  "required": [
    "gymId"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Esquema de salida

{
  "type": "object",
  "properties": {
    "gym": {
      "anyOf": [
        {
          "type": "object",
          "properties": {
            "id": {
              "type": "string",
              "pattern": "^[0-9a-f]{24}$"
            },
            "name": {
              "type": "string",
              "maxLength": 200
            },
            "currency": {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^[A-Z]{3}$"
                },
                {
                  "type": "null"
                }
              ]
            },
            "defaultLocale": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 16
                },
                {
                  "type": "null"
                }
              ]
            },
            "timezone": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 64
                },
                {
                  "type": "null"
                }
              ]
            }
          },
          "required": [
            "id",
            "name",
            "currency",
            "defaultLocale",
            "timezone"
          ],
          "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."
    },
    "scheduleRange": {
      "type": "object",
      "properties": {
        "startTime": {
          "type": "string",
          "maxLength": 32
        },
        "endTime": {
          "type": "string",
          "maxLength": 32
        }
      },
      "required": [
        "startTime",
        "endTime"
      ],
      "additionalProperties": false
    },
    "appointmentCount": {
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    },
    "appointmentCountIsLowerBound": {
      "type": "boolean"
    },
    "scheduleDays": {
      "maxItems": 100,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "day": {
            "type": "string",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
          },
          "count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 9007199254740991
          }
        },
        "required": [
          "day",
          "count"
        ],
        "additionalProperties": false
      }
    },
    "serviceCount": {
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    },
    "serviceCountIsLowerBound": {
      "type": "boolean"
    },
    "services": {
      "maxItems": 12,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 200
          },
          "price": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ]
          },
          "lastEditTime": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 32
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "name",
          "price",
          "lastEditTime"
        ],
        "additionalProperties": false
      }
    },
    "availableDayCount": {
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    },
    "availableSlotCount": {
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    },
    "availabilityDays": {
      "maxItems": 14,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "day": {
            "type": "string",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
          },
          "count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 9007199254740991
          }
        },
        "required": [
          "day",
          "count"
        ],
        "additionalProperties": false
      }
    }
  },
  "required": [
    "gym",
    "scheduleRange",
    "appointmentCount",
    "appointmentCountIsLowerBound",
    "scheduleDays",
    "serviceCount",
    "serviceCountIsLowerBound",
    "services",
    "availableDayCount",
    "availableSlotCount",
    "availabilityDays"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}

Comunidad

Califica este servidor

Evidencia

Observaciones recientes

verificadoversión no registrada7 herramientas
verificadoversión no registrada7 herramientas