Skip to main content
Glama
Running Companion MCP Server

Running Companion MCP Server

This server has been deprecated

Personal project, not offered for public use.

Trend

get_trend
Read-only

Retrieve weekly or monthly trends for a selected running or health metric over an optional date range to compare fitness, recovery, sleep, and training load over time.

Instructions

A metric aggregated per week or month. Metrics: fitness (Fitness (CTL) at period end); form (Average form (TSB)); load (Total training load (TRIMP)); run_km (Running distance (km)); runs (Number of runs); hrv (Average nightly HRV (ms)); resting_hr (Average resting HR (bpm)); sleep_h (Average sleep (hours)); sleep_need_h (Average Garmin sleep need (hours)); weight_kg (Weight trend (kg) at period end); body_fat_pct (Body fat trend (%) at period end); easy_efficiency (Metres per heartbeat on easy outdoor runs); pace_at_ref_hr (Pace at the reference HR on outdoor runs); decoupling (Average decoupling (%) on steady runs of 30+ min); low_intensity_pct (Share of running time below LT1 (%)); sleep_score (Garmin's sleep score (0–100), average per night); deep_sleep_h (Deep sleep per night (hours)); rem_sleep_h (REM sleep per night (hours)); breathing_rate (Overnight breathing rate (breaths per minute)); spo2 (Overnight blood oxygen, SpO2 (%)); sleep_stress (Stress during sleep (0–100)); stress (All-day stress (0–100), average per day); body_battery_morning (Body Battery peak of the day, usually right after waking (0–100)); steps (Steps per day); calories (Calories burned per day (resting + active)); active_calories (Active calories per day); intensity_minutes (Intensity minutes, total for the period (vigorous count double, as Garmin and the WHO count them)).

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "metric": "<metric>"
    },
    "name": "get_trend"
  }
}

Input Schema

NameRequiredDescriptionDefault
toNo
fromNo
metricYes
periodNomonth

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.3.3

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds genuine behavioral meaning about how values are computed (period-end snapshots for fitness/weight/body_fat_pct, averages for most metrics, total for intensity_minutes), but says nothing about missing-data handling, date-range defaults, or result ordering.

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

Conciseness3/5

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

There is no filler — every metric definition earns its place given the 0% schema coverage — but the content is delivered as one semicolon-delimited wall of text that is hard to scan. The leading sentence is a noun fragment rather than an actionable statement, so the description is not front-loaded with what the tool does.

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 4-parameter read tool with no output schema, the metric semantics are unusually complete, but key caller questions remain unanswered: what date range is used if from/to are omitted, whether the response is one row per period, and what happens when a metric has no data. These gaps matter because the tool's whole value is the time-bucketed output shape.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate, and it does so thoroughly for the metric enum — all 27 values are defined with units and aggregation semantics, well beyond the bare enum. However, the from/to parameters are never mentioned (format must be inferred from the regex pattern) and the period default of 'month' is not stated, leaving two of four parameters under-specified.

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

Purpose4/5

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

The description identifies the resource and the aggregation shape ('A metric aggregated per week or month') and enumerates every supported metric with its unit, so an agent knows exactly what data comes back. It stops short of a clear verb ('retrieve/get') and never names a sibling such as get_weekly_summary or get_progress, so differentiation is left to inference.

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

Usage Guidelines2/5

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

There is no when-to-use guidance at all: nothing says when to prefer this over get_today, get_weekly_summary, or query, nor when a weekly vs monthly period is appropriate. The only implied usage is the sentence fragment about weekly/monthly aggregation, which the agent must reverse-engineer.

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