LiftTrack

Connect your AI assistant to LiftTrack for strength training: review workout templates, explore exercise history and progress, and manage workouts.

Community: Submitted by a user or imported; check the owner before granting accessOnlineNo sign-inGlobalFreeCan modify data

What it can do

  • Get User Settings: Get 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 Workout Templates: List workout templates as a high level summary: name, folder, and exercise count, plus total_count. Returns at most `limit` templates (default 50, max 200); total_count tells yo
  • Get Workout Detail: Get the full structured detail of a workout template, shaped exactly like create_workout input (exercise display names, sets, rest mode, supersets, RPE, % of training max). Identif

What data it sees

Do you need an account

No: the server works without sign-in

Connect your AI assistant to LiftTrack for strength training: review workout templates, explore exercise history and progress, and manage workouts. Requires a LiftTrack account; some write actions require a paid plan.

Server tool list (18)

Raw names from tools/list. Only developers need these.

get_user_settingsGet 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_workout_templatesList workout templates as a high level summary: name, folder, and exercise count, plus total_count. Returns at most `limit` templates (default 50, max 200); total_count tells you when the list was truncated. Use folder_name to filter by a specific folder. To see a template's full structure (exercises, sets, loads, rest, supersets), call get_workout_detail with its exact name.
get_workout_detailGet the full structured detail of a workout template, shaped exactly like create_workout input (exercise display names, sets, rest mode, supersets, RPE, % of training max). Identify it by either workout_id (preferred when another tool returned an id) or exact workout_name, but not both. An id returns at most one workout; a name returns every matching workout, each carrying its folder. The model writes its own summary from this data.
get_programsList 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_program_detailGet 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. Call get_workout_detail once per unique workout_id only when the user needs workout names or contents.
get_activitiesGet completed workout sessions. detail='summary' (preferred for browsing) returns name, date, duration, and exercise names per activity; detail='full' adds every set performed vs target. For a single exercise's progress over time, prefer get_exercise_history instead. 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 10, max 100). detail: 'summary' or 'full' (default 'full').
get_weekly_training_statusGet a coaching summary for one Monday-Sunday training week. Use it when planning a workout to see 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. Defaults to the user's current local week. The week boundaries and days_left depend on the user's timezone. If this client reports no timezone (the server instructions say so) and you know the user's IANA zone, pass it as timezone; otherwise the week is computed in UTC and week.timezone says so. Args: week_start: Optional Monday in YYYY-MM-DD format. Defaults to the current local week. timezone: Optional IANA zone id (e.g. 'America/Denver') used to pick the current week and count days_left when the client reports no timezone.
get_exercise_historyGet 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?' When a session carries a local_date, it is the day the session happened on in the user's local timezone; quote it rather than converting the UTC date field yourself.
get_training_maxesGet training max (1RM estimate) values for exercises. Returns all training maxes, or filter by exercise name. Args: exercise_name: Optional exercise display name to filter (e.g. 'Barbell Back Squat').
get_scheduleGet upcoming scheduled workouts, starting with today. The returned dates are plain calendar dates, exactly as scheduled. Args: days_ahead: How many days ahead to look (default 14, max 60).
search_exercisesSearch the exercise catalog by name, muscle group, and/or equipment. Returns display name, muscles, and equipment, best matches first, 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', 'romanian deadlift'). muscle_group: Filter to a primary muscle group. equipment: Filter to an equipment type.
create_workoutOnly call this after the user has reviewed the proposed workout (exercises, sets, loads, rest mode, supersets) and approved it. Present it for review the way your client supports and get explicit approval first: the LiftTrack app renders this tool's input as an interactive approval card the user accepts or rejects inline (no plaintext restatement needed there), while other clients should show a plaintext summary and confirm. See the server instructions for the full workflow. Create a workout template. Use exact exercise names from search_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% — pass the percentage, do NOT convert it to a 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 places the workout in that folder; if no folder has that name, one is created. Call get_folders first to reuse an existing folder. 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"}]}
update_workoutOnly call this after the user has reviewed the proposed change and approved it, following the same approval workflow as create_workout (see the server instructions). Update an existing workout template. Identify it with workout_name (the exact current name); add workout_folder_name only when several workouts share that name (it is identity only — this tool never moves a workout between folders). Then provide only what changes; omitted fields keep their current values: name: rename the workout. exercises: replace the FULL exercise list. First call get_workout_detail and edit the object it returns (it is already in this exact shape), then pass the complete array back, including exercises you are not changing — the server preserves progression links for exercises that keep their name. The array follows create_workout's schema and rules exactly (exact names from search_exercises, target/load, rest modes, supersets, percent of training max, optional per exercise notes kept to a short cue). A rename needs no prior read: pass workout_name and name only.
get_foldersList the user's workout folders with name and workout count. Call this before create_workout when the user wants the new workout placed in a folder, so you can pass an exact folder_name.
set_training_maxSet the training max for an exercise (creates it, or updates an existing one). The training max is the estimated one rep max that workouts compute weights from when an exercise uses percentage of training max. Args: exercise_name: Exact exercise display name from search_exercises. training_max: The training max value, in the user's units (lb or kg per their settings). Updating an existing training max recalculates the weight of every workout where the exercise uses percentage of training max. Confirm with the user before changing an existing one.
get_coach_profileGet 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. Call this early in a coaching conversation to ground advice in the user's stated goals, schedule, and equipment. Returns an empty object when the user has not set up a profile yet.
validate_exercise_namesCheck 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. Verify every exercise name with this tool (or take names directly from search_exercises results) before proposing a workout with create_workout — a proposal must never contain an exercise that does not exist.
delete_workoutPermanently delete a workout template. This cannot be undone. Deleting a workout also removes it from any schedules and from the user's Garmin device. Always confirm with the user before calling: state the exact workout name (and its folder, if any) and get explicit approval. Args: workout_name: Exact workout template name (case insensitive). folder_name: Optional folder name, used to disambiguate when several workouts share the name. Use "My Workouts" for a workout not in any folder. If several workouts share the name, the call fails and lists each match with its folder; ask the user which one they mean and retry with folder_name.
LiftTrack: connect to Claude, ChatGPT, Cursor · Connectors.fun