fitbit-air
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| FITBIT_AIR_HOME | No | The folder where everything personal lives. Defaults to ~/.fitbit-air if not set. This folder holds the configuration, secrets, database, and logs. |
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
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_overviewB | One day's scores (with confidence), findings, safety alerts first, and key metrics. Default today. |
| get_trendsA | Daily series with baseline/band. Metrics: rhr, hrv_7d, sleep_debt_h, steps_7d, mvpa_week, sedentary_h, weight_trend_kg, bmi (unknown names return the full list). Scores: score:recovery, score:sleep, score:body_age, score:race. Default last 30 days; max 366. Or pass days=N for the last N days ending at end (default today); not with start. |
| get_sleepA | Nights (bed/wake local, stages, efficiency, naps), sleep scores with subscores, sleep debt, and the Sleep Regularity Index (SRI, -100..100, 100 = identical timing: how alike sleep/wake timing is from day to day, from the sleep score). Default 7 days. Or pass days=N for the last N days ending at end (default today); not with start. |
| get_activityA | Daily steps, brisk minutes, Google zone minutes, sedentary hours, strength, weight; workouts and weigh-ins. Default 7 days. Or pass days=N for the last N days ending at end (default today); not with start. |
| get_runningA | Runs (distance, pace, HR zones, spike flags) and the latest race plan status (if a race is configured). Default 30 days. Or pass days=N for the last N days ending at end (default today); not with start. |
| get_body_ageB | Latest body age on or before the date: display with range, components, levers, missing inputs, trend. |
| get_evidenceB | Citation, DOI and finding for evidence ids attached to scores and insights. |
| data_statusA | Last sync and analysis, row counts, wear days, and how old the Google login is. Call this first. |
| describe_schemaA | Tables and views with columns and purposes, for query_sql. |
| query_sqlA | Run ONE read-only SELECT on the local database (max 500 rows, 5 s; text cells are truncated at 2000 characters). Dates are 'YYYY-MM-DD' strings. |
| log_journalA | Log how the user feels: feeling/energy 1-5, soreness/session_rpe 0-10, illness, alcohol units 0-50, notes. Local only. |
| get_journalB | Journal entries in a date range (default 7 days). Or pass days=N for the last N days ending at end (default today); not with start. |
| save_coach_noteB | Remember an agreed plan, weekly target or observation (kind: plan|target|observation). Local only. |
| get_coach_notesB | Coach notes, overdue first. status: active|done|dropped, or None for every note. due_by: YYYY-MM-DD; only notes with review_on on or before it. |
| update_coach_noteB | Mark a note done/dropped or change its text or review date. |
| set_profileA | Change a profile value and re-run the analysis. Keys: race_date (YYYY-MM-DD), race_distance_km, sleep_need_h, height_m, hrmax_override (a number or a numeric string), sex, units (metric or imperial), timezone (an IANA name such as Europe/London), goals (a list of strings). The value "none" clears race_date, race_distance_km, height_m, hrmax_override and timezone. |
| refresh_dataA | Sync new data from Google now (then analysis runs). Takes up to a few minutes. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| morning_checkin | Morning check-in: safety, recovery and sleep, one suggestion, notes due. |
| weekly_review | Weekly review: last 7 vs previous 28 days, plan status, up to three targets for next week. |
| plan_next_run | Plan the next run within the 10%-a-week build and today's recovery. |
| explain_score | Explain what drove a score (recovery, sleep, body_age, race) and the lever that moves it most. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 17 tools
Most tools target clearly distinct resources or actions (sync, overview, sleep, running, notes, profile, SQL). There is mild overlap among the retrieval tools (get_trends, get_sleep, get_activity, get_body_age all return health series), but descriptions and metric scoping make the boundaries clear enough.
All tool names use snake_case, and the dominant pattern is verb_noun (get_overview, get_sleep, save_coach_note, update_coach_note, set_profile). A few nouns-first or verb-first outliers (data_status, refresh_data, describe_schema, query_sql) break the strict pattern but remain readable and consistent in style.
17 tools is slightly on the heavy side but each maps to a coherent capability of a full health-tracking domain (sync, domain fetchers, notes, profile, evidence, introspection). Nothing appears redundant or purely filler.
Covers the full lifecycle well: sync, per-domain reads (sleep/activity/running/trends/body age), journal and coach-note write/read/update, profile config, plus evidence and SQL introspection. Minor gaps exist (no hard delete for journal entries or coach notes, deletion only via status update), but agents can work around these.