Skip to main content
Glama
flawas

Garmin Connect MCP Server

by flawas

Garmin Connect MCP Server

Ein Model Context Protocol Server für deine eigenen Garmin-Connect-Daten über die Garmin Connect Personal API: Aktivitäten samt FIT-Verläufen, Schlaf, HRV, Body Battery, Stress, Gewicht und Tageswerte. Der Zugriff ist read-only.

Dazu gehört ein optionales Claude-Plugin mit Analyse-Skills für Tagesform, Wochenreview, Rennen, Laufbelastung, Unihockey, Ironman sowie Ultra und Trail.

Tools

Tool

Inhalt

Standard-Zeitraum

profile

Profil-Einstellungen und HF-Zonen

–

daily_summaries

Schritte, Kalorien, Ruhepuls, Stress, Body Battery, Intensitätsminuten

7 Tage

sleep_summaries

Schlaf pro Nacht inkl. Score

14 Tage

hrv_summaries

HRV pro Nacht, Baseline, Status

28 Tage

body_battery

Body Battery pro Tag

7 Tage

stress, steps

Tageswerte

28 Tage

weight

Gewicht / Körperzusammensetzung

90 Tage

wellness_activity_summaries

Wellness-Aktivität pro Tag

7 Tage

sleep_day, hrv_day, heart_rate_day

Detail eines Tages

heute

fitness_age, spo2_day

Fitness-Alter, SpO2

heute

list_activities

Aktivitäten kompakt (Distanz, Pace, HF, Trainingseffekt, Load)

30 Tage

activity_details, activity_workouts

Volle Details einer Aktivität

–

activity_streams

FIT-Datei → Session, Laps, Verlauf (HF, Pace, Leistung, Kadenz, Höhe)

–

raw_get

Beliebiger GET-Endpoint aus der Swagger-Doku

–

Lange Zeitreihen werden standardmässig gekürzt, damit der Chat-Kontext nicht vollläuft. Mit include_timeseries=true bekommst du die Rohdaten.

API-Key

Erstelle unter https://connect.garmin.com/app/settings/personalApiToken einen Key mit Create Key. Er wird nur einmal angezeigt und läuft nach der gewählten Dauer ab (30 Tage bis 1 Jahr). Der Server liest ihn aus der Umgebungsvariable GARMIN_PERSONAL_API_KEY.

Related MCP server: Garmin MCP Server

Installation

Claude Desktop (Extension, empfohlen)

  1. Lade garmin-connect.mcpb aus dem neuesten Release herunter und doppelklicke die Datei.

  2. Trag den API-Key im Konfigurationsdialog ein. Er ist danach unter Einstellungen → Extensions → Garmin Connect sichtbar und änderbar.

Python und die Abhängigkeiten installiert Claude Desktop selbst.

Mit uvx (jeder MCP-Client)

Voraussetzung ist uv. Das Paket wird beim Start automatisch von PyPI geladen.

{
  "mcpServers": {
    "garmin": {
      "command": "uvx",
      "args": ["mcp-server-garmin-connect"],
      "env": { "GARMIN_PERSONAL_API_KEY": "<dein-key>" }
    }
  }
}

In Claude Code genügt ein Befehl:

claude mcp add garmin -e GARMIN_PERSONAL_API_KEY=<dein-key> -- uvx mcp-server-garmin-connect

Mit pip

pip install mcp-server-garmin-connect
GARMIN_PERSONAL_API_KEY=<dein-key> mcp-server-garmin-connect

Mit Docker

docker build -t mcp-server-garmin-connect .
docker run -i --rm -e GARMIN_PERSONAL_API_KEY=<dein-key> mcp-server-garmin-connect

Skills (optional, Claude)

Füge den Plugin-Marketplace https://github.com/flawas/garmin-mcp hinzu und installiere das Plugin garmin-connect. In Claude Code geht das mit /plugin install garmin-connect --marketplace flawas/garmin-mcp.

Skill

Wofür

morning-check

Tagesform-Ampel aus HRV, Schlaf, Ruhepuls und Body Battery mit Empfehlung für heute

weekly-review

Wochenbericht nach Sportart, optional als Obsidian-Notiz

race-readiness

Taper- und Formcheck, realistische Zielzeit, Pacing-Plan

race-debrief

Rennanalyse: Splits, Einbruch, HF-Drift, Kadenz, Lehren

running-load

Laufumfang, Steigerungsrate, ACWR, Verletzungsrisiko

floorball-load

Unihockey (bei Garmin als Feldhockey erfasst) als Intervallbelastung einordnen

ironman-build

Triathlon-Aufbau: Verteilung, Langeinheiten, Koppeltrainings, Lücken

ultra-trail

Time on Feet, Höhenmeter, Kilometer-Effort, Ermüdungsresistenz

training-analysis

Allgemeine Analysen und Basis für alle anderen Skills

Konfiguration

Variable

Pflicht

Bedeutung

GARMIN_PERSONAL_API_KEY

ja

Personal API Key

GARMIN_MCP_DATA_DIR

nein

Ordner für Token-Cache und FIT-Downloads. Standard ist ~/Library/Caches/garmin-connect-mcp auf macOS und ~/.cache/garmin-connect-mcp sonst

Debugging

Mit dem MCP Inspector:

npx @modelcontextprotocol/inspector uvx mcp-server-garmin-connect
# aus dem Repo heraus:
npx @modelcontextprotocol/inspector uv run mcp-server-garmin-connect

Meldung

Lösung

Garmin Personal API Key fehlt oder ist ungültig

Neuen Key erstellen und in der Extension bzw. in GARMIN_PERSONAL_API_KEY ersetzen

Garmin ist nicht erreichbar

Internetverbindung, VPN oder Proxy prüfen

Entwicklung

uv sync                         # Umgebung inkl. Dev-Tools
uv run pytest                   # Tests
uv run ruff check . && uv run ruff format --check .
uv run pyright                  # Typen
npx @anthropic-ai/mcpb pack . garmin-connect.mcpb   # Desktop Extension lokal bauen

Aufbau des Repos:

src/mcp_server_garmin_connect/   MCP-Server (Python-Paket, Einstiegspunkt mcp-server-garmin-connect)
tests/                           pytest
server.json                      Eintrag für die MCP Registry
manifest.json, .mcpbignore       Claude Desktop Extension (.mcpb)
.claude-plugin/, skills/         Claude-Plugin mit Analyse-Skills
.github/workflows/               CI und Release

Release

  1. Die Version in pyproject.toml, manifest.json und server.json (zweimal: oben und im PyPI-Paket) gleich setzen. Die CI prüft das. Bei Skill-Änderungen zusätzlich .claude-plugin/plugin.json erhöhen.

  2. git tag v<version> && git push origin v<version>

  3. Der Release-Workflow testet, baut, veröffentlicht auf PyPI, erstellt das GitHub-Release mit der .mcpb, trägt deren SHA-256 in server.json ein und veröffentlicht in der MCP Registry.

Vor dem ersten Release ist eine einmalige Einrichtung nötig:

  • PyPI Trusted Publishing: Auf https://pypi.org/manage/account/publishing/ einen pending publisher anlegen mit PyPI-Projekt mcp-server-garmin-connect, Owner flawas, Repository garmin-mcp, Workflow release.yml und Environment pypi.

  • GitHub: In den Repo-Einstellungen unter Environments das Environment pypi anlegen.

  • Für die MCP Registry ist nichts einzurichten. Die Anmeldung läuft über GitHub OIDC für den Namensraum io.github.flawas.

Hinweis

Die Garmin Connect Personal API ist für den persönlichen Zugriff auf die eigenen Daten gedacht, nicht für kommerzielle Anwendungen mit mehreren Nutzern. Dieses Projekt steht in keiner Verbindung zu Garmin.

Lizenz

MIT, siehe LICENSE.

Available Tools

19 tools
activity_detailsC

Vollständige Zusammenfassung einer Aktivität (Splits-Summary, Trainingseffekt, Gerät usw.).

NameRequiredDescriptionDefault
activity_idYes

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description carries the full burden, yet it only hints at behavior by calling itself a 'Zusammenfassung' (implying a read). It never states read-only nature, permission needs, error behavior for an invalid activity_id, or response characteristics—well short of what a mutation/retrieval tool with zero annotation coverage requires.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single efficient sentence that front-loads the core purpose with no wasted text. Its brevity borders on being too thin, but structurally it is clean.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter tool with no output schema or annotations, the description conveys the broad return content but omits how to supply activity_id and any operational caveats. Adequate but with clear gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single activity_id parameter has 0% schema description coverage, and the description does not explain its format or where to obtain it (e.g., from list_activities). 'einer Aktivität' only vaguely implies the parameter's subject without adding usable semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a clear resource (a single activity) and enumerates the returned content (splits summary, training effect, device), so the agent knows it retrieves a detailed activity summary. However, it does not distinguish itself from siblings like activity_workouts or activity_streams, which also pull activity-level data.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this versus list_activities, activity_workouts, or activity_streams, nor any prerequisites or exclusions. The agent must infer usage from the tool name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

activity_streamsA

Lädt die Original-FIT-Datei und liefert Session-Werte, alle Laps und einen auf resolution_seconds heruntergerechneten Verlauf (HF, Pace/Speed, Leistung, Kadenz, Höhe). Ideal für Intervall-, Pacing-, Drift- und Zonen-Analysen. Datei wird lokal gecacht.

NameRequiredDescriptionDefault
activity_idYes
resolution_secondsNo

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It usefully discloses that the original FIT file is fetched and cached locally, plus what the response contains, but says nothing about cost/latency of the download, response size for long activities, or error behavior when a FIT file is missing.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences with no filler: what is returned, the downsampling behavior, the analysis use cases, and the caching note. Front-loaded and efficient, though the caching remark could have been folded in more tightly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, and the description does a reasonable job of enumerating the return payload (session values, laps, streams with channel list), which is the main thing an agent needs. Units, stream field naming, and volume for long activities remain unspecified but are secondary.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% — both parameters are bare titles. The description does explain the key one, resolution_seconds, as the downsampling interval and implies what gets downsampled, but gives no default, units, or valid range, and never mentions activity_id at all.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a concrete action: it loads the original FIT file and returns session values, all laps, and a downsampled stream with named channels (HR, pace/speed, power, cadence, altitude). That is enough to separate it from summary-level siblings like daily_summaries or activity_details, though no sibling is named explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Ideal für Intervall-, Pacing-, Drift- und Zonen-Analysen" gives real use-case guidance for picking this over a plain activity summary. However, it never says when NOT to use it, nor points to the concrete alternative (e.g. activity_details for a lighter call), so the agent must infer the boundary itself.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

activity_workoutsC

Geplante/strukturierte Workouts, die mit einer Aktivität verknüpft sind.

NameRequiredDescriptionDefault
activity_idYes

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden and discloses almost nothing: it does not state that this is a read operation, whether results can be empty, whether pagination applies, or what permissions are needed. Only the linkage to an activity is conveyed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is a single short sentence with no waste, but the brevity comes from under-specification rather than discipline — nothing is front-loaded because nothing beyond the resource noun is stated.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter retrieval tool with no annotations and no output schema, the description should at minimum say it returns a collection of planned workouts for a given activity. It leaves the operation, return shape, and parameter meaning for the agent to guess.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% and the single parameter activity_id has no description in the schema. The phrase 'mit einer Aktivität verknüpft' hints that the parameter is an activity reference, but gives no format, source, or whether it is a Garmin activity ID versus an internal one.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description identifies the resource (geplante/strukturierte Workouts) and its scope (linked to an activity), but omits the operation verb — an agent cannot tell whether this lists, fetches, or counts workouts. It distinguishes the resource from siblings like list_activities or activity_details, but only weakly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to call this instead of siblings such as list_activities, activity_details, or activity_streams. The agent must infer usage from the name alone, with no exclusions or prerequisites stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

body_batteryB

Body Battery pro Tag (Aufladung, Verbrauch, Höchst-/Tiefstwert). Standard: letzte 7 Tage.

NameRequiredDescriptionDefault
end_dateNo
start_dateNo

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It discloses the default date range and the returned metric categories, but does not state that the operation is read-only, how null dates are handled, or any data availability constraints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two compact clauses with zero waste, and the default range is front-loaded as the key operational detail. Every phrase contributes useful information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and no annotations, the description must carry all context. It covers the metric content and default range adequately, but omits date formats, handling of null parameters, and differentiation from similar summary tools, leaving real gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

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 only notes the default range and does not explain the expected date format, that both parameters are optional, or how start_date and end_date interact, leaving agents to infer parameter behavior.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific resource (Body Battery) and the metrics returned: charging, consumption, highest/lowest value. It is clear what the tool retrieves, though it does not explicitly differentiate itself from sibling summary tools such as daily_summaries.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The default of the last 7 days implies usage for recent Body Battery data, but there is no explicit guidance on when to use this tool versus alternatives, no prerequisites, and no stated exclusions. Usage is implied rather than directed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

daily_summariesB

Tageszusammenfassungen pro Tag: Schritte, Kalorien, Ruhepuls, Stress, Body Battery, Intensitätsminuten, Etagen usw. Standard: letzte 7 Tage.

NameRequiredDescriptionDefault
end_dateNo
start_dateNo

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden; it does disclose the default time window (last 7 days) and that data is aggregated per day, which is useful behavioral context. It does not state date format expectations, whether data is returned newest-first, or any rate/auth constraints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two compact sentences: metrics first, then the default window. Front-loaded and free of padding, though it could be slightly tighter given the list of metrics is long.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, no annotations, and 0% schema description coverage, the description should ideally document the date format and return shape; it covers the metric list and default range but leaves those two gaps. Adequate but not complete for a data-retrieval tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% and the two date parameters are plain nullable strings with no format documented. The description partially compensates by stating the default range is the last 7 days, but it never specifies the expected date string format (e.g. ISO YYYY-MM-DD) or the start/end interaction, leaving a real gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific resource (daily summaries per day) and enumerates the metrics returned (steps, calories, resting heart rate, stress, Body Battery, intensity minutes, floors), which makes the tool's output recognizable. It doesn't explicitly differentiate itself from siblings like steps, stress or body_battery, which return overlapping single-metric views.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Standard: letzte 7 Tage' gives the default behavior, which implies a sensible no-argument usage, but there is no guidance on when to prefer this aggregate over the single-metric siblings such as steps or body_battery, nor any exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fitness_ageD

Fitness-Alter und beeinflussende Faktoren.

NameRequiredDescriptionDefault
dateNo

TDQS

D1.5/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry the full behavioral burden. It says nothing about read-only behavior, return format, date semantics, or any other trait an agent would need before invoking it.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence fragment rather than a structured, front-loaded explanation. It is short, but the brevity reflects under-specification rather than efficient communication.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no annotations, no output schema, and an undocumented parameter, the description is far too sparse. It does not explain what the tool returns, how `date` affects results, or how fitness age is derived from the other available metrics.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The sole parameter `date` has 0% schema description coverage and is not mentioned in the description at all. The agent cannot tell whether it selects a specific day's fitness age, an aggregation period, or is simply optional with a default.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description is a German noun phrase ('Fitness age and influencing factors') that largely restates the tool name. It does not state what the tool does, such as computes, retrieves, or explains fitness age, and does not distinguish it from sibling metric tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool, when not to use it, or how it relates to alternatives like profile or daily_summaries. The optional date parameter is not mentioned, leaving selection entirely to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

heart_rate_dayC

Herzfrequenz eines Tages (Ruhepuls, Min/Max; Verlauf nur mit include_timeseries=true).

NameRequiredDescriptionDefault
dateNo
include_timeseriesNo

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden. It mentions return contents and the timeseries condition, but does not state read-only behavior, date/default handling, timezone assumptions, error behavior, or output shape.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The definition is a single compact sentence with no wasted text, and the key conditional behavior is front-loaded in the parenthetical.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with two undocumented parameters, no annotations, and no output schema, the description is too sparse. It covers the main purpose and one parameter condition but leaves date semantics, safety profile, and return structure insufficiently specified.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% for both parameters. The description explains include_timeseries semantics, which is valuable, but the date parameter remains completely undocumented: no format, default meaning, or timezone behavior is given.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the resource as one day's heart rate and names the returned metrics (resting pulse, min/max). It is distinguishable from siblings like hrv_day, though it does not explicitly contrast itself with them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives one useful parameter rule: timeseries is included only when include_timeseries=true. However, it does not say when to use this tool instead of alternatives such as hrv_day or daily_summaries, nor does it clarify expected use cases.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hrv_dayB

HRV einer Nacht mit Einzelmessungen (Zeitreihe nur mit include_timeseries=true).

NameRequiredDescriptionDefault
dateNo
include_timeseriesNo

TDQS

B3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It does disclose one important behavioral trait — time series data is only returned when include_timeseries=true — but says nothing about read-only nature, date resolution, night boundaries, or output shape.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single short sentence with no wasted words, and the conditional timeseries constraint is front-loaded in parentheses.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no annotations, no output schema, and zero schema description coverage, the description is too thin for a data-retrieval tool. Key details — date semantics, what a 'night' window covers, and what individual measurements look like — are missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

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 both parameters. It explains include_timeseries behavior (time series only when true), but the optional date parameter and its null default are never addressed, leaving the agent to guess what date=null means.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource: it returns HRV for one night including individual measurements, which implicitly separates it from the aggregate hrv_summaries sibling. It does not explicitly name siblings or clarify the 'day' vs 'night' naming mismatch, so it falls 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.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no when-to-use or when-not guidance and never references alternatives such as hrv_summaries or sleep_day. Usage is only implied by the resource name and the timeseries note.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hrv_summariesA

HRV pro Nacht (Mittelwert, 7-Tage-Schnitt, Baseline, Status). Standard: letzte 28 Tage.

NameRequiredDescriptionDefault
end_dateNo
start_dateNo

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden; it does disclose the returned metric set and the default 28-day window, which is useful context. However, it never states the operation is read-only, gives no hints on volume/rate limits, and says nothing about how missing data or sparse nights are handled.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, zero waste, with the resource and returned metrics front-loaded and the default behavior immediately after. Nothing to trim.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, but the description enumerates the returned metrics well enough for an agent to know what it gets. The remaining gap is the undocumented date format and boundary behavior for the two free-form string parameters.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate; it partially does by explaining that the default window is the last 28 days when start_date/end_date are null. It adds no meaning about date format (ISO vs epoch), timezone, or what happens when only one bound is supplied.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific resource and granularity ('HRV pro Nacht') plus the metrics returned (mean, 7-day rolling average, baseline, status), which tells an agent this is an aggregated nightly HRV series. It does not explicitly distinguish itself from the sibling hrv_day, which likely returns single-day detail.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Standard: letzte 28 Tage' implies the no-argument usage but gives no explicit when-to-use or when-not-to-use guidance. The alternative hrv_day is never mentioned, so the agent must infer the choice between summary and day-level tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_activitiesA

Aktivitäten (kompakt) im Zeitraum, neueste zuerst. Standard: letzte 30 Tage. activity_type z.B. running, cycling, trail_running, lap_swimming, strength_training. Für mehr als limit Einträge mit start paginieren.

NameRequiredDescriptionDefault
limitNo
startNo
end_dateNo
start_dateNo
activity_typeNo

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It discloses ordering (newest first), default time window, compactness, and pagination behavior, but does not mention return format, authentication, rate limits, or error behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with the core behavior, then defaults, example values, and pagination guidance. Every sentence adds useful information with no repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Adequate for a listing tool but incomplete given five optional parameters, no annotations, and no output schema. It should specify date formats, timezone/boundary behavior, maximum limit, and what fields a compact activity entry includes.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 five parameters. It explains `activity_type` with examples and clarifies `limit`/`start` pagination plus the default date range, but leaves `start_date` and `end_date` formats and boundary semantics undocumented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific resource and scope: compact activities in a time period, newest first, default last 30 days. It is clear what the tool returns at a high level, but it does not explicitly distinguish it from close siblings such as activity_details or activity_workouts.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides some operational guidance: default range is last 30 days and paginate with `start` when exceeding `limit`. It does not say when to choose this tool over siblings like activity_details, activity_workouts, or activity_streams.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

profileC

Profil-Einstellungen (Gewicht, Grösse, VO2max, Laktatschwelle, Einheiten) und Herzfrequenzzonen.

NameRequiredDescriptionDefault

No parameters

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden and does not meet it. It never states that this is a read operation, whether any authentication/user context is required, whether values are user-configured or computed, or what shape the response takes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single compact sentence with no filler, and the most descriptive fields are listed first. It is under-specified rather than bloated, and the missing verb means the key information is not front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no annotations, no output schema, and no parameters, everything an agent needs must come from the description, and it only enumerates field topics. It omits the operation type, return container, and whether heart-rate zones are editable settings or derived values.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has zero parameters, which is the baseline-4 case; there is nothing for the description to disambiguate. The field list in the description usefully hints at what the returned object contains.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names the resource content precisely (weight, height, VO2max, lactate threshold, units, heart-rate zones), which no sibling tool covers. But it is a bare noun phrase with no verb, so an agent cannot tell whether this reads, writes, or configures the profile in the current environment.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to call this versus the many data-retrieval siblings (weight, fitness_age, heart_rate_day), nor any prerequisite or exclusion. The agent must infer that this is a profile/configuration resource rather than a time-series metric.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

raw_getB

Beliebiger GET-Aufruf an die Personal API für Endpoints ohne eigenes Tool (siehe Swagger-Doku), z.B. path='/usersummary-service/stats/hydration/daily/2026-10-01/2026-10-21'.

NameRequiredDescriptionDefault
pathYes
paramsNo
include_timeseriesNo

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description carries the full burden. It conveys only that this is a GET (read-oriented) call; it says nothing about authentication/credential requirements, error behavior for invalid paths, rate limits, or how include_timeseries alters the response shape. For a generic passthrough with arbitrary user-supplied paths, that is a meaningful gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two compact sentences: the purpose first, then the example. Every element earns its place, though the parenthetical Swagger reference is a bit terse for an agent that cannot browse external docs.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no annotations, no output schema, and 0% parameter coverage across three parameters, the description should explain what `params` and `include_timeseries` do and what the response contains. It only covers the escape-hatch purpose and one example path, leaving the calling contract underspecified.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 all three parameters. It does explain `path` well by example (a relative endpoint like '/usersummary-service/...'), but `params` (query string map) and `include_timeseries` are left completely unexplained, so compensation is only partial.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource: an arbitrary GET against the Personal API for endpoints that lack a dedicated tool, backed by a concrete example path. It implicitly distinguishes itself from the sibling endpoint-specific tools, though it never names them or explicitly says 'use the specific tool when one exists.'

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear selection rule: use this for endpoints without their own tool, and points to the Swagger docs for the available paths. It lacks an explicit 'do not use for endpoints covered by siblings' statement, but the condition is strongly implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sleep_dayA

Detaillierter Schlaf einer Nacht (Phasen, Atmung, HF, HRV, Sleep Score inkl. Faktoren). date = Datum des Aufwachens. Zeitreihen nur mit include_timeseries=true.

NameRequiredDescriptionDefault
dateNo
include_timeseriesNo

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description carries the full burden. It does disclose a real behavioral trait the schema cannot: the time series are gated behind a flag. It says nothing about behavior when `date` is null, what happens if no sleep record exists, or whether the data is read-only/cached, so coverage is partial.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, parenthetical payload summary and the key semantics, nothing redundant. Front-loaded with the resource before the parameter rules.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no annotations and no output schema, the description sensibly enumerates the returned content and explains both parameters, which is enough to call it correctly. The remaining gap is the meaning of an omitted `date` and the accepted date format.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description compensates well for both parameters — notably clarifying that `date` refers to the wake-up date, a genuinely non-obvious semantic that the schema does not convey, and that include_timeseries controls time-series inclusion. It omits the date string format and the default (null) meaning, keeping it from a 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific resource and scope: detailed data for a single night's sleep, enumerating the payload (phases, respiration, HR, HRV, sleep score incl. factors). That enumeration makes it distinguishable in practice from sleep_summaries, but the description never names the sibling or contrasts the two explicitly, so it stops short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives two useful calling rules: `date` is the wake-up date, and time series are only returned with include_timeseries=true. However, there is no guidance on when to use this versus sleep_summaries, nor on what happens when `date` is omitted (both params are optional).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sleep_summariesA

Schlaf-Zusammenfassung pro Nacht (Dauer, Phasen, Sleep Score). Standard: letzte 14 Tage.

NameRequiredDescriptionDefault
end_dateNo
start_dateNo

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden; it does reveal the default window of 14 days, which is genuine behavioral context the schema's null defaults do not convey. It does not state that the operation is read-only, how large a range is permitted, or what the return structure looks like.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two compact sentences with zero filler; the content scope is front-loaded and the default-range note follows. Nothing redundant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 2-param read tool with no output schema and no annotations, the essentials are present: what is returned, per what granularity, and the default window. Remaining gaps are date formatting and sibling disambiguation rather than core invocation blockers.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and both start_date/end_date are undescribed. The description partially compensates by disclosing what happens when they are omitted (last 14 days), but it never states expected date format (ISO?) or whether the bounds are inclusive.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific resource and granularity: nightly sleep summaries with duration, phases and sleep score. The verb is implicit (a read/list) but the scope is clear. It does not distinguish itself from the sibling sleep_day, so an agent cannot tell from the description which one to pick for a single night.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'Standard: letzte 14 Tage' clause implies the tool is used as a multi-night overview when no range is given, which is useful context. However, there is no explicit when-to-use, no exclusion, and no pointer to sleep_day as the single-day alternative.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

spo2_dayC

Pulsoximetrie (SpO2) und Höhenakklimatisierung eines Tages.

NameRequiredDescriptionDefault
dateNo

TDQS

C2.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It adds only the daily scope; it does not state that this is a read operation, what data source or permissions are involved, how a missing date is handled, or what the response contains.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is a single short sentence with no wasted words, but it is under-specified rather than appropriately concise. It omits the action and key semantics an agent needs before calling.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple daily metric tool with no annotations, no output schema, and an undocumented parameter, the description should at least state retrieval behavior, date handling, and return scope. It leaves those gaps unaddressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single optional 'date' parameter has 0% schema description coverage. The phrase 'eines Tages' hints at a day selector but does not document the accepted date format, null/default behavior, or timezone semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names the health domain (SpO2) and altitude acclimatization with a daily scope, which distinguishes it from siblings like heart_rate_day or sleep_day. However, it is a noun phrase with no verb and never states that it retrieves data, so the purpose is only inferred.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool, no prerequisites, and no mention of alternatives among the many sibling health-metric tools. The agent must infer its usage entirely from the domain name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

stepsB

Schritte und Schrittziel pro Tag. Standard: letzte 28 Tage.

NameRequiredDescriptionDefault
end_dateNo
start_dateNo

TDQS

B3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden. It does disclose the useful default window (last 28 days), but says nothing about return format, units, timezone, or what happens with partial date ranges.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two terse, front-loaded clauses with no waste. It is efficient, though the extreme brevity comes at the cost of specification rather than being optimally sized for the tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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 no output schema, the description states the resource and default range, which is a reasonable core. But the 0% parameter coverage and absent return details leave gaps an agent would need to guess at.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must explain both date parameters. It only conveys the default 28-day window and gives no date format, parsing behavior, or what a single-sided range does, leaving the parameters substantially under-specified.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific resource ('Schritte und Schrittziel pro Tag' – daily steps and step goal), which is more specific than a bare name restatement. It does not, however, distinguish this tool from siblings like daily_summaries or wellness_activity_summaries that could plausibly also surface step data.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no indication of when to use this tool versus the many overlapping summary siblings. The only contextual clue ('Standard: letzte 28 Tage') describes default behavior, not usage guidance, 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.

stressB

Durchschnittlicher Stress pro Tag. Standard: letzte 28 Tage.

NameRequiredDescriptionDefault
end_dateNo
start_dateNo

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description carries the full burden. It usefully discloses the default time window, which is real behavioral context, but says nothing about read-only nature, data source, timezone, or what the averages represent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loaded with the metric and then the default. Nothing is wasted, though the structure could be slightly clearer about the date parameters.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

A read-only aggregation tool with two entirely undocumented date parameters and no output schema. The description should at minimum state accepted date formats and whether the result is a per-day series or a single average.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

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 explain the start_date/end_date parameters at all — no date format, no inclusivity. The default-window sentence gives only indirect context for the parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States the resource and metric precisely ('Durchschnittlicher Stress pro Tag'), which clearly separates it from siblings like hrv_summaries or sleep_summaries. It lacks an explicit verb, but the aggregation intent is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The default window ('letzte 28 Tage') gives useful context for calling with no arguments, but there is no guidance on when to use this versus related summary tools or on any exclusions. Usage is only implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

weightC

Gewichtsmessungen (inkl. Körperzusammensetzung, falls vorhanden). Standard: letzte 90 Tage.

NameRequiredDescriptionDefault
end_dateNo
start_dateNo

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses the default date window and the conditional inclusion of body composition, but says nothing about auth requirements, return shape, pagination, or whether the range is inclusive — thin for a data-retrieval tool with no structured safety hints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loaded with what is returned and followed by the default range — no filler. Its brevity is close to under-specification, but on this dimension it is efficient and well-ordered.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no annotations, no output schema, and 0% schema description coverage, the description should explain date formats, range semantics, and return contents. It only covers the default window and conditional body-composition field, leaving material gaps an agent must guess at.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and both parameters ('start_date', 'end_date') have only titles, no format or semantics. The description compensates only for the default (last 90 days) and never explains expected date format, inclusivity, or how the two bounds interact.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States the resource clearly ('Gewichtsmessungen' including body composition when available) and notes the default window. It implies retrieval but never uses a verb like 'retrieve/list', and does not name distinguishing boundaries versus siblings such as daily_summaries or profile, though the resource name makes the distinction reasonably obvious.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The only guidance is the default 90-day window; there is no statement of when to use this versus daily_summaries, profile, or other body-metric tools, and no exclusions or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wellness_activity_summariesC

Wellness-Aktivitätsübersicht pro Tag. Standard: letzte 7 Tage.

NameRequiredDescriptionDefault
end_dateNo
start_dateNo

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It adds the useful default of the last 7 days, but does not disclose what 'wellness activity' comprises, whether the call is read-only, or what the response shape looks like.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two short sentences with no filler, and the default range is front-loaded alongside the core purpose. It is appropriately sized and structurally efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no annotations, no output schema, and two undocumented parameters, the description is too sparse for correct invocation. It omits what the summary contains, the expected date format, and how it differs from the many sibling summary tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so start_date and end_date are undocumented in the schema. The description only implies a date range through 'Standard: letzte 7 Tage' and gives no format, boundary, or timezone semantics for either parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a resource ('Wellness-Aktivitätsübersicht pro Tag') with a per-day granularity, but 'wellness activity' is vague and does not distinguish this tool from siblings such as daily_summaries, sleep_summaries, hrv_summaries, body_battery, or stress. An agent can infer a summary tool but not exactly which wellness data it returns compared with those alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The only usage-related information is the default time range ('Standard: letzte 7 Tage'). There is no guidance on when to choose this tool over siblings like daily_summaries or activity_details, and no exclusions or prerequisites are mentioned.

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.

  1. 19 tool updatesv0.4.0
    • First observedactivity_details
    • First observedactivity_streams
    • First observedactivity_workouts
    • First observedbody_battery
    • First observeddaily_summaries
    • First observedfitness_age
    • First observedheart_rate_day
    • First observedhrv_day
    • First observedhrv_summaries
    • First observedlist_activities
    • First observedprofile
    • First observedraw_get
    • First observedsleep_day
    • First observedsleep_summaries
    • First observedspo2_day
    • First observedsteps
    • First observedstress
    • First observedweight
    • First observedwellness_activity_summaries

TDQS

C2.7/5.0

Scored across 19 tools

Disambiguation3/5

Most tools target distinct Garmin data domains, and summary-vs-detail pairs like sleep_summaries/sleep_day and hrv_summaries/hrv_day are reasonably clear. However, daily_summaries overlaps heavily with dedicated stress, steps, and body_battery tools, and wellness_activity_summaries is vague, so an agent may hesitate between aggregate and metric-specific tools.

Naming Consistency3/5

The set is mostly readable snake_case, but conventions are mixed: many tools are noun phrases (profile, daily_summaries, sleep_day), one uses a verb_noun pattern (list_activities), and raw_get is a generic fallback. There is no single predictable naming pattern, though it is not chaotic.

Tool Count4/5

Nineteen tools is slightly above the typical range, but Garmin Connect covers many distinct health and activity data domains, so most tools earn their place. The only mild bloat comes from the overlap between daily_summaries and the metric-specific summary tools.

Completeness4/5

The surface is broad for read-only health and activity data: profile, daily metrics, sleep, HRV, body battery, stress, steps, weight, SpO2, fitness age, activities, streams, and a raw GET fallback. Minor gaps remain around write operations such as creating workouts, uploading activities, or modifying profile settings beyond GET endpoints.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    B
    maintenance
    Provides read access to Garmin Connect health and training data (sleep, heart rate, stress, HRV, activities) and supports writes like creating workouts, editing activities, and exporting files.
    -
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables LLMs and MCP clients to securely access your Garmin Connect health and running data, including daily wellness metrics, activity details, training status, and race predictions, for personalized coaching and analysis.
    MIT
  • F
    license
    Not graded
    quality
    B
    maintenance
    Enables read-only access to Garmin Connect data through OAuth, including activities, sleep, HRV, body battery, training status, and scheduled TrainingPeaks workouts.
    -
  • A
    license
    C
    quality
    A
    maintenance
    Enables access to Garmin Connect fitness data through 39 fine-grained tools covering body, heart, sleep, stress, activity, steps, hydration, devices, nutrition, goals, and user profile.
    40
    1
    MIT