list_supported_strength_exercises
Retrieve a list of supported strength exercises for Garmin workouts. Optionally filter by search query to find specific exercises.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| query | No |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Implementation Reference
- The MCP tool handler that exposes 'list_supported_strength_exercises'. Decorated with @mcp.tool, delegates to list_strength_exercise_aliases(query).
def list_supported_strength_exercises(query: str | None = None) -> dict: return {"exercises": list_strength_exercise_aliases(query)} - The core logic function that returns strength exercise aliases. Filters by query against alias names, categories, and exercise names; returns the full map if no query.
def list_strength_exercise_aliases(query: str | None = None) -> dict[str, dict[str, str]]: if not query: return dict(sorted(EXERCISE_ALIAS_MAP.items())) needle = _normalize_text(query) return { alias: mapping for alias, mapping in sorted(EXERCISE_ALIAS_MAP.items()) if needle in _normalize_text(alias) or needle in mapping["category"].lower() or needle in mapping["exerciseName"].lower() } - The EXERCISE_ALIAS_MAP dictionary that defines all supported strength exercises with their Garmin category and exerciseName mappings.
EXERCISE_ALIAS_MAP = { "bench press": {"category": "BENCH_PRESS", "exerciseName": "BENCH_PRESS"}, "flat db press": {"category": "BENCH_PRESS", "exerciseName": "DUMBBELL_BENCH_PRESS"}, "dumbbell bench press": {"category": "BENCH_PRESS", "exerciseName": "DUMBBELL_BENCH_PRESS"}, "incline db press": {"category": "BENCH_PRESS", "exerciseName": "INCLINE_DUMBBELL_BENCH_PRESS"}, "incline dumbbell bench press": {"category": "BENCH_PRESS", "exerciseName": "INCLINE_DUMBBELL_BENCH_PRESS"}, "hack squat": {"category": "SQUAT", "exerciseName": "BARBELL_HACK_SQUAT"}, "leg press": {"category": "SQUAT", "exerciseName": "LEG_PRESS"}, "romanian deadlift": {"category": "DEADLIFT", "exerciseName": "BARBELL_STRAIGHT_LEG_DEADLIFT"}, "rdl": {"category": "DEADLIFT", "exerciseName": "BARBELL_STRAIGHT_LEG_DEADLIFT"}, "seated hamstring curl": {"category": "LEG_CURL", "exerciseName": "LEG_CURL"}, "leg curl": {"category": "LEG_CURL", "exerciseName": "LEG_CURL"}, "leg extension": {"category": "CRUNCH", "exerciseName": "LEG_EXTENSIONS"}, "leg extensions": {"category": "CRUNCH", "exerciseName": "LEG_EXTENSIONS"}, "t bar row": {"category": "ROW", "exerciseName": "T_BAR_ROW"}, "seated cable row": {"category": "ROW", "exerciseName": "SEATED_CABLE_ROW"}, "row": {"category": "ROW", "exerciseName": "ROW"}, "lat pulldown": {"category": "PULL_UP", "exerciseName": "LAT_PULLDOWN"}, "wide grip lat pulldown": {"category": "PULL_UP", "exerciseName": "WIDE_GRIP_LAT_PULLDOWN"}, "pull up": {"category": "PULL_UP", "exerciseName": "PULL_UP"}, "seated db shoulder press": {"category": "SHOULDER_PRESS", "exerciseName": "SEATED_DUMBBELL_SHOULDER_PRESS"}, "shoulder press": {"category": "SHOULDER_PRESS", "exerciseName": "SHOULDER_PRESS"}, "ez bar skull crusher": {"category": "TRICEPS_EXTENSION", "exerciseName": "LYING_EZ_BAR_TRICEPS_EXTENSION"}, "skull crusher": {"category": "TRICEPS_EXTENSION", "exerciseName": "LYING_EZ_BAR_TRICEPS_EXTENSION"}, "ez bar curl": {"category": "CURL", "exerciseName": "STANDING_EZ_BAR_BICEPS_CURL"}, "db bicep curl": {"category": "CURL", "exerciseName": "STANDING_ALTERNATING_DUMBBELL_CURLS"}, "dumbbell curl": {"category": "CURL", "exerciseName": "STANDING_ALTERNATING_DUMBBELL_CURLS"}, "db lateral raise": {"category": "LATERAL_RAISE", "exerciseName": "LEANING_DUMBBELL_LATERAL_RAISE"}, "dumbbell lateral raise": {"category": "LATERAL_RAISE", "exerciseName": "LEANING_DUMBBELL_LATERAL_RAISE"}, "seated calf raise": {"category": "CALF_RAISE", "exerciseName": "SEATED_CALF_RAISE"}, "cable crunch": {"category": "CRUNCH", "exerciseName": "KNEELING_CABLE_CRUNCH"}, "crunch": {"category": "CRUNCH", "exerciseName": "CRUNCH"}, } - Text normalization helper used by list_strength_exercise_aliases to enable case-insensitive, whitespace-normalized search.
def _normalize_text(value: str) -> str: return " ".join(value.strip().lower().replace("-", " ").replace("_", " ").split()) - src/garmin_workouts_mcp/server.py:12-17 (registration)Import of list_strength_exercise_aliases from payloads module, connecting the handler to the helper function.
from .payloads import ( WorkoutInput, build_workout_payload, describe_workout, list_strength_exercise_aliases, resolve_strength_exercise,