MyWhoosh MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| MYWHOOSH_PASSWORD | Yes | Enter your MyWhoosh password | |
| MYWHOOSH_USERNAME | Yes | Enter your MyWhoosh username |
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 |
|---|---|
| createTaskA | Create a calendar task to schedule events, workouts, or free rides. TASK TYPES:
SCHEDULING WORKOUTS:
EXAMPLE - Schedule Workout: { "taskType": "E_Simple_Workout", "taskStartedTimeEpoc": 1735200000, "taskTypeId": "176540733485", "taskName": "Interval Power Builder", "taskDescription": "Intensive interval training", "tss": 65 } |
| deleteCustomWorkoutB | Delete a custom workout from MyWhoosh. |
| deleteTaskB | Delete a calendar task. |
| downloadCalendarWorkoutsB | Download calendar workouts for the player. |
| downloadCustomWorkoutsFromS3A | Download and extract all custom workouts from MyWhoosh S3 bucket. Returns the workout data as parsed JSON objects. |
| downloadFavoriteWorkoutsA | Download favorite workouts for the player. |
| getAgeConfigA | Get age-based feature access configuration. |
| getAllPlayerLeaderboardsA | Get all player arcade leaderboards (Easy, Medium, Hard). |
| getArcadeLeaderboardB | Get arcade mode leaderboard. |
| getBundleInfoA | Get shop bundle information (coins, gems packages). |
| getCalculationsA | Get XP and coin reward calculations and level progression data. |
| getChallengesA | Get all available challenges and achievements. |
| getCoachesA | Get list of available coaches. |
| getConnectappHostA | Get connect app host information for the player. |
| getControllableBotsB | Get controllable companion bot configurations (Smasher, Climber, Attacker, etc.). |
| getCustomWorkoutUploadA | Get S3 URL for downloading custom workouts. |
| getDateRangeTaskListA | Get calendar tasks within a date range. |
| getDraftingPelotonB | Get drafting peloton configuration with wind effect quadrants. |
| getEnvironmentByAppVersionA | Get environment type (PROD/DEV) based on app version. |
| getEventsB | Get list of upcoming and current events. |
| getFitnessNetworkA | Get connected fitness networks (Strava, Garmin, etc.). |
| getGameTitleDataB | Get game configuration including worlds, version info, and settings. |
| getGarageItemsB | Get garage/shop items metadata (bikes, equipment, etc.). |
| getGroupWorkoutsB | Get list of available group workouts. |
| getJunctionInfoA | Get junction/route information for all available routes. |
| getMaintenanceStatusA | Get maintenance status and notifications. Does not require authentication. |
| getMissionProgressB | Get mission challenge progress. |
| getMissionsB | Get available missions and challenges. |
| getMyFriendsA | Get list of friends and online friends. |
| getPacerBotB | Get pacer bot configurations for group rides. |
| getPendingRideB | Get pending ride data for recovery. |
| getPlayerAchievementsA | Get player achievement progress and completed achievements. |
| getPlayerDataB | Get player profile data including stats, equipment, and settings. |
| getPlayerDistanceB | Get player distance statistics for a number of days. |
| getPlayerGhostRideDataA | Get player ghost ride data for replaying past rides. |
| getPlayerTrophiesJerseysB | Get player trophies and earned jerseys. |
| getRoutesA | Get all available routes for free ride mode, organized by world. |
| getSeasonPassProgressB | Get season pass progress for a specific season. |
| getServerTimeA | Get current server time as Unix timestamp. |
| getTreasureHuntA | Get treasure hunt gate information. |
| getVODB | Get video on demand content for workouts. |
| getWorldRoutePlayerCountA | Get current player and bot counts per world and route. |
| loginA | Authenticate with MyWhoosh and get access tokens. Required before using other endpoints. |
| redeemCouponB | Redeem a coupon code for coins or gems. |
| registerUserB | Register a new MyWhoosh user account. |
| updatePlayerDataB | Update player profile data (equipment, settings, etc.). |
| uploadCustomWorkoutA | Upload or update custom cycling workouts to MyWhoosh. CREATING NEW WORKOUTS:
UPDATING EXISTING WORKOUTS:
WORKOUT STRUCTURE:
STEP TYPES:
INTERVALS:
EXAMPLE WORKOUT:
|
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 47 tools
Multiple tools have overlapping purposes, such as getAllPlayerLeaderboards vs getArcadeLeaderboard, getChallenges vs getMissions vs getMissionProgress, and getCustomWorkoutUpload vs downloadCustomWorkoutsFromS3. These similar names and descriptions can easily confuse an agent.
The naming follows a consistent camelCase verb_noun pattern, with most tools using 'get' as the verb. Minor deviations like 'login' (verb only) and 'downloadCustomWorkoutsFromS3' (extra qualifier) exist but do not obscure the overall predictable style.
With 47 tools, the server is heavily overloaded. This far exceeds the typical well-scoped range of 3-15 tools and makes it difficult for an agent to navigate, even though the domain is broad.
The surface covers major areas like authentication, workouts, tasks, events, and shop, but lacks obvious lifecycle operations such as updating tasks (only create/delete) and has no direct single-workout retrieval (only bulk download methods). These gaps require agent workarounds but are not fatal.