Nutrition on activities
icu_get_activity_details now surfaces a dedicated nutrition section that groups energy and carbohydrate data in one place:
calories_burned— energy expenditure for the activity.carbs_ingested_g— carbohydrate taken on during the activity.carbs_used_g— carbohydrate burned. This is a new field; the underlying API value was previously dropped on the floor.
The _g suffix marks grams, matching the wellness-side carbohydrates_g convention so intake and expenditure read consistently across tools.
Clearer subjective scales
Activity responses now emit metadata.subjective_scales (e.g. {"feel": "1-5", "rpe": "1-10"}) whenever those values are present. Without it, downstream LLMs tended to interpret the raw ordinals on an assumed 0–10 scale and mis-summarize how an athlete felt.
Upgrading from v3.x
One response-shape change, by SemVer policy. It's LLM-consumed and unlikely to affect typical MCP usage, but if you parse responses programmatically: on icu_get_activity_details, the calories key is renamed to calories_burned and moved out of the other section into the new nutrition section. The rename disambiguates energy expenditure from the wellness-side calories_consumed (intake), which the old calories label collided with.
Full Changelog: v3.0.0...v4.0.0