add_workout_to_plan
ChatGPTAdds a workout to a workout plan: data.week and data.day (0-based) place it in the program, data.exerciseList prescribes the exercises and sets (exercise ids from search_exercises; ids that resolve to neither library are rejected). Names and metadata are filled in from the library.
add_workout_to_plan_template
ChatGPTAdds a workout to a client's plan template: data.week and data.day (0-based) place it in the program, data.exerciseList prescribes the exercises and sets (exercise ids from search_exercises; names and metadata are filled in from the library).
assign_workout_plan
ChatGPTAssigns a plan template to the client: creates an active plan instance from the template's current workouts, starting now unless start names a later day. The client sees it in their app immediately; start only sets the days its workouts are planned on. Call this only when the trainer explicitly asks to start or activate the plan for the client — creating a plan template does not imply starting it.
coach_myself
ChatGPTMakes the trainer their own client, so workouts and plans can be built for them like for anyone else and they can train with them in the Onyx Coach mobile app, seeing exactly what a client sees. It does not use up a client slot. Use it when the trainer trains alone, has no clients yet, or wants to try the product on themselves. The returned id is the client id to build for.
copy_to_client
ChatGPTCopies workout content into a client's library. Sources: another client's workoutTemplate or workoutPlanTemplate (sourceClientId + templateId), a general-library workoutPlan (planId), one workout of a general-library plan (workoutPlanWorkout: planId + workoutId — becomes a workout template), one workout of a client plan template (workoutPlanTemplateWorkout: sourceClientId + templateId + workoutId — becomes a workout template), or a workoutCategory (workoutCategoryId — becomes a workout template). Optional name overrides the name of the copy. A copied program is always unlocked for the client: the entitlements of the source are not copied.
create_client_note
ChatGPTCreates a private trainer note on a client (data.text, optional data.pinned). Only the trainer who wrote a note can see or edit it — the client never can.
create_exercise
ChatGPTCreates an exercise in the trainer's library. Search first: create only when neither library has the exercise. data.type sets how it is measured (reps, time, distance, ...) and data.withWeight: 1 adds a weight input. Returns the stored exercise including its new id.
create_scheduled_event
ChatGPTSchedules a workout or rest day on a client's calendar (data.type: 'workout' | 'restDay'). This is the tool for a one-off workout on a specific date ("schedule a workout for Monday") — never create a workout plan for that. For a reusable workout use create_workout_template; for a program of several workouts use create_workout_plan_template. data.scheduledFor is a wall-clock date "YYYY-MM-DD" or datetime "YYYY-MM-DDTHH:mm" in the client's local time — pass it exactly as the client should see it, no timezone conversion. For a workout, put the exercises in data.exerciseList (exercise ids from search_exercises, or the compact entries of a template from list_workout_templates) and set data.templateId only as provenance — later template edits never propagate to already-scheduled events. Names and metadata are filled in from the library. Check-in events cannot be created here.
create_workout_plan
ChatGPTCreates a workout plan (multi-week program) in the trainer's general library, optionally with its workouts in the same call (workouts; add more later with add_workout_to_plan). Exercise entries need only the exercise id (from search_exercises) and the prescription; names and metadata are filled in from the library. Returns the stored plan including its new id. Only for programs of several workouts across days and weeks — for a single workout use create_workout_template (reusable) or create_scheduled_event (on a date) instead.
create_workout_plan_template
ChatGPTCreates a workout-plan template (multi-week program) in a client's library, optionally with its workouts in the same call (workouts may be empty — add more later with add_workout_to_plan_template). Exercise entries need only the exercise id (from search_exercises) and the prescription; names and metadata are filled in from the library. Only for programs of several workouts spread across days and weeks — never for a single workout (use create_workout_template for a reusable workout or create_scheduled_event for a workout on a date). If the trainer did not say which of the three they want, ask before creating anything. Activate it for the client with assign_workout_plan, but only when the trainer asks to start it.
create_workout_template
ChatGPTCreates a workout template in a client's library: a named exercise list where each entry references an exercise id (from search_exercises) and prescribes its sets: reps and weight, time or distance depending on the exercise measurement type. Exercise names, media and metadata are filled in from the library automatically. The client sees the template in their app immediately and can start it any time. Use this for a reusable single workout. For a workout on a specific date use create_scheduled_event instead; for a program of several workouts across days and weeks use create_workout_plan_template. If the trainer did not say which of the three they want, ask before creating anything.
deactivate_workout_plan
ChatGPTDeactivates (soft-deletes) one of the client's active plan instances. The plan template it was created from is untouched. Plan-instance ids come from list_client_workout_plans.
delete_client_note
ChatGPTSoft-deletes one of the trainer's own notes on a client.
delete_exercise
ChatGPTSoft-deletes an exercise from the trainer's library. Templates and workouts that already reference it keep working; the exercise just stops appearing in the library.
delete_plan_template_workout
ChatGPTSoft-deletes a single workout from a client's plan template.
delete_plan_workout
ChatGPTSoft-deletes a single workout from a general-library workout plan.
delete_scheduled_event
ChatGPTCancels (soft-deletes) a scheduled event, removing it from the client's calendar. Check-in markers are managed by the check-ins service and rejected.
delete_workout_plan
ChatGPTSoft-deletes a workout plan from the trainer's general library.
delete_workout_plan_template
ChatGPTSoft-deletes a plan template from a client's library and deactivates any active plans the client started from it.
delete_workout_template
ChatGPTSoft-deletes a workout template from a client's library. It disappears from the client's app; workouts the client already completed from it are unaffected.
duplicate_plan_template_workout
ChatGPTDuplicates a workout within a client's plan template, optionally onto a different week/day (0-based). Returns the copy with its new id.
duplicate_plan_workout
ChatGPTDuplicates a workout within a general-library workout plan, optionally onto a different week/day (0-based). Returns the copy with its new id.
get_client
ChatGPTReturns one coached client: the relationship record (status, timestamps) plus their name and profile picture. Client ids come from list_clients.
get_client_onboarding_data
ChatGPTReturns the client's onboarding answers: gender, year born, goal, limiting factor, preferred training days, years of experience, workout location (gym or home), focus areas, height in cm and weight in kg. Read it before programming for a client so the plan fits their goal, experience and schedule. item is null when the client never completed onboarding (for example a managed client without the app).
get_client_timezone
ChatGPTReturns the client's device-reported IANA time zone (item.timeZone) and clock preferences, so scheduled times can be expressed in their local time. item is null when the client never reported one.
get_client_workout
ChatGPTReturns a single completed workout of a client by id — the performed exercises with their sets (reps/weight/time/…), start/end timestamps (unix seconds) and the client's feedback (rating, note). Use it when the workout id is already known (e.g. from the current page); otherwise page with get_client_workout_history.
get_client_workout_history
ChatGPTReturns a client's completed workouts, newest first. Each entry contains the performed exercises with their sets (reps/weight/time/…) and start/end timestamps (unix seconds). Page backwards by passing the oldest start you have as before.
get_exercise
ChatGPTReturns the full exercise document from either library: complete description, translations, demo video links and default settings. Use it when a search or list summary is not enough, for example before editing one of the trainer exercises.
get_product_guide
ChatGPTHow Onyx Coach itself works, for the trainer's "how do I…" and "where is…" questions: the pages of the trainer web app, the exact button labels and what the product cannot do. Topics: overview (navigation, terms, subscription and billing, settings), clients (adding and inviting clients, the client page, premium access), training (exercises, workouts, programs), checkIns (check-in schedule, inbox, reviewing), calendar (scheduling for a client). Answer from the returned text and never guess a place or a feature it does not mention. This is product documentation, not the trainer's data.
list_client_check_ins
ChatGPTA client's most recent submitted check-ins, newest first: body measurements (kg, cm, %), the client's note and the trainer's feedback, with the due date and status. Photos are not included. Only check-ins run by the calling trainer are returned.
list_client_notes
ChatGPTLists the trainer's own private notes on a client, with text, pinned flag and timestamps. Notes are never visible to the client, and other trainers' notes are never returned.
list_client_workout_plans
ChatGPTLists the plan instances a client is actually running (assigned/started plans with per-workout instance ids and progress). For the trainer's reusable plan library use list_workout_plans; for the client's assignable templates use list_workout_plan_templates.
list_clients
ChatGPTLists the coached clients of the signed-in trainer with their client id, name, profile picture and relationship status. Use the returned client id for every client-scoped tool. Optionally filter by status (e.g. "active").
list_exercise_blocks
ChatGPTLists the trainer's exercise blocks: reusable named groups of exercises (a warm-up, a core finisher, a mobility routine) with their prescribed sets. Copy a block's entries into the exerciseList of a workout to reuse it.
list_exercises
ChatGPTBrowses the trainer's own exercise library (not the official one) as a slim, pageable list: id, name, measurement type, equipment, focus areas and a truncated description. search matches the beginnings of words in the name or any translated name; combine it with the focus area, equipment and measurement filters. Page with offset and the returned nextOffset. When you know which exercise you need, use search_exercises instead.
list_official_exercises
ChatGPTBrowses the OnyxCoach official exercise library, curated exercises every trainer can reference in templates and plan workouts by id exactly like their own. Slim, pageable view (id, name, measurement type, equipment, focus areas, truncated description) with total matches and nextOffset for the next page. search matches the beginnings of words in the name or any translated name; combine it with the focus area, equipment and measurement filters. When you know which exercise you need, use search_exercises instead.
list_scheduled_events
ChatGPTLists a client's calendar of scheduled events — planned workouts, rest days and check-in markers — with their status (scheduled/started/completed). scheduledFor is a wall-clock string in the client's local time, "YYYY-MM-DD" or "YYYY-MM-DDTHH:mm"; bound the range with from/to ("YYYY-MM-DD", inclusive). Exercise entries are returned in compact form.
list_workout_plan_templates
ChatGPTLists the workout-plan templates in a client's library — multi-week programs that can be assigned to the client with assign_workout_plan. Pass includeWorkouts to also return each template's workouts (exercise entries in compact form).
list_workout_plans
ChatGPTLists the trainer's general workout-plan library (multi-week programs). Pass includeWorkouts to also return each plan's workouts (day/week entries with exercise lists in compact form).
list_workout_templates
ChatGPTLists the workout templates in a client's library — reusable named workouts (exercise lists with prescribed sets) the client can start any time. Exercise entries are returned in compact form (id, name, type, sets, note, superset).
remove_workout_from_plan
ChatGPTRemoves one scheduled workout occurrence (by instanceId from list_client_workout_plans) from a client's active plan instance. Returns the updated plan.
search_exercises
ChatGPTFinds exercises by meaning and by name across the OnyxCoach official library (thousands of curated exercises) and the trainer's own library. Understands abbreviations ("RDL"), synonyms and any language, and matches translated exercise names. Returns a ranked list (score 1 is the best hit) with each exercise id, source (official or trainer), measurement type, equipment and focus areas. Use this whenever you need an exercise id for a workout; use the list tools only to browse by filter. Search once per exercise you need, with a specific query.
update_client_note
ChatGPTUpdates a note's text and/or pinned flag. Only notes created by the connected trainer can be edited. Returns the updated note.
update_exercise
ChatGPTUpdates an exercise in the trainer's library (official exercises cannot be edited). Pass only the fields to change in changes; set an optional field to null to clear it. Returns the updated exercise.
update_plan_template_workout
ChatGPTUpdates a workout inside a client's plan template. changes.exerciseList replaces the whole list, so include every exercise the workout should keep (id plus sets). Returns the updated workout.
update_plan_workout
ChatGPTUpdates a workout inside a general-library workout plan (name, week/day placement, exercise list, …). changes.exerciseList replaces the whole list, so include every exercise the workout should keep (id plus sets). Returns the updated workout.
update_scheduled_event
ChatGPTUpdates a scheduled event — name, scheduledFor, exerciseList, note or status. Pass only the fields to change in changes; exerciseList replaces the whole list, so include every exercise the event should keep (id plus sets). Only events created by the connected trainer can be edited; check-in markers are managed by the check-ins service and rejected. Returns the updated event.
update_workout_plan
ChatGPTUpdates a workout plan's metadata in the trainer's general library (name, description, active, hide). Pass only the fields to change in changes — null clears a field.
update_workout_plan_template
ChatGPTUpdates a plan template's metadata in a client's library. Pass only the fields to change in changes — null clears a field. Returns the updated template.
update_workout_template
ChatGPTUpdates a workout template in a client's library. Pass only the fields to change in changes; set an optional field to null to clear it. exerciseList replaces the whole list, so include every exercise the template should keep (id plus sets, as returned by list_workout_templates). Returns the updated template.