Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
SMTP_TONoDefault recipient(s), comma-separated
LLM_MODELNoLLM model name (default: gpt-4o-mini)gpt-4o-mini
SMTP_FROMNoSender email address (defaults to SMTP_USER)
SMTP_HOSTNoSMTP server host (e.g., smtp.gmail.com)
SMTP_PORTNoSMTP port (default: 587)587
SMTP_USERNoSMTP username/email
OUTPUT_DIRNoOutput directory for saved files (default: output/)
LLM_API_KEYNoLLM API key (setting this enables LIDA tools)
GARMIN_EMAILNoGarmin account email
LLM_API_BASENoCustom LLM API base URL (e.g., http://localhost:1234/v1)
LLM_PROVIDERNoLLM provider for LIDA tools (default: openai)openai
SMTP_USE_SSLNoSet to 'true' for implicit SSL (port 465)
SMTP_PASSWORDNoSMTP password or app-password
GARMIN_PASSWORDNoGarmin account password
GARTH_SESSION_PATHNoPath to saved Garmin session file (default: ~/.garth)

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tasks
{
  "list": {},
  "cancel": {},
  "requests": {
    "tools": {
      "call": {}
    },
    "prompts": {
      "get": {}
    },
    "resources": {
      "read": {}
    }
  }
}
tools
{
  "listChanged": true
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
garmin_current_datetimeA

Return current date and time variables (local and UTC). Use for building date ranges or passing today's date to other Garmin tools (e.g. YYYY-MM-DD for day/sleep/weight).

garmin_loginA

Log in to Garmin Connect with email and password. Saves the session to the given path (default: ~/.garth) so you can use resume_session later without logging in again.

garmin_resume_sessionA

Resume a previously saved Garmin session from disk. Use this (or set GARTH_SESSION_PATH) before calling other tools so they are authenticated. Default path: ~/.garth.

garmin_user_profileB

Get the current user's Garmin Connect profile (display name, timezone, activities, etc.).

garmin_user_settingsA

Get the current user's Garmin Connect settings (units, preferences, etc.).

garmin_metricA

Fetch daily or weekly stat series from Garmin Connect.

metric: "steps", "sleep", "stress", "hydration", "intensity_minutes", or "hrv". period: "daily" (default) or "weekly". end_date: YYYY-MM-DD (defaults to today/this week). count: number of days or weeks to fetch (default 7).

Examples: garmin_metric(metric="steps", period="daily", count=14) garmin_metric(metric="stress", period="weekly", count=4) garmin_metric(metric="hrv", count=28)

garmin_dataA

Fetch detailed health data from Garmin Connect.

data_type: "sleep", "hrv", "weight", "body_battery_events", or "body_battery_stress". day: YYYY-MM-DD for single-day data. If omitted, fetches a list. end_date: YYYY-MM-DD end of range for list mode (defaults to today). days: number of days for list mode (default 7; up to 30 for weight).

When day is provided: returns detailed data for that single day. When day is omitted: returns a list of entries over the date range.

Note: body_battery_events and body_battery_stress only support single-day mode (day param).

Examples: garmin_data(data_type="sleep", day="2026-02-01") # single day garmin_data(data_type="sleep", days=14) # last 14 days garmin_data(data_type="weight", end_date="2026-02-01", days=30) garmin_data(data_type="body_battery_events", day="2026-02-01")

garmin_activitiesA

List activities from Garmin Connect. start: index to start from, limit: max number to return. Returns activity IDs, names, types, start time, duration, distance, etc.

garmin_activity_detailsA

Get full details for one activity by ID (running, cycling, strength, etc.). Includes summary (distance, duration, HR, calories, cadence, etc.), splits, and metadata. Use garmin_activities first to get activity_id values.

garmin_activity_typesA

List all Garmin activity types (running, cycling, strength_training, etc.) with type IDs and keys.

garmin_daily_summaryA

Get one-day wellness summary (biomarkers): RHR, min/max HR, stress, steps, distance, calories, SpO2 (avg/low/high), respiration (avg/low/high), body battery (charged/max/min), intensity minutes, floors, sleep summary. day: YYYY-MM-DD.

garmin_resting_heart_rateA

Get resting heart rate (RHR) for one or more days. end_date: YYYY-MM-DD or omit for today. Returns daily RHR and optional 7-day average. metricId 60 = resting heart rate.

garmin_summary_reportA

Generate a comprehensive summary of all essential biomarkers and activity stats.

period: "daily" (1 day), "weekly" (7 days), "biweekly" (14 days), or "monthly" (30 days). end_date: YYYY-MM-DD (defaults to today).

Includes: RHR, HRV, stress, sleep score, SpO2, respiration, body battery, steps, hydration, intensity minutes, calories, weight, activities breakdown, and strength training sessions.

garmin_email_summaryA

Generate a Garmin summary report and email it via SMTP.

period: "daily", "weekly", "biweekly", or "monthly" (default: weekly). end_date: YYYY-MM-DD (defaults to today). to: recipient email(s), comma-separated (defaults to SMTP_TO env var). subject: custom subject line (auto-generated if omitted).

Requires SMTP env vars: SMTP_HOST, SMTP_PORT, SMTP_USER, SMTP_PASSWORD. Optional: SMTP_FROM (defaults to SMTP_USER), SMTP_TO (default recipient), SMTP_USE_SSL ("true" for port-465 implicit SSL; default is STARTTLS).

The email contains a formatted HTML report (with plain-text fallback) covering all biomarkers: HR, HRV, stress, sleep, SpO2, respiration, body battery, steps, hydration, intensity minutes, calories, weight, activities, and strength training sessions.

FOCUS MORE ON STRENGTH AND CARDIO BIO-MARKERS IF POSSIBLE.

garmin_connect_apiA

Call the Garmin Connect API at an arbitrary path. Use for endpoints not wrapped by other tools. path: e.g. /userprofile-service/socialProfile or /activitylist-service/... method: GET or POST. body: optional JSON string for POST.

garmin_statsA

Perform a statistical analysis operation on numeric data.

operation: one of "describe", "percentiles", "correlation", "trend", "compare", "moving_average", "outliers".

Common params: values: primary list of numeric values (required for all operations). y: second list of values (for "correlation" and "compare"). labels: parallel date/label list (for "trend" and "moving_average").

Operation-specific params: describe: (no extra params needed) percentiles: percentiles (list of ranks 0-100, default [5,10,25,50,75,90,95]) correlation: y (required), method ("pearson" or "spearman") trend: labels (optional date labels) compare: y (required sample B), a_label, b_label moving_average: window (default 7), labels outliers: method ("iqr" or "zscore"), threshold (default 1.5)

Examples: Descriptive stats: operation="describe", values=[65,62,68,70,64] Trend analysis: operation="trend", values=[rhr_vals...], labels=[dates...] Correlation: operation="correlation", values=[steps...], y=[sleep_scores...], method="pearson" Compare weeks: operation="compare", values=[this_week...], y=[last_week...], a_label="this_week", b_label="last_week"

garmin_vizA

Render a chart and return the image inline (displayed by Claude Desktop) plus the saved file path.

chart_type: "line", "bar", "scatter", "histogram", "pie", "heatmap", or "multi_line".

Common params (used by most types): x: x-axis values or labels. y: y-axis values (for histogram, pass the data here). title, x_label, y_label: chart labels.

Type-specific params: histogram: bins (default 20). heatmap: matrix (2-D list), x_labels, y_labels. multi_line: y_series (list of y-value lists), series_labels.

Examples: Line: chart_type="line", x=["Mon","Tue",...], y=[8000,9200,...] Bar: chart_type="bar", x=["running","strength"], y=[5,3] Scatter: chart_type="scatter", x=[steps...], y=[sleep_scores...] Histogram: chart_type="histogram", y=[hrv_values...] Pie: chart_type="pie", x=["running","cycling"], y=[120,80] Heatmap: chart_type="heatmap", matrix=[[...],[...]], x_labels=["Mon",...], y_labels=["Wk1",...] Multi-line: chart_type="multi_line", x=[dates...], y_series=[[rhr...],[stress...]], series_labels=["RHR","Stress"]

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A3.6/5.0

Scored across 17 tools

Disambiguation2/5

Multiple tools overlap heavily: garmin_metric, garmin_data, garmin_daily_summary, garmin_summary_report, and garmin_email_summary all expose sleep, stress, HRV, or biomarker data in slightly different forms. garmin_summary_report and garmin_email_summary are nearly identical except for the email side effect, and garmin_connect_api adds another ambiguous path to the same data.

Naming Consistency4/5

The garmin_ prefix and snake_case style are consistent, and most names follow a readable resource-style pattern like garmin_activities or garmin_daily_summary. Minor inconsistencies like garmin_stats, garmin_viz, and garmin_email_summary (verb-style) keep it from being perfectly uniform.

Tool Count3/5

17 tools is in the borderline-heavy range for one server, especially since several tools are auxiliary (stats, viz, email, generic API passthrough) rather than core Garmin data retrieval. The overlapping wellness and summary tools could be consolidated to reduce the count without losing capability.

Completeness4/5

The tool set covers the core Garmin domain well: activities, activity details, biomarkers, user profile/settings, authentication, and an API fallback. Minor gaps exist, such as no explicit write/upload tools or dedicated series for every biomarker, but garmin_connect_api mitigates most missing endpoints.

Maintenance

ActivityInactive
ResponsivenessNo issues