Server demonstrates solid tool naming conventions and reasonable schema documentation, but suffers from inconsistent parameter descriptions and missing output schema specifications. All 6 tools follow verb_noun naming (strava_get_*, strava_search_*, strava_analyze_*), which aids LLM intent parsing. Tool descriptions range from 62-139 characters (within acceptable bounds). However, critical gaps exist: (1) No output schemas documented for any tool, forcing LLMs to guess result structure; (2) Parameter descriptions vary widely in quality, some lacking constraints or format specifications; (3) Missing required field specifications in some tools (e.g., strava_get_athlete_stats has no required fields despite needing athlete auth); (4) No error handling or recovery guidance in descriptions. The code shows explicit schema registration in src/index.ts with proper JSON Schema type definitions for inputs, but the response format is entirely undocumented.
Analyze performance trends over time for specific metrics
List your recent Strava activities with filters for date range and sport type
Get detailed information for a specific activity including splits, segments, and map data
Get your all-time Strava statistics including recent, year-to-date, and all-time totals
Get recent webhook events from Strava (activity creates, updates, deletes)
Search for activities matching specific criteria like distance, time, or date range
No output schemas documented. Tools return text content with no structure specification. LLMs cannot plan downstream calls or extract specific fields reliably.
Missing parameter constraints and format specifications. 'sport_type' accepts free-form strings with vague examples (Run, Ride, WeightTraining) instead of enums. 'start_date' and 'end_date' mention ISO format but lack pattern validation or range constraints.
strava_get_athlete_stats has empty properties object with no required fields and generic description (62 chars). Tool purpose is unclear, does it return current athlete or require a parameter? No hint on when to call this vs get_activities.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 61 | <=2025-11-25 | v2 |
strava_get_recent_events returns WebhookEvent objects stored in memory but output structure is never documented. LLMs cannot know what fields to expect (type, activityId, athleteId, eventTime, timestamp) or how to parse them.
No error handling guidance. Tools return text results with no documented error cases, recovery steps, or distinction between retryable vs fatal errors. Descriptions contain no failure modes or prerequisites.
Missing pagination guidance. strava_get_activities and strava_search_activities accept 'limit' but do not document cursor/offset support, total count return, or behavior when results exceed limit. No guidance on calling multiple times to fetch all data.