garmin-mcp-server
Provides tools to access health and fitness data from Garmin Connect, including workouts, sleep, heart rate, body composition, fitness metrics, and activity file downloads.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@garmin-mcp-serverWhat's my training readiness today?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Garmin Connect MCP Server
A Model Context Protocol (MCP) server that connects AI assistants to your Garmin Connect health and fitness data. Ask Claude, ChatGPT, OpenCode, or any MCP-compatible client about your workouts, sleep, heart rate, and more -- using natural language.
Built on python-garminconnect and the MCP Python SDK.
Features
29 tools across 6 categories, giving your AI assistant access to:
Category | Tools | Examples |
Health | 5 | Daily summary, heart rate, sleep stages, stress, body battery |
Activities | 4 | Recent workouts, search by date/type, detailed splits |
Body | 3 | Weight trends, body composition, hydration tracking |
Fitness | 6 | Training readiness, VO2 Max, HRV, race predictions, endurance score |
Devices | 6 | Device info, step trends, personal records, SpO2, respiration, goals |
Export | 5 | Download FIT, GPX, TCX, KML, and CSV files |
Related MCP server: garth-mcp-server
Quick Start
Prerequisites
Python 3.10+
uv package manager
A Garmin Connect account with a paired device
1. Clone and install
git clone https://github.com/JohanBellander/garmin-mcp-server.git
cd garmin-mcp-server
uv sync2. Authenticate with Garmin
Run the one-time setup to save your OAuth tokens:
uv run garmin-mcp-setupYou'll be prompted for your email, password, and MFA code (if enabled). Tokens are saved to ~/.garminconnect/ and last approximately one year -- you won't need to re-authenticate until they expire.
3. Connect to your AI assistant
Claude Desktop
Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"garmin": {
"command": "uv",
"args": [
"--directory",
"/absolute/path/to/garmin-mcp-server",
"run",
"garmin-mcp-server"
]
}
}
}OpenCode
Add to your .opencode.json MCP config:
{
"mcp": {
"garmin": {
"command": "uv",
"args": [
"--directory",
"/absolute/path/to/garmin-mcp-server",
"run",
"garmin-mcp-server"
]
}
}
}Any MCP Client
The server uses STDIO transport. Point your client at:
uv --directory /path/to/garmin-mcp-server run garmin-mcp-serverExample Conversations
Once connected, you can ask your AI assistant things like:
"How did I sleep last night?"
"Show me my runs from the past two weeks"
"What's my training readiness today?"
"Compare my resting heart rate over the last 7 days"
"Download the GPX file for my last bike ride"
"What are my race predictions for a half marathon?"
"How many steps have I averaged this month?"
Available Tools
Health Data
Tool | Description |
| Steps, distance, calories, floors climbed, active minutes for a date |
| Resting HR, min/max, heart rate zone breakdown |
| Sleep duration, stages (deep/light/REM/awake), sleep score |
| All-day stress levels, average, duration by category |
| Energy reserve levels throughout the day |
Activities
Tool | Description |
| Most recent workouts with key metrics |
| Activities in a date range, filterable by type (running, cycling, etc.) |
| Full detail for a specific activity: pace, HR zones, elevation, training effect |
| Per-split/lap breakdown: pace, distance, HR, elevation |
Body Composition
Tool | Description |
| Weight measurements, BMI, body fat % |
| Weight, body fat, muscle mass, bone mass, body water |
| Daily water intake and progress toward goal |
Fitness Metrics
Tool | Description |
| Readiness score, HRV status, sleep quality, recovery time |
| Estimated VO2 Max for running and cycling |
| Training load and status classification |
| Predicted times for 5K, 10K, half marathon, and marathon |
| Heart Rate Variability: status, weekly average, baseline |
| Aerobic fitness score over time |
Export & Download
Tool | Description |
| Original FIT file (as ZIP) -- raw sensor data |
| GPX track -- GPS coordinates for mapping |
| TCX file -- GPS + HR + cadence |
| KML file -- for Google Earth |
| CSV file -- tabular data for spreadsheets |
Additional Tools
Tool | Description |
| Connected devices: model, firmware, battery, last sync |
| Step counts per day over a date range |
| Personal bests across all activities |
| Breathing rate: waking, sleeping, high, low |
| Blood oxygen saturation readings |
| Active fitness goals and current progress |
Configuration
Environment Variable | Default | Description |
|
| Directory where OAuth tokens are stored |
|
| Directory for downloaded activity files |
Development
Testing with MCP Inspector
uv run mcp dev src/garmin_mcp/server.pyThis opens a web UI where you can invoke tools individually and inspect responses.
Project Structure
src/garmin_mcp/
├── server.py # FastMCP server entry point
├── auth.py # OAuth token management + garmin-mcp-setup CLI
└── tools/
├── health.py # Daily health metrics
├── activities.py # Workout listing and details
├── body.py # Weight, body composition, hydration
├── fitness.py # Training metrics, HRV, race predictions
├── devices.py # Devices, steps, records, SpO2, goals
└── export.py # Activity file downloadsImportant Notes
Unofficial API -- This uses undocumented Garmin Connect endpoints via
python-garminconnect. Endpoints may change without warning.Rate Limits -- Garmin enforces rate limits. Avoid rapid-fire requests; the AI assistant handles this gracefully with error messages.
Token Refresh -- The underlying
garthlibrary handles token refresh automatically. Tokens typically last ~1 year.STDIO Safety -- The server never writes to stdout (which would corrupt the MCP transport). All logging goes to stderr.
No Interactive Auth -- The MCP server only uses pre-saved tokens. Run
garmin-mcp-setupseparately to authenticate.
License
MIT
Available Tools
29 toolsdownload_activity_csvA
Download a CSV file for a specific activity. Saves the CSV file and returns the file path. CSV files contain tabular activity data for spreadsheet analysis.
| Name | Required | Description | Default |
|---|---|---|---|
| activity_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral disclosure burden. It explicitly states that the tool saves the CSV file and returns the file path, which is a key side effect beyond just 'downloading'. It omits details like path naming, overwrite behavior, or storage location, but the essential outcome is transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three short sentences with the primary action front-loaded. Each sentence earns its place: what the tool does, what side effect it has, and what the returned file is useful for. There is no filler or repetition of schema data.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter download tool with an output schema, the description covers the operation, the file-saving behavior, the returned file path, and the intended use case. It does not need to explain return values in detail because an output schema exists. Minor omissions such as file location or naming conventions do not prevent correct usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for the lack of parameter details. It only refers to 'a specific activity' and never explicitly maps the activity_id parameter to the tool's behavior, nor does it explain where the ID comes from or what format is expected. This adds almost no parameter-level meaning beyond the schema's bare title.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence names the operation (Download), the resource (CSV file), and the target (a specific activity), clearly distinguishing it from sibling tools like download_activity_fit, download_activity_gpx, and download_activity_tcx. The mention of tabular data for spreadsheet analysis further reinforces the format-specific purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description conveys a clear use context: CSV files are for tabular activity data and spreadsheet analysis. It does not explicitly name alternatives or state when not to use the tool, but among the format-specific download siblings, the intended usage is reasonably clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
download_activity_fitA
Download a FIT file for a specific activity. Saves the original FIT file (as ZIP) and returns the file path. The FIT file contains the raw sensor data from the Garmin device.
| Name | Required | Description | Default |
|---|---|---|---|
| activity_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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 behaviors: the tool saves the original FIT file as a ZIP and returns the file path. However, it does not elaborate on failure modes or auth requirements, which would add further transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences with no fluff. The main action is front-loaded and every sentence adds relevant information: file type, saving behavior, return value, and data content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter download tool with an output schema, the description covers purpose, side effect, and return value. It is nearly complete, though a note about when to prefer this format over sibling download tools would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The one parameter, activity_id, has no schema description, and schema coverage is 0%. The phrase 'for a specific activity' provides minimal semantic context for the parameter, but it does not specify where the ID comes from or how it should be formatted. The description partially compensates for the coverage gap but does not fully document the parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Download a FIT file for a specific activity.' It also distinguishes from siblings like download_activity_gpx/tcx/csv by emphasizing the raw sensor data contained in a FIT file.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for obtaining raw Garmin sensor data, but it does not explicitly say when to choose FIT over GPX/TCX/KML/CSV or mention any exclusions. The guidance is implicit rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
download_activity_gpxA
Download a GPX file for a specific activity. Saves the GPX track file and returns the file path. GPX files contain GPS coordinates and are useful for mapping.
| Name | Required | Description | Default |
|---|---|---|---|
| activity_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations available, the description carries the behavioral disclosure burden. It clearly discloses two key behaviors: the tool saves the GPX track file to disk and returns the file path rather than raw file content. This is valuable and goes beyond the tool name, though it does not cover error cases or permissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences, each serving a distinct purpose: the main action, the side-effect return behavior, and the use-case context. The description is front-loaded with the core action and contains no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-parameter download tool, the description covers the essential elements: purpose, save behavior, return value, and use case. It is slightly incomplete because it does not mention how to obtain a valid activity_id or address activities without GPS data, but these are minor gaps given the output schema exists.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for parameter guidance. It mentions 'a specific activity' but never explains how to supply activity_id, what values are valid, or where the ID can be obtained. The parameter name alone is not sufficient for reliable invocation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Download') and resource ('GPX file for a specific activity'), immediately identifying what the tool does. The mention of GPS coordinates and mapping helps distinguish it from the sibling format downloaders (FIT, TCX, KML, CSV).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The statement 'GPX files contain GPS coordinates and are useful for mapping' provides implied guidance on when to choose this tool. However, it does not explicitly name alternatives such as download_activity_fit or download_activity_tcx, nor does it 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.
download_activity_kmlB
Download a KML file for a specific activity. Saves the KML file and returns the file path. KML files can be opened in Google Earth and similar tools.
| Name | Required | Description | Default |
|---|---|---|---|
| activity_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of behavioral disclosure. It clearly states that the tool saves the KML file to disk and returns the file path, which is a key behavioral trait. It does not mention overwrite behavior or error cases, but the core side effect and return contract are disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, each earning its place: the action, the side effect/return value, and the practical use case. The description is front-loaded with the core purpose and contains no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter download tool with an output schema, the description covers the main invocation needs: what is downloaded, what happens, and what is returned. The main gap is the lack of guidance on choosing this format over siblings, but the tool's simplicity keeps this impact modest.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for the parameter. It only says the file is for 'a specific activity,' which adds little beyond the parameter name 'activity_id.' It does not explain where to find the activity ID, its format, or how it relates to other activity tools.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action ('Download a KML file') and the target resource ('a specific activity'). It does not explicitly name sibling format tools, but the KML resource is unambiguous from both description and tool name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to choose KML over the sibling formats (fit, gpx, tcx, csv). The note that KML can be opened in Google Earth hints at a use case, but there is no explicit when-to-use or when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
download_activity_tcxA
Download a TCX file for a specific activity. Saves the TCX file and returns the file path. TCX files contain GPS + heart rate + cadence data.
| Name | Required | Description | Default |
|---|---|---|---|
| activity_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the full burden of behavioral disclosure. It explicitly discloses the side effect of saving the file and the return behavior of providing a file path. It could add more detail about overwrite behavior or where the file is stored, but the core behavioral traits are clearly conveyed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, each earning its place: the action, the side effect/result, and the data content that helps with tool selection. It is front-loaded with the main purpose and contains no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter download tool, the description is mostly complete: it identifies the target, explains the side effect, and notes what the file contains. An output schema exists to cover return-value structure, so the description need not elaborate further. Minor gaps like file naming or storage location are not critical for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides no description for activity_id, so the description's mention of 'a specific activity' adds minimal context. While the parameter name is fairly self-explanatory, the description does not explain the expected ID format, how to obtain it, or any constraints. It is adequate but not enriching.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (download), the resource (a TCX file for a specific activity), and the result (saves file, returns path). It distinguishes this tool from the many activity-read siblings and from the other download_activity_* tools by naming the TCX format and its contents.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use this tool by noting that TCX files contain GPS + heart rate + cadence data, which helps an agent choose between formats. However, it does not explicitly mention alternative download formats (FIT, GPX, KML, CSV) or state when one format should be preferred over another.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_activities_by_dateA
Get activities within a date range (YYYY-MM-DD). Optionally filter by activity type (running, cycling, swimming, etc.). Returns activity name, type, date, duration, distance, and key metrics.
| Name | Required | Description | Default |
|---|---|---|---|
| end_date | Yes | ||
| start_date | Yes | ||
| activity_type | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral disclosure burden. It states that the tool returns activity name, type, date, duration, distance, and key metrics, and that filtering is optional. It does not discuss rate limits, pagination, or date inclusivity, but for a read-only list operation this is a reasonably transparent description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three compact sentences with no filler. Purpose, format, optional filter, and return contents are each given in a single focused sentence, making the most important information immediately visible.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the tool's purpose, date format, optional filtering, and return fields. Since an output schema exists, it does not need to enumerate exact return structures. Minor gaps like date inclusivity, sorting, or result limits prevent a perfect score.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description needed to compensate. It adds the YYYY-MM-DD date format and gives concrete activity type examples (running, cycling, swimming). The start/end date semantics are implied by 'date range', which is sufficient for these parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('Get'), a resource ('activities'), and a clear scope ('within a date range'), with an optional activity-type filter. This distinguishes it from siblings like get_recent_activities and get_activity_details without needing to open the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The intent is clear: use this tool when you need activities falling within a specific date range, optionally filtered by type. It does not explicitly name alternative tools or exclusion cases, but the date-range framing provides sufficient usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_activity_detailsB
Get detailed information for a specific activity by its ID. Returns comprehensive data including splits, HR zones, pace, elevation, etc.
| Name | Required | Description | Default |
|---|---|---|---|
| activity_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It does disclose that the tool returns a comprehensive payload and lists several data categories, but it does not explicitly mention that it is read-only, any auth needs, error behavior, or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences front-load the verb and target resource, and the second sentence lists concrete output categories. Every clause adds useful information without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool itself is simple with one parameter and an output schema, so return value details are covered elsewhere. However, with many sibling activity tools, the lack of usage guidance and explicit distinction between this tool and get_activity_splits leaves room for incorrect selection.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage for the only parameter, activity_id. The description adds the meaning that the ID identifies a specific activity, but it does not explain the ID format, where to obtain it, or any validation expectations.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the operation ('Get detailed information') and the resource ('a specific activity by its ID'), and it names useful output categories like splits, HR zones, pace, and elevation. It is distinct from simple list tools but does not explicitly differentiate from the similar sibling get_activity_splits.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to use this tool versus alternatives such as get_activity_splits or get_recent_activities. The only implicit condition is needing an activity ID, but no when-not-to-use or sibling comparison is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_activity_splitsA
Get split/lap data for a specific activity. Returns per-split pace, distance, elevation, heart rate.
| Name | Required | Description | Default |
|---|---|---|---|
| activity_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of describing behavior. It clearly identifies this as a read operation and specifies what data is returned, which gives an agent an accurate model of the tool's effect. It does not mention units, missing-split behavior, or ownership constraints, but these are minor for a simple getter.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences with no filler. It front-loads the core purpose and then lists the returned data, every sentence earning its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given 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 a rich output schema, this description is mostly complete. It identifies the required input and the key return fields, though it could slightly improve by noting units or typical split granularity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is one parameter with 0% schema description coverage. The description's phrase 'for a specific activity' adds semantic context tying activity_id to the activity whose splits are returned, but it offers no details on ID format, source, or validation. It is minimally adequate for such a self-explanatory parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb and resource: it fetches split/lap data for a specific activity and enumerates the returned metrics (pace, distance, elevation, heart rate). This distinguishes it from sibling tools like get_activity_details or the file download tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this tool is for fetching per-split data for an activity, but it does not explicitly explain when to choose it over get_activity_details or the download_activity_* siblings. No exclusions or alternative routing guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_body_batteryA
Get body battery data for a date (YYYY-MM-DD). Returns body battery levels showing energy reserves throughout the day.
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral disclosure burden. It discloses that the tool returns body battery levels across the day, but it does not mention granularity, units, timezone handling, or any error/edge-case behavior. It is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no filler. The action, resource, date format, and return meaning are all front-loaded and each sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-required-parameter getter with an output schema, the description is nearly complete. It includes the date format and a meaningful description of the returned data, though it lacks explicit caveats about what exactly the returned levels represent beyond 'throughout the day.'
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema only defines `date` as a string with title 'Date' and 0% schema description coverage. The description compensates by specifying the required format 'YYYY-MM-DD', which is essential for correct invocation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the specific verb ('Get') and resource ('body battery data') and adds a helpful semantic definition ('energy reserves throughout the day'). It is easily distinguished from sibling health-metric tools because it names a unique resource and a single-date scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context for when to use it: retrieve body battery data for a specific date. It does not explicitly mention alternatives or exclusions, but among the siblings only one tool targets body battery, so the intended usage is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_body_compositionA
Get body composition data for a date range (YYYY-MM-DD). Returns weight, body fat %, muscle mass, bone mass, body water %.
| Name | Required | Description | Default |
|---|---|---|---|
| end_date | No | ||
| start_date | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of explaining behavior. It discloses that the tool returns weight, body fat %, muscle mass, bone mass, and body water %, which is useful. It does not mention potential edge cases like missing data, inclusive/exclusive date boundaries, or any side effects, though the operation appears to be a read-only query.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences with no filler. The purpose and date format are stated first, followed by the returned metrics, each sentence earning its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple retrieval tool, the description covers the core purpose, parameters' format, and returned data. An output schema exists, so the return structure is additionally specified. It could be more complete with details on end_date default behavior or units, but it is sufficient for basic invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does 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 adds the date format requirement 'YYYY-MM-DD' and clarifies that the parameters define a date range. It does not explain the default/nullable behavior of end_date or whether the range is inclusive, but the parameter names are self-explanatory.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool's action ('Get body composition data') and resource (body composition metrics for a date range). It lists the specific returned metrics, which helps distinguish it from sibling tools like get_weight. However, it does not explicitly contrast itself with overlapping siblings beyond listing its own outputs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for retrieving body composition data over a date range, providing a clear usage context. It does not name alternatives or state when not to use it, leaving the agent to infer selection from the sibling tool names and outputs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_daily_stepsA
Get daily step counts for a date range (YYYY-MM-DD). Returns step count per day, useful for trend analysis.
| Name | Required | Description | Default |
|---|---|---|---|
| end_date | Yes | ||
| start_date | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden of behavioral disclosure. It discloses the return shape ('Returns step count per day') and date range, but omits details like inclusivity, timezone handling, or error behavior. This is acceptable for a simple read operation but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two compact sentences with the main operation front-loaded. Every phrase adds value: purpose, date format, return granularity, and a use case. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The presence of an output schema reduces the need to explain return values, and the tool is a straightforward read operation. However, the description lacks sibling differentiation and parameter-boundary semantics, which leaves some ambiguity among related sibling tools like get_daily_summary.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for undocumented parameters. It does add the YYYY-MM-DD format and the notion of a date range, but it does not specify whether boundaries are inclusive, whether end_date must be after start_date, or any maximum range.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb 'Get' and a clear resource 'daily step counts', scoped by a date range. It also states the per-day return granularity, which helps differentiate it from activity-centric siblings like get_activities_by_date or get_daily_summary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context by noting the tool is 'useful for trend analysis', indicating a primary use case. It does not explicitly name alternatives or exclusion conditions, but the usage context is clear enough for a simple getter.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_daily_summaryB
Get daily activity summary for a date (YYYY-MM-DD). Returns steps, distance, calories, floors climbed, active minutes, and more.
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the behavioral disclosure burden. It discloses the main observable behavior by listing return metrics and implies a read-only operation, but it does not cover edge cases, timezone/date interpretation, or behavior when no activity data exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short, direct sentences that front-load the purpose and date format. There is no filler, tautology, or redundant restating of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a low-complexity tool with one parameter and an output schema, the core call is reasonably well specified. However, it lacks usage context relative to sibling summary/detail tools and does not mention what happens when no data exists for the requested date.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has a single required date parameter with 0% description coverage. The description compensates by explicitly providing the YYYY-MM-DD format, which is the essential information for calling the tool; no further parameter semantics are needed for such a simple input.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Get') and resource ('daily activity summary') with a required date scope. The listed metrics help differentiate it from siblings like get_activities_by_date or get_daily_steps, though it does not explicitly contrast any sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus get_activities_by_date or get_daily_steps, and no mention of alternatives or exclusions. The intended context must be inferred from the name and output list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_devicesA
Get information about connected Garmin devices. Returns device names, models, firmware versions, and last sync times.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. 'Get information' and 'Returns' imply a read-only operation, and the listed fields set expectations for the output. However, it does not disclose edge behavior such as what happens when no devices are connected or whether the data is refreshed/current.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences, front-loaded with the core purpose and immediately followed by concrete return fields. Every sentence earns its place with no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter read-only listing tool with an output schema, the description is largely complete: it states the resource and the returned fields. It only lacks minor edge-case context like empty results or connectivity assumptions, which are not critical for invoking the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so parameter semantics are not applicable. The baseline of 4 applies, and the description correctly focuses on what the call returns rather than adding unnecessary parameter details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource ('Get information about connected Garmin devices') and enumerates the exact returned fields. It clearly distinguishes itself from the many sibling tools that focus on activities, health metrics, or file downloads.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description makes the usage context clear: call this when you need connected Garmin device details such as name, model, firmware, and last sync. There are no exclusions or alternative tools mentioned, but the resource is distinct enough that the intended use is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_endurance_scoreB
Get endurance score for a date range (YYYY-MM-DD). Returns endurance score reflecting aerobic fitness over time.
| Name | Required | Description | Default |
|---|---|---|---|
| end_date | No | ||
| start_date | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral disclosure burden. It indicates that this is a read operation and that the returned value is an endurance score reflecting aerobic fitness over time, but it does not disclose semantics for end_date omission, date-range inclusivity, computation basis, or data availability.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences with no filler. The core action and date format are front-loaded, and the second sentence adds useful context about what an endurance score represents.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is relatively simple with two flat parameters, and an output schema exists, so return values are covered externally. Still, the lack of annotations, absence of usage guidance, and ambiguous handling of the optional end_date leave an agent with a meaningful gap for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 0% description coverage, so the description must compensate. It adds meaningful date-format information (YYYY-MM-DD) and implies that start_date and end_date define a range. However, it does not clarify the meaning of end_date=null or whether a single-date request is valid.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Get') and resource ('endurance score'), and clearly scopes it to a date range. It does not explicitly differentiate from siblings like get_vo2max or get_training_status, but the tool name and description make the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided about when to use this tool versus any of the many sibling data-retrieval tools. There are no exclusions, prerequisities, or alternative references; usage must be inferred from the name and general phrasing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_goalsA
Get active fitness goals. Returns current goals for steps, distance, calories, etc. and progress toward each.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It does state that it returns current goals and progress, which is a useful behavioral hint, but it does not mention read-only nature, data freshness, what happens when no goals exist, or any access requirements. It is minimally transparent but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no filler. The purpose is front-loaded ('Get active fitness goals') and the follow-up sentence provides essential return-value context. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-parameter tool with an output schema, the description is largely sufficient: it names the goal categories and the progress detail. It could be slightly more explicit about what 'active' means and clarify the 'etc.' list, but the output schema likely covers the return structure, and the tool is simple enough that nothing critical is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero properties, so there are no parameters to document. The description adds no parameter information, but none is needed; the baseline for 0 params is 4, and the description does not mislead.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Get active fitness goals.' It clearly identifies the tool's domain (goals) and distinguishes it from the many sibling tools that retrieve activities, heart rate, sleep, etc. The additional detail about returning progress adds further specificity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no explicit guidance on when to use this tool versus alternatives. It does not mention any prerequisites, exclusions, or sibling tools, so an agent must infer that this is the tool for goal data based solely on the name and first sentence.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_heart_rateB
Get heart rate data for a date (YYYY-MM-DD). Returns resting heart rate, min/max HR, and heart rate zones.
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are entirely absent, so the description carries the full disclosure burden, but it only reveals the output components (resting HR, min/max, zones). It does not disclose what happens when no data exists for the requested date, how timezone is handled, or whether the response has any failure modes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no waste: the first front-loads the purpose and date format, the second states the return contract. Every phrase earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read tool that has an output schema, the description covers the essentials: what it retrieves, the date format, and the main returned fields. Gaps remain in alternative-tool routing (especially vs get_hrv) and missing-data behavior, but the tool's simplicity makes those acceptable gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% — the schema declares only a bare string property 'date' with no format. The description partially compensates by specifying YYYY-MM-DD, which is the critical missing piece, but it leaves timezone semantics and valid date range unstated.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb-resource pair ('Get heart rate data') with a date scope and enumerates the returned metrics (resting HR, min/max, zones), so an agent knows exactly what the tool does. However, it doesn't explicitly differentiate from the sibling get_hrv (heart rate variability), leaving a minor potential confusion point.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only usage signal is the single-date scope implied by 'for a date (YYYY-MM-DD)'. There is no guidance on when to prefer this tool over its 28 siblings — notably get_hrv for heart rate variability or get_daily_summary — and no exclusions or conditional routing are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_hrvA
Get Heart Rate Variability (HRV) data for a date (YYYY-MM-DD). Returns HRV status, weekly average, and baseline.
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the behavioral burden. 'Get' and 'Returns' make the read-only nature clear, and the description discloses the returned fields and enforces the date format. It does not cover edge cases like missing data, but that is minor for a simple getter.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with no filler. The core action and scope are front-loaded, and the return-fields sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With one required parameter, an output schema, and a low-complexity read operation, the description is nearly complete. It provides date format and return fields, though it omits context about measurement window or data availability; that does not block correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does 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 adds the date format (YYYY-MM-DD) and clarifies that the parameter is the target date for HRV. With only one self-explanatory parameter, this is sufficient compensation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description uses a specific verb 'Get' with explicit resource 'Heart Rate Variability (HRV) data' and a date scope. It also names return fields (status, weekly average, baseline), which clearly differentiates it from sibling tools like get_heart_rate or get_daily_summary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when HRV data for a specific date is needed, but it does not provide explicit when/when-not guidance or mention alternatives. No exclusions or comparison to sibling tools are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_hydrationA
Get hydration data for a date (YYYY-MM-DD). Returns water intake in ml and progress toward daily goal.
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden, and it does explain that the operation returns water intake and goal progress. However, it does not disclose any caveats such as data availability, timezone assumptions, or behavior when no data exists for the date, though the read-only nature is implied by 'Get.'
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences with no filler. The date format is front-loaded, and the return values are stated in the second sentence, making it easy to scan and act on.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the low complexity (one required parameter, no nested objects) and the existence of an output schema, the description is largely complete. It does not discuss when to use it versus get_daily_summary or get_goals, but hydration is distinct enough among the siblings that this is a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema only defines 'date' as a string with 0% description coverage, but the description compensates fully by specifying the required format '(YYYY-MM-DD)'. This gives the agent the exact syntax needed for the single required parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the resource ('hydration data') and the exact verb ('Get') plus the temporal scope ('for a date'). It also specifies the return content ('water intake in ml and progress toward daily goal'), and no sibling tool covers hydration, so it is easily distinguishable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context for when to use the tool: when hydration data for a specific date is needed. It does not explicitly name alternatives or exclusions, but none of the sibling tools are hydration-specific, so this is not a significant gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_personal_recordsA
Get personal records (PRs) across all activities. Returns fastest times, longest distances, and other personal bests.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description is the only behavioral signal. It does disclose what the tool returns (fastest times, longest distances, other bests) and that it spans all activities, which is helpful; however it does not mention any caveats around data freshness, computation scope, or limitations beyond that.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two pithy sentences convey purpose, scope, and return content with no redundancy. The definition is front-loaded and every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-argument read-only tool with an output schema present, the description covers purpose, scope, and return content. It could slightly strengthen completeness by specifying whether PRs are all-time versus date-range filtered, but nothing essential is missing for safe invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters and schema coverage is 100%, so the description has no parameter burden. The baseline for a zero-parameter tool is 4, and the description appropriately focuses on the return value instead.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource (personal records/PRs), scopes it across all activities, and illustrates the output with fastest times and longest distances. This distinguishes it from sibling metrics like get_endurance_score or get_race_predictions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The intended use is implied: call it whenever an agent needs a user's personal bests for any activity. It does not explicitly contrast with alternatives or state when not to use it, so it falls at the solid/implied level.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_race_predictionsA
Get race time predictions based on current fitness. Returns predicted times for 5K, 10K, half marathon, and marathon.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full transparency burden. It discloses that predictions are based on current fitness and that it returns four distance-specific times. However, it does not clarify what 'current fitness' relies on, whether recent activity data is required, or if there are any limitations or assumptions in the prediction. The read-only nature is implied by 'Get' but not explicitly stated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences with no filler. The first sentence states the action and basis, and the second enumerates the exact outputs. It is front-loaded with the primary purpose and every word contributes necessary information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no parameters and an output schema, the description is largely complete: it tells the agent what the tool does and what it returns. The main missing elements are explicit prerequisites or limitations, such as whether outdated fitness data would still produce a prediction or whether the user must have a recent activity logged. These are minor gaps for a simple no-argument read operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero properties and therefore schema description coverage is 100% by default, but there are no parameters to document. With no parameters, the description does not need to explain argument meanings; it instead clarifies the output and basis. This meets the baseline appropriate for a zero-parameter tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as providing race time predictions and enumerates the specific distances (5K, 10K, half marathon, marathon). This specificity distinguishes it from related siblings like get_personal_records, which provide historical records, and get_endurance_score, which returns a score. However, it does not explicitly mention or contrast any sibling tool, so it stops one step short of full differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'based on current fitness' implies the tool should be used when the agent needs predicted race times derived from a user's present fitness level. Yet the description gives no explicit when-to-use guidance, no exclusions, and no mention of alternative tools such as get_endurance_score or get_vo2max. Thus the usage context is only implied, not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_recent_activitiesB
Get the most recent activities/workouts. Returns activity name, type, date, duration, distance, calories, and average HR.
| Name | Required | Description | Default |
|---|---|---|---|
| count | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral burden. It does disclose that this is a read-style listing and enumerates returned metrics, which is useful. However, it does not mention ordering, default count, time window limits, or units, leaving some behavioral ambiguity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short, functional sentences with no filler. The action and resource are front-loaded, and the return fields are listed concisely. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-optional-parameter tool with an output schema, the description is close to sufficient: it names the resource and the expected data. Yet it omits any explanation of the count parameter and provides no routing guidance relative to get_activities_by_date, so it is not fully self-contained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does 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 only parameter, count, at all. There is no explanation of how count controls the number of returned activities or what the default represents, so the parameter is effectively undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Get') and the resource ('most recent activities/workouts'), and lists the returned fields. This distinguishes it from date-based siblings such as get_activities_by_date and detail-focused tools like get_activity_details.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance is given about when to use this tool versus alternatives like get_activities_by_date or get_activity_details. The phrase 'most recent' implies a use case, but the description does not state exclusions, scenarios, or sibling conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_respirationA
Get respiration/breathing rate data for a date (YYYY-MM-DD). Returns breathing rate throughout the day.
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden of behavioral disclosure. It does indicate a read operation returning data across the day, which is useful. However, it does not mention units, granularity, timezone behavior, or what happens when no data exists for the date.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences with no filler. The key action and date format are front-loaded, and the return behavior is stated in the second sentence. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a low-complexity tool with one required parameter and an output schema. The description covers the purpose, the date format, and the general nature of the result. It is nearly complete for invocation, though it lacks usage guidance and edge-case behavior, which are minor for this simple getter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but there is only one parameter and the description adds the explicit 'YYYY-MM-DD' format. This meaningfully compensates for the schema's lack of description, though it does not add much beyond the format and the semantic notion of 'a date'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Get') and resource ('respiration/breathing rate data'), and adds the date scope and output behavior ('Returns breathing rate throughout the day'). This clearly distinguishes it from sibling tools that target other metrics such as heart rate, SpO2, or stress.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains what the tool does but provides no guidance on when to prefer it over alternatives, nor any exclusions or prerequisites. An agent can infer it is for daily respiration data, but the description does not explicitly help with tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_sleepA
Get sleep data for a date (YYYY-MM-DD). Returns sleep duration, sleep stages (deep, light, REM, awake), sleep score.
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden of behavioral disclosure. It clearly discloses that the tool returns sleep duration, stages, and score, which tells the agent what output to expect. It does not mention timezone handling, data availability, or authentication, but for a simple read operation these are minor gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler. The first sentence establishes the action and parameter format, and the second lists the return values. Every word earns its place, and the description is well front-loaded with the primary purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is sufficient for a simple one-parameter read tool with an output schema present. It conveys the resource, date format, and return content. Slight gaps remain in explaining when to use it relative to siblings and clarifying units/timezone, but the output schema likely covers return structure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the schema only provides 'date' as a string type. The description compensates by specifying the exact format ('YYYY-MM-DD'), which is the crucial semantic detail. It does not explain date range constraints or timezone context, but for a single parameter it provides the most important missing meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb ('Get'), a specific resource ('sleep data'), and the required date format ('YYYY-MM-DD'). It names the exact content returned (duration, stages, score), making the tool's purpose unambiguous and distinct from health-related siblings such as get_hrv or get_daily_summary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by naming the resource and date, but there is no explicit guidance on when to choose this tool over alternatives or when not to use it. With 29 sibling tools covering different health metrics, some exclusion or alternative would improve selection, but the resource-specific name and description provide enough context for an agent to infer applicability.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_spo2A
Get SpO2 (blood oxygen) data for a date (YYYY-MM-DD). Returns blood oxygen saturation readings.
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry behavioral disclosure, but it only restates that the tool 'returns blood oxygen saturation readings.' It does not mention units, data availability behavior, timezone handling, or any other operational detail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The first sentence is front-loaded and informative. The second sentence is somewhat redundant with 'SpO2 (blood oxygen)', but the overall description is compact and easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter getter with an output schema present, the description covers the essential calling context. Minor omissions such as units and empty-data behavior are not critical given the output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but the description supplies the key missing meaning by specifying the date format (YYYY-MM-DD). The single required date parameter is therefore adequately explained beyond the schema's generic string type.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific action ('Get') and resource ('SpO2 (blood oxygen) data') and adds the range ('for a date'), making the tool's function unmistakable. The resource is distinct from sibling health-metric tools such as get_heart_rate and get_respiration.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'for a date (YYYY-MM-DD)' gives clear context for when this tool applies—retrieving SpO2 for a single date. It does not explicitly name alternatives or exclusions, but the narrow scope is enough for an agent to select it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_stressA
Get all-day stress data for a date (YYYY-MM-DD). Returns stress levels throughout the day, average stress, and stress duration breakdown.
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the disclosure burden. It reasonably implies a read-only operation and states what is returned, but it does not mention edge-case behavior such as missing data, timezone interpretation, or any access constraints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences, front-loaded with the action and resource, then a useful summary of return contents. There is no redundant or filler language.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter, simple read tool with an output schema, the description gives enough to call it correctly: the date is formatted, and the expected return categories are named. It does not add speculative caveats, which is appropriate at this complexity level.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema only says the 'date' parameter is a string; the description adds the required format 'YYYY-MM-DD', which is essential for correct invocation. With 0% schema coverage, this extra guidance meaningfully compensates for the schema's silence.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Get all-day stress data' for a date. It also names concrete outputs (stress levels, average stress, stress duration breakdown), making it clearly distinct from sibling metric tools like get_hrv, get_sleep, or get_body_battery.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The use case is clear: call this when you need all-day stress data for a specific date. It does not explicitly state exclusions or name alternative tools, but the siblings cover different health metrics, so there is little ambiguity about when to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_training_readinessA
Get training readiness score for a date (YYYY-MM-DD). Returns readiness score, HRV status, sleep quality, recovery time, and training load.
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral disclosure burden. It helpfully lists what it returns: readiness score, HRV status, sleep quality, recovery time, and training load, making clear this is a read-oriented tool. It does not cover edge cases, error behavior, or rate limits, but for a simple getter the returned-fields list adds meaningful transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences with no redundant wording. The core purpose is front-loaded, and the return fields are listed in an efficient second sentence.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given an output schema is present and there is only one simple parameter, the description covers the essential elements: purpose, date format, and returned metrics. The only notable gap is the lack of guidance on how this differs from closely related training-status tools, but this does not block correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description explicitly provides the date format 'YYYY-MM-DD' and ties the parameter to the tool's purpose. Since there is only one parameter, this sufficiently compensates for the otherwise empty schema; additional validation details like ranges or timezone behavior would be a bonus.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('get') and resource ('training readiness score') with a clear temporal qualifier ('for a date'). It distinguishes this tool from similar health metric tools like get_training_status by naming the exact object being retrieved.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'for a date (YYYY-MM-DD)' implies a point-in-time lookup rather than a recent-data or list retrieval, which provides some usage context. However, there is no explicit guidance on when to choose this over related siblings like get_training_status or get_daily_summary, and no exclusions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_training_statusB
Get training status for a date (YYYY-MM-DD). Returns training load, training effect, and training status classification.
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the return fields and implies a read-only operation, but it does not explain behavior when no data exists for the date, potential errors, or any rate/authorization considerations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences, front-loads the core action and resource, and avoids any waste. Every sentence adds useful information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given 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 an output schema, the description covers what is needed to invoke it: the date format and what will be returned. It lacks usage context relative to sibling tools, but that gap is already captured under usage guidelines.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must add meaning. It adds the YYYY-MM-DD format and ties the parameter to a specific date, which goes beyond the schema's bare 'date' string. For a single simple parameter this is adequate, though not rich.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Get' and names the resource 'training status for a date', and it lists the returned contents (training load, training effect, classification). This distinguishes it from most sibling getters, though it does not explicitly contrast with get_training_readiness.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided about when to use this tool versus siblings like get_training_readiness or get_daily_summary. The date format hint is useful but does not help an agent choose among alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_vo2maxA
Get VO2 Max / max metrics data for a date (YYYY-MM-DD). Returns estimated VO2 Max for running and cycling.
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It discloses that values are estimates and that it covers running and cycling, which is useful. It does not mention missing-data behavior, units, or any caveats beyond 'estimated'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler; the action, format, and output contents are front-loaded. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter getter with an output schema, this description covers invocation format and expected content. Nothing needed to make the call is missing; return-value details are left to the output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but the description supplies the required date format '(YYYY-MM-DD)', which is exactly the kind of information the schema omits. For the sole parameter, this is sufficient semantic guidance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb, resource, and time scope: 'Get VO2 Max / max metrics data for a date'. The second sentence narrows the output to estimated running and cycling VO2 Max, making the resource clear. It does not explicitly contrast with the many sibling metric tools, but VO2 Max is unambiguous among them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The intended use is implied: call it when you need VO2 Max for a specific date. No exclusions or alternative tool recommendations are provided, and with many sibling tools some routing guidance would have helped.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_weightA
Get weight/weigh-in data for a date range (YYYY-MM-DD). Returns weight measurements, BMI, body fat percentage if available.
| Name | Required | Description | Default |
|---|---|---|---|
| end_date | No | ||
| start_date | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must convey behavioral expectations on its own. It discloses that BMI and body fat percentage are returned only 'if available,' which is a useful edge-case signal. However, it does not explain what happens when end_date is omitted, how inclusive the range is, units, timezone, or empty-result behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences with no superfluous content. The main scope ('weight/weigh-in data for a date range') is front-loaded, and the return highlights are placed second.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter read tool with an output schema, the description is reasonably complete. It still leaves ambiguity around optional end_date semantics and sibling differentiation, so it is adequate but not thorough.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has no property descriptions, so the description carries the burden of explaining the parameters. It specifies the YYYY-MM-DD format and that the request is date-bounded, which helps for start_date and end_date. It does not explain end_date's optional/default behavior or whether the range is inclusive.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the operation (get), the resource (weight/weigh-in data), and the scope (date range with YYYY-MM-DD format). It also names the returned metrics, making the tool's purpose unambiguous. It does not explicitly distinguish itself from get_body_composition, but the weight focus is distinct enough.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this tool is for retrieving weight data over a date range, but it gives no explicit when-to-use/when-not-to-use guidance or references to alternatives. Given the large sibling list, an agent has to infer this is the right tool for weight queries and not for body composition or daily summary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
29 tool updates
v0.1.0- First observed
download_activity_csv - First observed
download_activity_fit - First observed
download_activity_gpx - First observed
download_activity_kml - First observed
download_activity_tcx - First observed
get_activities_by_date - First observed
get_activity_details - First observed
get_activity_splits - First observed
get_body_battery - First observed
get_body_composition - First observed
get_daily_steps - First observed
get_daily_summary - First observed
get_devices - First observed
get_endurance_score - First observed
get_goals - First observed
get_heart_rate - First observed
get_hrv - First observed
get_hydration - First observed
get_personal_records - First observed
get_race_predictions - First observed
get_recent_activities - First observed
get_respiration - First observed
get_sleep - First observed
get_spo2 - First observed
get_stress - First observed
get_training_readiness - First observed
get_training_status - First observed
get_vo2max - First observed
get_weight
TDQS
Most tools map to distinct Garmin data categories, but a few boundaries are fuzzy: get_weight and get_body_composition overlap on weight and body fat, and get_daily_summary overlaps with get_daily_steps and get_heart_rate on daily metrics. Still, an agent can usually select the right tool from the descriptions.
The naming follows a consistent verb_noun pattern: get_* for data retrieval and download_activity_* for file exports. Plural/singular variations are minor and do not affect predictability.
29 tools is excessive for a Garmin data server. Many could be consolidated, such as the five download_activity_format tools into a single exporter, and get_weight/get_body_composition into one body metrics tool. The broad scope helps justify the number, but the surface still feels over-split.
The server covers a comprehensive read-only Garmin domain: activities, daily summaries, body metrics, health metrics, training readiness, sleep, stress, devices, and file downloads. Minor gaps exist, such as lacking date-range endpoints for some metrics (e.g., sleep, stress) and no way to search activities beyond recent/date-based retrieval.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Garmin data in Claude & ChatGPT via the Garmin Health API. OAuth sign-in, no password sharing.
MCP server for Withings health data — sleep, activity, heart, and body metrics.
MCP server for Argo RPG Platform — connects AI assistants to campaign data via OAuth2
- SomviaOAuthapp.somvia
Private Apple Health metrics and workout detail for ChatGPT, Claude, and any MCP client.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceMCP server that connects Garmin Connect data to Claude, enabling training analysis, recovery checks, and personalized plans based on real metrics like HRV, training load, and activities.14MIT
- AlicenseNot gradedqualityCmaintenanceMCP server to interact with Garmin Connect, enabling retrieval of health, activity, and device data through natural language.63MIT
- AlicenseAqualityBmaintenanceUnofficial MCP server bridging Garmin Connect to MCP clients and ChatGPT, providing tools to access health data, activities, and trends via a self-hosted API.11MIT
- AlicenseNot gradedqualityCmaintenanceA local MCP server that exposes your Garmin Connect data—sleep, HRV, training readiness, workouts, and more—to any MCP-compatible AI assistant. Runs entirely on your machine and keeps your Garmin credentials private.MIT
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/JohanBellander/GarminMCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server