create_workout
ChatGPTCreate a workout template with exercises, sets, loads, rest modes, and optional supersets. Exercise names must be exact display names from the catalog or the user's custom exercises. Each exercise: name, target (reps|time), load (weight|percent), working_rest_mode (timed|off|lap), working_rest_seconds (required when working_rest_mode is 'timed'; omit otherwise), optional warmup_sets[], optional warmup_rest_mode (required when warmup_sets is present; same allowed values as working_rest_mode), optional warmup_rest_seconds (required when warmup_rest_mode is 'timed'), working_sets[] (min 1), and an optional superset label. working_rest_mode 'off' means continue straight to the next set/exercise with no rest. 'lap' means the watch pauses until the user presses the lap button. The same rest setting applies between sets within the exercise and after the exercise's last set (the inter-exercise rest). Each set has reps (when target=reps) or seconds (when target=time), and weight (when load=weight) or percent (when load=percent), plus optional rpe. weight is in the user's units (0 = bodyweight). percent is the percentage of training max itself, e.g. 65 for 65%, not a computed weight. The server computes the weight from the user's training max, and the call fails with a clear error if the exercise has no training max set. superset is an optional short label (case-insensitive, max 16 chars). Exercises sharing a label run as one superset on the watch — at least two exercises must share a label, max 16 distinct labels per workout. Optional folder_name is an exact folder name; it places the workout in that folder, or creates the folder if no folder has that name. Example with a two-exercise superset: {"name":"Push","exercises":[{"name":"Barbell Bench Press","target":"reps","load":"weight","working_rest_mode":"timed","working_rest_seconds":90,"working_sets":[{"reps":5,"weight":185}],"superset":"A"},{"name":"Cable Row","target":"reps","load":"weight","working_rest_mode":"lap","working_sets":[{"reps":8,"weight":80}],"superset":"A"}]}
delete_workout
ChatGPTPermanently delete a workout template. This cannot be undone. Deleting a workout also removes it from any schedules and from the user's Garmin device. App default workouts cannot be deleted. Args: workout_name: Exact workout template name (case insensitive). folder_name: Optional folder name to disambiguate duplicate names. The value "My Workouts" identifies a workout not in any folder. If several workouts share the name, the call fails and lists each match with its folder without deleting any of them.
get_activities
ChatGPTGet completed workout sessions. For each activity: name, date/time, duration, exercises with actual sets performed vs target sets. Args: start_date: Start of date range (ISO format YYYY-MM-DD). Defaults to 30 days ago. end_date: End of date range (ISO format YYYY-MM-DD). Defaults to today. workout_name: Optional filter to only show activities for a specific workout. limit: Max results to return (default 20, max 100).
get_coach_profile
ChatGPTGet the user's saved Coach Profile: experience level, primary goal, training days per week, session length, weekly endurance hours, available equipment, liked and disliked exercises, and free text goals and limitations notes. Returns an empty object when the user has not set up a profile yet.
get_exercise_history
ChatGPTGet performance history for a specific exercise across sessions. Shows per-session sets, volume, estimated 1RM, and heaviest set, plus trends over time. This is the most useful tool for coaching conversations like 'How's my bench progressing?' Args: exercise_name: The exercise display name (e.g. 'Barbell Bench Press'). limit: Number of recent sessions to include (default 10, max 50).
get_folders
ChatGPTList the user's workout folders with exact name and workout count.
get_help_article
ChatGPTRead a complete LiftTrack Help Center article or FAQ by its identifier. Returns the full instructions or explanation and the source URL.
get_program_detail
ChatGPTGet one saved program's complete compact plan. Returns every program week without pagination. Within each week, repeated uses of the same workout_id are grouped into one item with all assigned day labels in days. The same workout_id in multiple weeks means the same saved workout is reused.
get_programs
ChatGPTList the user's saved programs at the same summary level as LiftTrack's program cards: name, status, total weeks, current week when running, and days per week. Status is not_started, active, paused, or complete. Internal program lifecycle ids are never returned.
get_schedule
ChatGPTGet upcoming scheduled workouts. Args: days_ahead: How many days ahead to look (default 14, max 60).
get_training_maxes
ChatGPTGet training max (1RM estimate) values used for percentage-based programming. Returns all training maxes, or filter by exercise name. Args: exercise_name: Optional exercise display name to filter (e.g. 'Barbell Back Squat').
get_user_settings
ChatGPTGet the user's workout settings: unit preference (lbs/kg), weight rounding, and other preferences. Call this early in a conversation so you have context for all subsequent responses.
get_weekly_training_status
ChatGPTGet a coaching summary for one Monday-Sunday training week: workouts completed vs goal, calendar days left including today, strength/hypertrophy/endurance set counts, credited sets per muscle vs the user's four-week average, and trained or missing movement patterns. Week boundaries and days_left use the client-reported timezone when available, otherwise the optional timezone argument, otherwise UTC. The response includes the resolved timezone in week.timezone. Args: week_start: Optional Monday in YYYY-MM-DD format. Defaults to the current week in the resolved timezone. timezone: Optional IANA zone id (e.g. 'America/Denver'), used when the client reports no timezone.
get_workout_detail
ChatGPTGet full detail of a single workout template: exercises with sets (weight x reps), rest times, superset grouping, RPE targets, notes, and percentage-of-TM info. All weights shown in the user's preferred unit.
get_workout_templates
ChatGPTList all workout templates with name, folder, exercise count, and exercise name summary. Use folder_name to filter by a specific folder.
schedule_workout
ChatGPTSchedule a saved workout template on one calendar date. The workout appears on that date in the LiftTrack app and, when the user's Garmin account is linked, on their Garmin calendar and watch. If the workout is already on that date (scheduled once, by the weekly routine, or by a program), nothing is added and the existing entry is reported. Args: workout_name: Exact workout template name (case insensitive). date: YYYY-MM-DD, from today through 30 days ahead. workout_folder_name: Optional folder name to disambiguate duplicate names.
search_exercises
ChatGPTSearch the exercise catalog by name or muscle group. Returns display name, muscles, and equipment. Max 20 results. Every exercise in a workout must come from this catalog or the user's custom exercises. Args: query: Free text search against exercise name (e.g. 'bench press', 'squat'). muscle_group: Filter by primary muscle group (e.g. 'CHEST', 'QUADS', 'LATS', 'GLUTES', 'SHOULDERS', 'TRICEPS', 'BICEPS', 'ABS', 'HAMSTRINGS', 'TRAPS', 'CALVES').
search_help_center
ChatGPTSearch LiftTrack's Help Center articles and FAQs for instructions, feature explanations, and troubleshooting. Returns relevant text passages with article titles and source URLs.
set_training_max
ChatGPTSet the training max for an exercise, creating it or updating an existing value. The training max is the estimated one rep max used to compute workout weights for percentage-based loads. Updating an existing training max recalculates the weight of every workout where the exercise uses percentage of training max. Args: exercise_name: Exact exercise display name from the catalog or the user's custom exercises. training_max: The training max value, in the user's units (lb or kg per their settings).
unschedule_workout
ChatGPTRemove a scheduled workout from one calendar date. This also removes it from the user's Garmin calendar. Only workouts scheduled for a single date can be removed; occurrences created by the weekly routine or a program are refused and can only be changed in the LiftTrack app. If a workout with that name stays on that date (from the weekly routine, a program, or a same named workout in another folder), the result reports what holds it in still_scheduled_by. The workout template itself is not changed. Args: workout_name: Exact workout template name (case insensitive). date: YYYY-MM-DD of the scheduled occurrence, today or later. Past occurrences are kept as the user's training record. workout_folder_name: Optional folder name to disambiguate duplicate names.
update_workout
ChatGPTChange an existing workout template. workout_name is the exact current name; optional workout_folder_name disambiguates duplicate names and does not change folder membership. Omitted fields keep their current values. name renames the workout. exercises replaces the entire exercise list, including all exercises and sets to retain. Progression links are preserved for exercises that keep their name. Each exercise uses an exact catalog or custom exercise display name, target (reps|time), load (weight|percent), working sets, and rest configuration, with optional warmup sets, supersets, RPE, and notes. The input schema defines the fields and constraints. Notes appear on the watch in the workout step description. A rename-only request contains workout_name and name, plus workout_folder_name if needed; it does not require exercises.
validate_exercise_names
ChatGPTCheck that exercise names exist in the exercise catalog or the user's custom exercises. Names must be exact display names (case-insensitive). Returns all_valid plus every invalid name with up to 3 close catalog matches as suggestions.
create_workout
Claudedelete_workout
Claudeget_activities
Claudeget_coach_profile
Claudeget_exercise_history
Claudeget_folders
Claudeget_program_detail
Claudeget_programs
Claudeget_schedule
Claudeget_training_maxes
Claudeget_user_settings
Claudeget_weekly_training_status
Claudeget_workout_detail
Claudeget_workout_templates
Claudesearch_exercises
Claudeset_training_max
Claudeupdate_workout
Claudevalidate_exercise_names
Claude