garmin-mcp
Server Quality Checklist
Latest release: v0.1.0
- Disambiguation4/5
The tools are generally distinct: connection_status, preview_workout, list/workout types, get_activity_summary vs splits, recovery, and create/delete/unschedule. There is slight overlap between list_workouts and list_scheduled_workouts, but descriptions clarify that one is templates and the other is calendar entries. The naming also helps distinguish them.
Naming Consistency5/5All tools follow a consistent verb_noun pattern: connection_status, preview_workout, list_workouts, list_scheduled_workouts, list_activities, get_activity_summary, get_activity_splits, get_recovery_status, create_workout, delete_workout, unschedule_workout. The pattern is uniform and predictable.
Tool Count5/5With 11 tools, the server covers a reasonable scope for a Garmin integration: connection check, workout preview/CRUD, activity listing/retrieval, and recovery status. Each tool serves a distinct function, and the count is within the typical range for a domain-specific server.
Completeness5/5The surface appears complete for common Garmin workflows: managing workouts (create, delete, unschedule), viewing activities (list, summary, splits), checking recovery, and verifying connection. It includes both list and get operations, plus scheduling. There is a minor gap for updating workouts, but that may be acceptable given the preview/confirm workflow. Overall, it covers the primary user needs.
Average 3.9/5 across 11 of 11 tools scored.
See the Tool Scores section below for per-tool breakdowns.
- No community issues in the last 6 months
- 3 commits 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
- Behavior3/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds the context of Garmin calendar entries and month scoping, but does not disclose any further behavioral details such as pagination or return semantics.
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, front-loaded sentence with no filler or redundancy. It communicates the tool's purpose efficiently and earns its place.
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?
With annotations and an output schema present, the description does not need to document return values or safety. However, it lacks clarification about how 'calendar entries' relates to 'scheduled workouts' and how this differs from sibling tools like list_workouts, leaving some ambiguity for tool selection.
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 description coverage is 0%, and the description only mentions 'year and month' without adding constraints, valid ranges, or formatting expectations. The property names and titles already convey most of the semantics, so the description adds little beyond the schema.
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 ('List') and identifies a clear resource ('Garmin calendar entries') scoped by year and month. This distinguishes it from sibling tools like list_workouts and list_activities, which target different data sets.
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 alternatives such as list_workouts or list_activities. It states what it lists but does not explain the intended use case or exclude other tools.
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?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=true. The description's verb 'Get available' aligns with read-only semantics and adds the sense of availability (i.e., possibly missing data for some metrics on the date). It doesn't contradict annotations, and given the strong annotation coverage, a 4 reflects that the description adds appropriate context about what the response covers (list of metrics).
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, front-loaded sentence that efficiently conveys the purpose. It avoids redundancy with the title and annotations, contains zero filler, and all words add value.
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?
Given the presence of an output schema (which likely specifies the return structure of metrics) and strong annotations (read-only, idempotent, non-destructive), the description is not required to detail return values or side effects. However, it leaves a gap regarding date format expectations, which is especially important given the single parameter. Overall, it's minimally complete for a simple retrieval tool but could be improved.
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 there is only one parameter ('date'). The description does not elaborate on the date format, such as YYYY-MM-DD or whether it refers to a specific day in a local timezone. In the absence of any schema description, the description should compensate by providing parameter details; it fails to do so, leaving the agent to infer the format.
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 tool retrieves recovery-typed metrics ('sleep, HRV, Body Battery, readiness, and training status') for a specified date, using a specific verb ('Get available'). While it lists multiple metric domains, its resource (recovery status for a date) is distinct from sibling tools which focus on workouts, activities, and connections; however, it could more explicitly differentiate from the exhaustive list tools like list_activities.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines3/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage is per-date retrieval of recovery metrics but offers no explicit guidance on when to prefer this over siblings (e.g., when to use get_activity_summary instead). The singular date parameter hints at point-in-time queries, but no contrast with list_* tools or alternatives is provided.
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?
Annotations already declare destructiveHint and idempotentHint, but the description adds the non-reversible nature ('permanently') and the requirement for 'explicit confirmation', which clarifies that the confirm parameter must be set. This adds valuable context beyond the annotations, though it does not discuss edge cases or side effects.
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, direct sentence with no wasted words. It is front-loaded with the action and outcome, making it easy to scan quickly.
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?
Given the simplicity of the tool (2 params) and the presence of an output schema, the description covers the key action and the confirmation gate. Annotations provide safety hints. It does not elaborate on the return value, but that is handled by the output schema. The only gap is explicitly tying the 'confirmation' to the confirm parameter, but overall it is adequate.
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?
With 0% schema description coverage, the description must explain parameters but only mentions 'explicit confirmation' (likely the confirm boolean). It does not describe workout_id at all or the need for it. This is insufficient compensation for the missing 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 a specific verb ('delete') and resource ('workout template'), and adds 'permanently' to clarify scope, distinguishing it from tools like unschedule_workout. It clearly states what the tool does without ambiguity.
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 explicit guidance on when to use this tool vs alternatives. While 'permanently delete' implies it is for removing a template, it does not contrast with siblings like unschedule_workout or mention prerequisites (e.g., confirmation flag must be true). The confirmation requirement is hinted but not explicitly framed as a usage condition.
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?
The description adds context beyond the annotations by specifying that it verifies saved tokens, implying it reports on token validity. The annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the description doesn't need to restate safety. It effectively covers the purpose of a non-destructive check but does not detail what happens if tokens are invalid or what the output format is, though output schema exists.
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 gets straight to the point. No unnecessary words or repetition, making it easy to parse.
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?
As a simple status-check tool with no parameters, an output schema, and no complex behavior, the description is sufficient to understand its function. It could potentially clarify what the return value indicates (e.g., boolean or error) but the output schema likely covers that. It's adequately complete for its simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With zero parameters, the schema provides no semantic information, but the description adds minimal meaning by stating that saved tokens are the subject. Since there are no parameters to describe, a baseline of 4 is appropriate, as the description doesn't need to explain parameters.
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 tool's purpose: verifying that saved Garmin tokens can authenticate. It uses the specific verb 'Verify' and identifies the resource ('saved Garmin tokens'), which distinguishes it from sibling tools that handle workouts and activities. However, it doesn't explicitly differentiate from siblings that may also perform authentication checks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines3/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The tool is for checking connection status, which is a typical diagnostic step before other operations, but the description does not explicitly state when to use it or when not to use it. The context is implied: checking token validity, but there are no explicit exclusions or guidance on alternatives.
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?
Annotations already declare readOnly/idempotent/non-destructive, so the bar is lower. The description adds the 'completed' and 'compact summary' scoping, but does not disclose behavior for missing IDs, incomplete activities, or response details beyond what the output schema provides.
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?
Single compact sentence, front-loaded with verb and resource, no filler.
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?
With output schema present and a single required integer param, the description is almost sufficient. It could add a pointer to list_activities for obtaining valid IDs, but for a simple read-only summary tool it is complete enough.
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 description coverage is 0%, so description should carry the parameter burden. It only implies activity_id refers to a completed Garmin activity; it doesn't explain where the ID comes from (e.g., list_activities) or any constraints.
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?
Description uses a specific verb ('Get') and names the resource ('one completed Garmin activity') with output scope ('compact summary metrics'). This distinguishes it from siblings like list_activities and get_activity_splits, which are list/split-oriented.
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?
It clearly narrows use to a single completed activity, but it does not explicitly contrast with sibling tools or state when not to use it. That context can be inferred from sibling names but not stated.
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?
Annotations already declare readOnlyHint and idempotentHint, so no duplication needed. The description adds useful behavioral context beyond annotations: it returns compact metrics, omits GPS and owner details, and uses an inclusive date range. This adds value without contradiction.
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?
Two concise sentences front-load the purpose and add key details. No fluff, every word earns its place. The structure is clear and efficient.
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?
Given the availability of an output schema and rich annotations, the description is adequate for a list tool. It covers the core purpose, date inclusivity, and notable omissions. However, it could be more complete by mentioning pagination or limit behavior, and by explicitly contrasting with sibling detail tools.
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 description coverage is 0%, so the description must compensate. It explains the date range inclusivity and gives an example for activity_type, but does not mention the 'limit' parameter at all, and implicitly treats start_date/end_date as a pair without specifying which are required. Over half of the parameters remain unexplained.
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 it lists completed Garmin activities within an inclusive date range. It distinguishes itself from siblings like get_activity_summary or get_activity_splits by focusing on listing rather than details, and from list_workouts by specifying 'activities' instead of 'workouts'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines3/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage (for a high-level list of activities) but does not explicitly mention alternatives or when not to use this tool. Comments about omitting GPS and owner details hint at limitations but do not direct the user to sibling tools like get_activity_summary for richer data.
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?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint false, covering the safety profile. The description adds the library/template scope but does not disclose pagination, ordering, or limit behavior beyond what the schema implies.
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, front-loaded sentence with no redundant wording. Every word contributes to identifying the tool's purpose and scope.
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 read-only list operation with rich annotations and an output schema, the description is mostly sufficient. It could be slightly more complete by noting the limit parameter's behavior, but it is adequate given the low complexity.
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?
The schema description coverage is 0%, so the description should compensate for the limit parameter, but it does not. The parameter name and default provide partial clues, yet no added meaning about limiting results or pagination is offered.
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 ('List'), names the exact resource ('workout templates'), and scopes it to 'the user's Garmin Connect library.' This clearly distinguishes the tool from siblings like list_scheduled_workouts and list_activities.
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 context by specifying 'workout templates' as opposed to scheduled workouts or activities, which implies appropriate use. However, it does not explicitly name alternatives or state when not to use this tool.
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?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is well covered. The description adds the explicit 'without changing Garmin Connect' statement, which reinforces the no-side-effect behavior, but it does not add further behavioral details such as what 'preview' returns or whether it communicates with Garmin at all. This is adequate but not rich given the annotations.
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, front-loaded sentence of nine words with no filler or repetition. Every word earns its place, and the key safety qualifier appears at the end without burying the primary purpose.
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?
Given the rich input schema, existing annotations, and available output schema, the description captures the essential selection and invocation context: validate/preview a workout payload and do not modify Garmin Connect. It could slightly expand on what 'preview' entails, but the overall tool context is sufficiently complete for an agent to use it correctly alongside the structured metadata.
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 only parameter is 'workout', which has no top-level description, and the tool description does not explain how to construct it. However, the nested $defs in the input schema thoroughly document the workout structure, and the phrase 'Garmin JSON' clarifies the conceptual payload. The description adds general context but relies on the schema for meaningful parameter semantics.
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 pair ('Validate and preview') and names the resource ('Garmin JSON'), while explicitly stating the non-mutating nature ('without changing Garmin Connect'). This clearly distinguishes it from mutation siblings like create_workout, delete_workout, and unschedule_workout, and from read-only listing tools like list_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 phrase 'without changing Garmin Connect' strongly implies this tool is for safe dry-run validation/preview before performing an actual mutation, providing clear context for when to use it. It does not explicitly name alternatives or state when not to use it, but the intended usage is evident from the contrast with mutation siblings.
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?
Annotations already mark the tool as destructive and non-read-only, so the description's job is lighter. It adds meaningful beyond-annotation context by specifying that the template survives the removal. However, it does not disclose whether the action is reversible or how the confirm parameter influences behavior, so it is not fully transparent.
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, well-structured sentence that leads with the primary action and immediately clarifies the most important distinction. Every word contributes meaning; there is no fluff, redundancy, or unnecessary qualification.
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?
For a destructive action with a confirmation parameter, the description is minimal but directionally correct. It explains the core operation and distinguishes it from deletion, but it leaves gaps around the confirm parameter, preconditions, and irreversibility. The abundance of sibling tools like list_workouts and delete_workout would have benefited from more explicit placement, but the current text is adequate for a straightforward unscheduling action.
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 description coverage is 0%, so the description should carry the burden of explaining parameter semantics. It does not mention either scheduled_workout_id or confirm. While the ID name is self-explanatory, the confirm boolean's purpose and necessity are entirely unexplained, leaving a gap for the agent.
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 verb 'Remove' with a specific resource ('a scheduled workout from the calendar') and adds the crucial qualifier 'without deleting its template,' which distinguishes this tool from the sibling delete_workout. This is a specific and non-tautological statement of purpose.
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 phrase 'without deleting its template' provides clear contextual guidance: use this to remove a calendar entry while preserving the template. It implies the alternative of delete_workout for full deletion, but it does not explicitly name that sibling or state when not to use this tool in broader terms.
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?
Annotations already indicate a read-only, idempotent, non-destructive operation. The description adds meaningful context beyond this: the tool returns 'compact' metrics and is intended only for 'completed' activities, which informs expectations about response size and eligibility constraints.
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 with no filler. It front-loads the primary action ('Get') and includes relevant qualifiers ('compact', 'one completed') that matter for tool selection.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With one simple parameter, strong annotations, and an output schema, the description provides enough context for proper tool selection and invocation. It explains the core purpose and key constraint without unnecessary detail.
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?
Schema description coverage is 0%, but the single parameter activity_id is self-explanatory and the description reinforces that it refers to a completed Garmin activity. However, the description does not explain the ID format or source, so it only partially compensates for the lack of parameter 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 a specific verb ('Get') and resource ('compact lap and interval metrics') with a clear scope ('one completed Garmin activity'). It distinguishes itself from sibling tools like get_activity_summary by focusing on laps/splits rather than overall summary 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 phrase 'for one completed Garmin activity' conveys a clear condition for use, implying this tool is appropriate when the activity is finished and the user needs lap/interval-level details. It does not explicitly mention alternatives, but the context is clear enough to avoid obvious misuse compared to siblings.
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?
Annotations declare readOnlyHint=false (write operation) but the description adds valuable nuances: confirm=false produces a non-mutating response while confirm=true performs the actual creation. The 'only after the user explicitly approves' instruction adds safety-relevant context beyond what structured annotations provide. No contradiction with annotations.
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?
Two sentences, front-loaded with the core purpose first, then the confirm flow. Zero filler, every sentence earns its place. The critical safety caveat (only confirm=true after explicit approval) is positioned right after the purpose.
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?
Given the output schema exists (so return values needn't be described), this is nearly complete. The confirm flow and date format are covered. The workout structure is handled by the extensively documented nested $defs in the schema itself. Could marginally benefit from an explicit mention of what the confirmation response contains, but the rich nested schema compensates.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for top-level params, so the description must compensate. It explains confirm (false=non-mutating preview, true=actual create) and schedule_date format (YYYY-MM-DD). The workout param semantics are left to the rich nested $defs, which carry their own extensive descriptions (target units, duration semantics, zone constraints). Good compensation for the coverage gap.
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?
Clear verb+resource stated upfront: "Create a Garmin workout and optionally schedule it on YYYY-MM-DD." The optional scheduling behavior is immediately clear and distinguishes it from sibling tools like list_workouts, preview_workout, and delete_workout.
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 explicitly prescribes the two-phase usage flow: call with confirm=false for a non-mutating confirmation, then confirm=true only after explicit user approval. This tells the agent when it's safe to execute. It doesn't explicitly contrast with the sibling preview_workout tool for when to choose one over the other, but the confirm flow itself is usable guidance.
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/aapiskotin/garmin-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server