Suunto MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| SUUNTO_CLIENT_ID | Yes | Your Suunto API client ID | |
| SUUNTO_CLIENT_SECRET | Yes | Your Suunto API client secret | |
| SUUNTO_TOKEN_STORAGE | No | Optional storage backend for tokens (e.g., 'keychain') | |
| SUUNTO_SUBSCRIPTION_KEY | Yes | Your Suunto API subscription key |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {} |
| resources | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_workoutsA | Returns the user's recent Suunto workouts ordered newest-first. Each item: workoutKey (string id), activityId, sport, startTime (epoch ms), totalTime (s), totalDistance (m), totalCalories, avgHeartRate, maxHeartRate, totalAscent (m), totalDescent (m). Auto-paginates across pages until limit is reached or no more workouts exist. Use get_workout for full detail (laps, HR zones, sport-specific metrics) on a single result. Read-only. |
| get_workoutA | Returns the full summary for one workout: all fields Suunto exposes including laps, HR zones, training-effect score, and sport-specific metrics (pace zones for running, power for cycling, etc.). Throws SuuntoNotFoundError if the workoutKey does not exist. Use list_workouts to discover valid workoutKey values. For second-by-second time-series (HR, pace, GPS) use get_workout_samples instead. Read-only. |
| get_workout_samplesA | Returns the time-series sample stream for one workout. Each sample: timestamp (ms), heartRate (bpm), speed (m/s), altitude (m), power (W), cadence, latitude, longitude. Sampled at the device's recording interval (typically 1 s). Long workouts (>2 h) may return thousands of records — use get_workout_fit with full=false for a compact summary instead. Throws SuuntoNotFoundError if the key is invalid. Read-only. |
| get_workout_fitA | Downloads the workout's binary FIT file from Suunto and returns it parsed to JSON. Default (full=false): compact summary { sport, total_distance_km, avg_heart_rate, training_effect, laps, records_sample (first 5 / middle 5 / last 5 records) }. Set full=true to receive every parsed FIT record — responses are often >100 KB for long workouts. Use the default for analysis and summaries; full=true only when raw record-level data is required. Read-only. |
| export_workout_gpxA | Returns the workout's GPS route as a GPX 1.1 XML string (not JSON). Each trackpoint contains lat, lon, elevation, and timestamp. Suitable for direct import into Strava, Komoot, Google Earth, or any GPX-compatible tool. Returns a valid but empty GPX document if the workout has no GPS data. Use get_workout_samples for numeric time-series (HR, power, cadence) instead of GPS. Read-only. |
| get_daily_activityA | Returns the 24/7 activity summary for one calendar day: { steps, activeCalories, totalCalories, avgHeartRate, minHeartRate, maxHeartRate, restingHeartRate }. Throws SuuntoNotFoundError if the watch did not sync data for that date. Use list_daily_activity to fetch a date range efficiently. Requires Activity API subscription on apizone; returns 404 without it. Read-only. |
| list_daily_activityA | Returns 24/7 activity summaries for each day in [from, to] inclusive, ordered chronologically. Each entry: { date, steps, activeCalories, totalCalories, avgHeartRate, minHeartRate, maxHeartRate, restingHeartRate }. Days where the watch did not sync are omitted from the result. Use get_daily_activity for a single day. Requires Activity API subscription on apizone; returns 404 without it. Read-only. |
| get_sleepA | Returns the sleep summary for one night keyed by the morning wake-up date: { totalSleep (s), deepSleep (s), lightSleep (s), remSleep (s), awake (s), efficiency (%), sleepScore }. A session ending the morning of 2026-04-20 is keyed to 2026-04-20. Throws SuuntoNotFoundError if no sleep was recorded for that date. Use list_sleep for a date range. Requires Sleep API subscription on apizone; returns 404 without it. Read-only. |
| list_sleepA | Returns sleep summaries for each night in [from, to] inclusive, keyed by wake-up date, ordered chronologically. Each entry: { date, totalSleep (s), deepSleep (s), lightSleep (s), remSleep (s), awake (s), efficiency (%), sleepScore }. Nights where no sleep was recorded are omitted. Use get_sleep for a single night. Requires Sleep API subscription on apizone; returns 404 without it. Read-only. |
| get_recoveryA | Returns the recovery and HRV summary for one date: { recoveryScore (0–100), hrv (ms, rMSSD), stressLevel, readiness }. Throws SuuntoNotFoundError if no recovery data exists for that date. Use list_recovery for a date range. Requires Recovery API subscription on apizone; returns 404 without it. Read-only. |
| list_recoveryA | Returns recovery and HRV summaries for each day in [from, to] inclusive, ordered chronologically. Each entry: { date, recoveryScore (0–100), hrv (ms, rMSSD), stressLevel, readiness }. Days without recovery data are omitted. Use get_recovery for a single day. Requires Recovery API subscription on apizone; returns 404 without it. Read-only. |
| list_subscriptionsA | Returns all active webhook subscriptions on this Suunto account as an array of { id, eventType, callbackUrl, createdAt }. Returns an empty array if no webhooks are registered. Use to audit which event types are already wired before adding new subscriptions. Requires Subscriptions API product on apizone. Read-only. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| Most recent workout | Summary of the latest workout synced from your Suunto watch. |
| Last night's sleep | Sleep stages, duration, and score for the most recent night. |
| Today's recovery | Recovery / HRV / stress for today. |
| Today's activity | Steps, calories, and daily heart rate for today. |
| This week's training summary | Aggregated workout count, total duration, and total distance for the current ISO week. |
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/googlarz/suunto-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server