{"ok":true,"site":{"host":"gymdeck.yanbocheng01234.chatgpt.site","url":"https://gymdeck.yanbocheng01234.chatgpt.site/","type":"live","desc":"A local-first, agent-ready workout workspace that tracks every set and turns progress into the next move.","tools":[{"name":"get_athlete_profile","kind":"answer","impl":"imperative","description":"Read the current GymDeck athlete profile, training goal, units, experience, equipment, and weekly schedule.","title":"Get athlete profile","annotations":{"readOnlyHint":true,"untrustedContentHint":false},"inputSchema":{"type":"object","properties":{},"required":[],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"get_today_workout","kind":"answer","impl":"imperative","description":"Read today’s workout, including exercise order, target and completed sets, reps, weights, rest times, and status.","title":"Get today’s workout","annotations":{"readOnlyHint":true,"untrustedContentHint":false},"inputSchema":{"type":"object","properties":{},"required":[],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"get_training_plan","kind":"answer","impl":"imperative","description":"Read the complete saved training plan, including every day, focus, exercise, prescription, and cardio block. A response with id 'plan-empty' and zero days means the workspace has no saved plan yet.","title":"Get training plan","annotations":{"readOnlyHint":true,"untrustedContentHint":false},"inputSchema":{"type":"object","properties":{},"required":[],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"search_exercises","kind":"answer","impl":"imperative","description":"Search GymDeck’s exercise library by name, muscle, movement, or equipment before adding or swapping an exercise.","title":"Search exercises","annotations":{"readOnlyHint":true,"untrustedContentHint":false},"inputSchema":{"type":"object","properties":{"query":{"type":"string","description":"Exercise, muscle, movement, or equipment to search for."}},"required":["query"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"get_exercise_history","kind":"answer","impl":"imperative","description":"Read the athlete’s recorded performance history for one exercise, ordered by date.","title":"Get exercise history","annotations":{"readOnlyHint":true,"untrustedContentHint":false},"inputSchema":{"type":"object","properties":{"exerciseName":{"type":"string"}},"required":["exerciseName"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"create_training_plan","kind":"act","impl":"imperative","description":"Create and save a 2–5 day training plan only when GymDeck has no saved plan. This initializes a fresh workspace and never overwrites or removes an existing plan.","title":"Create first training plan","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"inputSchema":{"type":"object","properties":{"name":{"type":"string"},"goal":{"type":"string"},"daysPerWeek":{"type":"integer","minimum":2,"maximum":5}},"required":["name","goal","daysPerWeek"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"replace_training_plan","kind":"act","impl":"imperative","description":"Replace GymDeck’s existing saved plan with a new 2–5 day plan only when the user explicitly asks to replace it. Workout history is preserved.","title":"Replace saved training plan","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"inputSchema":{"type":"object","properties":{"name":{"type":"string"},"goal":{"type":"string"},"daysPerWeek":{"type":"integer","minimum":2,"maximum":5}},"required":["name","goal","daysPerWeek"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"prepare_focused_workout","kind":"act","impl":"imperative","description":"Prepare a complete workout from a short request such as 'make me a shoulders and arms workout', 'give me a leg day', or 'I want to train back'. Default to today unless the user explicitly asks to save it to the plan. This is the best tool for a simple workout request.","title":"Prepare focused workout","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"inputSchema":{"type":"object","properties":{"focus":{"type":"string","description":"Short requested focus, e.g. shoulders and arms, legs, pull, or full body."},"destination":{"type":"string","enum":["today","plan"],"description":"Optional; defaults to today."},"label":{"type":"string","description":"Optional plan-day label when saving to the plan."}},"required":["focus"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"set_plan_day","kind":"act","impl":"imperative","description":"Create a saved workout day with an exact exercise list, or replace one existing day. Use this for requests like 'make me a shoulders and arms day' when the requested exercises or prescriptions are explicit. This changes the saved plan, not only today’s workout.","title":"Create or replace plan day","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"inputSchema":{"type":"object","properties":{"focus":{"type":"string","description":"Human-readable focus such as Shoulders & Arms."},"dayLabel":{"type":"string","description":"Day label such as Day 4 or Saturday."},"mode":{"type":"string","enum":["add","replace"],"description":"Add a new day or replace the day matching dayLabel/focus."},"exercises":{"type":"array","minItems":1,"maxItems":12,"items":{"type":"object","properties":{"exerciseName":{"type":"string"},"sets":{"type":"integer","minimum":1,"maximum":10},"reps":{"type":"integer","minimum":1,"maximum":100},"weight":{"type":"number","minimum":0},"restSeconds":{"type":"integer","minimum":15,"maximum":600},"durationMinutes":{"type":"integer","minimum":5,"maximum":180}},"required":["exerciseName"],"additionalProperties":false}}},"required":["focus","mode","exercises"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"edit_plan_day","kind":"act","impl":"imperative","description":"Make one precise change to an existing saved plan day: rename it, add/update/remove/reorder an exercise, or delete the day. Use this instead of editing today’s workout when the user asks to change their plan.","title":"Edit saved plan day","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"inputSchema":{"type":"object","properties":{"day":{"type":"string","description":"Existing day label or focus."},"action":{"type":"string","enum":["rename","add_exercise","update_exercise","remove_exercise","move_exercise","delete_day"]},"exerciseName":{"type":"string"},"newLabel":{"type":"string"},"newFocus":{"type":"string"},"sets":{"type":"integer","minimum":1,"maximum":10},"reps":{"type":"integer","minimum":1,"maximum":100},"weight":{"type":"number","minimum":0},"restSeconds":{"type":"integer","minimum":15,"maximum":600},"position":{"type":"integer","minimum":1,"maximum":20}},"required":["day","action"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"load_plan_day","kind":"act","impl":"imperative","description":"Load one saved plan day into Today’s Workout. This is the explicit bridge between editing a plan and performing that session.","title":"Load plan day as today","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"inputSchema":{"type":"object","properties":{"day":{"type":"string","description":"Saved day label or focus."}},"required":["day"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"add_cardio_block","kind":"act","impl":"imperative","description":"Add timed cardio from a short request such as 'add 20 minutes on the bike'. Default to the end of today’s workout unless the user names a saved plan day. Accepts bike, rower, StairMaster, treadmill, or elliptical and records minutes rather than fake reps.","title":"Add timed cardio","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"inputSchema":{"type":"object","properties":{"machine":{"type":"string","description":"Cardio machine in natural wording, e.g. bike or StairMaster."},"durationMinutes":{"type":"integer","minimum":5,"maximum":180},"destination":{"type":"string","enum":["today","plan"],"description":"Optional; defaults to today."},"planDay":{"type":"string","description":"Optional saved day label/focus when destination is plan."}},"required":["machine","durationMinutes"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"undo_last_change","kind":"act","impl":"imperative","description":"Undo exactly the most recent visible GymDeck change. Use when the user explicitly asks to undo an accidental plan or workout edit.","title":"Undo last GymDeck change","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"inputSchema":{"type":"object","properties":{},"required":[],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"add_exercise","kind":"act","impl":"imperative","description":"Add an exercise from the GymDeck library to today’s workout with a target prescription.","title":"Add exercise","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"inputSchema":{"type":"object","properties":{"exerciseName":{"type":"string"},"sets":{"type":"integer","minimum":1,"maximum":10},"reps":{"type":"integer","minimum":1,"maximum":100},"weight":{"type":"number","minimum":0}},"required":["exerciseName","sets","reps","weight"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"update_exercise_prescription","kind":"act","impl":"imperative","description":"Change the target sets, reps, weight, or rest time for an exercise in today’s workout.","title":"Update exercise prescription","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"inputSchema":{"type":"object","properties":{"exerciseName":{"type":"string"},"sets":{"type":"integer","minimum":1,"maximum":10},"reps":{"type":"integer","minimum":1,"maximum":100},"weight":{"type":"number","minimum":0},"restSeconds":{"type":"integer","minimum":15,"maximum":600}},"required":["exerciseName"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"swap_exercise","kind":"act","impl":"imperative","description":"Replace an exercise in today’s workout while preserving completed set history and recording the reason.","title":"Swap exercise","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"inputSchema":{"type":"object","properties":{"currentExercise":{"type":"string"},"replacementExercise":{"type":"string"},"reason":{"type":"string"}},"required":["currentExercise","replacementExercise","reason"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"log_set","kind":"act","impl":"imperative","description":"Record one completed set in today’s workout using the actual reps, weight, and optional effort rating.","title":"Log completed set","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"inputSchema":{"type":"object","properties":{"exerciseName":{"type":"string"},"setNumber":{"type":"integer","minimum":1},"reps":{"type":"integer","minimum":0,"maximum":100},"weight":{"type":"number","minimum":0},"effort":{"type":"integer","minimum":1,"maximum":10}},"required":["exerciseName","setNumber","reps","weight"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"edit_set","kind":"act","impl":"imperative","description":"Correct reps, weight, effort, or notes for a set in today’s workout without changing its completion status.","title":"Edit logged set","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"inputSchema":{"type":"object","properties":{"exerciseName":{"type":"string"},"setNumber":{"type":"integer","minimum":1},"reps":{"type":"integer","minimum":0,"maximum":100},"weight":{"type":"number","minimum":0},"effort":{"type":"integer","minimum":1,"maximum":10},"note":{"type":"string"}},"required":["exerciseName","setNumber"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"adjust_current_workout","kind":"act","impl":"imperative","description":"Adapt today’s remaining workout by shortening it, skipping an exercise, adding a set, or moving an exercise in the order.","title":"Adjust current workout","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"inputSchema":{"type":"object","properties":{"action":{"type":"string","enum":["shorten","skip","add_set","move"]},"exerciseName":{"type":"string"},"targetMinutes":{"type":"integer","minimum":5,"maximum":180},"position":{"type":"integer","minimum":1},"reason":{"type":"string"}},"required":["action"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"get_progress_summary","kind":"answer","impl":"imperative","description":"Read overall training volume, workout completion, current personal records, consistency, and recent performance.","title":"Get progress summary","annotations":{"readOnlyHint":true,"untrustedContentHint":false},"inputSchema":{"type":"object","properties":{},"required":[],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"recommend_next_session","kind":"act","impl":"imperative","description":"Calculate and save transparent load recommendations from the completed sets in today’s workout.","title":"Recommend next session","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"inputSchema":{"type":"object","properties":{},"required":[],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"apply_progression_to_plan","kind":"act","impl":"imperative","description":"Apply pending history-based progression recommendations to matching exercises in the saved weekly plan. Use after recommend_next_session when the user asks to update their routine. An optional exercise name limits the change; an optional weight lets the user edit one suggestion before applying it.","title":"Apply progression to saved plan","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"inputSchema":{"type":"object","properties":{"exerciseName":{"type":"string"},"weight":{"type":"number","minimum":0}},"required":[],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"get_weekly_summary","kind":"answer","impl":"imperative","description":"Summarize the athlete’s last seven days of training, volume, exercises, and notable progress.","title":"Get weekly summary","annotations":{"readOnlyHint":true,"untrustedContentHint":false},"inputSchema":{"type":"object","properties":{},"required":[],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"}],"category":"Health & Education","favicon":"/favicons/gymdeck.yanbocheng01234.chatgpt.site.png","apiSurface":"spec","toolCount":23}}