Model Context Protocol server for Garmin Connect API integration
The server defines 22 tools with consistent naming conventions and descriptions. All tools are verb-noun prefixed (query_, get_, manage_, compare_, find_, analyze_, log_), which is appropriate for the domain. All 22 tools have descriptions ranging from 50-100 characters, meeting the minimum threshold. Input schemas are present for all tools with parameter descriptions. However, there are significant gaps: (1) output schemas are entirely undocumented, no field listings, types, or return structures are visible in the provided code; (2) parameter descriptions are minimal (typically 1-2 sentences) and lack domain-specific guidance on format/constraints; (3) error handling and recovery guidance are absent; (4) write operations (manage_weight_data, manage_workouts, log_health_data) lack confirmation/dry-run patterns despite being irreversible; (5) no pagination guidance is documented beyond parameter names for tools like query_activities; (6) no authentication or permission documentation is present.
Analyze training metrics for a specific period
Compare metrics between two or more activities
Find activities similar to a given activity
Get detailed information about a specific activity
Get social information and comments for an activity
Get current performance metrics including VO2 max and training load
Get training effect and aerobic/anaerobic benefits from recent activities
Output schemas are completely undocumented. No response field definitions, types, or structures are visible in the provided code for any of the 22 tools. LLMs cannot plan downstream tool calls or extract required data without knowing what fields are returned.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 49 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 24 | - | v1 |
Get the authenticated user's profile information
Log health metrics such as symptoms, medications, or custom notes
Add, update, or delete weight entries
Create, update, or delete workout plans
Query activities from Garmin Connect with optional filters and pagination
Query activity-related health metrics for a date or date range
Query active challenges and competitions
Query information about connected Garmin devices
Query information about registered gear and equipment
Query user goals and personal records
Query health summary data for a specific date or date range
Query heart rate data for a specific date or date range
Query sleep data for a specific date or date range
Query weight and body composition data for a date or date range
Query women's health data including menstrual cycle information
Write operations (manage_weight_data, manage_workouts, log_health_data) lack confirmation/dry-run patterns. These are irreversible operations that modify user data (weight entries, workouts, health logs) but offer no way for agents to preview changes before executing. Pattern tool-confirmation-request is not applied.
Parameter descriptions are minimal and lack actionable constraints. For example, 'period' parameter in analyze_training_period is described as 'Period to analyze (e.g., "7d", "30d", "1y")', this embeds examples instead of declaring a regex pattern or enum. LLMs may hallucinate invalid periods like '2w' or '100y'.
Query tools with pagination (query_activities, query_health_summary, query_sleep_data, query_heart_rate_data, query_activity_metrics, query_weight_data, query_womens_health) do not document total count or next_cursor return fields. LLMs cannot know if more results exist or how to fetch the next page.
No error handling or recovery guidance documented. Tools lack descriptions of what errors are possible (e.g., 'Invalid activity_id', 'Date out of range') or how to recover (e.g., 'Try search_activities()' or 'Use format YYYY-MM-DD'). Pattern recovery-guide is not applied.
Tools accepting dates (query_health_summary, query_sleep_data, query_heart_rate_data, query_activity_metrics, query_weight_data, manage_weight_data, log_health_data, query_womens_health) allow 'today' as a magic string, but descriptions do not explain this convention. LLMs may attempt to pass actual dates in various formats and fail.
No permission or scope documentation. Tools access sensitive user data (health metrics, weight, menstrual cycle, performance data) and support write operations, but no descriptions of required OAuth scopes, authentication state, or permission checks are visible.
Empty-parameter tools (query_devices, query_gear, get_user_profile, query_goals_and_records, query_challenges, get_performance_metrics) have vague descriptions that do not explain what data is returned or when to use each tool. 'Query information about connected Garmin devices' does not clarify if this returns device IDs, names, models, sync status, battery level, etc.