Skip to main content
Glama

list_workout_dates

Retrieve workout dates from JEFit within a specified date range to track fitness sessions and monitor training frequency.

Instructions

List all workout dates within a date range.

Args: start_date: Start date in YYYY-MM-DD format (required) end_date: End date in YYYY-MM-DD format (optional, defaults to today)

Returns: List of workout dates as strings in YYYY-MM-DD format

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
start_dateYes
end_dateNo

Implementation Reference

  • Main handler function for list_workout_dates tool. Includes decorator for MCP registration, type hints serving as input schema, and core logic to filter workout dates using get_workout_history().
    @mcp.tool def list_workout_dates(start_date: str, end_date: str | None = None) -> list[str]: """ List all workout dates within a date range. Args: start_date: Start date in YYYY-MM-DD format (required) end_date: End date in YYYY-MM-DD format (optional, defaults to today) Returns: List of workout dates as strings in YYYY-MM-DD format """ # Default end_date to today if not provided if end_date is None: end_date = date.today().isoformat() # Validate date formats try: start = datetime.strptime(start_date, "%Y-%m-%d").date() end = datetime.strptime(end_date, "%Y-%m-%d").date() except ValueError as e: raise ValueError(f"Invalid date format. Use YYYY-MM-DD format: {e}") if start > end: raise ValueError("start_date must be before or equal to end_date") # Get all workout dates from API all_dates = get_workout_history() # Filter to date range filtered_dates = [] for workout_date_str in all_dates: workout_date = datetime.strptime(workout_date_str, "%Y-%m-%d").date() if start <= workout_date <= end: filtered_dates.append(workout_date_str) return sorted(filtered_dates)
  • Helper function that fetches all workout dates from the JEFit API, filtering for workouts with logs. Called by the list_workout_dates handler.
    def get_workout_history(): access_token = get_access_token() user_id = get_user_id(access_token) timezone_offset = os.getenv("JEFIT_TIMEZONE", "-04:00") headers = { 'content-type': 'application/json', 'Cookie': f'jefitAccessToken={access_token}' } response = requests.get(f"https://www.jefit.com/api/v2/users/{user_id}/sessions/calendar?timezone_offset={timezone_offset}", headers=headers) if response.status_code != 200: raise Exception(f"Failed to get workout history: {response.status_code} {response.text}") else: calendar = response.json() calendar_data = calendar["data"] workouts = [] for workout in calendar_data: # We will skip if the workout has no logs if not workout["has_logs"]: continue workouts.append(workout["date"]) return workouts

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ai-mcp-garage/jefit-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server