Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
CATENCE_DATA_DIRNoPath to the Catence data directory. The --data-dir command-line option takes precedence over this variable. If neither is supplied, the legacy default remains .catence/ under the process working directory..catence/

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": true
}
prompts
{
  "listChanged": true
}
resources
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
list_athletesA

List athlete IDs and labels available to this shared Catence agent. No personal metrics are returned.

catence_statusA

Read sync state, data coverage, entity counts, stream availability, unresolved errors, and retrieval-index freshness. Read-only. Requires athleteId from list_athletes.

catence_sync_progressA

Read live progress heartbeats for active sync runs, plus the most recent completed or interrupted runs. Read-only. Requires athleteId from list_athletes.

start_detached_syncA

Write-only sync trigger, named like the other explicit lock-guarded write tools. Spawns one detached catence-data sync process for this athlete and returns immediately with the run handle and log file; it refuses while another sync run is active. Track the run with catence_sync_progress; this tool never waits for completion. Requires athleteId from list_athletes.

review_daily_recovery_loadA

Return source-cited daily health, training, and nutrition facts for a recovery/load review. It does not prescribe a training plan. Requires athleteId from list_athletes.

review_weekly_trainingA

Return source-cited health, training, and nutrition facts for the seven-day period ending on an optional date. It does not prescribe a training plan. Requires athleteId from list_athletes.

review_activity_deep_diveA

Return canonical activity identity, source summaries, and structured intervals. Call read_series separately only when a specific sampled metric is required. Requires athleteId from list_athletes.

describe_dataA

List cataloged datasets, fields, units, permitted filters/groupings, providers, and time coverage. Read-only. Requires athleteId from list_athletes.

describe_datasetA

Read a compact schema, permitted filters/groupings, provenance fields, and coverage for one cataloged dataset. Read-only. Requires athleteId from list_athletes.

read_seriesA

Read cataloged numeric series with deterministic cursor pagination and automatic stream downsampling. metrics must be numeric catalog columns; place identifiers and other strings in filters. Call describe_dataset first if the fields are uncertain. Requires athleteId from list_athletes.

aggregate_dataA

Declarative aggregation over one cataloged dataset. A timeBucket adds a time_bucket field, which can be used in orderBy. No joins, arbitrary expressions, or file paths. Requires athleteId from list_athletes.

analyze_seriesC

Run deterministic rolling statistics, baselines, correlations, seasonal comparisons, or trends on a cataloged series. Requires athleteId from list_athletes.

fit_series_modelB

Fit a bounded OLS, Theil–Sen, quadratic, or cubic descriptive model. Not a sport-performance model. Requires athleteId from list_athletes.

activity_decouplingA

Derive aerobic decoupling (Pa:Hr for running using speed/HR, Pw:Hr for cycling using power/HR — drift across steady first/second halves) and grade-adjusted pace (GAP, Minetti 2002 cost model) from stored activity_samples for one activity. Returns null with explanatory caveats when samples are insufficient, walk-heavy, or stop-heavy. Derived values are descriptive only and never overwrite provider-supplied decoupling/GAP. Read-only. Requires athleteId from list_athletes.

wellness_correlateA

Calculate a compact daily Pearson or Spearman correlation between curated wellness and training metrics, with an optional -7 through +7 day lag scan. Descriptive only. Requires athleteId from list_athletes.

wellness_baselinesA

Return trailing means, standard-deviation bands, latest values, and latest z-scores for common recovery and training metrics. Missing values remain missing. Requires athleteId from list_athletes.

wellness_anomaliesB

Find daily recovery and wellness outliers by z-score and group dates with anomalies across multiple signals. This does not diagnose or prescribe. Requires athleteId from list_athletes.

wellness_coverageA

Report present and missing dates for curated wellness/training metrics, plus unresolved extraction errors. Missing data is never interpreted as rest or a health outcome. Requires athleteId from list_athletes.

get_ftp_historyB

Return normalized cycling FTP settings and activity-summary observations with source-aware preferred daily values. Read-only. Requires athleteId from list_athletes.

readiness_baselineA

Combine the full performance-indicator set — running lactate threshold (pace/power/HR), VO₂max, race predictions, fitness trend, endurance score, and FIT-derived power bests/coverage — as trends in one call. Use this before any single-activity comparison for race-readiness or fitness-target questions. Requires athleteId from list_athletes.

resolve_event_courseA

Given a Garmin/Intervals eventId, return the courseId it references and whether that course geometry has been synced. When geometry is absent, the result carries an explicit caveat so a prior course profile is never reused. Optionally pass pastActivityId to diff the event course against that activity's course. Requires athleteId from list_athletes.

get_vo2max_historyA

Return normalized Garmin VO₂max observations for exactly one sport. For running, pass sport: running (or run): Garmin supplies that series with raw sport generic, which is preserved in each row. Cycling remains separate. Omit sport only to inspect available source labels. Read-only. Requires athleteId from list_athletes.

find_activitiesA

Find canonical activities by sport, distance, name, and date. Results are paginated and transparently flag likely-race signals without claiming provider-confirmed race metadata. Read-only. Requires athleteId from list_athletes.

get_swim_lapsA

Return source-aware swim lengths when a provider actually supplied them, plus Garmin detected and Intervals.icu auto-detected sets. A missing length list is reported as unavailable; laps are never reconstructed from samples. Requires athleteId from list_athletes.

swim_progress_reportA

Compare Garmin swimming summaries and data completeness over a date range, optionally within one pool length. It does not derive pace trends from moving time divided by distance. Requires athleteId from list_athletes.

get_activity_segmentsA

For a selected activity’s segments, climbs, KOM/PRs, or per-segment analysis: automatically hydrate the matching Strava activity before returning its persisted segment efforts. Use this before saying segment data is unavailable. Requires athleteId from list_athletes.

power_curve_trendA

Return monthly bests for selected power durations from an explicit sport or sport family, including the supporting activity and source type. Read-only. Requires athleteId from list_athletes.

power_coverage_reportA

Report powered activities and the complete duration-best inventory for an explicit sport or sport family. Uses Garmin FIT-derived power, not sparse activity summaries. Read-only. Requires athleteId from list_athletes.

latest_cycling_activitiesA

List Garmin cycling source records without duplicate Intervals summaries, optionally flagging multisport parent records. Read-only. Requires athleteId from list_athletes.

cycling_progress_reportA

Combine source-aware FTP and VO₂max histories with monthly canonical volume/load and labelled power-curve trends. Read-only and descriptive. Requires athleteId from list_athletes.

query_read_only_dataA

Advanced fallback after describe_data/describe_dataset: one parameterized SELECT or WITH … SELECT over cataloged views only. Do not query information_schema, DuckDB system tables, or uncataloged physical relations. Results use deterministic cursor pagination and always report whether they are incomplete. Filesystem access, extensions, DDL, and mutation are rejected. Requires athleteId from list_athletes.

search_contextA

Search compact generated activity, plan, nutrition, and message context. Results identify authoritative follow-up tools rather than making numerical claims. Requires athleteId from list_athletes.

hydrate_strava_activityA

Write-only targeted enrichment. Safely matches exactly one Catence activity/source to Strava, then archives and persists its activity detail, gear assignment, and segment efforts. For a segment/climb request, prefer get_activity_segments, which invokes this prerequisite automatically. Requires athleteId from list_athletes.

hydrate_recent_strava_activitiesA

Write-only targeted batch enrichment. Select an explicit list or a bounded date/sport window; Catence hydrates one activity at a time and reports every outcome. Requires athleteId from list_athletes.

hydrate_strava_segment_historyA

Write-only targeted enrichment. Fetches a persisted Strava segment and the authenticated athlete’s paged historic efforts; interrupted or throttled work is resumable. Requires athleteId from list_athletes.

Prompts

Interactive templates invoked by user choice

NameDescription
daily_recovery_load_reviewAsk for a source-cited recovery and training-load review for one date.
weekly_training_reviewAsk for a source-cited seven-day training review ending on an optional date.
activity_deep_diveAsk for an evidence-first deep dive into one canonical Catence activity.

Resources

Contextual data attached and managed by the client

NameDescription
athletes
tools

TDQS

B3.4/5.0

Scored across 35 tools

Disambiguation4/5

Most tools map cleanly to distinct resource/action pairs (e.g., describe_data vs describe_dataset, read_series vs aggregate_data). A few pairs like readiness_baseline/wellness_baselines and catence_status/catence_sync_progress could be confused, but their descriptions generally clarify the boundary.

Naming Consistency4/5

The vast majority of tools follow a consistent snake_case verb_noun pattern like review_*, get_*, describe_*, and hydrate_*. Minor deviations such as activity_decoupling, wellness_correlate, and catence_status keep it from a perfect 5, but the overall naming is predictable.

Tool Count2/5

At 35 tools, the surface is large and exceeds the 'too many' threshold for most agent-facing servers. Even for a broad athlete analytics domain, the selection burden is significant, and several related reporting tools could plausibly be consolidated.

Completeness4/5

The set covers the apparent athlete-analytics domain well: activity retrieval, series querying, statistical analysis, wellness metrics, cycling/swimming/running reports, sync control, and Strava enrichment. Minor gaps exist, such as no direct plan or nutrition detail tool despite search_context indexing those concepts, but core workflows generally resolve without dead ends.

Maintenance

ActivityActive
ResponsivenessNo issues