TrainingPeaks-MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| tp_auth_statusA | Check auth status. Use only when other tools return auth errors. |
| tp_get_profileA | Get athlete profile. Rarely needed - other tools work without it. |
| tp_refresh_authA | Refresh auth by extracting cookie from user's browser. Use when other tools return auth errors. |
| tp_get_workoutsA | List workouts in date range. Query only days needed. Max 90 days. Does NOT include strength-builder gym workouts — use tp_get_strength_workouts for those. |
| tp_get_workoutA | Get workout details by ID. Use after tp_get_workouts. |
| tp_create_workoutA | Create a planned workout with optional simplified interval structure or native TrainingPeaks structured_workout payload. Duration is auto-computed only from simplified structure when not provided. |
| tp_update_workoutA | Update fields of an existing workout. Supports the same simplified interval structure format as tp_create_workout plus an optional native structured_workout payload, then fetches existing, merges, and saves. |
| tp_delete_workoutA | Permanently delete a workout from the calendar - irreversible, applies to planned and completed workouts alike. Workout ID from tp_get_workouts. |
| tp_copy_workoutA | Copy a workout to a new date. Copies structure, description, planned fields. |
| tp_reorder_workoutsA | Reorder the workouts displayed on a single day. Pass every workout ID for that day (from tp_get_workouts) in the desired order. Changes display order only - dates and content untouched. |
| tp_unpair_workoutA | Unpair a workout. Detaches the completed workout file from the planned workout, creating two separate workouts. No data is lost. |
| tp_pair_workoutA | Pair a completed workout with a planned workout. Attaches the completed data to the planned workout, merging them into one. |
| tp_get_workout_commentsA | List the comment thread on a workout (athlete and coach comments with author and timestamp). Workout ID from tp_get_workouts. For the private workout note use tp_get_workout_note. |
| tp_add_workout_commentA | Append a comment to a workout's thread - visible to both athlete and coach. Repeating the call posts a duplicate. For a private note use tp_set_workout_note instead. |
| tp_get_workout_noteA | Get the private workout note for a workout. |
| tp_set_workout_noteA | Set or update the private workout note for a workout. |
| tp_upload_workout_fileA | Upload a workout file (.fit, .tcx, .gpx) to an existing workout. |
| tp_download_workout_fileA | Download a workout file by file_id. Get file_id from tp_get_workout device_files/attachment_files. |
| tp_delete_workout_fileA | Delete a workout file by file_id. Get file_id from tp_get_workout device_files/attachment_files. |
| tp_validate_structureA | Validate workout interval structure without creating a workout. Returns block count, duration, estimated IF/TSS. |
| tp_get_workout_prsA | List personal records set during one completed workout. Returns an empty list when none. For an athlete's bests across a period use tp_get_peaks. |
| tp_get_peaksA | Get an athlete's top performances for one sport and PR type over a period (days, default 90). Bike pr_type: power1min/5min/20min; Run: speed5K/10K/Half. For PRs from a single workout use tp_get_workout_prs. |
| tp_analyze_workoutA | Get workout analysis: metrics, zones, laps. Saves full time-series to JSON file. |
| tp_get_fitnessA | Get fitness/fatigue trend (CTL/ATL/TSB). Supports historical date ranges. |
| tp_get_weekly_summaryA | Combined view of workouts + fitness for a week. Totals TSS, duration, end-of-week CTL/ATL/TSB. |
| tp_get_atpA | Get Annual Training Plan - weekly TSS targets, training periods, races. Max 90 days. |
| tp_list_training_plansA | List the coach's authored multi-week training plans (id, title, weeks, workout count, total hours, category, price). |
| tp_get_training_planA | Summary of one training plan: weeks, per-week duration/distance, sport breakdown, description. |
| tp_get_training_plan_workoutsA | All workouts of a training plan laid out by week/day (sport, title, description, duration, TSS, has_structure). |
| tp_apply_training_planA | Apply a training plan to an athlete's calendar from a start date by copying each plan workout (with structure) to start_date + its relative day. Targets the athlete given via the athlete parameter. |
| tp_get_athlete_settingsA | Get athlete account settings and profile fields (athlete type, linked coach, preferences, units). To change training values use tp_update_ftp / tp_update_hr_zones / tp_update_speed_zones. |
| tp_update_ftpA | Update FTP (power threshold) and rescale the matching power-zone set, preserving its calculation method. |
| tp_update_hr_zonesC | Update heart rate zones. |
| tp_update_speed_zonesC | Update run/swim pace zones. |
| tp_create_zonesA | Create a NEW per-sport zone set for an athlete that has none for that sport (use tp_update_ftp/hr_zones/speed_zones to change an EXISTING set). Bands are computed by TrainingPeaks' calculator for the chosen method (see tp_get_zone_methods). Returns ZONES_EXIST if the set is already present, or TEST_BASED_METHOD for test-derived methods (Distance/Time) — those are set up via a test in the TP UI. |
| tp_update_nutritionA | Update daily planned calories. |
| tp_get_pool_length_settingsB | Get pool length settings. |
| tp_log_metricsB | Log health metrics (weight, HRV, sleep, steps, etc.) for a date. |
| tp_get_metricsA | Get health metrics for a date range. |
| tp_get_nutritionC | Get nutrition data for a date range. |
| tp_get_equipmentA | List equipment (bikes, shoes). |
| tp_create_equipmentA | Add a bike or shoes to the athlete's equipment list. type is 'bike' or 'shoe'; bike-only fields are rejected on shoes. The API returns no ID on create - verify with tp_get_equipment afterwards. |
| tp_update_equipmentC | Update equipment details. |
| tp_delete_equipmentC | Delete equipment. |
| tp_get_focus_eventB | Get the A-priority focus event with goals and results. |
| tp_get_next_eventA | Get the nearest future planned event. |
| tp_get_eventsA | List events in a date range. |
| tp_create_eventB | Create a race/event with priority (A/B/C) and CTL target. |
| tp_update_eventA | Update fields on an existing race/event (name, date, priority, distance, description, attached workout legs). Only the provided fields change. Event ID from tp_get_events; events more than ~2 years from today cannot be resolved for update. |
| tp_delete_eventA | Permanently delete a race/event from the calendar - irreversible. Event ID from tp_get_events. Calendar workouts are separate: delete those with tp_delete_workout. |
| tp_create_noteC | Create a calendar note. |
| tp_delete_noteA | Permanently delete a calendar note and its comment thread - irreversible. Note ID from tp_list_notes. |
| tp_get_noteA | Get a calendar note by ID. |
| tp_update_noteA | Update a calendar note. Provide at least one of: title, description, date, is_hidden. |
| tp_get_note_commentsA | Get all comments on a calendar note. |
| tp_add_note_commentA | Append a comment to a calendar note's thread. Repeating the call posts a duplicate. Note ID from tp_list_notes or tp_create_note. |
| tp_list_notesA | List calendar notes for a date range. |
| tp_get_availabilityA | Get availability entries for a date range. |
| tp_create_availabilityA | Mark a date range as unavailable for training (or limited to certain sports). limited=false means fully unavailable; with limited=true, sport_types lists the sports that REMAIN available. Returns availability_id, needed for tp_delete_availability. |
| tp_delete_availabilityA | Remove an availability entry so those dates become plannable again. availability_id from tp_get_availability or the create response. |
| tp_get_workout_typesA | List all sport types and subtypes with IDs. Use to find subtype_id for create/update. |
| tp_get_zone_methodsA | List available zone-calculation methods per metric (power / heartrate / speed), each with its zone count and zone labels. TP has no method-names endpoint and settings store only an opaque method int; this probes the zone calculator (read-only) to fingerprint each method by its zone labels. |
| tp_get_librariesA | List workout library folders. |
| tp_get_library_itemsA | List the workout templates in one library (slim listing). library_id from tp_get_libraries. For a template's full interval structure use tp_get_library_item. |
| tp_get_library_itemA | Get one workout template in full, including its interval structure - use before tp_schedule_library_workout or when reusing structure. IDs from tp_get_library_items. |
| tp_create_libraryA | Create an empty workout library (a folder for reusable templates). Returns library_id; add templates with tp_create_library_item. |
| tp_delete_libraryA | Permanently delete a library AND every template inside it - irreversible, and there is no per- template delete. Schedule anything you want to keep first. |
| tp_create_library_itemC | Save a workout template to a library. |
| tp_update_library_itemC | Edit a workout template. |
| tp_schedule_library_workoutA | Schedule a library template to a calendar date, for yourself or (coach accounts) for one or many athletes. |
| tp_list_athletesA | List athletes available to this account (coach accounts). |
| tp_search_exercisesA | Search the built-in strength exercise library by name (offline). Returns library exercise IDs to use in tp_create_strength_workout, plus each exercise's native parameters and a demo video URL. |
| tp_create_strength_workoutA | Create a structured strength/gym workout on the athlete's calendar. Blocks of exercises (from tp_search_exercises) with sets and parameters (Reps, WeightKg, Duration, …). |
| tp_get_strength_summaryA | Get a strength workout's compliance summary (blocks/prescriptions/sets completed). |
| tp_get_strength_workoutsA | List structured strength/gym workouts in a date range. Strength workouts live on a separate API and do NOT appear in tp_get_workouts; use this to find them and their IDs, then tp_get_strength_workout for full detail. Returns date, title, duration, compliance, set totals, and an exercise preview. |
| tp_get_strength_workoutA | Get a strength workout's full detail by ID: blocks, exercises, and sets with prescribed vs executed values (Reps, WeightKg, …), plus RPE, feel and compliance. Get IDs from tp_get_strength_workouts. |
| tp_update_strength_workoutA | Update an existing strength workout in place: replace or append blocks, retitle, or mark it complete. Preserves everything else, including Garmin-derived TSS and the attached FIT file — so this is the correct way to fill in a device-synced workout that arrived with no structure. Never delete-and-recreate for that: exercise detail is rebuildable, HR-derived training load is not. |
| tp_delete_strength_workoutA | Delete a strength workout by ID. |
| tp_list_groupsA | List the coach's athlete groups (TP exposes these as tags). Returns id, name, athlete_count, is_default. |
| tp_list_athletes_in_groupA | List the athletes in one athlete group, with names resolved from the coach's roster. Use tp_list_groups to get group_id. |
| tp_create_groupB | Create a new athlete group. |
| tp_rename_groupA | Rename an athlete group. The default group cannot be renamed. |
| tp_delete_groupA | Delete an athlete group (the grouping only — athletes are not deleted). The default group cannot be deleted. |
| tp_add_athletes_to_groupA | Add one or more athletes to a group. Moving an athlete = add to the new group + remove from the old one. |
| tp_remove_athletes_from_groupA | Remove one or more athletes from a group. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| get_fitness | |
| get_weekly_summary | |
| get_workout |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/JamsusMaximus/TrainingPeaks-MCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server