MCP server connector for Peloton fitness equipment and classes
Server has 13 tools with complete schemas and descriptions, but quality is inconsistent. Naming follows verb_noun convention well (peloton_login, peloton_get_profile, peloton_search_classes). Descriptions are present but often generic (avg ~80 chars, below 194-char baseline). Most parameters lack descriptions or constraints, e.g., peloton_search_classes has 'class_type' with only an example list, no enum constraint; 'difficulty' lacks validation. No output schemas documented. Error handling is minimal, responses are JSON strings without recovery guidance. No tool annotations (readOnlyHint/destructiveHint). Credentials (email/password) exposed as parameters in peloton_login, violating secret-injection pattern. Overall: functional but below production baseline.
Add a class to the current user's bookmarks/favorites.
Reserve/book a spot in a scheduled live Peloton class.
Get the current user's Peloton achievements and badges.
Get the current user's bookmarked/favorited classes.
Get active Peloton challenges available to join.
Get detailed information about a specific Peloton class.
Credentials (email, password) exposed as tool parameters in peloton_login. Violates secret-injection pattern, credentials will appear in agent logs and traces.
No output schemas documented for any tool. LLMs cannot predict response structure, forcing them to parse unstructured JSON strings. Violates response-shaper pattern.
Parameter descriptions missing or incomplete. peloton_search_classes lists example values ('cycling, running, strength...') instead of enum constraints; 'difficulty' has no description; 'limit' lacks min/max bounds. Violates constrained-input pattern.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 52 | 2026-07-28+ | v2 |
Get a list of all Peloton instructors with their details.
Get the current user's Peloton profile information.
Get scheduled live Peloton classes for a date range.
Get the current user's workout history.
Join a Peloton challenge by its ID.
Log in to Peloton with email and password. Must be called before using any other tool.
Search for Peloton classes by type, instructor, duration, and difficulty.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). LLMs cannot distinguish safe reads from destructive writes (e.g., peloton_book_live_class vs peloton_get_profile). Violates current MCP spec alignment.
Error handling returns raw JSON strings without recovery guidance. peloton_login returns {success: false, error: ...} but does not tell LLM what to do next (retry, ask user, etc.). Violates recovery-guide pattern.