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.

How to connect

How to connect freddy to Claude

The server address to paste into Claude settings:

https://coach--freddy.run.tools

  1. Open Claude (claude.ai or the desktop app).
  2. Go to Settings → Connectors.
  3. Click Add custom connector.
  4. Paste the server address copied below into Remote MCP server URL and click Add.
  5. In a chat, click + → Connectors and switch the new connector on.

Custom connectors are available on Free, Pro, Max, Team and Enterprise plans (Free is limited to one). On Team and Enterprise an organization Owner adds the connector first under Organization settings → Connectors.

Authorization

After you click Add, a sign-in window for the service opens. Sign in with your own account and approve access. Claude never sees your password.

How to connect freddy to ChatGPT

The server address to paste into ChatGPT settings:

https://coach--freddy.run.tools

  1. Open ChatGPT in a browser (chatgpt.com). A Plus, Pro, Business, Enterprise or Edu plan is required.
  2. Turn on developer mode once: Settings → Apps → Advanced settings → Developer mode.
  3. Open Settings → Connectors and click Create.
  4. Fill in the form: Name (anything), Description (one line about what the service does), MCP server URL (copy it below).
  5. Under Authentication choose OAuth if the service requires sign-in, otherwise None. Click Create.
  6. In a new chat open + → Apps/Connectors and enable the connector.

OpenAI has renamed this section before (Connectors → Apps/Plugins). If the label differs, search settings for "developer mode". On Business/Enterprise workspaces an admin must allow custom connectors first.

Authorization

On first use ChatGPT opens the service's sign-in window. Sign in and approve access.

How to connect freddy to Cursor

The server address to paste into Cursor settings:

https://coach--freddy.run.tools

Fastest: click Open in Cursor below and confirm the prompt.

Manually:

  1. In Cursor open Settings → Cursor Settings → MCP and click Add new global MCP server.
  2. Paste the JSON copied below into ~/.cursor/mcp.json (per project: .cursor/mcp.json in the repo root).
  3. Save the file. The server appears in the MCP list; authorize it there if asked.

Authorization

If the service needs sign-in, an authorize button appears next to the server in the MCP list.

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.