freddy

freddy connects your wearables, rings and training apps to ChatGPT, Claude and any MCP-compatible AI.

Community: Submitted by a user or imported; check the owner before granting accessOnlineNo sign-inGlobalFreeRead-only

What it can do

  • Get Profile: Return user profile information: name, connected data sources, plan tier, and the date range of available data.
  • List Metrics: List health metrics available for this user. Returns metric names, units, date ranges, record counts, and data sources. Metrics flagged `[raw available]` carry a full JSON payload (per-e
  • Query Metrics: Fetch health data for specific metrics by name. Metric names are provider-specific and follow each provider's own field-name conventions (e.g. `activity_*` / `wellness_*` for Intervals.

What data it sees

Do you need an account

No: the server works without sign-in

freddy connects your wearables, rings and training apps to ChatGPT, Claude and any MCP-compatible AI. Query sleep, recovery, workouts, heart rate, body composition and training load across multiple sources through one secure hosted OAuth connection.

Server tool list (7)

Raw names from tools/list. Only developers need these.

get_profileReturn user profile information: name, connected data sources, plan tier, and the date range of available data.
list_metricsList health metrics available for this user. Returns metric names, units, date ranges, record counts, and data sources. Metrics flagged `[raw available]` carry a full JSON payload (per-exercise sets, hypnograms) that can be fetched via query_metrics with `include_raw: true`. Metrics flagged `[raw-only — fetch with include_raw]` are intra-day sample bundles (e.g. activity_HR_samples for Suunto); the data lives in the raw payload, not in numValue. For these, request include_raw to get the ts/v arrays. Daily aggregates of the same data are available as `_avg`/`_min`/`_max`/`_total` metrics. Lines may show "device: <name>" when a provider reports data from more than one device; pass that device to query_metrics to filter. When you present Garmin data to the user, attribute it as "Garmin [device model]" (or just "Garmin" when no device is shown), per Garmin's brand requirements.
query_metricsFetch health data for specific metrics by name. Metric names are provider-specific and follow each provider's own field-name conventions (e.g. `activity_*` / `wellness_*` for Intervals.icu, `polar_*` for Polar, `workout_*` for Hevy, `sleep_summary_*` for Withings). They are NOT common English words. Always call `list_metrics` first in a session to discover the exact names available for this user — names that aren't in that list return zero rows. Returns scalar values grouped by date. When `include_raw` is true, also returns the full JSON payload for each record (per-exercise sets, hypnograms, intra-day sample arrays). Non-sample raw is capped at 50 records per request. For intra-workout sample metrics (names ending in _samples), include_raw returns a downsampled overview by default (tighter record cap — narrow the range if asked to); pass raw_resolution: "full" for every sample of a single workout, or sample_window: { from_sec, to_sec } to zoom a segment of a long workout at full resolution. Each sample row shows 'id: <…>' — pass that as source_id to select one of several same-day workouts for a full or windowed read. When you present Garmin data to the user, attribute it as "Garmin [device model]" (or just "Garmin" when no device is shown), per Garmin's brand requirements.
connect_sourceConnect a data source (a wearable, ring, CGM, training platform, gym log, and so on). For OAuth sources, the tool returns a URL the user opens to authorize. For API-key sources and phone sources (Apple Health, Health Connect), the tool returns instructions to finish connecting on the freddy dashboard or app, where any credential is entered on freddy and never passes through this chat. The server instructions and get_profile list the connectable sources.
disconnect_sourceDisconnect a data source and wipe synced data for it. Confirm with the user before calling — this is destructive and the user must re-authorize to reconnect.
sync_sourceTrigger an incremental sync for a connected provider. Returns immediately; the sync runs in the background. Use this if the user wants the latest data fetched right now (e.g. after a workout) instead of waiting for the daily sync.
accept_termsRecord the user's acceptance of Freddy's current Terms of Service and Privacy Policy. ONLY call this tool AFTER the user has explicitly stated they agree to the updated terms — for example, after they have said 'I agree', 'accept', 'yes, accept the new terms', or similar. Do not call this tool automatically or on the user's behalf. If the user has not seen the policy summary yet, show them the gate message from the previous tool call's response (or fetch https://freddy.coach/terms) BEFORE asking for their consent. If the user is unsure or wants to read the full text, do not call this tool — point them at the dashboard URL or the public Terms/Privacy pages. If the user has explicitly agreed to BOTH the Terms/Privacy AND to Freddy collecting and processing their health data, also pass health_data: true. Otherwise omit health_data or pass false; the user will be prompted for the additional consent through the dashboard later.