Skip to content

Releases: lmgarret/polar-flow-mcp

v0.12.0

Choose a tag to compare

@github-actions github-actions released this 13 Oct 15:20
cb1796f

Changelog v0.12.0

✨ New Features

  • 🧱 New block phase type: Build training plans with a dedicated block phase for structured main-set segments.
  • 📏 Distance-based phases: Warmup, block, and cooldown phases now accept distance_m as an alternative to duration_s, so you can define phases by distance instead of time.
  • 🎯 Zone ranges with intensity.zone_max: Turn a single heart rate, power, or speed zone into a range. This makes it possible to express distance-based race plans, such as km segments with zone ranges.
  • 🆓 FREE target: Use the new FREE target for phases where no specific intensity target is needed.
  • 🏁 STEADY_RACE_PACE target: Use the new STEADY_RACE_PACE target to hold a consistent race pace in your plans.
  • 🏊 Multi-sport support: Plans can now cover multiple sports.

📝 Compatibility Note

All changes in this release are additive, so existing requests remain valid and nothing is breaking.


Docker image

Published to ghcr.io/lmgarret/polar-flow-mcp (linux/amd64):

ghcr.io/lmgarret/polar-flow-mcp:0.12.0   # immutable, exact release
ghcr.io/lmgarret/polar-flow-mcp:0.12 # latest patch on this minor
ghcr.io/lmgarret/polar-flow-mcp:0 # latest release on this major
ghcr.io/lmgarret/polar-flow-mcp:latest        # newest stable release

Claude skill

polar-flow.skill (below) is the polar-flow skill for this release: upload it in Claude.ai, or unzip it into ~/.claude/skills/.

Full commit log
cb1796f Support FREE, STEADY_RACE_PACE, and multi-sport training targets (#114)
0eea56f ci(release): bump llm-release-action to v1.2.0 (#108)

v0.11.0

Choose a tag to compare

@github-actions github-actions released this 08 Oct 20:42
566e31a

Changelog v0.11.0

✨ New Features

  • ⭐ Favorites tools: 13 new MCP tools cover favorites list, get, create, update, rename, set sport, delete, save-target-as-favorite, and schedule. They also handle route import from GPX/TCX and session edit and delete. A favorites MCP app shows your edits in the sessions view.
  • 🎯 Training zones and sport-profile writes: get_training_zones explains HR, speed, and power zones 1-5, using defaults from a non-persisting recalculate endpoint, and comes with a zones MCP app. create_sport_profile (idempotent), update_training_zones (validated and read back), and delete_sport_profile (requires confirmation) let you manage profiles directly.
  • 🏃 Daily activity and sleep read tools: get_daily_activity returns 24/7 activity per day, plus intraday activity and heart-rate curves on single-day calls. get_sleep reports your sleep data.
  • 📅 Calendar week summary: get_calendar_week_summary now returns real week data: week, week start, session count, duration, distance, kcal, and step count. Items are typed from a live capture and mapped to a canonical DTO, and progress zone list items are modeled as open objects.
  • 📈 Session intervals, zones, and curves: Session data now includes interval repetitions, zones, and resampled curves.
  • 🔔 Notice cards for MCP-app UIs: All MCP-app UIs route tool results through a single dispatcher.
    • Errors show a red "Rejected" card.
    • Notice payloads show "Nothing to show" or "Cancelled" cards.
    • Text-only results fall back to a notice.
    • Results that never arrive time out after 20 s.
    • A test requires every UI to use the dispatcher.
  • 📦 Packaged polar-flow skill plugin: The skill ships as bin/polar-flow.skill, a zip with polar-flow/SKILL.md at its root.
    • release.yml attaches it to every v* release, and ci.yml attaches it to the rolling edge pre-release.
    • A new .claude-plugin/marketplace.json makes the repo a plugin marketplace with one plugin rooted at skill/.
    • SKILL.md is consolidated and covers all 28 tools.

🚀 Improvements

  • 🔧 Dependency and toolchain bumps:
    • Go directive moves from 1.26.2 to 1.26.8.
    • mcp-go moves from v1.1.0 to v1.1.1, with indirect updates.
    • The docs toolchain is updated (astro, starlight, sharp, D2 v0.9.0).
    • The golang Docker base image moves from 1.26-alpine to 1.27-alpine.

🐛 Bug Fixes

  • ⭐ Favorites decode and target validation:
    • Favorites listings now decode on device-paired accounts, where supportedDeviceIds is opaque.
    • Target name, description, and phase-name lengths are validated before sending, so over-long input no longer leaves half-created targets.
    • The text/plain time-clash 400 now maps to a proper error.
    • Delete errors are now handled.
  • 🏃 Daily activity correctness:
    • An all-zero day counts as no data even when lastSync is set, so future days no longer show has_data.
    • Multi-day windows fetch in parallel (max 4 at once), and any failing window still fails the call.
    • Activity series always request 144 samples, fixing multi-day 500 errors.
    • sleepScore and start/end offsets are nullable, so null values no longer fail a whole report.

Docker image

Published to ghcr.io/lmgarret/polar-flow-mcp (linux/amd64):

ghcr.io/lmgarret/polar-flow-mcp:0.11.0   # immutable, exact release
ghcr.io/lmgarret/polar-flow-mcp:0.11 # latest patch on this minor
ghcr.io/lmgarret/polar-flow-mcp:0 # latest release on this major
ghcr.io/lmgarret/polar-flow-mcp:latest        # newest stable release

Claude skill

polar-flow.skill (below) is the polar-flow skill for this release: upload it in Claude.ai, or unzip it into ~/.claude/skills/.

Full commit log
566e31a ci(release): bump llm-release-action to v1.1.0 and use Claude 5.5 models (#107)
8a1d2a8 skill: ship as a .skill release asset and a plugin marketplace (#106)
df2b005 ci: use haiku 5.5 for release action (#104)
58ab1b0 Merge pull request #102 from lmgarret/claude/ecstatic-allen-eotx43
05f67aa Merge pull request #103 from lmgarret/claude/nice-newton-67u6co
f9c37b1 Slim the polar-flow skill to cross-tool rules and workflows
ecefb97 Merge pull request #101 from lmgarret/claude/peaceful-johnson-mg9tq5
b44658d fix: get_calendar_week_summary returned empty weeks
e6f88d9 Merge pull request #100 from lmgarret/ccr-6e2149b9-cguu5p
ec7c316 fix: future activity days, parallel window fetch, nullable-field docs
93d0add Merge pull request #99 from lmgarret/ccr-6e2149b9-cguu5p
f5d6fb6 fix: multi-day activity 500 and null sleep scores
9d949b8 Merge pull request #98 from lmgarret/ccr-6e2149b9-cguu5p
0c9e315 Add sport-profile writes, daily activity and sleep tools
5e62ef4 Merge pull request #96 from lmgarret/claude/amazing-lovelace-pfp1hb
2477c3a test(ui): require every MCP-app UI to use the notice dispatcher
1c09df8 Merge origin/main into claude/amazing-lovelace-pfp1hb
e666cb5 Merge pull request #97 from lmgarret/claude/intelligent-faraday-6beo4s
c4f728c feat(ui): notice cards for rejections, empty answers and cancellations
4111975 fix: favorites decode on paired accounts, target limits, clash and delete errors
5f37d5a Bring the polar-flow skill up to date with all 28 tools
8c3dd72 Merge pull request #95 from lmgarret/claude/vigilant-carson-7lpbwx
401bbdc Add get_training_zones tool and zones MCP app
6e0616c Merge pull request #87 from lmgarret/dependabot/docker/golang-1.27-alpine
91e543c ci: publish rolling edge pre-release on every merge to main
d216cb3 Merge pull request #94 from lmgarret/ccr-d43d5615-g8np8l
24ad6ad fix(flow): re-vendor spec; send X-Requested-With on target delete, type progress 404
d9e5458 Merge pull request #93 from lmgarret/ccr-bcc81085-7e2cq2
c1aa1de feat(ui): favorites MCP app; show edits in the sessions view
a2cebc4 feat: favorites, routes, and completed-session edit/delete tools
bd2557a chore(deps): bump dependencies (#92)
af98a7f chore(deps): bump golang from 1.26-alpine to 1.27-alpine

edge

edge Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 21 Oct 12:46
8c3dd72

Rolling pre-release of main at a212136. Replaced on every merge — not a stable release.

Docker image

ghcr.io/lmgarret/polar-flow-mcp:edge          # this build (moves with main)
ghcr.io/lmgarret/polar-flow-mcp:sha-a212136   # immutable, this exact commit

Changes since v0.12.0

a212136 chore(deps): bump postcss-selector-parser and @expressive-code/core (#120)
2bdd042 chore(deps): bump golang.org/x/net from 0.59.0 to 0.61.0 (#115)
087c65b chore(deps): bump vite from 8.3.1 to 8.3.4 in /docs (#119)
da96715 chore(deps): bump actions/setup-node from 7.0.0 to 7.1.0 (#112)
32d1cb5 chore(deps): bump go.opentelemetry.io/otel/metric from 1.46.0 to 1.47.0 (#109)
bc71619 chore(deps): bump go.opentelemetry.io/otel/trace from 1.46.0 to 1.47.0 (#110)
08f9804 chore(deps): bump go.opentelemetry.io/otel from 1.46.0 to 1.47.0 (#111)
26a7943 chore(deps): bump github.com/mark3labs/mcp-go from 1.1.1 to 1.2.1 (#116)
d169b17 chore(deps): bump the docs group in /docs with 2 updates (#118)
618fdcf chore(deps): bump the docs group in /docs with 3 updates (#113)
05c835f chore(deps): bump source-map-js from 1.2.1 to 1.2.2 in /docs (#105)

v0.10.2

Choose a tag to compare

@github-actions github-actions released this 25 Sep 16:20
508aa09

Changelog - v0.10.2

🛠️ Improvements

  • 📚 Updated Documentation Tooling — Refreshed @astrojs/starlight (0.41.2→0.42.2), astro, and astro-d2 dependencies to keep our docs site running smoothly.

🐛 Fixes

  • 🏃 Correct Pace/Speed Display in Sessions View — Sessions now show the right units for each sport: min/km for running and other foot-based activities, min/100m for swimming, and km/h for everything else. Also fixed a rounding glitch that could display "4:60" instead of "5:00".

Docker image

Published to ghcr.io/lmgarret/polar-flow-mcp (linux/amd64):

ghcr.io/lmgarret/polar-flow-mcp:0.10.2   # immutable, exact release
ghcr.io/lmgarret/polar-flow-mcp:0.10 # latest patch on this minor
ghcr.io/lmgarret/polar-flow-mcp:0 # latest release on this major
ghcr.io/lmgarret/polar-flow-mcp:latest        # newest stable release
Full commit log
508aa09 ci: bump llm-release-action to v1.0.1 (pinned setup-python) (#90)
15bac58 chore(deps): bump the docs group in /docs with 3 updates (#88)
7c198d4 ci: default GITHUB_TOKEN to contents: read in CI and Release (#89)
30194f5 fix(ui): show sport-appropriate pace or speed in sessions view (#84)
edf9157 chore: pin actions to SHAs, extend Dependabot, add issue template config (#85)
03b8571 docs: make pitch and setup wording client-neutral (#86)
4a22860 docs: serve site under /polar-flow-mcp base for GitHub Pages (#83)
ff8433a docs: add MCP app UI screenshots and reference page (#82)

v0.10.1

Choose a tag to compare

@github-actions github-actions released this 22 Sep 17:22
f8fe77a

Changelog – v0.10.1

🐛 Fixes

  • ❤️ Heart-Rate Zone Colors Corrected — Fixed the color mapping for heart-rate zones in the sessions view, so Z1 (grey), Z2 (blue), Z3 (green), Z4 (yellow-orange), and Z5 (red) now display accurately.

Docker image

Published to ghcr.io/lmgarret/polar-flow-mcp (linux/amd64):

ghcr.io/lmgarret/polar-flow-mcp:0.10.1   # immutable, exact release
ghcr.io/lmgarret/polar-flow-mcp:0.10 # latest patch on this minor
ghcr.io/lmgarret/polar-flow-mcp:0 # latest release on this major
ghcr.io/lmgarret/polar-flow-mcp:latest        # newest stable release
Full commit log
f8fe77a fix(ui): correct heart-rate zone colours in sessions view (#81)
5a78393 ci: migrate to lmgarret/llm-release-action

v0.10.0

Choose a tag to compare

@github-actions github-actions released this 22 Sep 09:59
b17e7c7

Changelog — v0.10.0

✨ Features

  • User Confirmation Gate for Write Tools — Destructive write operations (create_training_target, update_training_target, delete_training_target, create_training_session) now support an elicitation-based confirmation step, giving clients the ability to prompt users for explicit approval before any changes are made.

Docker image

Published to ghcr.io/lmgarret/polar-flow-mcp (linux/amd64):

ghcr.io/lmgarret/polar-flow-mcp:0.10.0   # immutable, exact release
ghcr.io/lmgarret/polar-flow-mcp:0.10 # latest patch on this minor
ghcr.io/lmgarret/polar-flow-mcp:0 # latest release on this major
ghcr.io/lmgarret/polar-flow-mcp:latest        # newest stable release
Full commit log
b17e7c7 Add user confirmation gate for write tools via MCP elicitation (#80)
f8a4314 chore(deps): bump nanoid from 3.3.16 to 3.3.19 in /docs (#75)
74389ad chore(deps): bump devalue from 5.8.1 to 5.9.2 in /docs (#76)

v0.9.0

Choose a tag to compare

@github-actions github-actions released this 19 Sep 21:32
860f984

Changelog — v0.9.0

✨ Features

  • Static API Key Authentication — Introduced MCP_API_KEY environment variable support for lightweight inbound authentication on the /mcp endpoint, giving you a simple alternative to OAuth with secure SHA-256 digest storage and timing-attack-resistant comparison.

🐛 Fixes

  • HTTP Test Compatibility — Updated the test suite to work correctly with httptest.NewRequestWithContext, resolving compatibility issues in the test implementation.
  • Astro Build Documentation — Restored compatibility with Astro 7.3.2 by updating the markdown processor configuration to use the new unified() API, along with refreshed transitive dependencies (js-yaml, smol-toml).

Docker image

Published to ghcr.io/lmgarret/polar-flow-mcp (linux/amd64):

ghcr.io/lmgarret/polar-flow-mcp:0.9.0   # immutable, exact release
ghcr.io/lmgarret/polar-flow-mcp:0.9 # latest patch on this minor
ghcr.io/lmgarret/polar-flow-mcp:0 # latest release on this major
ghcr.io/lmgarret/polar-flow-mcp:latest        # newest stable release
Full commit log
860f984 fix(auth): use httptest.NewRequestWithContext in API-key tests (#79)
d915a89 feat(auth): add static API-key authentication for /mcp (#78)
dc9300d chore: update Go and docs dependencies (#74)
f254fbd chore(deps): bump astro from 7.1.3 to 7.3.2 in /docs (#70)
1ab5361 chore(deps): bump go.opentelemetry.io/otel/metric from 1.45.0 to 1.46.0 (#66)
156346d chore(deps): bump svgo from 4.0.2 to 4.1.0 in /docs (#69)
6a50e70 chore(deps): bump golang.org/x/net from 0.57.0 to 0.58.0 (#65)
b59a4ad chore(deps): bump github.com/mark3labs/mcp-go from 0.57.0 to 0.58.0 (#64)
d6c8dd1 chore(deps): bump github.com/ogen-go/ogen from 1.23.0 to 1.24.0 (#63)
9b649d4 chore(deps): bump go.opentelemetry.io/otel/trace from 1.44.0 to 1.45.0 (#62)
ba987ce chore(deps): bump go.opentelemetry.io/otel/metric from 1.44.0 to 1.45.0 (#60)
6baefd2 chore(deps): bump go.opentelemetry.io/otel from 1.44.0 to 1.45.0 (#61)

v0.8.1

Choose a tag to compare

@github-actions github-actions released this 07 Aug 08:38
f04ea05

Changelog — v0.8.1

🐛 Bug Fixes

  • Intensity Mapping for Warmup & Cooldown Phases — Fixed an issue where warmup and cooldown phases were always sent with no intensity zone; they now correctly reflect the intended intensity settings when syncing training sessions to the Polar Flow API.

Docker image

Published to ghcr.io/lmgarret/polar-flow-mcp (linux/amd64):

ghcr.io/lmgarret/polar-flow-mcp:0.8.1   # immutable, exact release
ghcr.io/lmgarret/polar-flow-mcp:0.8 # latest patch on this minor
ghcr.io/lmgarret/polar-flow-mcp:0 # latest release on this major
ghcr.io/lmgarret/polar-flow-mcp:latest        # newest stable release
Full commit log
f04ea05 chore(deps): bump js-yaml from 4.3.0 to 4.3.1 in /docs (#58)
28ecf3f Map intensity on warmup/cooldown phases, not just repeat (#59)

v0.8.0

Choose a tag to compare

@github-actions github-actions released this 07 Aug 07:10
efda4a2

Changelog — v0.8.0

✨ Features

  • Power/Speed Zone Intensity for Training Targets — You can now set power_zone and speed_zone as intensity options when creating or updating training targets, alongside the existing hr_zone. Zones are applied in priority order: hr_zone → power_zone → speed_zone → label, giving you more flexibility in how you define workout intensity.

🔧 Improvements

  • Dependency Updates — Updated several dependencies including actions/setup-python, mcp-go, go-faster/errors, postcss, and svgo to their latest versions for improved security and compatibility.

Docker image

Published to ghcr.io/lmgarret/polar-flow-mcp (linux/amd64):

ghcr.io/lmgarret/polar-flow-mcp:0.8.0   # immutable, exact release
ghcr.io/lmgarret/polar-flow-mcp:0.8 # latest patch on this minor
ghcr.io/lmgarret/polar-flow-mcp:0 # latest release on this major
ghcr.io/lmgarret/polar-flow-mcp:latest        # newest stable release
Full commit log
efda4a2 ci: revert release to use sonnet 4.6 with temperature
1dfa5dd ci: remove temperature parameter from release.yml
442c1ae Add power/speed zone intensity to training-target phases (#57)
0707542 ci: update model version in release workflow
baa9d4e chore(deps): bump actions/setup-python from 6 to 7 (#53)
e091114 chore(deps): bump github.com/mark3labs/mcp-go from 0.56.0 to 0.57.0 (#54)
e5a93b0 chore(deps): bump github.com/go-faster/errors from 0.7.1 to 0.8.0 (#55)
35b9772 chore(deps): bump postcss from 8.5.16 to 8.5.25 in /docs (#56)
260c934 chore(deps): bump svgo from 4.0.1 to 4.0.2 in /docs (#52)

v0.7.0

Choose a tag to compare

@github-actions github-actions released this 22 Jul 08:39
af19b09

Changelog — v0.7.0

✨ Features

  • Richer Response After Updating Training Targets — The update_training_target tool now returns the full target details (name, datetime, and rolled-up exercise phases) immediately after a successful update, so your UI and agents always have the latest state without needing an extra fetch.

  • Helpful Error Hints for Content Filter Rejections — When a training target name is blocked by Polar's server-side content filter, you'll now see a clear, actionable message explaining why the update was rejected and what you can do to work around it — no more cryptic 400 errors.


Docker image

Published to ghcr.io/lmgarret/polar-flow-mcp (linux/amd64):

ghcr.io/lmgarret/polar-flow-mcp:0.7.0   # immutable, exact release
ghcr.io/lmgarret/polar-flow-mcp:0.7 # latest patch on this minor
ghcr.io/lmgarret/polar-flow-mcp:0 # latest release on this major
ghcr.io/lmgarret/polar-flow-mcp:latest        # newest stable release
Full commit log
af19b09 feature: return get-target detail view from update_training_target (#51)
14eb79b chore(deps): bump astro from 7.0.6 to 7.1.3 in /docs (#49)
d6ac8f8 Surface actionable hint for Polar's name content filter rejections (#50)