Fitness
Fields marked * are required. Updates keep every field they are not given. An AI app can ask vritto_describe for the same details, filtered to what its connection may use.
WorkoutworkoutHealth, off until allowed
One workout, cardio or strength. The same operations reach sleep sessions (type 'sleep'), body measurements (type 'measurement'), water (type 'hydration'), a meal's calorie and macro totals (type 'nutrition') and a day's manual activity totals (type 'activity'); the read also returns the dashboard, trends, insights, journal-tag correlations and a yearly recap.
fitness_findFindthrough vritto_findRead Fitness: no filter gives the dashboard (current state, newest records); type with from/to lists one kind of record in a period; view 'trends' (metric, period, date for a past week, month or year), 'insights', 'recap' (year) or 'correlations'. ALWAYS pass from/to when the question concerns a period.
Note: No filter returns the dashboard (newest records only); type with from/to lists one kind of record in a period; view 'trends', 'insights', 'correlations' or 'recap' reads those summaries.
| Field | Type | Description |
|---|---|---|
| view | one of dashboard, trends, insights, correlations, recap | 'dashboard' (default); 'trends' a year of daily series, or with metric one period; 'insights' today's readiness, prescription, intensity minutes and training load; 'correlations' 90 days of journal-tag correlations; 'recap' a year in review. |
| type | one of workout, sleep, measurement, hydration, nutrition, activity | List this kind of record instead of the dashboard: 'workout', 'sleep', 'measurement', 'hydration', 'nutrition' or 'activity' (daily totals). |
| id | string | Return just this record (with type), every field. |
| from | string | Records on or after this date. ALWAYS pass from/to when the question concerns a period. |
| to | string | Records on or before this date. |
| query | string | Text to match: an activity type or title, a meal's name, a measurement kind. |
| limit | integer | Rows to return, default 50. |
| detail | one of summary, full | 'summary' (default) compact rows; 'full' every field incl. sets, stages and notes. |
| metric | one of steps, sleep | Trends: steps or sleep for one period instead of the year of daily series. Sleep values are minutes asleep. |
| period | one of week, month, year | Trends: calendar period containing date (weeks start Monday). Week and month return daily values, year returns monthly daily averages. |
| date | string | Trends: any local date YYYY-MM-DD inside the period; defaults to today. |
| year | integer | Recap: calendar year; defaults to the current year. |
Example input
{}fitness_addCreate or Updatethrough vritto_create or vritto_updateLog what the user describes: a workout ('I ran 5k in 28 minutes this morning'; startedAt plus durationSec or endedAt; strength sets with warm-ups marked), sleep or a body measurement in record; water (volumeMl), a meal's totals or a day's activity totals as top-level fields. PRs are detected automatically. Activity totals REPLACE the day's manual entry.
Note: A workout, sleep session or measurement goes in record; water, a meal and a day's activity totals are top-level fields with their type. SI units: kg for weight and lean mass, cm for lengths, percent for body fat. Activity totals replace the day's manual entry.
| Field | Type | Description |
|---|---|---|
| type | one of workout, sleep, measurement, hydration, nutrition, activity | 'workout' (default), 'sleep' (a night or nap), 'measurement' (weight, body fat, a body measurement), 'hydration' (water), 'nutrition' (a meal's totals) or 'activity' (a day's manual totals). |
| record | object | A workout, sleep session or body measurement. |
| record.id | string | Leave out when adding; to correct an entry use fitness_change. |
| record.startedAt | string | ISO date-time a workout started, or bed time for sleep. Required for both. |
| record.endedAt | string | ISO date-time a workout ended (alternative to durationSec), or wake time for sleep (required). |
| record.timeZoneId | string | IANA time zone of the workout or night, e.g. 'America/New_York'. |
| record.notes | string | |
| record.activityType | string | Workout: unified activity type, e.g. running, walking, cycling, strength_training, hiit, yoga, swimming_pool. Unknown values fall back to 'other'. |
| record.title | string | |
| record.durationSec | integer | Workout duration in seconds. Required unless endedAt is provided. |
| record.distanceM | number | |
| record.activeEnergyKcal | number | |
| record.avgHr | number | Average heart rate, bpm. |
| record.maxHr | number | Max heart rate, bpm. |
| record.elevationGainM | number | Elevation gain in meters. |
| record.effortRpe | number | Perceived effort 1-10; 7+ counts as vigorous. |
| record.feels | integer | How the workout felt, 1 (awful) to 5 (great). |
| record.routineId | string | ID of the routine this workout followed, from the dashboard's routines: never invented. |
| record.exercises | list of object | Workout: strength exercises with sets; omit for cardio. |
| record.isNap | boolean | |
| record.qualityRating | integer | Sleep quality, 0 to 5. |
| record.interruptions | integer | Number of times the user woke during the night. |
| record.stages | list of object | Sleep-stage spans, if the user reports them. Usually omit for manual logs. |
| record.type | one of weight, body_fat, lean_mass, height, neck, shoulders, chest, waist, hips, biceps_left, biceps_right, forearm_left, forearm_right, thigh_left, thigh_right, calf_left, calf_right | Measurement kind. Required for a measurement. |
| record.value | number | Measurement value in SI units: kg for weight/lean_mass, cm for lengths, percent for body_fat. |
| record.measuredAt | string | ISO date-time of a measurement; defaults to now. |
| volumeMl | number | Water: volume in ml, e.g. 500. |
| name | string | Meal: what was eaten, e.g. 'Chicken burrito'. |
| mealType | one of breakfast, lunch, dinner, snack, unknown | Meal: defaults to 'unknown'. |
| kcal | number | Meal: calories. |
| proteinG | number | Meal: protein in grams. |
| carbsG | number | Meal: carbohydrates in grams. |
| fatG | number | Meal: fat in grams. |
| loggedAt | string | Water or meal: ISO date-time it was drunk or eaten; defaults to now. Use for backfills like 'this morning'. |
| date | string | Activity: the day, defaults to today. |
| steps | integer | |
| exerciseMinutes | number | |
| activeEnergyKcal | number | |
| distanceM | number | |
| floors | number | Floors/flights climbed. |
| mindfulMinutes | number | |
| timeZoneId | string | IANA time zone the day belongs to, e.g. 'America/New_York'. |
Example input
{
"type": "workout",
"record": {
"activityType": "running",
"title": "Morning 5K",
"startedAt": "2026-09-26T07:05:00-05:00",
"durationSec": 1680,
"distanceM": 5000
}
}fitness_changeUpdatethrough vritto_updateCorrect one logged workout, sleep session or measurement by type and record.id; only the fields you send change (exercises and stages replace whole when sent). For a day's activity totals send type 'activity' with date and the new values. Water and meal logs can't be edited. Resolve the id with fitness_find first.
Note: Only sent fields change; exercises and stages replace whole when sent. Water and meal logs can't be edited.
| Field | Type | Description |
|---|---|---|
| type | one of workout, sleep, measurement, hydration, nutrition, activity | 'workout' (default), 'sleep' (a night or nap), 'measurement' (weight, body fat, a body measurement), 'hydration' (water), 'nutrition' (a meal's totals) or 'activity' (a day's manual totals). |
| record | object | The record's id plus the fields to change. |
| record.id | string | Leave out when adding; to correct an entry use fitness_change. |
| record.startedAt | string | ISO date-time a workout started, or bed time for sleep. Required for both. |
| record.endedAt | string | ISO date-time a workout ended (alternative to durationSec), or wake time for sleep (required). |
| record.timeZoneId | string | IANA time zone of the workout or night, e.g. 'America/New_York'. |
| record.notes | string | |
| record.activityType | string | Workout: unified activity type, e.g. running, walking, cycling, strength_training, hiit, yoga, swimming_pool. Unknown values fall back to 'other'. |
| record.title | string | |
| record.durationSec | integer | Workout duration in seconds. Required unless endedAt is provided. |
| record.distanceM | number | |
| record.activeEnergyKcal | number | |
| record.avgHr | number | Average heart rate, bpm. |
| record.maxHr | number | Max heart rate, bpm. |
| record.elevationGainM | number | Elevation gain in meters. |
| record.effortRpe | number | Perceived effort 1-10; 7+ counts as vigorous. |
| record.feels | integer | How the workout felt, 1 (awful) to 5 (great). |
| record.routineId | string | ID of the routine this workout followed, from the dashboard's routines: never invented. |
| record.exercises | list of object | Workout: strength exercises with sets; omit for cardio. |
| record.isNap | boolean | |
| record.qualityRating | integer | Sleep quality, 0 to 5. |
| record.interruptions | integer | Number of times the user woke during the night. |
| record.stages | list of object | Sleep-stage spans, if the user reports them. Usually omit for manual logs. |
| record.type | one of weight, body_fat, lean_mass, height, neck, shoulders, chest, waist, hips, biceps_left, biceps_right, forearm_left, forearm_right, thigh_left, thigh_right, calf_left, calf_right | Measurement kind. Required for a measurement. |
| record.value | number | Measurement value in SI units: kg for weight/lean_mass, cm for lengths, percent for body_fat. |
| record.measuredAt | string | ISO date-time of a measurement; defaults to now. |
| date | string | Activity: the day, defaults to today. |
| steps | integer | |
| exerciseMinutes | number | |
| activeEnergyKcal | number | |
| distanceM | number | |
| floors | number | Floors/flights climbed. |
| mindfulMinutes | number | |
| timeZoneId | string | IANA time zone the day belongs to, e.g. 'America/New_York'. |
Example input
{
"type": "workout",
"record": {
"id": "workout_abc",
"durationSec": 3000
}
}fitness_removeDeletethrough vritto_deleteRemove one manual entry: a workout (and the PRs it set), sleep session, measurement, water or meal log, by type and id. Only for explicit removals; a synced record is removed in Apple Health or Health Connect. Resolve the id with fitness_find first.
Note: Manual entries only; a record synced from Apple Health or Health Connect is removed there.
| Field | Type | Description |
|---|---|---|
| type | one of workout, sleep, measurement, hydration, nutrition, activity | 'workout' (default), 'sleep' (a night or nap), 'measurement' (weight, body fat, a body measurement), 'hydration' (water), 'nutrition' (a meal's totals) or 'activity' (a day's manual totals). |
| id* | string | Record ID from a prior fitness_find result, never invented. |