garmin-athletics-mcp
Server Quality Checklist
Latest release: v0.1.0
- Disambiguation3/5
Some tools have overlapping focus: get_recovery_snapshot and get_performance_metrics both include recovery data, while get_athletics_trends and get_recent_athletics_trends are similar except for time range. However, most tools have clearly distinct targets (daily health vs workouts vs trends).
Naming Consistency4/5Most tools follow a consistent 'get_' or 'list_' verb+noun pattern, with 'compare_latest_workout' as a minor deviation. The naming is readable and predictable overall.
Tool Count5/5Eight tools is well-scoped for an athletics data server, covering health, recovery, performance, workouts, and trends without bloat or sparseness.
Completeness4/5The toolset covers the core read-only analytics domain well: daily health, recovery, performance metrics, workout listings/details/comparison, and trends. It lacks advanced features like fitness age or training load, but the main workflows are supported.
Average 3.1/5 across 8 of 8 tools scored. Lowest: 2.4/5.
See the Tool Scores section below for per-tool breakdowns.
- No community issues in the last 6 months
- 1 commit in the last 12 weeks
- No stable releases found
- No critical vulnerability alerts
- No high-severity vulnerability alerts
- No code scanning findings
- CI status not available
This repository is licensed under MIT License.
This repository includes a README.md file.
No tool usage detected in the last 30 days. Usage tracking helps demonstrate server value.
Tip: use the "Try in Browser" feature on the server page to seed initial usage.
Add a glama.json file to provide metadata about your server.
If you are the author, simply .
If the server belongs to an organization, first add
glama.jsonto the root of your repository:{ "$schema": "https://glama.ai/mcp/schemas/server.json", "maintainers": [ "your-github-username" ] }Then . Browse examples.
Add related servers to improve discoverability.
How to sync the server with GitHub?
Servers are automatically synced at least once per day, but you can also sync manually at any time to instantly update the server profile.
To manually sync the server, click the "Sync Server" button in the MCP server admin interface.
How is the quality score calculated?
The overall quality score combines two components: Tool Definition Quality (70%) and Server Coherence (30%).
Tool Definition Quality measures how well each tool describes itself to AI agents. Every tool is scored 1–5 across six dimensions: Purpose Clarity (25%), Usage Guidelines (20%), Behavioral Transparency (20%), Parameter Semantics (15%), Conciseness & Structure (10%), and Contextual Completeness (10%). The server-level definition quality score is calculated as 60% mean TDQS + 40% minimum TDQS, so a single poorly described tool pulls the score down.
Server Coherence evaluates how well the tools work together as a set, scoring four dimensions equally: Disambiguation (can agents tell tools apart?), Naming Consistency, Tool Count Appropriateness, and Completeness (are there gaps in the tool surface?).
Tiers are derived from the overall score: A (≥3.5), B (≥3.0), C (≥2.0), D (≥1.0), F (<1.0). B and above is considered passing.
Tool Scores
- Behavior1/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of disclosing behavior. It does not state that the operation is read-only, describe the return format, mention permissions, rate limits, or any side effects. 'Fetch' implies reading but conveys no explicit behavioral traits, and the disclaimer is not behavioral.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness4/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loaded with purpose, using only two sentences. The 'Not medical advice' disclaimer is somewhat tangential but adds important context for health-related data, so it earns its place without being wordy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness2/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, no output schema), the description covers the basic purpose but is incomplete for safe autonomous invocation. It lacks usage guidance, parameter explanation, and any behavioral context, making it minimally viable at best.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters1/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate by explaining the 'day' parameter. The description does not mention the parameter at all, leaving the agent without information about how to specify day, format, or acceptable values beyond the schema's default.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose4/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Fetch') and the resource ('daily recovery and available performance context'), which conveys a specific purpose. However, it does not explicitly distinguish itself from sibling tools like get_daily_health or get_performance_metrics, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines2/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus the sibling tools, and there are no alternatives or exclusions mentioned. The only additional line is a disclaimer ('Not medical advice'), which does not help with usage decisions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior2/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full responsibility for behavioral disclosure. It discloses a valid input range (7-366 days) but does not state whether the operation is read-only, what the summary includes, or any output format or limitations, offering only minimal transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness4/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, which is efficient and front-loaded with the key phrase 'trend summary.' The word 'Convenience' adds no technical value and could be removed, but overall it is appropriately sized for a one-parameter tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness2/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description should explain what the trend summary includes (e.g., metrics, format), but it only provides a time range. It leaves significant gaps about content and behavior, especially given the existence of the more comprehensive sibling get_athletics_trends.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has one parameter (days) with 0% description coverage. The description says 'last 7 to 366 days,' which implicitly explains the days parameter's purpose (lookback period) and valid range, adding meaning beyond the schema. However, it could be more explicit about how the parameter controls the period.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose3/5Does the description clearly state what the tool does and how it differs from similar tools?
The description says 'Convenience trend summary for the last 7 to 366 days,' which indicates it provides a summary of recent trends over a specified period, matching the tool name. However, it lacks a specific action verb and does not differentiate itself from the sibling get_athletics_trends, leaving its unique purpose unclear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines2/5Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool instead of get_athletics_trends or other health/performance tools. The word 'convenience' hints at a simplified alternative, but no explicit comparison, exclusions, or when-to-use instructions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior2/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full responsibility for disclosing behavior. It only says 'available' metrics, which is vague, and does not state whether this is read-only, how the 'day' parameter affects results, or what happens if no data exists. No side effects or limitations are mentioned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that is front-loaded with the action and key metric types. It contains no filler words or redundant information, so every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness2/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has a simple schema and no output schema, but the description still leaves gaps. It lists what metrics are fetched but not how the optional 'day' parameter modifies results, what 'available' means, or the response structure. Given the sibling tools, a sentence clarifying scope would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters1/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has one parameter 'day' with no description (coverage 0%), and the tool description does not mention it at all. The name 'day' provides minimal meaning, but its format, allowed values, and effect on the fetched metrics are unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose4/5Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Fetch' and lists concrete metric categories (VO2 max, recovery, race-prediction, training-status), clearly stating what the tool provides. It does not explicitly distinguish from siblings like get_recovery_snapshot, but the scope is well-defined.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines2/5Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. The description does not mention any context, prerequisites, or exclusions, leaving the agent to infer usage purely from the tool name and sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior2/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of disclosure. It implies a read-only comparison but does not explain what happens with insufficient data, how 'similar' is determined, or any side effects or limitations. The description adds no behavioral context beyond the plain operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness4/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the primary action ('Compare'). It is appropriately concise for a simple read operation, though it omits detail that would make it more complete.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness2/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no annotations, no output schema, and one poorly documented parameter. The description only states the core purpose, leaving ambiguity around the meaning of 'similar workouts' and the effect of lookback_days. It does not explain expected output or prerequisites, making it incomplete for an agent to decide if this tool fits the user's request.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters1/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has one parameter (lookback_days) with 0% schema description coverage, and the description does not mention this parameter at all. The agent cannot infer what 'lookback_days' controls or how it relates to 'similar workouts', so the description fails to compensate for the lack of schema documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Compare' and identifies the resource as 'the latest workout' against 'median values from similar workouts'. This clearly distinguishes it from sibling tools like list_workouts or get_workout_details, which are about retrieving data, not comparing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines2/5Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to use this tool versus alternatives. It does not mention exclusions, alternatives, or the context in which a comparison is preferred. The agent is left to infer usage solely from the tool name and sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior3/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of disclosure. 'Summarize' implies a read-only operation, and the listed metrics indicate what information is returned. However, it does not describe edge cases (e.g., missing data), data granularity, or other behavioral traits, leaving some gaps for an agent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence of 13 words, front-loading the core functionality. Every word contributes meaning, with no repetition or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness2/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having only two simple parameters and no output schema, the description is incomplete. It fails to explain the date range semantics, expected output format, or how the summary handles missing data. An agent would have to guess at important operational details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters1/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not mention the start_date or end_date parameters at all. An agent cannot infer date formats, inclusivity, or how these dates affect the summary, forcing reliance on the raw schema which only provides type and title.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose4/5Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Summarize') and names distinct resources (training volume, pace, wellness coverage, VO2 max history). It is clear about what the tool does, but it does not explicitly differentiate from sibling tools like get_performance_metrics or get_recent_athletics_trends.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines2/5Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as get_recent_athletics_trends. There is no mention of appropriate contexts, exclusions, or comparisons to sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior3/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses key traits: read-only operation and normalized summaries. However, it does not mention pagination, ordering, date format expectations, or behavior when no workouts exist in the range.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence that front-loads the core purpose and key constraints. It contains no fluff or redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness3/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is adequate for a basic list tool but lacks details on output format, date formatting, limit semantics, and relationship to sibling tools. Given the absence of an output schema and annotations, more context is needed for full completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage, so the description must compensate. It adds meaning to start_date and end_date by mentioning a bounded date range, but it does not explain the limit parameter or expected date formats, leaving the compensation incomplete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists read-only normalized workout summaries within a bounded date range. The verb 'list' and resource 'workout summaries' are specific, and it distinguishes from sibling tools like get_workout_details by focusing on summaries.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines2/5Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as get_workout_details or get_performance_metrics. The usage context is only implied by the name and description, with no explicit use cases or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior2/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries full responsibility. 'Fetch' indicates a read operation, but no other behavioral traits are disclosed—such as how daily data is aggregated, default timezone, or response shape. The phrase 'related data' is vague.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one sentence, front-loaded with the action, and lists all relevant metrics without filler. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter read tool with no output schema, the description sufficiently enumerates the returned data categories. It doesn't describe response format, but that is less critical given the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters2/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the only parameter 'day' has no description. The text 'for a day' references the parameter but does not explain accepted date formats or the meaning of the default 'today'. This minimal addition does not fully compensate for the missing schema info.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Fetch') and names the exact data categories (sleep, heart rate, Body Battery, stress, steps, calories), clearly distinguishing it from sibling tools focused on recovery, performance, or workouts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly conveys the scope: a broad daily health summary. This implies when to use it, but it does not explicitly rule out alternatives or name corner cases, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavioral transparency. It does reveal an important behavior: it excludes GPS route data, making clear what the tool does not return. However, it does not mention response format, pagination, or required permissions, but for a simple read operation this is arguably sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
A single concise sentence that states exactly what the tool does and what it intentionally omits. No filler or redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool with no output schema, the description adequately explains the tool's purpose and its scope. It tells the user what to expect (splits and details) and what not to expect (GPS route data). It could be more explicit about what 'details' include, but it is complete enough for basic usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters2/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has only one parameter (activity_id) with zero description coverage. The description does not mention the parameter at all, relying entirely on the parameter name. Since schema coverage is 0%, the description should compensate but fails to explain the format, source, or how to obtain a valid activity_id (e.g., from list_workouts).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Fetch') and identifies the resource ('workout splits and details'). It also distinguishes the tool from siblings by explicitly stating 'without downloading GPS route data', making it clear this is for lightweight detail retrieval, not full route data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear usage context: use this tool when you need workout splits and details but do not need GPS route data. It implies a lightweight alternative to route-downloading tools, though it does not explicitly name alternatives or state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GitHub Badge
Glama performs regular codebase and documentation scans to:
- Confirm that the MCP server is working as expected.
- Confirm that there are no obvious security issues.
- Evaluate tool definition quality.
Our badge communicates server capabilities, safety, and installation instructions.
Card Badge
Copy to your README.md:
Score Badge
Copy to your README.md:
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/danielmcewan/garmin-athletics-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server