Skip to main content
Glama

garmin-mcp

Garmin Connect 러닝 데이터를 LLM에 제공하는 MCP(Model Context Protocol) 서버입니다.

Claude Desktop 등 MCP 클라이언트와 연동하여 러닝 훈련 분석, 계획 수립, 워크아웃 생성 등을 수행할 수 있습니다.

주요 기능

  • 러닝 활동 조회 - 최근 활동, 날짜별 조회, 상세 분석, 스플릿 데이터 (47개 필드: 페이스, 심박, 케이던스, 러닝 다이나믹스, 파워, HR존, GAP, 경사도, 스태미나, 온도 등)

  • 트레일러닝 분석 - ClimbPro 경사 구간 분석, 등급별 난이도, Grade Adjusted Pace, Run/Walk Detection, 날씨 조건

  • 주간/월간 요약 - 볼륨 트렌드, 전월 대비 비교

  • 훈련 지표 - VO2max, 훈련 상태, 훈련 준비도, 레이스 예측, 젖산역치

  • 심박/HRV - 일간 심박, 심박변이도, 활동별 심박존 분포

  • 웰니스 - 수면, 스트레스, 바디배터리, SpO2

  • 개인 기록/목표 - PR, 피트니스 목표

  • 워크아웃 생성 - 시간/거리 기반 인터벌, 템포 등 구조화된 워크아웃을 Garmin 워치에 전송 (페이스/심박/케이던스/파워 타겟)

  • 러닝화 관리 - 신발별 누적 거리 + 마모율 추적

  • 개인정보 보호 - 모든 API 응답에서 PII(소유자 이름, 프로필 ID, GPS 좌표) 자동 필터링

Related MCP server: Garmin MCP Lite

요구 사항

  • Python 3.10+

  • uv 패키지 매니저

  • Garmin Connect 계정

설치

git clone https://github.com/leewnsdud/garmin-connect-mcp.git
cd garmin-connect-mcp
uv sync

인증

최초 1회 인증이 필요합니다.

uv run python scripts/auth.py

이메일, 비밀번호를 입력하면 OAuth 토큰이 ~/.garminconnect/에 저장됩니다. MFA 사용 시 코드 입력 프롬프트가 나타납니다.

토큰이 만료되면 다시 실행하거나, .env 파일에 자격증명을 설정하면 자동 갱신됩니다.

Claude Desktop 연동

~/Library/Application Support/Claude/claude_desktop_config.json에 추가:

{
  "mcpServers": {
    "garmin-mcp": {
      "command": "/Users/<username>/.local/bin/uv",
      "args": [
        "--directory",
        "/path/to/garmin-mcp",
        "run",
        "garmin-mcp"
      ]
    }
  }
}

uv의 전체 경로를 사용해야 합니다. which uv로 확인하세요.

설정 후 Claude Desktop을 재시작하면 도구가 활성화됩니다.

환경 변수 (선택)

.env.example을 참고하여 .env 파일을 생성합니다.

변수

설명

기본값

GARMIN_EMAIL

Garmin Connect 이메일

-

GARMIN_PASSWORD

Garmin Connect 비밀번호

-

GARMIN_TOKEN_DIR

토큰 저장 경로

~/.garminconnect

GARMINTOKENS

Base64 인코딩 토큰 (CI/Docker용)

-

제공 도구 (24개)

Activities

도구

설명

주요 파라미터

get_recent_activities

최근 러닝 활동 목록 (GAP, RWD 포함)

count (기본 20, 최대 100)

get_activities_by_date

날짜 범위로 러닝 활동 조회

start_date, end_date

get_activity_detail

활동 상세 정보 (스태미나, 임팩트 로드 포함)

activity_id

get_activity_splits

km별 스플릿 데이터

activity_id

get_activity_weather

활동 중 날씨 조건 (온도, 습도, 풍속)

activity_id

get_activity_typed_splits

ClimbPro 경사 구간 분석 (등급, GAP)

activity_id

Summary

도구

설명

주요 파라미터

get_weekly_running_summary

주간 러닝 요약

end_date, weeks (최대 12)

get_monthly_running_summary

월간 러닝 요약 + 전월 비교

year, month

Training

도구

설명

주요 파라미터

get_training_status

훈련 상태

date

get_training_readiness

훈련 준비도 점수

date

get_vo2max_and_fitness

VO2max + 피트니스 나이

date

get_race_predictions

5K/10K/하프/풀 예상 기록

없음

get_lactate_threshold

젖산역치 심박/페이스

start_date, end_date

Heart Rate

도구

설명

주요 파라미터

get_heart_rate_data

일간 심박 데이터

date

get_hrv_data

심박변이도 (HRV)

date

get_activity_hr_zones

활동별 심박존 분포

activity_id

Wellness

도구

설명

주요 파라미터

get_sleep_data

수면 데이터

date

get_daily_wellness

스트레스/바디배터리/SpO2/호흡수

date

get_weekly_wellness_summary

주간 웰니스 트렌드

end_date, weeks (최대 4)

Records & Goals

도구

설명

주요 파라미터

get_personal_records

개인 기록 (1K~마라톤)

없음

get_goals

피트니스 목표

status (active/completed/all)

Workout

도구

설명

주요 파라미터

create_running_workout

워크아웃 생성 및 Garmin에 업로드 (시간/거리 기반, 페이스/심박/케이던스/파워 타겟)

name, steps, description

get_workouts

저장된 워크아웃 목록

count (기본 20, 최대 100)

Gear

도구

설명

주요 파라미터

get_running_gear

러닝화 목록 + 누적 거리 + 마모율

없음

워크아웃 생성 가이드

create_running_workout으로 구조화된 러닝 워크아웃을 생성하고 Garmin 워치에 동기화할 수 있습니다.

Step 타입

타입

설명

warmup

워밍업

interval

인터벌 (고강도)

recovery

회복 조깅

rest

완전 휴식 (서서 쉬기)

cooldown

쿨다운

repeat

반복 그룹

종료 조건 (Step 기간)

필드

타입

설명

예시

duration_seconds

int

시간 기반

"duration_seconds": 300 (5분)

distance_meters

int

거리 기반

"distance_meters": 1000 (1km)

하나의 워크아웃에서 시간/거리 기반 step을 혼합 사용할 수 있습니다.

Target 타입

타입

값 형식

예시

pace

min:sec/km

"min": "4:30", "max": "4:50"

heart_rate

bpm

"min": 140, "max": 155

cadence

spm

"min": 170, "max": 185

power

watts

"min": 280, "max": 320

옵션

  • 워크아웃 메모: description 파라미터로 전체 설명 추가

  • Step 메모: 각 step에 "description": "메모" 추가

  • 마지막 회복 건너뛰기: repeat step에 "skip_last_rest": true 추가

예시: 4x1km 거리 기반 인터벌

{
  "name": "4x1km Intervals @4:30",
  "description": "10K 레이스 대비 VO2max 인터벌",
  "steps": [
    {
      "type": "warmup",
      "duration_seconds": 600,
      "description": "가볍게 조깅"
    },
    {
      "type": "repeat",
      "count": 4,
      "skip_last_rest": true,
      "steps": [
        {
          "type": "interval",
          "distance_meters": 1000,
          "target": { "type": "pace", "min": "4:20", "max": "4:40" },
          "description": "목표 페이스 유지"
        },
        {
          "type": "recovery",
          "duration_seconds": 120,
          "description": "천천히 조깅으로 회복"
        }
      ]
    },
    {
      "type": "cooldown",
      "duration_seconds": 600,
      "description": "마무리 조깅"
    }
  ]
}

상세 워크아웃 생성 가이드는 AGENTS.md를, 전체 도구 요청/응답 규격은 TOOL_SPEC.md를 참조하세요.

활용 예시

Claude Desktop에서 다음과 같이 활용할 수 있습니다:

  • "이번 주 러닝 요약해줘"

  • "최근 3개월 주간 볼륨 트렌드 분석해줘"

  • "내 VO2max 기준으로 Jack Daniels VDOT 훈련 페이스 계산해줘"

  • "최근 활동들의 심박존 분포를 보고 80/20 비율을 지키고 있는지 확인해줘"

  • "내일 4x1km 인터벌 워크아웃 만들어줘"

  • "내 러닝화 중 교체 시기가 된 것이 있는지 확인해줘"

  • "수면과 훈련 준비도의 상관관계를 분석해줘"

  • "최근 트레일러닝의 경사 구간별 성과를 분석해줘"

  • "트레일러닝에서 걷기/달리기 비율을 확인해줘"

지원하는 러닝 훈련 방법론

방법론

활용 데이터

Jack Daniels VDOT

VO2max, PR, 레이스 예측

Norwegian Double Threshold

젖산역치, 심박존

80/20 Training

심박존 분포

Hanson's Method

주간/월간 볼륨, 페이스 트렌드

Pfitzinger

주간 볼륨, 장거리 런 분석

트레일/울트라 분석

ClimbPro 경사 구간, 날씨, RWD, GAP

개발

# 코드 수정 후 패키지 재설치
uv sync --reinstall-package garmin-mcp

# Claude Desktop 재시작으로 MCP 서버 반영

개인정보 보호

모든 Garmin API 응답에서 다음 개인정보 필드가 자동으로 제거됩니다:

  • 소유자 정보: ownerId, ownerFullName, ownerDisplayName, userId, 프로필 이미지 URL

  • 프로필 ID: userProfilePK, userProfileId, profileId, profileNumber

  • 사용자 정보: displayName, fullName, userPro, userRoles

  • GPS 좌표: startLatitude, startLongitude, endLatitude, endLongitude

이 필터링은 src/garmin_mcp/sanitize.pystrip_pii() 함수를 통해 재귀적으로 처리됩니다.

기술 스택

라이선스

MIT

Available Tools

43 tools
analyze_heart_rate_zonesC

Analyze heart rate zone distribution and time spent in each zone for an activity

ParametersJSON Schema
NameRequiredDescriptionDefault
activity_idYesGarmin activity ID

TDQS

C2.9/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 full burden. It mentions analysis but does not disclose behavioral traits such as whether this is a read-only operation, if it requires specific permissions, rate limits, or what the output format looks like (e.g., structured data vs. summary). This leaves significant gaps for an agent to understand how to invoke it effectively.

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 a single, efficient sentence that directly states the tool's function without unnecessary words. It is front-loaded with the core purpose, making it easy to parse quickly.

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?

Given the lack of annotations and output schema, the description is incomplete. It does not explain what the analysis returns (e.g., zone breakdown percentages, time durations), potential errors, or how it integrates with sibling tools. For a tool with no structured behavioral data, more context is needed to ensure proper usage.

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 100%, with the single parameter 'activity_id' documented as 'Garmin activity ID'. The description adds no additional parameter semantics beyond what the schema provides, such as format examples or constraints. Baseline 3 is appropriate since the schema handles the parameter documentation adequately.

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 states the tool's purpose: analyzing heart rate zone distribution and time spent per zone for an activity. It specifies the resource (activity) and verb (analyze), but does not explicitly differentiate from siblings like 'analyze_threshold_zones' or 'get_heart_rate_metrics', which may have overlapping functionality.

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?

No guidance is provided on when to use this tool versus alternatives. With many sibling tools related to heart rate, training, and activity analysis, the description lacks context about prerequisites, typical use cases, or comparisons to tools like 'get_heart_rate_metrics' or 'analyze_threshold_zones'.

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

analyze_threshold_zonesB

Analyze lactate threshold zones for double threshold training

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/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 of behavioral disclosure. It states the tool performs analysis, implying a read-only operation, but doesn't specify if it requires user data, how results are returned, or any limitations (e.g., data freshness, rate limits). For a tool with zero annotation coverage, this leaves significant gaps in understanding its 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?

The description is a single, efficient sentence: 'Analyze lactate threshold zones for double threshold training'. It is front-loaded with the core action and resource, with no wasted words. Every part of the sentence contributes to understanding the tool's purpose, making it highly concise and well-structured.

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?

Given the tool's complexity (implied analysis of physiological data) and lack of annotations and output schema, the description is incomplete. It doesn't explain what the analysis entails, how results are formatted, or any dependencies. With no structured data to supplement it, the description fails to provide enough context for effective use.

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 tool has 0 parameters, with 100% schema description coverage (since there are no parameters to describe). The description doesn't need to add parameter semantics, as there are none. A baseline score of 4 is appropriate because the schema fully covers the absence of parameters, and the description doesn't need to compensate.

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 states the tool's purpose: 'Analyze lactate threshold zones for double threshold training'. It specifies the verb ('analyze') and resource ('lactate threshold zones'), with context about the training type ('double threshold training'). However, it doesn't explicitly differentiate from siblings like 'analyze_heart_rate_zones' or 'get_lactate_threshold', which reduces clarity about its unique role.

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 provides no guidance on when to use this tool versus alternatives. With siblings like 'analyze_heart_rate_zones' and 'get_lactate_threshold', there's no indication of when this analysis is preferred, what prerequisites exist, or any exclusions. Usage is implied only by the name and description, lacking explicit context.

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

analyze_training_loadC

Analyze training load and recovery status to prevent injury

ParametersJSON Schema
NameRequiredDescriptionDefault
weeks_backNoNumber of weeks to analyze

TDQS

C2.9/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 mentions analyzing to prevent injury, which implies a read-only, advisory function, but doesn't disclose behavioral traits like whether it requires specific permissions, how it processes data, rate limits, or what the output looks like. This is a significant gap for a tool with no annotation coverage.

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 a single, efficient sentence that front-loads the core purpose without any wasted words. It's appropriately sized for a simple tool, making it easy for an agent to parse quickly.

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?

Given no annotations and no output schema, the description is incomplete. It states the goal but lacks details on behavior, output format, or how it integrates with sibling tools. For a tool in a complex domain with many alternatives, this leaves the agent under-informed about its full context and usage.

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 100% for the single parameter 'weeks_back', so the schema already documents it well. The description adds no additional meaning about parameters beyond implying analysis over time, which is covered by the schema. Baseline 3 is appropriate as the schema does the heavy lifting.

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 states the tool's purpose as analyzing training load and recovery status to prevent injury, which is specific (verb+resource+goal). However, it doesn't explicitly differentiate from siblings like 'get_training_load_balance' or 'get_training_readiness', which might cover similar concepts, so it misses full sibling distinction.

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 provides no guidance on when to use this tool versus alternatives. With many sibling tools related to training analysis (e.g., 'get_training_load_balance', 'get_training_readiness'), there's no indication of context, prerequisites, or exclusions, leaving the agent to guess based on tool names alone.

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

analyze_workout_qualityC

Analyze how well a workout was executed compared to plan

ParametersJSON Schema
NameRequiredDescriptionDefault
activity_idYesGarmin activity ID to analyze
planned_workoutNoDetails of what was planned

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. It states the tool performs analysis but doesn't describe what the analysis entails, what metrics are evaluated, whether it's read-only or has side effects, what permissions are required, or what format the results take. This leaves significant gaps for an analysis tool with no output schema.

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 a single, efficient sentence that directly states the tool's purpose without unnecessary words. It's appropriately sized for a tool with two parameters and gets straight to the point with zero wasted content.

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 an analysis tool with no annotations and no output schema, the description is insufficient. It doesn't explain what 'analyze' means in practice, what metrics are evaluated, what the output format looks like, or how the comparison is performed. The context signals indicate complexity (nested objects) that isn't addressed in the description.

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 100%, so the schema already documents both parameters thoroughly. The description mentions comparing against 'plan' which aligns with the 'planned_workout' parameter, but adds no additional semantic context beyond what's in the schema descriptions. This meets the baseline for high schema coverage.

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 states the tool's purpose: analyzing workout execution quality by comparing actual performance against a planned workout. It specifies the verb 'analyze' and the resource 'workout execution', but doesn't explicitly differentiate from siblings like 'analyze_heart_rate_zones' or 'analyze_training_load' which focus on different aspects of workout 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?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (like needing a planned workout), exclusions, or relationships to sibling tools such as 'get_activity_details' or 'analyze_training_load' that might provide overlapping or complementary functionality.

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

calculate_training_pacesA

Calculate Jack Daniels training paces based on recent race performance

ParametersJSON Schema
NameRequiredDescriptionDefault
race_distanceYesRecent race distance (5K, 10K, half_marathon, marathon)
race_timeYesRace time in HH:MM:SS format

TDQS

A3.5/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 mentions the calculation is based on 'Jack Daniels training paces', hinting at a specific methodology, but does not disclose behavioral traits such as whether this is a read-only operation, if it requires authentication, rate limits, or what the output format looks like. This is a significant gap for a tool with no annotation coverage.

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 a single, efficient sentence that front-loads the core purpose without any wasted words. It is appropriately sized for the tool's complexity and gets straight to the point.

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?

Given the tool has no annotations, no output schema, and 2 parameters with full schema coverage, the description is minimally adequate. It states what the tool does but lacks details on behavioral aspects like output format, error handling, or dependencies. For a calculation tool with no structured output information, more context would be helpful.

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?

The schema description coverage is 100%, with both parameters ('race_distance' and 'race_time') well-documented in the schema. The description adds no additional parameter semantics beyond what the schema provides, such as explaining the relationship between the parameters or the calculation method. Baseline 3 is appropriate when the schema does the heavy lifting.

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

Purpose5/5

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

The description clearly states the specific action ('calculate'), the resource ('Jack Daniels training paces'), and the input basis ('based on recent race performance'). It distinguishes itself from sibling tools like 'calculate_vdot_zones' or 'get_race_predictions' by focusing on training paces rather than zones or predictions.

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 description implies usage when a user has recent race performance data to calculate training paces, but it does not explicitly state when to use this tool versus alternatives like 'calculate_vdot_zones' or 'get_training_plan_schedule'. No exclusions or prerequisites are mentioned, leaving some ambiguity.

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

calculate_vdot_zonesC

Calculate VDOT and training zones based on recent race performance or time trial

ParametersJSON Schema
NameRequiredDescriptionDefault
race_distanceYesRace distance (5K, 10K, half_marathon, marathon)
race_timeYesRace time in HH:MM:SS format

TDQS

C2.9/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 of behavioral disclosure. It states the tool calculates VDOT and training zones, implying a read-only computation, but does not mention any behavioral traits like error handling, performance characteristics, or output format. For a tool with no annotations, this is a significant gap in transparency.

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 a single, efficient sentence that directly states the tool's purpose without unnecessary details. It is front-loaded with the core functionality, making it easy to understand quickly. There is no wasted verbiage, earning a high score for conciseness.

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?

Given the complexity of calculating VDOT and training zones, the description is incomplete. No annotations are provided, and there is no output schema, so the agent lacks information on the return values or any behavioral context. The description does not compensate for these gaps, making it inadequate for a tool that likely produces structured output.

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?

The input schema has 100% description coverage, with clear documentation for both parameters ('race_distance' and 'race_time'). The description does not add any additional meaning beyond what the schema provides, such as explaining the significance of VDOT or training zones. Given the high schema coverage, a baseline score of 3 is appropriate.

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 states the tool's purpose: 'Calculate VDOT and training zones based on recent race performance or time trial'. It specifies the verb 'calculate' and the resources 'VDOT and training zones', with the input context 'recent race performance or time trial'. However, it does not explicitly differentiate from sibling tools like 'calculate_training_paces' or 'analyze_threshold_zones', which may have overlapping functionality, so it misses the highest score.

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 provides no guidance on when to use this tool versus alternatives. It mentions the input context ('recent race performance or time trial'), but does not specify prerequisites, exclusions, or compare to sibling tools such as 'calculate_training_paces' or 'get_race_predictions'. This leaves the agent without clear usage instructions.

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

download_activity_fileC

Download activity data in various file formats (TCX, GPX, FIT)

ParametersJSON Schema
NameRequiredDescriptionDefault
activity_idYesGarmin activity ID
formatNoFile format: 'tcx', 'gpx', or 'fit'tcx

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. While it indicates this is a download operation, it doesn't specify whether this requires authentication, what permissions are needed, whether there are rate limits, what the output looks like (file content vs metadata), or any potential side effects. For a download tool with zero annotation coverage, this leaves significant behavioral questions unanswered.

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?

The description is a single, efficient sentence that clearly states the tool's purpose. It's appropriately sized for a simple download operation and front-loads the essential information without unnecessary elaboration.

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 download tool with no annotations and no output schema, the description is insufficient. It doesn't explain what the download returns (raw file content, download link, metadata), whether authentication is required, what permissions are needed, or how to handle the downloaded data. Given the complexity of file operations and the lack of structured information elsewhere, the description should provide more contextual guidance.

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?

The schema description coverage is 100%, with both parameters clearly documented in the schema. The description mentions 'various file formats' which aligns with the format parameter, but adds no additional semantic context beyond what the schema already provides. This meets the baseline expectation when schema coverage is complete.

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 states the tool's purpose with a specific verb ('Download') and resource ('activity data'), and specifies the available file formats. However, it doesn't explicitly differentiate from sibling tools like 'get_activity_details' or 'get_activity_summary' which might provide similar data in different formats.

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 provides no guidance on when to use this tool versus alternatives. With many sibling tools that might provide activity-related data (like 'get_activity_details', 'get_activity_summary', 'get_advanced_running_metrics'), there's no indication of when this download tool is the appropriate choice versus those analysis/retrieval tools.

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

get_activities_for_dateC

Get all activities for a specific date

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesDate in YYYY-MM-DD format

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the action but does not cover critical aspects like whether this is a read-only operation, potential rate limits, authentication needs, or what the output format entails (e.g., list of activities). This leaves significant gaps in understanding the tool's 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?

The description is a single, direct sentence that efficiently conveys the core functionality without any unnecessary words. It is front-loaded and appropriately sized for the tool's purpose, making it easy to parse.

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?

Given the lack of annotations and output schema, the description is incomplete. It does not explain what 'activities' entail, the return format, or any behavioral traits like pagination or error handling. For a tool with no structured data support, this leaves the agent with insufficient context to use it effectively.

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?

The input schema has 100% description coverage, clearly documenting the 'date' parameter with its format. The description adds no additional semantic information beyond what the schema provides, such as date range constraints or examples, so it meets the baseline for adequate but not enhanced parameter understanding.

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 states the verb 'Get' and resource 'activities for a specific date', making the purpose understandable. However, it does not differentiate from sibling tools like 'get_daily_activity' or 'get_paginated_activities', which might have overlapping functionality, leaving some ambiguity.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives such as 'get_daily_activity' or 'get_paginated_activities'. The description lacks context about prerequisites, exclusions, or specific scenarios for usage, offering minimal direction.

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 comprehensive activity metrics including splits, advanced metrics, and performance data. Response size optimized for Claude context window.

ParametersJSON Schema
NameRequiredDescriptionDefault
activity_idYesGarmin activity ID
maxchartNoMaximum number of chart data points (default 500, reduces data size)
maxpolyNoMaximum number of map polyline points (default 1000, reduces data size)
include_rawNoInclude full raw activity details (warning: may be large and cause context window issues)

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It adds useful context about response size optimization for Claude's context window and warnings about large data with 'include_raw', which helps the agent understand performance implications. However, it doesn't cover other behavioral aspects like authentication requirements, rate limits, or error conditions.

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?

The description is appropriately concise with two sentences that each serve distinct purposes: the first states what the tool does, the second provides important behavioral context about response optimization. There's no wasted verbiage, though it could be slightly more structured with clearer separation of concerns.

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 read operation with 4 parameters and no output schema, the description provides adequate but incomplete context. It covers the core purpose and response size considerations, but doesn't explain the relationship to sibling tools, return format, or error handling. With no annotations and no output schema, more guidance would be helpful for an agent to use this tool effectively.

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?

The schema description coverage is 100%, so the schema already documents all four parameters thoroughly. The description doesn't add any meaningful parameter semantics beyond what's in the schema - it mentions response size optimization generally but doesn't explain how individual parameters contribute to this. Baseline 3 is appropriate when the schema does the heavy lifting.

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 states the tool's purpose with a specific verb ('Get') and resource ('comprehensive activity metrics'), including the types of data returned (splits, advanced metrics, performance data). However, it doesn't explicitly differentiate this tool from sibling tools like 'get_activity_summary' or 'get_advanced_running_metrics', which appear to provide overlapping functionality.

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 provides no guidance on when to use this tool versus alternatives. With many sibling tools available (e.g., 'get_activity_summary', 'get_advanced_running_metrics'), there's no indication of what makes this tool distinct or when it should be preferred over others for activity data retrieval.

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

get_activity_summaryC

Get basic activity information including distance, time, pace, and elevation

ParametersJSON Schema
NameRequiredDescriptionDefault
activity_idYesGarmin activity ID

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool retrieves information, implying a read-only operation, but doesn't cover aspects like authentication requirements, rate limits, error handling, or response format. This leaves significant gaps for a tool with no annotation coverage.

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 a single, efficient sentence that front-loads the core purpose and lists key metrics without unnecessary details. Every word earns its place, making it highly concise and well-structured for quick understanding.

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?

Given the tool's moderate complexity (retrieving activity data), no annotations, and no output schema, the description is incomplete. It lacks details on behavioral traits, response format, and usage context, which are critical for effective tool invocation in this environment with many sibling tools.

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?

The input schema has 100% description coverage, clearly documenting the 'activity_id' parameter as a required Garmin activity ID. The description adds no additional parameter semantics beyond what the schema provides, so it meets the baseline of 3 for high schema coverage without compensating value.

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 states the tool's purpose with a specific verb ('Get') and resource ('basic activity information'), listing key metrics like distance, time, pace, and elevation. It distinguishes from siblings like 'get_activity_details' or 'get_advanced_running_metrics' by emphasizing 'basic' information, though it doesn't explicitly name 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?

No guidance is provided on when to use this tool versus alternatives such as 'get_activity_details' (which might offer more comprehensive data) or 'get_advanced_running_metrics' (which could include specialized analytics). The description implies usage for basic activity summaries but lacks explicit context or exclusions.

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

get_advanced_running_metricsC

Get advanced running metrics including stride length, vertical ratio, vertical amplitude, ground contact time

ParametersJSON Schema
NameRequiredDescriptionDefault
activity_idYesGarmin activity ID

TDQS

C2.9/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 of behavioral disclosure. It states the tool retrieves metrics ('Get'), implying a read-only operation, but doesn't specify if it requires authentication, has rate limits, returns structured data, or handles errors. This is inadequate for a tool with no annotation coverage.

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 a single, efficient sentence that front-loads the core purpose without unnecessary words. It lists specific metrics concisely, making it easy to scan and understand quickly.

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?

Given no annotations and no output schema, the description is incomplete. It doesn't explain what the return values look like (e.g., structured metrics, units, or potential errors), which is critical for a tool retrieving advanced data. The purpose is clear, but behavioral and output details are lacking.

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?

The input schema has 100% description coverage, clearly documenting the 'activity_id' parameter as a required Garmin activity ID. The description doesn't add any parameter-specific details beyond what the schema provides, such as format examples or constraints, so it meets the baseline for high schema coverage.

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 states the tool's purpose with a specific verb ('Get') and resource ('advanced running metrics'), listing specific metrics like stride length, vertical ratio, vertical amplitude, and ground contact time. It distinguishes itself from siblings by focusing on advanced running metrics, though it doesn't explicitly contrast with similar tools like get_heart_rate_metrics or get_running_trends.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., requiring a Garmin activity ID), exclusions, or comparisons to sibling tools like get_activity_details or get_heart_rate_metrics, leaving usage context unclear.

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

get_body_batteryC

Get body battery energy levels throughout the day

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNoDate in YYYY-MM-DD format, defaults to today2026-02-01

TDQS

C2.9/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 of behavioral disclosure. It mentions retrieving 'energy levels throughout the day' but does not specify the format of the return data (e.g., time-series, aggregated values), any rate limits, authentication requirements, or error conditions. For a data-fetching tool with zero annotation coverage, this is a significant gap in transparency.

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 a single, clear sentence that efficiently conveys the core functionality without unnecessary words. It is front-loaded with the main action ('Get body battery energy levels') and includes essential context ('throughout the day'), making it easy to parse and understand quickly.

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?

Given the complexity of fetching daily energy data, the lack of annotations, and no output schema, the description is incomplete. It does not explain what the output looks like (e.g., JSON structure, units), potential errors, or dependencies on other tools or data sources. For a tool that likely returns detailed time-series data, this omission reduces its usefulness for an AI agent.

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?

The input schema has 100% description coverage, with the single parameter 'date' fully documented in the schema itself. The description does not add any meaning beyond what the schema provides, such as explaining how the date parameter affects the energy levels or detailing default behavior. However, with high schema coverage and only one parameter, a baseline score of 3 is appropriate as the schema adequately handles parameter 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?

The description clearly states the tool's purpose with a specific verb ('Get') and resource ('body battery energy levels'), and it specifies the temporal scope ('throughout the day'). However, it does not explicitly differentiate this tool from sibling tools like 'get_stress_levels' or 'get_hrv_data', which might also provide daily energy-related metrics, leaving some ambiguity about its unique role.

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 provides no guidance on when to use this tool versus alternatives. It does not mention prerequisites, such as whether it requires specific device data or user permissions, nor does it suggest sibling tools for related queries like 'get_recovery_time' or 'get_training_readiness'. This lack of context makes it harder for an agent to choose appropriately among similar tools.

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

get_daily_activityB

Get daily activity metrics including steps, floors climbed, and intensity minutes

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNoDate in YYYY-MM-DD format, defaults to today2026-02-01

TDQS

B3.1/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 of behavioral disclosure. It mentions what metrics are retrieved but lacks critical details such as whether this requires authentication, rate limits, data freshness, or error conditions. For a read operation with no annotation coverage, this leaves significant gaps in understanding tool 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?

The description is a single, efficient sentence that front-loads the core purpose without unnecessary words. It directly states what the tool does and includes specific metric examples, making it easy to parse and understand quickly.

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?

Given the tool's low complexity (1 parameter, no output schema, no annotations), the description is minimally adequate but incomplete. It covers the basic purpose but lacks usage guidelines and behavioral details needed for full contextual understanding, especially with many sibling tools available.

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?

The input schema has 100% description coverage, with the 'date' parameter fully documented in the schema itself. The description does not add any parameter-specific information beyond what the schema provides, so it meets the baseline score of 3 for high schema coverage without compensating value.

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 states the tool's purpose with specific verbs ('Get') and resources ('daily activity metrics'), listing concrete examples like steps, floors climbed, and intensity minutes. It distinguishes itself from siblings by focusing on daily metrics rather than detailed analyses, training plans, or device settings, though it doesn't explicitly name 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 description provides no guidance on when to use this tool versus alternatives. With many sibling tools available (e.g., get_activity_summary, get_activities_for_date, get_advanced_running_metrics), there is no indication of context, prerequisites, or exclusions to help an agent choose appropriately.

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

get_devicesB

Get information about all connected Garmin devices

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/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 of behavioral disclosure. It states the tool retrieves information, implying a read-only operation, but doesn't specify aspects like authentication requirements, rate limits, data freshness, or what 'information' includes (e.g., device types, connection status). This leaves gaps in understanding how the tool behaves in practice.

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 a single, clear sentence that efficiently conveys the core purpose without any redundant or verbose language. It is front-loaded with the essential information, making it easy for an agent to parse and understand quickly.

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?

Given the tool has 0 parameters and no output schema, the description is minimally complete for a simple read operation. However, without annotations or output details, it lacks context on what information is returned (e.g., device list format, fields) or behavioral constraints. This makes it adequate but with clear gaps for agent usage.

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 tool has 0 parameters, and schema description coverage is 100%, so there are no parameters to document. The description doesn't need to add parameter semantics beyond what the schema provides, making it adequate for this case. A baseline of 4 is appropriate as it avoids unnecessary parameter details.

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 states the action ('Get information') and resource ('all connected Garmin devices'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'get_device_settings' or 'get_primary_training_device', which also retrieve device-related information but with different scopes or details.

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 provides no guidance on when to use this tool versus alternatives. For example, it doesn't clarify if this should be used for a broad overview of devices, while 'get_device_settings' is for configuration details or 'get_primary_training_device' for a specific device. Without such context, the agent must infer usage from tool names alone.

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

get_device_settingsC

Get device settings and configuration

ParametersJSON Schema
NameRequiredDescriptionDefault
device_idNoDevice ID (optional, uses primary device if not specified)

TDQS

C2.9/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 of behavioral disclosure. 'Get' implies a read operation, but it doesn't specify if this requires authentication, has rate limits, returns structured data, or handles errors. For a tool with zero annotation coverage, this leaves significant behavioral gaps.

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 a single, efficient sentence with no wasted words. It's front-loaded with the core purpose ('Get device settings and configuration'), making it easy to parse quickly without unnecessary elaboration.

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?

Given no annotations and no output schema, the description is incomplete. It doesn't explain what 'settings and configuration' includes, the return format, or any prerequisites. For a tool in a fitness/device context with many siblings, more detail is needed to guide effective use.

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 100%, with the parameter 'device_id' documented as optional and defaulting to the primary device. The description adds no additional parameter semantics beyond what the schema provides, so it meets the baseline of 3 for adequate coverage without extra value.

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 'Get device settings and configuration' clearly states the verb ('Get') and resource ('device settings and configuration'), making the tool's purpose understandable. However, it doesn't differentiate from sibling tools like 'get_devices' or 'get_primary_training_device', which also retrieve device-related information but with different scopes.

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 provides no guidance on when to use this tool versus alternatives. With siblings like 'get_devices' (likely listing devices) and 'get_primary_training_device' (likely retrieving primary device details), there's no indication of when this specific tool for 'settings and configuration' is appropriate, leaving usage context unclear.

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 performance score indicating aerobic endurance capability

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNoDate in YYYY-MM-DD format, defaults to today2026-02-01

TDQS

B3.1/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 of behavioral disclosure. It states the tool 'Get[s]' a score, implying a read-only operation, but doesn't clarify permissions, data sources, rate limits, or what happens if no data exists for the date. For a tool with no annotation coverage, this leaves significant behavioral gaps unaddressed.

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 a single, efficient sentence that front-loads the core purpose without unnecessary words. Every part of the sentence ('Get endurance performance score indicating aerobic endurance capability') contributes directly to understanding the tool's function, making it appropriately concise and well-structured.

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?

Given the tool's low complexity (1 optional parameter, no output schema, no annotations), the description is minimally adequate. It explains what the tool does but lacks details on behavioral traits, usage context, and output format. With no output schema, the description doesn't clarify what the returned score looks like (e.g., numeric range, units), leaving gaps in completeness.

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?

The input schema has 100% description coverage, with the single parameter 'date' fully documented in the schema (format, default). The description adds no parameter-specific information beyond what's in the schema, so it meets the baseline of 3 where the schema does the heavy lifting, but doesn't compensate with additional semantic context.

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 states the tool's purpose with a specific verb ('Get') and resource ('endurance performance score'), and it adds meaningful context about what the score indicates ('aerobic endurance capability'). However, it doesn't explicitly differentiate this tool from similar-sounding siblings like 'get_vo2max' or 'get_training_readiness', which might also relate to endurance metrics.

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 provides no guidance on when to use this tool versus alternatives. With many sibling tools related to fitness metrics (e.g., 'get_vo2max', 'get_training_status'), there's no indication of what makes this endurance score distinct or when it's preferred over other analysis tools. The lack of context leaves usage decisions ambiguous.

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

get_gear_insightsB

Analyze running gear usage to surface mileage totals, replacement alerts, and recent utilization patterns

ParametersJSON Schema
NameRequiredDescriptionDefault
distance_threshold_kmNoMileage threshold per shoe before alerting (default 800 km)
include_retiredNoInclude retired gear in the analysis
max_itemsNoMaximum number of gear items to summarize (default 5)

TDQS

B3.1/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 full burden. It mentions analyzing 'mileage totals, replacement alerts, and recent utilization patterns,' which gives some behavioral insight into outputs, but lacks details on permissions, rate limits, data sources, or whether this is a read-only operation. For a tool with no annotations, this is a significant gap.

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 a single, efficient sentence that front-loads the core purpose ('Analyze running gear usage') and lists key outputs without redundancy. Every word earns its place, making it appropriately sized and well-structured.

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?

Given no annotations, no output schema, and 3 parameters with full schema coverage, the description is minimally adequate. It covers the purpose and outputs but lacks behavioral details like return format, error handling, or integration context, leaving gaps for an agent to infer usage.

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 100%, so the schema already documents all three parameters with descriptions and defaults. The description adds no additional parameter semantics beyond implying analysis scope, resulting in a baseline score of 3 as the schema does the heavy lifting.

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 states the tool's purpose with specific verbs ('analyze', 'surface') and resources ('running gear usage'), identifying it as an analysis tool for gear metrics. It distinguishes from siblings by focusing on gear rather than physiological metrics, training plans, or activity data, though it doesn't explicitly name 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?

No explicit guidance is provided on when to use this tool versus alternatives. The description implies usage for gear analysis, but there's no mention of prerequisites, context (e.g., after activities), or comparison to sibling tools like 'get_devices' or 'get_advanced_running_metrics' that might overlap.

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

get_heart_rate_metricsC

Get heart rate metrics including resting heart rate and heart rate variability (HRV)

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNoDate in YYYY-MM-DD format, defaults to today2026-02-01

TDQS

C2.9/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 of behavioral disclosure. It states the tool 'gets' metrics, implying a read-only operation, but doesn't specify authentication needs, rate limits, data freshness, or response format. For a tool with no annotation coverage, this leaves significant gaps in understanding its 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?

The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It is appropriately sized and front-loaded, making it easy to parse quickly.

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?

Given the lack of annotations and output schema, the description is incomplete. It doesn't explain what metrics are returned beyond a vague list, how data is structured, or potential limitations. For a tool with no structured output documentation, more detail on return values would be helpful.

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 100%, with the single parameter 'date' fully documented in the schema. The description adds no additional parameter information beyond what the schema provides, such as date range constraints or metric-specific options. This meets the baseline for high schema coverage.

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 states the tool's purpose as retrieving heart rate metrics (resting heart rate and HRV), which is a specific verb+resource combination. However, it doesn't distinguish this tool from sibling tools like 'get_hrv_data' or 'get_body_battery' that might overlap in functionality, preventing a perfect score.

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?

No guidance is provided on when to use this tool versus alternatives. With multiple sibling tools related to heart rate, HRV, and fitness metrics, the description lacks context about prerequisites, appropriate scenarios, or comparisons to tools like 'get_hrv_data' or 'get_training_readiness'.

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

get_hill_scoreC

Get hill running performance score indicating uphill running capability

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNoDate in YYYY-MM-DD format, defaults to today2026-02-01

TDQS

C2.9/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 of behavioral disclosure. It states the tool retrieves a score but doesn't explain what data sources it uses (e.g., GPS, heart rate), whether it requires recent running activity data, what the output format looks like, or any rate limits or authentication requirements. This leaves significant gaps for an agent to understand how to use it effectively.

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 a single, efficient sentence that directly states the tool's purpose without any fluff or redundancy. It's appropriately sized for a simple retrieval tool and front-loads the key information.

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?

Given the lack of annotations and output schema, the description is incomplete. It doesn't explain what the hill score represents (e.g., scale, units, interpretation), how it's calculated, or what the return value looks like. For a performance metric tool with no structured output documentation, this leaves too much ambiguity for reliable agent use.

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?

The input schema has 100% description coverage, with the single parameter 'date' fully documented in the schema itself (including format and default). The description adds no additional parameter information beyond what's in the schema, so it meets the baseline score of 3 for high schema coverage.

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 states the tool's purpose with a specific verb ('Get') and resource ('hill running performance score'), and it explains what the score indicates ('uphill running capability'). However, it doesn't differentiate this tool from its many siblings, which include various other performance and analysis tools like 'get_endurance_score' or 'get_advanced_running_metrics'.

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 provides no guidance on when to use this tool versus alternatives. With many sibling tools available (e.g., 'get_endurance_score', 'get_advanced_running_metrics'), there's no indication of when this specific hill score is appropriate, what prerequisites might be needed, or when other tools might be better suited.

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

get_hrv_dataB

Get detailed heart rate variability (HRV) data for recovery and stress analysis

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNoDate in YYYY-MM-DD format, defaults to today2026-02-01

TDQS

B3.1/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 of behavioral disclosure. While 'Get' implies a read-only operation, it doesn't specify authentication requirements, rate limits, data freshness, or what 'detailed' entails (e.g., time-series vs. summary data). For a health data tool with zero annotation coverage, this leaves significant gaps in understanding its 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?

The description is a single, efficient sentence that front-loads the core purpose without unnecessary words. Every part of the sentence contributes meaning: the action, resource, and analysis context.

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?

Given the tool's moderate complexity (health data retrieval), lack of annotations, and no output schema, the description is minimally adequate but incomplete. It states what data is retrieved and for what purpose, but doesn't cover behavioral aspects like permissions, data format, or error conditions that would help an agent use it correctly.

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?

The input schema has 100% description coverage, with the single parameter 'date' fully documented in the schema. The description adds no additional parameter information beyond what the schema provides, so it meets the baseline score of 3 for high schema coverage without compensating value.

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 states the tool's purpose with a specific verb ('Get') and resource ('detailed heart rate variability (HRV) data'), and specifies the analysis context ('for recovery and stress analysis'). However, it doesn't explicitly differentiate from sibling tools like 'get_stress_levels' or 'get_recovery_time' that might overlap in purpose.

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 provides no guidance on when to use this tool versus alternatives. With many sibling tools related to health metrics (e.g., 'get_stress_levels', 'get_recovery_time', 'get_training_readiness'), there's no indication of when HRV data is preferred or what distinguishes it from other recovery/stress-related tools.

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

get_lactate_thresholdB

Get lactate threshold pace and heart rate data

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNoDate in YYYY-MM-DD format, defaults to today2026-02-01

TDQS

B3.1/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 of behavioral disclosure. It states it 'gets' data, implying a read-only operation, but doesn't specify permissions, rate limits, data freshness, or what happens if no lactate threshold data exists for the given date. This leaves significant gaps for a tool with no annotation coverage.

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 a single, efficient sentence that directly states the tool's purpose without any fluff or redundancy. It's appropriately sized and front-loaded, making it easy to parse quickly.

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?

Given the tool's low complexity (1 optional parameter, no output schema, no annotations), the description is minimally adequate. It covers the basic purpose but lacks behavioral details and usage context, which are important for a data retrieval tool in a crowded sibling set. It's complete enough to understand what it does but not how or when to use it effectively.

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?

The input schema has 100% description coverage, with the single parameter 'date' fully documented in the schema itself. The description adds no additional parameter semantics beyond what the schema provides, so it meets the baseline of 3 for high schema coverage without compensating value.

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 states the verb 'Get' and the resources 'lactate threshold pace and heart rate data', making the purpose specific and understandable. However, it doesn't distinguish this tool from potential sibling tools like 'analyze_threshold_zones' or 'get_advanced_running_metrics', which might overlap in domain.

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 provides no guidance on when to use this tool versus alternatives. With many sibling tools in the fitness/performance domain (e.g., 'analyze_threshold_zones', 'get_advanced_running_metrics'), there's no indication of context, prerequisites, or exclusions for this specific lactate threshold data retrieval.

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

get_paginated_activitiesB

Get activities with proper pagination support to handle large datasets

ParametersJSON Schema
NameRequiredDescriptionDefault
startNoStarting index for pagination
limitNoMaximum number of activities to retrieve (max 100)
activity_typeNoFilter by activity type (e.g., 'running')running

TDQS

B3.2/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 mentions 'proper pagination support' and handling 'large datasets', which adds some behavioral context, but it lacks details on permissions, rate limits, error handling, or what the output looks like (e.g., format, pagination tokens). This is inadequate for a tool with no annotation coverage.

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 a single, efficient sentence that directly states the tool's purpose and key feature (pagination for large datasets). It is front-loaded with no wasted words, making it easy to understand quickly.

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?

Given no annotations, no output schema, and a tool that likely returns complex activity data, the description is incomplete. It doesn't explain the return format, error conditions, or behavioral nuances like how pagination works in practice (e.g., token-based vs. offset-based). This leaves significant gaps for an AI agent to use the tool effectively.

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?

The schema description coverage is 100%, so the schema already documents all parameters (start, limit, activity_type) with descriptions and defaults. The description doesn't add any meaning beyond what the schema provides, such as explaining interactions between parameters or usage examples, meeting the baseline for high coverage.

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 states the tool's purpose as retrieving activities with pagination support, which is a specific verb ('Get') and resource ('activities'). It distinguishes itself from siblings like 'get_activities_for_date' by emphasizing pagination for large datasets, though it doesn't explicitly contrast with all similar tools.

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 description implies usage for handling large datasets, suggesting when to use it (for paginated retrieval), but it doesn't provide explicit alternatives or exclusions. For example, it doesn't clarify when to choose this over 'get_activities_for_date' or other activity-related tools.

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

get_personal_recordsB

Get personal best times for running distances (5K, 10K, half marathon, full marathon)

ParametersJSON Schema
NameRequiredDescriptionDefault
distancesNoRunning distances to get records for

TDQS

B3.1/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 of behavioral disclosure. It states the tool retrieves data ('Get'), implying a read-only operation, but doesn't clarify aspects like authentication needs, rate limits, data freshness, or error handling. This is a significant gap for a tool with no annotation coverage.

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 a single, efficient sentence that front-loads the core purpose without unnecessary details. Every word earns its place, making it easy to parse quickly.

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?

Given the tool's low complexity (1 optional parameter, no output schema, no annotations), the description is adequate but incomplete. It covers the basic purpose but lacks behavioral context and usage guidelines, which are needed for effective agent operation in a crowded sibling toolset.

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?

The schema description coverage is 100%, with the parameter 'distances' fully documented in the schema. The description adds minimal value beyond the schema by listing example distances (5K, 10K, etc.), which aligns with the default values. This meets the baseline of 3 since the schema does the heavy lifting.

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 states the tool's purpose with a specific verb ('Get') and resource ('personal best times for running distances'), making it immediately understandable. However, it doesn't explicitly differentiate from sibling tools like 'get_activities_for_date' or 'get_recent_running_activities' that might also return running data, missing full sibling distinction.

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 provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, context, or exclusions, leaving the agent to infer usage from the name alone among many sibling tools focused on running metrics.

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

get_primary_training_deviceB

Get primary training device information for running activities

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states it 'gets' information, implying a read-only operation, but doesn't clarify aspects like authentication needs, rate limits, error conditions, or what 'primary training device' specifically entails. This leaves significant gaps for a tool that likely interacts with user data.

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 a single, efficient sentence that directly states the tool's purpose without any fluff or redundancy. It's front-loaded with the core action and resource, making it easy to parse quickly.

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?

Given the tool has 0 parameters and no output schema, the description is minimally adequate by stating what it does. However, for a tool that likely returns device-specific data in a fitness context, more detail on the type of information returned (e.g., device model, settings, metrics) would improve completeness, especially with no annotations to provide safety or behavioral context.

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 input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description doesn't add parameter details, which is appropriate here, but it could have mentioned if any implicit parameters (e.g., user context) are required, keeping it from a perfect score.

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 states the verb 'get' and the resource 'primary training device information for running activities', making the purpose understandable. However, it doesn't explicitly differentiate from sibling tools like 'get_devices' or 'get_device_settings', which might also relate to device information.

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 provides no guidance on when to use this tool versus alternatives like 'get_devices' or 'get_device_settings'. There's no mention of context, prerequisites, or exclusions, leaving the agent to infer usage based on 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.

get_race_predictionsB

Get predicted race times based on current fitness level

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/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 of behavioral disclosure. It mentions 'predicted race times' but does not explain how predictions are generated, what data sources are used (e.g., recent activities, heart rate), whether it requires authentication, or any rate limits. This leaves significant gaps in understanding the tool's 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?

The description is a single, clear sentence that efficiently conveys the core functionality without unnecessary words. It is front-loaded with the main action and reason, making it easy to parse and understand quickly.

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?

Given the complexity of predicting race times and the lack of annotations and output schema, the description is insufficient. It does not cover how predictions are made, what output to expect (e.g., times for specific distances), or dependencies on other data, leaving the agent with incomplete information for effective use.

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 input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description adds value by explaining the tool's purpose ('based on current fitness level'), which provides context beyond the empty schema, justifying a score above the baseline of 3.

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 states the action ('Get predicted race times') and the basis ('based on current fitness level'), which is specific and informative. It distinguishes itself from siblings like 'set_race_goal' (which sets goals) or 'get_personal_records' (which retrieves past achievements), but it could be more precise about what 'race times' refer to (e.g., distances, types of races).

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 provides no guidance on when to use this tool versus alternatives. It does not mention prerequisites (e.g., needing fitness data from other tools), exclusions, or how it differs from related tools like 'calculate_training_paces' or 'get_advanced_running_metrics', leaving the agent to infer usage context.

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

get_recent_running_activitiesB

Get recent running activities with cursor-based pagination. Returns activities with pagination metadata and resource URIs for detailed data.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of activities per page (default 10)
days_backNoNumber of days back to search
cursorNoPagination cursor from previous response (optional)

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden. It discloses key behavioral traits: cursor-based pagination and that it returns activities with pagination metadata and resource URIs. However, it lacks details on permissions, rate limits, error handling, or what 'recent' entails beyond the 'days_back' parameter. This is adequate but leaves gaps in operational context.

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 highly concise and well-structured: two sentences that front-load the core functionality ('Get recent running activities with cursor-based pagination') and follow with return details. Every word earns its place, with no redundancy or fluff, making it efficient for quick comprehension.

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?

Given the tool's moderate complexity (3 parameters, no output schema, no annotations), the description is partially complete. It covers the main action and pagination behavior but lacks details on output format (beyond high-level mentions), error cases, or integration with siblings. Without an output schema, more elaboration on return values would be beneficial, but it's minimally viable.

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?

The input schema has 100% description coverage, so the baseline is 3. The description adds no specific parameter semantics beyond what the schema provides (e.g., it doesn't explain 'cursor' usage in more detail or 'days_back' implications). It mentions pagination generally, but this is already implied by the schema's cursor parameter description.

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 states the tool's purpose: 'Get recent running activities with cursor-based pagination.' It specifies the resource (running activities) and key behavior (pagination). However, it doesn't explicitly differentiate from sibling tools like 'get_paginated_activities' or 'get_activities_for_date,' which reduces it from a perfect score.

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 provides no guidance on when to use this tool versus alternatives. It mentions pagination and returning activities, but doesn't specify context like 'use this for general recent activities' or contrast with siblings such as 'get_activities_for_date' for date-specific queries or 'get_paginated_activities' for broader pagination. This lack of comparative guidance limits its utility.

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

get_recovery_timeB

Get recommended recovery time after recent activities

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/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 of behavioral disclosure. It states the tool 'gets' data, implying a read-only operation, but doesn't specify whether it requires authentication, how recent 'recent activities' are defined, or any rate limits. This leaves significant gaps in understanding the tool's 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?

The description is a single, clear sentence that front-loads the core purpose without any wasted words. It efficiently communicates what the tool does in a straightforward manner, making it easy to parse and understand.

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?

Given the tool has no parameters and no output schema, the description is minimally adequate but lacks depth. It doesn't explain what 'recommended recovery time' entails (e.g., units, format, or how it's calculated), which could be crucial for an AI agent to interpret results correctly. The absence of annotations further reduces completeness.

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 tool has 0 parameters, and the input schema has 100% description coverage (though empty). The description adds context by implying the tool considers 'recent activities' as input, which isn't captured in the schema. This provides meaningful semantic value beyond the structured data, justifying a score above baseline.

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 states the tool's purpose with a specific verb ('Get') and resource ('recommended recovery time after recent activities'), making it immediately understandable. However, it doesn't explicitly differentiate itself from sibling tools like 'get_training_readiness' or 'get_training_status' that might also relate to recovery metrics, which prevents a perfect score.

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 provides no guidance on when to use this tool versus alternatives. With many sibling tools related to training metrics (e.g., 'get_training_readiness', 'get_training_status'), there's no indication of specific contexts, prerequisites, or exclusions for selecting this tool over others.

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

get_respiration_dataC

Get daily respiration data including breathing rate and patterns

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNoDate in YYYY-MM-DD format, defaults to today2026-02-01

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states it 'gets' data, implying a read-only operation, but doesn't address other behavioral aspects like whether authentication is required, if there are rate limits, what the return format looks like (e.g., JSON structure), or if it's real-time vs. historical data. This leaves significant gaps for an agent to rely on.

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 a single, efficient sentence that front-loads the core purpose ('Get daily respiration data') and includes key details ('breathing rate and patterns') without any redundant or unnecessary words. Every part of the sentence earns its place by specifying what data is retrieved.

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?

Given the lack of annotations and output schema, the description is incomplete for a data retrieval tool. It doesn't explain the return values (e.g., structure of breathing patterns), potential errors, or behavioral constraints like data availability or permissions. For a tool in a health/fitness context with many siblings, more context is needed to ensure reliable use.

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?

The input schema has 100% description coverage, with the single parameter 'date' well-documented in the schema itself (format, default). The description adds no additional parameter semantics beyond implying daily scope, so it meets the baseline of 3 where the schema does the heavy lifting without compensating for any gaps.

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 states the verb ('Get') and resource ('daily respiration data') with specific data types ('breathing rate and patterns'), making the purpose unambiguous. However, it doesn't explicitly differentiate this tool from potential sibling tools like 'get_hrv_data' or 'get_spo2_data' that might also relate to physiological metrics, which prevents a perfect score.

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 provides no guidance on when to use this tool versus alternatives, such as other health data tools in the sibling list (e.g., 'get_hrv_data' for heart rate variability). It mentions 'daily' data but doesn't clarify if this is the only tool for respiration or if there are specific contexts (e.g., post-workout vs. sleep analysis) where it's preferred.

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

get_sleep_analysisC

Get detailed sleep data including sleep stages, quality, and duration

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNoDate in YYYY-MM-DD format, defaults to today2026-02-01

TDQS

C2.9/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 states the tool retrieves data ('Get'), implying a read operation, but does not disclose behavioral traits such as authentication needs, rate limits, error conditions, or response format. This is inadequate for a tool with no annotation coverage.

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 a single, efficient sentence that front-loads the purpose with no wasted words. It directly communicates what the tool does without unnecessary elaboration.

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?

Given no annotations and no output schema, the description is incomplete. It lacks details on behavioral aspects (e.g., permissions, response structure) and does not compensate for the absence of structured fields, making it insufficient for a tool that retrieves detailed data.

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?

The input schema has 100% description coverage, with the parameter 'date' fully documented in the schema. The description does not add any parameter-specific information beyond what the schema provides, so it meets the baseline of 3 for high schema coverage.

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 states the verb ('Get') and resource ('detailed sleep data'), specifying the data types included (sleep stages, quality, duration). It distinguishes from many siblings (e.g., heart rate, activity, training tools) but not explicitly from potential sleep-related siblings (none listed), so it's not fully sibling-differentiated.

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?

No guidance is provided on when to use this tool versus alternatives. The description does not mention prerequisites, context, or exclusions, leaving the agent to infer usage based on the tool name and purpose alone.

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

get_spo2_dataB

Get blood oxygen saturation (SpO2) levels throughout the day

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNoDate in YYYY-MM-DD format, defaults to today2026-02-01

TDQS

B3.1/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 of behavioral disclosure. It states the tool retrieves SpO2 data, implying a read-only operation, but doesn't specify permissions, rate limits, data format, or whether it returns historical or real-time data. For a health data tool with zero annotation coverage, this leaves significant gaps in understanding how the tool behaves beyond its basic purpose.

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 a single, efficient sentence that front-loads the core purpose without unnecessary details. Every word earns its place: 'Get' (action), 'blood oxygen saturation (SpO2) levels' (resource), and 'throughout the day' (scope). There is zero waste or redundancy, making it highly concise and well-structured for quick comprehension.

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?

Given the tool's low complexity (1 parameter, no output schema, no annotations), the description is minimally adequate. It covers the purpose and scope but lacks behavioral details (e.g., data format, error handling) and usage guidelines. For a health data retrieval tool, this leaves the agent with incomplete context, though the simplicity of the tool means the gaps are less severe than for a more complex operation.

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?

The input schema has 100% description coverage, with the 'date' parameter fully documented in the schema (including format and default). The description adds no additional parameter semantics beyond implying temporal scope ('throughout the day'), which aligns with the schema but doesn't provide extra value. With high schema coverage, the baseline score of 3 is appropriate, as the description doesn't compensate but also doesn't detract.

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 states the tool's purpose: 'Get blood oxygen saturation (SpO2) levels throughout the day.' It specifies the verb ('Get') and resource ('SpO2 levels'), and the temporal scope ('throughout the day') helps distinguish it from potential siblings like get_hrv_data or get_respiration_data. However, it doesn't explicitly differentiate from all siblings, such as get_body_battery or get_stress_levels, which are also daily health metrics.

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 provides no guidance on when to use this tool versus alternatives. It mentions 'throughout the day,' which implies daily monitoring, but doesn't specify use cases, prerequisites, or comparisons to siblings like get_respiration_data (which might overlap in health tracking). Without explicit when-to-use or when-not-to-use instructions, the agent must infer context 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.

get_stress_levelsC

Get stress level data and analysis

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNoDate in YYYY-MM-DD format, defaults to today2026-02-01

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 of behavioral disclosure. 'Get' implies a read operation, but it doesn't specify permissions, rate limits, data freshness, or what 'analysis' includes (e.g., if it's computed or raw data). This is a significant gap for a tool with no annotation coverage.

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 a single, efficient sentence with zero waste. It's front-loaded with the core purpose, making it easy to parse quickly, though it could benefit from more detail given the lack of annotations.

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?

Given no annotations, no output schema, and a vague description, the tool is incomplete for effective use. The agent lacks details on return values, behavioral traits, and differentiation from siblings, making it inadequate despite the simple parameter schema.

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?

The input schema has 100% description coverage, with the 'date' parameter fully documented in the schema. The description adds no additional meaning beyond the schema, such as explaining how the date affects the analysis or default behavior. Baseline 3 is appropriate when the schema does the heavy lifting.

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 'Get stress level data and analysis' states the tool's purpose clearly with a verb ('Get') and resource ('stress level data and analysis'), but it's somewhat vague about what 'analysis' entails and doesn't differentiate from sibling tools like 'get_hrv_data' or 'get_training_readiness' that might relate to stress metrics. It avoids tautology but lacks specificity.

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 provides no guidance on when to use this tool versus alternatives. With many sibling tools related to health and fitness metrics (e.g., 'get_hrv_data', 'get_training_readiness'), there's no indication of context, prerequisites, or exclusions, leaving the agent to guess based on 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.

get_training_effectB

Get aerobic and anaerobic training effect analysis

ParametersJSON Schema
NameRequiredDescriptionDefault
days_backNoNumber of days to analyze

TDQS

B3.1/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 of behavioral disclosure. It states what the tool does ('Get... analysis') but lacks details on permissions, rate limits, output format, or whether it's a read-only operation. For a tool with no annotation coverage, this leaves significant gaps in understanding its 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?

The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It is front-loaded and wastes no space, making it easy to parse quickly.

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?

Given the tool's moderate complexity (analysis tool with one parameter) and no output schema or annotations, the description is minimally adequate but incomplete. It covers the basic purpose but lacks details on output format, behavioral traits, and usage context, which are important for effective tool invocation.

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?

The input schema has 100% description coverage for its single parameter ('days_back'), so the schema already documents it fully. The description adds no additional parameter semantics beyond what's in the schema, such as context on how the analysis uses the days_back value. Baseline 3 is appropriate when schema coverage is high.

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 states the tool's purpose with a specific verb ('Get') and resource ('aerobic and anaerobic training effect analysis'), making it immediately understandable. However, it doesn't explicitly differentiate from sibling tools like 'get_training_load' or 'get_training_status', which might also involve training analysis, leaving some ambiguity about its unique scope.

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 provides no guidance on when to use this tool versus alternatives. With many sibling tools related to training analysis (e.g., 'get_training_load', 'get_training_readiness'), there is no indication of context, prerequisites, or exclusions, leaving the agent to guess based on tool names alone.

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

get_training_load_balanceB

Get acute vs chronic training load balance (ATL/CTL ratio) for injury prevention

ParametersJSON Schema
NameRequiredDescriptionDefault
weeks_backNoNumber of weeks to analyze for training load

TDQS

B3.1/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 states the tool 'gets' data, implying a read-only operation, but does not disclose behavioral traits like authentication requirements, rate limits, data freshness, or how the ratio is calculated. This leaves significant gaps for a tool with no annotation coverage.

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 a single, efficient sentence that front-loads the core purpose without unnecessary details. It is appropriately sized and wastes no words, making it easy for an agent to parse quickly.

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?

Given the tool's moderate complexity (one parameter, no output schema, no annotations), the description is minimally adequate. It covers the purpose but lacks details on usage, behavior, and output, leaving the agent to infer or rely on the schema alone. This is a basic but incomplete description 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?

The input schema has 100% description coverage, with the parameter 'weeks_back' clearly documented. The description does not add any meaning beyond the schema, such as explaining how the weeks affect the ATL/CTL ratio calculation. With high schema coverage, the baseline score of 3 is appropriate.

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 states the tool's purpose: to retrieve the acute vs chronic training load balance (ATL/CTL ratio) for injury prevention. It specifies the resource (training load balance) and the goal (injury prevention), but does not explicitly differentiate it from sibling tools like 'analyze_training_load' or 'get_training_status', which might cover related metrics.

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 provides no guidance on when to use this tool versus alternatives. It mentions the purpose (injury prevention) but does not specify contexts, prerequisites, or exclusions, such as when to choose this over 'analyze_training_load' or other training-related tools in the sibling list.

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

get_training_plan_overviewB

Summarize a specific Garmin training plan including high-level details, phases, and schedule preview

ParametersJSON Schema
NameRequiredDescriptionDefault
plan_idYesTraining plan ID returned by list_training_plans
schedule_weeksNoNumber of weeks to include in the schedule preview (default 4)

TDQS

B3.2/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 of behavioral disclosure. It describes the tool's function but fails to disclose critical behavioral traits such as whether it's a read-only operation, potential rate limits, authentication requirements, or what happens with invalid inputs. The description does not contradict annotations, but it is insufficient for a mutation-free tool with no annotation coverage.

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?

The description is a single, efficient sentence that front-loads the core purpose ('Summarize a specific Garmin training plan') and lists key details without unnecessary elaboration. It could be slightly more structured by explicitly separating the components (e.g., phases vs. schedule), but it avoids redundancy and wastes no words.

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?

Given the tool's moderate complexity (2 parameters, no output schema, no annotations), the description is adequate but has gaps. It covers the purpose and hints at parameters, but lacks behavioral context (e.g., safety, errors) and output details, which are important since no output schema is provided. It meets minimum viability but could be more complete for a tool that summarizes training plans.

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 100%, with clear documentation for both parameters (plan_id and schedule_weeks). The description adds marginal value by mentioning 'schedule preview' which aligns with the schedule_weeks parameter, but does not provide additional meaning beyond what the schema already specifies, such as format details or usage nuances. Baseline 3 is appropriate given high schema coverage.

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 states the tool's purpose with a specific verb ('Summarize') and resource ('Garmin training plan'), including what details are provided ('high-level details, phases, and schedule preview'). It distinguishes itself from siblings like 'list_training_plans' by focusing on a specific plan rather than listing, but does not explicitly differentiate from 'get_training_plan_schedule' which might overlap in schedule-related functionality.

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 description implies usage context by specifying 'a specific Garmin training plan' and referencing 'plan_id returned by list_training_plans' in the schema, suggesting it should be used after listing plans. However, it lacks explicit guidance on when to use this tool versus alternatives like 'get_training_plan_schedule' or 'get_training_status', and does not mention any exclusions or prerequisites beyond the plan_id.

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

get_training_plan_scheduleB

Build a weekly schedule snapshot for a training plan, including personal calendar alignment when available

ParametersJSON Schema
NameRequiredDescriptionDefault
plan_idYesTraining plan ID returned by list_training_plans
weeksNoNumber of weeks to include in the schedule snapshot (default 6)
include_calendarNoAttempt to include personal training calendar entries if available

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions building a 'snapshot' and calendar alignment 'when available', which hints at read-only behavior and conditional data inclusion. However, it lacks details on permissions, rate limits, error conditions, or what the output looks like (e.g., format, structure), which is insufficient for a tool with potential data retrieval complexities.

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 a single, well-structured sentence that efficiently conveys the core functionality. It is front-loaded with the main purpose and adds a clarifying detail about calendar alignment without redundancy. Every word serves a purpose, making it highly concise.

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?

Given the tool's moderate complexity (3 parameters, no output schema, no annotations), the description is adequate but incomplete. It covers the basic purpose and hints at behavior but lacks details on output format, error handling, or integration with other tools. Without annotations or an output schema, more contextual information would be beneficial for the agent.

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?

The schema description coverage is 100%, meaning all parameters are documented in the input schema. The description adds minimal value beyond the schema by implying the tool generates a schedule based on 'plan_id' and 'weeks', but it does not provide additional context like how calendar alignment works or the implications of parameter choices. This meets the baseline for high schema coverage.

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 states the tool's purpose: 'Build a weekly schedule snapshot for a training plan' with the addition of 'including personal calendar alignment when available'. It specifies the verb ('build'), resource ('weekly schedule snapshot'), and scope ('training plan'), but does not explicitly differentiate it from sibling tools like 'get_training_plan_overview' or 'list_training_plans'.

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 provides no guidance on when to use this tool versus alternatives. It mentions calendar alignment as a feature but does not specify prerequisites, conditions for use, or when other tools like 'get_training_plan_overview' might be more appropriate. This leaves the agent without clear usage context.

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

get_training_readinessC

Get training readiness score and recommendations

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNoDate in YYYY-MM-DD format, defaults to today2026-02-01

TDQS

C2.9/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 of behavioral disclosure. It states what the tool returns but doesn't mention whether this is a read-only operation, if it requires authentication, any rate limits, or how the score and recommendations are formatted. For a tool with no annotations, this leaves significant behavioral gaps.

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 a single, efficient sentence that directly states the tool's purpose without any unnecessary words. It's appropriately sized and front-loaded, making it easy to understand at a glance.

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?

Given no annotations and no output schema, the description is incomplete. It doesn't explain what the 'training readiness score' means, how it's calculated, what format the recommendations are in, or any prerequisites for using the tool. For a tool that likely returns structured data, this leaves too much unspecified.

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?

The input schema has 100% description coverage, with the single parameter 'date' fully documented in the schema. The description doesn't add any parameter semantics beyond what's in the schema, so it meets the baseline of 3 for high schema coverage without compensating value.

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 states the verb 'Get' and the resources 'training readiness score and recommendations', making the purpose understandable. However, it doesn't differentiate this tool from sibling tools like 'get_training_status' or 'get_training_effect', which also appear to provide training-related metrics, so it doesn't fully distinguish itself from 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 description provides no guidance on when to use this tool versus alternatives. With many sibling tools like 'get_training_status' and 'get_training_effect', there's no indication of what makes 'training readiness' unique or when it's preferred over other training metrics tools.

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 current training status including training effect, load balance, and fitness trends

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNoDate in YYYY-MM-DD format, defaults to today2026-02-01

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations, the description carries full burden but lacks behavioral details. It doesn't disclose permissions, rate limits, response format, or whether it's a read-only operation. The description implies a read operation ('Get'), but without annotations, it should explicitly state safety or constraints, which it does not.

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 a single, efficient sentence with zero waste. It front-loads the core purpose and lists key metrics without unnecessary details, making it easy to parse and understand quickly.

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?

Given no annotations, no output schema, and a simple input schema, the description is minimally adequate. It covers the tool's purpose but lacks behavioral context and usage guidance. For a read operation with one parameter, it's functional but could be more informative about response format or constraints.

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 100%, so the schema fully documents the 'date' parameter. The description adds no additional parameter semantics beyond implying date-based retrieval, which is already covered in the schema. Baseline 3 is appropriate as the schema handles parameter documentation adequately.

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 states the tool's purpose: 'Get current training status' with specific metrics (training effect, load balance, fitness trends). It distinguishes from siblings like 'get_training_effect' or 'get_training_load_balance' by combining multiple metrics, though it doesn't explicitly name these siblings for comparison.

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?

No guidance is provided on when to use this tool versus alternatives. It doesn't mention prerequisites, context, or compare with similar tools (e.g., 'get_training_effect' or 'get_training_load_balance'), leaving the agent to infer usage based on the description alone.

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

get_vo2maxB

Get current VO2 Max value and historical data

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNoDate in YYYY-MM-DD format, defaults to today2026-02-01

TDQS

B3.1/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 of behavioral disclosure. It mentions retrieving 'current' and 'historical' data, implying a read operation, but does not specify data freshness, access permissions, rate limits, or error conditions. This leaves significant gaps in understanding the tool's behavior for a mutation-free but data-sensitive context.

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 a single, efficient sentence that front-loads the core purpose without unnecessary details. It uses minimal words to convey the essential action and data scope, making it highly concise and well-structured for quick comprehension.

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?

Given the tool's low complexity (1 optional parameter, no output schema, no annotations), the description is minimally adequate. It states what data is retrieved but lacks details on data format, historical range, or integration with other tools. Without annotations or output schema, more context on behavioral aspects would improve completeness for a fitness data 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?

The input schema has 100% description coverage, with the 'date' parameter fully documented in the schema. The description does not add any meaning beyond the schema, such as explaining how historical data is retrieved or default behavior, so it meets the baseline score of 3 for high schema coverage without extra value.

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 states the verb 'Get' and the resource 'current VO2 Max value and historical data', making the purpose evident. However, it does not explicitly differentiate from sibling tools like 'get_advanced_running_metrics' or 'get_training_status', which might also provide fitness-related data, so it lacks sibling differentiation for a perfect score.

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 provides no guidance on when to use this tool versus alternatives. It does not mention context, prerequisites, or exclusions, such as whether it requires recent activity data or how it differs from other fitness metrics tools in the sibling list, leaving the agent with minimal usage direction.

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

get_weekly_running_summaryC

Get comprehensive weekly running summary with trends and analysis

ParametersJSON Schema
NameRequiredDescriptionDefault
weeks_backNoNumber of weeks to analyze

TDQS

C2.9/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 of behavioral disclosure. It mentions 'comprehensive weekly running summary with trends and analysis', which hints at a read-only, analytical operation, but fails to specify critical details like data sources, permissions required, rate limits, or whether it aggregates historical data. This leaves significant gaps in understanding the tool's behavior.

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?

The description is a single, efficient sentence that front-loads the core purpose without unnecessary words. It could be slightly improved by adding brief context, but it earns its place by being direct and to the point, with no wasted verbiage.

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?

Given the complexity of a summary tool with trends and analysis, no annotations, and no output schema, the description is incomplete. It lacks details on return format, data scope, error handling, or how it differs from similar tools, making it inadequate for an agent to fully understand and invoke the tool correctly without additional context.

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?

The input schema has 100% description coverage, with 'weeks_back' clearly documented as 'Number of weeks to analyze' and a default of 1. The description adds no additional parameter semantics beyond what the schema provides, such as format constraints or usage examples, so it meets the baseline for high schema coverage without compensating value.

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 states the verb 'Get' and the resource 'comprehensive weekly running summary with trends and analysis', making the purpose specific and understandable. However, it does not explicitly distinguish this tool from sibling tools like 'get_running_trends' or 'get_weekly_activity_summary' (implied), which could cause ambiguity in selection.

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 provides no guidance on when to use this tool versus alternatives, such as 'get_running_trends' or 'get_weekly_activity_summary'. It lacks context on prerequisites, frequency, or specific scenarios, leaving the agent to 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.

list_training_plansA

List available Garmin running training plans with optional filters for goal distance and experience level

ParametersJSON Schema
NameRequiredDescriptionDefault
goal_distanceNoFilter plans by goal distance (e.g. marathon, half marathon)
experience_levelNoFilter plans by experience level (e.g. beginner, intermediate, advanced)
max_itemsNoMaximum number of plans to return (default 5)

TDQS

A3.5/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 mentions optional filtering but lacks details on behavioral traits such as whether this is a read-only operation, if it requires authentication, rate limits, pagination behavior (beyond the max_items parameter), or what the output format looks like. For a tool with no annotation coverage, this is a significant gap.

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 a single, efficient sentence that front-loads the core purpose ('List available Garmin running training plans') and adds essential qualifiers ('with optional filters for goal distance and experience level'). Every word contributes meaning without redundancy or fluff.

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?

Given the tool's moderate complexity (listing with filters), no annotations, and no output schema, the description is minimally adequate. It covers the purpose and parameters but lacks behavioral context (e.g., safety, output format) and explicit usage guidelines compared to siblings, leaving gaps that could hinder an agent's effective use.

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 100%, so the schema already documents all three parameters (goal_distance, experience_level, max_items) with descriptions and a default for max_items. The description adds marginal value by mentioning optional filters for goal distance and experience level, but doesn't provide additional syntax, examples, or constraints beyond what's in the schema, aligning with the baseline for high coverage.

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

Purpose5/5

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

The description clearly states the verb ('List') and resource ('Garmin running training plans'), specifies the domain (running training plans), and distinguishes from siblings by focusing on listing plans rather than analyzing metrics, downloading files, or setting goals. It's specific and immediately understandable.

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 description implies usage through optional filters for goal distance and experience level, suggesting it's for finding relevant plans. However, it doesn't explicitly state when to use this tool versus alternatives like 'get_training_plan_overview' or 'get_training_plan_schedule', nor does it mention prerequisites or exclusions, leaving some ambiguity.

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

set_race_goalC

Set a target race goal and track progress

ParametersJSON Schema
NameRequiredDescriptionDefault
race_distanceYesTarget race distance (5K, 10K, half_marathon, marathon)
target_timeYesTarget race time in HH:MM:SS format
race_dateYesTarget race date in YYYY-MM-DD format

TDQS

C2.9/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 full burden. 'Set' implies a write/mutation operation, but the description doesn't disclose whether this requires authentication, what happens to existing goals, whether changes are reversible, or what the response looks like. It mentions 'track progress' but doesn't explain how this tracking manifests or what side effects occur.

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?

The description is a single, efficient sentence that gets straight to the point. It's appropriately sized for a simple tool with three parameters. There's no wasted language, though it could potentially be more front-loaded with critical information about the tool's behavioral characteristics.

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 mutation tool with no annotations and no output schema, the description is incomplete. It doesn't explain what happens after setting the goal, how progress tracking works, what the response contains, or any error conditions. The combination of a write operation with minimal behavioral disclosure creates significant gaps for an AI agent.

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 100%, so the schema already documents all three parameters with their types, formats, and required status. The description adds no additional parameter information beyond what's in the schema. The baseline score of 3 reflects adequate but minimal value added by the description regarding 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?

The description clearly states the tool's purpose with a specific verb ('Set') and resource ('target race goal'), and mentions tracking progress. It distinguishes from most sibling tools which are primarily analytical or retrieval-based, though it doesn't explicitly differentiate from potential goal-setting 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 description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, appropriate contexts, or exclusions. With many sibling tools focused on analysis and data retrieval, there's no indication of when goal-setting is appropriate versus when to use other tools.

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

suggest_daily_workoutC

Suggest appropriate workout based on current condition and training phase

ParametersJSON Schema
NameRequiredDescriptionDefault
training_phaseNoCurrent training phase (base, build, peak, taper, recovery)build

TDQS

C2.9/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 of behavioral disclosure. It states the tool 'suggests' a workout, implying a read-only or advisory operation, but doesn't clarify if this requires specific permissions, how suggestions are generated (e.g., based on historical data), or what the output format might be (e.g., structured plan vs. text). For a tool with zero annotation coverage, this is a significant gap in transparency.

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

Conciseness4/5

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

The description is a single, efficient sentence that front-loads the core purpose ('Suggest appropriate workout'). There's no wasted text, and it's appropriately sized for a simple tool. However, it could be slightly more structured by explicitly separating inputs or outcomes, keeping it from a perfect score.

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?

Given the tool's complexity (a suggestion tool with no output schema and no annotations), the description is incomplete. It doesn't explain what the output looks like (e.g., workout details, duration, intensity), how suggestions are tailored, or any behavioral constraints. With siblings offering detailed analytics, this tool's description lacks the depth needed for an agent to use it effectively without guesswork.

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?

The input schema has 1 parameter with 100% description coverage, detailing 'training_phase' with a default and allowed values. The description adds minimal value beyond the schema by mentioning 'current condition and training phase', but 'current condition' isn't reflected in the parameters, creating a slight mismatch. With high schema coverage, the baseline is 3, as the description doesn't significantly enhance parameter understanding.

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 states the tool's purpose: 'Suggest appropriate workout based on current condition and training phase.' It specifies the verb ('suggest') and resource ('workout'), and distinguishes it from siblings that are primarily analytical (e.g., 'analyze_heart_rate_zones') or data-fetching (e.g., 'get_activities_for_date'). However, it doesn't explicitly differentiate from tools like 'calculate_training_paces' or 'list_training_plans', which might also relate to workout planning, keeping it from a perfect score.

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 provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing prior data from other tools), exclusions, or comparisons to siblings like 'list_training_plans' or 'calculate_training_paces'. The context is implied ('based on current condition and training phase') but lacks explicit usage instructions, leaving the agent to infer when this is appropriate.

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. 14 tool updatesv0.1.0
    • Changedget_body_battery1 field changed
      • changedInput schema / properties / date / default
        Previous value: -"2026-01-25"New value: +"2026-02-01"
    • Changedget_daily_activity1 field changed
      • changedInput schema / properties / date / default
        Previous value: -"2026-01-25"New value: +"2026-02-01"
    • Changedget_endurance_score1 field changed
      • changedInput schema / properties / date / default
        Previous value: -"2026-01-25"New value: +"2026-02-01"
    • Changedget_heart_rate_metrics1 field changed
      • changedInput schema / properties / date / default
        Previous value: -"2026-01-25"New value: +"2026-02-01"
    • Changedget_hill_score1 field changed
      • changedInput schema / properties / date / default
        Previous value: -"2026-01-25"New value: +"2026-02-01"
    • Changedget_hrv_data1 field changed
      • changedInput schema / properties / date / default
        Previous value: -"2026-01-25"New value: +"2026-02-01"
    • Changedget_lactate_threshold1 field changed
      • changedInput schema / properties / date / default
        Previous value: -"2026-01-25"New value: +"2026-02-01"
    • Changedget_respiration_data1 field changed
      • changedInput schema / properties / date / default
        Previous value: -"2026-01-25"New value: +"2026-02-01"
    • Changedget_sleep_analysis1 field changed
      • changedInput schema / properties / date / default
        Previous value: -"2026-01-25"New value: +"2026-02-01"
    • Changedget_spo2_data1 field changed
      • changedInput schema / properties / date / default
        Previous value: -"2026-01-25"New value: +"2026-02-01"
    • Changedget_stress_levels1 field changed
      • changedInput schema / properties / date / default
        Previous value: -"2026-01-25"New value: +"2026-02-01"
    • Changedget_training_readiness1 field changed
      • changedInput schema / properties / date / default
        Previous value: -"2026-01-25"New value: +"2026-02-01"
    • Changedget_training_status1 field changed
      • changedInput schema / properties / date / default
        Previous value: -"2026-01-25"New value: +"2026-02-01"
    • Changedget_vo2max1 field changed
      • changedInput schema / properties / date / default
        Previous value: -"2026-01-25"New value: +"2026-02-01"
  2. 43 tool updates
    • First observedanalyze_heart_rate_zones
    • First observedanalyze_threshold_zones
    • First observedanalyze_training_load
    • First observedanalyze_workout_quality
    • First observedcalculate_training_paces
    • First observedcalculate_vdot_zones
    • First observeddownload_activity_file
    • First observedget_activities_for_date
    • First observedget_activity_details
    • First observedget_activity_summary
    • First observedget_advanced_running_metrics
    • First observedget_body_battery
    • First observedget_daily_activity
    • First observedget_device_settings
    • First observedget_devices
    • First observedget_endurance_score
    • First observedget_gear_insights
    • First observedget_heart_rate_metrics
    • First observedget_hill_score
    • First observedget_hrv_data
    • First observedget_lactate_threshold
    • First observedget_paginated_activities
    • First observedget_personal_records
    • First observedget_primary_training_device
    • First observedget_race_predictions
    • First observedget_recent_running_activities
    • First observedget_recovery_time
    • First observedget_respiration_data
    • First observedget_running_trends
    • First observedget_sleep_analysis
    • First observedget_spo2_data
    • First observedget_stress_levels
    • First observedget_training_effect
    • First observedget_training_load_balance
    • First observedget_training_plan_overview
    • First observedget_training_plan_schedule
    • First observedget_training_readiness
    • First observedget_training_status
    • First observedget_vo2max
    • First observedget_weekly_running_summary
    • First observedlist_training_plans
    • First observedset_race_goal
    • First observedsuggest_daily_workout

TDQS

B3.2/5.0

Scored across 43 tools

Disambiguation4/5

Most tools have distinct purposes, but there is some overlap in analysis tools (e.g., analyze_training_load, get_training_load_balance, get_training_status) and data retrieval tools (e.g., get_activities_for_date, get_paginated_activities, get_recent_running_activities) that could cause confusion. Descriptions help differentiate them, but the boundaries are not always clear.

Naming Consistency5/5

Tool names follow a highly consistent verb_noun pattern throughout, with clear and descriptive naming (e.g., get_activity_details, analyze_heart_rate_zones, calculate_training_paces). There are no deviations in style or convention, making the set predictable and readable.

Tool Count2/5

With 43 tools, the count is excessive for the server's purpose of Garmin Connect integration. Many tools could be consolidated (e.g., multiple get_* tools for similar data types), leading to a bloated and overwhelming interface that may hinder agent usability.

Completeness5/5

The tool set provides comprehensive coverage for fitness and training data, including activity retrieval, analysis, metrics, planning, and recovery. It supports full CRUD-like operations (e.g., get, analyze, set, suggest) across the domain, with no obvious gaps in functionality.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    MCP 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.
    17
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    A lightweight Garmin Model Context Protocol server with 12 curated endpoints for endurance athletes, enabling natural-language queries of activity, training, health, device, and goal data from Garmin Connect.
    12
    MIT