hi
I have been using your app doing analysis for few times and I did like it, but since I can’t use ChatGPT anymore after canceling my account , I hope you’ll fully integrate Claude in your app in the future.
Thanks
Hi Sandroc,
The Claude operating model is a little different and less flexible than OpenAI (which has a webstore). To keep is “Free” with your existing Claude subscription the only way right now is via the Claude Desktop version and MCP (modern context protocol), otherwise I would have to purchase API credits and integrate it that way through a dedicated Application Interface, then charge for usage (like other Intervals AI models have done).
I have successfully enabled Claude integration through the MCP node on the Claude Desktop client (Mobile is not supported by Anthropic). You can check out the how to here:
Claude Interoperabilty via MCP · Issue #24 · revo2wheels/intervalsicugptcoach-public
I’m afraid is a little technical to implement right now (needs two files), it’s frustrating that I cannot integrate in the same way but that’s down to Anthropic/Claude. I very much like the Anthropic/Claude reporting as well. An example Claude report:
Weekly Training Report
Period: 2026-02-19 → 2026-02-25 | State: Productive training zone — high anaerobic stimulus with recovery critical.
Volume Summary
| Metric | Value |
|---|---|
| Total Hours | 11.67 h |
| Total TSS | 650 |
| Total Distance | 256.6 km |
Key Metrics
| Metric | Value | Status |
|---|---|---|
| ACWR | 1.07 | |
| Monotony | 1.56 | |
| Strain | 144.9 | |
| Fatigue Trend | +28.7% | |
| Zone Quality Index (ZQI) | 5.4% | |
| Fat Oxidation Index (FOxI) | 73.1% | |
| Metabolic Efficiency Score | 22.5 | |
| Polarisation Index (Fused) | 1.206 | |
| Polarisation Index (Combined) | 0.724 | |
| Load Variability Index | 0.688 |
FatigueTrend at +28.7% is elevated — ATL is running meaningfully above CTL, reflecting accumulated fatigue from the weekend block. ACWR at 1.07 remains in the productive zone, indicating load is still structured and controlled. ZQI has improved to 5.4% (from 4.3% last week), now just entering the optimal band.
Extended Metrics (Lactate & Zone 2)
- Mean Lactate: 1.92 mmol/L | Latest: 1.80 mmol/L (30 samples, r = 0.983)
- Personalised Z2 Band: 210–225 W (70–75% FTP, lactate-inferred)
- LT1: ~210 W | LT2 (FTP): 300 W
Performance Intelligence
Anaerobic Repeatability (WDRM)
| Metric | Value | Status |
|---|---|---|
| Max W′ Depletion | 105.6% | Informational |
| Mean W′ Depletion | 61.5% | |
| High Depletion Sessions | 1 | |
| Total Joules Above FTP | 195,767 J | Informational |
Mean W′ depletion has risen to 61.5% (amber), up from 41.4% last week — the two big outdoor rides (Jongny ROAD + Wednesday Jongny) have increased anaerobic reserve stress meaningfully. One high-depletion session remains within the green threshold.
Durability (ISDM)
| Metric | Value | Status |
|---|---|---|
| Mean Decoupling | 4.50% | |
| Max Decoupling | 23.4% | Informational |
| High Drift Sessions | 2 | |
| Long Sessions (≥2h) | 2 | — |
High neuromuscular + metabolic strain overlap present — 1 high depletion session and 2 high drift sessions in the same week. Mean decoupling holds at 4.50%, just inside the green threshold. Two long sessions confirm solid durability base but underline the cumulative stress of the week.
Neural Density (NDLI)
| Metric | Value | Status |
|---|---|---|
| Rolling Joules Above FTP | 195,767 J | |
| High Intensity Days | 3 | |
| Mean Intensity Factor | 0.813 | — |
NDLI has moved into amber — 195,767 J above FTP across 3 high-intensity days reflects a meaningful spike in neuromuscular demand compared to last week (131,333 J / 2 days). Recovery spacing between hard sessions warrants close attention.
Zone Distribution
Cycling Power Zones
Z1 (Recovery) ███████████░░░░░░░░░ 28.2%
Z2 (Endurance) ████████░░░░░░░░░░░░ 19.2%
Z3 (Tempo) ███████░░░░░░░░░░░░░ 18.1%
SS (Sweetspot) █████░░░░░░░░░░░░░░░ 12.3%
Z4 (Threshold) █████░░░░░░░░░░░░░░░ 12.5%
Z5 (VO2Max) ███░░░░░░░░░░░░░░░░░ 7.3%
Z6 (Anaerobic) █░░░░░░░░░░░░░░░░░░░ 2.3%
Z7 (Neuromusc.) ░░░░░░░░░░░░░░░░░░░░ 0.2%
Cycling HR Zones
Z1 ████████████████████████ 60.6%
Z2 ███████░░░░░░░░░░░░░░░░░ 18.4%
Z3 ███░░░░░░░░░░░░░░░░░░░░░ 7.8%
Z4 ████░░░░░░░░░░░░░░░░░░░░ 10.9%
Z5 ░░░░░░░░░░░░░░░░░░░░░░░░ 1.6%
Z6 ░░░░░░░░░░░░░░░░░░░░░░░░ 0.6%
Daily Load Timeline
Thu Fri Sat Sun Mon Tue Wed
Feb19 Feb20 Feb21 Feb22 Feb23 Feb24 Feb25
Load ▃ ▂ ▇ ▅ — ▃ ▆
TSS 71 31 177 134 — 88 149
Press ↑ ↑ ↑ ↑ — ↑ ↑
Events
Signal legend:
Efficient |
Aerobic |
Anaerobic |
Repeated |
Progressive |
Recovery
| Signals | Date | Activity | Type | Dur (min) | TSS | IF | Avg W | NP | Avg HR | Decoupling |
|---|---|---|---|---|---|---|---|---|---|---|
| Feb 19 | Zwift – Short Stage 1 TdZ | VirtualRide | 62 | 71 | 0.83 | 224 | 255 | 128 | +23.4% | |
| Feb 20 | Pralet Ski Tour | BackcountrySki | 65 | 31 | — | — | — | 106 | — | |
| Feb 21 | Zwift – Adz ×2 | VirtualRide | 141 | 159 | 0.82 | 223 | 251 | 124 | +2.1% | |
| Feb 21 | Otto Walk | Hike | 50 | 18 | — | — | — | 96 | — | |
| Feb 22 | Jongny ROAD | Ride | 125 | 134 | 0.80 | 196 | 241 | 120 | +2.0% | |
| Feb 24 | Lavaux | Ride | 87 | 88 | 0.78 | 195 | 233 | 124 | -15.2% | |
| Feb 25 | Jongny ROAD | Ride | 97 | 112 | 0.83 | 198 | 249 | 119 | +10.2% | |
| Feb 25 | Otto Walk | Hike | 73 | 37 | — | — | — | 103 | — |
Two new outdoor rides this week — Lavaux (Feb 24, 88 TSS) showed excellent cardiovascular response (-15.2% negative decoupling, indicating improving efficiency as the session progressed). Jongny ROAD on Feb 25 (112 TSS, IF 0.83) added significant cumulative load with 47.9% W′ depletion. The week’s EF of 2.09 on the Wednesday ride is the highest of the period.
W′ Balance Summary
| Metric | Value |
|---|---|
| Mean W′ Depletion | 42.2% |
| Mean Anaerobic Contribution | 180.9% |
| Sessions with W′ Data | 5 |
| Dominant Pattern | Clustered Weekend |
Anaerobic Load Timeline:
Thu ▇ | Fri — | Sat ▇ | Sun ▇ | Mon — | Tue ▂ | Wed ▇
Wellness
| Metric | Value |
|---|---|
| CTL (Fitness) | 78.4 |
| ATL (Fatigue) | 89.4 |
| TSB (Form) | -11.0 |
| HRV Mean (42d) | 50 |
| HRV Latest | 46 |
| HRV 7d Trend | +6.9 (improving) |
| Resting HR | 41 bpm |
TSB at -11.0 reflects persistent accumulated fatigue — ATL has remained above CTL throughout the reporting window. HRV trend is strongly positive (+6.9) despite the load, suggesting the autonomic system is adapting well. Resting HR of 41 bpm is consistent with good baseline recovery.
Insights
| Insight | Value | Status |
|---|---|---|
| Fatigue Trend | +14% (ATL vs CTL) | |
| Fat Oxidation Index | 73.1% | |
| ACWR Phase | 1.07 | |
| Fatigue Resistance | 0.95 | |
| Efficiency Factor | 1.9 |
Actions
FatigueTrend 28.70% — rising fatigue, monitor intensity.
Durability improving (1.00) — maintain current long-ride structure.
IF Drift stable (0.00%) — aerobic durability solid.
Load Variability Index moderate (0.69) — load manageable but monitor fatigue accumulation and ACWR trend.
Planned Workouts (Upcoming)
| Date | Day | Name | Duration (min) | Load | Description |
|---|---|---|---|---|---|
| Feb 26 | Thu | Aerobic Endurance | 120 | 94 | 10m ramp + 100m @ 70% FTP + 10m easy |
| Feb 27 | Fri | Threshold 3×15 | 80 | 108 | 3×15m @ 100% FTP |
| Feb 28 | Sat | Aerobic Endurance | 120 | 99 | 10m ramp + 100m @ 72% FTP + 10m easy |
| Mar 1 | Sun | Long Endurance | 240 | 200 | 200m @ 72% FTP + 25m @ 65% FTP |
| Mar 2 | Mon | Recovery Ride | 60 | 30 | 60m @ 55% FTP |
| Mar 3 | Tue | Aerobic Endurance | 120 | 94 | 10m ramp + 100m @ 70% FTP + 10m easy |
| Mar 4 | Wed | VO2 Max 6×4 | 68 | 95 | 6×4m @ 115% FTP |
| Mar 5 | Thu | Aerobic Endurance | 150 | 125 | 130m @ 72% FTP |
| Mar 6 | Fri | Over Under 2×12 | 55 | 69 | 2×12m over/under @ 95–105% FTP |
| Mar 7 | Sat | Long Endurance | 270 | 229 | 220m @ 72% FTP + 35m @ 70% FTP |
| Mar 8 | Sun | Recovery Ride | 60 | 30 | 60m @ 55% FTP |
| Mar 9 | Mon | Aerobic Endurance | 120 | 99 | 100m @ 72% FTP |
| Mar 10 | Tue | Threshold 4×12 | 92 | 120 | 4×12m @ 100% FTP |
| Mar 11 | Wed | VO2 Max 5×5 | 70 | 99 | 5×5m @ 115% FTP |
| Mar 12 | Thu | Aerobic Endurance | 150 | 125 | 130m @ 72% FTP |
A substantial build block is planned — the Sunday Long Endurance (200 TSS, 4h) and the following Saturday Long Endurance (229 TSS, 4.5h) represent the two biggest load events. The VO2 Max sessions on March 4 and 11 introduce structured high-intensity work alongside the aerobic base.
Planned Load by Date
| Date | Events | Duration (min) | Load |
|---|---|---|---|
| Feb 26 | 1 | 120 | 94 |
| Feb 27 | 1 | 80 | 108 |
| Feb 28 | 1 | 120 | 99 |
| Mar 1 | 1 | 240 | 200 |
| Mar 2 | 1 | 60 | 30 |
| Mar 3 | 1 | 120 | 94 |
| Mar 4 | 1 | 68 | 95 |
| Mar 5 | 1 | 150 | 125 |
| Mar 6 | 1 | 55 | 69 |
| Mar 7 | 1 | 270 | 229 |
| Mar 8 | 1 | 60 | 30 |
| Mar 9 | 1 | 120 | 99 |
| Mar 10 | 1 | 92 | 120 |
| Mar 11 | 1 | 70 | 99 |
| Mar 12 | 1 | 150 | 125 |
15-Day Forecast (Feb 26 – Mar 13)
| Metric | Current | Forecast |
|---|---|---|
| CTL (Fitness) | 78.4 | 91.8 |
| ATL (Fatigue) | 89.4 | 97.0 |
| TSB (Form) | -11.0 | -5.2 |
| Load Trend | — | Increasing |
| Phase | — | Optimal |
If the planned block is executed, CTL is projected to climb from 78.4 to 91.8 — a significant fitness gain of +13 points over 15 days. TSB improves modestly to -5.2, keeping form in the productive range.
Closing Note
Handled Appropriately. ACWR at 1.07 confirms last week’s load was absorbed within the productive training band, and training state is classified as Productive with stable adaptation signals. FatigueTrend at +28.7% is elevated and warrants monitoring — ATL is persistently above CTL — but the positive HRV trend (+6.9) indicates autonomic recovery is tracking well. NDLI has entered amber (195,767 J, 3 high-intensity days), so today’s Aerobic Endurance session at 70% FTP is appropriately calibrated to reduce neuromuscular density before Friday’s Threshold 3×15. Durability remains stable at mean decoupling of 4.50%.
I hope that helps
Clive
Hi Clive,
thank you for the outstanding work you’re doing — I really appreciate it.
Just one small point: chats created through CoachV5 can’t be kept at the top of the list or pinned in ChatGPT. They don’t seem to be fixable in place.
Do you know why this is happening?
Thanks again,
Gigi
Oh I love it.
I’ll try to setup Claude Desktop and MCP.
Thank you !
Sadly at the moment you currently cannot pin GPT chats inside the ChatGPT mobile or web app because OpenAI has not implemented a pin feature for community GPTs.
What you can do instead
-
Rename important chats
Give it a structured name like:
Coaching App
Montis.icu Coach
Etc.
Chats are sorted by recent activity. -
Use Search
Use the search bar at the top.
It indexes titles and message content.
(I use Search mostly on Keywords after renaming the chat)
Clive
I found your agent in GPT and I see it’s asking quite a few permissions where could I find more details? What is the minimum permission level for features to work?
Right now I’m only copy/pasting some specific data from Intervals into GPT to get advice on particular points. I’m relying on Garmin for Wellness stats/advice, Stryd for running load (road+trail my primary sports) and I keep a loop at Load on Intervals as well as in Nolio. What I’m actually after with a custom agent is more a “weekly report” that would be almost like a coach would be able to do, using all the different data. I believe Intervals would have the capability to capture the various data feeds and then provide that to an AI.
I have see other threads in this forum about other AI agents or applications, which sometimes are not free. It is really difficult to compare them and see which one is the best. It’s great to see developers being active and try to improve, on the other hand I’d like to be sure what’s being done with my data and if there’s a way to delete/remove them from the app once I do not use it anymore.
I’ve updated how this works, improved security model and updated the instructions.
Br
Clive
Hi Ohmax
Permissions needed are for accessing intervals.icu API from the application. This is normal.
Setup is outlined here First-Time Setup — Montis.icu Coach App
The application needs Read access to most endpoints and write to calendar should you wish to create workouts in intervals to follow.
I prepopulate what’s needed, just click OK when prompted.
Once the weekly report is loaded you can ask it many questions about your data. The report presents a coaching outlook, however many other questions can be asked: e.g
Montis.icu Coach App — Training Intelligence Questions
I’m sure others have some great questions also!
You can easily remove access by going to your intervals.icu account settings/applications, click on permissions provided, uncheck them all and it will disappear.
The app is stateless and does not store any data anywhere, intervals.icu is the source.
Clive
Many thanks for your feedback. I’ve completed the setup, left the default except chats that I unticked I guess no big issue? I didn’t have Garmin Wellness synchronized before, so I’ve also enabled it just before and downloaded data from when I started my trail prep work 27Oct.
Because I’m currently updating Intervals activities manually with FIT files, the data quality check detected that in last days there were no activities. But I asked a report for the previous week and this worked. I also asked analysis of a specific workout (I did a 6h trail run last week) and it’s really interesting insights I love it. I really like the ‘scientific’ approach and feel of the report.
Are there any ultra trail runners here using your AI agent? I’m interested on use cases and sample prompts to get the best of it ![]()
In a report this morning I spotted the following output in the Meta section:
" Primary Sport: Ride"
I asked the agent where to change that but can’t find it in Intervals ![]()
Not sure if this has an influence on the output?
Right now I use HRV data from Garmin but this is not ideal I understood it’s best to take morning measurement using HRV4TRAINING (I did that for one year but this takes some discipline). If there would be two differences sources (night HRV + morning measure with HRV4TRAINING) could this be taken as context all together?
Hi FranzS, Nice find. Proper Python bug. Hopefully now fixed. Let me know.
Clive
Hello again Clive,
I use Montis to create workout files that I can run on Zwift or follow on my garmin which is amazing but I often have to be really specific about adding fuelling targets based on my weight and load etc - the sort of normal stuff a coach would do - so what I wondered was if Montis could add those automaticall when it generates workouts? Not sure how easy that is to code in but much like you’ve written the code to follow the coaching principles mentioned on your site, it would be great if it could automatically add fuelling targets based on nutrition principles so that when a workout is automatically added to the calendar, fuelling targets are already there without prompt. I’m sure more people would find this useful too. If you really wanted to geek out you could mention fuelling related to weight and planned weekly load so that recovery for follow on sessions is also prioritised.
Still loving it. Brilliant stuff and I’ll send you a few coffees too.
Hi FranzS, certainly odd. I’ve identified a code issue and fixed this by removing duplicates (the issue), but it’s odd that it only occurring for you (looking at my error logs). Have you added any custom fields recently in intervals.icu ? Clive
Hi Alan, great idea. Let me see what is possible. Indeed, I love the fact the workouts also appear in Zwift and Garmin as well ready to go. Although my legs didn’t thank my 6x4 outside last week ![]()
Clive
I didn’t add any new data fields. I tried reconnecting the account, but to no avail.
Hi Franz,
I cannot replicate your error. However, I have put some safeguards in place. It is to do with the subjective markers entered for daily wellness. Let me know.
Clive
Hi Clive,
Thank you for your help, the query is working fine.
Morning Clive,
I’m using Plan Builder (with Base/Build/Peak phases and CTL projection visible in the UI), but when querying the API endpoint:
getAthleteTrainingPlanV1
it returns:
training_plan: null
So although Plan Builder is clearly active, the API indicates no plan exists.
It appears the endpoint only returns the legacy Training Plan object and does not expose Plan Builder configuration (phases, CTL targets, ramp logic, etc.).
Is there currently any API support for accessing active Plan Builder architecture? Or is this intentionally not exposed?
Thanks!


