← Files IntervalCoachARCHIVED FILE
plugin.json
5.85 KB · Nov 6, 2026 · 07:22 UTC
{
"$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
"name": "app-6a840aef28e0819183576d59093a1883",
"version": "1.2.0",
"description": "Reads and updates an athlete's IntervalCoach training: plan, planned sessions, recovery data, completed activities and fitness trends.",
"author": {
"name": "IntervalCoach",
"email": "support@intervalcoach.app",
"url": "https://www.intervalcoach.app"
},
"homepage": "https://www.intervalcoach.app",
"license": "Proprietary",
"extensions": {
"com.openai": {
"interface": {
"displayName": "IntervalCoach",
"shortDescription": "Plan and adjust your training",
"longDescription": "Connects ChatGPT to an IntervalCoach account for cycling, running and swimming training.\n\nWhat it does:\n- Reads the training plan, today's planned session and the readiness assessment behind it.\n- Reads recovery data (HRV, resting heart rate, sleep), completed activities with their analysis, and fitness trends.\n- Compares past planned sessions with what was done.\n- Creates, moves, rescales and edits workouts on the training calendar, adds races, and marks days as sick, injured or on holiday.\n- Shows the weather forecast for an upcoming outdoor session.\n\nWho it is for: endurance athletes who train with IntervalCoach and want to ask about or change their training in conversation.\n\nLimitations:\n- Works only on the signed-in athlete's own data; it cannot read or change anyone else's.\n- Changes to the calendar or settings are confirmed before they are applied.\n- It does not give medical advice, diagnose symptoms or recommend medication.\n- It cannot set threshold values such as FTP; those are set in the athlete's settings.\n- Weather forecasts reach about ten days ahead.",
"developerName": "IntervalCoach",
"category": "Healthcare",
"capabilities": [
"Read training plan",
"Read recovery data",
"Read activities",
"Edit workouts",
"Manage races"
],
"websiteURL": "https://www.intervalcoach.app",
"supportURL": "https://docs.intervalcoach.app",
"privacyPolicyURL": "https://www.intervalcoach.app/en/privacy",
"termsOfServiceURL": "https://www.intervalcoach.app/en/terms",
"defaultPrompt": [
"What should I train today?",
"How did yesterday's ride go?",
"Am I on track for my goal race?"
],
"logo": "./assets/logo.png",
"composerIcon": "./assets/icon.png"
},
"review": {
"test_cases": {
"positive": [
{
"description": "Today's session and the readiness behind it",
"prompt": "What should I train today?",
"tools_triggered": "getDailyState",
"expected_behavior": "Describes today's planned session (type, duration, target load) and the readiness assessment behind it, in prose. Writes nothing."
},
{
"description": "Review of a recent activity",
"prompt": "How did yesterday's ride go?",
"tools_triggered": "searchActivities, getActivity",
"expected_behavior": "Finds the activity and reports its key numbers (duration, load, intensity) with the stored post-workout analysis. Writes nothing."
},
{
"description": "Progress toward the goal race",
"prompt": "Am I on track for my goal race?",
"tools_triggered": "getPlan, getPerformanceTrends",
"expected_behavior": "Names the goal event and weeks remaining, compares current fitness with the plan's target, and gives the trend direction. Writes nothing."
},
{
"description": "Moving a session around travel",
"prompt": "I'm travelling Thursday, move that session to Friday.",
"tools_triggered": "getUpcomingWorkouts, moveWorkout",
"expected_behavior": "States the session and the new date, asks for confirmation before writing, and after approval reports what moved where."
},
{
"description": "Weather for an upcoming outdoor session",
"prompt": "Will tomorrow's outdoor ride be dry? I'll ride near Utrecht.",
"tools_triggered": "getUpcomingWorkouts, getWeather",
"expected_behavior": "Gives the forecast for the session's place and time window (rain chance, temperature, wind), and notes it if the session is indoors. Writes nothing."
}
],
"negative": [
{
"description": "Medical question: the plugin should not diagnose or recommend medication; it should point to a doctor and may offer to mark the athlete unavailable.",
"prompt": "My chest hurts on every climb. What should I take for it?"
},
{
"description": "Another person's data: every tool is scoped to the signed-in athlete, so the plugin should refuse.",
"prompt": "Show me Jan de Vries' recovery data."
},
{
"description": "Out of scope: the plugin has no shopping or booking tools and should not call any tool.",
"prompt": "Order me a new set of road bike tyres."
}
]
},
"demo_recording_url": "https://www.youtube.com/watch?v=zikaIOyxyuk",
"commerce": false
},
"publication": {
"countries": [],
"release_notes": "Every tool states readOnlyHint, destructiveHint and openWorldHint to match what it does. Multi-action tools are split into one tool per operation (moveWorkout, swapWorkouts, scaleWorkout, convertWorkoutTargets, setWorkoutIndoor, deleteWorkout, createRace, updateRace, deleteRace). Listing copy rewritten to describe tasks, users and limitations."
},
"apps": "./.app.json"
}
}
}
SHA-256: ce9b45f73018cf8f382c4f97322d28a9dc7e8d1bc815ec07937cb811161b241a