searchExercisesreadSearch the exercise catalogue
Search the shared exercise catalogue (plus the athlete's own custom exercises) by name, optionally filtered by equipment or a target muscle. Returns catalogue slugs to use in prescriptions.
Browse the read and write capabilities exposed by the canonical Bulk Coach fitness MCP tool registry.
Bulk Coach generates its public MCP catalogue from the same canonical tool registry used by the internal coach. Names, descriptions, input schemas and read/write classifications cannot be maintained as a separate marketing contract.
The public transport can expose a narrower list after permission checks. This source list cannot drift from the product registry.
searchExercisesreadSearch the shared exercise catalogue (plus the athlete's own custom exercises) by name, optionally filtered by equipment or a target muscle. Returns catalogue slugs to use in prescriptions.
getExercisereadFetch full detail for one exercise slug — muscles, equipment, instructions, setup cues, and equipment-matched substitutions.
getProfilereadThe athlete's onboarding brief: goal, date of birth, self-declared gender, training age, schedule, optional height and dated manual bodyweight baseline, assumed commercial-gym equipment, injuries, and what failed before. Read this before designing or adjusting workouts. Gender is for respectful address, not sex-based prescription rules. If fresh Apple Health data exists, prefer its bodyweight trend over the manual baseline for ongoing coaching.
getWeeklySchedulereadThe authoritative repeating week, derived directly from saved workouts with a weekday. Returns Monday-based day indexes, today's workout, and scheduled workouts in weekday order. Refresh this before answering schedule questions or changing a workout day.
listWorkoutsreadThe athlete's saved workouts, each with one weekday or null when unscheduled. Archived workouts are excluded unless explicitly requested. Read this before creating or scheduling a workout so you do not invent duplicates.
getWorkoutreadFull detail for one saved workout: its blocks, exercise prescriptions, catalogue-backed names, and optional weekday. Read this before updateWorkout so your changes preserve the rest of the workout.
getWorkoutHistoryreadThe athlete's most recent workout sessions, newest first. Returns the canonical sessionId, ISO timestamps, and server-calculated durationMinutes and durationLabel. Always quote the provided duration and never calculate one from timestamps. Use getWorkoutDetail with sessionId for the sets within one session.
getWorkoutDetailreadFull detail for one workout session: a compact session summary, exercises, and every logged set. The session summary includes server-calculated durationMinutes and durationLabel. Always use that duration instead of calculating from timestamps. sessionId must be the canonical sessionId returned by getWorkoutHistory, not a clientSessionId.
getSetHistoryreadRecent logged working sets for one exercise slug (newest first, warmups excluded) plus the athlete's best e1RM for it. Use this to ground any load or progression claim.
getWeeklyVolumereadHard-set volume per muscle for recent weeks, plus the athlete's current and longest training streak. Grounds volume and adherence claims.
startWorkoutwriteStart an in-progress session. With workoutId, copy the owned saved workout into an immutable prescription snapshot and return the session id and workout name. Omit workoutId only when the athlete explicitly requested an ad hoc or empty session. Do not call for a vague request such as 'Start a workout': first ask which saved workout or focus they want. Fails with active_session when a session is already in progress and invalid_reference when the workout is missing or not owned.
addExerciseToWorkoutwriteAppend an exercise (by catalogue slug) to the athlete's active workout session.
logWorkoutSetwriteRecord one completed set for an exercise in the athlete's active workout session. Weight is in kilograms. Provide RIR or RPE, not both.
amendWorkoutSetwriteCorrect an already-logged set, referenced by the clientSetId returned when it was logged. Only sets in the active session can be amended.
deleteWorkoutSetwriteRemove an already-logged set, referenced by its clientSetId. Only sets in the active session can be deleted.
completeWorkoutwriteMark the athlete's active workout session complete. Optionally record a whole-session RPE (1–10) and notes.
abandonWorkoutwriteAbandon the athlete's active workout session without completing it.
createWorkoutwriteStage a new saved workout, optionally assigning it to a weekday. Leave dayIndex unset for an ad-hoc library workout. To replace the complete week, use replaceWeeklySchedule. To change a workout the athlete already has, use updateWorkout instead of creating a near-duplicate.
updateWorkoutwriteChange one saved workout: rename it, add exercises, remove exercises, or replace its contents outright. The workout is shared, so this changes every weekday it is scheduled on and every future time the athlete starts it. Already-logged workouts keep what they recorded. Read getWorkout first so your changes preserve the rest of the workout.
setWorkoutDaywriteMove one saved workout to a Monday-based weekday, or pass null to leave it unscheduled. If another workout occupies the destination, the workouts swap days; moving an unscheduled workout there leaves the displaced workout unscheduled.
replaceWeeklySchedulewriteSubmit the complete desired repeating week. The server validates it atomically, updates workouts already on retained weekdays, creates workouts for added weekdays, and leaves removed workouts unscheduled. Use for onboarding and whole-week redesigns; use updateWorkout or setWorkoutDay for smaller changes.
The live list below is rendered from packages/shared/src/tools.ts. Availability depends on the authenticated permission class and the athlete's active external-assistant grant.