coros-workout-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| PORT | No | Port for the HTTP/SSE server. Defaults to 8787 locally. | 8787 |
| COROS_EMAIL | No | Email for the COROS Training Hub account. Required for authenticated mode; demo mode does not require it. | |
| COROS_REGION | No | Region for the COROS service: 'eu' (Europe) or 'us' (US). Defaults to 'eu'. | eu |
| COROS_PASSWORD | No | Password for the COROS Training Hub account. | |
| ATHLETE_PROFILE_JSON | No | Inline JSON string containing a private athlete profile. Alternative to ATHLETE_PROFILE_PATH. | |
| ATHLETE_PROFILE_PATH | No | Path to a JSON file containing a private athlete profile. Alternative to ATHLETE_PROFILE_JSON. | |
| COROS_ALLOW_UNOFFICIAL_MOBILE_LOGIN | No | Set to 'true' to enable the legacy unofficial mobile login for get_sleep_data. Leave unset or 'false' to keep it disabled and avoid competing with the official COROS mobile session. | false |
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": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| authenticate_corosA | Log in to COROS Training Hub. Stores auth token for subsequent calls. Also checks COROS_EMAIL/COROS_PASSWORD env vars for auto-login. WARNING: Logging in via API invalidates the web app session. |
| check_coros_authA | Check if COROS authentication is available (from stored token or env vars). |
| search_exercisesA | Search the COROS exercise catalog (~383 strength exercises). Filter by name, muscle group, body part, and/or equipment. Returns exercise names, muscles, equipment, and default sets/reps. |
| create_workoutA | Create a strength workout on COROS Training Hub. Resolves exercise names from the catalog, builds the full API payload, calculates metrics, and saves the workout. The workout will sync to the user's COROS watch. |
| update_exercisesB | Fetch the latest exercise catalog from COROS APIs and rebuild the local catalog. Requires authentication. Fetches exercises from the COROS API and i18n strings for human-readable names. |
| list_workoutsB | List workouts from COROS Training Hub. |
| assign_workout_to_calendarA | Assign an existing COROS Training Hub workout to a date in the COROS training calendar. Use list_workouts first to obtain the workout ID. |
| create_structured_workoutA | Create a structured running or cycling workout with time, distance or open steps, optional HR/pace/power/cadence/speed targets, and repeat groups. Optionally schedule it on a COROS calendar date. |
| delete_workoutA | Delete a saved workout from the COROS Training Hub library. This does not remove already scheduled calendar entries. |
| list_scheduled_workoutsA | List workouts scheduled in the COROS calendar, including IDs required to move or remove them. |
| remove_scheduled_workoutA | Remove one workout occurrence from the COROS calendar. Use list_scheduled_workouts first. |
| move_scheduled_workoutA | Move a COROS calendar workout to another date without changing its contents. Use list_scheduled_workouts first. |
| duplicate_workoutA | Duplicate any COROS library workout. Optionally rename it, change its description, and schedule the copy. |
| update_workoutA | Safely edit a workout by creating an updated clone. For running/cycling, steps can be replaced. The original is retained unless deleteOriginal=true. |
| create_week_planA | Create and schedule several structured running/cycling workouts in one request. All entries are validated and calendar conflicts are checked before writing. |
| check_calendar_conflictsB | Find dates containing more than one scheduled COROS workout. |
| summarize_planned_loadB | Summarize planned workout count, duration and distance by sport for a date range. This is planned volume, not physiological COROS Training Load. |
| swap_calendar_workoutsC | Swap two scheduled COROS workout occurrences between dates while preserving their calendar identities. |
| validate_structured_workoutA | Validate and calculate a structured workout locally without writing anything to COROS. |
| export_coros_backupB | Export COROS workout-library metadata and raw calendar data as JSON for backup or inspection. Does not include account credentials. |
| get_workout_detailsA | Return the complete COROS definition of one library workout, including every step and target. |
| replace_scheduled_workoutB | Replace one calendar occurrence with another library workout. The replacement is scheduled before the old occurrence is removed. |
| shift_calendar_rangeB | Preview or move every scheduled workout in a date range by a fixed number of days. |
| copy_calendar_rangeA | Preview or copy all scheduled workouts from one date range to dates shifted by a fixed number of days. Copies are new library workouts. |
| clear_calendar_rangeA | Preview or remove every scheduled workout occurrence in a date range. Applying requires confirm=DELETE. |
| audit_calendarB | Audit a calendar range for duplicate days, missing management IDs and planned-volume totals without changing COROS. |
| get_hrv_dataA | Read recent nightly HRV, baseline and variability from the COROS Training Hub dashboard. |
| get_daily_metricsB | Read COROS daily HRV, resting heart rate, fatigue, training load, load ratio and fitness metrics for a date range. |
| get_sleep_dataB | MANDATORY: before calling this tool, first read the same date range with the installed official COROS MCP OAuth sleep tool (COROS_MCP_2 querySleepData), normalize its result, and supply it as officialSleepRecords. Do not call this tool with officialSleepRecords omitted unless the official COROS MCP read failed. |
| list_activitiesB | List completed COROS activities with duration, distance, heart rate, training load, power and elevation. |
| get_activity_detailA | Read the detailed metrics, laps and zones for one completed COROS activity. Large graph arrays are omitted. |
| analyze_aerobic_decouplingA | Calculate aerobic decoupling for a completed running or cycling activity by comparing time-weighted speed/heart-rate efficiency in both halves. Trims warm-up and cool-down by default and reports when data is insufficient. |
| analyze_completed_activityA | Return a compact coach-ready analysis of any completed activity. Supports endurance metrics and explicit context for strength, walking, hiking, mobility and active recovery. Supply date to allow summary fallback if COROS rejects detailed strength data. |
| analyze_training_dayA | Analyze every completed COROS activity on one date, including strength, walking, hiking, mobility and recovery sessions. Classifies only the recorded training day using transparent rules and also returns the planned calendar. |
| daily_training_briefingB | MANDATORY SLEEP ROUTING: first call COROS_MCP_2 querySleepData for the last seven wake-up days and pass normalized results as officialSleepRecords. Then build the daily briefing from sleep, HRV, resting heart rate, load, activities and calendar. |
| preview_daily_adjustmentB | MANDATORY SLEEP ROUTING: first call COROS_MCP_2 querySleepData for the required recent wake-up days and pass normalized results as officialSleepRecords. Then preview the daily adjustment. Never change the calendar. |
| calculate_fueling_planA | Calculate practical carbohydrate, fluid and sodium ranges for an endurance session. Uses duration, intensity, temperature and optional measured sweat/sodium loss. This is a planning estimate, not medical advice. |
| compare_activity_historyA | Compare up to eight similar completed COROS activities over a date range using normalized summary metrics and aerobic decoupling. Filter by exact COROS sport type and optional name text. |
| weekly_training_reportA | MANDATORY SLEEP ROUTING: first call COROS_MCP_2 querySleepData for the required wake-up-date range and pass normalized results as officialSleepRecords. Then build the seven-day report and comparison. |
| analyze_workout_executionA | Compare a planned COROS workout with the completed activity linked to its program blocks. Reports duration and HR/cadence target compliance when COROS exposes programExerciseIndex. |
| taper_readinessA | MANDATORY SLEEP ROUTING: first call COROS_MCP_2 querySleepData for the required wake-up-date range and pass normalized results as officialSleepRecords. Then assess taper readiness from load, sleep, HRV and resting heart rate. |
| analyze_gpx_routeA | Analyze a GPX track or route without external writes. Returns distance, elevation, endpoints and compact fixed-distance sectors with coordinates, grade and bearing. |
| analyze_route_weatherB | Combine a GPX route with Open-Meteo hourly forecasts. Estimates arrival per sector and reports temperature, rain, wind, gusts, headwind/crosswind components, daylight and explicit risks. |
| simulate_ultra_routeB | Build optimistic, probable and conservative timing scenarios from a GPX route, departure time, flat-terrain speed, planned stops and an explicit climbing penalty. Returns sector checkpoints and finish times. |
| plan_operational_routeB | Build an operational GPX plan for cycling, road running, trail running, walking or hiking: three timing scenarios, named stops, climbs, daylight, fueling and optional weather. Read-only. |
| calibrate_sport_performanceA | Fit an effective base speed/pace and ascent penalty from comparable COROS activity summaries. Excludes indoor cycling for outdoor-route calibration and reports fit error, confidence and limitations. |
| analyze_multisport_loadA | Aggregate a date range across cycling, running, trail, walking, hiking, strength and mobility. Keeps COROS cardiovascular load separate from heuristic impact exposure and recorded strength duration. |
| connector_statusA | Return the deployed connector version, expected tool count, authentication state and enabled feature groups. Use this to detect stale ChatGPT tool catalogs. |
| coros_capabilitiesA | Use this when a COROS function is missing from the chat catalog or before calling the stable compatibility bridge. Returns current read/write operation names, input contracts and required confirmations. |
| coros_readA | Use this when a specific COROS read-only tool is absent from an older chat. Call coros_capabilities first, then pass its operation name and input object. The schema stays stable while server-side operations evolve. |
| coros_writeB | Use this when a specific COROS write tool is absent from an older chat. Call coros_capabilities first. Writes use an allowlist, validate inputs and require the exact confirmation returned for that operation. |
| get_activity_export_urlA | Request a temporary COROS download URL for one completed activity in FIT, GPX, TCX, KML or CSV format. Read-only; the URL may expire. |
| analyze_fit_activityA | Download and analyze the FIT file for a completed COROS activity. Returns bounded summaries of record-level HR, cadence, speed, power, temperature, stops, climbs, aerobic decoupling and finish quality; raw samples are not returned. |
| get_athlete_profile_metricsA | Return a consolidated COROS physiological profile and period trends: VO2max, lactate threshold HR/pace, base fitness, training indices, HRV and resting HR. Missing data is explicit and never estimated. |
| get_readiness_summaryB | MANDATORY SLEEP ROUTING: first call COROS_MCP_2 querySleepData for this wake-up date and pass the normalized result as officialSleepRecords. Then combine sleep, HRV, load, completed activities and calendar. Do not invent a readiness score. |
| compare_plan_to_actualB | Compare planned COROS calendar volume with completed activities by date for a selected range. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 56 tools
Several tools cluster under shared prefixes (eight analyze_* tools, six get_* metrics tools) with overlapping analytical territory, such as analyze_completed_activity vs analyze_training_day and analyze_aerobic_decoupling vs analyze_fit_activity. The descriptions are detailed enough to disambiguate most pairs, but the compatibility bridge (coros_read/coros_write) and the multiple MANDATORY sleep-routing tools add selection risk.
The vast majority of tools follow a consistent snake_case verb_noun pattern (list_workouts, create_workout, analyze_fit_activity, clear_calendar_range). A handful deviate with noun-first or adjectival names (weekly_training_report, daily_training_briefing, taper_readiness, connector_status, coros_capabilities), which breaks the pattern slightly but does not cause confusion.
At 56 tools, the server is well past the heavy threshold. Many tools could be consolidated (the eight analyze_* tools, the six calendar range tools, and the four compatibility/bridge tools). While the domain is broad, the surface area feels bloated rather than tightly scoped.
The domain coverage is exceptionally thorough: full workout library CRUD, calendar scheduling with swaps/shifts/copies, activity retrieval and export, analytics, route planning, fueling, and backup. The notable gap is that sleep-dependent tools explicitly require an external COROS_MCP_2 OAuth tool for official sleep data, meaning the server is not fully self-contained for its stated readiness/reporting workflows.