get-training-summary
Summarizes recent workout activity and body-measurement trends in a single tool call, returning compact session evidence without requiring separate count queries or manual pagination. Kind: Read-onlyInput parameters
Number of recent weeks to include in the summary. Must be between 1 and 12 (inclusive). Defaults to
4.What it returns
The response contains three top-level sections:period—startDate,endDate, andweeksdescribing the exact window analyzed.workouts— aggregate counts (count,totalDurationSeconds,exerciseCount,setCount), auniqueExerciseTemplateIdsarray, and asessionslist. Each session entry includes the workoutid,title,startTime,endTime,durationSeconds,exerciseCount, andsetCount.bodyMeasurements—countof entries in the window, theearliestandlatestmeasurement snapshots (each withdate,weightKg,leanMassKg,fatPercent), and aweightChangeKgdelta.
workflow metadata block reports the number of API pages scanned and the cache status.
Example usage
“Give me a training summary for the last six weeks.”Ask the assistant for a progress review and it will call
get-training-summary with weeks: 6, returning everything needed to analyze frequency, volume, and body-composition trends in one round trip.
Notes
- The summary covers the most recent N weeks relative to the current UTC date; there is no way to target a historical window.
- The tool internally paginates through workouts and body measurements to collect all records in the window — you do not need to page manually.
- Use this tool instead of calling
get-workout-count+get-workoutswhen you want a bounded progress overview.
get-workouts
Lists workouts from newest to oldest with exercise and timing details. Kind: Read-onlyInput parameters
Page number to retrieve. Must be ≥ 1. Defaults to
1.Number of workouts per page. Must be between 1 and 10 (inclusive). Defaults to
5.Example usage
“Show me my three most recent workouts.”The assistant calls
get-workouts with page: 1, pageSize: 3 and presents each workout’s title, start time, exercises, and sets.
Notes
- Results are always ordered newest first.
pageSizeis hard-capped at 10. To retrieve more workouts, incrementpage.- Use
get-workout-countfirst if you need to know how many total pages exist. - When you already have a workout ID, prefer
get-workoutto avoid fetching an entire page.
get-workout
Retrieves complete details for a single workout by its ID. Kind: Read-onlyInput parameters
The ID of the workout to retrieve. Must be a non-empty string. Obtain this value from a
get-workouts listing, a get-workout-events entry, or the response from create-workout.Example usage
“Show me everything about my last chest day.”After
get-workouts identifies the workout ID, the assistant calls get-workout with that ID to fetch the full set-by-set breakdown.
Notes
workoutIdmust come from an existing Hevy workout. There is no search-by-title equivalent; useget-workoutsto browse and identify IDs first.- Do not use this tool to list multiple workouts — each call retrieves exactly one record.
get-workout-count
Returns the total number of workouts logged in the account as a single integer. Kind: Read-onlyInput parameters
This tool takes no input parameters.Example usage
“How many workouts have I logged in total?”The assistant calls
get-workout-count and reports the number directly.
Notes
- Returns only a count; it does not accept date filters or pagination parameters.
- Useful for estimating the total number of pages before iterating with
get-workouts(totalPages = ceil(count / pageSize)).
get-workout-events
Lists workout update and delete events since a given timestamp, returned newest first. Kind: Read-onlyInput parameters
Page number to retrieve. Must be ≥ 1. Defaults to
1.Number of events per page. Must be between 1 and 10 (inclusive). Defaults to
5.ISO 8601 UTC timestamp. Only events that occurred at or after this time are returned. Defaults to
"1970-01-01T00:00:00Z", which returns all events in the account’s history.Example usage
“What workouts have changed since last Monday?”Pass the Monday date as an ISO timestamp (
since: "2025-01-20T00:00:00Z") and the assistant pages through events to identify updates and deletes.
Notes
sincemust be a valid ISO 8601 UTC timestamp string inYYYY-MM-DDTHH:mm:ssZformat. Invalid timestamps are rejected.- The default
sincevalue of1970-01-01T00:00:00Zreads from the beginning of recorded history, which may return a very large result set — narrow the window in production use. - This tool is designed for incremental sync scenarios (e.g., keeping a local workout cache up to date). For the current workout list, use
get-workoutsinstead. pageSizeis capped at 10 per page.
create-workout
Creates a new completed workout in the authenticated Hevy account. Kind: Write (mutation)Input parameters
Top-level fields
Workout title. Must be a non-empty string (minimum 1 character).
UTC start time of the workout. Must match the format
YYYY-MM-DDTHH:mm:ssZ exactly (e.g., "2025-01-27T09:00:00Z").UTC end time of the workout. Must match the format
YYYY-MM-DDTHH:mm:ssZ exactly (e.g., "2025-01-27T10:15:00Z").Optional free-text description for the workout. May be
null.Whether the workout is private on the Hevy social feed. Defaults to
false.Ordered list of exercises performed in the workout. May be supplied as a JSON array or a JSON-encoded string. Each element must conform to the exercise object shape below.
Exercise object fields
Each object in theexercises array has the following fields:
The ID of the exercise template to use. Must be a non-empty string. Discover template IDs with
get-exercise-templates or search-exercise-templates.Numeric superset group identifier. Exercises sharing the same
supersetId are grouped as a superset. May be null or omitted for non-superset exercises.Free-text notes for this exercise. May be
null or omitted.Array of set objects performed for this exercise. Each set must conform to the set object shape below.
Set object fields
Each object in an exercise’ssets array has the following fields:
Set type. One of
"warmup", "normal", "failure", or "dropset". Defaults to "normal".Weight lifted in kilograms. Also accepted as
weight (alias). May be null or omitted for bodyweight or cardio exercises.Number of repetitions performed. May be
null or omitted for duration-based exercises.Distance covered in meters. Also accepted as
distance (alias). May be null or omitted for non-cardio exercises.Duration of the set in seconds. Also accepted as
duration (alias). May be null or omitted for rep-based exercises.Rate of perceived exertion. Accepted values are those recognized by the Hevy API RPE enum (e.g.,
6, 6.5, … 10). May be null or omitted.Custom metric value for exercises that track a non-standard measurement. Also accepted as
customMetric (alias). May be null or omitted.Example usage
“Log today’s bench press workout. I did 3 sets at 80 kg for 8 reps, starting at 7:30 AM and finishing at 8:15 AM.”The assistant calls
create-workout with the title, UTC-formatted startTime and endTime, the bench press exerciseTemplateId, and the three sets filled in with weightKg: 80 and reps: 8.
Notes
- Both
startTimeandendTimemust be exact UTC timestamps inYYYY-MM-DDTHH:mm:ssZformat. Timezone-offset formats (e.g.,+05:30) are not accepted. exerciseTemplateIdvalues must already exist in Hevy. Usesearch-exercise-templatesto look up IDs before calling this tool.- Set
typedefaults to"normal"if omitted; invalid enum values are rejected. - Aliases
weight/distance/duration/customMetricare accepted in place of theirKg/Meters/Seconds/Valuecounterparts for convenience; when both aliases are supplied, the explicit camelCase name takes precedence.
update-workout
Replaces an existing workout in the Hevy account with a fully specified new payload. All fields are overwritten; the workout is not partially patched. Kind: Write (mutation)Input parameters
update-workout accepts workoutId plus the complete workout payload — the same fields as create-workout.
The ID of the workout to replace. Must be a non-empty string. The workout must already exist in the account.
title, startTime, endTime, description, isPrivate, and exercises) apply here with the same types, formats, and constraints.
Example usage
“I recorded the wrong weight on my last squat session — fix set 2 to 100 kg instead of 90 kg.”The assistant fetches the workout with
get-workout, modifies the relevant set’s weightKg in memory, then calls update-workout with the workout’s ID and the corrected full payload.
Notes
- This is a full replacement (HTTP PUT). Every field in the workout — including sets you do not intend to change — must be included in the payload. Omitting optional fields may cause them to be cleared or set to API defaults.
update-workoutis idempotent: repeating the same call with the same payload yields the same stored state.- The update is destructive in that it overwrites the prior workout record. Always retrieve the current workout with
get-workoutbefore constructing an update payload to avoid accidentally losing data. - Use
create-workoutwhen logging a brand-new session; useupdate-workoutonly when correcting or editing an existing, known workout ID.