Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
COROS_EMAILNoCoros account email address
COROS_REGIONNoCoros region (eu, us, or asia). Defaults to eu.eu
COROS_PASSWORDNoCoros account password

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

CapabilityDetails
tools
{
  "listChanged": true
}
logging
{}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
extensions
{
  "io.modelcontextprotocol/ui": {}
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
get_helpA

List all available Coros MCP tools with a short description of each.

authenticate_corosA

Authenticate with the Coros Training Hub API and store the access token.

authenticate_coros_mobileA

Authenticate with the Coros mobile API only and store the mobile token.

This is needed for sleep data (deep/light/REM/awake phases) which is only available through the mobile API (apieu.coros.com), not the Training Hub web API.

check_coros_authA

Check whether valid Coros access tokens are stored locally.

By default this is a LOCAL check only: authenticated: true means the stored token has not passed its 24h TTL by the local clock — it does NOT confirm the token is still accepted by Coros. A token can be revoked server-side (password change, account lock) or invalidated early and still report authenticated here; the next real data call would then fail with an auth error (which triggers a re-login retry). expires_in_hours is likewise a local TTL estimate.

get_daily_metricsA

Retrieve nightly HRV and daily metrics from Coros for a configurable time range (up to 52 weeks).

Historical data is served from the local SQLite cache (fast); only the uncached tail is fetched from the Coros API. The underlying API endpoint supports up to 24 weeks per call; the cache layer fetches longer uncached ranges in 12-week chunks, so any range up to 52 weeks works even on a cold cache.

get_sleep_dataA

Fetch nightly sleep data from Coros for a configurable time range.

Returns per-night sleep stage breakdown (deep, light, REM, awake) and sleep heart rate for each night. Data comes from the Coros mobile API (apieu.coros.com) which is separate from the Training Hub web API.

list_activitiesC

List Coros activities for a date range.

get_activity_detailA

Fetch detail for a single Coros activity.

list_workout_templatesA

List reusable workout templates saved in the Coros library.

These are templates created by save_workout_template / save_strength_workout_template — schedulable later via schedule_workout_template. One-off workouts scheduled with schedule_workout / schedule_strength_workout do NOT appear here.

Returns

dict with keys: workouts (list), count Each entry contains: id, name, sport_type, sport_name, estimated_time_seconds, exercise_count, exercises (list of steps with name, duration_seconds, intensity_low, intensity_high, sets)

list_training_plansB

List training plans in the Coros account.

list_training_plans_rawA

List training plans without stripping API fields.

Use this when the full plan payload is needed, including entities and programs (e.g. to drive update_scheduled_workout).

save_workout_templateA

Save a REUSABLE cycling/intervals/running workout TEMPLATE to the Coros library.

⚠️ This persists to the library indefinitely. Use ONLY when the user explicitly asks to "save as a template", "create a workout in my library", "add to my workout list", or otherwise indicates they want a reusable template.

For a ONE-OFF workout for a specific date — the common case — use schedule_workout instead. That tool builds the workout inline and leaves no library residue.

If the user's intent is unclear, ASK THEM: "Do you want this saved as a reusable template in your library, or just scheduled as a one-off for [date]?" Don't guess.

The saved template appears in the Coros app under Workouts and can be synced to the watch for guided execution.

delete_workout_templateA

Delete a saved workout TEMPLATE from the Coros library.

list_planned_activitiesA

List planned (scheduled) activities from the Coros training calendar.

list_planned_activities_rawA

List planned activities without stripping API fields.

Use this before updating an existing scheduled workout. The raw entity and program objects contain the identifiers and version fields required by update_scheduled_workout (planId, planProgramId, idInPlan, version, ...).

calculate_workout_programA

Recalculate a workout program after editing its exercises.

This calls Coros /training/program/calculate and returns the calculated metrics plus a copy of the supplied program with derived fields such as duration, estimated distance, training load, and exerciseBarChart applied. Feed the returned program into update_scheduled_workout when its exercises changed.

schedule_workout_templateA

Add an existing library workout TEMPLATE to the training calendar.

Use this only when scheduling a previously-saved template by ID. For a one-off workout that doesn't need to live in the library, use the inline tools instead: schedule_workout (cycling/intervals) or schedule_strength_workout (strength).

schedule_workoutA

Schedule a ONE-OFF cycling/intervals/running workout for a specific date.

This is the COMMON case. Use this whenever the user wants a workout on a specific date and doesn't explicitly ask for a reusable template. Does NOT save to the Coros library — leaves no template behind.

For a REUSABLE library template instead, use save_workout_template (which saves it for re-scheduling later via schedule_workout_template).

If the user's intent is unclear, ASK THEM: "Do you want this saved as a reusable template in your library, or just scheduled as a one-off for [date]?" Don't guess.

add_planned_workoutA

Add an inline planned workout to the Coros training calendar.

This is a low-level escape hatch for callers that already hold raw entity / program objects (e.g. copied from list_planned_activities_raw). For the common case of building and scheduling a workout, prefer schedule_workout.

update_scheduled_workoutA

Update an existing scheduled workout on the Coros training calendar.

Workflow: fetch the day with list_planned_activities_raw, edit the entity / program objects, and (if exercises changed) run them through calculate_workout_program first to refresh derived metrics.

schedule_strength_workoutA

Schedule a ONE-OFF strength workout for a specific date.

This is the COMMON case. Use this whenever the user wants a strength workout on a specific date and doesn't explicitly ask for a reusable template. Does NOT save to the Coros library — leaves no template behind.

For a REUSABLE library template instead, use save_strength_workout_template (which saves it for re-scheduling later via schedule_workout_template).

If the user's intent is unclear, ASK THEM: "Do you want this saved as a reusable template in your library, or just scheduled as a one-off for [date]?" Don't guess.

remove_scheduled_workoutA

Remove a scheduled workout from the Coros training calendar.

save_strength_workout_templateA

Save a REUSABLE strength workout TEMPLATE to the Coros library.

⚠️ This persists to the library indefinitely. Use ONLY when the user explicitly asks to "save as a template", "create a workout in my library", "add to my workout list".

For a ONE-OFF workout for a specific date — the common case — use schedule_strength_workout instead. That tool builds the workout inline and leaves no library residue.

If the user's intent is unclear, ASK THEM: "Do you want this saved as a reusable template in your library, or just scheduled as a one-off for [date]?" Don't guess.

list_exercisesA

List the exercise catalogue for a given sport type.

Useful for resolving strength/conditioning exercises (sport_type=4) that appear in planned workouts by name and ID.

sync_coros_dataA

Sync Coros data for a date range into the local SQLite cache.

After the first full sync, subsequent calls to get_daily_metrics, get_sleep_data, and list_activities will serve historical data from cache and only fetch the incremental tail from the API.

For large date ranges (> 6 months), call this tool in segments to avoid timeout (e.g. one segment per year). For the initial full historical backfill, use the CLI instead: coros-mcp sync --from 20230101

get_cache_statusA

Show what data is currently stored in the local cache.

Returns

dict with keys: daily_records, sleep_records, activities — each with:

  • count: number of cached records

  • from: earliest cached date (YYYYMMDD)

  • to: latest cached date (YYYYMMDD) Also includes db_path: absolute path to the SQLite file.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

Latest Blog Posts

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/cygnusb/coros-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server