Bug: get_morning_training_readiness returns recovery_time_hours values that are wildly too high (e.g. 314, 2601). Observed on the actual Garmin Connect app/device at the same time: 41 hours.
Root cause: in src/garmin_mcp/health_wellness.py, line 886:
"recovery_time_hours": readiness.get('recoveryTime'),
This passes Garmin's raw recoveryTime value straight through, but that field is in minutes, not hours. Elsewhere in the same file (line 220) the conversion is done correctly:
"recovery_time_hours": round(r.get('recoveryTime', 0) / 60, 1) if r.get('recoveryTime') else None,
Evidence: 2601 (reported) / 60 = 43.4h, which is very close to the real 41h shown on-device. Confirms the field is minutes being mislabeled as hours.
Suggested fix: apply the same / 60 conversion at line 886 as is already used at line 220.
Repro: call get_morning_training_readiness for any date and compare the returned recovery_time_hours to the recovery time shown in the Garmin Connect app for that day.
Bug:
get_morning_training_readinessreturnsrecovery_time_hoursvalues that are wildly too high (e.g. 314, 2601). Observed on the actual Garmin Connect app/device at the same time: 41 hours.Root cause: in
src/garmin_mcp/health_wellness.py, line 886:This passes Garmin's raw
recoveryTimevalue straight through, but that field is in minutes, not hours. Elsewhere in the same file (line 220) the conversion is done correctly:Evidence: 2601 (reported) / 60 = 43.4h, which is very close to the real 41h shown on-device. Confirms the field is minutes being mislabeled as hours.
Suggested fix: apply the same
/ 60conversion at line 886 as is already used at line 220.Repro: call
get_morning_training_readinessfor any date and compare the returnedrecovery_time_hoursto the recovery time shown in the Garmin Connect app for that day.