Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
RUNCOACH_TZNoIANA zone for 'which day was this run'system zone
RUNCOACH_LOGNoLog level — set INFO or DEBUG to watch a sync. INFO and DEBUG also log every HTTP request of the web appWARNING
RUNCOACH_HOMENoData directory~/.runcoach
RUNCOACH_MODELNoModel for coach cardsCLI default
RUNCOACH_TOKENNoRequired for --host 0.0.0.0 (phone in your home network)
RUNCOACH_QUOTA_WAIT_SNoHow long a job waits for subscription quota3600
RUNCOACH_GARMIN_TOKENSNoReuse an existing python-garminconnect token dir~/.runcoach/garmin
RUNCOACH_JOB_TIMEOUT_SNoHard timeout for a single coach job600
RUNCOACH_LT_HISTORY_DAYSNoHow far back the lactate-threshold history is fetched180
RUNCOACH_ACTIVITY_BACKFILL_DAYSNoMinimum window of workouts a sync fetches (the ACWR fallback needs ~28 days)35

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
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
get_training_readinessA

Today's readiness verdict GO / EASY / REST with the signals behind it (HRV status, sleep score, Body Battery, resting HR vs 27-day baseline, ACWR, days since the last hard workout). Rule-based and conservative. START HERE for "should I train today?". Flags stale data explicitly.

get_recovery_summaryA

Averages of sleep, HRV, resting HR, stress, Body Battery and steps over the last N days plus a snapshot of the latest day. Use for "how has my recovery been?". Aggregates only — never a day-by-day list.

get_daily_metricsA

Every recorded recovery value for ONE day (default: latest day with data). Use when a single night/day is in question, not for trends.

get_trendA

Weekly averages of ONE recovery metric over the last N days — for "is my HRV / resting HR / sleep trending up or down?".

get_training_loadA

Training-load picture: ACWR with its SOURCE (Garmin's EWMA ratio, or a self-computed fallback that is less reliable), Garmin training status, VO2max with change, and weekly load buckets. VO2max change is only reported when the value actually varied (Garmin carries the last value forward).

get_recent_activitiesA

Workout digest: totals per sport plus the latest workouts, each run classified Quality / Long Run / Easy (from training effect and duration). Use to see what was actually trained before recommending the next session.

get_intensity_distributionA

Time in heart-rate zones across all runs (easy Z1-2 / moderate Z3 / hard Z4-5 / Z5) with percentages — the basis for the 80/20 polarisation question. States how many runs have zone detail, so an incomplete picture is visible.

analyze_workoutA

Deep dive into ONE run: time in each HR zone, interval structure (rep count, rep length, work vs recovery HR), weather, performance condition, plus rule-based notes. Default: the latest run with detail. The interval structure is Garmin's auto-detection — if the athlete states a different structure, the athlete is right.

get_vo2max_historyA

VO2max over the last 8 weeks as STEPS (only the days the value really changed — Garmin carries it forward in between) plus a descriptive comparison of the last 28 days with the 28 before (distance, Z5 minutes, easy share, temperature). Use for "why is my VO2max moving?". Descriptive, not causal.

sync_garminA

Pull the latest days and workouts from Garmin Connect NOW. Call this first when today's run or last night's sleep is missing. Takes 10-40 s. Read-only towards Garmin; writes only to the local database.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A4.2/5.0

Scored across 10 tools

Disambiguation5/5

Each tool maps to a distinct analytical question: readiness verdict, aggregate recovery, single-day detail, trend, load, activity digest, intensity split, single-workout analysis, VO2max history, and sync. Overlapping data sources are explicitly scoped in the descriptions, so an agent can reliably pick the right one.

Naming Consistency5/5

Nine of ten tools follow the uniform get_<domain> pattern, and the one exception (sync_garmin) is a clearly distinct imperative action. There is no mixing of naming styles or vague generic verbs.

Tool Count5/5

Ten tools is a well-scoped number for a running/recovery analytics server. Each tool covers a distinct data-retrieval concern and none feels redundant or unnecessary.

Completeness4/5

The surface thoroughly covers retrospective training and recovery analysis: readiness, load, trends, activities, intensity, and single-workout details. The main gap is forward-looking coaching functionality such as workout prescription or race prediction, but the stated analytics workflows are essentially complete.

Maintenance

ActivityMaintained
ResponsivenessNo issues