← Files IntervalCoachARCHIVED FILE

plugin.json

5.85 KB · Nov 6, 2026 · 07:22 UTC

↓ Download file

{
  "$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